Before running, please make sure you have installed the environment and downloaded requested files according to the preparation guidance.
python test_one_image.py --name people --Arc_path arcface_model/arcface_checkpoint.tar --pic_a_path crop_224/6.jpg --pic_b_path crop_224/ds.jpg --output_path output/
- Swap only one face within the video(the one with highest confidence by face detection).
python test_video_swapsingle.py --crop_size 224 --use_mask --name people --Arc_path arcface_model/arcface_checkpoint.tar --pic_a_path ./demo_file/Iron_man.jpg --video_path ./demo_file/multi_people_1080p.mp4 --output_path ./output/multi_test_swapsingle.mp4 --temp_path ./temp_results
- Swap all faces within the video.
python test_video_swapmulti.py --crop_size 224 --use_mask --name people --Arc_path arcface_model/arcface_checkpoint.tar --pic_a_path ./demo_file/Iron_man.jpg --video_path ./demo_file/multi_people_1080p.mp4 --output_path ./output/multi_test_swapmulti.mp4 --temp_path ./temp_results
- Swap the specific face within the video.
python test_video_swapspecific.py --crop_size 224 --use_mask --pic_specific_path ./demo_file/specific1.png --name people --Arc_path arcface_model/arcface_checkpoint.tar --pic_a_path ./demo_file/Iron_man.jpg --video_path ./demo_file/multi_people_1080p.mp4 --output_path ./output/multi_test_specific.mp4 --temp_path ./temp_results
When changing the specified face, you need to give a picture of the person whose face is to be changed. Then assign the picture path to the argument "--pic_specific_path". This picture should be a front face and show the entire head and neck, which can help accurately change the face (if you still don’t know how to choose the picture, you can refer to the specific*.png of ./demo_file/). It would be better if this picture was taken from the video to be changed.
- Swap multi specific face with multi specific id within the video.
python test_video_swap_multispecific.py --crop_size 224 --use_mask --name people --Arc_path arcface_model/arcface_checkpoint.tar --video_path ./demo_file/multi_people_1080p.mp4 --output_path ./output/multi_test_multispecific.mp4 --temp_path ./temp_results --multisepcific_dir ./demo_file/multispecific
The folder you assign to "--multisepcific_dir" should be looked like:
$Your folder name$
├── DST_01.jpg(png)
└── DST_02.jpg(png)
└──...
└── SRC_01.jpg(png)
└── SRC_02.jpg(png)
└──...
The result is that the face corresponding to SRC_01.jpg (png) in the video will be replaced by the face corresponding to DST_01.jpg (png). Then the character corresponding to SRC_02.jpg(png) will be replaced by the face of DST_02.jpg(png), and so on. Note that when using your own data and naming it, do not remove the 0 in SRC_(DST_)01.jpg(png), etc.
- Swap only one face within one image(the one with highest confidence by face detection). The result would be saved to ./output/result_whole_swapsingle.jpg
python test_wholeimage_swapsingle.py --crop_size 224 --use_mask --name people --Arc_path arcface_model/arcface_checkpoint.tar --pic_a_path ./demo_file/Iron_man.jpg --pic_b_path ./demo_file/multi_people.jpg --output_path ./output/
- Swap all faces within one image. The result would be saved to ./output/result_whole_swapmulti.jpg
python test_wholeimage_swapmulti.py --crop_size 224 --use_mask --name people --Arc_path arcface_model/arcface_checkpoint.tar --pic_a_path ./demo_file/Iron_man.jpg --pic_b_path ./demo_file/multi_people.jpg --output_path ./output/
- Swap specific face within one image. The result would be saved to ./output/result_whole_swapspecific.jpg
python test_wholeimage_swapspecific.py --crop_size 224 --use_mask --name people --Arc_path arcface_model/arcface_checkpoint.tar --pic_a_path ./demo_file/Iron_man.jpg --pic_b_path ./demo_file/multi_people.jpg --output_path ./output/ --pic_specific_path ./demo_file/specific2.png
- Swap multi specific face with multi specific id within one image. The result would be saved to ./output/result_whole_swap_multispecific.jpg
python test_wholeimage_swap_multispecific.py --crop_size 224 --use_mask --name people --Arc_path arcface_model/arcface_checkpoint.tar --pic_b_path ./demo_file/multi_people.jpg --output_path ./output/ --multisepcific_dir ./demo_file/multispecific
We trained a beta version of Simswap 512 on VGGFace2-HQ and open sourced the model (if you think the Simswap 512 is cool, please star our VGGFace2-HQ repo).
The usage of applying Simswap 512 is to modify the value of the argument: "--crop_size" to 512 , take the command line of "Swap multi specific face with multi specific id within one image." as an example, the following command line can get the result without watermark:
python test_wholeimage_swap_multispecific.py --crop_size 512 --use_mask --name people --Arc_path arcface_model/arcface_checkpoint.tar --pic_b_path ./demo_file/multi_people.jpg --output_path ./output/ --multisepcific_dir ./demo_file/multispecific
The effect of Simswap 512 is shown below.
The above example command lines are to add the simswap logo as the watermark by default. After our discussion, we have added a hyper parameter to control whether to remove watermark.
The usage of removing the watermark is to add an argument: "--no_simswaplogo" to the command line, take the command line of "Swap all faces within one image" as an example, the following command line can get the result without watermark:
python test_wholeimage_swapmulti.py --no_simswaplogo --crop_size 224 --use_mask --name people --Arc_path arcface_model/arcface_checkpoint.tar --pic_a_path ./demo_file/Iron_man.jpg --pic_b_path ./demo_file/multi_people.jpg --output_path ./output/
We provide two methods to paste the face back to the original image after changing the face: Using mask or using bounding box. At present, the effect of using mask is the best. All the above code examples are using mask. If you want to use the bounding box, you only need to remove the --use_mask in the code example. Difference between using mask and not using mask can be found here.
Parameters | Function |
---|---|
--name | The SimSwap training logs name |
--pic_a_path | Path of image with the target face |
--pic_b_path | Path of image with the source face to swap |
--pic_specific_path | Path of image with the specific face to be swapped |
--multisepcific_dir | Path of image folder for multi specific face swapping |
--video_path | Path of video with the source face to swap |
--temp_path | Path to store intermediate files |
--output_path | Path of directory to store the face swapping result |
--no_simswaplogo | The hyper parameter to control whether to remove watermark |
--use_mask | The hyper parameter to control whether to use face parsing for the better visual effects(I recommend to use) |
We expect users to have GPU with at least 3G memory.the For those who do not, we will provide Colab Notebook implementation in the future.