代码参考使用的是来自github:https://github.com/dream80/DeepFaceLab_Colab
示例流程仅供参考学习,不要用于非法用途哦!!!
1.打开colab,挂载谷歌云盘。点击圆圈中的小标志就可以,然后按提示操作就可以。
2.建立deepfacelab文件夹,并从github加载示例项目。
%cd /content/drive/My Drive/
!mkdir DeepFaceLab
%cd /content/drive/My Drive/DeepFaceLab/
!git clone https://github.com/dream80/DFLWorkspace.git workspace
运行上述代码后,会在MyDrive文件夹下生成下列文件
3.根据github中的代码进行deepface与相关依赖的安装,deepface代码版本可以更换选择
#@title 开始安装
Version = "v2.06.01" #@param ["v2.02.03", "v2.02.23b", "v2.02.28","v2.03.07","v2.03.15","v2.06.01","v2.06.19","last"]
%cd /content/drive/My Drive/DeepFaceLab
!rm -fr DeepFaceLab_Colab
!pip uninstall -y tensorflow
if Version=="620":
print("620版加载中....")
# 获取DFL源代码v1.6.1稳定版
!git clone -b v1.6.1 https://github.com/dream80/DeepFaceLab_Colab.git
%cd /content/drive/My Drive/DeepFaceLab/DeepFaceLab_Colab
!pip install -r requirements-colab.txt
elif Version=="last":
print("最新版加载中....")
!git clone https://github.com/iperov/DeepFaceLab.git DeepFaceLab_Colab
%cd /content/drive/My Drive/DeepFaceLab/DeepFaceLab_Colab
!pip install -r requirements-colab.txt
else:
print(Version+"加载中....")
cmd="clone -b "+Version+" https://github.com/dream80/DeepFaceLab_Colab.git"
!git $cmd
%cd /content/drive/My Drive/DeepFaceLab/DeepFaceLab_Colab
!pip install -r requirements-colab.txt
!pip install --upgrade scikit-image
!sudo apt-get install cuda-10-0
等等等等等,然后就安装好了
在deepfacelab目录下增加了这个目录以及一系列内容
4.换脸需要两个视频,一个是样貌视频,另外一个是表情视频,换脸的意思就是说让样貌视频中的人脸具有表情视频人脸的表情。(...绕来绕去的),下面的步骤就是从样貌视频中截出一张一张的人脸图片以及从表情视频中截出一张一张的人脸图片用于后续的步骤。
先选“src"提取一次,中间有很多要选择的步骤,太多了,含义我也没看懂,就一直enter选默认的就行了。
#@title 开始提取
target = "src" #@param ["src","dst"]
%cd /content/drive/My Drive/DeepFaceLab/DeepFaceLab_Colab
if target=="src":
!python main.py videoed extract-video --input-file ../workspace/data_src.mp4 --output-dir ../workspace/data_src/
!python main.py extract --input-dir ../workspace/data_src --output-dir ../workspace/data_src/aligned --detector s3fd
!python main.py util --input-dir ../workspace/data_src/aligned --pack-faceset
else:
!python main.py videoed extract-video --input-file ../workspace/data_dst.mp4 --output-dir ../workspace/data_dst/
!python main.py extract --input-dir ../workspace/data_dst --output-dir ../workspace/data_dst/aligned --detector s3fd --output-debug
!python main.py util --input-dir ../workspace/data_dst/aligned --pack-faceset
出现这样的小黑,要用鼠标先点击一下,出现矩形框之后再enter。然后data_src文件夹里就生成了很多张图片,如下图所示。
提取src视频中的图片完成后,将提取完成的图片用下列代码排序一下。
#@title 开始排序
target = "src" #@param ["src","dst"]
if target=="src":
#Src排序,可以通过谷歌云盘查看结果,删除不良图片
cmd = "main.py sort --input-dir ../workspace/data_src/aligned"
else:
cmd = "main.py sort --input-dir ../workspace/data_dst/aligned "
!python $cmd
上述针对src视频的操作就完成了,将代码中src改为dst,进行上述相同操作,完成针对dst视频的提取与排序。
#@title 开始提取
target = "dst" #@param ["src","dst"]
%cd /content/drive/My Drive/DeepFaceLab/DeepFaceLab_Colab
if target=="src":
!python main.py videoed extract-video --input-file ../workspace/data_src.mp4 --output-dir ../workspace/data_src/
!python main.py extract --input-dir ../workspace/data_src --output-dir ../workspace/data_src/aligned --detector s3fd
!python main.py util --input-dir ../workspace/data_src/aligned --pack-faceset
else:
!python main.py videoed extract-video --input-file ../workspace/data_dst.mp4 --output-dir ../workspace/data_dst/
!python main.py extract --input-dir ../workspace/data_dst --output-dir ../workspace/data_dst/aligned --detector s3fd --output-debug
!python main.py util --input-dir ../workspace/data_dst/aligned --pack-faceset
#@title 开始排序
target = "dst" #@param ["src","dst"]
if target=="src":
#Src排序,可以通过谷歌云盘查看结果,删除不良图片
cmd = "main.py sort --input-dir ../workspace/data_src/aligned"
else:
cmd = "main.py sort --input-dir ../workspace/data_dst/aligned "
!python $cmd
5.然后开始训练模型,就一路默认运行下去就好了。此处训练的是”SAEHD"这个。
#@title 开始训练
Model = "SAEHD" #@param ["SAEHD","Quick96"]
%cd "/content/drive/My Drive/DeepFaceLab/DeepFaceLab_Colab/"
cmd = "main.py train --training-data-src-dir ../workspace/data_src/aligned --training-data-dst-dir ../workspace/data_dst/aligned --model-dir ../workspace/model --model "+Model+" --no-preview"
!python $cmd
想要停止的时候按回车就可以了,如果点enter停不下来就点左边的小黑圆运行按钮强行停下好了。
训练过程中也可以点开图片看一下训练过程中的效果
6.训练完成后将生成的图片转换一下,模型要选择和自己训练时一致的。
#@title 开始转换图片
Model = "SAEHD" #@param ["SAEHD", "Quick96"]
%cd "/content/drive/My Drive/DeepFaceLab/DeepFaceLab_Colab/"
cmd = " main.py merge --output-mask-dir ../workspace/data_dst/merged_mask --input-dir ../workspace/data_dst --output-dir ../workspace/data_dst/merged --aligned-dir ../workspace/data_dst/aligned --model-dir ../workspace/model --model " + Model
!python $cmd
然后就生成很多很多图。例如下述样子的。
merged文件夹下的
merged_mask文件夹下的
data_dst文件夹下处理前的
data_src文件夹下的与data_dst中的类似,只是换了另外的人的。
7.然后将生成的换脸图片转换为视频。
#@title 开始图片转视频
!python main.py videoed video-from-sequence --input-dir ../workspace/data_dst/merged --output-file ../workspace/result.mp4 --reference-file ../workspace/data_dst.mp4 --include-audio
!python main.py videoed video-from-sequence --input-dir ../workspace/data_dst/merged_mask --output-file ../workspace/result_mask.mp4 --reference-file ../workspace/data_dst.mp4 --include-audio --lossless
完成之后便生成结果视频了,下载下来看一下,加上原始的素材视频共有如下四个视频结果
data_dst(原始1)
data_src(原始2)
result_mask
result 换脸完成的视频结果
以上实验就完成了,具体代码细节我还没有仔细研究,大家有什么建议和指导欢迎在评论中留言哦^-^。