* FaceSwap 3 (#1515)
* Update extract pipeline
* Update requirements + setup for nvidia
* Remove allow-growth option
* tf.keras to keras updates
* lib.model.losses - Port + fix all loss functions for Keras3
* lib.model - port initializers, layers. normalization to Keras3
* lib.model.autoclip to Keras 3
* Update mixed precision layer storage
* model file to .keras format
* Restructure nn_blocks to initialize layers in __init__
* Tensorboard
- Trainer: Add Torch compatible Tensorboard callbacks
- GUI event reader remove TF dependency
* Loss logging
- Flush TB logs on save
- Replace TB live iterator for GUI
* Backup models on total loss drop rather than per side
* Update all models to Keras3 Compat
* Remove lib.model.session
* Update clip ViT to Keras 3
* plugins.extract.mask.unet-dfl - Fix for Keras3/Torch backend
* Port AdaBelief to Keras 3
* setup.py:
- Add --dev flag for dev tool install
* Fix Keras 3 syntax
* Fix LR Finder for Keras 3
* Fix mixed precision switching for Keras 3
* Add more optimizers + open up config setting
* train: Remove updating FS1 weights to FS2 models
* Alignments: Remove support for legacy .json files
* tools.model:
- Remove TF Saved Format saving
- Fix Backup/Restore + Nan-Scan
* Fix inference model creation for Keras 3
* Preview tool: Fix for Keras3
* setup.py: Configure keras backend
* train: Migration of FS2 models to FS3
* Training: Default coverage to 100%
* Remove DirectML backend
* Update setup for MacOS
* GUI: Force line reading to UTF-8
* Remove redundant Tensorflow references
* Remove redundant code
* Legacy model loading: Fix TFLamdaOp scalar ops and DepthwiseConv2D
* Add vertical offset option for training
* Github actions: Add more python versions
* Add python version to workflow names
* Github workflow: Exclude Python 3.12 for macOS
* Implement custom training loop
* Fs3 - Add RTX5xxx and ROCm 6.1-6.4 support (#1511)
* setup.py: Add Cuda/ROCm version select options
* bump minimum python version to 3.11
* Switch from setup.cgf to pyproject.toml
* Documentation: Update all docs to use automodapi
* Allow sysinfo to run with missing packages + correctly install tk under Linux
* Bugfix: dot naming convention in clip models
* lib.config: Centralise globally rather than passing as object
- Add torch DataParallel for multi-gpu training
- GUI: Group switches together when generating cli args
- CLI: Remove deprecated multi-character argparse args
- Refactor:
- Centralise tensorboard reading/writing + unit tests
- Create trainer plugin interfaces + add original + distributed
* Update installers
* Add LR Finder support structure
* Move trainer.Feeder to lib.training.generator
* Expose model.io
* Add lr_finder
* Update docs and locales
* Pre-PR fixups
- Fix training graph not displaying
- CI fixes
- Switch lr finder progress to tqdm
- Exit lr finder early on NaN
- Display lr finder progress in GUI
- lib.detected_face
- Subclass Masks for Landmark based masks
- Add training mask propery + methods to DetectedFace
- lib.training_training
- subclass TrainingDataGenerator for training and preview data
- Split cache into own module
- Reduce thread count to 1 to prevent image corruption + data re-use
- Process on largest model input/output size rather than stored image size
- Size and crop masks during caching stage
- Implement ring buffer for data flow
- Fix preview reload bug
- augmentation
- typing
- switch color aug order
- better initialization
- Fix warp + landmark warp to correctly apply at different image scales
- Slightly improved warp caching
- Don't store whether image is_preview. Handle all data as training images implicitly
- plugins.trainer: Typing and fixes to work with trainingdata refactor
* Update maximum tf version in setup + requirements
* - bump max version of tf version in launcher
- standardise tf version check
* update keras get_custom_objects for tf>2.6
* bugfix: force black text in GUI file dialogs (linux)
* dssim loss - Move to stock tf.ssim function
* Update optimizer imports for compatibility
* fix logging for tf2.8
* Fix GUI graphing for TF2.8
* update tests
* bump requirements.txt versions
* Remove limit on nvidia-ml-py
* Graphing bugfixes
- Prevent live graph from displaying if data not yet available
* bugfix: Live graph. Collect loss labels correctly
* fix: live graph - swallow inconsistent loss errors
* Bugfix: Prevent live graph from clearing during training
* Fix graphing for AMD
- plugins.train.trainer._base - Don't output error message for sides which have valid masks
- lib.gui.menu - Fix project file saving extension on Linux
- lib.image Don't raise error if legacy non-png is found when reading header data
- plugins.train.trainer._base - Correctly pass legacy alignments through to DetectedFace
Documentation
- Update Usage.md, align.rst and image.rst
lib.image.py
- read_image - Remove hash return, add metadata return
- Remove read_image_hash functions
- Add read_image_meta functios
- Replace encode_image_with_hash with encode_image (to store metadata)
- Add png meta reading and writing functions
- Update Image Loaders/Savers to handle metadata rather than hashes
lib.training_data
- Naming updates to remove references to hashes
lib.align.Alignments
- Add versioning notes
- Increment alignments version to 2.1
- Deprecate hashing lookup functions
- Replace filter_hashes with filter_faces
lib.align.detected_face
- DetectedFace
- Remove hash property
- Add png header data serializing/deserializing functions
- Mask
- Add png header data serializing/deserializing functions
- add update_legacy_png_header function to update png meta data
lib.cli.args - Deprecate alignments files for training
- plugins.train.trainer
- Update alignments/mask code to read png header data
- scripts.convert
- Aligned images folder - read data from png headers
- scripts.extract
- Write png header information and no longer store hash of face
- tools.alignments
- remove leftover-faces, merge and update-hashes jobs
- Update jobs to use png meta data rather than hashes
- tools.manual
- Update extract code to output png meta data and don't store hashes
- Perform check on launch that tool is not pointing at a faces folder
tools.mask
- Update to use png meta data
tools.sort
- Update to use png meta data
* Minimum requirements to tf2.3.
- Handle upgrades for Windows users with tf2.2 installed by Pip
- Handle windows upgrade from pip tf2.2
- Explicitly install Cuda for Conda installs
* Update tensorflow errors api reference
* Suppress AutoGraph warning messages
* Update GUI Stats to work with tf2.3
* Fix live graph for tf2.3
* DSSIMObjective - autoGraph bugfix
* Update Travis test
- Manual Tool:
- Hide annotations for faces not meeting criteria
- Update landmarks on face add/del
- Clearer landmark annotations
- Handle non-numerics in frame number box
- Training
- Fix mis-aligned preview images
- Allows mixing legacy + new alignments for A and B
- Catch non-training images in training folder
- Catch inconsistently sized training images
- Standardize coverage ratio calculation
- lib.image - Add option to get image shape along with hash
Dfaker model:
- Add 256px mode