DeepFakes Frequently Asked Questions

Contents

General questions

What are deepfakes?

Deepfaking is a computational method for swapping faces on a picture or video. For example, you might have a movie clip of a speech given by President Donald Trump. You may want to insert your father’s face in the movie clip to make it look like your father is giving the speech. This could be done with a deepfake. Traditionally, Photoshop and similar tools were used to make fake photos one at a time. Deepfaking automates this process so that you can create convincing fake photos in large numbers. By combining large numbers of photos, you can generate a video. The automation is handled by deep learning using an artificial neural network. Hence, the term, “deepfakes”.

Who created the deepfakes method?

Face swapping algorithms have a long history of research in academic and commercial groups. There are applications in the visual arts and security industries, for example. One example is this Youtube video. However, these tools were not available to a wide audience. A member of the site Reddit.com with the username deepfakes first began releasing experimental footage of his work at the end of 2017 and founded the subreddit /r/deepfakes. He subsequently released his image processing code publicly for others to use, although it required significant programming expertise to operate. Another Reddit user named deepfakeapp soon released a more user-friendly version and founded the subreddit /r/fakeapp. Another unknown reddit user began a Github repository to continue coding development, with contributions from several other programmers.

Why are people interested in deepfakes?

Deepfaking brings powerful machine learning technologies to the public. Admittedly, much of the earliest interest in deepfaking involved replacing adult video actresses faces with other celebrity faces. For comparison, it is estimated that 4 to 30 percent of all online traffic is related to adult media (Quora). However, the internet has revolutionized medicine, finance, business, education, journalism, politics, and many other fields that have nothing to do with adult entertainment. In the same way, the applications for deepfakes extend far beyond its cruder origins.

This video (safe for work) hints at the future power of deepfakes. The reddit user /u/derpfakes used the exact same deepfaking technology to generate a more realistic version of a younger Carrie Fisher in Rogue One than the movie studio, which had access to expensive and proprietary technologies. The applications for visual media and arts are only just emerging.

More importantly, deepfaking draws the public’s attention to the power of deep learning algorithms. Stores like Walmart have already attempted to use facial recognition to track the behavior of customers from the moment they enter a store. Facebook was sued for building facial recognition databases and continues to fight biometrics privacy laws. These technologies are cousins to deepfaking technologies, and the public is largely unaware of their existing use and related privacy concerns. For example, can the government or security firms fake video footage used as evidence in courts? Deepfaking shows how unreliable such evidence really is.

Is deepfaking legal?

There is nothing intrinsically wrong, legally or morally, with the algorithm and programs used for deepfaking. Deepfaking is perfectly legal in the same way that using the program Photoshop is. A Photoshop user can partake in copyright infringement, harassment, and bad taste, or a Photoshop user could create legal, ethical, and beautiful art. The same logic could be applied to any other tool, whether a kitchen knife or innocent cucumber. However, we do agree that if a tool is only used for distasteful purposes, it may have a harmful social effect. Part of the purpose of this site is to encourage diverse and positive contributions of deepfaking.

How can I create deepfakes?

The original FakeApp can be downloaded here. A detailed tutorial for beginners is available here. Expert programmers may wish to access the original source files at the Github repository here. The FakeApp requires a modern graphics card for full functionality. See the technical section of this FAQ for further details.

Is my copy of FakeApp legitimate?

If you downloaded FakeApp from a torrent or other source, you can verify their hashes with the values below.

FakeApp version 1.1 (FakeApp.zip):

  • Size: 2,515,004,625 bytes
  • MD5: 8AE2163A8D8FBBFDE3CA3DB65CCFC547
  • SHA1: EC8D772C3E1810C3AFCF109DC85797248A59EA36
  • SHA-256: C620079FE29F46DC6AA44E0CF8D1849DEE1C6A999D9A92BA3D60FAA2A28B5ADE

FakeApp version 2.1 (FakeApp_Setup.exe):

  • Size: 1,934,980,899 bytes
  • MD5: B4885B670C4C20643D932A2A2D1ACAE8
  • SHA1: 3E2B49A46456762311323C40BF223D9AA7F3222B
  • SHA-256: 602342857CAD4CBBC4C64A6463C6DADC91074E1F5C287E59DDF9B261219ABEC2

UPDATE: It looks like the Mega link now has a slightly different has and size for version 1.1 as noted in a know defunct reddit thread. The user noted the following:

File: FakeApp.zip
Downloaded from: Mega
Size: 2,450,969 KB
Hashes:
CRC32: 13A734AD
MD5: 32BC5EDD8ECFB388278F7CCD37A6FA24
SHA-1: BC226FE850B06325B46C66D4E75A7466F2CF400F

Source (now dead): https://www.reddit.com/r/fakeapp/comments/7xh4vw/a_few_questions_about_app_security/

Can I pay someone to create deepfakes?

Yes, this is possible. However, there are several things you should consider. As with any online service, you should do your due diligence. Payments by Bitcoin, for example, cannot be reversed if the service provider does not deliver the product. Furthermore, creating deepfakes is time consuming, as it takes many hours of training that monopolizes a user’s computer. A service provider will not want to risk creating a time-consuming product without being paid. The barriers to paid deepfakes services are high for both the buyers and the sellers. Also, no service provider will want to take on the liability of creating illegal content. Do you have the proper proof of copyright ownership for all associated media? For legal and ethical uses of deepfaking, though, paid services may eventually arise. You can also contact us if you have a proposal, although you are warned that all low-quality and illicit proposals will be ignored.

Can I create deepfakes of non-celebrities?

The deepfaking technology requires a sufficient number of photos of the person’s face you would like to re-create, from a variety of lighting and angles that match the target face you will replace. Also, the two faces being swapped are ideally somewhat similar for the best results. Other than that, there are no other strong requirements. The faces used can be celebrities or yourself. It remains to be demonstrated if deepfaking can work on non-human faces. Do note that the unauthorized use of copyrighted images is not legal in most jurisdictions. Furthermore, while something may be technically possible, it may not necessarily be ethically or legally permissible.

What is deep learning?

Deep learning is a specific type of machine learning, and machine learning is a specific type of artificial intelligence (AI). Deep learning uses large data sets to train artificial neural networks. Neural networks are loosely inspired by biological neurons in the brain. After training, deep learning algorithms can perform complex tasks that would be difficult or impossible to code for explicitly.

Technical questions

Can I use my computer to create deepfakes?

Yes, the FakeApp program is run locally from your computer. In principle, any fast computer could create deepfakes of some sort. In practice, the time required to create deepfakes will be unreasonable, or the quality of the results will be quite poor. For practical purposes, your computer will require a modern graphics card. System RAM and CPU will also affect performance. Currently, the FakeApp is only available for the Windows operating system.

What graphics card can I use to create deepfakes?

The FakeApp program requires CUDA 8.0 support, which means you must use a recent NVIDIA graphics card. Furthermore, the computational model requires a minimum amount of graphics card memory. As a rule of thumb, the GTX 1060 with 6GB of VRAM should be able to provide satisfactory baseline performance requiring approximately 10-20 hours of model training. The GTX 1070 or 1080 will provide better performance and faster model training. In general, graphics cards with 2GB of VRAM will barely suffice or not be able to work. We have successfully tested a GTX 1050 with 2GB of VRAM using the settings batch size=32, layers=2, and nodes=32 in FakeApp. Another user has reported success with a 2GB card using batch size=64, layers=1, and nodes=128. Lowering the number of nodes and layers may allow systems with less VRAM to use FakeApp, but the quality of the results may suffer.

Which graphics card do you recommend for deepfakes?

A graphics card is required to power the deep learning calculations for deepfakes, which unfortunately overlaps with the current boom in GPU-based cryptocurrency mining. This means that graphic card prices have been increasing to exorbitant levels. It also means that the guidance for the price-to-performance ratio is roughly similar to guidance for cryptocurrency mining. If you simply want to dabble in deepfakes, a GTX 1060 is probably sufficient. The GTX 1070 is perhaps at the optimal price-to-performance level, and if budget is no concern, you should obtain the GTX 1080. Tim Dettmers has an excellent article about which GPU to get for deep learning.

Can I use an AMD-based graphics card for deepfakes?

The current FakeApp does not support AMD-based GPUs directly. More generally, deep learning toolkits like TensorFlow have poor support for OpenCL, the AMD-chip equivalent of CUDA. This is because NVIDIA began heavily investing in machine learning applications before its competitors, becoming the de facto standard for GPU-based machine learning.

UPDATE: A tutorial for getting started with AMD graphics cards in Linux is available here.

Can I use multiple graphics cards to speed up deepfakes?

In principle, yes, you can use multiple GPUs to speed up the deepfakes process. However, you will need to modify the original source code instead of using the compiled FakeApp. Also, adapting deep learning algorithms to work with multiple GPUs in parallel is not always a simple task. For the nonexpert user of FakeApp, you will not benefit from SLI or other multi-GPU configurations.

Can I use my phone to create deepfakes?

No, deepfakes require extensive computations that are far beyond what is possible with even the fastest modern smartphones.

Can I create deepfakes on a Mac?

In principle, this should be possible. However, in practice, it could be quite difficult. The current deepfakes code uses the TensorFlow package. As stated in the TensorFlow documentation, TensorFlow no longer provides GPU support for MacOS. You may be able to use Parallels or other tools to run deepfakes algorithms on a Mac, but no one has currently reported success with this method. (Update: some users have reported installing the python version successfully.)

Can I create deepfakes using cloud computing?

You should be able to deploy the deepfakes algorithm on rented GPU-based cloud computing platforms, like the one offered by Google. However, the technical challenges are high, and a few users have reported progress with such an effort. UPDATE: A tutorial is now available here. Be warned that you may pay exorbitant fees if you don’t know what you are doing.

How many photos do I need to train the model?

The quality of the training photos is more important than the absolute number. The number of photos required also depends on the exact deepfaking attempt. The photos should cover similar poses and lighting styles between the two faces to be swapped. If faces do not move much and appear in one position, it maybe be possible to train the model quickly with fewer photos. On the other hand, if there is a large amount of head movement and different face angles, training the model will require a larger quantity of diverse photos. As a rule of thumb, you should try to aim for at least a few hundred photos of the target face you would like to reconstruct, although successes have been reported in some cases with less than a hundred. Others have used thousands of photos for the best results.

FakeApp questions

Where can I get the FakeApp?

FakeApp version 1.1 can be downloaded here. FakeApp version 2.0 is currently being developed by /u/deepfakeapp.

What are the computer requirements for the FakeApp?

The FakeApp runs in the Windows operating system. You also need to install CUDA 8.0 from here. For optimal performance, see the notes about graphics cards under Technical questions. A minimum of 8GB RAM is also recommended.

What is an OOM error?

OOM stands for “out of memory”.

Why do I have memory errors during extraction?

The size of your images used for face extraction may be too large. You can use Lightning Image Resizer or similar programs to resize the training images. The face images should be about 900 x 900 pixels in size or smaller, although the maximum dimensions may vary based on your computer’s specifications. 500 x 500 should almost always work on a computer capable of running the FakeApp. If necessary, you can pre-crop the images around the face to preserve pixel density when resizing.

Why do I have memory errors during training?

If you are using a graphics card with 2 GB of VRAM, you may not be able to use the FakeApp. You can reduce the number of layers from 1 to 4 or reduce the number of nodes in multiples of 2 from 64 to 1024. The batch size may also be reduced in multiples of 2. However, note that models with more layers and nodes will likely produce better results. We recommend that you reduce the number of layers or nodes one step at a time. If the FakeApp runs for ten minutes without crashing, it will likely be stable for the whole training run.

Why do I have an error about a CUDA dll file?

Make sure that you have CUDA 8.0 properly installed.

Can I stop and restart training without losing my progress?

You can stop the program by pressing the ‘q’ button while the image preview window is selected. This will save all current progress to date. You can then restart the training at another time and the program will continue from where you paused. If the program crashes unexpectedly during the middle of a long training run, you can usually continue with your progress as well, as the program saves the data at regular intervals. Occasionally, a problematic crash will prevent restarting the training. Note that you should keep all layer and node parameters identical during a training run.

Can I add or change images in between stopping and starting training?

Yes, you can change the training data. Just be sure to align and extract the faces before proceeding. If you add images to your data_A or data_B folder and perform the extraction, note that all files will be extracted again. If you removed bad alignment faces, make sure to remove them again.

How do I start over with a new training model?

All training is cumulatively stored in the C:\fakes\model folder. To start training a new model, replace the three files in the C:\fakes\model folder with the original files in C:\FakeApp\model. You may want to save the trained model in another directory.

How do I load a previously trained model?

Replace the three files in the C:\fakes\model folder with the previously trained model files.

Why do my results look bad?

You may require additional training. Using a high-end GTX 1080 will still require several hours of training, if not more, to begin seeing semi-realistic results. You may also need to improve the quality of your training data sets.

How do I improve my training data set quality?

Ideally, your training data sets have similar lighting and face angles between the two faces to be swapped. After aligning and extracting faces, you should also remove any obscured faces from the C:\fakes\data_A\aligned and C:\fakes\data_B\aligned folders. Remove faces that have hair, hands, glasses, or other objects partially obscuring the face. You should also remove extreme lighting conditions, such as black and white photos or distorted color filters. You also need to remove any failed alignments, which usually look like diagonal full size photos.

Can I use more than one person in the training data set?

In principle, you can use more than one person within each data_A or data_B directory, but the results will be mixed with faces from multiple. On the other hand, if you do not have enough photos of a certain person, you might want to augment your training set with a similar-looking face.

Can I use the same model for training on new faces?

Yes, training will also perform faster once you are no longer working with a brand new model. However, facial features from past training sets may appear in the new results.

Why can’t the program find the files during extraction?

Make sure the you enter the correct files location into the FakeApp program under the Extraction tab. Some users may report errors with backslash versus forward slashes. If there is a concern, use forward slashes (the opposite of Windows convention) and be sure to place a final slash at the end. The location should be exactly C:/fakes/data_A/ or C:/fakes/data_B/. Make sure the images are also correctly placed into these directories.

Why can’t the program find the files during training?

Make sure that you  have first performed extraction successfully. The aligned and extracted faces will appear in a new “aligned” folder. Make sure the you enter the correct files location into the FakeApp program under the Extraction tab. Some users may report errors with backslash versus forward slashes. If there is a concern, use forward slashes (the opposite of Windows convention) and be sure to place a final slash at the end. The locations should be exactly C:/fakes/data_A/aligned/ and C:/fakes/data_B/aligned/. The model folder should be C:/fakes/model/.

Why do I get an error about image type during extraction?

Make sure that the type of image file is specified correctly under the Extraction tab. Make sure that all images in the directory are of a single type. While the FakeApp should be able to train on PNG and JPG data, some users have reported errors with PNG image types. If you run into problems with PNG files, use JPG files instead. Most video frame extractors can extract in both formats.

How do I extract frames from a video for training data?

The most common suggestion is to use the command line tool ffmpeg. However, PotPlayer is a far more convenient tool for non-expert users. After loading a video in PotPlayer, press Ctrl+G to open the consecutive frame capture window. Here you can set the rate of frame extract and the total number of frames to extract. You can also set the saved image resolution so that you do not need to perform a separate resizing step. Hit start on the frame capture and then begin playing the video clip at the desired location. PotPlayer is particularly convenient if you wish to extract a few frames from different segments of a long video.

If you wish to extract all of the frames from a video for merging with your target face, you should use ffmpeg, as this is the simplest way to preserve the filename structure for construction into a new video file. You can enter the command ffmpeg -i video_filename -vf fps=fps image_name%04d.jpg”. Here video_filename is the name of the video file, fps is the rate of frame extraction (use 25 if you are unsure), and image filenames will have the naming convention  image_name0001.jpg, image_name0002.jpg and so on. See the tutorial for more information.

How do I convert the merged images to a video?

The merged images will be found in C:\fakes\data_A\merged. To convert them, you will need to use another program such as ffmpeg. Once ffmpeg is installed, from the command line within the merged directory, you will need to enter a command such as ffmpeg -f image2 -i img%03d.jpg -vcodec libx264 -crf 15 -pix_fmt yuv420p output_filename. Here img%03d.jpg should be replaced with the image filenames, where %04d means that the image numbers are padded to four zeros (img001.jpg, img002.jpg, etc.). The quality is set by -crf 15, and you can use a number between 0 and 51, with lower being better. If you want to change the frame rate from the default of 25 fps using the switch -r. See the tutorial for more information.

Can I perform other tasks while FakeApp is running?

Mostly likely, the answer is no, unless you have a very high-end setup. Not only will tasks be very slow, but the FakeApp will often crash if you attempt to perform other operations while running it.

UPDATE: This has not been tested on FakeApp, but for the open source faceswap version, you can activate an Intel CPU’s integrated HD graphics in your BIOS to drive your monitor while the network training uses your graphics card. If you connect a cable from both your onboard video output and graphics card video output, you can switch between the two using the standard screen resolution settings panel. Simply select which monitor to show the desktop. You can then use your computer’s video without experiencing low performance. Credit: iperov.

Photo and video questions

How can I download Instagram pictures in bulk?

You can find many tools online, including the InstaG Chrome extension.

How can I download images in bulk from a webpage?

There are many online tools such as the Bulk Image Downloader Chrome extension.

How can I download Youtube videos?

You can use the 4K Video Downloader to download videos at full resolution. There are a number of online tools to download Youtube videos at lower resolution.

How do I create a GIF?

You can create a GIF by uploading a video to Gfycat. Gfycat will also host GIFs for sharing.