deface:开源人脸打码工具,视频照片批量马赛克教程

AI工具3个月前更新 aisilink
131 0 0
deface视频人脸自动打码工具封面

发视频之前给路人打码,手动逐帧框脸是最费时间的环节。deface 能把这件事简化成一条命令:它是开源免费的工具,你给它一段视频或一张照片,它用神经网络自动找出画面里所有人脸,加上模糊、马赛克或黑框之后输出。这篇教程从安装讲到常用参数,照着做就能跑通。

deface 是什么

deface 本身是个 Python 项目,通过命令行运行,Linux、Windows、macOS 都能装。它的原理不复杂:先逐帧检测出人脸的位置,再对这些区域加上你选定的遮挡效果,最后输出一个处理好的新文件,原始文件保持不动。它也能直接读取摄像头的实时画面,边拍边打码做预览。

有两点需要提前知道。一是默认设置会把音轨删掉,想保留声音得加参数,后面会讲。二是它没有图形界面,全程都在敲命令,习惯了剪辑软件的人可能要适应一下。不过也正因为它是纯命令行工具,批量处理和接入脚本流水线反而更方便,这是在剪辑软件里手动加贴纸遮脸做不到的。

deface处理前的街头人群原始照片

图:官方示例原图,处理前所有人脸清晰可见

deface默认模糊模式处理后的街头照片,所有人脸已高斯模糊

图:默认模糊(blur)效果,一条命令的产出

四种遮挡方式

默认方式是高斯模糊(blur),大多数打码需求用它就够了。如果想让观众一眼看出”这里做过处理”,可以换成黑框(solid),直接在人脸上盖一块实心矩形,监控素材、合规审查类的画面经常这么处理。马赛克(mosaic)是把人脸区域变成像素格子,格子大小可以用参数调,选不选主要看你想要的画面效果。还有一种是图片覆盖(img),用你指定的一张图片把人脸替换掉,适合做趣味视频或者带品牌元素的遮挡。

deface黑框solid模式处理后的照片,人脸被实心矩形遮挡

图:黑框(solid)遮挡

deface马赛克mosaic模式处理后的照片,人脸被像素块遮挡

图:马赛克(mosaic),块大小可调

不管用哪种方式,都可以调整蒙版的缩放比例,把遮挡范围放大一圈,避免发际线、下巴这些边缘部位露出来。

检测准不准,靠阈值

阈值是最值得花时间调的参数。阈值调高,误检会变少,程序不容易把海报、雕塑错当成人脸糊掉;阈值调低,漏检会变少,侧脸、远处的小脸、被口罩帽子挡住一半的脸更容易被识别出来。deface 还可以在输出画面上显示每个检测框的置信度分数,你可以打开这个选项,拿自己的真实素材跑几段,看看分数分布再决定阈值,比凭感觉乱调省事得多。

如果嫌处理速度慢,有两个办法。第一个是下采样:1080p、4K 的素材直接在原始尺寸上做检测会明显变慢,用 –scale WxH 参数可以让检测在缩小后的画面上进行,最终输出仍然保持原分辨率。注意缩放尺寸要和原片的宽高比一致,比例变了会影响识别精度。第二个是硬件加速:机器上有支持 CUDA 的 Nvidia 显卡的话,装上对应的依赖包,人脸检测网络会自动转到 GPU 上运行;Windows 或者纯 CPU 的环境,也可以通过 ONNX Runtime 更换执行后端,获得一定的加速。偶尔处理一两条视频不用折腾这些,需要成批处理素材时再配置。

安装

环境要求不高:Linux、Windows、macOS 都行,Python 要 3.6 以上。建议先建一个虚拟环境再安装,把依赖隔离开,以后升级和卸载都省心:

python3 -m pip install deface

如果想用 GitHub 上最新的开发版代码,就换这条:

python3 -m pip install 'git+https://github.com/ORB-HD/deface'

跑第一条命令

假设视频在 myvideos/vid1.mp4,直接执行:

deface myvideos/vid1.mp4

跑完之后,同一个目录下会多出一个文件:

myvideos/vid1_anonymized.mp4

这时整段视频里的人脸都打上了模糊,音轨被删掉,原文件没有变化。能看到这个 _anonymized 文件,说明环境已经装好了。

如果机器接了摄像头,还可以试试这条命令:

deface cam

它会对摄像头的实时画面直接打码预览,在隐私敏感的场合可以当成实时监看工具用。接了多路摄像头的话,换不同的设备索引(video1、video2)挨个试就行。

常用参数

指定输出文件名,不用默认的 _anonymized 后缀:

deface input.mp4 -o output_anonymized.mp4

改用黑框遮挡:

deface examples/city.jpg --boxes --replacewith solid -o examples/city_anonymized_boxes.jpg

改用马赛克,块宽度设为 20:

deface examples/city.jpg --replacewith mosaic --mosaicsize 20 -o examples/city_anonymized_mosaic.jpg

把检测阈值降到 0.3,减少漏检:

deface input.mp4 --thresh 0.3 -o input_tuned.mp4

保留原始音轨。处理口播、访谈类素材时,建议养成每次都带上这个参数的习惯,忘了加就得整段重跑:

deface input.mp4 --keep-audio -o input_with_audio_anonymized.mp4

其余参数可以查帮助命令:

deface -h

哪些活适合交给它

最典型的场景是用户访谈和可用性测试的录屏:视频要对外分享,又不能暴露受访者的脸,先用 deface 处理一遍再发出去。教学视频里误入镜的路人、需要合规发布的街拍和商场监控素材、宣传片里没拿到授权的出镜者,处理思路都是一样的。做机器学习的人可以直接把它写进数据清洗脚本,训练集脱敏这一环就自动化了。

打完码的素材可以接着导入 ComeCut 来剪 或 剪映 做后续剪辑,打码和剪辑各管一段,整条流程很顺。

免费,但有几件事要知道

价格方面没什么可说的:它是开源项目,完全免费,也没有用量限制。真正要考虑的是使用门槛和习惯:不熟悉命令行的人需要适应一阵;忘了加 –keep-audio,输出的视频就没有声音;没有 GPU 的机器处理高清素材偏慢,要靠 –scale 参数补救。另外,检测再准也可能有漏网的人脸,对合规要求高的素材,出片后最好再人工快速检查一遍。

项目地址

GitHub:https://github.com/ORB-HD/deface,源码、示例图和完整文档都在里面。

要不要装,主要看你的使用频率。偶尔处理一两张图,用剪辑软件手动涂抹更快;如果素材成批产出、打码是流程里固定的一环,那这种一条命令的工具能帮你把手工活变成脚本活,值得装一个。

© 版权声明

相关文章