只要一張自拍照就能讓 AI 換臉整段影片!Mac M1 在本機安裝 Roop 教學

林鼎淵
Dean Lin
Published in
7 min readFeb 9, 2024

--

原本我打算放上 Google Colab,但發現免費版執行失敗率高得嚇人;因此寫了一篇 Mac AppleSilicon 的踩坑文件,讓大家可以輕鬆體驗這款 AI 換臉工具(在自己電腦執行,無論效率還是便利性都高太多了)。

文章開始前,我先總結一下體驗心得:「在 AI 的時代下,眼見不足為憑;這類換臉工具在使用上已經沒有技術壁壘,即使 0 基礎的小白也能在短時間上手。」

【免責聲明】:教學只是示範一種思路,沒有任何不良引導,請勿將工具用於個人學習外其他目的,使用軟體需遵守軟體相關條款協議,別忘記小玉已經在監獄了

把我的臉合成到葉問上

小提醒:Windows 要安裝的東西可以參考這篇官方文章,其實跟 Mac 差不多。

STEP1: 安裝 Miniconda

進入官網選擇與自己電腦相容的 pkg 檔下載: https://docs.conda.io/en/latest/miniconda.html

安裝完成後進入終端機(Terminal),輸入 conda config --set auto_activate_base true 初始化 Conda(若要關閉輸入 conda config --set auto_activate_base false 即可)。

再次打開終端機時,命名行前會有(base)

STEP2: 下載 Roop 專案 & 安裝相關套件

進入終端機後,輸入 git clone https://github.com/s0md3v/roop 下載專案。

下載完成後進入專案目錄,將下面的內容貼到「requirements.txt」文件(這些是要安裝的套件)。

--extra-index-url https://download.pytorch.org/whl/cu118

numpy==1.23.5
opencv-python==4.7.0.72
onnx==1.14.0
insightface==0.7.3
psutil==5.9.5
tk==0.1.0
pillow==9.5.0
customtkinter==5.1.3
torch==2.0.0
onnxruntime==1.15.0; sys_platform == 'darwin' and platform_machine != 'arm64'
onnxruntime-silicon==1.13.1; sys_platform == 'darwin' and platform_machine == 'arm64'
onnxruntime-gpu==1.15.0; sys_platform != 'darwin'
tensorflow==2.13.0rc1; sys_platform == 'darwin'
tensorflow==2.12.0; sys_platform != 'darwin'
opennsfw2==0.10.2
protobuf==4.23.2
tqdm==4.65.0

然後在終端機進入 roop 資料夾,輸入 pip install -r requirements.txt 安裝相關套件。

接著可以通過 homebrew 安裝 ffmpeg。

brew install ffmpeg

STEP3: 執行 roof 換臉程式

在 roof 資料夾下執行 python run.py,等個幾秒鐘就會有如下的圖形介面出現(第一次執行會需要下載 500 多 MB 的資源,需等待一段時間),操作非常簡單,主要功能可以參考下圖說明。

不過大多數人應該第一次執行時不會那麼順利,像筆者就遇到 tk 的錯誤如下:

後面用 brew search tk 來搜尋,才發現 python-tk@3.10 沒裝,執行 brew install python-tk@3.10 安裝後就正常了。

接著又遇到 torch、torchvision 相容性問題,這部分我看考他們的版本對照表重裝就正常了

pip uninstall torch torchvision
pip install torch==2.0 torchvision==0.15

STEP4: 加強出圖效果與品質

作者表示 Apple Silicon 支援 CoreML 加速,執行下面指令安裝對應套件。

pip uninstall onnxruntime onnxruntime-silicon
pip install onnxruntime-silicon==1.13.1

之後執行換臉程式時結尾加上「 — execution-provider coreml」即可加速,另外想增加品質可以在結尾加上「 — frame-processor face_swapper face_enhancer」即可,完整啟動換臉的指令如下

python run.py --frame-processor face_swapper face_enhancer --execution-provider coreml

STEP5: 看看換臉後的圖片與影片品質

這邊我先拿自己的照片換到葉問的電影照看看。

圖片來源:葉問,僅作為教育及研究使用

其實我覺得效果是不錯的,會有違和感是因為我太胖了,跟身體不太吻合。

下面我再拿自己的照片跟韓團影片合成看看,不知道會不會一秒變歐巴(因為影片中有兩個人,所以我將 Many Faces 打開)。

影片來源: Levitating / dsomeb Choreography & Dance

其實我覺得結果的違和感不大(自己在說),不過因為我提供的照片有眼鏡,所以有些畫面會閃。

以上就是今天 AI 換臉的教學分享,筆者的電腦為 Mac M1 Max 32GB RAM,實測下來建議選擇 15 秒內的影片來做換臉,超過的話 RAM 可能會撐不住(超過可透過分段生成處理)。

最後提醒一下大家,這個工具真的很強大,門檻也很低;我們可以拿來學習、娛樂,但千萬不要拿來做犯法的事情。

如果這篇文章對你有幫助,可以對文章拍手讓我知道 👏🏻,也歡迎點擊「Follow」來追蹤我~

▶︎ 如果這篇文章有幫助到你

1. 可以點擊下方「Follow」來追蹤我~
2. 可以對文章拍手讓我知道 👏🏻
你們的追蹤與鼓勵是我繼續寫作的動力 🙏🏼

▶︎ 如果你對工程師的職涯感到迷茫

1. 也許我在iT邦幫忙發表的系列文可以給你不一樣的觀點 💡
2. 也歡迎您到書局選購支持,透過豐富的案例來重新檢視自己的職涯

--

--

林鼎淵
Dean Lin

職涯中培育過多名工程師,🧰 目前在外商公司擔任 Software Specialist |✍️ 我專注寫 (1)最新技術 (2)團隊合作 (3)工程師職涯的文章,出版過 5 本專業書籍|👏🏻 如果對這些主題感興趣,歡迎點擊「Follow」來關注我~