AI是今年一个大热的话题,各种AI的应用也越来越多,关注的人也越来越多,让AI来助力各行各业。AI实现视频换脸的方案也越来越多,所以博主挑了其中一个方向来学习,介绍。博主选择的是 faceswap,一个开源的视频换脸模型。
Faceswap 使用深度学习算法和人脸识别技术,可以将一个人的面部表情、眼睛、嘴巴等特征从一张照片或视频中提取出来,并将其与另一个人的面部特征进行匹配。利用深度学习算法和人脸识别技术,获取正常人脸照片、扭曲变换人脸照片、Encoder编码向量、Decoder解码向量、还原正常人脸照片等步骤,实现换脸效果。
下边是官方的一些介绍:
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为例配置开发环境。
系统:win10/win11
canda: minicaonda
python: python3.10.X
GPU: NVIDIA GeForce GTX 1050 Ti / NVIDIA Quadro T2000
学习地址: conda安装简明教程(基于miniconda和Windows)
下载地址:Latest Miniconda installer links by Python version
国内镜像地址: 清华大学开源软件镜像开源地址
注意:下载的时候注意命名规则,镜像地址尤为注意,在官方下载的时候还是比较明了的。下边是官方地址的一些介绍:
Windows installers&
Python version | Name | Size | SHA256 hash |
---|---|---|---|
Python 3.11 | 80.5 MiB |
| |
Python 3.10 | 76.6 MiB |
| |
Python 3.9 | 77.1 MiB |
| |
Python 3.8 | 78.1 MiB |
|
镜像地址的下载:因为有 各种系统的,要注意后缀的区别,选择对应系统的,windows选择 :Miniconda3-py310_23.9.0-0-Windows-x86_64.exe 与这个类似, py310代表 python3.10,x86_64代表windows 64位。
一路执行就可以。
在注册界面,可以选择注册系统配置环境。
随后根据自己的安装路径配置系统环境变量,有三个路径需要配置:
#%PATH%为安装目录的父地址,例如博主 %PATH% = E:\ProgramData
%PATH%\miniconda3
%PATH%\miniconda3\Scripts
%PATH%\miniconda3\Library\bin
配置如下图所示:
博主尝使用的终端是 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))快捷方式 右键属性->快捷方式,把这段文字复制出来然后替换即可。
效果如下图所示:
随后需要使用 Anaconda Prompt的时候,在 windows terminal打开即可。
python
,能看到对应的verseion,例如 3.10.13git 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
其中:在 setup.py这一步
%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
1.视频准备:视频准备 src,tar 两个视频,其中 src是 提供被替换人脸素材视频,tar 提供替换人脸素材视频。
2.人脸特征提取
在打开的UI界面,选择 Extract,执行。
其实需要配置的就两个地方,Data -> (Input Dir) / (Output Dir)和 Plugins选择对应的插件。博主这里选择了 Detector -> Cv2-Dnn 和 Aligner -> Cv2-Dnn,也可以选择其他插件,等待不过需要等待插件下载。
说明:
Input Dir : 人脸视频或者文件夹
Output Dir: 输出的人脸图片特征文件夹
在这里博主创建 target: src_in,src_out,tar_in,tar_out,
src_in: 被替换人脸视频输入文件夹
src_out: 被替换人脸视频特征输出文件夹
tar_int: 替换人脸视频输入文件夹
tar_out:替换人脸视频输出文件夹
分别提取两次
执行如下图所示:
1.文件夹准备:创建 mod_out,tim_out
mod_out:模型输出文件夹
tim_out:模板输出文件夹
2.路径配置
如下图所示:
路径配置好之后,选择 Train按钮开始训练,等待训练完成即可。
注意检查GPU工作情况,有可能出现GPU不工作的现象。如果不工作可以根据提示,找对应的问题。在下方的错误异常解决可能有对应的方案。
1.文件夹准备:创建 video_out文件夹,存放,生成视频。
Input_dir -> src_in的视频,Output Dir 选择 video_out, Model Dir选择 mod_out文件夹
其中配置选项如下:
2.按下按钮等待视频输出完成。
视频输出效果如下:
因为训练等待时间太久,训练中断了,这是训练2W次的效果,训练时间还是太短,机器还在一直训练,随后会po出训练完成之后的对比。
错误警告:
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) file 和 PowerShell,在这里博主选择了 Powershell,管理员权限打开,输入
New-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\FileSystem" `
-Name "LongPathsEnabled" -Value 1 -PropertyType DWORD -Force
重启电脑。
根据脚本提示
#执行如下命令激活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')
解决方案:
执行
activate faceswap
#根据安装目录 activate.bat 只一个单独的执行脚本
==> 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] 某个内部错误阻止驱动程序执行指定的操作。驱动程序的状态可疑,
应用程序应该终止。
解决方案:
# 注意是不是在开始的时候选择了
Enable DirectML Support? [y/N] y
# DirectML 是支持A卡的
pip install tensorflow==2.10.1
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% GPU 0% when extracting and training)
解决方案二:检查GPU支持浮点运算列表:GPU-tensorflow匹配列表,CUDA Toolkit Archive,cuda-gpus-支持列表,注意匹配即可。
# https://github.com/deepfakes/faceswap/tree/v2.10.0
如果下载错误分支,会提示python版本不匹配,需要的python版本回贴出来,需要自己切换版本。
弄完这一套其实收获还是有很多的,因为手头GPU卡的限制,训练速度有一点慢,效果也不尽如人意。
还有好多未涉及的地方,命令行操作,各种算法模型的尝试,对外接口的调用,但目前看想要到达工业水准其实还是差点,不能够实时转换,如果有行文错误的地方欢迎指正。以后有机会要进行更加深入的学习了解。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。