SHM(Semantic Human Mating)算法详解

论文题目:Semantic Human Matin
论文链接:论文链接
论文代码:None

目录

    • 1、人像抠图简介
    • 2、本文的贡献
    • 3、本文整体框架详解
    • 4、论文实现细节详解
    • 4.1 T-Net详解
    • 4.2、M-Net详解
    • 4.3、融合模块详解
    • 4.4、Loss函数详解
    • 5、论文实现细节说明
    • 6、算法性能展示
    • 6.1、客观评价指标结果展示
    • 6.2、主观指标评价结果展示
    • 7、总结与感悟
    • 注意事项

1、人像抠图简介

基于深度学习技术研发的人像抠图技术。可识别视频图像中的人像区域,包括头部、半身、全身位置,抠出人像部分后,配以不同背景图片、效果,实现娱乐化需求,支持用户玩转更多个性化操作,常用于直播、视频场景中。
SHM(Semantic Human Mating)算法详解_第1张图片
上图为人像抠图的结果,抽取的图像可以用来更换背景,常常使用在娱乐视频中广告制作中。其类似于人像分割,但是两者的输入一般是有区别的,人像分割的输入只需要原始的图片,而人像抠图的输入不仅需要原始的图片,还需要一个trimap,即知道任务的大体轮廓,但是不知道边缘信息,想想我们常用的PS抠图就理解啦。

2、本文的贡献

  • SHM是第一种全自动抠图算法,可以学习将语义信息和高质量细节与深层网络联合起来;
  • 本文提出了一种新的融合策略, 它可以自适应地在每个像素上集成粗略的语义和细节结果,这对于实现端到端训练至关重要;
  • 创建了大规模高质量的人像数据集。 它包含35,513个具有相应alpha配对的人类图像。该数据集不仅能够在SHM中对深层网络进行有效的训练,而且还有助于其在有助于人像抠图的研究。

3、本文整体框架详解

SHM(Semantic Human Mating)算法详解_第2张图片
上图展示整个算法的框图,其中T-Net用来进行初步的语义分割,然后将分割的结果划分为B(背景区域)、F(前景区域)和U(不确定区域),M-Net用来获取网络边缘的细节信息,融合模块的作用是生成最终的精细分割结果。整个算法的实现步骤如下所示:
**步骤1:**对输入的原始图像进行预处理操作;
**步骤2:**将图片输入到T-Net网络中,开始训练T-Net网络,该网络是一个PsP50-Net,用来生成初步的语义分割结果,即进行所谓的粗分割,然后从分割图像中分别获取到背景图片B、前景图片F和不确定区域U;
**步骤3:**将前景图片F和原始图片的通道叠加起来形成4通道的图片送入M-Net网络中,训练该网络,获得临时的结果alpha;
**步骤4:**给二值图片alpha乘上不确定区域U用来获取alpha中的边缘的细节纹理信息,(注意是二值图片相乘),然后在其结果的基础上面加上原始的前景图片F,聪的最终的结果;
**步骤5:**对T-Net和M-Net整体进行网络微调。类似于Faster-rcnn.

4、论文实现细节详解

4.1 T-Net详解

该网络的主要重要是对输入的图片进行语义分割操作,获得初步的分割结果,即所谓的trimap图片,我们知道语义分割的结果并不能输出精确的结果,文中使用PsP50-Net来充当该网络。然后按照传统的trimap的思路获取相应的前景图片F、背景图片B和不确定区域U。文中的PsP50-Net可以替换为任意的一个可以很好的分割人像的语义分割算法。

4.2、M-Net详解

M-Net的作用是用来获得人像的细节信息,网络的架构类似于FCN,网络编码阶段使用了13个卷积层和4个最大池化层,网络解码阶段使用了6个卷积层和4个上采样层,网络编码阶段使用VGG16进行初始化操作。网络的输入是原始的图片+前景信息F,即所谓的4通道输入。

4.3、融合模块详解

所谓的融合模块即对应于原图中的像素点乘和像素相加操作,其作用分别是用来获得图片边缘的细节信息和整体结果。如果F、B、U分别表示没有经过T-Net网络层的一个输出,则对应的Fs的计算过程如下所示:
在这里插入图片描述
其中Fs+Bs+Us=1,T-Net的输出结果使用alpha_r来表示,其最终的结果可以使用下式来表示:
在这里插入图片描述
其中最终的结果使用alpha_p来表示,根据上式和Fs+Bs=1-Us可以得到以下的结果:
在这里插入图片描述
将该等式对应到框图中,即可得使用不确定区域Us点乘上对用的alpha_r之后,然后将相应的Fs进行相加,即可获得最终的结果alpha_p。

4.4、Loss函数详解

整个网络的loss如下所示:
在这里插入图片描述
其中Lp表示的是alpha的loss,其具体的定义如下所示:alpha_p表示预测的结果,alpha_g表示对应的gt结果;Cp表示预测的合成图,Cg表示对应的gt合成图。而Lt则表示一个分类loss,lambda则是一个超参数,用来防止模型过复杂,文中设置其为0.01。
在这里插入图片描述

5、论文实现细节说明

1、整个网络的训练过程是:先分别训练T-Net和M-Net,然后对两个网络同时进行微调操作;
2、T-Net的训练标签是通过对输入的alpha的边缘使用膨胀操作获得,其实还有一个更好的方式来获得trimap,对输入进行裁剪,并将输入统一缩放到400x400大小,使用了随机旋转和水平翻转来防止网络发生过拟合操作,使用PsPNet,使用分类loss进行预测;
3、M-Net使用预训练的网络进行初始化,将输入图片裁剪成320x320,使用回归loss;
4、端到端的训练两个网络的细节如下所示:
SHM(Semantic Human Mating)算法详解_第3张图片

6、算法性能展示

6.1、客观评价指标结果展示

SHM(Semantic Human Mating)算法详解_第4张图片
上图的作用是说明了同时使用两个网络能够获得更好的分割效果,即所谓的语义分割+人像抠图,本文的方法不能网路小、效果好而且收敛的速度比较快。

SHM(Semantic Human Mating)算法详解_第5张图片
上图展示本文提出的方法由于其它使用trimap的人像分割算法。

6.2、主观指标评价结果展示

SHM(Semantic Human Mating)算法详解_第6张图片
效果是不是很惊艳,头发丝都搞出来,厉害呀!
SHM(Semantic Human Mating)算法详解_第7张图片
图a表示原始的输入图片、图b表示T-Net预测的结果、图c表示M-Net预测的结果,图d表示最终的输出结果。
SHM(Semantic Human Mating)算法详解_第8张图片
该图展示了分割效果的同时,对人像进行更换背景操作。

7、总结与感悟

这篇文章将人像分割的精度提升到了一个更高的等级,主要的思路是通道使用两个网络进行联合分割,前者使用传统的分割网络来获取初略的人像区域,并分别区分出前景区域F、背景区域B和不确定区域U,后者使用人像抠图技术用来获取网络的细节信息,通过融合模块获得精细的分割结果。整个网络的训练过程类似于Faster-rcnn的思路。不过比较奇怪的是本文只在Axvig上面出现过一段时间,然后就被删除了,可能的原因是效果太好了,阿里要进行商业应用,不方便公开了吧!所以本文提供了网盘下载链接!通过本文终于明白了很多APP的真实面目没,哈哈,在论文的结尾给大家推荐一个人像分割的APP,前期叫马卡龙,后期改名为Versa,该App的分割效果特别惊艳,不管是单人像还是多人像基本上都能很好的处理,同时可以在线访问官网进行测试。versa-versa链接

注意事项

[1] 该博客是本人原创博客,如果您对该博客感兴趣,想要转载该博客,请与我联系(qq邮箱:[email protected]),我会在第一时间回复大家,谢谢大家的关注。
[2] 由于个人能力有限,该博客可能存在很多的问题,希望大家能够提出改进意见。
[3] 如果您在阅读本博客时遇到不理解的地方,希望您可以联系我,我会及时的回复您,和您交流想法和意见,谢谢。
[4] 本文内容中的大部分内容都摘自该博客,本来打算按照自己的思路去写,不过想来想去还是绝对这篇博客说的更好一点,为了让读者们能够更好地了解该论文,还是引用了该博客的内容。
[5] 本人业余时间承接各种本科毕设设计和各种小项目,包括图像处理(数据挖掘、机器学习、深度学习等)、matlab仿真、python算法及仿真等,有需要的请加QQ:1575262785详聊!!!

你可能感兴趣的:(人像分割)