抠图是件体力活。传统抠图算法主要是以色彩为特征分离前景与背景,并在小数据集上完成,这造成了传统算法的局限性。去年年初,Adobe 等机构发表论文《Deep Image Matting》,采用大规模数据集与深度神经网络学习图像的自然结构,进一步分离图像的前景与背景。今年,有研究人员复现了该方法,并发布在 GitHub 上。
- GitHub 地址:https://github.com/foamliu/Deep-Image-Matting
- 预训练模型地址:https://github.com/foamliu/Deep-Image-Matting/releases/download/v1.0/final.42-0.0398.hdf5
论文《Deep Image Matting》中提出的深度模型包括两个阶段:
- 第一阶段是深度卷积编码-解码网络(deep convolutional encoder-decoder network),该神经网络将图像和相对应的三分图(trimap)作为输入,并预测图像的 α 蒙版(alpha matte)。
- 第二阶段是一个小型卷积神经网络,该神经网络对第一个网络预测的α蒙版进行精炼从而拥有更准确的 α 值和锐化边缘。
该模型用这两个阶段实现较为完善的抠图过程,而且抠图效果相当不错,连头发丝都看得见。
该研究提出的抠图精炼网络的效果。a) 输入图像。b) 编码-解码阶段的输出。c) 精炼阶段的输出结果。
复现
前不久,分众传媒大数据部技术总监兼首席数据科学家刘杨复现了该研究,并发布在 GitHub 上。该 repo 介绍了使用的框架、数据、模型、运行代码等,并展示了抠图效果,以及抠图后与其他图像的合成效果,如下图所示:
第一列为输入图像和对应三分图(trimap),第二列为输出图像和真值(ground truth,GT),第三列为新的背景和合成图像。
从下图第一个例子中可以看到输入图像中动物的毛发甚至腿上的一些其他颜色的印记都可以在抠图过程中很好地保留,而将抠图后的输出与新的背景图像进行合成后的效果也很自然。你能看出来这是抠图合成的图像吗?
下图第二个例子中对人物头发的处理效果也很惊艳,发丝丝丝分明,与新背景图像的合成效果也很不错。
第三个例子中的蒲公英的抠图效果也很不错,不过看最终合成图,似乎把原始图像中的背景(蓝天)也「抠」下来了一部分……不过乍一看依然很惊艳啦~
更多示例参见该 GitHub repo,大家也可以试一试抠图效果哇~