diff --git a/README.md b/README.md index 3471013..4c1f81d 100644 --- a/README.md +++ b/README.md @@ -20,6 +20,11 @@ Currently, only the test code is available, and training scripts are coming soon ![video4](/doc/img/zhoujielun.webp) ![video5](/doc/img/zhuyin.webp) +## Top News + +**`2021-06-20`**: We release the scripts for arbitrary video and image processing. + + ## Results ![Results1](/doc/img/results1.PNG) @@ -29,7 +34,6 @@ Currently, only the test code is available, and training scripts are coming soon - **High-quality videos can be found in the link below:** [[Mama(video) 1080p]](https://drive.google.com/file/d/1JTruy6BTnT1EK1PSaZ4x-F8RhtZU_kT3/view?usp=sharing) @@ -45,6 +49,8 @@ Currently, only the test code is available, and training scripts are coming soon [[Online Video]](https://www.bilibili.com/video/BV12v411p7j5/) + + ## Dependencies - python3.6+ - pytorch1.5+ @@ -52,28 +58,12 @@ Currently, only the test code is available, and training scripts are coming soon - opencv - pillow - numpy - +- moviepy +- insightface ## Usage -### To test the pretrained model -``` -python test_one_image.py --isTrain false --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/ -``` - ---name refers to the SimSwap training logs name. - -## Pretrained model - -### Usage -There are two archive files in the drive: **checkpoints.zip** and **arcface_checkpoint.tar** - -- **Copy the arcface_checkpoint.tar into ./arcface_model** -- **Unzip checkpoints.zip, place it in the root dir ./** - -[[Google Drive]](https://drive.google.com/drive/folders/1jV6_0FIMPC53FZ2HzZNJZGMe55bbu17R?usp=sharing) - -[[Baidu Drive]](https://pan.baidu.com/s/1wFV11RVZMHqd-ky4YpLdcA) Password: ```jd2v``` - +[Preparation](./doc/guidance/preparation.md) +[Simple Usage](./doc/guidance/usage.md) ## To cite our paper ``` diff --git a/doc/guidance/preparation.md b/doc/guidance/preparation.md new file mode 100644 index 0000000..7c1f6c6 --- /dev/null +++ b/doc/guidance/preparation.md @@ -0,0 +1,27 @@ + +# Preparation + +### Environment and Dependencies +``` +conda create -n simswap python=3.6 +conda activate simswap +conda install pytorch==1.8.0 torchvision==0.9.0 torchaudio==0.8.0 cudatoolkit=10.2 -c pytorch +(option): pip install --ignore-installed imageio +pip install insightface==0.2.1 onnxruntime moviepy +``` +- We use the face detection and alignment methods from **[insightface](https://github.com/deepinsight/insightface)** for image preprocessing. Please download the relative files and save them to ./insightface_func/models from [this link](https://onedrive.live.com/?authkey=%21ADJ0aAOSsc90neY&cid=4A83B6B633B029CC&id=4A83B6B633B029CC%215837&parId=4A83B6B633B029CC%215834&action=locate). +- The pytorch and cuda versions above are most recommanded. They may vary. +- Using insightface with different versions is not recommanded. Please use this specific version. +- These settings are tested valid on both Windows and Ununtu. + +### Pretrained model +There are two archive files in the drive: **checkpoints.zip** and **arcface_checkpoint.tar** + +- **Copy the arcface_checkpoint.tar into ./arcface_model** +- **Unzip checkpoints.zip, place it in the root dir ./** + +[[Google Drive]](https://drive.google.com/drive/folders/1jV6_0FIMPC53FZ2HzZNJZGMe55bbu17R?usp=sharing) +[[Baidu Drive]](https://pan.baidu.com/s/1wFV11RVZMHqd-ky4YpLdcA) Password: ```jd2v``` + +### Note +We expect users to have GPU with at least 8G memory. For those who do not, we will provide Colab Notebook implementation in the future. diff --git a/doc/guidance/usage.md b/doc/guidance/usage.md new file mode 100644 index 0000000..f75acf1 --- /dev/null +++ b/doc/guidance/usage.md @@ -0,0 +1,47 @@ + +# Usage + +### Simple face swaping for already face-aligned images +``` +python test_one_image.py --isTrain false --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/ +``` + +### Face swaping for video +- Swap only one face within the video(the one with highest confidence by face detection). +``` +python test_video_swapsingle.py --isTrain false --name people --Arc_path arcface_model/arcface_checkpoint.tar --pic_a_path ./demo_file/Iron_man.jpg --video_path ./demo_file/mutil_people_1080p.mp4 --output_path ./output/mutil_test_swapsingle.mp4 --temp_path ./temp_results +``` + +- Swap all faces within the video. +``` +python test_video_swapmutil.py --isTrain false --name people --Arc_path arcface_model/arcface_checkpoint.tar --pic_a_path ./demo_file/Iron_man.jpg --video_path ./demo_file/mutil_people_1080p.mp4 --output_path ./output/mutil_test_swapmutil.mp4 --temp_path ./temp_results +``` + + + + +### Face swaping for Arbitrary images +- 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 --isTrain false --name people --Arc_path arcface_model/arcface_checkpoint.tar --pic_a_path ./demo_file/Iron_man.jpg --pic_b_path ./demo_file/mutil_people.jpg --output_path ./output/ +``` + +- Swap all faces within one image. The result would be saved to ./output/result_whole_swapmutil.jpg +``` +python test_wholeimage_swapmutil.py --isTrain false --name people --Arc_path arcface_model/arcface_checkpoint.tar --pic_a_path ./demo_file/Iron_man.jpg --pic_b_path ./demo_file/mutil_people.jpg --output_path ./output/ +``` +Difference between single face swapping and all face swapping are shown below. + + +### Parameters +| 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 | +| --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 | + +### Note +We expect users to have GPU with at least 8G memory. For those who do not, we will provide Colab Notebook implementation in the future. diff --git a/doc/img/multi_face_comparison.png b/doc/img/multi_face_comparison.png new file mode 100644 index 0000000..b319572 Binary files /dev/null and b/doc/img/multi_face_comparison.png differ