視頻換臉原理(初步認(rèn)識)——從數(shù)據(jù)獲取到視頻換臉整個流程

(一)獲取人臉數(shù)據(jù)

需要準(zhǔn)備圖片數(shù)據(jù):兩個不同的人臉,各種表情,數(shù)量越多越好,約1萬張以上會有比較好的替換效果。

一般采用的方法是從視頻中截取,操作如下:

首先下載視頻(本例用風(fēng)行播放器下載)。

剪切視頻片段(本例用愛剪輯)。

因為目的是為了截取人臉部,所以剪切的視頻片段很講究。

視頻分辨率要高清(否則截取的人臉像素太低);片段中目的人臉比較大、突出、最好就是只有他自己一個人鏡頭特寫的視頻片段。


從視頻中截取圖片(本例用Ffmpeg軟件)。

此時得到有目的人臉的一張張圖片。

然后,需要刪除不需要的圖片(如有非目的人臉的,這就是數(shù)據(jù)清洗)。

然后寫幾行代碼檢測圖片中的人臉并截?。ɡ肙penCV)。


檢測并截取的人臉(用于輸入到神經(jīng)網(wǎng)絡(luò)中訓(xùn)練提取特征)。

人臉替換的效果非常依賴于這些截取到的人臉圖片的質(zhì)量:

如果截取的人臉包含了過多的干擾部分,那么替換效果就很差。

一直重復(fù)前面的步驟,直到獲取足夠多的人臉(兩個需要互換的人臉)。


然后再寫幾行代碼修改人臉圖片的寬高為統(tǒng)一大小,如256x256;

因為輸入到神經(jīng)網(wǎng)絡(luò)中訓(xùn)練的圖片寬高需要一致。


(二)進行模型訓(xùn)練

接下來,開始進行漫長的訓(xùn)練:

一般需要,一萬張圖片,訓(xùn)練100萬次,才有比較好的替換效果;

我計算了一下時間,普通i7-PC,訓(xùn)練一次約44s,100萬次需要運行約1.2萬小時,約500天;玩不起(本例訓(xùn)練了1000次)。

深度學(xué)習(xí)漫長的訓(xùn)練過程;

本例代碼是利用深度學(xué)習(xí)框架keras(backend is TensorFlow)構(gòu)建CNN;

訓(xùn)練完成之后,得到換臉模型;


(三)進行視頻人臉替換

?接下來進行視頻人臉替換;

?通俗點說就是通過提取面部的特定結(jié)構(gòu),如眼睛、鼻子、嘴巴的位置,顴骨、下巴、臉頰的形狀;

?然后按照這些特征點做替換;

?前面訓(xùn)練的模型,已經(jīng)有了兩個不同的人臉的特征;

?就目前了解的信息來說,通過深度學(xué)習(xí)替換人臉這一技術(shù)相對于工業(yè)使用的人臉表情提取技術(shù),優(yōu)勢是大大降低了使用門檻,但是遠遠還做不到以假亂真的完美效果;


接下來,仍然使用愛剪輯工具,從一段視頻,如電影中截取用于替換人臉的一個視頻片段;

截取的視頻片段也是需要精心挑選的:需要有利于檢測到被替換的人臉。

例如,截取的視頻中同時出現(xiàn)在鏡頭中人臉太多、人臉太小等都不利于檢測。


再利用ffmpeg工具,把需要被替換人臉的視頻按原幀速截取成每一張圖片;

注意:一定要按原幀速截取,否則后面替換人臉后再合成視頻會失幀。


接下來,利用神經(jīng)網(wǎng)絡(luò)進行人臉替換。

輸入數(shù)據(jù):上一步截取的每一幀圖片;

輸出數(shù)據(jù):人臉被替換后的每一幀圖片;


簡單點說,替換原理如下:

1.從原圖片中,檢測到人臉(用OpenCV),截取人臉部分;

2.把截取的人臉部分(人臉圖片)輸入到神經(jīng)網(wǎng)絡(luò)進行替換,得到一個新的人臉(圖片);

3.再把新人臉(圖片)替換原圖片中的人臉;

4.然后,進行圖片“消邊”、模糊等圖片處理;因為原圖人臉和新人臉,雖然尺寸一致,

但畢竟不是同一張圖片,新圖片(人臉)替換到原圖片之后,會有明顯的“邊”,無法

完全融入到原圖中,所以需要處理;這是數(shù)字圖像處理技術(shù)了;

5.如此重復(fù),知道每一張圖片的人都替換完成;

從上面的人臉替換原理可以知道,換臉效果受到以下幾個因素的影響:

?1、從原圖片截取的人臉(圖片)不能有過多的干擾像素。最理想的是截取的僅僅只有面部。

?2、訓(xùn)練的模型效果要非常好。這受到訓(xùn)練數(shù)據(jù)(圖片)的質(zhì)量、數(shù)量、尺寸大?。ㄔ酱笤胶?,但是會變慢)和訓(xùn)練次數(shù)(時間)的影響。

?3、要有很好的數(shù)字圖像處理技術(shù)。替換人臉后,新臉(圖片)不能很好與原圖背景(人物)融合的處理,包括“消邊”、模糊、融合等處理。

?4、要有很好的人臉檢測技術(shù)。因為OpenCV的人臉檢測功能準(zhǔn)確率并不是100%的,所以存在有某些幀(圖片)沒有檢測到人臉,那么就不會替換人臉。

(四)合成替換了人臉的視頻

?最后一步:把替換了人臉的每一張圖片(每一幀)按原來視頻的幀速合成視頻(用ffmpeg工具)。

?這就是整個視頻人臉替換的操作和原理。



(五)分析-總結(jié).

?從整個替換人臉過程、原理可以知道,最終的效果極大的受到人臉檢測技術(shù)、圖像處理技術(shù)的影響。

?在理想情況下,單從AI替換人臉這個功能來說,有足夠多的、高質(zhì)量的人臉數(shù)據(jù),足夠多次的訓(xùn)練,基于深度學(xué)習(xí)的方法替換人臉確實取得了很不錯的效果,如下圖:



上圖:特朗普基于原表情換成凱奇;下圖:反之;

?在整個視頻替換人臉應(yīng)用來說,除了通過AI替換人臉之外,還要受到訓(xùn)練數(shù)據(jù)收集、人臉檢測、后期圖像處理的極大影響,所以仍無法做到通用、實用。

?但是,也可以知道,如果基于某個非常必要的目的,因為單純的AI基于原表情換臉的效果還不錯,可以花時間、精力并掌握了圖像處理技術(shù)的話,理論上也是可以特定為某一段視頻換臉的。

(六)寫在最后

?突然發(fā)現(xiàn),通用的視頻換臉項目沒有做成,卻做了一個“視頻打碼器”。。。。。。

?在即將寫完本文章的時候,因為本人的不放棄精神,發(fā)現(xiàn)了“新大陸”,更新的替換技術(shù),很有可能會有更好的替換效果。接下來馬上進行研究,如果更好的效果,再寫一篇新文章,先定個題目:視頻換臉原理(進階)。

?最后,雖然吐槽不是很好的事情,但是偶爾輕微的吐槽一下就當(dāng)是記錄心情了:

?隨著研究這東西越久,越感覺像蚍蜉撼樹,大量高質(zhì)量的數(shù)據(jù)、強大的算力、枯燥的算法。。。。。。都不好弄啊。

?三年來,電腦不堪壓力第一次藍屏了,太慘了。


?完畢。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 發(fā)現(xiàn) 關(guān)注 消息 iOS 第三方庫、插件、知名博客總結(jié) 作者大灰狼的小綿羊哥哥關(guān)注 2017.06.26 09:4...
    肇東周閱讀 15,414評論 4 61
  • 我們都有???我們怎么可能都有??? 我們?yōu)槭裁炊加胁。?我們憑什么都有病?我們有什么??? 我們哪里有???我們是誰? ...
    職優(yōu)易閱讀 589評論 0 2
  • 自己今天動手做了減肥餐,其實偶爾吃吃這樣的餐也挺不錯的?。。?/div>
    故去青薄衫閱讀 139評論 0 0
  • 一、三種“公地的悲劇”模型 亞當(dāng).斯密認(rèn)為: 每個人追求自己的利益時,有一只看不見的手,在無形中推動公共利益。他追...
    爺有蔓草閱讀 641評論 0 1
  • 其實我們應(yīng)該晚一周再去的,那時候花就開的差不多了。 但就是因為這早去的一周,看到了未曾見過的美,嫩嫩的,都在迫不及...
    Marcu閱讀 384評論 0 2

友情鏈接更多精彩內(nèi)容