中文字幕理论片,69视频免费在线观看,亚洲成人app,国产1级毛片,刘涛最大尺度戏视频,欧美亚洲美女视频,2021韩国美女仙女屋vip视频

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費(fèi)電子書(shū)等14項(xiàng)超值服

開(kāi)通VIP
如何使用 Deepfakes 換臉

 

1. 獲取deepfakes工具包

git clone https://github.com/deepfakes/faceswap.git

 

2. 補(bǔ)齊依賴(lài)包:

pip install tqdm

pip install cv2

pip install opencv-contrib-python

pip install dlib

pip install keras

pip install tensorflow

pip install tensorflow-gpu(如機(jī)器帶有gpu

pip install face_recognition

 

3.收集樣本:

這里我選用的是新垣結(jié)衣的樣本,費(fèi)了好半天,下了100張圖片:

 

 

另外一個(gè)人的樣本是凱瑞穆里根,由于實(shí)在是找圖片麻煩,所以直接截取了《The Great Gatsby》里的視頻,然后用ffmpeg轉(zhuǎn)化為圖片,大概有70張的樣子。

 

3. 面部抓取

在收集完樣本后,使用 ./faceswap.py extract –i input_folder/ –o output_folder/ 命令對(duì)樣本圖片進(jìn)行面部抓取。

做這個(gè)的原因是因?yàn)槲覀冎饕P(guān)注的是換臉,所以只需要獲取臉部的特征,其他環(huán)境因素對(duì)換臉的影響并不大。

 

 

在面部抓取的過(guò)程完成后,我們可以得到所有臉部圖片。在此,我們可以人工篩選一下不合適的樣本(如下圖中的49_1.jpg),將之去除。

 

4. 面部檢測(cè)算法HOG

這里簡(jiǎn)單提一下臉部特征提取算法HOGHistogram of Oriented Gradient)。

嚴(yán)格來(lái)說(shuō),其實(shí)HOG是一個(gè)特征,是一種在計(jì)算機(jī)視覺(jué)和圖像處理中用來(lái)進(jìn)行物體檢測(cè)的特征描述因子。

HOG特征結(jié)合SVM分類(lèi)器已經(jīng)被廣泛應(yīng)用于圖像識(shí)別中。

 

此處臉部檢測(cè)的一個(gè)簡(jiǎn)單過(guò)程如下:

a.     首先使用黑白來(lái)表示一個(gè)圖片,以此簡(jiǎn)化這個(gè)過(guò)程(因?yàn)槲覀儾⒉恍枰伾珨?shù)據(jù)來(lái)檢測(cè)一個(gè)臉部)。

      

 

b.     然后依次掃描圖片上的每一個(gè)像素點(diǎn) 。對(duì)每個(gè)像素點(diǎn),找到與它直接相鄰的像素點(diǎn)。然后找出這個(gè)點(diǎn)周?chē)刀茸兓姆较颉?/span>

例如下圖所示,這個(gè)點(diǎn)周?chē)擅鞯桨档姆较驗(yàn)閺淖笙陆堑接疑辖?,所以它的梯度方向?yàn)槿缦录^所示

 

           

c.     在上一個(gè)步驟完成后,一個(gè)圖片里所有的像素點(diǎn)均可由一個(gè)對(duì)應(yīng)的梯度表示。這些箭頭表示了整個(gè)圖片里由明到暗的一個(gè)趨勢(shì)。

如果我們直接分析這些像素點(diǎn)(也就是按色彩的方式分析),那么那些非常亮的點(diǎn)和非常暗的點(diǎn),它們的值(RGB值)肯定有非常大的差別。

但是因?yàn)槲覀冊(cè)谶@只關(guān)注明亮度改變的方向,所以有有色圖和黑白圖最終得到的結(jié)果都是一樣的,這樣可以極大簡(jiǎn)化問(wèn)題解決的過(guò)程。

 

 

d.     但是保存所有這些梯度會(huì)是一個(gè)較為消耗存儲(chǔ)的過(guò)程,所以我們將整個(gè)圖片分成多個(gè)小方塊,并且計(jì)算里面有多少不同的梯度。

然后我們使用相同梯度最多的方向來(lái)表示這個(gè)小方塊的梯度方向。這樣可以將原圖片轉(zhuǎn)化為一個(gè)非常簡(jiǎn)單的表現(xiàn)方式,并以一種較簡(jiǎn)單的方法抓取到面部的基本結(jié)構(gòu)。

 

 

 

e.     當(dāng)計(jì)算到一個(gè)圖片的HOG特征后,可以使用這個(gè)特征來(lái)對(duì)通過(guò)訓(xùn)練大量圖片得出的HOG特征進(jìn)行比對(duì)。如果相似度超過(guò)某個(gè)閾值,則認(rèn)為面部被檢測(cè)到。

 

 

  

4. 開(kāi)始訓(xùn)練

在提取兩個(gè)人臉的面部信息后,直接使用下面命令開(kāi)始進(jìn)行模型的訓(xùn)練:

./faceswap.py train -A faceA_folder/ -B faceB_folder  -m models/

 

其中 -m 指定被保存的models所在的文件夾。也可以在命令里加上-p 參數(shù)開(kāi)啟preview模式。

 

在訓(xùn)練過(guò)程中,可以隨時(shí)鍵入Enter停止訓(xùn)練,模型會(huì)保存在目標(biāo)文件夾。

訓(xùn)練使用的深度學(xué)習(xí)框架是tensorflow,它提供了保存checkpoint 的機(jī)制(當(dāng)然代碼里必須用上)。

在停止訓(xùn)練后,以后也可以隨時(shí)使用上面的命令讀取之前訓(xùn)練得出的權(quán)重參數(shù),并繼續(xù)訓(xùn)練。

    

 

 

5. 轉(zhuǎn)換人臉

在訓(xùn)練完模型后(損失值較低),可以使用以下命令對(duì)目標(biāo)圖進(jìn)行換臉:

./faceswap.py –i input_images_folder/ -o output_images_folder/ -m models/

 

此處的例子是找的一個(gè)視頻,所以我們可以先用下面的命令將一個(gè)視頻以一個(gè)固定頻率轉(zhuǎn)化為圖片:

ffmpeg –i video.mp4 output/video-frame-%d.png

 

然后執(zhí)行轉(zhuǎn)換人臉操作。最后將轉(zhuǎn)換后的人臉圖片集合,合成一個(gè)視頻:

ffmpeg –i video-frame-%0d.png -c:v libx264 -vf “fps=25, format=yuv420p” out.mp4

 

下面是兩個(gè)換臉圖(樣本A 110張圖片,樣本B 70張圖片,訓(xùn)練時(shí)間6小時(shí)):

 

  

 

效果不咋樣…  建議大家可以增大樣本量,并延長(zhǎng)訓(xùn)練時(shí)間。

 

6. 轉(zhuǎn)換人臉的過(guò)程

下面簡(jiǎn)單的聊一下轉(zhuǎn)換人臉的過(guò)程。

這里用到了AutoEncoder(一種卷積神經(jīng)網(wǎng)絡(luò)),它會(huì)根據(jù)輸入圖片,重構(gòu)這個(gè)圖片(也就是根據(jù)這個(gè)圖片再生成這個(gè)圖片):

 

 

這里 AutoEncoder模型做的是:首先使用encoder將一個(gè)圖片進(jìn)行處理(卷積神經(jīng)網(wǎng)絡(luò)抽取特征),以一種壓縮的方式來(lái)表示這個(gè)圖片。然后decoder將這個(gè)圖片還原。

 

具體在deepfakes中,它用了一個(gè)encoder和兩個(gè)decoder。在訓(xùn)練的部分,其實(shí)它訓(xùn)練了兩個(gè)神經(jīng)網(wǎng)絡(luò),兩個(gè)神經(jīng)網(wǎng)絡(luò)都共用一個(gè)encoder,但是均有不同的decoder。

首先encoder將一個(gè)圖片轉(zhuǎn)化為面部特征(通過(guò)卷積神經(jīng)網(wǎng)絡(luò)抽取面部的細(xì)節(jié)特征)。然后decoder 通過(guò)這個(gè)面部特征數(shù)據(jù),將圖片還原。

這里有一個(gè)error functionloss function)來(lái)判斷這個(gè)轉(zhuǎn)換的好壞程度,模型訓(xùn)練的過(guò)程就是最小化這個(gè)loss functionvalue)的過(guò)程。

 

第一個(gè)網(wǎng)絡(luò)只訓(xùn)練圖片A,第二個(gè)網(wǎng)絡(luò)只訓(xùn)練圖片Bencoder學(xué)習(xí)如何將一個(gè)圖片轉(zhuǎn)化為面部特征值。

decoder A用于學(xué)習(xí)如何通過(guò)面部特征值重構(gòu)圖片A,decoder B用于學(xué)習(xí)如何通過(guò)面部特征值重構(gòu)圖片B。

           

    

 

所以在訓(xùn)練時(shí),我們會(huì)將兩個(gè)圖片均送入同一個(gè)encoder,但是用兩個(gè)不同的decoder還原圖片。

這樣最后我們用圖片B獲取到的臉,使用encoder抽取特征,再使用Adecoder還原,便會(huì)得到A的臉,B的表情。

  

本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶(hù)發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)。
打開(kāi)APP,閱讀全文并永久保存 查看更多類(lèi)似文章
猜你喜歡
類(lèi)似文章
BASE64工具類(lèi)
大模型綜述來(lái)了!一文帶你理清全球AI巨頭的大模型進(jìn)化史
DL之AE:自編碼器AutoEncoder的簡(jiǎn)介、應(yīng)用、經(jīng)典案例之詳細(xì)攻略
預(yù)訓(xùn)練模型,NLP的版本答案!
兩篇軟文帶領(lǐng)新手小白了解Transformer的前世今生(二)
圖片與二進(jìn)制之間的轉(zhuǎn)換
更多類(lèi)似文章 >>
生活服務(wù)
熱點(diǎn)新聞
分享 收藏 導(dǎo)長(zhǎng)圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服