Take a video and replace the face in it with a face of your choice. You only need one image of the desired face. No dataset, no training. That's it, that's the software. ![demo-gif](demo.gif) ## Installation > Do not create any issues regarding installation problems. I am only responsible for issues in this program, use google for help. 1. install `python`, `pip` and `git` 2. install `ffmpeg` 3. run the following commands in terminal: ``` git clone https://github.com/s0md3v/roop cd roop pip3 install -r requirements.txt ``` 4. Download [this file](https://drive.google.com/file/d/1jbDUGrADco9A1MutWjO6d_1dwizh9w9P/view?usp=sharing) and keep it in **roop** directory ### Do you have a decent GPU? If you have a good enough GPU, you can use it to speed up the face-swapping process by running `run.py` with `--gpu` flag. If you plan on doing, you will need to install the appropriate `onnxruntime-*` package as follows: #### NVIDIA ``` pip3 install onnxruntime-gpu ``` #### AMD ``` git clone https://github.com/microsoft/onnxruntime cd onnxruntime ./build.sh --config Release --build_wheel --update --build --parallel --cmake_extra_defines CMAKE_PREFIX_PATH=/opt/rocm/lib/cmake ONNXRUNTIME_VERSION=$ONNXRUNTIME_VERSION onnxruntime_BUILD_UNIT_TESTS=off --use_rocm --rocm_home=/opt/rocm pip install build/Linux/Release/dist/*.whl ``` ## Usage > Note: When you run this program for the first time, it will download some models ~300MB in size. Executing `python run.py` command will launch this window: Choose a face (image with desired face) and the target image/video (image/video in which you want to replace the face) and click on `Start`. The output will be saved in `output.mp4` file. Don't touch the FPS checkbox unless you know what you are doing. Additional command line arguments are given below: ``` -h, --help show this help message and exit -f SOURCE_IMG, --face SOURCE_IMG use this face -t TARGET_PATH, --target TARGET_PATH replace this face --keep-fps keep original fps --gpu use gpu --keep-frames don't delete frames directory ``` Looking for a CLI mode? Using the -f/--face argument will make the program in cli mode. ## Future plans - [ ] Replace a selective face throughout the video - [ ] Support for replacing multiple faces ## Credits - [ffmpeg](https://ffmpeg.org/): for making video related operations easy - [deepinsight](https://github.com/deepinsight): for their [insightface](https://github.com/deepinsight/insightface) project which provided a well-made library and models. - and all developers behind libraries used in this project.