人像分割技术解析与应用
一、抠图简介
抠图主要解决的是图像中前景和背景区域的准确预测问题,对于图像编辑和影视制作有着及其重要的实际意义。所以准确有效的抠图算法可以极大的改善内容生产的工作流程,从而节省大量的人力物力来提高工作效率。
抠图作为一个基本的计算机视觉问题,在很多领域都有着很多的应用。
而关于抠图的传统方法通常是基于 trimap(三值图)对前景、背景和 alpha 进行估计,但当图像中的前景和背景颜色相似或有着比较复杂的纹理时,传统算法很难取得比较好的效果。所以传统方法的局限主要在于参考的都是低级的颜色、纹理和结构特征缺乏高级的语义信息。
随着近年来深度学习技术取得的巨大发展,其强大的高级特征提取能力恰好解决了传统技术的弊端。ZEGO 即构科技使用深度学习技术解决图像、视频等抠图任务并在多个业务场景中进行了广泛的应用。本篇文章我们将带领大家主要了解关于抠图在人像分割方向的技术实现过程与场景应用介绍!
二、抠图技术原理解析
抠图本质上就是精细化的分割,因此其重点还是在如何获取高质量的透明度掩膜(alpha 图)上。
对于抠图而言,可以用以下公式进行概括:
Ri=Ai*Fi+(1-Ai)*Bi
其中Ri表示最终的结果,Ai表示抠图所需的透明度掩膜,Bi表示需要替换的新背景。 在Ai中,前景位置的值是大于 0 的,而背景位置的值等于 0。
如公式所示,抠图算法的难点主要在于只知道每个像素的 RGB 值但却要对前景的 RGB、背景的 RGB 以及透明度 ALPHA 等 7 个未知值进行估计。
传统算法大多通过 trimap(手工绘制)的方式来生成 alpha 图。trimap 中包含了 3 种不同的像素值,其中像素值为 0 的位置表示是确定的背景,像素值为 1 的位置表示的是确定的前景,而像素值为 0.5 的位置表示的是未知区域,这部分位置既可能是前景也可能是背景,而抠图算法要解决的就是在未知区域中通过 random walking、knn、closed form 等等方法求解出前景和背景
![](https://static001.geekbang.org/infoq/73/73d3aca3306fd610c8748a620fcb9414.png)
trimap 生成 alpha 图
trimap 的绘制需要用户具备一定的经验知识,因此不具备普适性。同时 trimap 由于需要进行人机交互,因此也不具备实时性。
ZEGO 即构科技为了解决上述问题,采用深度学习的方式研发抠图算法。该算法整体采用 encoder、decoder 结构,只需输入一张待抠图图像就能生成最终的 alpha 图。
![](https://static001.geekbang.org/infoq/a7/a7d97324c8a82c3632fba7df67f2efaf.png)
编码解码器结构
该结构能够对输入图像进行编码压缩并提取其深度特征,最终通过解码器解码去拟合真实的 alpha 图样本。我们的 encoder 采用轻量级的 mobilenetV3_small 架构,能够在边缘设备上进行实时的计算。
数据对于深度学习而言至关重要。我们使用公开数据集以及大量的网络图片构建了一个 40 万规模的抠图数据集,其中的 alpha 图全部通过 photoshop 等专业软件手工获取。该数据集包括了各种日常场景下的半身、全身人像,单个或多个人像目标以及各种姿态下的人像。
为了解决视频抠图中的闪烁和误差问题,我们在自己的网络结构中加入了时间序列信息,下一帧的处理会参考上一帧的结果并进行修正。
![](https://static001.geekbang.org/infoq/92/921a93ac0b05d32efcd7e3a84e02e1c5.png)
![](https://static001.geekbang.org/infoq/2d/2da97a8860dc6e102271ed3c0059e088.png)
t 时刻 t+1 时刻 t+2 时刻
时序信息对误差进行修正
同时为了能够在端侧设备进行实时推理并保持较好的效果,我们将网络结构分成了两个分支,其中一个分支只包含少量的卷积算子以便对高分辨率输入提取特征,另一个分支对原始输入进行下采样后,利用 encoder-decoder 结构对低分辨率信息进行压缩和提取,最后对两个分支的输出进行融合并生成最终的结果。
![](https://static001.geekbang.org/infoq/3d/3d93f60b1ae88e5574d86d3fc54f07c1.png)
整体算法流程
为了避免过拟合以及获得更好的泛化性能,训练策略我们采用分割数据和抠图数据混合训练方式。在每个奇数次迭代时,使用 COCO、YouTubeVIS 2021、Supervisely Person Dataset 等公开的分割数据集进行训练,其余迭代使用自己的大规模数据集进行训练。学习率的更新采用余弦退火重启方式,避免网络陷入局部最优点并加快训练速度。
针对不同的平台我们设计不同规模的模型来针对不同抠图任务。离线处理或服务端我们采用规模更大的模型来获取更精细化的结果而移动端则使用小模型来获得推理速度和精度的平衡。
![](https://static001.geekbang.org/infoq/08/08b2e5100320859e1b619869e8094fcf.png)
ZEGO 小模型抠图算法细节展现
从上图可以看出,通过和友商的人像抠图对比,即构的算法在头发丝这些精细场景的处理下能够保留更多的细节。
三、人像分割场景应用
1、证件照背景替换
日常生活中,我们经常需要用到各种各样的证件,例如红底、蓝底、白底等,然而针对不同证件的需求去照相馆多次拍摄需要花费一定的经济与时间成本。当然市面上有很多专业的图像处理软件,但是对于普通人而言,专业软件的学习还是存在一定的学习门槛。
ZEGO 即构科技的 AI 智能证件照抠图算法无需用户具备专业软件的使用知识,根据人脸关键点检测自动对原始图像进行头肩像裁剪,随后利用抠图算法完成任意颜色背景的替换。我们的算法具备轻量级的特点,整个模型文件只有 6MB,在 CPU 环境下进行一张证件照抠图只需要 100ms 的时间。
![](https://static001.geekbang.org/infoq/36/36a8321603961b57d5a45183611085ea.png)
2、线上艺考背景虚化
在一些线上考试场景例如舞蹈、声乐、播音等艺考场景的背景中,通常会出现一些横幅、广告或其他与考试无关的信息,特别是在舞蹈和声乐的线上考试中需要特别注意这个问题,要保持画面的完整性和立体感,还要使得评审老师能更关注于考试内容本身,这就需要一些针对人像的抠图算法,然而一般的算法非常容易将乐器、舞蹈道具、舞蹈服(主要是一些奇装异服)给抹掉,因此直接替换背景是行不通的。
ZEGO 即构科技提出了背景虚化的方案,该算法在抠出人像的同时,会对背景画面进行模糊处理。该算法参考了视频帧之间连续的时序信息,对画面闪烁有很好的抑制性。
该算法的整个模型文件只有 3MB,具备极轻量化的特点,在 M1 芯片的 Mac Book Pro 上处理一帧画面只需要 20ms 的时间。
![](https://static001.geekbang.org/infoq/30/306fbccb7a3862891946c6fb21a033bc.png)
3、游戏主播背景替换
游戏主播一边共享自己的游戏画面另一边开启自己的摄像头和观众互动已经成为当今的主流玩法,游戏直播的内容固然重要,但主播和观众良性的互动更能降低观众的流失率。然而游戏主播的直播地点大多都在自己的家中,对隐私保密有着一定要求。
ZEGO 即构科技的抠图算法能够快速的提取人像,并使用任意图片作为背景,从而很好的保护用户隐私。
![](https://static001.geekbang.org/infoq/2e/2eafb2d1eaaac374097cf8c499cb15c4.png)
更换背景后保护了用户隐私
四、结尾
通过上文的介绍,我们了解到了抠图在人像分割方向的技术实现原理与常见应用场景,通过人像分割技术,可以更好的保护用户隐私,展现重点场景。
ZEGO 即构科技通过深度学习技术解决图像、视频等抠图任务并在多个业务场景中进行了广泛的应用,尤其是在一些精细场景下,比如头发丝的细节处理,也有很好的效果表现!点击即构主体分割技术详解
评论