使用colab运行deepface实现换脸视频示例流程

代码参考使用的是来自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 换脸完成的视频结果

以上实验就完成了,具体代码细节我还没有仔细研究,大家有什么建议和指导欢迎在评论中留言哦^-^。

  • 7
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值