# Changelog

### 3.6.0

* Add `fran` model to the age modifier
* Add `corridor_key_1024` and `corridor_key_2048` models to the background remover
* Revamp conda environment to configure `PATH` and `LD_LIBRARY_PATH` on the startup
* Introduce `--background-remover-despill-color` argument
* Rename `--background-remover-color` to `--background-remover-fill-color`
* Fix incorrect model vendors and licenses

### 3.5.4

* Introduce experimental support for the `QNN` execution provider
* Prevent invalid execution cache after onnxruntime update
* Hide `ConnectionResetError` by asyncio under Windows
* Secure `--processors`, `--ui-layouts` and `--job-id` to prevent attacks
* Remove `--insecure` from curl to enforce secure connections

### 3.5.3

* Prevent conflicts with system-wide CUDA under Windows
* Fix extraction of 16-bit video footage like `ProRes`
* Fix webcam stripe artifacts caused by resolution mismatch

### 3.5.2

* Add retry for downloads to handle weak internet connections
* Introduce optional `--force-reinstall` argument to the installer
* Fix dependency resolution by single run installation

### 3.5.1

* Fix side by side preview on images with channel mismatch
* Fix inference crash when using `--execution-devices-ids` argument

### 3.5.0

* Introduce background remover processor
* Add `--face-detector-margin` to detect face beyond the frame
* Add frame processor models `face_dat_x4` and `tghq_face_x8`
* Extend `--output-pattern` for batch-run by source and target values
* Revamp architecture to modular processors and workflows
* Support for the `mpeg` and `mxf` video format

### 3.4.2

* Fix RAM explosion on 4K footage
* Fix broken bounding box

### 3.4.1

* Remove `DirectShow` camera backend on Windows
* Fix output processing with frame enhancer
* Fix side by side preview with frame enhancer

### 3.4.0

* Introduce single pass frame processing
* Process inference on multiple execution devices
* Add side by side preview modes along with preview resolutions
* Introduce `--expression-restorer-areas` argument
* Revamp webcam experience and performance
* Reintroduce the `yunet` face detector
* Add `--voice-extractor-model` argument
* Migrate ArcFace converter to CrossFace models&#x20;
* Balance source and target using the `--face-swapper-weight` argument
* Introduce `--benchmark-mode` to select between warm and cold caches
* Introduce many for the `--face-occluder-model` argument
* Replace output resolution with relative output scale
* Add `libx264rgb` to avoid color shifts due to RGB to YUV conversion
* Add support for  the `wmv` video format
* Experimental support for `MIGraphX` execution provider
* Log model information in debug mode
* Remove `--execution-queue-count` argument
* Remove score and classifier items from the face debugger
* Fix crash on headless-run when passing invalid output path
* Fix demographic filters for mutated faces

### 3.3.2

* Fix broken Gradio dependency
* Make `hyperswap_1a_256` the default face swapper model

### 3.3.1

* Fix the face store causing the second processor to fail

### 3.3.0

* Introduce `hyperswap` models by FaceFusion Labs
* Add more deep swapper models
* Add the `ultra_sharp_2_x4` frame enhancer model
* Boost performance for high resolution processing
* Run multiple NSFW models to prevent false detection
* Use the 68-point face landmarks to create face area masking
* Control lip movements using the  `--lip-syncer-weight` argument
* Enhance read and write reliability for corrupted videos
* Introduce fallback logic for unsupported audio and video encoders
* Fix the `UDP` webcam mode
* Fix bitrate range violation for `libopus`

### 3.2.0

* Introduce `gitee` and `hf-mirror` to bypass China's great firewall
* Enhance NSFW validation using a `YOLO` powered detector
* Reduce choices to installed audio encoders and video encoders
* Introduce `--halt-on-error` for several job commands
* Improve Gradio preview for unplayable videos larger than 512 MB in size
* Make the face selector more responsive to preview changes
* Add `--output-audio-quality` and `--output-audio-volume` arguments
* Use `flac` over `aac` for the `--output-audio-encoder` default
* Extend the face occluder by the `xseg_3` model
* Automatically select the most suitable execution provider
* Enable fast prediction and model caches for CoreML
* Remove `--skip-audio` argument as muted audio yield the same
* Normalize the range of the `--reference-face-distance` argument
* Eliminate broken file format verification in Gradio
* Restore frame colorizer support for CoreML
* Prevent deep swapper and face enhancer errors when offline
* Experimental multi GPU support for OpenVINO
* Fix model size detection of the deep swapper
* Fix inference pool sharing to avoid crash while switching models
* Fix audio restoring when `--output-video-fps` is modified
* Fix progress bar while extracting frames and merging videos
* Fix `webp` and `webm` support under Windows

### 3.1.2

* Fix broken `pydantic` dependency

### 3.1.1

* Restore `fp16` fallbacks for CoreML
* Fix CUDA for the Geforce 16 series

### 3.1.0

* Support for `DeepFaceLive` models
* Fallback aware download providers
* Introduce the `hififace_256` face swapper model
* Polish age modifier processor to reduce halo effect
* Introduce batch processing via the `batch-run` command
* Provide adjustable face occluder and face parser
* Release the popular frame enhancer models
* Add progress bar for extracting and merging of videos
* Modernize the UI to align with the Gradio 5 update
* Provide an option to select the webcam device id
* Introduce `--temp-path` argument to alter temporary resources
* Add video encoder `h264_qsv` and `hevc_qsv`
* Remove obsolete `--skip-download` argument
* Enforce `libvpx-vp9` codec for `webm` processing
* Gracefully close the webcam stream on exit
* Fix inconsistent preview updates
* Fix video length issues when restoring audio
* Fix OpenVINO issue by aliasing `GPU.0` to `GPU`

### 3.0.1

* Fix broken `python-multipart` dependency

### 3.0.0

* Revamp the architecture where everything is a job
* Introduce `pixel boost` to the face swappers
* Add multi angle processing to the face detectors
* Introduce age modifier processor
* Introduce Live Portrait powered expression restorer processor
* Introduce Live Portrait powered face editor processor
* Replace face parser with `bisenet_resnet_34` model
* Release the `GHOST` face swapper models
* Release frame enhancer `real_esrgan_x8` models
* Introduce ArcFace converter models for SimSwap and GHOST
* Introduce offline first assets based on local hash validation
* Replace `gender_age` with superior `fairface` model
* Transfer `order`, `age` and `gender` to the face selector
* Support CUDA 12.4, TensorRT 10.4, OpenVINO 2024.1 and ROCm 6.2
* Provide appropriate error codes in headless mode
* Migrate the CLI to commands along with related arguments
* Introduce custom made `peppa_wutz` face landmark model
* Introduce `--face-landmark-model` argument
* Introduce `--output-audio-encoder` argument
* Add video encoder `h264_videotoolbox` and `hevc_videotoolbox`
* Change the `--face-selector-order` default to large-small
* Replace globals with a context aware inference manager
* Use audio whenever defined via source
* Tweak the UI layout and visual appearance
* Update to latest Gradio 4
* Provide a multi range slider to trim video frames
* Introduce a log level aware terminal component to the UI
* Ensure significantly more accurate benchmark results
* Drop the face detector model `yunet` due low accuracy
* Fix flicker in the face swapper `uniface` model
* Fix threading and preview crashes for ROCm and DirectML
* Fix image quality for `webp` images
* Fix the termination of `ffmpeg` processing

### 2.6.1

* Fix broken `numpy` dependency

### 2.6.0

* Introduce a standalone one-click installer for Windows
* Add the frame enhancer `clear_reality_x4` and `ultra_sharp_x4` model
* Load different `ini` files via the `--config` argument
* Introduce `--open-browser` to open browser once the program is ready
* Introduce `--execution-device-id` to select processing device
* Support for Intel Arc using the OpenVINO execution provider
* Prevent Gradio from converting videos larger than 512 MB in size
* Fix path issues on Windows related to special characters
* Fix issues when finalizing images using temporary files

### 2.5.3

* Disable Gradio Analytics to prevent version alerts

### 2.5.2

* Introduce dynamic frame colorizer sizes
* Validate `facefusion.ini` overrides to prevent crashes
* Remove GPU architecture lookup to support outdated `nvidia-smi`
* Remove `hwaccel` which surprisingly improves the FFmpeg performance
* Fix threading and preview crashes for DirectML
* Fix `--output-video-resolution` from not being applied

### 2.5.1

* Add missing `deoldify` models to the frame colorizer
* Fix over-correction by voice extractor on background audio
* Fix excessive VRAM consumption of the voice extractor
* Fix exception in `conditional_download` while model removal
* Fix stuck processing when using FFmpeg 7

### 2.5.0

* Introduce the frame colorizer using the `ddcolor` and `deoldify` model
* Extract voice from the audio to enhance the lip-syncer quality
* Experimental 5 to 68 face landmark estimation
* Add the face enhancer `gpen_bfr_1024` and `gpen_bfr_2048` model
* Add the frame enhancer `real_esrgan_x2` and `real_hatgan_x4` model
* Introduce `--force-download` to download every model at once
* Migrate the documentation and installer from venv to conda
* Full compatibility with CUDA 12 due `inswapper_128_fp16` model fix
* Fix fps boosting and lowering during video merging
* Fix crashes when using `--skip-download` when models are absent
* Fix `h264_nvenc` and `hevc_nvenc` presets mapping

### 2.4.1

* Conditional download face analyser models
* Prevent download loop when remote is unreachable
* Dynamic `concurrency_count` for ideal Gradio performance
* Monkey patch Gradio for faster preview and stream rendering
* Fix preview for audio to image

### 2.4.0

* Run multiple face detectors simultaneously
* Prevent the 68 to 5 face landmark transformation on low confidence
* Add the high performance `scrfd` face detector model
* Gracefully start and stop processing
* Introduce ONNX powered frame enhancers
* Introduce `--face-landmarker-score` argument
* Render tabs when using multiple UI layouts
* Introduce `--output-image-resolution` argument
* Add more face debugger items and refine their color theme
* Print internal statistics when `--log-level debug` is enabled
* Keep lips over the whole video once lip syncer is enabled
* Restrict resolution upscaling and fps boosting for temporary resources
* Add support for `h264_amf` and `hevc_amf` video encoders
* Change the `--output-path` behaviour and normalization
* Remove `--temp-frame-quality` argument
* Fix green line when using a target with uneven pixels
* Fix preview of lip syncer when using `--trim-frame-start`
* Fix the blank output issue for Geforce GTX 16 series

### 2.3.0

* Introduce the lip-syncer processors using `wave2lip`
* Improve face alignment with 68 to 5 face landmark transformation
* Add face swapper model `uniface_256`
* Add `yoloface` as the default face detector model
* Clear temporary resources before processing
* Add `age` and `gender` to the face debugger items
* Update installer to version specific CUDA and ROCM entries
* Improve the description of the CLI arguments
* Enforce `--output-video-resolution` after upscaling
* Reduce terminal output noise while processing

### 2.2.1

* Replace `restoreformer` with the latest `restoreformer_plus_plus` model
* Fix error when the `facefusion.ini` file is missing a section
* Fix image to image when utilizing `--video-memory-strategy tolerant`

### 2.2.0

* Significant improve the CUDA performance
* Allow default overrides through the `facefusion.ini` file
* Enable faster `inswapper_128_fp16` model as default
* Add `--video-memory-strategy` to trade VRAM usage for speed
* Add `bmp` to the `--temp-frame-format` argument
* Add compatibility with Pinokio 1.0.0
* Display the processing time in the terminal on success
* Introduce `--output-video-preset` which defaults to `veryfast`
* Introduce `--output-video-fps` argument
* Introduce `--output-video-resolution` argument
* Block the preview and webcam until models are fully downloaded
* Rename `--max-memory` to `--system-memory-limit`
* Fix gender detection due incorrect matrix transformation
* Fix render issues when toggling face debugger items repeatedly

### 2.1.3

* Fix installer option for `directml` under Windows

### 2.1.2

* Add CUDA nightly to the installer
* Refresh reference faces on processor change
* Fix rounding issues of number based CLI arguments

### 2.1.1

* Remove falsy clear reference faces in preview

### 2.1.0

* Add face occlusion masking
* Add face region masking with selectable regions
* Average source face from multiple images
* Multi processing aware reference faces
* Only process the reference with face enhancer
* Introduce `debug`, `info`, `warn` and `error` log levels
* Restore face alignment offset from retinaface
* Enforce virtual environment via installer
* Reduce the installer options according to platform
* Add `onnxruntime-rocm` support to installer
* Fix preview updates on slider release
* Fix preview updates on face reference change
* Fix similarity transformation for the face alignment

### 2.0.0

* Add `blendswap_256`, `simswap_256` and `simswap_512_unofficial` to the face swapper
* Add `gpen_bfr_256` and `restoreformer` to the face enhancer
* High performance face detector using the `retinaface` or `yunet` models
* Add ROCm and OpenVINO support to the frame enhancers
* Add support for `webp` images and `webm` videos
* Add the `best-worst` and `worst-best` to `--face-analyser-order`
* Introduce the `face_debugger` to visualize the bounding box, key points and face mask
* Introduce the `facefusion-pinokio` repository to our GitHub organization
* Introduce `--face-mask-blur` and `--face-mask-padding` arguments
* Introduce `--face-detector-size` and `--face-detector-score` arguments
* Extend face selector by `one` mode
* Remove `insightface` dependency due handcrafted frame processing
* Remove `tensorflow` and `PIL` dependencies duo handcrafted frame analysing
* Simplify progress bar to reduce performance hits
* Improve reference face UI for large amount of people
* Webcam mode `udp` and `v4l2` now with solid 25fps at 1080p
* Seamless start and stop the webcam feed
* Rename `--face-recognition` to `--face-selector-mode`
* Rename `--face-analyser-direction` to `--face-analyser-order`
* Fix output validation after processing
* Apply fixed ranges to number based CLI arguments
* Normalize the `--reference-face-distance` calculation to a 0-1 range
* Normalize the `--output-path` even without specified `--source-path`
* Set a 10 seconds timeout for download lookups

### 1.3.1

* Refine `default` and `cpu` choices for the installer

### 1.3.0

* Add high performance `fp16` version to the face swapper
* Add ONNX powered `CodeFormer`, `GFPGAN` and `GPEN` to the face enhancer
* Add `RealESRGAN_x2plus` and `RealESRNet_x4plus` to the frame enhancer
* Implement blending for the face enhancer and frame enhancer
* Enable processors to have options and CLI arguments
* Refine the UI theme to a minimal and flat design
* Enhance the `--help` and documentation with arguments grouping
* Reduce the default image and video quality to 80 percent
* Introduce a new `--torch` argument to the installer
* Improve Apple Silicon performance using the latest `onnxruntime`
* Fix video quality to compression normalization
* Fix stuck downloads caused by the Windows firewall

### 1.2.1

* Perform VRAM clearance after each processing step
* Restrict TensorFlow memory consumption to 512 MB
* Verify the model files before frame processing
* Introduce `--skip-download` to skip automated downloads
* Upgrade to the most recent `onnxruntime` version

### 1.2.0

* Establish realtime webcam performance
* Optimize reruns by caching the face analyser results
* Optimize image read performance through caching
* Resume interrupted asset and model downloads
* Allow passing `--onnxruntime` to `install.py`
* Introduce official `facefusion-colab` repository
* Remove alignments from each UI components
* Introduce checkbox group for the settings
* Set webcam resolution and fps in the UI
* Disallow empty execution providers in the UI
* Fix frame range processing on videos with audio
* Fix `CUDA` and `ROCM` Dockerfile to utilize the GPU
* Fix sorting of temp frame paths

### 1.1.0

* Installer for common and acceleration dependencies
* Built-in webcam suite that supports `udp` and `v4l2` streaming
* Dedicated `--headless` mode
* Add Docker support for ROCM
* Allow adjustment of `--output-path` via the UI
* Enhance output path normalization
* Single warm-up before starting the benchmark suite
* Ability to select runs for the benchmark suite
* Enable benchmarking with partial updates
* Implement a fully event-driven UI for super responsiveness
* Add a max memory slider to select free RAM
* Implement conditional UI based on target media type
* Introduce `--output-image-quality` option for image output
* Fix `crf` range for `libvpx` video encoder
* Fix `detect_fps` to work with different encoding

### 1.0.0

* Dynamic UI based on Gradio
* Docker support for CPU and CUDA
* Replace `--many-faces` by `--face-recognition` that takes `reference` and `many` value
* Twin support: swap multiple faces by one face reference
* Introduce `--execution-queue-count` to adjust processing per thread
* Rename `--execution-threads` to `--execution-thread-count`
* Global options direction, age and gender for face analyser
* Blur preview and processing hold when NSFW content has been detected
* Flip the quality best to worse from 0-100 to 100-0
* Trim video via `trim-frame-start` and `trim-frame-end`
* Built-in benchmark suite
* Intensive codebase refactoring
