参考代码:IndexNet
1. 概述
导读:这篇文章是从采样的角度去思考其对matting(segmentation)的影响,文章发现使用indices-guided的pooling/unpooling操作能在生成结果的边缘上比双线性插值类方法获取细节更加精细的结果,并且现有的上采样操作理论上都可以与index function思想统一(图像差值可以看作是一种特殊的index function,从而转换到mask,矩阵运算的形式表示)。在此基础上文章将indices作为特征图对应的功能,从而在训练的过程中使用数据(数据驱动与自适应)去学习index过程(上采样与下采样),得到一种index-guided的编解码网络结构。由于文章的改进主要是在index采样部分,这就使得文章的方法具有较好的可移植性。文章的方法在使用MobileNetv2作为其backbone基础上比相同条件下使用VGG-16作为backbone做matting得到的性能高16.1%。
一般在分割网络中对于上采样是使用bilinear的插值方式得到的,其原理也是很简单的:一个区域附近的类别是近似的,而使用unpooling操作是一种稀疏的表达,但是unpooling操作却可以产生更加清晰的边缘,这是bilinear方法不能比拟的。文章指出导致这样问题的原就是出在indices这个过程上的。下图展示的就是使用bilinear的方法与文章的方法在边缘细节上的对比:
那么基于bilinear和unpooling的方法它们都有各自的优点和不足,那么可不可以将两者的优点进行结合?这也是这篇文章解决的事情,文章将indices function使用CNN网络进行建模从而实现上采样的过程,从而使得upsampling的过程可以依据数据的不同而进行动态变化(数据驱动与自适应),学习边界与纹理信息。
2. 上采样与index function的统一
在窗口大小为 k ∗ k k*k k∗k, X ∈ R k ∗ k X\in R^{k*k} X∈Rk∗k数据中上采样可以描述为:
I m a x ( x ) = f ( x = m a x ( x ) ) , x ∈ X I_{max}(x)=f(x=max(x)),x\in X Imax(x)=