影史經典《卡薩布蘭卡》是大家耳熟能詳的傳世名作,那一首壯懷激烈,激奮昂揚的馬賽曲,應當是通片最為激動人心的經典橋段了,本次我們基于faceswap和so-vits庫讓AI川普復刻美國演員保羅·亨雷德高唱《馬賽曲》的名場面,
配置人臉替換DeepFakes專案
關于人臉替換,業內鼎鼎有名的deepfakes代表了這個人工智能細分領域的最高水平,旗下的faceswap庫正好適合這種視頻二次創作的場景,
首先克隆faceswap專案:
git clone https://github.com/deepfakes/faceswap.git
隨后進入專案的目錄:
cd faceswap
確保本地已經配置好python3.10的開發環境,
隨后在根目錄即可編譯安裝:
python3.10 setup.py
這里的setup.py腳本會自動判斷系統本地軟體環境進行依賴的安裝,如果想要手動安裝依賴,也可以通過pip命令:
For Nvidia GPU users: pip install -r ./requirements/requirements_nvidia.txt
For AMD GPU users: pip install -r ./requirements/requirements_amd.txt
For CPU users: pip install -r ./requirements/requirements_cpu.txt
這里分為三種用戶,N卡用戶使用requirements_nvidia.txt,也是最主流的解決方案,其次是A卡用戶:requirements_amd.txt,最后是cpu用戶requirements_cpu.txt,
事實上,這里并不推薦cpu運行專案,因為無論是訓練還是推理,速度實在是太慢了,就算是Intel最新的第十三代酷睿I9處理器,也是杯水車薪,更遑論蘋果的M系列芯片,吹得再牛逼,也只是送人頭的水平,
所以,玩深度學習,最低的要求就是手里得有一塊N卡,不需要太高端,傾家蕩產買一塊3090或者是4090其實沒有任何必要,一塊相對親民的4050或者是4060足矣,當然,有錢任性則另當別論,
至此,faceswap就配置好了,
構建訓練集
讓我們再來回顧一下需求場景,現在需要將懂王的臉替換到《卡薩布蘭卡》中保羅·亨雷德的臉,所以我們現在需要收集兩張臉,即原視頻保羅·亨雷德的臉,以及替換者懂王的臉,
此時原視頻素材是存在的,即《卡薩布蘭卡》電影,而懂王的臉則需要在網上尋找視頻素材進行下載,這里需要注意的是,素材中最好包含臉部的特寫,并且不包括其他人的臉,否則會在模型訓練環節產生“噪音”,
由于《卡薩布蘭卡》中還有很多別的場景,而我們需要的只是保羅·亨雷德高唱《馬賽曲》的面部特寫片段,所以需要對素材進行剪輯,這里推薦使用ffmpeg,首先運行安裝命令:
winget install ffmpeg
接著將可執行目錄配置到系統的環境變數中:
C:\Users\[用戶名]\AppData\Local\Microsoft\WinGet\Packages\Gyan.FFmpeg_Microsoft.Winget.Source_8wekyb3d8bbwe\ffmpeg-6.0-full_build\bin
隨后通過命令將片段從原始素材中扣取出來:
ffmpeg -ss 01:34:00 -i 卡薩布蘭卡.mp4 -to 01:55:00 -c copy 保羅面部素材.mp4
這里視頻素材就保存好了,
接著利用faceswarp腳本將素材轉換為面部的圖片集合:
python3.10 faceswap.py extract -i ~/faceswap/src/保羅面部素材.mp4 -o ~/faceswap/faces/paul
效果就是將視頻逐幀進行保存,只保留面部資訊:

懂王的訓練集也如法炮制,
至此,訓練集就構建好了,
模型訓練
當訓練集配置好之后,下一步就是模型訓練,模型訓練是指使用已知的資料集對機器學習模型進行調整和優化,以便它能夠更準確地對未知資料進行預測,沒錯,所謂換臉,就是在處理預測問題,
運行命令,開始訓練:
python3.10 faceswap.py train -A ~/faceswap/faces/paul -B ~/faceswap/faces/trump -m ~/faceswap/mymodel/ -p
這里A資料集為保羅的,B則是懂王,-m引數是模型的保存目錄,-p引數則可以對模型效果進行預覽,
模型訓練程序中會不斷輸出損失率函式,一般情況下,訓練程序中損失率穩定在0.01左右代表模型已經收斂,
訓練程序中每隔一段時間會保存一次模型,程式中斷后再次執行會在上次的模型基礎上訓練,訓練需要手動停止,訓練完后模型保存在上面指定的路徑下,
這里需要注意的是,模型訓練程序將會付出大量的時間成本,多長時間取決于許多因素,使用的模型,訓練集的數量,N卡等級等等,在GTX4060的GPU上大概5個小時左右損失率會相對穩定,如果在CPU上訓練,短時間內很難看到損失率下降,
本地推理
模型訓練完畢后,我們就可以使用模型來進行換臉的推理操作,這里有個問題需要澄清一下,即我們訓練的不是通用模型,而是針對訓練集的模型,也就是說,這個模型只是為了將原素材中保羅的臉替換為懂王的臉而訓練的,并不是在任意素材中都能夠這樣替換,
因此,就算模型有過擬合問題,也不會影響最終效果,
所以,我們就可以直接使用訓練集資料進行驗證,運行命令進行推理:
python3.10 faceswap.py convert -i ~/faceswap/faces/paul -o ~/faceswap/faces/output -m ./mymodel/
這里使用模型針對原訓練集資料進行替換,
效果如下:

保羅英俊的面龐瞬間灰飛煙滅,懂王睿智的面容緩緩浮現,
相同的流程,將片中好萊塢巨星英格麗·褒曼的臉:

替換為漫威超級女英雄寡姐的臉:

臉型有些違和,但音容宛在,
最后,只須將《馬賽曲》的歌聲替換為懂王即可,請移步:AI天后,在線飆歌,人工智能AI孫燕姿模型應用實踐,復刻《遙遠的歌》,原唱晴子(Python3.10) ,囿于篇幅,這里不再贅述,
結語
看到這里,相信很多朋友都不約而同地有了一些非常大膽卻又不太成熟的想法,但請記住,無論何時何地,互聯網都并非法外之地,當運行推理腳本的那一刻,需要思考一下自己是不是真的很刑,在Youtube(B站)搜索劉悅的技術博客,即可欣賞復刻版本的《卡薩布蘭卡》,歡迎諸君品鑒,
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/553228.html
標籤:其他
上一篇:音容笑貌,兩臻佳妙,人工智能AI換臉(deepfake)技術復刻《卡薩布蘭卡》名場面(Python3.10)
下一篇:返回列表
