Old extracted faces with alignments.
Is it possible to update previously extracted faces with alignment files so they have metadata for the latest version?
Thanks.
edit: nvm it seems running the mask tool is trying to do this.
The place to discuss Faceswap and Deepfakes
https://forum.faceswap.dev/
Is it possible to update previously extracted faces with alignment files so they have metadata for the latest version?
Thanks.
edit: nvm it seems running the mask tool is trying to do this.
Well....it just hangs there on both my machines (gtx 1660 super and rtx 3070)
C:\Users\ME\MiniConda3\envs\faceswap3\python.exe C:\Users\ME\faceswap3\tools.py mask -a D:/FRIK/TEST_STUFF/alignments.fsa -i D:/FRIK/TEST_STUFF/Aligned -it faces -M extended -p all -b 3 -t 4 -ot combined -L INFO
Code: Select all
Loading...
Setting Faceswap backend to NVIDIA
10/04/2022 23:58:28 INFO Log level set to: INFO
10/04/2022 23:58:32 INFO Reading alignments from: 'D:\FRIK\TEST_STUFF\alignments.fsa'
10/04/2022 23:58:32 INFO Loading Mask from Extended plugin...
10/04/2022 23:58:32 INFO Initializing Extended (Mask)...
10/04/2022 23:58:32 INFO Initialized Extended (Mask) with batchsize of 1
10/04/2022 23:58:32 WARNING Legacy faces discovered. These faces will be updated
nothing happens after that
Code: Select all
============ System Information ============
encoding: cp1252
git_branch: master
git_commits: 1f31af2 bugfix: Aligner size filter to int64
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 1660 SUPER
gpu_devices_active: GPU_0
gpu_driver: 457.51
gpu_vram: GPU_0: 6144MB
os_machine: AMD64
os_platform: Windows-10-10.0.19044-SP0
os_release: 10
py_command: C:\Users\ME\faceswap3/faceswap.py gui
py_conda_version: conda 22.9.0
py_implementation: CPython
py_version: 3.9.13
py_virtual_env: True
sys_cores: 8
sys_processor: AMD64 Family 23 Model 17 Stepping 0, AuthenticAMD
sys_ram: Total: 16330MB, Available: 5884MB, Used: 10446MB, Free: 5884MB
=============== Pip Packages ===============
absl-py==1.2.0
astunparse==1.6.3
cachetools==5.2.0
certifi==2022.9.24
charset-normalizer==2.1.1
cloudpickle @ file:///tmp/build/80754af9/cloudpickle_1632508026186/work
colorama @ file:///C:/Windows/TEMP/abs_9439aeb1-0254-449a-96f7-33ab5eb17fc8apleb4yn/croots/recipe/colorama_1657009099097/work
cycler @ file:///tmp/build/80754af9/cycler_1637851556182/work
decorator @ file:///opt/conda/conda-bld/decorator_1643638310831/work
dm-tree==0.1.5
fastcluster @ file:///D:/bld/fastcluster_1649783471014/work
ffmpy==0.3.0
flatbuffers==1.12
fonttools==4.25.0
gast==0.4.0
google-auth==2.12.0
google-auth-oauthlib==0.4.6
google-pasta==0.2.0
grpcio==1.49.1
h5py==3.7.0
idna==3.4
imageio @ file:///C:/Windows/TEMP/abs_24c1b783-7540-4ca9-a1b1-0e8aa8e6ae64hb79ssux/croots/recipe/imageio_1658785038775/work
imageio-ffmpeg @ file:///home/conda/feedstock_root/build_artifacts/imageio-ffmpeg_1649960641006/work
importlib-metadata==5.0.0
joblib @ file:///home/conda/feedstock_root/build_artifacts/joblib_1663332044897/work
keras==2.9.0
Keras-Preprocessing==1.1.2
kiwisolver @ file:///C:/ci/kiwisolver_1653292407425/work
libclang==14.0.6
Markdown==3.4.1
MarkupSafe==2.1.1
matplotlib @ file:///C:/ci/matplotlib-suite_1660169687702/work
mkl-fft==1.3.1
mkl-random @ file:///C:/ci/mkl_random_1626186184308/work
mkl-service==2.4.0
munkres==1.1.4
numexpr @ file:///C:/Windows/Temp/abs_e2036a32-9fe9-47f3-a04c-dbb1c232ba4b334exiur/croots/recipe/numexpr_1656940304835/work
numpy @ file:///C:/Windows/Temp/abs_2a1e1vbeag/croots/recipe/numpy_and_numpy_base_1659432712056/work
nvidia-ml-py==11.515.75
oauthlib==3.2.1
opencv-python==4.6.0.66
opt-einsum==3.3.0
packaging @ file:///tmp/build/80754af9/packaging_1637314298585/work
Pillow==9.2.0
ply==3.11
protobuf==3.19.6
psutil @ file:///C:/Windows/Temp/abs_b2c2fd7f-9fd5-4756-95ea-8aed74d0039flsd9qufz/croots/recipe/psutil_1656431277748/work
pyasn1==0.4.8
pyasn1-modules==0.2.8
pyparsing @ file:///C:/Users/BUILDE~1/AppData/Local/Temp/abs_7f_7lba6rl/croots/recipe/pyparsing_1661452540662/work
PyQt5==5.15.7
PyQt5-sip @ file:///C:/Windows/Temp/abs_d7gmd2jg8i/croots/recipe/pyqt-split_1659273064801/work/pyqt_sip
python-dateutil @ file:///tmp/build/80754af9/python-dateutil_1626374649649/work
pywin32==302
pywinpty @ file:///C:/ci_310/pywinpty_1644230983541/work/target/wheels/pywinpty-2.0.2-cp39-none-win_amd64.whl
requests==2.28.1
requests-oauthlib==1.3.1
rsa==4.9
scikit-learn @ file:///D:/bld/scikit-learn_1659726281030/work
scipy @ file:///C:/bld/scipy_1658811088396/work
sip @ file:///C:/Windows/Temp/abs_b8fxd17m2u/croots/recipe/sip_1659012372737/work
six @ file:///tmp/build/80754af9/six_1644875935023/work
tensorboard==2.9.1
tensorboard-data-server==0.6.1
tensorboard-plugin-wit==1.8.1
tensorflow-estimator==2.9.0
tensorflow-gpu==2.9.2
tensorflow-io-gcs-filesystem==0.27.0
tensorflow-probability @ file:///tmp/build/80754af9/tensorflow-probability_1633017132682/work
termcolor==2.0.1
threadpoolctl @ file:///home/conda/feedstock_root/build_artifacts/threadpoolctl_1643647933166/work
toml @ file:///tmp/build/80754af9/toml_1616166611790/work
tornado @ file:///C:/ci/tornado_1662458743919/work
tqdm @ file:///C:/b/abs_0axbz66qik/croots/recipe/tqdm_1664392691071/work
typing_extensions @ file:///C:/Windows/TEMP/abs_dd2d0moa85/croots/recipe/typing_extensions_1659638831135/work
urllib3==1.26.12
Werkzeug==2.2.2
wincertstore==0.2
wrapt==1.14.1
zipp==3.8.1
============== Conda Packages ==============
# packages in environment at C:\Users\ME\MiniConda3\envs\faceswap3:
#
# Name Version Build Channel
absl-py 1.2.0 pypi_0 pypi
astunparse 1.6.3 pypi_0 pypi
blas 1.0 mkl
brotli 1.0.9 h2bbff1b_7
brotli-bin 1.0.9 h2bbff1b_7
ca-certificates 2022.9.24 h5b45459_0 conda-forge
cachetools 5.2.0 pypi_0 pypi
certifi 2022.9.24 pyhd8ed1ab_0 conda-forge
charset-normalizer 2.1.1 pypi_0 pypi
cloudpickle 2.0.0 pyhd3eb1b0_0
colorama 0.4.5 py39haa95532_0
cudatoolkit 11.2.2 h933977f_10 conda-forge
cudnn 8.1.0.77 h3e0f4f4_0 conda-forge
cycler 0.11.0 pyhd3eb1b0_0
decorator 5.1.1 pyhd3eb1b0_0
dm-tree 0.1.5 py39hf11a4ad_0
fastcluster 1.2.6 py39h2e25243_1 conda-forge
ffmpeg 4.3.1 ha925a31_0 conda-forge
ffmpy 0.3.0 pypi_0 pypi
flatbuffers 1.12 pypi_0 pypi
fonttools 4.25.0 pyhd3eb1b0_0
freetype 2.10.4 hd328e21_0
gast 0.4.0 pypi_0 pypi
git 2.34.1 haa95532_0
glib 2.69.1 h5dc1a3c_1
google-auth 2.12.0 pypi_0 pypi
google-auth-oauthlib 0.4.6 pypi_0 pypi
google-pasta 0.2.0 pypi_0 pypi
grpcio 1.49.1 pypi_0 pypi
gst-plugins-base 1.18.5 h9e645db_0
gstreamer 1.18.5 hd78058f_0
h5py 3.7.0 pypi_0 pypi
icu 58.2 ha925a31_3
idna 3.4 pypi_0 pypi
imageio 2.19.3 py39haa95532_0
imageio-ffmpeg 0.4.7 pyhd8ed1ab_0 conda-forge
importlib-metadata 5.0.0 pypi_0 pypi
intel-openmp 2021.4.0 haa95532_3556
joblib 1.2.0 pyhd8ed1ab_0 conda-forge
jpeg 9e h2bbff1b_0
keras 2.9.0 pypi_0 pypi
keras-preprocessing 1.1.2 pypi_0 pypi
kiwisolver 1.4.2 py39hd77b12b_0
lerc 3.0 hd77b12b_0
libblas 3.9.0 1_h8933c1f_netlib conda-forge
libbrotlicommon 1.0.9 h2bbff1b_7
libbrotlidec 1.0.9 h2bbff1b_7
libbrotlienc 1.0.9 h2bbff1b_7
libcblas 3.9.0 5_hd5c7e75_netlib conda-forge
libclang 14.0.6 pypi_0 pypi
libdeflate 1.8 h2bbff1b_5
libffi 3.4.2 hd77b12b_4
libiconv 1.16 h2bbff1b_2
liblapack 3.9.0 5_hd5c7e75_netlib conda-forge
libogg 1.3.5 h2bbff1b_1
libpng 1.6.37 h2a8f88b_0
libtiff 4.4.0 h8a3f274_0
libvorbis 1.3.7 he774522_0
libwebp 1.2.2 h2bbff1b_0
libxml2 2.9.14 h0ad7f3c_0
libxslt 1.1.35 h2bbff1b_0
lz4-c 1.9.3 h2bbff1b_1
m2w64-gcc-libgfortran 5.3.0 6 conda-forge
m2w64-gcc-libs 5.3.0 7 conda-forge
m2w64-gcc-libs-core 5.3.0 7 conda-forge
m2w64-gmp 6.1.0 2 conda-forge
m2w64-libwinpthread-git 5.0.0.4634.697f757 2 conda-forge
markdown 3.4.1 pypi_0 pypi
markupsafe 2.1.1 pypi_0 pypi
matplotlib 3.5.2 py39haa95532_0
matplotlib-base 3.5.2 py39hd77b12b_0
mkl 2021.4.0 haa95532_640
mkl-service 2.4.0 py39h2bbff1b_0
mkl_fft 1.3.1 py39h277e83a_0
mkl_random 1.2.2 py39hf11a4ad_0
msys2-conda-epoch 20160418 1 conda-forge
munkres 1.1.4 py_0
numexpr 2.8.3 py39hb80d3ca_0
numpy 1.23.1 py39h7a0a035_0
numpy-base 1.23.1 py39hca35cd5_0
nvidia-ml-py 11.515.75 pypi_0 pypi
oauthlib 3.2.1 pypi_0 pypi
opencv-python 4.6.0.66 pypi_0 pypi
openssl 1.1.1q h8ffe710_0 conda-forge
opt-einsum 3.3.0 pypi_0 pypi
packaging 21.3 pyhd3eb1b0_0
pcre 8.45 hd77b12b_0
pillow 9.2.0 py39hdc2b20a_1
pip 22.2.2 py39haa95532_0
ply 3.11 py39haa95532_0
protobuf 3.19.6 pypi_0 pypi
psutil 5.9.0 py39h2bbff1b_0
pyasn1 0.4.8 pypi_0 pypi
pyasn1-modules 0.2.8 pypi_0 pypi
pyparsing 3.0.9 py39haa95532_0
pyqt 5.15.7 py39hd77b12b_0
pyqt5-sip 12.11.0 py39hd77b12b_0
python 3.9.13 h6244533_1
python-dateutil 2.8.2 pyhd3eb1b0_0
python_abi 3.9 2_cp39 conda-forge
pywin32 302 py39h2bbff1b_2
pywinpty 2.0.2 py39h5da7b33_0
qt-main 5.15.2 he8e5bd7_7
qt-webengine 5.15.9 hb9a9bb5_4
qtwebkit 5.212 h3ad3cdb_4
requests 2.28.1 pypi_0 pypi
requests-oauthlib 1.3.1 pypi_0 pypi
rsa 4.9 pypi_0 pypi
scikit-learn 1.1.2 py39hfd4428b_0 conda-forge
scipy 1.8.1 py39h5567194_2 conda-forge
setuptools 63.4.1 py39haa95532_0
sip 6.6.2 py39hd77b12b_0
six 1.16.0 pyhd3eb1b0_1
sqlite 3.39.3 h2bbff1b_0
tensorboard 2.9.1 pypi_0 pypi
tensorboard-data-server 0.6.1 pypi_0 pypi
tensorboard-plugin-wit 1.8.1 pypi_0 pypi
tensorflow-estimator 2.9.0 pypi_0 pypi
tensorflow-gpu 2.9.2 pypi_0 pypi
tensorflow-io-gcs-filesystem 0.27.0 pypi_0 pypi
tensorflow-probability 0.14.0 pyhd3eb1b0_0
termcolor 2.0.1 pypi_0 pypi
threadpoolctl 3.1.0 pyh8a188c0_0 conda-forge
tk 8.6.12 h2bbff1b_0
toml 0.10.2 pyhd3eb1b0_0
tornado 6.2 py39h2bbff1b_0
tqdm 4.64.1 py39haa95532_0
typing-extensions 4.3.0 py39haa95532_0
typing_extensions 4.3.0 py39haa95532_0
tzdata 2022c h04d1e81_0
urllib3 1.26.12 pypi_0 pypi
vc 14.2 h21ff451_1
vs2015_runtime 14.27.29016 h5e58377_2
werkzeug 2.2.2 pypi_0 pypi
wheel 0.37.1 pyhd3eb1b0_0
wincertstore 0.2 py39haa95532_2
winpty 0.4.3 4
wrapt 1.14.1 pypi_0 pypi
xz 5.2.6 h8cc25b3_0
zipp 3.8.1 pypi_0 pypi
zlib 1.2.12 h8cc25b3_3
zstd 1.5.2 h19a0ad4_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.mask_blend]
type: normalized
kernel_size: 3
passes: 4
threshold: 4
erosion: 0.0
erosion_top: 0.0
erosion_bottom: 0.0
erosion_left: 0.0
erosion_right: 0.0
[scaling.sharpen]
method: none
amount: 150
radius: 0.3
threshold: 5.0
[writer.ffmpeg]
container: mp4
codec: libx264
crf: 23
preset: medium
tune: none
profile: auto
level: auto
skip_mux: False
[writer.gif]
fps: 25
loop: 0
palettesize: 256
subrectangles: False
[writer.opencv]
format: png
draw_transparent: False
separate_mask: False
jpg_quality: 75
png_compress_level: 3
[writer.pillow]
format: png
draw_transparent: False
separate_mask: False
optimize: False
gif_interlace: True
jpg_quality: 75
png_compress_level: 3
tif_compression: tiff_deflate
--------- extract.ini ---------
[global]
allow_growth: False
aligner_min_scale: 0.07
aligner_max_scale: 2.0
aligner_distance: 22.5
aligner_roll: 45.0
save_filtered: False
[align.fan]
batch-size: 12
[detect.cv2_dnn]
confidence: 50
[detect.mtcnn]
minsize: 20
scalefactor: 0.709
batch-size: 8
cpu: True
threshold_1: 0.6
threshold_2: 0.7
threshold_3: 0.7
[detect.s3fd]
confidence: 70
batch-size: 4
[mask.bisenet_fp]
batch-size: 8
cpu: False
weights: faceswap
include_ears: False
include_hair: False
include_glasses: True
[mask.custom]
batch-size: 8
centering: face
fill: False
[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]
centering: face
coverage: 87.5
icnr_init: False
conv_aware_init: False
optimizer: adam
learning_rate: 5e-05
epsilon_exponent: -7
autoclip: False
reflect_padding: False
allow_growth: False
mixed_precision: False
nan_protection: True
convert_batchsize: 16
[global.loss]
loss_function: ssim
loss_function_2: mse
loss_weight_2: 100
loss_function_3: none
loss_weight_3: 0
loss_function_4: none
loss_weight_4: 0
mask_loss_function: mse
eye_multiplier: 3
mouth_multiplier: 2
penalized_mask_loss: True
mask_type: extended
mask_blur_kernel: 3
mask_threshold: 4
learn_mask: False
[model.dfaker]
output_size: 128
[model.dfl_h128]
lowmem: False
[model.dfl_sae]
input_size: 128
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.phaze_a]
output_size: 128
shared_fc: none
enable_gblock: True
split_fc: True
split_gblock: False
split_decoders: False
enc_architecture: fs_original
enc_scaling: 7
enc_load_weights: True
bottleneck_type: dense
bottleneck_norm: none
bottleneck_size: 1024
bottleneck_in_encoder: True
fc_depth: 1
fc_min_filters: 1024
fc_max_filters: 1024
fc_dimensions: 4
fc_filter_slope: -0.5
fc_dropout: 0.0
fc_upsampler: upsample2d
fc_upsamples: 1
fc_upsample_filters: 512
fc_gblock_depth: 3
fc_gblock_min_nodes: 512
fc_gblock_max_nodes: 512
fc_gblock_filter_slope: -0.5
fc_gblock_dropout: 0.0
dec_upscale_method: subpixel
dec_upscales_in_fc: 0
dec_norm: none
dec_min_filters: 64
dec_max_filters: 512
dec_slope_mode: full
dec_filter_slope: -0.45
dec_res_blocks: 1
dec_output_kernel: 5
dec_gaussian: True
dec_skip_last_residual: True
freeze_layers: keras_encoder
load_layers: encoder
fs_original_depth: 4
fs_original_min_filters: 128
fs_original_max_filters: 1024
fs_original_use_alt: False
mobilenet_width: 1.0
mobilenet_depth: 1
mobilenet_dropout: 0.001
mobilenet_minimalistic: 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
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
I try to maintain backwards compatibility but cannot guarantee that it will always work as the progress of time marches on...
IIRC if you run the "rename-faces" job in the alignments tool it should update the faces.
This does not work either, ran it with a debugger and it seems to always think alignment files are version 2.3 its like hard coded.
Ok, yeah. That kinda makes sense..... The alignments file has been upgraded from some other task....
If you have the original source material to go with the alignments file, then the absolute easiest thing to do would just be to use the alignments tool to re-extract the faces from the source material.
Otherwise, if you are comfortable going into the code (which you seem to be), just forcing the check of the alignments version to return "`True" should get what you want.
Yeah, thx for the replies, it kinda works but I think this might be painting myself in a corner.
If I do this it will update the faces, conversion seems to work too...
But! If I try to then update the masks I get an other error message that I doubt there is a fix for.
Code: Select all
if "source_frame_dims" not in metadata["source"]:
logger.error("The faces need to be re-extracted as at least some of them do not "
"contain information required to correctly generate masks.")
logger.error("You can re-extract the face-set by using the Alignments Tool's "
"Extract job.")
break
From what I understand this was not stored in the old aligments so if I really wanted them I would have to either hard code for specific aligment or find the video during the update process and get its dimensions?
Ok, yeah. You have definitely hit a brick wall here.
To generate masks from face sets, the dimensions of the original frame that the face was extracted from is needed (for.... reasons). That information wasn't held when we initially started storing meta information in PNG headers (it wasn't required at first). Unfortunately there is no way around that. To be able to generate masks from face sets, you need to have an alignments version which has this information stored. The only way to get that information is to go back to the original source material.
I wish I had an out for you, but sadly I don't in this instance.
Thx again, yeah I hard coded the dims in the update for a known face set, it then allowed me to generate masks. But when converting the masks basically don't seem to apply, but its there in the exif so is probably skewed some way or theres an other thing missing.
I'll consider this door closed. This is starting to feel too much like my day job!