前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >AI实现视频换脸

AI实现视频换脸

原创
作者头像
何其不顾四月天
发布2023-12-21 23:45:47
6740
发布2023-12-21 23:45:47
举报
文章被收录于专栏:四月天的专栏

前言

AI是今年一个大热的话题,各种AI的应用也越来越多,关注的人也越来越多,让AI来助力各行各业。AI实现视频换脸的方案也越来越多,所以博主挑了其中一个方向来学习,介绍。博主选择的是 faceswap,一个开源的视频换脸模型。

faceswap介绍

Faceswap 使用深度学习算法和人脸识别技术,可以将一个人的面部表情、眼睛、嘴巴等特征从一张照片或视频中提取出来,并将其与另一个人的面部特征进行匹配。利用深度学习算法和人脸识别技术,获取正常人脸照片、扭曲变换人脸照片、Encoder编码向量、Decoder解码向量、还原正常人脸照片等步骤,实现换脸效果。

下边是官方的一些介绍:

代码语言:txt
复制
FaceSwap is a tool that utilizes deep learning to recognize and swap faces in pictures and videos.
Faceswap is the leading free and Open Source multi-platform Deepfakes software.owered by Tensorflow, Keras and Python; Faceswap will run on Windows, macOS and Linux.

官网faceswap

github:faceswap

QA: FaceSwap Forums

环境准备

Faceswap支持 windows,linux,macOS,主要语言的是python.博主用了windows系统,就以windows为例配置开发环境。

代码语言:shell
复制
系统:win10/win11
canda: minicaonda
python: python3.10.X
GPU: NVIDIA GeForce GTX 1050 Ti / NVIDIA Quadro T2000

conda配置

学习地址: conda安装简明教程(基于miniconda和Windows)

下载

下载地址:Latest Miniconda installer links by Python version

国内镜像地址: 清华大学开源软件镜像开源地址

注意:下载的时候注意命名规则,镜像地址尤为注意,在官方下载的时候还是比较明了的。下边是官方地址的一些介绍:

Windows installers&

Python version

Name

Size

SHA256 hash

Python 3.11

80.5 MiB

c9b32faa9262828702334b16bcb5b53556e630d54e5127f5c36c7ba7ed43179a

Python 3.10

76.6 MiB

f242f98378691496851f78beaf466797fb20251ba5092840c794503594d37726

Python 3.9

77.1 MiB

3bffceaf97f2945d6ff38d51c946b5e4ad161096e7734c34e98a9b38092a0ab5

Python 3.8

78.1 MiB

74dff3c5e867dffa74a34eca1c4daac550ba42f9229547b37ae4a706c58ca775

镜像地址的下载:因为有 各种系统的,要注意后缀的区别,选择对应系统的,windows选择 :Miniconda3-py310_23.9.0-0-Windows-x86_64.exe 与这个类似, py310代表 python3.10x86_64代表windows 64位

安装

一路执行就可以。

在注册界面,可以选择注册系统配置环境。

随后根据自己的安装路径配置系统环境变量,有三个路径需要配置:

代码语言:shell
复制
#%PATH%为安装目录的父地址,例如博主 %PATH% = E:\ProgramData
%PATH%\miniconda3
%PATH%\miniconda3\Scripts
%PATH%\miniconda3\Library\bin

配置如下图所示:

环境变量配置
环境变量配置
terminal配置

博主尝使用的终端是 windows terminal,因为miniconda默认使用的配置是 CMD,界面显示丑陋且信息不全,所有手动增加了terminal 配置页。

windows terminal,打开下拉框选择 设置添加新配置文件复制CMD,然后修改命令行为 %windir%\System32\cmd.exe "/K" D:\ProgramData\miniconda3\Scripts\activate.bat D:\ProgramData\miniconda3,这段字符在(Anaconda Prompt (miniconda3))快捷方式 右键属性->快捷方式,把这段文字复制出来然后替换即可。

效果如下图所示:

windows terminal options
windows terminal options
快捷方式如图
快捷方式如图
Anaconda Prompt (miniconda3)
Anaconda Prompt (miniconda3)

随后需要使用 Anaconda Prompt的时候,在 windows terminal打开即可。

faceswap 虚拟环境创建
  1. windows terminal选择Anaconda Prompt打开进入默认 base环境。
  2. 获取python版本: 执行 python,能看到对应的verseion,例如 3.10.13
  3. 执行 conda create -n faceswap python=3.10.13,注意python版本一致,否则会重新下载新的python
  4. 切换环境: conda activate faceswap
activate faceswap
activate faceswap

编译执行

编译

代码语言:shell
复制
git clone https://github.com/deepfakes/faceswap.git --depth 1
#注意:深度设置,如果不设置会文件过大,下载速度很慢
#然后进去 conda faceswap环境
#如果有 ·chcp 65001· 执行提示,则执行。否则不执行
#如下图所示
chcp 65001
python.exe D:\9-code\faceswap\setup.py
python.exe D:\9-code\faceswap\faceswap.py gui
chcp 65001
chcp 65001

其中:在 setup.py这一步

代码语言:shell
复制
%PATH%\faceswap\setup.py:18: DeprecationWarning: pkg_resources is deprecated as an API. See https://setuptools.pypa.io/en/latest/pkg_resources.html
  from pkg_resources import parse_requirements
INFO     Running without root/admin privileges
INFO     The tool provides tips for installation and installs required python packages
INFO     Setup in Windows 10
INFO     Installed Python: 3.10.13 64bit
INFO     Running in Conda
INFO     Running in a Virtual Environment
INFO     Encoding: cp936
INFO     Installed pip: 23.3.1
INFO     DirectML support:
         If you are using an AMD or Intel GPU, then select 'yes'.
         Nvidia users should answer 'no'.
Enable DirectML Support? [y/N] N
Enable  Docker? [y/N] N
INFO     Docker Disabled
Enable  CUDA? [Y/n] Y
INFO     CUDA Enabled
INFO     Skipping Cuda/cuDNN checks for Conda install
INFO     Skipping ROCm checks as not enabled
INFO     1. Install PIP requirements
         You may want to execute `chcp 65001` in cmd line
         to fix Unicode issues on Windows when installing dependencies
INFO     Faceswap config written to: D:\9-code\faceswap\config\.faceswap
Please ensure your System Dependencies are met
Continue? [y/N] Y
INFO     Installing Required Python Packages. This may take some time...
INFO     Installing Required Conda Packages. This may take some time...
INFO     All python3 dependencies are met.
         You are good to go.

         Enter:  'python faceswap.py -h' to see the options
                 'python faceswap.py gui' to launch the GUI

如果有最后的提示,证明setup成功。然后执行 python.exe D:\9-code\faceswap\faceswap.py gui

Extract(人脸提取)

1.视频准备:视频准备 srctar 两个视频,其中 src是 提供被替换人脸素材视频,tar 提供替换人脸素材视频。

2.人脸特征提取

在打开的UI界面,选择 Extract,执行。

其实需要配置的就两个地方,Data -> (Input Dir) / (Output Dir)Plugins选择对应的插件。博主这里选择了 Detector -> Cv2-DnnAligner -> Cv2-Dnn,也可以选择其他插件,等待不过需要等待插件下载

说明:

代码语言:wiki
复制
Input Dir : 人脸视频或者文件夹
Output Dir: 输出的人脸图片特征文件夹

在这里博主创建 target: src_in,src_outtar_in,tar_out,

代码语言:wiki
复制
src_in:   被替换人脸视频输入文件夹
src_out: 被替换人脸视频特征输出文件夹
tar_int: 替换人脸视频输入文件夹
tar_out:替换人脸视频输出文件夹

分别提取两次

执行如下图所示:

提取
提取

Train(训练)

1.文件夹准备:创建 mod_outtim_out

代码语言:wiki
复制
mod_out:模型输出文件夹
tim_out:模板输出文件夹

2.路径配置

如下图所示:

路径配置-1
路径配置-1
路径配置-2
路径配置-2

路径配置好之后,选择 Train按钮开始训练,等待训练完成即可。

注意检查GPU工作情况,有可能出现GPU不工作的现象。如果不工作可以根据提示,找对应的问题。在下方的错误异常解决可能有对应的方案。

GPU在工作
GPU在工作

Convert(转换)

1.文件夹准备:创建 video_out文件夹,存放,生成视频。

Input_dir -> src_in的视频,Output Dir 选择 video_outModel Dir选择 mod_out文件夹

其中配置选项如下:

生成图
生成图

2.按下按钮等待视频输出完成。

视频输出效果如下:

src_in
src_in
out_in
out_in
video_out
video_out

因为训练等待时间太久,训练中断了,这是训练2W次的效果,训练时间还是太短,机器还在一直训练,随后会po出训练完成之后的对比。

异常错误处理

  • windows长路径支持

错误警告:

代码语言:shell
复制
ERROR: Could not install packages due to an OSError: [Errno 2] No such file or directory: 'C:\\Users\\wq\\AppData\\Local\\Packages\\PythonSoftwareFoundation.Python.3.10_qbz5n2kfra8p0\\LocalCache\\local-packages\\Python310\\site-packages\\tensorflow\\include\\external\\com_github_grpc_grpc\\src\\core\\ext\\filters\\client_channel\\lb_policy\\grpclb\\client_load_reporting_filter.h'
HINT: This error might have occurred since this system does not have Windows Long Path support enabled. You can find information on how to enable this at https://pip.pypa.io/warnings/enable-long-paths

错误修复:

根据上文提示打开 https://pip.pypa.io/warnings/enable-long-paths ,在打开页面会看到两个解决方案 Registry(.reg) filePowerShell,在这里博主选择了 Powershell,管理员权限打开,输入

代码语言:shell
复制
New-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\FileSystem" `
-Name "LongPathsEnabled" -Value 1 -PropertyType DWORD -Force

重启电脑。

  • 激活环境错误

根据脚本提示

代码语言:shell
复制
#执行如下命令激活faceswap环境
#      
# To activate this environment, use
#          
#     $ conda activate faceswap
#           
# To deactivate an active environment, use
#          
#     $ conda deactivate   
# 如果你执行 conda activate faceswap
usage: conda-script.py [-h] [-v] [--no-plugins] [-V] COMMAND ...
conda-script.py: error: argument COMMAND: invalid choice: 'activate' (choose from 'clean', 'compare', 'config', 'create', 'info', 'init', 'install', 'list', 'notices', 'package', 'remove', 'uninstall', 'rename', 'run', 'search', 'update', 'upgrade', 'content-trust', 'doctor', 'repoquery', 'env')

解决方案:

执行

代码语言:shell
复制
activate faceswap
#根据安装目录 activate.bat 只一个单独的执行脚本
  • 警告: A newer version of conda exists
代码语言:shell
复制
==> WARNING: A newer version of conda exists. <==
  current version: 23.9.0
  latest version: 23.11.0

Please update conda by running

    $ conda update -n base -c defaults conda

Or to minimize the number of packages updated during conda update use

     conda install conda=23.11.0

解决方案:执行 conda update -n base -c defaults conda

  • 错误:OSError: [WinError -2005270496] 某个内部错误阻止驱动程序执行指定的操作。驱动程序的状态可疑, 应用程序应该终止。

解决方案:

代码语言:shell
复制
# 注意是不是在开始的时候选择了 
Enable DirectML Support? [y/N] y
# DirectML 是支持A卡的
  • 错误 WARNING[0m Couldn't install tensorflow<2.11.0,>=2.10.0 with pip. Please install this package manually
代码语言:shell
复制
pip install tensorflow==2.10.1
  • 错误: Unicode issues
代码语言:shell
复制
INFO     1. Install PIP requirements
         You may want to execute `chcp 65001` in cmd line
         to fix Unicode issues on Windows when installing dependencies

解决方案:需要手动在虚拟环境执行:chcp 65001,执行在上图所示。

  • 错误:CPU (100% )and GPU(0%)

解决方案一:[CPU 100% GPU 0% when extracting and training)

解决方案二:检查GPU支持浮点运算列表:GPU-tensorflow匹配列表CUDA Toolkit Archivecuda-gpus-支持列表,注意匹配即可。

  • 错误: python环境处理
代码语言:shell
复制
# https://github.com/deepfakes/faceswap/tree/v2.10.0
如果下载错误分支,会提示python版本不匹配,需要的python版本回贴出来,需要自己切换版本。

附言

弄完这一套其实收获还是有很多的,因为手头GPU卡的限制,训练速度有一点慢,效果也不尽如人意。

还有好多未涉及的地方,命令行操作,各种算法模型的尝试,对外接口的调用,但目前看想要到达工业水准其实还是差点,不能够实时转换,如果有行文错误的地方欢迎指正。以后有机会要进行更加深入的学习了解。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • faceswap介绍
  • 环境准备
    • conda配置
      • 下载
      • 安装
      • terminal配置
      • faceswap 虚拟环境创建
  • 编译执行
    • 编译
      • Extract(人脸提取)
        • Train(训练)
          • Convert(转换)
            • 异常错误处理
            • 附言
            相关产品与服务
            媒体 AI 处理
            媒体 AI 处理(Media Artificial Intelligence processing)基于腾讯云点播产品提供智能化的媒体内容审核、分析、识别能力,包含违禁检测,画面识别、语音转文字等功能。
            领券
            问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档