* add new cli options
* add timelapse script
* add batch size on image generation
* fix circular dependency
* add attribute check
* refactor to 3 parameters
* fix some typos
* do not shuffle the set
* default to models folder when no timelapse output supplied
* almost forgot this
* GUI version 3 (#411)
GUI version 3.0a
* Required for Shaonlu mode (#416)
Added two modes - Original and Shaonlu.
The later requires this file to function.
* model update (#417)
New, functional Original 128 model
* OriginalHighRes 128 model update (#418)
Required for OriginalHighRes Model to function
* Add OriginalHighRes 128 update to gui branch (#421)
* Required for Shaonlu mode (#416)
Added two modes - Original and Shaonlu.
The later requires this file to function.
* model update (#417)
New, functional Original 128 model
* OriginalHighRes 128 model update (#418)
Required for OriginalHighRes Model to function
* Dev gui (#420)
* reduce singletons
* Fix tooltips and screen boundaries on popup
* Remove dpi fix. Fix context filebrowsers
* fix tools.py execution and context filebrowser bugs
* Bugfixes (#422)
* Bump matplotlib requirement. Fix polyfit. Fix TQDM on sort
* Fixed memory usage at 6GB cards. (#423)
- Switched default encoder to ORIGINAL
- Fixed memory consumption. Tested with geforce gtx 9800 ti with 6Gb; batch_size 8 no OOM or memory warnings now.
* Staging (#426)
* altered trainer (#425)
altered trainer to accommodate with model change
* Update Model.py (#424)
- Added saving state (currently only saved epoch number, to be extended in future)
- Changed saving to ThreadPoolExecutor
* Add DPI Scaling (#428)
* Add dpi scaling
* Hotfix for effmpeg. (#429)
effmpeg fixed so it works both in cli and gui.
Initial work done to add previewing feature to effmpeg (currently does nothing).
Some small spacing changes in other files to improve PEP8 conformity.
* PEP8 Linting (#430)
* pep8 linting
* Requirements version bump (#432)
* altered trainer (#425)
altered trainer to accommodate with model change
* Update Model.py (#424)
- Added saving state (currently only saved epoch number, to be extended in future)
- Changed saving to ThreadPoolExecutor
* Requirements version bump (#431)
This bumps the versions of:
scandir
h5py
Keras
opencv-python
to their latest vesions.
Virtual Environment will need to be setup again to make use of these.
* High DPI Fixes (#433)
* dpi scaling
* DPI Fixes
* Fix and improve context manager. (#434)
effmpeg tool:
Context manager for GUI fixed.
Context manager in general:
Functionality extended to allow configuring the context with both:
command -> action
command -> variable (cli argument) -> action
* Change epoch option to iterations
* Change epochs to iterations
* Pre push commit.
Add filetypes support to gui through new classes in lib/cli.py
Add various new functions to tools/effmpeg.py
* Finish developing basic effmpeg functionality.
Ready for public alpha test.
* Add ffmpy to requirements.
Fix gen-vid to allow specifying a new file in GUI.
Fix extract throwing an error when supplied with a valid directory.
Add two new gui user pop interactions: save (allows you to create new
files/directories) and nothing (disables the prompt button when it's not
needed).
Improve logic and argument processing in effmpeg.
* Fix post merge bugs.
Reformat tools.py to match the new style of faceswap.py
Fix some whitespace issues.
* Fix matplotlib.use() being called after pyplot was imported.
* Fix various effmpeg bugs and add ability do terminate nested subprocess
to GUI.
effmpeg changes:
Fix get-fps not printing to terminal.
Fix mux-audio not working.
Add verbosity option. If verbose is not specified than ffmpeg output is
reduced with the -hide_banner flag.
scripts/gui.py changes:
Add ability to terminate nested subprocesses, i.e. the following type of
process tree should now be terminated safely:
gui -> command -> command-subprocess
-> command-subprocess -> command-sub-subprocess
* Add functionality to tools/effmpeg.py, fix some docstring and print statement issues in some files.
tools/effmpeg.py:
Transpose choices now display detailed name in GUI, while in cli they can
still be entered as a number or the full command name.
Add quiet option to effmpeg that only shows critical ffmpeg errors.
Improve user input handling.
lib/cli.py; scripts/convert.py; scripts/extract.py; scripts/train.py:
Fix some line length issues and typos in docstrings, help text and print statements.
Fix some whitespace issues.
lib/cli.py:
Add filetypes to '--alignments' argument.
Change argument action to DirFullPaths where appropriate.
* Bug fixes and improvements to tools/effmpeg.py
Fix bug where duration would not be used even when end time was not set.
Add option to specify output filetype for extraction.
Enchance gen-vid to be able to generate a video from images that were zero padded to any arbitrary number, and not just 5.
Enchance gen-vid to be able to use any of the image formats that a video can be extracted into.
Improve gen-vid output video quality.
Minor code quality improvements and ffmpeg argument formatting improvements.
* Remove dependency on psutil in scripts/gui.py and various small improvements.
lib/utils.py:
Add _image_extensions and _video_extensions as global variables to make them easily portable across all of faceswap.
Fix lack of new lines between function and class declarions to conform to PEP8.
Fix some typos and line length issues in doctsrings and comments.
scripts/convert.py:
Make tqdm print to stdout.
scripts/extract.py:
Make tqdm print to stdout.
Apply workaround for occasional TqdmSynchronisationWarning being thrown.
Fix some typos and line length issues in doctsrings and comments.
scripts/fsmedia.py:
Did TODO in scripts/fsmedia.py in Faces.load_extractor(): TODO Pass extractor_name as argument
Fix lack of new lines between function and class declarions to conform to PEP8.
Fix some typos and line length issues in doctsrings and comments.
Change 2 print statements to use format() for string formatting instead of the old '%'.
scripts/gui.py:
Refactor subprocess generation and termination to remove dependency on psutil.
Fix some typos and line length issues in comments.
tools/effmpeg.py
Refactor DataItem class to use new lib/utils.py global media file extensions.
Improve ffmpeg subprocess termination handling.
* Refactor for PEP 8 and split process function
* Remove backwards compatibility for skip frames
* Split optional functions into own class. Make functions more modular
* Conform scripts folder to PEP 8
* train.py - Fix write image bug. Make more modular
* extract.py - Make more modular, Put optional actions into own class
* cli.py - start PEP 8
* cli,py - Pep 8. Refactor and make modular. Bugfixes
* 1st round refactor. Completely untested and probably broken.
* convert.py: Extract alignments from frames if they don't exist
* BugFix: SkipExisting broken since face name refactor
* Extract.py tested
* Minor formatting
* convert.py + train.py amended not tested
* train.py - Semi-fix for hang on reaching target iteration. Now quits on preview mode
Make tensorflow / system warning less verbose
* 2nd pass refactor. Semi tested
bugfixes
* Remove obsolete code. imread/write to Utils
* rename inout.py to fsmedia.py
* Final bugfixes
* Code refactor
* Console Added
* Add graphing with matplotlib
* Add GUI preview support
* Improve import handling.
* Add GUI integration for tools.py (Launch tools.py with the gui command)
* Reformat to conform to PEP8.
* Add Tooltips,
* Make panels user adjustable
* Fix convert.py Sharpen default value
* Move imports to top and add conditions to load modules requiring GPU
* Fix type
* Fix typo
* Import relocation and dlib import on demand
* refactor to remove extra code lines
* remove unnecessary sys import
* Add Improved AutoEncoder model.
* Refactoring Model_IAE to match the new model folder structure
* Add Model_IAE in plugins
* Add Multi-GPU support
I added multi-GPU support to the new model layout. Currently, Original is not tested (due to OOM on my 2x 4gb 970s). LowMem is not tested with the current commit due to it not being available since the new pluginloader misses it.
* Clearer requirements for each platform
* Refactoring of old plugins (Model_Original + Extract_Align) + Cleanups
* Adding GAN128
* Update GAN to v2
* Create instance_normalization.py
* Fix decoder output
* Revert "Fix decoder output"
This reverts commit 3a8ecb8957.
* Fix convert
* Enable all options except perceptual_loss by default
* Disable instance norm
* Update Model.py
* Update Trainer.py
* Match GAN128 to shaoanlu's latest v2
* Add first_order to GAN128
* Disable `use_perceptual_loss`
* Fix call to `self.first_order`
* Switch to average loss in output
* Constrain average to last 100 iterations
* Fix math, constrain average to intervals of 100
* Fix math averaging again
* Remove math and simplify this damn averagin
* Add gan128 conversion
* Update convert.py
* Use non-warped images in masked preview
* Add K.set_learning_phase(1) to gan64
* Add K.set_learning_phase(1) to gan128
* Add missing keras import
* Use non-warped images in masked preview for gan128
* Exclude deleted faces from conversion
* --input-aligned-dir defaults to "{input_dir}/aligned"
* Simplify map operation
* port 'face_alignment' from PyTorch to Keras. It works x2 faster, but initialization takes 20secs.
2DFAN-4.h5 and mmod_human_face_detector.dat included in lib\FaceLandmarksExtractor
fixed dlib vs tensorflow conflict: dlib must do op first, then load keras model, otherwise CUDA OOM error
if face location not found by CNN, its try to find by HOG.
removed this:
- if face.landmarks == None:
- print("Warning! landmarks not found. Switching to crop!")
- return cv2.resize(face.image, (size, size))
because DetectedFace always has landmarks
* Enabled masked converter for GAN models
* Histogram matching, cli option for perceptual loss
* Fix init() positional args error
* Add backwards compatibility for aligned filenames
* Fix masked converter
* Remove GAN converters
* Preparing GAN plugin
* Adding multithreading for extract
* Adding support for mmod human face detector
* Adding face filter argument
* Added process number argument to multiprocessing extractor.
Fixed progressbar for multiprocessing.
* Added tiff as image type.
compression artefacts hurt my feelings.
* Cleanup
* Making Models as plugins
* Do not reload model on each image #39 + Adding FaceFilter #53
* Adding @lukaville PR for #43 and #44 (possibly)
* Training done in a separate thread
* Better log for plugin load
* Adding a prefetch to train.py #49
(Note that we prefetch 2 batches of images, due to the queue behavior)
+ More compact logging with verbose info included
* correction of DirectoryProcessor signature
* adding missing import
* Convert with parallel preprocessing of files
* Added coverage var for trainer
Added a var with comment. Feel free to add it as argument
* corrections
* Modifying preview and normalization of image + correction
* Cleanup