小叽导读:阿里妈妈智能抠图编辑器旨在为设计领域提供简单、易用的在线抠图工具。用户只需要简单几笔甚至不需要任何操作即可以将目标从图片中高精度提取出来,包括头发丝,婚纱,玻璃瓶、烟雾等半透明区域。该工具中使用的自动人物抠图算法(Semantic HumanMatting)为阿里妈妈自研算法,目前已经被多媒体领域国际顶级学术会议ACM MultiMedia2018接收。

背景

抠图是一项从图片中将目标前景高精度提取出来的图像处理技术,其被广泛应用在图像编辑、混合现实、创意合成和电影制作工业中。在像阿里巴巴这种大型电商平台中,无论是店铺内部的商品展示,还是用于广告投放的创意,图片都是重要的载体。而精美创意图片的制作,掌握复杂且耗时的精细抠图方法,往往是设计师绕不开的问题,相信设计领域的同学经常使用PS来抠图,对这一点应该深有体会。

如果有一个工具,设计师不需要专门的抠图培训,只需简单几笔,甚至不需要任何操作即可以将目标从图片中高精度提取出来,还能处理包括头发丝、婚纱、玻璃瓶、烟雾等这种半透明区域,将设计师从复杂耗时的抠图流程中解放出来,专注在设计本身,应该能极大赋能设计领域。而这正是阿里妈妈智能抠图编辑器期望解决的问题,其中图1即为机器自动抠图,然后应用在创意图片制作的例子:

图1:机器自动抠图在创意图片制作中的应用[1]

提起抠图,大家肯定会联想到计算机视觉中的一个经典任务:图像分割(ImageSegmentation),特别是随着深度学习的兴起,图像分割任务受到越来越多的研究者和公司的重视和投入,不断有大型数据集被发布,分割类别也从两类分割(BinarySegmentation)到几十类分割,甚至几千类的分割,分割任务也从语义分割(SemanticSegmentation)进化到了实例分割(Instance Segmentation),分割效果也达到了前所未有的精度。大家也就很自然想到使用图像分割作为抠图背后的算法,但我们认为即使目前公开的最优秀的分割模型结构(如Mask-RCNN等)在目前公开的最大型的分割数据集(如COCO等)上训练得到的结果也很难满足图像编辑这种高精度的,带半透明度的严苛要求。

这其中的原因包括数据集制作的方法(Segmentation的数据集的Label为二值化的Mask),模型结构设计等等因素。图2展示了Matting和Segmentation得到的抠图结果在图片合成中的不同效果。可以看到Segmentation的结果比较“硬”,合成图片中有比较明显的PS痕迹。

图2:Matting和Segmentation的不同抠图效果在图片合成中的不同效果,图片来源于[2]

在学术领域,抠图一般叫Image Matting,其可以被形式化为如下数学问题:

I=αF+(1−α)B,α∈[0,1]

其中I为输入图像,α为半透明度,F为目标前景,B为背景,该公式中除了I以外,α,F和B都是未知的,这显然是一个高度欠定问题,直接求解是非常困难的。因此,为了缓解这一问题,学术界引入了Trimap这一概念作为约束。Trimap,即图3中的图(b),一般通过用户交互得到,它将图像划分为3个区域,分别为确定前景,确定背景和不确定区域,这样通过从用户中得到的Trimap作为约束,极大的提高了抠图效果。

目前学术界中的绝大多数抠图方法都采用了这一思路,但Trimap一般需要用户提供,画Trimap也是一个较耗时和需要“技术”的事情。因此,我们希望完全不需要人工交互,或者只需要较少的人工交互,即可提供不错的抠图结果。基于这个思路,我们提出了全自动的人物抠图算法和制作了带有少量人工交互功能的任意物体在线抠图编辑器。

图3:学术领域中Image Matting基本概念介绍,图片来源于[3]

自动人物抠图

服装类目作为淘宝天猫的重要类目,其中的商品展示图片包含了大量模特,为模特或者人物制作专门的自动抠图算法具有重要应用价值。基于这个应用出发点,我们研发了自动人物抠图算法,下面简单介绍我们为处理该问题所做的思考和工作。

Pipeline

设计一种全自动的人物抠图方法并不是一件容易的事情。如上文所介绍,人们很容易想到直接借助目前计算机视觉领域SemanticSegmentation或者Image Matting技术来解决,但我们认为直接应用他们中的任何一种方法都很难拿到令人满意的效果。

我们首先来考察SemanticSegmentation,目前的Semantic Segmentation模型通常聚焦在相对来说比较粗糙的语义信息判别,而常常容易模糊掉结构化的细节,如头发丝,网状区域等,也不能预估如婚纱这种典型的半透明度区域的半透明度。然后我们来考察具有提取半透明区域能力的Image Matting方法,如前所述,这种方法往往需要用户给定的Trimap作为约束,这种需要用户参与的方式,就自然阻碍了全自动的过程。因此在这篇论文中,我们将SemanticSegmentation模块集成到了一个基于深度学习的Matting模块中,来实现人物的自动抠图。

我们将SemanticSegmentation模块学习到的前背景语义信息注入到Deep Matting模块中来完成在提取结构化细节信息和半透明信息的同时,保证语义的完整性。其网络完整结构如下图所示。

图4:Semantic Human Matting NetworkArchitecture[1]

该网络包含三个模块,负责Trimap预测的语义分割模块T-Net,负责半透明度等细节预估的M-Ne和负责融合语义信息和细节信息的Fusion Module。为了保证整个网络可以end-to-end的训练,以便能够统一优化,得到更好的解,我们提出了一种简单但有效的融合策略,它能够自然的给出alpha的概率估计,从而让T-Net和M-Net自适应的协作,达到在保证语义完整性的同时兼顾半透明等细节。在这个工作中,我们的主要贡献为:

据我们所知,SHM是第一个完全使用深度学习网络来同时学习高级语义信息和低级视觉细节信息的自动人物抠图算法。并且经验结果显示,SHM算法能够取得与state-of-the-art的交互式抠图算法(非全自动,需要用户参与提供trimap)相媲美的效果。

我们提出了一个简单但实用的可微自动融合模块。它能够自动的在每个像素级别上同时考虑粗糙的高级语义信息和精细的低级视觉细节信息,并且让两个子网络协作来完成end-to-end的学习,这对于我们的效果保证非常重要。

为了训练这个网络,我们构造了一个包含52,511张训练图片和1,400张测试图片的大型人物抠图数据集,据我们所知,这是目前最大的Matting领域的数据集。

下面我们主要简单介绍一下Fusion Module、Training Loss和部分实验结果。

Fusion Module

我们使用F,B和U分别表示未经过Softmax的T-Net的输出的三个通道(前景,背景和不确定区域),那么属于前景的概率可表示为:

同理,可以得到属于背景和不确定区域的概率。显然有。我们用表示M-Net的输出,从图4的图例可以看出,由于我们的M-Net的被设计为专注在不确定区域的细节和半透明刻画能力,其输出的不能够很好的保持前背景的语义信息。为了补全这部分语义信息,我们需要借助T-Net的预测结果。现假设一个像素位于不确定区域(如人物的边缘部分,头发丝或者婚纱等区域),我们希望使用M-Net的输出结果来表示最终的;而如果一个像素位于不确定区域之外(也就是前景或者背景),那么这个像素属于前景的条件概率就可以作为最终的一个估计,也就是,因此,对于图片中的所有像素,我们以如下公式来作为最终的概率估计:

注意到,上述公式可以重写为:。

直观上看,coarse semantic segmentation的结果被一个由不确定区域的概率控制的微调项所调整。我们可以看到,当趋近于1时,趋近于0,就被M-Net的输出所逼近;当趋近于0时,就被所逼近。这样fusion module就非常自然的将coarse semantic segmentation和fine details结合起来,而且其可微,便于end-to-endtraining。

Training Loss

我们的训练分为3个阶段,分别为T-Net的pretrain,M-Net的pretrain和整个网络的refinement。T-Net的pretrain过程与常见的semanticsegmentation的训练相似,M-Net的pretrain我们采用了Xu[4]等人提出的alpha predictionloss和compositional loss:

其中,和分别为alpha通道的预测值和ground truth,和分别为复合图像的预测值和ground truth。为平衡参数,在我们的实验中设置为0.5。整个网络end-to-end refine的loss为:。

其中为trimap的cross entropyloss,λ为平衡参数,在我们的实验中设置为0.01,详细的细节请参见论文。

Experiments

客观指标

为了训练整个网络,我们构建了目前已知最大的Matting数据集,包含52,511张训练图片和1,400张测试图片。我们采用了Matting领域常用的评测指标SAD,MSE,Gradient Error和Connectivity Error作为客观评价标准[5],并结合state of the art的segmentation网络和Matting方法建立基线。具体指标结果如下:

除此之外,我们对我们网络中的各个组成成分进行了Ablation实验,验证各个模块的作用。

可以发现我们方法在各个指标上相比于基线均有明显提高。

我们同时对比了目前state-of-the-art的交互式抠图方法(需要人工提供trimap)与我们方法的效果,如下表所示:

可以发现,我们的自动抠图方法比绝大多数需要提供trimap的交互式抠图方法效果都好,需要注意的是,上表中别的方法都需要人工提供精确的trimap,而我们的方法除了输入图片之外,不需要提供任何额外信息。虽然我们的方法比Trimap+DIM这种交互式抠图方法在客观指标上要差一点,但在从下节中主观视觉对比中可见,其在视觉上与该种方法差别不太大。

主观视觉对比

我们展示了我们方法与其中几种典型方法的视觉对比,以下为论文截图,更多方法和高清的图片对比请参考论文和补充材料[1]。

图5:主观视觉可视化对比

图6:主观视觉可视化对比

中间结果可视化分析

为了更好的理解我们的SHM的工作机制,查看两个子网络是如何协作的,我们对该网络的中间结果进行了可视化,如图7所示:

图7:中间结果可视化

其中(a)为输入图片,(b)为T-Net预测的前景(绿色),背景(红色)和不确定区域(蓝色)的概率值显示在RGB图像上,(c)为M-Net的输出结果,(d)为经过fusion module之后的最终alpha的预测值。从中我们可以看到,T-Net能够自动的分割出人物的主体部分,并且能够区分出人物轮廓部分划分为不确定区域时哪些地方应该给予较窄的边,哪些结构性细节应该给予较宽的边。并且,由于有T-Net负责主体语义部分,这让M-Net可以更加专注在细节等半透明区域,然后通过fusion module的融合,使我们能够得到高质量的alpha预估结果,而这正符合我们的设计初衷。

交互式抠图编辑器

在自动人物抠图算法的基础上,通过与UED团队,前端团队和算法工程团队合作,我们开发了通用物体的在线抠图工具。

用户只需要简单几笔甚至不需要任何操作即可以将目标从图片中高精度提取出来。该工具的主要目标就是最大程度简化抠图流程甚至完全自动化。下面将简要介绍在线交互式抠图编辑器的主要流程和使用方法。

抠图流程示例

以下我们演示一个能够用到我们整个流程的抠图案例,需要注意的是,并不是每张图片都需要走完全部流程,如果对抠图结果已经满意,可以中途中止流程,完成抠图。

1、登录阿里妈妈创意中心:申请权限并进入抠图工具页面,点击“上传图片”按钮,上传需要抠图的图片。

2、算法后台会获取图片,并猜测用户可能需要抠取的目标,并将抠图结果自动返回前端页面展示给用户。

3、用户判断自动抠图结果是否满意或者是否为想要抠图目标,如果满意,点击保存按钮,完成抠图过程。

4、如果不满意,进入交互式抠图调整流程。使用“选定主体”工具原定如下模特主体,算法自动完成抠图,判断结果是否满意。如果已经满意,保存抠图结果,完成抠图,如果有背景混入,使用“擦除背景”工具去除多余背景,直到满足主体的完整性,如有部分细节缺陷,如部分头发丝缺失或者边缘部分有些许毛刺,可进入“精修模式”调整细节。

5、如果对抠图精度要求非常高,对细节和般透明度要求非常细腻,可进入“精修模式”。