论文阅读:Deep Image Matting

论文地址:https://arxiv.org/pdf/1703.03872.pdf

内容简介

  • 这个网络是用来做抠图的(Matting),能够取得出色的效果,算是利用深度学习进行抠图的鼻祖
  • 提出了Adobe Image Matting(AIM,有时也称DIM)数据集,解决了之前抠图数据稀缺的问题,后续很多工作也以此数据集为基础

网络结构

论文阅读:Deep Image Matting
简单来说就是一个Encoder-Decoder + Refine的结构,其中:
在第一阶段,每次Encode下采样将特征图尺寸缩减为原来的1/2,共五次,最终将特征图缩小为1/32;然后再上采样回输入尺寸,获得一个粗分割结果

而第二阶段的意义在于,由于Encoder最终会将特征图尺寸降到很小,不可避免地会丢失细节,最终Decode出来的图是比较“平滑(smooth)”的,并不精细。
这里的细化,说白了就是将原图和预测的alpha matte按通道连接,扔到一个很小(四层)的卷积网络中进行训练。这么做单纯意义就在于因为没有再下采样(基本什么都没有,只有卷积和relu),不会损失细节,便可能对输出结果进行简单的“打磨”,实现更精细的结果。毕竟一开始第一阶段的任务就相当于“用较复杂的结构打磨trimap”,那么这一阶段打磨一下alpha matte就不需要下采样上采样了。

Dataset

在这篇文章之前,能用的数据就基本只有alphamatting.com上的27张训练图像和8张测试图像(要获得高质量的标注实在麻烦)。这就导致一个问题,之前一些表现很好的方法,实际上可能已经都过拟合了…

但是要重新一个个抠又十分麻烦,因此这里采用了个神奇的方法:首先还是自己抠几个(共493个前景),然后从MS COCO和Pascal VOC里面随机抽100张图作为背景,把前景和背景进行合成,就有49300张训练图了。

这里有个问题就是网络有没有可能受到人工合成因素(比如噪声)的影响,不过在作者的实验中并没有发现问题。

Loss

用了两种loss:

  • alpha-prediction loss: 其实就是预测alpha matte和gt alpha matte之间的逐像素差绝对值。不过因为绝对值本身是一次的不可导,因此这里先平方,加上一个小项 ϵ \epsilon ϵ,再开根号来进行近似
    L α i = ( α p i − α g i ) 2 + ϵ 2 , α p i , α g i ∈ [ 0 , 1 ] \mathcal{L}_{\alpha}^{i}=\sqrt{\left(\alpha_{p}^{i}-\alpha_{g}^{i}\right)^{2}+\epsilon^{2}}, \quad \alpha_{p}^{i}, \alpha_{g}^{i} \in[0,1] Lαi​=(αpi​−αgi​)2+ϵ2 ​,αpi​,αgi​∈[0,1]
    其中 α p i \alpha_{p}^{i} αpi​为预测 α \alpha α值, α g i \alpha_{g}^{i} αgi​为真实 α \alpha α值, ϵ = 1 0 − 6 \epsilon={10^{ - 6}} ϵ=10−6。
  • compositional loss: 合成损失。也就是我们在抠出一个alpha matte后,就可以将相应前景与背景进行合成,得到一个新的图像,将这张图像与gt进行比较,计算逐像素RGB差绝对值。相应公式与上类似:
    L c i = ( c p i − c g i ) 2 + ϵ 2 \mathcal{L}_{c}^{i}=\sqrt{\left(c_{p}^{i}-c_{g}^{i}\right)^{2}+\epsilon^{2}} Lci​=(cpi​−cgi​)2+ϵ2

最终的loss就是这两个的加权:
L overall  = w l ⋅ L α + ( 1 − w l ) ⋅ L c \mathcal{L}_{\text {overall }}=w_{l} \cdot \mathcal{L}_{\alpha}+\left(1-w_{l}\right) \cdot \mathcal{L}_{c} Loverall ​=wl​⋅Lα​+(1−wl​)⋅Lc​
这儿比较有意思的是没有简单地将所有区域的 w l w_{l} wl​设置成0.5。对于位于trimap未知区域内的像素,将 w l w_{l} wl​设置成1,反之设置成0,本质上是种分类讨论。

Data Augmentation

常规的:

  • ColorJitter:色彩抖动
  • Flip:左右翻转(上下翻转应该就不用了)

自创的:

  • 从trimap的未知区域中裁出320×320的块(毕竟只有未知区域是我们要处理的)
  • 将图像随机裁切后resize为320×320

其他

  • 用到的trimap是由gt alpha matte随机膨胀得到的
  • encoder由VGG-16的前14层初始化
上一篇:Not so Mobile UVA - 839


下一篇:server 2022安装后的设置