Sign inSign up

deffyc/faceswap

By deffyc

•Updated over 8 years ago

faceswap

Image
1

429

deffyc/faceswap repository overview

Notice: This repository is not operated or maintained by /u/deepfakes⁠. Please read the explanation below for details.


⁠deepfakes_faceswap

Faceswap is a tool that utilizes deep learning to recognize and swap faces in pictures and videos.

⁠Overview

The project has multiple entry points. You will have to:

  • Gather photos (or use the one provided in the training data provided below)
  • Extract faces from your raw photos
  • Train a model on your photos (or use the one provided in the training data provided below)
  • Convert your sources with the model
⁠Extract

From your setup folder, run python faceswap.py extract. This will take photos from src folder and extract faces into extract folder.

⁠Train

From your setup folder, run python faceswap.py train. This will take photos from two folders containing pictures of both faces and train a model that will be saved inside the models folder.

⁠Convert

From your setup folder, run python faceswap.py convert. This will take photos from original folder and apply new faces into modified folder.

⁠General notes:
  • All of the scripts mentioned have -h/--help options with arguments that they will accept. You're smart, you can figure out how this works, right?!

Note: there is no conversion for video yet. You can use ffmpeg⁠ to convert video into photos, process images, and convert images back to video.

⁠Training Data

Whole project with training images and trained model (~300MB): https://anonfile.com/p7w3m0d5be/face-swap.zip⁠ or click here to download⁠

⁠How To setup and run the project

⁠Setup

Clone the repo and setup you environment. There is a Dockerfile that should kickstart you. Otherwise you can setup things manually, see in the Dockerfiles for dependencies.

Check out ../blob/master/INSTALL.md⁠ and ../blob/master/USAGE.md⁠ for basic information on how to configure virtualenv and use the program.

You also need a modern GPU with CUDA support for best performance

Some tips:

Reusing existing models will train much faster than starting from nothing.
If there is not enough training data, start with someone who looks similar, then switch the data.

⁠Docker

If you prefer using Docker, You can start the project with:

  • Build: docker build -t deepfakes .
  • Run: docker run --rm --name deepfakes -v [src_folder]:/srv -it deepfakes bash . bash can be replaced by your command line Note that the Dockerfile does not have all good requirments, so it will fail on some python 3 commands. Also note that it does not have a GUI output, so the train.py will fail on showing image. You can comment this, or save it as a file.

⁠How to contribute

⁠For people interested in the generative models
  • Go to the 'faceswap-model' to discuss/suggest/commit alternatives to the current algorithm.
⁠For devs
  • Read this README entirely
  • Fork the repo
  • Download the data with the link provided below
  • Play with it
  • Check issues with the 'dev' tag
  • For devs more interested in computer vision and openCV, look at issues with the 'opencv' tag. Also feel free to add your own alternatives/improvments
⁠For non-dev advanced users
  • Read this README entirely
  • Clone the repo
  • Download the data with the link provided below
  • Play with it
  • Check issues with the 'advuser' tag
  • Also go to the 'faceswap-playground' repo and help others.
⁠For end-users
  • Get the code here and play with it if you can
  • You can also go to the 'faceswap-playground' repo and help or get help from others.
  • Be patient. This is relatively new technology for developers as well. Much effort is already being put into making this program easy to use for the average user. It just takes time!
  • Notice Any issue related to running the code has to be open in the 'faceswap-playground' project!
⁠For haters

Sorry, no time for that.

⁠About github.com/deepfakes

⁠What is this repo?

It is a community repository for active users.

⁠Why this repo?

The joshua-wu repo seems not active. Simple bugs like missing http:// in front of urls have not been solved since days.

⁠Why is it named 'deepfakes' if it is not /u/deepfakes?

  1. Because a typosquat would have happened sooner or later as project grows
  2. Because all glory go to /u/deepfakes
  3. Because it will better federate contributors and users

⁠What if /u/deepfakes feels bad about that?

This is a friendly typosquat, and it is fully dedicated to the project. If /u/deepfakes wants to take over this repo/user and drive the project, he is welcomed to do so (Raise an issue, and he will be contacted on Reddit). Please do not send /u/deepfakes messages for help with the code you find here.

⁠About machine learning

⁠How does a computer know how to recognise/shape a faces? How does machine learning work? What is a neural network?

It's complicated. Here's a good video that makes the process understandable: How Machines Learn

Here's a slightly more in depth video that tries to explain the basic functioning of a neural network: How Machines Learn

tl;dr: training data + trial and error

Tag summary

Content type

Image

Digest

Size

606.1 MB

Last updated

over 8 years ago

docker pull deffyc/faceswap