1
0
Fork 0
mirror of https://github.com/deepfakes/faceswap synced 2025-06-09 04:36:50 -04:00
Commit graph

31 commits

Author SHA1 Message Date
fakinated
8ecf36c3cb Model backups before saving (#349)
* Sort images properly (to make the frame range parameter meaningfull)

* Add backup mechanism for model weights.

* Replace 'print' call by 'tqdm.write' call.
2018-04-15 12:11:07 +01:00
torzdf
2c11eb1649 Built in GUI [ALPHA] (#325)
* Alpha Build - Pre Testing

* Minor code amends

* Add in the actual script execution
2018-04-04 14:39:23 -07:00
coldstacks
44dfd9d6b0 Adds support for arbitrary image rotations (#309)
* Add support for user-specified rotation angle in extract

* Added rotation-angle-list option to enumerate a list of angles to rotate through

* Adjust rotation matrix translation coords to avoid cropping

* Merged rotation-angle and rotation-angle-list options into rotate_images option

* Backwards compatibility

* Updated check whether to run image rotator

* Switched rotation convention to use positive angle = clockwise rotation, for backwards compatibility
2018-03-27 18:38:23 +02:00
JayantPythonLover
eec8636b18 Output Sharpening Added (#285)
* Updated to support Output Sharpening arguments

Two new types of output sharpening methods have been added.

One that deals with a Box Blur method and the other with a Gaussian Blur method.

Box Blur method can be called using argument '-sh bsharpen' --- This method is not dynamic and can produce strong sharpening on your images. Sometimes it can yield great results and sometimes entirely the opposite.

Gaussian Blur method can be called using argument '-sh gsharpen' --- This method is dynamic and tries to adjust to your data set. As a result, while the sharpening effect might not be as strong as bsharpen, it is bound to produce a more natural looking sharpened image.

By default the parameter is set to none which will not run any sharpening on your output.

* Output Sharpening added

Two ways of sharpening your output have been added

-sh bsharpen
-sh gsharpen

* Update convert.py
2018-03-13 23:54:09 +01:00
bryanlyon
f6cb3941ad Add Multi-GPU support (#272)
* 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.
2018-03-11 18:03:33 +01:00
torzdf
ee6bc40224 Add image rotation for detecting more faces and dealing with awkward angles (#253)
* Image rotator for extract and convert ready for testing

* Revert "Image rotator for extract and convert ready for testing"

This reverts commit bbeb19ef26.

Error in extract code

* add image rotation support to detect more faces

* Update convert.py

Amended to do a single check for for rotation rather than checking twice. Performance gain is likely to be marginal to non-existent, but can't hurt.

* Update convert.py

remove type

* cli.py: Only output message on verbose. Convert.py: Only check for rotation amount once

* Changed command line flag to take arguments to ease future development

* Realigning for upstream/Master

* Minor fix
2018-03-10 13:34:19 +01:00
CyberDain
59ca996eb1 PluginLoader.get_available_models()
PluginLoader.get_default_model()
provides easy integration of Model_* folders without changing convert.py and train.py
2018-03-10 11:18:39 +01:00
alhoo
309470af08 Use k-nn for face filtering (#262)
* Add negative filters for face detection

When detecting faces that are very similar, the face recognition can
produce positive results for similar looking people. This commit allows
the user to add multiple positive and negative reference images. The
facedetection then calculates the distance to each reference image
and tries to guess which is more likely using the k-nearest method.

* Do not calculate knn if no negative images are given

* Clean up outputting
2018-03-10 10:59:43 +01:00
Othniel Cundangan
6bb4df4309
Fix line endings (#266)
* Remove files with line-ending issues

* Add back files with line-ending issues
2018-03-09 21:04:32 -05:00
Othniel Cundangan
810bd0bce7
Update GAN64 to v2 (#217)
* 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
2018-03-09 19:43:24 -05:00
Clorr
9438672b1c
backslash problem correction
fix for #239
2018-03-03 17:11:40 +01:00
babilio
fc5a88518d Allows applying dilation by passing negative erosion kernel values. If value is negative, … (#238)
* Allows for negative erosion kernel for -e arg. If value is negative, it turns it into a dilation kernel, which allow facehullandrect to cover more space. Can help to cover double eyebrows. Also could be useful with Masked converter for GAN that oatsss is working on.

* Update convert.py

Modified argument help to clarify the effects of erosion and dilation as parameters
2018-03-03 12:01:07 +01:00
Gareth Dunstone
f170e43c57 no os import in convert. 2018-02-12 12:51:50 +11:00
Gareth Dunstone
0dc10adf17 Skip images that arent in the alignments.json 2018-02-12 12:49:49 +11:00
Gareth Dunstone
2cdf8a903a fixes for some comments 2018-02-12 10:28:05 +11:00
Gareth Dunstone
29eec42594 Added serializers.
This speeds up convert speed x4 on my machine.
2018-02-09 02:44:31 +11:00
Gareth Dunstone
f3bb0bba07
Fixing ConvertImage has no attribute check_skip
https://github.com/deepfakes/faceswap/issues/143
2018-02-08 04:20:00 +11:00
Clorr
1fd9e99555
Adding GAN plugin (#102)
Update GAN plugin to latest official version
2018-02-07 15:00:49 +01:00
Clorr
5815baa920
Changes I forgot to push :-/ (#136) 2018-02-07 13:54:24 +01:00
Clorr
b3ae6130ed
Misc updates on master before GAN. Added multithreading + mmod face detector (#109)
* 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
2018-02-07 13:42:19 +01:00
facepainter
e9c4177fdf Adds arg to select trainer used to create model (#105)
Stops the layer count mismatch when a LowMem model is converted using the Original model.
2018-02-03 15:59:23 +01:00
Gareth Dunstone
c529bd4f1c
check_skip fixes (#95)
* extended arguments for convert re https://github.com/deepfakes/faceswap/issues/85

* forgot to change helptext for extended arguments.

* Added -fr --frame-range argument to convert

accepts a list of frame ranges like `-fr 40-50 90-100`

still writes out frames that havent been converted.

* added --discard-frames argument

--discard-frames discards frames not included in --frame-range instead
of writing them out unchanged.

* Made training message slightly clearer

* Revert "Made training message slightly clearer"

This reverts commit 25a9744aea.

* Training status now '\r's rather than newlines.
Maybe its good, maybe its bad.
I like it.

* fixing https://github.com/deepfakes/faceswap/pull/90#issuecomment-362309166

* Fixing issues with frame-range if no frame-range is specified.

* fixes for check_skip
2018-02-02 09:15:47 +11:00
Gareth Dunstone
2633da9ed7
frame-range changes (#92)
* extended arguments for convert re https://github.com/deepfakes/faceswap/issues/85

* forgot to change helptext for extended arguments.

* Added -fr --frame-range argument to convert

accepts a list of frame ranges like `-fr 40-50 90-100`

still writes out frames that havent been converted.

* added --discard-frames argument

--discard-frames discards frames not included in --frame-range instead
of writing them out unchanged.

* Made training message slightly clearer

* Revert "Made training message slightly clearer"

This reverts commit 25a9744aea.

* Training status now '\r's rather than newlines.
Maybe its good, maybe its bad.
I like it.

* fixing https://github.com/deepfakes/faceswap/pull/90#issuecomment-362309166
2018-02-02 03:11:26 +11:00
Gareth Dunstone
0f8d9db826
frame-range option for convert (#90)
* extended arguments for convert re https://github.com/deepfakes/faceswap/issues/85

* forgot to change helptext for extended arguments.

* Added -fr --frame-range argument to convert

accepts a list of frame ranges like `-fr 40-50 90-100`

still writes out frames that havent been converted.

* added --discard-frames argument

--discard-frames discards frames not included in --frame-range instead
of writing them out unchanged.
2018-02-02 00:46:42 +11:00
Gareth Dunstone
7e7cf0bd2d
extended arguments for convert.py (#89)
* extended arguments for convert re https://github.com/deepfakes/faceswap/issues/85

* helptext for extended arguments.

* changed default mask type to facehullandrect
2018-02-01 23:19:03 +11:00
Clorr
34945cfcd7
Adding models as plugins + Face filtering (#53) + #39 + #43 + #44 + #49 (#61)
* 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
2018-01-31 18:56:44 +01:00
Clorr
e518206c8e Adding PluginLoader 2018-01-03 14:01:02 +01:00
Clorr
bb489f4f51 Adding new plugins (Extract_Align & Convert_Masked) 2018-01-03 10:33:42 +01:00
Clorr
3e2976ab03 Adding plugins 2018-01-03 10:33:39 +01:00
Hidde Jansen
d493cadeca
Allow users to swap the A/B models (#29)
* Allow users to swap the conversion models.
2017-12-27 12:47:52 +01:00
Édouard WILLISSECK
59d234ae5e Unified CLI (#22)
* Created a single script to call the other ones.

Usage is ./faceswap.py {train|extract|convert}

* Improved the help from the commands.

* Added forgotten faceswap.py file.

* Changed gitignore to add the scripts.

* Updates gitignore.

* Added guarding not to execute code when imported.

* Removed useless script. Display help when no arguments are provided.

* Update README
2017-12-25 02:17:02 +01:00
Renamed from convert.py (Browse further)