背景介绍
随着显卡算力和 AI 技术的发展,现在很多直播技术已经用到了实时换脸技术了,甚至有些 AI 换脸技术已经可以突破一些 APP 的人脸识别接口了,这也是我们安全从业者需要关注的事情。
未知攻,焉知防,所以本文就来带大家手把手的使用 AI 实时换脸,然后将换脸后的画面输出给 APP 摄像头。
准备环境
本文是在 Windows 环境下演示的,所涉及到的系统和硬件细节如下:
-
操作系统:Windows 11 -
硬件:i5-13600K + RTX 3090 显卡 + CUDA 等环境 -
录屏与推流: OBS (Open Broadcaster Software) -
Andorid 环境:Magisk 面具 + LSPosed + VCAMSX 模块
台式机接入摄像头
Android 配置
如果你是笔记本电脑的话,默认是自带摄像头的,也可以跳过这一节,直接看下面的内容。如果你是台式机电脑或者要追求更高清摄像头的话,那么本小节内容可以供你参考一下。
本次电脑使用 Android 摄像头我们借助的是 DroidCam 软件,官网地址为:
https://www.dev47apps.com/
软件使用很简单,默认对局域网开放出 4747 的端口:
Windows 配置
Windows 安装好 OBS (Open Broadcaster Software) ,直接下载对应的 OSB 插件即可,插件的官方项目下载地址为:
https://github.com/dev47apps/droidcam-obs-plugin/releases
使用效果演示
安装好 OSB 插件后,在 OBS 里面新建场景,手动添加 DroidCam OBS 来源,配置好 Android 的 DroidCam 的 IP 和端口采集到 Android 摄像头的画面:
当然为了追求稳定性这里也是可以直接使用 USB 来传输摄像头画面的:
DeepFaceLive 使用
软件下载
DeepFaceLive 是一个非常有吗的开源实时 AI 换脸的软件,官方的项目地址为:
https://github.com/iperov/DeepFaceLive
不过官方给的下载地址都是用的国外的云盘,我们国内下载还是很慢的,所以国光这里提供了国内的百度云盘的下载地址:
https://pan.baidu.com/s/1zyA4PwPAJbCVnCYOElVZrg?from=init&pwd=26vd
输入视频
DeepFaceLive 可以实时从文件里面导入视频换脸也支持导入摄像头,我们需要 OBS 采集 DroidCam 后开启虚拟摄像头:
然后 DeepFaceLive 里面的相机源选 OBS 的虚拟摄像头即可成功采集到手机摄像头的画面:
照片换脸
使用 DeepFaceLive 里面的 Face swap 模块可以选择对应的照片来简单的换脸,下面是使用马赛克的效果:
模型换脸
当然,照片的维度比较少,为了追求更逼真的换脸效果,我们这个时候就需要使用 DFM 模型数据来换脸了,下面是使用模型换脸的效果:
是不是看起来更像马斯克了呢?不过由于这个模型本身训练的时候没考虑到眼镜效果,所以戴眼镜的实际要差点意思。
视频替换摄像头
我们先使用录制好的视频来替换摄像头做一个概念验证,如果成功的话就可以考虑将换好的人脸实时替换到手机里面了。
Andorid 这里要替换摄像头只有虚拟摄像头的思路,我们使用下面的 Xposed 模块的开源项目来实现:
Github - 安卓虚拟摄像头
使用也很简单,Lposed 开启模块后,选择要 Hook 的 APP 然后重启手机即可生效,我们可以选择本地的视频来简单测试一下:
效果视频截图:
推流配置
既然 Windows 电脑这边可以实时换脸了,Android 这边也可以理论上使用虚拟摄像头替换真实的摄像头,所以接下来就得想办法让 Windows 换脸后的画面实时推给 Android 手机了。好在 VCAMSX 模块支持 RTMP 视频流,所以我们就需要手动搭建推流服务来传输画面给手机了。
RTMP 服务搭建
推流服务搭建很简单,使用 Docker 可以一条命令搭建完成:
docker run -d -p 1935:1935 --name nginx-rtmp tiangolo/nginx-rtmp
使用默认的 1935 端口即可:
OBS 设置画布
因为 OBS 不支持多个场景使用不同的画布大小,所以我们需重新再开一个 OBS 来设置成手机的竖屏画布大小:
DFL 设置
DeepFaceLive 里面将视频流输出选择「合成后的画面」,这个时候会单独有一个窗口来显示合成后的人脸:
OBS 录制屏幕
接下来当然是使用 OBS 进行区域设置截取合成后的人脸画面内容:
OBS 直播推流
OBS 的直播里面设置自定义推流服务,地址就填写我们上面使用 Docker 搭建的 RTMP 服务即可:
接下来点击开始直播即可将画面推送给 RTMP 服务:
我们可以使用支持流的播放器测试看看,国光下面使用的 macOS 下的 IINA 进行 RTMP 播放测试:
可以成功播放:
直播替换摄像头
最后一步当然就是使用 VCAMSX 填写好我们的 RTMP 直播链接,然后测试一下:
接着最后打开我们 Hook 的 APP,下面以美颜相机为例,可以看到成功劫持了摄像头,而且顺便把马老师给美颜了一下:
完整的视频可以参考:https://www.alipan.com/s/4pUGmSZpY83
原文始发于微信公众号(安全小姿势):当心!AI实时换脸可能成为网络犯罪的利器
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论