EncNet:
Context Encoding for Semantic Segmentation (CVPR2018)
https://arxiv.org/pdf/1803.08904.pdf
PyTorch: https://github.com/zhanghang1989/PyTorch-Encoding
EncNet通过引入了上下文编码模块(Context Encoding Module)来捕获全局上下文信息和突出与场景相关联的类别信息,这相当于加入场景的先验知识,类似于attention机制。
特点:
1)利用编码层捕获特征数据作为全局语义信息;
Encoding Layer:对前面网络提取出的丰富的特征使用全连接层FC进行编码,其中一个编码分支直接送给SE-loss,进行场景中出现类别的预测;另一个分支对每个类别预测加权的尺度因子,然后这个加权的尺度因子对前面提出的每个通道的类别进行加权,然后再进行后面的上采样,最终计算loss。
- 在encoder-decoder结构最深层处加入context encoding module;
Featuremap Attention:dense feature map经过一个encoding layer得到context embedding,然后通过FC得到一个classwise的score,作为权重。
- SE-loss计算全图分类误差;
Semantic Encoding loss:在编码层之上添加了一个带Sigmoid激活的FC层用于单独预测场景中出现的目标类别,并学习二进制交叉熵损失。不同于逐像素损失,SE loss 对于大小不同的目标有相同的贡献,这能够提升小目标的检测性能。
Context Encoding Network (EncNet)
- 由于语义编码模块与语义编码损失函数非常的轻量,所以在本文的网络的第三阶段与第四阶段分别加了两个图 3 的模块;
2)为了进一步的提升和规范上下文编码模块的训练,使用了单独的分离分支用于最小化SE-loss; - 在第3阶段的基础上构建另一个上下文编码模块,将SE-Loss最小化作为额外的正则化;