deface:開源命令列人臉匿名化工具,本機自動把影片照片的人臉打碼

deface 是開源 MIT 命令列人臉匿名化工具,底層用 CenterFace 神經網路自動偵測影片與照片每一格畫面的人臉,再套用模糊、黑框、馬賽克等五種匿名化濾鏡,全程在本機處理、不必把素材上傳雲端。

用 AI 摘要這篇文章:

做使用者訪談剪輯、街景紀錄或活動側拍,畫面裡總有一堆沒簽肖像授權的路人臉,逐格手動框選又太耗工。deface 想解決的就是這件事:在終端機打一行指令,它會自動抓出每一格畫面裡的人臉,蓋上模糊、黑框或馬賽克,再把脫敏後的檔案寫回你的硬碟,過程不必把素材交給任何雲端服務。它不追求功能齊全,而是把自動抓臉、然後在本機蓋掉這件事做得純粹。它以 MIT 授權開源、作者掛名 Martin Drawitsch,不過維護節奏偏慢,最新正式版停留在 2023 年 10 月。這篇把它的實際能力、幾個會踩坑的預設,以及到底適合誰,一次講清楚。

丟一支影片進去就自動打碼,它到底是怎麼辦到的

deface 把人臉匿名化拆成兩步:先用一個叫 CenterFace 的神經網路,在每一格畫面裡算出人臉的位置和可信度分數;再依你指定的模式,把那塊區域蓋掉。模型是用 WIDER FACE 這套公開的人臉標註資料集訓練出來的,這套資料涵蓋多種尺度、姿態與遮擋情境,讓偵測範圍能擴及側臉、部分遮擋和遠距離的小臉。影片對它來說只是「一連串獨立的圖片」,每一格都重新偵測一次,不依賴前後格的追蹤資訊。

整個偵測和覆蓋都在你自己的電腦上跑,模型檔 centerface.onnx 跟著套件一起裝進來,運作時不對外連線。這點對隱私敏感的素材很關鍵:訪談錄影、研究紀錄或未公開活動的畫面,不必為了打碼先上傳到某個網站。若你平常也用強調本機處理的開源工具,例如 Caesium Image Compressor 把照片留在本機壓縮,deface 是同一類思路在「人臉脫敏」這個環節的版本。

五種打碼方式,從自然模糊到整塊黑框

deface 內建五種覆蓋模式,用 --replacewith 切換:

  • blur(預設):強力高斯模糊,視覺上最自然,多數隱私脫敏場合直接用它就行。
  • solid:實心黑框,辨識度最高、最直接,適合需要明確標示「這裡被打碼」的合規素材。
  • mosaic:馬賽克方格,可用 --mosaicsize 調每格寬度(預設 20 像素),高解析度素材記得把數字調大,否則格子在畫面上會顯得太細。
  • img:用你自備的圖片覆蓋人臉,想做趣味遮擋或統一品牌貼圖可以走這條。
  • none:只偵測、不覆蓋,單純想看模型抓到哪些臉、抓得多準時用。

實際下指令會比功能表更清楚。想用黑框而非模糊,只要加上覆蓋模式參數:deface examples/city.jpg --boxes --replacewith solid,這會把橢圓遮罩換成方框並填上實心黑色;想用馬賽克則是 deface examples/city.jpg --replacewith mosaic --mosaicsize 20--mosaicsize 決定每格的像素寬度,數字越大方格越粗。處理影片的指令完全一樣,差別只在輸入是影片檔,輸出檔名會自動加上 _anonymized 後綴。

預設的覆蓋形狀是橢圓形遮罩,貼合臉部輪廓;想換成方框就加 --boxes。另外有個 --mask-scale 參數預設 1.3,會把遮罩放大 1.3 倍,確保臉的邊緣不會漏出去,這在側臉或低頭的畫面特別有用。下面兩張是官方 README 的範例圖,分別是處理前的原始街景,以及套用馬賽克模式後的輸出。

deface 官方範例:未處理的街景原始照片,畫面中可見多位行人的臉部清晰可辨Pin
原始素材(官方 README 範例圖,源自 Pexels)
deface 馬賽克模式輸出結果:街景照片中的人臉被馬賽克方格覆蓋完成匿名化Pin
套用 –replacewith mosaic 模式後的輸出結果

deface 只認臉:這些東西它蓋不到

把 deface 當成合規脫敏工具之前,有一件事要先釐清:它偵測的對象只有人臉。車牌、證件上的姓名、螢幕裡的個資畫面、刺青,這些同樣可能識別身份的資訊它都不會處理。如果你的素材裡有車牌入鏡,或畫面拍到筆電螢幕上的客戶資料,deface 不會幫你蓋掉,需要另外的工具或手動遮擋。把它理解成「專責人臉的脫敏工具」,而不是一套完整的隱私打包方案,會更準確。

另一個設計上的特性是它不做跨格追蹤。每一格畫面都獨立偵測,同一張臉在不同格的遮罩大小和位置可能略有浮動。正常播放速度下這不明顯,但如果你逐格檢查或做慢動作截圖,會看到遮罩邊緣有些許跳動。對多數隱私脫敏需求這完全夠用,但若你的合規標準要求逐格穩定覆蓋,這點要在驗收時自己多看幾格確認。

聲音則是它完全不碰的另一塊。deface 只處理影像,影片裡的對話、人聲特徵一樣能識別說話者是誰,這部分不在它的職責範圍。前面提過它預設還會把音軌整個拿掉,需要用 --keep-audio 才會保留;但就算保留了聲音,裡頭的個資仍得靠另外的聲音變造工具處理。換句話說,做完人臉打碼不等於整支影片完成匿名化,聲音和臉部以外的資訊要分開評估。

想抓得更準或更快,這幾個參數決定成敗

人臉偵測有個天生的取捨:閾值設太低,會把不是臉的東西(像手、背景紋理)也蓋掉;設太高,又會漏掉比較模糊或被遮住的人臉。deface 的偵測閾值 --thresh 預設是 0.2,官方文件說這個值在多數測試影片上表現平衡。想找出最適合自己素材的數字,可以加 --draw-scores 把每張臉的可信度分數直接畫在畫面上,先用極低的閾值跑一遍看分數分布,再把閾值定在合理的切點。README 給了兩個對照例子幫你抓感覺:把閾值壓到 0.02 左右,會出現把手的區域誤判成人臉這類偽陽性;拉高到 0.7,則會開始漏掉半遮擋的臉。你的素材落在哪個區間,跑一遍帶分數的預覽大致心裡就有底。

另一個影響速度的關鍵是解析度。1080p 或 4K 素材如果直接用原尺寸丟給模型推論,會明顯變慢,模型對超高解析度的圖反而沒那麼準。deface 提供 --scale WxH 讓你指定一個較小的偵測解析度,例如 --scale 640x360,模型在縮小的畫面上找人臉,再把結果還原回原解析度輸出。要注意寬高比必須和原素材一致,否則畫面被拉扯、偵測率會跟著掉。

兩個反直覺預設:音軌會被丟掉,而且只有命令列

第一個容易踩坑的地方:deface 處理影片時,預設會把音軌整個丟掉。README 在開頭就寫明這點,但第一次用的人多半不會注意到。如果你的素材需要保留聲音(訪談的對話、活動現場音),務必加上 --keep-audio,它會把原始音軌原樣複製到輸出檔。

第二個更根本:deface 只有命令列介面,沒有圖形視窗,而且官方明確表示不打算做 GUI。意思是你要在終端機裡打字下參數,沒有拖曳、沒有預覽裁切框。對習慣指令的開發者沒差,但對一般內容創作者門檻不低。社群因此出現了像 BlurfaceFree、DefaceGUI 這類第三方圖形介面工具,不過它們是獨立專案、不屬於 deface 官方,更新與相容性要自己把關。若你想要的是所見即所得的剪輯體驗,OpenCut 這類開源影片編輯器會順手得多,deface 真正的定位是放在批次處理腳本或自動化管線裡。

怎麼裝、第一條指令長怎樣

deface 用 Python 寫成,PyPI 上目前是 1.5.0 版,要求 Python 3.8 以上(README 寫的 3.6 已過時,以套件實際標示為準)。建議先開一個虛擬環境隔離依賴,再裝:

python3 -m pip install deface

裝完之後,最基本的使用就是把檔案路徑丟給它。假設你的影片是 vid1.mp4,執行 deface vid1.mp4,它會在相同目錄產出 vid1_anonymized.mp4,預設套模糊、拿掉音軌。deface 也接受一次傳多個檔案或直接傳一整個目錄,例如 deface vids/*.mp4 會把資料夾裡所有影片逐一脫敏,這對要批次處理訪談錄影或活動側拍的團隊特別實用。想即時預覽,接了攝影機的機器可以直接打 deface cam,它會對鏡頭畫面做人臉匿名化預覽,等同 deface --preview '<video0>' 的簡寫,適合在隱私敏感場合當即時監看用。

處理量大或解析度高的話,可以額外裝 ONNX Runtime 後端加速。Nvidia 顯卡裝 onnxruntime-gpu 走 CUDA,Windows 上的非 Nvidia 顯卡可裝 onnxruntime-directml,連純 CPU 環境也能用 onnxruntime-openvino 拿到一點加速。這些都是選配,不裝也能跑,只是會慢一些。不特別指定時,deface 的後端預設是 auto,會優先找 ONNX Runtime、找不到就退回 OpenCV,所以多數情況下你裝好對應的加速套件,它就會自動用上,不必另外設定參數。要留意 GitHub 上的最新原始碼(2024 年 10 月加入的 --disable-progress-output 參數)還沒發到 PyPI,想用最新功能得改裝 git+https://github.com/ORB-HD/deface 這個開發版。

還能放心用嗎:2023 年的最後正式版與待解議題

這是使用前最該誠實面對的一點。deface 最新、也是最後一個正式 release 是 2023 年 10 月的 v1.5.0,距今已近三年;GitHub 上最近一次提交落在 2024 年 10 月,之後就沒有新動靜。問題追蹤區目前累積了三十多個未關議題,內容包括馬賽克尺寸希望能改成人臉比例、軟模糊選項等需求。這不代表它不能用了,核心的偵測與覆蓋功能本身是穩定的,CenterFace 也是經過驗證的模型;但若你期待活躍的問題修復或新功能,這節奏要心裡有數。把它當成一個「功能完整但進入低維護期」的成熟工具來評估,會比期待它持續迭代更實際。另外要留意,模型檔是跟著套件一起打包的靜態副本,不會自動更新到新版本;哪天 CenterFace 上游有重大修正,你得靠 deface 自己發新 release 才拿得到,這在被動維護期是個現實限制。

什麼人該裝、什麼人別碰

  • 該裝:習慣命令列的開發者、研究員;需要把人臉脫敏做成批次或自動化管線的內容團隊;素材具隱私或合規顧慮、不能上傳雲端的人。對這群人,一條指令加幾個參數就能批次處理整個資料夾,是它最大的價值。
  • 別碰:看到終端機就頭痛的使用者;需要所見即所得預覽的人;指望官方即時修問題或持續加功能的團隊。這幾種需求,第三方 GUI 工具能解決一部分,但本質上仍綁著同一個低頻維護的生態。

想親自試一輪最安全的做法是:先在虛擬環境裝好,挑一支可以丟棄的測試影片(務必用副本,不要對原始素材直接跑),加上 --keep-audio 和你想用的覆蓋模式,先跑一小段確認偵測效果和音軌保留都符合預期,再放大到正式批次。它也很適合接在你的既有流程裡,例如用 影片壓縮工具處理完檔案大小後,再做一輪人臉脫敏。deface 不會是最花俏的打碼工具,但對願意用命令列換取本機隱私和批次自動化的人,它是一個夠用、夠誠實、且授權乾淨的選擇。加上 MIT 條款寬鬆,把它包進公司內部工具或商業流程都不必另外談授權,只要在衍生作品裡保留原作者的版權聲明即可,這對企業導入是省掉一層法務往來的實質好處。

Sliven 褚崇名
Sliven 褚崇名

每日分享科技新知、免費資源以及 WordPress、虛擬主機相關主題,任何問題歡迎在科技月球下方留言,或是發送 Email 至 [email protected] 與我聯繫。

文章: 832

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *


Share to...