最近,为应对z的隐私泄漏问题,国外一名开发者在gh开源了自己的替身项目代码,让你在z视频通话应用中使用替身变成可能,项目使用了nis2019一篇论文中的模型作为核心组件,实现了视频流中的动态图像迁移,让你实时切换替身。智能中国
此前z的安全漏洞引发了全球关注,15000个视频被公开到上,造成视频中的个人信息泄漏,虽然z采取了很多安全举措来修补漏洞,但由于产品本身的设计缺陷,修复所有问题远非一日之功。在此期间,如何通过自己的设置,来保障信息安全呢?
近日,一位开发者在gh开源了自己的解决方案,为z、s这类视频通话应用添加自己的替身。让马斯克加入你的z会议
哇哦,马斯克加入了我们的群聊!
当然这并不是真的马斯克。你可能会问这跟df有啥区别?我们知道df的训练和推理速度是非常慢的,满足不了视频通话的实时性要求,这个项目大大缩短了时间延迟,而且不需要大量的替身图片信息,一张就够!项目核心组件:一阶运动模型
项目站在了巨人的肩膀上,项目中使用的一个核心模型来源于下面这篇nis论文。
这个模型可以根据驱动视频的运动,对源图像中的对象进行动画处理,以生成视频序列,而无需使用任何注释或有关特定对象的先验信息。模型采用自监督的方法将外观和运动信息分离,使用了视频中对象的关键点及其局部仿射变换进行特征表示。生成器络对目标运动期间出现的遮挡进行建模,并将源图像中提取的外观与从驱动视频获得的运动进行组合。
可以看出模型由两个主要模块组成:运动估计模块和图像生成模块。运动估计模块的目的是预测密集的运动场。我们假设存在一个抽象的参考框架,然后独立地估计了两种转换:从参考到源以及从参考到驱动,这样的设计使模型能够独立处理源帧和驱动帧。
我们可以使用这个模型轻松地将特朗普的讲话迁移到权游中的人物,也可以让形态相似的静态马奔跑起来,还能一键完成模特的换装,对需要制作大量换装图片的美工来说简直是神器!
来,让l模仿下h。
对比下fs的效果,高下立判。
还有一个比较重要的操作就是人脸对齐,作者使用了另一个开源项目_来提取人脸关键点。如何在z会议中使用替身
有了这两个核心组件,我们就可以来实现视频中的替身制作了,来看下完成替身生成的几个关键操作。
加载训练好的模型 _(_, _, '')
(_)
()
oag(**['_']['_'],
**['_']['_'])()_kd(**['_']['__'],
**['_']['_'])_()
(_, _)__([''])___(['_'])
dwc()_dwc(_)()_()
, _关键点的归一化 __()
(0, t)
ch([, 2])
()[, 2][, 2]
图片的剪裁和扩展 (, 07),
[2]
((, ) * )
()2
()2
[, ], (,,,) _(, ),
[2]
(256 * ()256)
(, [[0,0], [2, 2], [0,0]], '')
2(, (, ))
预测图片生成 (_, _, , __, , '')
_
__
__
_()
(_[](32))(0, 3, 1, 2)()
(_[](32))(0, 3, 1, 2)()
__()
__n
___()
__()
____(, _)
__()
__(__, __,
____, __,
__, ____)
(, __, __)
(['']()(), [0, 2, 3, 1])[0]
[, 1]
((, 0, 1) * 255)(8)
完成了这几步,在z中设置摄像头使用,就可以将生成的图像通过ocv实时推送到视频流了。建议使用头像缩放功能,使你的脸在预览窗口中的比例和位置尽可能接近替身头像。对齐后,点击 x 来使用这个帧作为参考帧,驱动视频的生成。
将你想用的替身图片(通过快捷键19还可以实时更换)放在文件夹下就能实现该功能了,赶紧去给你的z添加个替身吧,再也不用担心隐私泄漏了!参考链接:8935