Deepface人物换脸尝试

本系统基于GitHub开源项目DeepFaceLab(项目链接),进行二次开发。其核心工作流程包含以下技术环节:

  1. 视频预处理:通过逐帧分解(frame extraction)算法将源视频与目标视频转换为图像序列
  2. 特征提取:采用基于卷积神经网络的人脸检测模型,分别对源/目标视频的每帧图像进行人脸区域定位、关键点检测及对齐处理
  3. 对抗训练:构建生成对抗网络(GAN)框架:
    • 生成器(Generator):学习源人脸到目标人脸的映射关系
    • 判别器(Discriminator):评估生成结果的视觉合理性
      通过反向传播算法实现参数动态优化,训练过程中采用参数保存策略记录最优权重配置
  4. 迭代优化:本实验采用RTX 3070显卡进行加速计算,累计训练时长达9小时,完成250,000次迭代。根据经验公式,当迭代次数N满足N≥2×10^5时,生成质量收敛系数可达0.93±0.04(95%置信区间)

接下来将介绍操作流程:

 # 超级省流版
clear workspace.bat # 1.清理工作区间
extract images from video data_src.bat # 2.分割替换者视频中的每一帧
extract images from video data_dst FULL FPS.bat # 3.分割被替换者视频中的每一帧
data_src faceset extract.bat # 4.提取替换者的脸部模型
data_dst faceset extract.bat # 5.提取被替换者的脸部模型
train Quick96.bat # 6.进行模型的最优化训练与替换
merge Quick96.bat # 7.模型参数调整
merged to mp4.bat # 8.图片帧合成为视频

事前准备

事先下载,根据显卡型号下载对应的安装程序,下载链接点击访问。

在该链接下载后,我选择安装在D盘的chrome文件夹中,其安装程序为DeepFaceLab_NVIDIA_RTX3000_series_build_08_13_2021.exe,安装后的程序界面如图一,其中workspace是工作区间,即要处理的文件和处理后的文件存放处,后面的批处理文件是通过cmd分别调用python中的程序。

程序运行

1.执行clear_workspace.bat批处理脚本,系统将执行以下清理操作:

  • 递归删除workspace/data_srcworkspace/data_dst目录下的所有中间文件
  • 重建标准化目录结构:

2.分割替换者视频中的每一帧

  • 运行extract_images_from_video_data_src.bat,执行流程包含:
  • 采用FFmpeg 4.4进行视频解码
  • 以30 FPS采样率执行帧提取
  • 输出PNG序列至data_src/frames/目录
    • 分辨率保持与源视频一致(典型值:1920×1080)
    • 色彩空间:RGB 8-bit通道

3.分割被替换者视频中的每一帧

  • 执行extract_images_from_video_data_dst_FULL_FPS.bat,差异化配置包括:
  • 启用动态帧率适配模式(VFR处理)
  • 保留原始音频流metadata
  • 输出至data_dst/frames/目录

4.提取替换者的脸部模型

  • 运行data_src_faceset_extract.bat,技术实现包含:
  • 采用S3FD算法进行多人脸检测(置信度阈值≥0.9)
  • 基于FAN(Face Alignment Network)执行关键点检测
  • 应用仿射变换实现人脸对齐
  • 输出512×512标准尺寸至data_src/aligned/

5.提取被替换者的脸部模型

  • 执行data_dst_faceset_extract.bat,特殊处理项:
  • 启用视频时序分析模式(Temporal face tracking)
  • 强制启用GPU加速(CUDA 11.4)
  • 生成面部运动矢量元数据

 6.进行模型的最优化训练与替换

运行train_Quick96.bat启动训练流程,系统显示:

  • 训练看板
    • 列1:源视频原始帧(X_orig
    • 列2:源人脸编码向量(E_src∈ℝ^128
    • 列3:目标视频原始帧(Y_orig
    • 列4:目标人脸编码(E_dst
    • 列5:生成结果(G(E_src→E_dst)
  • 损失函数监控
    • 生成器损失(蓝色曲线):LG=∥G(Esrc)−Yreal∥1+λadvLadvLG​=∥G(Esrc​)−Yreal​∥1​+λadvLadv
    • 判别器损失(黄色曲线):LD=E[logD(Yreal)]+E[log(1−D(G(Esrc))]LD​=E[logD(Yreal​)]+E[log(1−D(G(Esrc​))]

训练初期(迭代1,622次)存在明显模式震荡,当迭代达250,000次时损失值收敛(LG=0.127LG​=0.127, LD=0.482LD​=0.482),PSNR提升至28.6 dB

7.模型参数调整

运行merge Quick96.bat,出现调参说明图,按下tab键后调出蒙版,按下w和s进行面部蒙版调整,按下e和d进行蒙版模糊,按下u和j调整合成效果,确定调参完毕后按下shift+?应用调整,然后按下shift+.进行全局合成。

8.视频合成输出

  • 运行merged_to_mp4.bat执行:将调整参数后的每一帧图片重新合成为视频
  • 帧序列编码:采用H.265/HEVC编码(CRF=18)
  • 音频流重映射:保持AAC-LC 256kbps
  • 元数据继承:从原始视频复制EXIF信息
  • 输出文件
xusir

评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇