《Deep Image Matting》论文解读

前言

此博客主要是这篇论文的主要思想的总结,以及相关网络结构的简单介绍说明。
论文地址: Deep Image Matting.
关于论文的复现相关参加我的另一篇博客:pytorch实现《Deep Image Matting》.

作者提出以往matting算法的不足:
1.仅仅依赖颜色信息(空间),是的前后景高度重合区域抠图效果不佳。并且会出现低频 “smearing”或者高频的“chunky”。如:
在这里插入图片描述

2.非常小的数据集
而此篇论文着重解决了这两个问题,此篇论文的改进:可以学习自然的结构,如头发毛发,以及桌子边角等等。

数据集

作者提出之前的数据集都太少,所以作者创建了自己的数据集。他们先提取前景图片,然后把前景图片和其他的背景图片随意组合生成新的图片,这种方法就可以生成更多的图像数据集了,简单来说就是合成目标到新的背景上。训练数据集有493个不同的前景目标和49,300幅图像,测试数据集有50个不同的前景目标和1000幅图像。优点在于他们的图像广泛,覆盖全面,包括了毛发皮肤等,并且他们还具有纹理复杂、前后景高度重叠的图像。

模型结构

主要分为两个阶段:第一阶段是深度卷积编解码网络,以一个图像patch和一个trimap作为输入,损失函数有alpha预测损失和一种新的合成损失。第二阶段是一个小的全卷积网络,它从第一个网络中提炼出更精确的alpha值和更锐利的边缘。
整体是先让第一阶段收敛后再整体作为第二阶段的输入,然后最后再整体微调。如果只用第一阶段的结果也是可行的,但是在尖锐的边缘处不够明显,并且过于平滑,所以增加了一个4个卷积网络层。
在这里插入图片描述
(1)Matting encoder-decoder stage
Network structure
编码:14 convolutional layers and 5 max-pooling layers
解码: 6 convolutional layers and 5 unpooling layers

首先编码部分使用 VGG-16 的网络结构作为编码器来提取特征,不过其中有一点点变形,就是把最后一层的全连接层换成了普通的卷积层,这跟FCN思想是一致的,我猜测这样是为了更好的提取所谓的high feature。所以一共有14卷积层,然后有5个步幅为2最大池化层,所以分辨率会下降32倍。在解码部分为了加速进行了一定地缩小,只有6个卷积层和5个反池化层,所以最后图片的分辨率恢复原来的尺寸。这里的反池化层是用的unpool操作,而不能用deconvolution。这是因为后者太过于麻烦且精细,可能会产生过拟合的结果。并且一般训练网络也很少用deconvolution。

编码器的输入部分是一个四通道的图,所以大小为320 * 320 * 4,所以我们卷积核最开始通道数也必须为4通道。vgg-16的网络结构如下:
在这里插入图片描述
所以我们看出我们的卷积核最开始设置为3 * 3 * 4 * 64.经过一次卷积之后输出变为160*160,所以下一次我们的卷积核大小设置为3 * 3 * 64 *64.然后根据额网络结构以此类推。比如我们在第四个卷积层的卷积核设置如下(3 *3 * 128 *128):
在这里插入图片描述

损失函数
alpha预测损失 :输出和真实图像alpha值的差值的绝对值。须注意的是一位内绝对值不能求导,所以使用平方差公式。
在这里插入图片描述

新的合成损失:预测的RGB和真实的RGB上万差值的绝对值,这跟上面的loss函数没有本质的区别。需注意的是这里的rgb都是根据原图和alpha图合成的。
在这里插入图片描述

一些训练策略
1)我们以未知区域的像素为中心,对320*320 (image, trimap)进行快速裁剪。
2)我们还裁剪不同大小的训练对(例如,480 *480,640 *640),并将其大小调整为320 * 320。
3)在每个训练对上随机进行翻转。
4)Trinmap从它们的ground truth alpha mattes中随机扩展。
5)在每个训练历元之后随机地重新输入训练输入。

(2)Matting refinement stage
由于第一部分呢编码-解码器结构的原因,结果有时过于平滑。因此需要扩展网络,以进一步细化第一部分的结果。这种扩展的网络通常预测更准确的alpha mattes和更锐利的边缘。
Network structure
4 convolutional layers: 前面三个卷积层最后都有一个非线性的 “ReLU”
损失函数:alpha预测损失(跟第一阶段的一样)。
一些训练策略:编解码阶段中的除了第四点,都用到了。

疑问

1.输入裁剪成320* 320不会越界吗?
文章中说以位置区域进行320*320的裁剪,但是如果出于边缘越界怎么办?论文中好像没有说过,是padding全0还是怎么插值?

2.由于是合成的训练数据,那么其实前后景边缘分布就特别明显,那么当我们使用真实的数据的时候,机器学习的网络能否处理前后景重叠率高的图片?这不是存在以往算法中同样的问题吗?

3.合成的图像是否会引入新的问题?比如机器会对于不同的感光度等分别区分处理,这一疑问论文作者自己也说明了:
在这里插入图片描述

其中奇怪的是作者只是说针对这个问题,他们通过实验数据发现和之前的算法对比,他们有更好的结果。我认为这是间接性的说明了这种问题的确存在,但是影响不大。(不过根据我自己的实现,对于自然图像的抠图并没有文章的效果那么好,所以我认为这种影响至少是不可忽略的)。

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值