Page 2 of 9
Re: How to convert after training
Posted: Tue Nov 12, 2019 5:19 pm
by bryanlyon
As long as training doesn't corrupt (for example by the PC crashing during saving) you are fine. In fact, clicking "terminate" is the proper way of stopping training and continuing it is the recommended way of running faceswap over multiple training sessions.
We are working on a full Convert guide, but it is a pretty self explanatory process compared to the others. My recommendation is to start with the Preview tool, make sure the results look good, then read the tooltips in the convert tab. The process is quite simple and I think you'll be able to figure that out (and you can ask questions if you run into a problem).
You do not need to put the source faces into convert at all. You need to provide the frames you want the faces swapped, the alignments for that source video, and the trained model. The model does the swap from "memory" (this is the point of the training) so it doesn't need to see the separated faces in order to convert.
Re: How to convert after training
Posted: Tue Nov 12, 2019 8:10 pm
by rokh
Thank you for replying. It just gets confusing when you have checked or unchecked a box here and there that might get you in trouble along the way. I'm still having problems with the conversion process and my next step is to go back to the beginning and try to do everything by the book and by reading the forums posts to find out where the problem is. Meanwhile I look forward to the new convert guide when it becomes available. Thanks again.
Multiple faces swapped
Posted: Wed Nov 20, 2019 9:57 am
by Hades
Hi
I hope this is the right place to ask. My task was to swap the faces of tweedledee and tweedledum from Alice in wonderland with Boris johnsons face. I have trained with 60 k with a batch site of 128 ( RTX 2080 TI 11 GB) After converting i noticed that not only the faces of tweedledee and dum was swapped. To show better i uploaded the video to :
https://www42.zippyshare.com/v/pJmYKMrG/file.html
so you can see what i mean. Where is my problem ? Thank you in advance for your help.
Re: Multiple faces swapped
Posted: Wed Nov 20, 2019 5:34 pm
by bryanlyon
You need to clean your alignments file to make sure that only the faces you want swapped are included. Please see the Extract guide viewtopic.php?f=5&t=27 on doing that.
Re: Multiple faces swapped
Posted: Thu Nov 21, 2019 3:56 pm
by Hades
Hi !
Thank you for the fast reply. I try to use manual in cleaning up the faces but none of the keybinds are working for me. I can`t step from one frame to another !!? X is doing nothing.....i am using a german qwerty keyboard layout ....is this the problem ?? I a little bit confused....
Re: Multiple faces swapped
Posted: Thu Nov 21, 2019 3:57 pm
by bryanlyon
Use the manual tool only in the last resort. The sort tool will be much faster and more reliable. But if you really need the manual tool, make sure you're in "edit" mode (use the "m" key).
Re: Multiple faces swapped
Posted: Mon Nov 25, 2019 5:13 pm
by Hades
Sorry to ask a stupid question. When i clean the alignment. I use remove faces. In the Data input:
"Alignments File: select the alignments file that was generated during the extraction process It will be located in the same folder as the video you extracted from, or within the folder of the images you extracted from."
Wich alignment file is needed . I extracted first the face iwant to swap with the original one . In my case i extracted Boris Johnson . i want to swap it with tweedle dee and tweedledum from Alicein wonderland. Do i need to input Boris Johnsons alignment file+ faces or the file from Alice in wonderland? Cant get my brain around it. Sorry !
Conversion guide when is it coming?
Posted: Mon Nov 25, 2019 9:32 pm
by kaemen
Any time estimate when the conversion guide may be coming?
May I ask others that have succesfully converted ask share how?
Re: Conversion guide when is it coming?
Posted: Mon Nov 25, 2019 9:52 pm
by bryanlyon
We currently don't have an ETA on the conversion guide as Conversion is going through a rework and so the guide is waiting for the end of that process.
Conversion though is relatively simple. The most basic operation would be to put (in order on the GUI) the Input folder or video, the output folder, the alignments file for the input video, you can skip the Reference Video if you're using a video as input, or place a video here if you're using bare frames and want the audio copied, and the model directory that holds the trained model. Finally, if you want a video output set the Writer to FFmpeg.
This is the most basic options and will give you a swap from A->B in the input video. Other options can improve the quality or results, but require some tweaking. The best way to figure that out would be to use the "preview" tool in the tools tab. Again, you will want the Input folder or video, the alignments and the trained model's location. Then you can change options inside the preview tool and see how they'll effect your output.
Feel free to ask any questions, but that is the basic process.
Re: Multiple faces swapped
Posted: Mon Nov 25, 2019 9:55 pm
by bryanlyon
In the conversion process you include the alignments file for the Video, NOT the face. So if you have the Alice in Wonderland with the faces you want selected, then you'll include that alignment file and no others.
Re: Multiple faces swapped
Posted: Tue Nov 26, 2019 9:43 am
by Hades
Thank you for the explanation ! Was able to clear the alignments !!
Re: Conversion guide when is it coming?
Posted: Sat Nov 30, 2019 9:27 pm
by kaemen
Thx for your answer.
I do have a question regarding training and convert.
I have a short maybe 10 secs video source, which I have succesfully swaped faces going thru the whole process and results are awesome..
Ive played around a little and found out something.
Another video of almost same source... (same person, equal face position, etc).
Like I said I played around, and set the former trained model folder and the previews fit perfectly.
But the alignment isnt correct. I wonder, if the preview is fitting... how can I adjust the alignement before convert? Why is the preview aligned but when I try to convert I get errors?
I found out that the training data contains the path to the original video file. So I copied the new video to the same directory and changed the name.
Process would continue then a little further but still end in another error.
Explain please
Re: Conversion guide when is it coming?
Posted: Sat Dec 07, 2019 12:27 am
by torzdf
Run extraction on your new video to generate an alignments file.
TypeError: 'int' object is not iterable
Posted: Sun Jan 12, 2020 8:33 am
by Kelleheruk
HI all
I am very new to this and kind of stumbling through it (best way to learn for me). I am trying to convert my trained data and keep receiving the following error:
Code: Select all
01/12/2020 08:23:19 MainProcess MainThread logger log_setup INFO Log level set to: INFO
01/12/2020 08:23:19 MainProcess MainThread cli execute_script DEBUG Executing: convert. PID: 18440
01/12/2020 08:23:22 MainProcess MainThread cli test_for_tf_version DEBUG Installed Tensorflow Version: 1.15
01/12/2020 08:23:22 MainProcess MainThread queue_manager __init__ DEBUG Initializing QueueManager
01/12/2020 08:23:22 MainProcess MainThread queue_manager __init__ DEBUG Initialized QueueManager
01/12/2020 08:23:22 MainProcess MainThread convert __init__ DEBUG Initializing Convert: (args: Namespace(alignments_path='C:\\Users\\Ben Kelleher\\Documents\\original_state.json', allow_growth=False, colab=False, color_adjustment='avg-color', configfile=None, filter=None, frame_ranges=None, func=<bound method ScriptExecutor.execute_script of <lib.cli.ScriptExecutor object at 0x000001ACD35805F8>>, gpus=1, input_aligned_dir=None, input_dir='C:\\Users\\Ben Kelleher\\Desktop\\Vik', jobs=0, keep_unchanged=False, logfile=None, loglevel='INFO', mask_type='extended', model_dir='C:\\Users\\Ben Kelleher\\Documents', nfilter=None, on_the_fly=False, output_dir='C:\\Users\\Ben Kelleher\\Desktop', output_scale=100, redirect_gui=True, ref_threshold=0.4, reference_video='C:\\Users\\Ben Kelleher\\Desktop\\20200111_132610.mp4', scaling='none', singleprocess=False, swap_model=False, trainer=None, writer='opencv'))
01/12/2020 08:23:22 MainProcess MainThread fsmedia __init__ DEBUG Initializing Images
01/12/2020 08:23:22 MainProcess MainThread fsmedia _check_input_folder INFO Input Directory: C:\Users\Ben Kelleher\Desktop\Vik
01/12/2020 08:23:22 MainProcess MainThread utils get_image_paths DEBUG Scanned Folder contains 1138 files
01/12/2020 08:23:22 MainProcess MainThread utils get_image_paths DEBUG Returning 1137 images
01/12/2020 08:23:22 MainProcess MainThread fsmedia __init__ DEBUG Initialized Images
01/12/2020 08:23:22 MainProcess MainThread fsmedia __init__ DEBUG Initializing Alignments: (is_extract: False, input_is_video: False)
01/12/2020 08:23:22 MainProcess MainThread fsmedia _set_folder_filename DEBUG Alignments File provided: 'C:\Users\Ben Kelleher\Documents\original_state.json'
01/12/2020 08:23:22 MainProcess MainThread fsmedia _set_folder_filename DEBUG Setting Alignments: (folder: 'C:\Users\Ben Kelleher\Documents' filename: 'original_state.json')
01/12/2020 08:23:22 MainProcess MainThread alignments __init__ DEBUG Initializing Alignments: (folder: 'C:\Users\Ben Kelleher\Documents', filename: 'original_state.json')
01/12/2020 08:23:22 MainProcess MainThread serializer get_serializer DEBUG <lib.serializer._PickleSerializer object at 0x000001ACDBBA8A90>
01/12/2020 08:23:22 MainProcess MainThread serializer get_serializer DEBUG <lib.serializer._CompressedSerializer object at 0x000001ACDBBA82E8>
01/12/2020 08:23:22 MainProcess MainThread alignments get_location DEBUG Getting location: (folder: 'C:\Users\Ben Kelleher\Documents', filename: 'original_state.json')
01/12/2020 08:23:22 MainProcess MainThread alignments update_file_format INFO Reformatting legacy alignments file...
01/12/2020 08:23:22 MainProcess MainThread alignments update_file_format INFO Using existing updated alignments file found at 'C:\Users\Ben Kelleher\Documents\original_state.fsa'. If you do not wish to use this existing file then you should delete or rename it.
01/12/2020 08:23:22 MainProcess MainThread alignments get_location DEBUG Updated legacy alignments. New filename: 'original_state.fsa'
01/12/2020 08:23:22 MainProcess MainThread alignments get_location DEBUG File extension set from serializer: 'fsa'
01/12/2020 08:23:22 MainProcess MainThread alignments get_location VERBOSE Alignments filepath: 'C:\Users\Ben Kelleher\Documents\original_state.fsa'
01/12/2020 08:23:22 MainProcess MainThread alignments load DEBUG Loading alignments
01/12/2020 08:23:22 MainProcess MainThread alignments load INFO Reading alignments from: 'C:\Users\Ben Kelleher\Documents\original_state.fsa'
01/12/2020 08:23:22 MainProcess MainThread serializer load DEBUG filename: C:\Users\Ben Kelleher\Documents\original_state.fsa
01/12/2020 08:23:22 MainProcess MainThread serializer load DEBUG stored data type: <class 'bytes'>
01/12/2020 08:23:22 MainProcess MainThread serializer unmarshal DEBUG data type: <class 'bytes'>
01/12/2020 08:23:22 MainProcess MainThread serializer unmarshal DEBUG returned data type: <class 'dict'>
01/12/2020 08:23:22 MainProcess MainThread serializer load DEBUG data type: <class 'dict'>
01/12/2020 08:23:22 MainProcess MainThread alignments load DEBUG Loaded alignments
01/12/2020 08:23:22 MainProcess MainThread alignments has_legacy_landmarksxy DEBUG checking legacy landmarksXY
Traceback (most recent call last):
File "E:\faceswap\lib\cli.py", line 127, in execute_script
process = script(arguments)
File "E:\faceswap\scripts\convert.py", line 56, in __init__
self._alignments = Alignments(self._args, False, self._images.is_video)
File "E:\faceswap\scripts\fsmedia.py", line 71, in __init__
super().__init__(folder, filename=filename)
File "E:\faceswap\lib\alignments.py", line 33, in __init__
self.update_legacy()
File "E:\faceswap\lib\alignments.py", line 291, in update_legacy
if self.has_legacy_landmarksxy():
File "E:\faceswap\lib\alignments.py", line 340, in has_legacy_landmarksxy
for alignments in self.data.values()
File "E:\faceswap\lib\alignments.py", line 341, in <genexpr>
for alignment in alignments
TypeError: 'int' object is not iterable
============ System Information ============
encoding: cp1252
git_branch: master
git_commits: ff76461 lib.cli - Add dfaker tooltip and typo fix.
gpu_cuda: No global version found. Check Conda packages for Conda Cuda
gpu_cudnn: No global version found. Check Conda packages for Conda cuDNN
gpu_devices: GPU_0: GeForce GTX TITAN
gpu_devices_active: GPU_0
gpu_driver: 441.87
gpu_vram: GPU_0: 6144MB
os_machine: AMD64
os_platform: Windows-10-10.0.18362-SP0
os_release: 10
py_command: E:\faceswap\faceswap.py convert -i C:/Users/Ben Kelleher/Desktop/Vik -o C:/Users/Ben Kelleher/Desktop -al C:/Users/Ben Kelleher/Documents/original_state.json -ref C:/Users/Ben Kelleher/Desktop/20200111_132610.mp4 -m C:/Users/Ben Kelleher/Documents -c avg-color -M extended -sc none -w opencv -osc 100 -l 0.4 -j 0 -g 1 -L INFO -gui
py_conda_version: conda 4.8.1
py_implementation: CPython
py_version: 3.6.10
py_virtual_env: True
sys_cores: 12
sys_processor: Intel64 Family 6 Model 45 Stepping 7, GenuineIntel
sys_ram: Total: 12232MB, Available: 6508MB, Used: 5724MB, Free: 6508MB
=============== Pip Packages ===============
============== Conda Packages ==============
# packages in environment at C:\Users\Ben Kelleher\MiniConda3\envs\faceswap:
#
# Name Version Build Channel
_tflow_select 2.1.0 gpu
absl-py 0.8.1 py36_0
astor 0.8.0 py36_0
blas 1.0 mkl
ca-certificates 2019.11.27 0
certifi 2019.11.28 py36_0
cloudpickle 1.2.2 py_0
cudatoolkit 10.0.130 0
cudnn 7.6.5 cuda10.0_0
cycler 0.10.0 py36h009560c_0
cytoolz 0.10.1 py36he774522_0
dask-core 2.9.1 py_0
decorator 4.4.1 py_0
fastcluster 1.1.25 py36he350917_1000 conda-forge
ffmpeg 4.2 h6538335_0 conda-forge
ffmpy 0.2.2 pypi_0 pypi
freetype 2.9.1 ha9979f8_1
gast 0.2.2 py36_0
google-pasta 0.1.8 py_0
grpcio 1.16.1 py36h351948d_1
h5py 2.9.0 py36h5e291fa_0
hdf5 1.10.4 h7ebc959_0
icc_rt 2019.0.0 h0cc432a_1
icu 58.2 ha66f8fd_1
imageio 2.6.1 py36_0
imageio-ffmpeg 0.3.0 py_0 conda-forge
intel-openmp 2019.4 245
joblib 0.14.1 py_0
jpeg 9b hb83a4c4_2
keras 2.2.4 0
keras-applications 1.0.8 py_0
keras-base 2.2.4 py36_0
keras-preprocessing 1.1.0 py_1
kiwisolver 1.1.0 py36ha925a31_0
libmklml 2019.0.5 0
libpng 1.6.37 h2a8f88b_0
libprotobuf 3.11.2 h7bd577a_0
libtiff 4.1.0 h56a325e_0
markdown 3.1.1 py36_0
matplotlib 3.1.1 py36hc8f65d3_0
mkl 2019.4 245
mkl-service 2.3.0 py36hb782905_0
mkl_fft 1.0.15 py36h14836fe_0
mkl_random 1.1.0 py36h675688f_0
networkx 2.4 py_0
numpy 1.17.4 py36h4320e6b_0
numpy-base 1.17.4 py36hc3f5095_0
nvidia-ml-py3 7.352.1 pypi_0 pypi
olefile 0.46 py36_0
opencv-python 4.1.2.30 pypi_0 pypi
openssl 1.1.1d he774522_3
opt_einsum 3.1.0 py_0
pathlib 1.0.1 py36_1
pillow 6.2.1 py36hdc69c19_0
pip 19.3.1 py36_0
protobuf 3.11.2 py36h33f27b4_0
psutil 5.6.7 py36he774522_0
pyparsing 2.4.6 py_0
pyqt 5.9.2 py36h6538335_2
pyreadline 2.1 py36_1
python 3.6.10 h9f7ef89_0
python-dateutil 2.8.1 py_0
pytz 2019.3 py_0
pywavelets 1.1.1 py36he774522_0
pywin32 227 py36he774522_0
pyyaml 5.2 py36he774522_0
qt 5.9.7 vc14h73c81de_0
scikit-image 0.15.0 py36ha925a31_0
scikit-learn 0.22.1 py36h6288b17_0
scipy 1.3.2 py36h29ff71c_0
setuptools 44.0.0 py36_0
sip 4.19.8 py36h6538335_0
six 1.13.0 py36_0
sqlite 3.30.1 he774522_0
tensorboard 2.0.0 pyhb38c66f_1
tensorflow 1.15.0 gpu_py36h2b26d6b_0
tensorflow-base 1.15.0 gpu_py36h1afeea4_0
tensorflow-estimator 1.15.1 pyh2649769_0
tensorflow-gpu 1.15.0 h0d30ee6_0
termcolor 1.1.0 py36_1
tk 8.6.8 hfa6e2cd_0
toolz 0.10.0 py_0
toposort 1.5 py_3 conda-forge
tornado 6.0.3 py36he774522_0
tqdm 4.40.2 py_0
vc 14.1 h0510ff6_4
vs2015_runtime 14.16.27012 hf0eaf9b_1
werkzeug 0.16.0 py_0
wheel 0.33.6 py36_0
wincertstore 0.2 py36h7fe50ca_0
wrapt 1.11.2 py36he774522_0
xz 5.2.4 h2fa13f4_4
yaml 0.1.7 hc54c509_2
zlib 1.2.11 h62dcd97_3
zstd 1.3.7 h508b16e_0
================= Configs ==================
--------- .faceswap ---------
backend: nvidia
--------- convert.ini ---------
[color.color_transfer]
clip: True
preserve_paper: True
[color.manual_balance]
colorspace: HSV
balance_1: 0.0
balance_2: 0.0
balance_3: 0.0
contrast: 0.0
brightness: 0.0
[color.match_hist]
threshold: 99.0
[mask.box_blend]
type: gaussian
distance: 11.0
radius: 5.0
passes: 1
[mask.mask_blend]
type: normalized
kernel_size: 3
passes: 4
threshold: 4
erosion: 0.0
[scaling.sharpen]
method: unsharp_mask
amount: 150
radius: 0.3
threshold: 5.0
[writer.ffmpeg]
container: mp4
codec: libx264
crf: 23
preset: medium
tune: none
profile: auto
level: auto
[writer.gif]
fps: 25
loop: 0
palettesize: 256
subrectangles: False
[writer.opencv]
format: png
draw_transparent: False
jpg_quality: 75
png_compress_level: 3
[writer.pillow]
format: png
draw_transparent: False
optimize: False
gif_interlace: True
jpg_quality: 75
png_compress_level: 3
tif_compression: tiff_deflate
--------- extract.ini ---------
[global]
allow_growth: False
[align.fan]
batch-size: 12
[detect.cv2_dnn]
confidence: 50
[detect.mtcnn]
minsize: 20
threshold_1: 0.6
threshold_2: 0.7
threshold_3: 0.7
scalefactor: 0.709
batch-size: 8
[detect.s3fd]
confidence: 70
batch-size: 4
[mask.unet_dfl]
batch-size: 8
[mask.vgg_clear]
batch-size: 6
[mask.vgg_obstructed]
batch-size: 2
--------- gui.ini ---------
[global]
fullscreen: False
tab: extract
options_panel_width: 30
console_panel_height: 20
icon_size: 14
font: default
font_size: 9
autosave_last_session: prompt
timeout: 120
auto_load_model_stats: True
--------- train.ini ---------
[global]
coverage: 68.75
mask_type: none
mask_blur_kernel: 3
mask_threshold: 4
learn_mask: False
icnr_init: False
conv_aware_init: False
subpixel_upscaling: False
reflect_padding: False
penalized_mask_loss: True
loss_function: mae
learning_rate: 5e-05
[model.dfl_h128]
lowmem: False
[model.dfl_sae]
input_size: 128
clipnorm: True
architecture: df
autoencoder_dims: 0
encoder_dims: 42
decoder_dims: 21
multiscale_decoder: False
[model.dlight]
features: best
details: good
output_size: 256
[model.original]
lowmem: False
[model.realface]
input_size: 64
output_size: 128
dense_nodes: 1536
complexity_encoder: 128
complexity_decoder: 512
[model.unbalanced]
input_size: 128
lowmem: False
clipnorm: True
nodes: 1024
complexity_encoder: 128
complexity_decoder_a: 384
complexity_decoder_b: 512
[model.villain]
lowmem: False
[trainer.original]
preview_images: 14
zoom_amount: 5
rotation_range: 10
shift_range: 5
flip_chance: 50
color_lightness: 30
color_ab: 8
color_clahe_chance: 50
color_clahe_max_size: 4
Any thoughts? sorry if this is a very broad question!
Re: TypeError: 'int' object is not iterable
Posted: Sun Jan 12, 2020 11:41 am
by torzdf
You have passed in your model's state file rather than the frame's alignments file.
Re: TypeError: 'int' object is not iterable
Posted: Sun Jan 12, 2020 11:54 am
by Kelleheruk
Preview tool works fine, converting fails..
Posted: Sun Jan 19, 2020 11:00 pm
by 230V
Hi guys,
after trained an model to loss level 0,03 i did an preview using the preview section in the tools tab which works fine, result was not awesome but ok.
so i went to convert it to an video but the preview shows no change and the log shows an message like "no alignment found xxx skipping"
what did i wrong?
input dir: the the video where i want to change/swap the face
output dir: where the video file should be saved
alignments: alignments file of the video above (where i want to swap the face)
model dir: path to the folder of my trained model
any suggestions?
Re: Preview tool works fine, converting fails..
Posted: Mon Jan 20, 2020 12:15 am
by torzdf
Please hit the Generate button in the GUI and post the command you are attempting to run. Thanks
Re: Preview tool works fine, converting fails..
Posted: Mon Jan 20, 2020 2:07 am
by 230V
Code: Select all
c:...\MiniConda3\envs\faceswap\python.exe c:...\faceswap\faceswap.py convert -i c:...file.avi -o c:...file.fsa -m "c:..model" -c avg-color -M extended -sc none -w opencv -osc 100 -l 0.4 -j 0 -L INFO
Re: Preview tool works fine, converting fails..
Posted: Fri Jan 24, 2020 11:49 am
by torzdf
Your output in that command is pointing to an alignments file.