The DeepFaceLab Tutorial (always up-to-date)

Oct 25th, 2019 by DFBlue

tutorial

guide

how to

deepfacelab

deepfakes

👀 Update 10/25/19: Added instructions for the new SAEHD model (amazing)

👽 Update 9/24/19: New post for AVATAR mode

Source and destination videos requirements

High resolution (4k webm is best, lower than 1080p is not recommended)

Faces not too far from camera and unobstructed

Multiple angles, facial expressions

Brightly and evenly lit

Faces should somewhat match (beard, hat, hair, skin color, shape, glasses)

Need at least 2 mins of good quality video, interview videos work well

Downloading the software

We will use DeepFaceLab to create the deepfakes. Another software, FaceSwap is also available, and will have a separate tutorial.

Download DeepFaceLab Make sure to pick the right build for your GPU. If you don’t have a GPU, use the CLSSE build Here’s the direct link In that folder, you will find some pre-compiled face-sets. Go ahead and download one of them to get started quickly (otherwise you will have to build your own face-set from videos / images)

The downloaded .exe will extract and install the program to the location of your choosing. A workspace folder will be created. This is the folder where all the action will happen.



Extracting faces from source video

Name the source video data_src and place it in the \workspace folder. Most formats that ffmpeg supports will work

and place it in the folder. Run 2) extract images from video data_src Use PNG (better quality) FPS <= 10 that gets you at least 2000 images (4k-6k is ideal)

Run 4) data_src extract faces S3FD best GPU Extracted faces saved to data_src\aligned .

Run 4.2.2) data_src sort by similar histogram Groups similar detected faces together

Run 4.1) data_src check result Delete faces that are not the right person, super blurry, cut off, upside down or sideways, or obstructed

Run 4.2.other) data_src util add landmarks debug images New images with _debug suffix are created in data_src/aligned which allow you to see the detected facial landmarks Look for faces where landmarks are misaligned and delete the _debug and original images for those Once you’re done, delete all _debug images by using the search bar to filter for _debug

Run 4.2.6) data_src sort by final Choose a target image number around 90% of your total faces



Extracting faces from destination video

You may choose to either extract from (1) the final video clip you want, or (2) one that is cut to include only the face you want to swap. If you choose 1, you may have to spend more time cleaning the extracted faces. If you choose 2 you will have to edit back the final video (and audio) after the swap.

Name your final video data_dst and put it in the \workspace folder

and put it in the folder Run 3.2) extract PNG from video data_dst FULL FPS

Run 5) data_dst extract faces S3FD best GPU

Run 5.2) data_dst sort by similar histogram

Run 5.1) data_dst check results Delete all faces that are not the target face to swap, or are the target face but upside down or sideways. Every face that you leave in will be swapped in the final video.

Run 5.1) data_dst check results debug Delete any faces that are not correctly aligned or missing alignment, paying special attention to the jawline. We will manually align these frames in the next step.

Run 5) data_dst extract faces MANUAL RE-EXTRACT DELETED RESULTS DEBUG We run this step to manually align frames that we deleted in the last step. The manually aligned faces will be automatically extracted and used for converting. You must manually align frames you want converted (swapped) even if it’s a lot of work. If you fail to do so, your swap will use the original face for those frames. Manual alignment instructions: For each face, move your cursor around until it aligns correctly onto the face If it’s not aligning, use the mouse scroll wheel / zoom to change the size of the boxes When alignment is correct, hit enter Go back and forth with , and . . If you don’t want to align a frame just skip it with . Mouse left click will lock/unlock landmarks. You can either lock it by clicking or hitting enter .



Training

Run 6) train SAEHD

Setting Value Notes iterations 100000 Or until previews are sharp with eyes and teeth details. resolution 128 Increasing resolution requires significant VRAM increase face_type f learn_mask y optimizer_mode 2 or 3 Modes 2/3 place work on the gpu and system memory. For a 8gb card you can place on mode 3 and still most likely be able to do 160 res fakes with small batch size. architecture df ae_dims 512 Reduce if less GPU memory (256) ed_ch_dims 21 Reduce if less GPU memory random_warp y trueface n face_style_power 0 Can enable if you want to morph src more to dst. But disable after 15k iterations. bg_style_power 10 Turn off at 15k iterations. Styles on consume \~30% more vram so you will need to change batch size accordingly. color_transfer varies Try all modes in the interactive converter clipgrad n batch_size 8 Higher if you don't run out of memory sort_by_yaw n No, unless you have very few src faces random_flip y For an NVIDIA GTX 1080 8gb GPU

Optional: History timelapse

Before converting, you can make a timelapse of the preview history (if you saved it during training). Do this only if you understand what ffmpeg is.

> cd \workspace\model\SAEHD_history > ffmpeg -r 120 -f image2 -s 1280x720 -i %05d0.jpg -vcodec libx264 -crf 25 -pix_fmt yuv420p history.mp4

Convert

Run 7) convert SAEHD

Use the interactive converter and memorize the shortcut keys, it will speed up the process a lot.

Setting Value Notes interactive_converter y Definitely use the interactive converter since you can try out all the different settings before converting all the frames mode overlay mask_mode learned erode_modifier 0-50 If src face is bleeding outside the edge of dst face increase this to "erode" away the src face on the outside blur_modifier 10-200 The more similar the face the lower you can set erode and blur and get great results. motion_blur 0 color_transfer ebs Try all of them, can even use different ones for different scenes / lighting sharpen_mode box sharpen_amount 1-3 super_resolution RankSRGAN Enhances detail, especially around the eyes color_degrade_power n export_alpha_mask n Outputs transparent PNGs for use in post-production tools if you need it

While conversion is running, you can preview the final images data_dst\merged folder to make sure it’s correct. If it’s not, just close the convert window, delete /merged and start conversion again.

folder to make sure it’s correct. If it’s not, just close the convert window, delete and start conversion again. Run 8) converted to mp4 Bitrate of 3-8 is sufficient for most



Done 🤡

Contributions by DFBlue, PlanetOfTheFakes

Follow us on Twitter @dfblue or Reddit u/deepfakeblue to keep up with everything that is going on in the world of deepfakes. Think Blue.