以前是有圖有真相,但是Photoshop神器讓圖片變得並不那麼靠譜起來。隨著技術的發展,現在視頻也能進行特殊處理,比如輕鬆移除視頻中的某個物體,比如幫你換個背景直接穿越到古代,比如將視頻中的人物進行換臉操作。什麼?視頻換臉?接下來我們就來看看這個讓普通用戶在家也能輕鬆將視頻換臉的神器(或者將它成為殺器更合適)。(版權所有轉載請聯繫筆者)
幾月前,在國外某論壇出現了一個id叫deepfakes的大神,他發布了一種讓用戶可以使用機器學習技術來將視頻換臉,只是當時還處於初級階段,普通用戶根本沒辦法通過這些資料來自己動手DIY,直到一個簡易版的軟體FakeApp的出現,讓普通用戶也能輕鬆將視頻中的人物換臉,真的那麼神奇?真的那麼恐怖?咱們往下看。
圖1 FakeApp大殺器
?FakeApp能幹什麼?FakeApp有什麼用? 簡單的來說,FakeApp能將視頻A里的人臉通過機器學習技術然後套用到視頻B中,而且通過深度學習後的換臉效果逼真,幾乎可以達到以假亂真的程度。比如無辜的神奇女俠慘遭移花接木。
目前已經更新到了2.2版本,本文以此為例。FakeApp的操作並不複雜,複雜的是使用它之前的準備功能,你得安裝一堆的支持軟體與支持庫,還有就是FakeApp經常會出現莫名其妙的故障,導致失敗,這時你就得憑藉FakeApp的日誌來自行排除故障或求助網友。最後就是FakeApp對計算機配置要求比較高,特別是顯卡,如果你的顯卡低於1080也能做,但是就得忍受漫長的等待時間。還有顯卡需要是N卡,雖然目前也有非N卡的支持,不過本文以N卡為例。相對來說2.2版本的莫名其妙故障較少,但是有網友說它存在安全隱患,部分用戶喜歡使用舊版。筆者用的操作系統為Windows 10 1709 64位。
圖2 最怕出現莫名其妙的故障,錯誤提示又是那麼的模糊
FakeApp的準備工作 打好基礎才能正常工作 接下來,我們就來進入最複雜,最麻煩的FakeApp運行前準備工作。
首先,你得去FakeApp官網下載FakeApp的安裝程序與支持庫,記得下圖兩個東東都要下載回來。目前這兩個鏈接時不時抽風中,要不就是下載到一半斷線,對於第三方下載的資源則需要排查有無病毒木馬。https://www.fakeapp.org/forum/releases-tech-support/releases
圖3 下載這兩個東東
? 上邊那個鏈接是FakeApp安裝程序,下邊鏈接是支持庫。下載回來安裝,安裝順利完成,也可以運行,不過你會收到無法正常操作的錯誤提示。
圖4 沒有準備好的FakeApp運行後提示
? 然後將下載回來的支持庫解壓到C:Users你的用戶名AppDataLocalFakeAppapp-2.2.0
esourcesapi中。
然後就是各種的支持軟體的安裝,一個是Visual Studio 2015,一個是CUDA 9.0,還有就是java。有網友稱需要安裝TensorFlow 1.5,不過筆者沒有安裝依然可以成功運行。推薦安裝PotPlayer或FFmpeg。https://developer.nvidia.com/cuda-downloads?target_os=Windows&target_arch=x86_64
圖5 下載安裝CUDA 9
? 需要注意的是,FakeApp2.2版本才開始支持CUDA 9.0,而之前的版本只支持CUDA 8.0,還有就是最好安裝的是Visual Studio 2015而不是新版。
接下來就是配置環境變數,安裝完畢請查看:桌面→我的電腦→右鍵菜單→屬性→高級系統設置→系統屬性→高級→環境變數→環境變臉→PATH中查看有無下邊兩個變數,有則不用管,無則添加。
C:Program FilesNVIDIA GPU Computing ToolkitCUDAv8.0in
C:Program FilesNVIDIA GPU Computing ToolkitCUDAv8.0libnvvp
另外還是PHTH這裡添加C:Users你的用戶名AppDataLocalFakeAppapp-2.2.0
esourcesapi orchlib。
一切準備就緒,運行FakeApp,沒有再彈出錯誤提示的話,那就成功了第一步。
圖6 FakeApp正常運行狀態
?FakeApp操作第一步 提取人臉數據 接下來我們在一個較多空間的分區準備好一個文件夾,裡邊存放A、B兩個視頻,AB視頻內容最好都是是單獨的自拍視頻,不要多人在,還有就是視頻長度不要太長,初始測試視頻最好在1分鐘內。
FakeApp的第一步操作,就是提取視頻人臉操作,選擇FakeApp的GET DATASET選項卡,然後在Video選項中輸入A視頻目錄地址,嗯就是這麼的智能,不能直接選擇而是需要手動輸入目錄。目錄格式樣式為M:1231.mp4。
圖7 FakeApp輸入提取視頻目錄地址
? 輸入後直接點EXTRACT按鈕,接著FakeApp會自動將視頻按照你所選擇的每秒幀數來將視頻拆分成N多圖片,相關圖片存放在你所設置的視頻目錄下的dataset目錄下。拆分完畢還有第二個步驟,FakeApp還將自動提取每張圖片里的人臉,將它們單獨提取存放在datasetextracted目錄下。
圖8 自動拆分將視頻拆分為圖片
? FakeApp自動提取的頭像難免會有一些非頭像或模糊頭像或者不需要變臉的人物混雜進去,你可以將它們手動刪除,以免在後續操作中誤導學習程序。
成功提取視頻A後,再提取視頻B,這是必須的步驟。
之所以說視頻最好限制在1分鐘,但是也不能太短,視頻太短的話沒有充分的學習數據。那是因為FakeApp會按幀提取視頻為對應的圖片(用戶可以設置幀數),以一30幀為例,一分鐘的視頻可提取的圖片就有1800張。
當然視頻里的人物表情越豐富,正臉側臉等數據越多,FakeApp學習後的效果也就越好,然後就是相關存放的磁碟分區空間一定要大。筆者1280*720 50秒視頻,提取後的圖片文件目錄大小1.02 GB。
所以,在網上放高清自拍視頻還做各種的動作表情的事兒可少干。
FakeApp操作第二步 學習與契合 漫長的機器學習時間 FakeApp的第二步操作就是學習與契合之前提取到的AB視頻人臉圖片。
在視頻存放目錄下新建一個MODEL目錄,然後選擇FakeApp的Train選項卡,在MODEL選項填入剛剛新建的MODEL目錄地址,在DATA A目錄填入步驟一中視頻A所提取出來的人臉目錄地址,本文為「M:123dataset-1extracted」。在DATA B目錄填入步驟一中視頻B所提取出來的人臉目錄地址。
圖9 MODEL目錄存放著學習後數據
然後關閉系統中不必要運行的軟體,當然需要選個空閑的時間,因為學習階段比較的漫長,一切準備就緒後,點擊Train按鈕,開始讓機器自動學習人臉並交叉學習AB視頻人臉並且互相融合契合。
圖10 開始學習
? 一開始學習,機器就頓卡起來,筆者的電腦明顯的吃不消了。
圖11 一個小時後(筆者也不想打格子的)
? 當你按下Train按鈕後,稍等片刻就有個人臉對比圖出現,前六棑是視頻A到視頻B的人臉契合,後六排是視頻B到視頻A的人臉契合。如果正常運行的話,恭喜你,已經成功了大半了,接下來就是等待。很多莫名奇妙的故障就出現在這裡,筆者也是歷盡磨難才成功的。
在FakeApp的學習過程中你可以看到人臉對比圖原來模糊的人臉慢慢變得清晰,FakeApp有參數LOSS A和LOSS B的顯示,這個自動學習過程貌似不會自動終止,學習到的數據就存放在新建的MODEL目錄,如果你的電腦配置低,可以讓別人的高配置電腦幫你學習,然後使用MODEL下的學習數據文件來生成視頻。
那麼什麼時候終止學習呢?推薦LOSS值低於0.02,你看到人臉對比圖看的清晰大概就可以了,當然是學習時間越長越好,筆者的電腦學習了一下午還處於較為模糊狀態,殘念。。。生成的視頻圖片在後邊。
那麼如何終止學習呢?在人臉對比圖中點擊鍵盤Q鍵就可退出學習狀態。終止學習後,下次還可以繼續進行學習,不過相關設置的參數路徑需與上次一致哦。
FakeApp操作第三步 生成視頻 神奇的變臉 恐怖的技術 FakeApp的第三步操作就是生成視頻。如果你順利來到第三步,那就可以竊喜一下了,已經正式進入最後的視頻生成階段,不過有許多用戶也卡在了這裡。
選擇FakeApp的CREATE選項卡,在Model選項中輸入之前新建的MODEL目錄,在Video選項輸入所需要換臉的視頻目錄地址,需要選擇的是AB視頻之一,選擇其它視頻則需要有AB視頻中學習過的人臉。
圖12 生成視頻
? 這裡解釋一下,如果你想將視頻A里的人臉換到視頻B中,那麼在Video選項則輸入視頻B的目錄地址,反之則輸入視頻A的目錄地址。
視頻變臉大概原理:生成視頻分為4大階段,根據筆者的不太靠譜觀察結果,FakeApp的變臉方法變臉原理是這樣的。FakeApp將視頻按幀拆分為圖片,然後利用機器學習數據,將這些圖片進行換臉,再對換臉後的圖片進行合成,從而生成新的變臉後視頻。
圖13 四個步驟
? 最後,當你看到下邊的提示框,那麼恭喜你,成功的進行了視頻換臉操作。
圖14 最後成功提示
? 由於時間關係,筆者的電腦也不能一直在學習不幹活吧,筆者只能在學習6個小時後強行終止了學習。然後生成的視頻慘不忍睹,是時候升級顯卡了!那個啥,看官你打賞點?
圖15 沒有深度學習給筆者強終止學習後生成的視頻截圖
? 嗯,為了被惡意利用,使用FakeApp生成的變臉視頻目前會自動加上碩大的FakeApp水印。
FakeApp的一些配置選項 再來嘮叨一下FakeApp的一些選項設置:
Processor:使用啥來計算學習,在FakeApp中你的CPU遠沒有GPU學習計算的快。
Batch Size:深度學習參數,理論越大越好。
Save Period:每隔多少次保存學習數據,調的小一點,免得想要中止學習的時候還沒保存此次學習數據。
Mem Growth:FakeApp默認會佔用大部分顯存,開啟這個選項的話,程序會在需要的時候再申請顯存。
Mem Ratio:指定顯存佔用率,但是如果程序確實需要更多的顯存了,它還是會超過這個設置的。
你需要注意的是: 不要用於非法用途!
總結 如果擁有足夠的視頻人臉素材,經過深度學習後的FakeApp所生成的變臉視頻足以以假亂真。所以這個視頻變臉技術及簡單版應用軟體的出現,也將帶來較為嚴重的問題,那就是讓視頻也變得不可信起來。所以嚴重警告,不要用該軟體進行非法操作用於非法用途,否則警察叔叔可是不會放過你的哦。
換臉的技術並不是現在才有的,在許多電影特效技術中,變臉早已不是難題,例如在速度與激情7拍攝中,保羅沃克遭遇車禍使得未完成的拍攝無法由他本人完成,所以最後是替換替身演員的臉部圖像最終完成的拍攝。FakeApp的出現在於讓普通用戶在家裡也能完成變臉操作,大大降低了門檻,是好事還是壞事呢?
關注作者,閱讀全文c
還有50%的精彩內容,作者設置為僅對粉絲可見
軟體撰稿人作者v我愛我家
呵呵!太平洋電腦網裡的作者「我愛我家」就是偶啦!我的專欄來啦,歡迎關注!http://www.pconline.com.cn/author/author248.html 歡迎約稿 軟體類
+關注