2022年6月26日 星期日

使用Deepfakes為影片變臉

Deepfakes是一種利用機器學習中的深度學習實現深度影片換臉的技術。而DeepFaceLab是眾多軟體中,安裝最簡單,使用最方便,更新最快的一款軟體。

安裝GPU模組

DeepFaceLab需要使用GPU,因此需安裝CUDA及cuDNN。

安裝CUDA:開啟https://developer.nvidia.com/cuda-toolkit-archive,點選CUDA Toolkit 10.1 update2。

依照作業系統點選,此處點選「Windows、x86_64、10、exe(local)」,再按「Download」鈕下載。

下載完成後進行安裝(都使用預設值即可)。

安裝cuDNN:開啟https://developer.nvidia.com/cuDNN,點選「DOWNLOAD cuDNN」。下載cuDNN必須註冊為會員,註冊後登入,點選CUDA對應的版本,再點選作業系統 Windows 10下載。

檔案下載後解壓縮,置於任意資料夾中,此處以<C:\Portable\cudnn-10.1-windows10-x64-v7.6.5.32>為例。然後將<C:\Portable\cudnn-10.1-windows10-x64-v7.6.5.32\cuda\bin>加入環境變數中。

安裝DeepFaceLab

開啟「https://github.com/iperov/DeepFaceLab」網頁,捲到下方「Release」處,點選「Windows (Mega.nz)」。

「Release」頁面有所有版本,最下方為最新版本,點選最下方右邊「功能」鈕,再點選「下載 / 下載為ZIP壓縮文檔」即可下載,檔案很大約3G,請耐心等待。

解壓縮下載的<Archive-bc1e.zip>檔得到<DeepFaceLab_NVIDIA_build_08_02_2020.exe>檔,雙按此執行檔就解壓縮得到<DeepFaceLab_NVIDIA>資料夾,內含影片變臉所有程式,其中已寫好許多批次檔,方便使用。

實作DeepFaceLab影片換臉

原始檔的<workspace>資料夾中有兩個影片檔可做為練習用:<data_src.mp4>及<data_dst.mp4>。

實作換臉的步驟為:(執行時若是許久沒反應,請按「ENTER」鍵)

  1. 執行<1) clear workspace.bat>:清除工作空間,重新進行影片換臉。

  1. 執行<2) extract images from video data_src.bat>:將原始影片轉換為圖片。

第一個輸入點:每秒擷取多少張圖片,建議10-30。

第二個輸入點:圖片格式,png或jpg。

執行完畢後會在<workspace\data_src>資料夾產生擷取圖片。

  1. 執行<3) extract images from video data_dst FULL FPS.bat>:將目標影片轉換為圖片。

第一個輸入點:圖片格式,png或jpg。(擷取的FPS為30)

執行完畢後會在<workspace\data_dst>資料產生擷取圖片。

  1. 執行<4) data_src faceset extract.bat>:從原始影片的圖片中擷取臉部圖形。

第一個輸入點:「CPU」表示使用CPU,「0」表示使用GPU。

第二個輸入點:「f」表示擷取臉部,「wf」表示完成臉部,「head」表示擷取頭部。

第三個輸入點:擷取圖片的最大數量,「0」表示無上限。

第四個輸入點:擷取圖片的尺寸,建議在512以下。

第五個輸入點:擷取圖片的品質,100為最高品質。

第六個輸入點:是否產生除錯圖片。

執行完畢後會在<workspace\data_src\aligned>資料夾產生臉部圖片。

  1. 執行<5) data_dst faceset extract.bat>:從目標影片的圖片中擷取臉部圖形。

第一個輸入點:「CPU」表示使用CPU,「0」表示使用GPU。

第二個輸入點:「f」表示擷取臉部,「wf」表示完成臉部,「head」表示擷取頭部。

第三個輸入點:擷取圖片的尺寸,建議在512以下。

第四個輸入點:擷取圖片的品質,100為最高品質。

執行完畢後會在<workspace\data_dst\aligned>資料夾產生臉部圖片,在<workspace\data_dst\aligned_debug>資料產生除錯圖片。

除錯圖片的臉部有一個紅色框和藍色框,還有一個綠色的輪廓線。如果發現綠色線和臉部輪廓不貼合,那麼就需要手動提取這張圖片了。必要時可以修正此圖片。

  1. 執行<6) train Quick96.bat>:快速訓練模型。(<6) train SAEHD.bat>可以自行定義許多訓練參數)

第一個輸入點:輸入模型名稱。

第二個輸入點:「CPU」表示使用CPU,「0」表示使用GPU。

開始訓練時,第二行及第四行圖片是模糊的,當此兩列圖片足夠清晰時,就可以按「ENTER」鍵完成訓練並儲存模型。訓練的時間依系統效能而定,可能數小時至數天。

執行完畢後會在<workspace\model>資料產生模型檔。

  1. 執行<7) merge Quick96.bat>:置換圖片。(選擇與訓練對應的程式)

第一個輸入點:「0」表示使用已存在的模型。

第二個輸入點:「CPU」表示使用CPU,「0」表示使用GPU。

第三個輸入點:是否使用互動模式,可輸入「n」。

第四個輸入點:合併模式,建議輸入「1」或「2」。

第五個輸入點:遮罩模式,建議輸入「1」。

後面皆為參數設定,建議都使用預設值,因此一宜按「ENTER」鍵即可。

執行完畢後會在<workspace\data_dst\merged>資料產生換臉後的圖片。

  1. 執行<8) merged to mp4.bat>:將圖片合成影片。

第一個輸入點:碼率,建議輸入「5」以下整數。數值越大,產生的檔案越大。

執行完畢後會在<workspace>資料產生<result.mp4>影片檔,這就是換臉後的影片。


沒有留言:

張貼留言