faceswap深度学习AI实现视频换脸详解
給大家介紹最近超級(jí)火的黑科技應(yīng)用deepfake,這是一個(gè)實(shí)現(xiàn)圖片和視頻換臉的app。前段時(shí)間神奇女俠加爾蓋朵的臉被換到了愛情動(dòng)作片上,233333。我們這里將會(huì)從github項(xiàng)目faceswap開始一步一步實(shí)現(xiàn)一個(gè)視頻換臉的教程。
注意:
本技術(shù)存在一定的使用風(fēng)險(xiǎn),本教程僅做技術(shù)交流,請(qǐng)不要用在其他不應(yīng)該被使用的地方。
技術(shù)分析
faceswap?項(xiàng)目是一個(gè)學(xué)習(xí)重建臉部特征的深度學(xué)習(xí)算法。你給它一堆的圖片,它學(xué)習(xí)幾個(gè)小時(shí)后,通過分辨哪些是合成的圖片最終。但是它并不是僅僅把相似的圖片替換,而是通過對(duì)不同的表情進(jìn)行學(xué)習(xí)分析,最后可以對(duì)給出的圖片進(jìn)行模型替換達(dá)到以假亂真的效果。詳細(xì)分析可參考Reddit。
假設(shè)你可以連續(xù)12小時(shí)盯著一個(gè)人看,觀察他的表情并記在大腦里面。然后他跟你說畫個(gè)我微笑的樣子,悲傷的樣子,你瞬間就可以完成這個(gè)要求并且能夠達(dá)到高清的圖片效果。這就是深度學(xué)習(xí)的威力。
?
換臉針對(duì)訓(xùn)練的是臉部特征,因此對(duì)于輸入的圖片應(yīng)該也是只有臉部的圖片,所以如果是非臉部的圖片需要提取臉部再來進(jìn)行替換,這也是后面一開始出錯(cuò)的原因。
?
AI換臉詳細(xì)步驟
拷貝項(xiàng)目到本地并開始訓(xùn)練模型
首先需要安裝git,使用git clone拷貝faceswap項(xiàng)目到本地。從本站上傳的文件下載測(cè)試數(shù)據(jù),faceswap項(xiàng)目地址https://github.com/deepfakes/faceswap
?
git clone https://github.com/deepfakes/faceswap cd faceswap pip install -r requirements.txt wget https://www.bobobk.com/wp-content/uploads/2019/01/input.zip unzip input.zip?
解壓后可以看到目錄下有了input_A和input_B訓(xùn)練數(shù)據(jù)文件夾。
由于訓(xùn)練耗時(shí)較長(zhǎng),如果GPU不強(qiáng)的話會(huì)更久,建議使用screen運(yùn)行,本教程訓(xùn)練使用GTX1080ti訓(xùn)練。代碼如下:
screen -S faceswap python faceswap.py train模型將會(huì)保存在model文件夾下。這里我運(yùn)行到損失函數(shù)小于0.03就沒有繼續(xù)訓(xùn)練了。
?
輸入文件準(zhǔn)備
模型訓(xùn)練好了就是大家喜聞樂見的換臉環(huán)節(jié)了,由于我們的測(cè)試數(shù)據(jù)是川普和尼古拉斯凱奇,所以首先我們找一張最新的一小段視頻。視頻來源https://www.youtube.com/watch?v=S73swRzxs8Y,由于模型只是用來進(jìn)行圖片替換的,這里需要首先將視頻轉(zhuǎn)換為圖片,項(xiàng)目文件中toos.py可以進(jìn)行此項(xiàng)工作,用法:
?
mkdir input mkdir outputpython tools.py effmpeg -i cage.mp4 -o input -s 00:0148 -e 00:0156 ####視頻1分48秒可以到1分56秒結(jié)束。?
運(yùn)行失敗,為什么,因?yàn)闆]有安裝FFmpeg,其中一個(gè)功能就是將視頻里面的圖片提取出來,圖片合成會(huì)視頻。安裝可看https://cloud.tencent.com/developer/article/1027379,這里直接給出centos7安裝代碼
yum install -y vim yum install -y epel-release rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7 yum repolist rpm --import http://li.nux.ro/download/nux/RPM-GPG-KEY-nux.ro rpm -Uvh http://li.nux.ro/download/nux/dextop/el7/x86_64/nux-dextop-release-0-1.el7.nux.noarch.rpm yum repolist yum update -y yum install -y ffmpeg ffmpeg -version
安裝后就可以了,切割后的圖片存在于input文件夾中,接下來就是轉(zhuǎn)換了。
運(yùn)行報(bào)錯(cuò)
python faceswap.py convert -i original -o modified?
?
?
原因是沒有比對(duì)的文件,想想也是,我們的輸入是一張人臉圖片,給的確實(shí)一整個(gè)電影的一幀,比對(duì)就是先把臉部給提取出來以用來替換,所以這里需要先做臉部比對(duì)。這在項(xiàng)目里就是使用extract命令(一開始我以為extract是解壓文件呢,233333)
把前面從視頻中提取的圖片文件進(jìn)行臉部提取,使用方法
python faceswap.py extract -i original -o input?
運(yùn)行訓(xùn)練好的模型換臉
繼續(xù)運(yùn)行convert命令
python faceswap.py convert -i input -o output可以看到已經(jīng)在逐步輸出換臉后的圖片,想想還有點(diǎn)小激動(dòng)呢。
?
?
將換臉后的圖片重新合成回視頻
代碼:
python tools.py effmpeg -i output -r input/cage.mp4 -o modified/cage.mp4 -a gen-vid生成的mp4在modified文件夾下,下載播放即可。播放時(shí)還真的是樂趣多多。
應(yīng)用
該技術(shù)自開發(fā)一來就有各種聲音,恐懼其威力,想想別人使用你的樣子發(fā)表一段根本不是你自己錄制的視頻是什么情景。
個(gè)人認(rèn)為這是一個(gè)非常好玩的東西,你可以把自己換到自己喜歡的角色身上,比如哈利波特什么的啊。想想就很有意思。像這篇文章作者把妻子換到節(jié)目主持人身上,他妻子得多激動(dòng),啊哈哈哈。
總結(jié)
本文一步一步地從模型訓(xùn)練,到視頻文件的處理,再到圖片換臉并重新根據(jù)原始視頻合成生成的視頻。是一個(gè)完整的使用faceswap 深度學(xué)習(xí)AI實(shí)現(xiàn)視頻換臉教程,理論上可以運(yùn)用于任何的視頻和想替換的人臉,只需要給與足夠的目標(biāo)模型和訓(xùn)練模型的圖片即可,這也是很多明星被換到小電影上的原因。
這項(xiàng)換臉技術(shù)相信會(huì)在未來產(chǎn)生大量好玩的視頻,應(yīng)用,敬請(qǐng)期待!!!
另:由于使用的是深度學(xué)習(xí),在訓(xùn)練模型上需要耗費(fèi)大量的計(jì)算資源,因此最好使用GU或者TPU訓(xùn)練較好。
?
轉(zhuǎn)載地址:https://www.bobobk.com/258.html
轉(zhuǎn)載于:https://www.cnblogs.com/taohuaya/p/10809217.html
總結(jié)
以上是生活随笔為你收集整理的faceswap深度学习AI实现视频换脸详解的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
 
                            
                        - 上一篇: 基础数据类型操作(一)——整型、字符串
- 下一篇: Quartz执行周期配置
