论文阅读 2017-Not All Pixels Are Equal: Difficulty-Aware Semantic Segmentation via Deep Layer Cascade

最近在读一篇2017的CVPR的论文,Not All Pixels Are Equal: Difficulty-Aware Semantic Segmentation
via Deep Layer Cascade,并非所有像素都是相等的:通过深层级联实现困难感知的语义分割。下面从论文进行细致的分析。

摘要

我们提出了一个深层级联(Layer cascade, LC)的方法来提高精度和分割速度。与那些多个模型组合的传统模型级联(Model cascade, MC)不一样,层级联将单个深层模型视为多个子模型的级联。训练前期的子模型来处理简单和高置信的区域,然后逐渐地将较难的区域前馈给下一个子模型进行处理。

深的层级联

论文阅读 2017-Not All Pixels Are Equal: Difficulty-Aware Semantic Segmentation via Deep Layer Cascade
上图是IRNet的网络结构,即Inception-ResNet-v2,这个网络不是这个论文提出,详细的结构说明可以从网上查到。

作者将IRNet转为IRNet-LC,网络结构如下图所示。从结构能够看出,对于那些已经确定标签的结果,不用再进行下一步的分割,而下一次分割只处理那些不确定标签的区域。
论文阅读 2017-Not All Pixels Are Equal: Difficulty-Aware Semantic Segmentation via Deep Layer Cascade
作者将整个网络分为3个阶段。
第一阶段,识别出像素标签,其余区域前传。输入一个3×512×5123\times 512 \times 512的图片,经过阶段1的前三层+2层卷积,产生21×64×6421\times 64\times 64的特征图L1L^1。对每个特征图,有21维的向量,对这个向量使用softmax函数进行归一化。对于最高像素大于0.95的确定是最终结果,不再进行下一阶段的传递。对于那些仍未被标记的像素区域传入下一阶段。
第二阶段,识别出更加细致的标签,其余区域前传。方法同阶段1
第三阶段,确定最终标签。根据更新的区域,计算最终标签。

区域卷积

阶段2和阶段3只卷积那些需要前向处理的像素,也就是那些无法确定标签的像素,下图a表示了传统区域卷积的形式。下图b表示了区域卷积的形式。实现方法就是在卷积上面加了个掩膜(目标区域为1,其他为0)。区域卷积的滤波只在ROI上卷积,忽略其他区域,这样能减少许多计算量,假设这个ROI为MM。其他区域的值直接被设置为0,类似的卷积很常见,Faster RCNN就是一个经典的例子。

特别的下图c表示了区域卷积在残差模型上的表示,h(I)=I+conv(I)h(I) = I + conv(I)。将卷积方式定义为上述的区域卷积,反向传播时只传播目标区域导数即可。
论文阅读 2017-Not All Pixels Are Equal: Difficulty-Aware Semantic Segmentation via Deep Layer Cascade

总结

文章主要结构就是这样,其核心就是区域卷积,将整个阶段划分为3个阶段,不断地剔除已经标记出的结果,只进一步处理有效区域,这也是其速度快的核心原因。

对于其提高精度的说明,我认为之前的网络背景部分占据了大量的信息,迭代时候背景误差主导。而考虑区域之后,其实是目标主导,这样能够有效地对目标进行训练,提高精度。

论文中作者给出的速度是42ms,使用的是Titan X显卡,如果应用于嵌入式,实时性上还是需要继续考虑的,但是区域卷积是个趋势,后续也会继续跟踪相关文献,进行进一步理解

备注:论文代码只提供了区域卷积层的代码,完整代码没有给出,但是根据论文自己其实也能复现,论文我主要关注其思想,具体细节只有复现才能知道,后续有相关不清楚的地方欢迎评论区讨论,我会及时进行分析解答。