AI换脸的一种技术实施例

刚刚看一个关于图像识别的帖子时,发现了AI识别中一个可以利用到其它场景的一个通用处理步骤:人脸矫正

1.一种人脸识别过程

人脸识别过程:
1.首先识别到关键的人脸部分,经过一个粗筛过程,把目标物的脸部图样先抓出来
2.然后,因为人脸的水平,垂直角度是可变的,所以第二部,它会把人脸强制归正,归一化到平视,摄像头正向前置,人脸的尺寸也缩放到与人脸库中的人脸尺寸相当的地步。
3.开始提取特征点位
4.进行最简单的特征点位比对。
并且注意,第2步运算是可逆的矩阵运算。就是把正面照贴合到任何一个角度和姿态。所以,这就是换脸的技术路径。通过上述方法可以把人脸数据库里任何人的脸与原始图片做无缝贴合——换掉你的脸。

人脸识别过程的完整步骤可参看:https://blog.csdn.net/m0_68662723/article/details/134402072

AI换脸的一种技术实施例_第1张图片

这涉及到专利吗?感觉很像是一个专利。

1.1 三维物体的二维图片识别时的归一化过程

注意,人脸矫正过程和归一化过程。利用有限的坐标点位,将原始图片进行投影 - 旋转 - 缩放,转换为标准姿态【实际使用的可能只是拉伸扭曲算法】,标准大小,然后与图像特征库的点阵进行比对的过程,是图像识别的一个必须的过程。它可以大大降低运算量。这样做之后,摄像头拍摄的各种视角的图片相当于归一化到标准证件照,然后识别所需的运算量会大大降低。

它不仅仅可以用于人脸识别,事实上,它可以用在各类物体的计算机视觉识别方面。那个关键点检测和图片视角矫正和尺寸归一化环节,并不需要目标物体的所有的特征点位参与运算,只是几个非常粗的点,用于对边界范围内的可疑物体实现投影,旋转和缩放这个过程,将其转换为标准机位的标准尺寸的图片。

一旦对齐到标准机位和标准尺寸,而后就可以提取更多的特征点位并和数据库内的大量人脸图片做逐一比对了。

注意,是要把原始图片中的粗晒物体本身做归一化。而不是图像识别库的每一张原始图片,直接比对;或者分别针对每一章原始图片,尝试对齐,然后再做比对,那个运算量太大了。

1.2 一种AI换脸的实现

注意一件事:投影,旋转,缩放,对于计算机而言,是一组矩阵运算,而这组矩阵运算是可逆的。。。这意味着,你可以在识别出人脸后,用另外一张在别的场景拍摄的脸,同样进行归一化后,然后用当前图片的归一化矩阵,逆向操作,将另外一张脸贴合在当前图片上,完全覆盖掉当前图片。

甚至,视频中各帧图片中,需要被替换掉的人脸矫正和归一化矩阵也可以预先逐帧算好备用。换脸的过程,待换脸的人的图片也已经预先归正,归一化完毕。所以换脸的运算量可以非常快的进行。甚至定点运算就可以——因为相关的坐标计算已经算过了。

附录A AI图像识别的分辨率选择

为什么yolov3选择406这个分辨率呢?因为此时各个特征坐标点的bit数在512*512 = 0x40000这个量级。这刚好是2.5字节。另外,可能也考虑了AI图像识别时卷积运算的复杂度,可能刚好落在float的区间,或者刚好落在了int64的区间。这是当前芯片和所能提供算力的约束。

图像识别库,要考虑各种芯片和算力条件,比如有些芯片浮点能力首先,它必须考虑卷积运算的定点转浮点,此时,原始图片的尺寸必须不能超过Int32,或者Int64,在这个约束下,图片的最大可能分辨率会严格受限。分辨率受限,特征点位对应的特征向量的长度就也会随之受限,然后会导致识别精度受限。按照原始链接的分享人提供的信息,当前技术条件下,人脸的特征值复杂度大概是在256字节这个量级。

此外,高分辨率条件下的人脸特征值一但得到。转换矩阵如果可以按角度,离散化到比如65536组不同的机位,那么,对应不同视角下的人脸,人脸识别的速度,连同精度,都可以显著加快——这可能就是为什么图像识别现在越来越普及的原因——图像识别支持跨越2000公里,在乌鲁木齐的一台自动售货机上,直接人脸付账,为什么?因为特征点位和转换矩阵是有限的。并且相关的运算复杂度,支持向量加速的单片机都可以轻松应对。

你可能感兴趣的:(AI,问题建模,设计,人工智能)