极简笔记 Context Encoding for Semantic Segmentation

极简笔记 Context Encoding for Semantic Segmentation

论文地址:https://arxiv.org/abs/1803.08904

文章核心贡献提出EncNet结构用于语义分割。其中主要有两点改进,在encoder-decoder结构最深层处加入context encoding module,同时引入SE-loss计算全图分类误差。
极简笔记 Context Encoding for Semantic Segmentation

context encoding module首先在top layer引入encoding layer。这个是一作之前的一篇文章,记输入feature map为C×W×H,记N=W×H为输入向量x个数。现在有K个同样是C维的字典向量d,将N个输入向量和这K个字典向量算残差rij,再根据残差算权重,把权重再乘在残差上进行求和,最终输出是一个C维向量e,公式如下:

e=k=1Kϕ(ek)

ek=i=1Neik

eik=exp(sk||rik||2)j=1Kexp(sj||rij||2)rik

rik=xidk

其中的s是可学习的权重。之后通过一个fc得到C维的权重作为attention mask乘在输入的feature map上,之后上采样8倍得到最终结果。

SE-loss是从encoding layer的输出,过另外一个fc层得到一个向量,每个元素表示该类别是否出现在该图中,用的cross-entropy loss。这样做的好处是小物体和大物体能够同等考虑,避免小物体在图像中占的像素少而对梯度反传影响力过小。当这个loss占权重0.2时效果最好。论文同样用了atrous conv,在backbone的C3和C4采用了空洞卷积和SE-loss。

ablation study result如下图,分析各部分改进对模型性能的提升。
极简笔记 Context Encoding for Semantic Segmentation

和state of the art工作的对比。
极简笔记 Context Encoding for Semantic Segmentation