FaceSwap: Deepfake Face-Swapping Software
FaceSwap is a free, open-source Python tool that swaps faces in photos and video by training a deep-learning autoencoder model on two sets of face images. Reach for it if you want to learn how face-swapping models actually work and don't mind building a training dataset and waiting out GPU training time. Skip it if you want a fast, no-training, one-click swap. That's not how this tool works.
Understanding FaceSwap
FaceSwap is the deepfakes/faceswap project on GitHub: a Python program that detects faces in your photos or video frames, trains a neural network to map one face onto another, then renders the result back into new images or footage. Run it via `python faceswap.py extract`, `train`, and `convert`, or through the bundled GUI, on Windows, Linux, or MacOS. The README calls for a modern CUDA GPU, with AMD cards partly covered through ROCm on Linux.
Key Features and Workflow
- βThree-stage CLI pipeline: `extract` pulls faces out of source photos or video frames, `train` fits a model on two matched face sets, and `convert` renders the swap back onto the target media.
- βShips its own GUI via `python faceswap.py gui`, so you're not stuck memorizing CLI flags β though every script also exposes a `-h`/`--help` reference.
- βMultiple swappable model architectures are included, such as Villain, DFaker, DFL-H128, and Phaze-A, credited in the README to the specific contributors who built or ported each one.
- βA companion `tools.py effmpeg` command pulls frames out of video and reassembles them afterward, or you can lean on ffmpeg directly for the same job.
- βGPU-first design: the README calls for a modern CUDA GPU for real training speed, with AMD GPUs supported through ROCm specifically on Linux.
- βReusing a previously trained model to warm-start a new one trains noticeably faster than starting from scratch, per the README's own tip.
Ethical Use Cases and Learning
- β’Hands-on deep learning education: working through the extract/train/convert pipeline is a concrete way to learn how autoencoder-based generative models behave, without a research-lab background.
- β’VFX and film-style face work: the README lists movies as one of the intended uses, alongside the Hollywood VFX artists it says are among its contributors.
- β’Social or political commentary and satire: the project's own ethical statement names this explicitly as a use case the developers intend to support.
Setting Up FaceSwap
The README defers full installation steps to a separate INSTALL.md file rather than documenting them inline, so exact install commands aren't clearly documented in the main README. What is documented: FaceSwap is a Python program that runs on Windows, Linux, and MacOS, and the README says a modern GPU with CUDA support is needed for real training speed. Many AMD GPUs are supported too, through ROCm, but only on Linux. Beyond cloning the repo and following INSTALL.md, no further setup detail is given here.
Running FaceSwap: CLI and GUI Options
Usage follows three ordered steps run from your setup folder: `python faceswap.py extract` pulls faces out of the photos in your `src` folder into an `extract` folder, `python faceswap.py train` fits a model against two folders of extracted faces and writes it into a `models` folder, and `python faceswap.py convert` applies that trained model to the `original` folder and writes results into `modified`. Prefer a GUI to typing flags? Run `python faceswap.py gui` instead. For video, `python tools.py effmpeg -h` handles the photo-to-video round trip, or you can hand that job to ffmpeg yourself. Every script accepts `-h`/`--help` for its full argument list, and USAGE.md is where the project points you for a deeper walkthrough.
Strengths
- βThe extract/train/convert split maps directly onto how the underlying model works, so you learn the mechanics instead of clicking one button.
- βA GUI ships alongside the CLI, so you're not locked into memorizing flags just to get started.
- βMultiple model architectures live in the same codebase β Villain, DFaker, DFL-H128, Phaze-A, and more β so you can trade training time against swap quality.
- βThe project states its own ethical boundaries directly in the README instead of staying silent, which sets clear expectations before you start.
- βReusing an existing trained model to warm-start a new one, per the README's own tip, cuts down on redundant training time.
Technical Requirements and Ethical Guidelines
- β³A GPU is effectively mandatory. The README calls for a modern CUDA GPU for real training speed, and while AMD cards work through ROCm, that path is Linux-only, so Windows AMD users are left without a fast path.
- β³Training a usable model takes real time and a dataset of matched faces you have to assemble yourself β there's no pretrained one-click model bundled in the repo.
- β³Install steps live entirely in a separate INSTALL.md rather than the main README, so first-time setup friction is hard to judge before you commit to cloning the repo.
- β³The technology is a genuine misuse risk, not just a technical caveat: the same extract/train/convert pipeline that teaches you autoencoders can just as easily produce non-consensual or deceptive content, which is why the maintainers publish an explicit ethical-use manifesto and say they won't tolerate the software being used for unethical purposes.
- β³Support is community-run through Discord and a separate forum, not this repo's issue tracker. The README says general support questions posted here get deleted without a response.
Exploring Other Face Swapping Software
Frequently Asked Questions
FaceSwap is released under the GPL-3.0 license, which is free and open source, but GPL-3.0 carries copyleft obligations: any derivative software you distribute must also be released under GPL-3.0, so check that fits your commercial plans first.
FaceSwap runs on Windows, Linux, and MacOS, but the README says a modern GPU with CUDA support is needed for real training speed. Many AMD GPUs work too, through ROCm, though that path is only available on Linux.
FaceSwap's maintainers publish a manifesto stating the software isn't meant for creating inappropriate content, changing faces without someone's consent or knowledge, or any illicit or unethical purpose. They describe it instead as built for AI experimentation, commentary, films, and other legitimate face-swapping uses.
FaceSwap can swap faces in video: it includes a `tools.py effmpeg` command that converts video into individual frames and reassembles them afterward, or you can use ffmpeg directly, then run the extract, train, and convert pipeline against the extracted frames.
FaceSwap is written in Python, per its GitHub repository language stats, with the whole workflow driven through Python scripts like faceswap.py and tools.py rather than a compiled binary.
FaceSwap support runs through its own Discord server and the FaceSwap Forum at faceswap.dev/forum. The README explicitly asks users not to post general support questions in the GitHub repo, since those are liable to be deleted without a response.
The problem it solves
Before FaceSwap consolidated the code, working deepfake techniques were scattered across academic papers and hard-to-run research code, understandable mainly to people who already had a strong AI theory background. FaceSwap packages that pipeline into three runnable commands anyone with a GPU can execute: extract, train, convert. That's what actually made hands-on deepfake experimentation possible outside research labs.
Who should try it β and who should skip
Try FaceSwap if you're a developer or ML hobbyist who wants to actually train a face-swap model yourself and doesn't mind assembling a dataset, waiting through GPU training, and reading INSTALL.md and USAGE.md instead of a quick-start page. Skip it if you want a plug-and-play app, don't have access to a CUDA-capable GPU or a Linux box for the ROCm path, or you expect first-party support inside the GitHub repo instead of Discord or the forum.
