2D语义分割网络:ENet
ENet — A Deep Neural Architecture for Real-Time Semantic Segmentation
作者:Adam Paszke et al.
来源:CVPR2016、ICLR2017 arXiv:1606.02147
code:introduction \ tensorflow版 \ keras版 \ Caffe版
本文中的网络不复杂,实现了实时性的效果,但是精确度真的不算好,但可以为优化网络(降低参数量等)提供一点思路。
存在问题
- 计算量大(浮点运算);
- 运行时间长
结构
-
3层的编码器 + 2层的解码器
-
非下采样阶段,使用一个1×1的卷积核进行维度降低;此外,在下采样阶段中,第一个1×1投影被替换为具有步幅2的2×2卷积,我们将**零填充,以匹配特征映射的数量;
-
主卷积conv是具有3×3滤波器的正则卷积,空洞卷积或完全卷积(也称为反卷积),或者是分解为两个不对称滤波器的5×5(1×5和5×1)卷积;
-
使用一个1×1的卷积核进行维度扩充;
-
在所有卷积之间放置Spatial Dropout和PReLU**;
-
如果用于下采样,则将最大池化层添加到主分支;
设计选择
本文的Trick就是围绕着减少参数以实现网络的实时性。
-
feature map resolution
下采样
问题:空间信息损失、全像素分割要求输出具有与输入相同的分辨率
好处:更大的接受野,更多上下文信息
本文使用了dilated convolutions arXiv:1511.07122 -
early downsampling
因为视觉信息是高度空间冗余的,所以本文一开始使用1x1卷积降低了图片的大小。
initial network layers充当特征提取器,只对网络后续部分的输入进行预处理。 -
decoder size
large encode:对更小的分辨率数据进行操作,并提供信息处理和过滤。
small decoder:对编码器的输出进行向上采样,只对细节进行微调。 -
nonlinear operations
ReLU -> PReLU arXiv:1502.01852
每个特征映射使用一个附加参数,目的是学习非线性的负斜率。我们期望优选传递函数的层中,PReLU权重将具有接近1的值。
(ReLU没有起作用的原因是网络架构深度) -
Information-preserving dimentionality changes
急剧的降维会阻碍信息传递,一般采用的是convolution+pooling,但计算量增大。
本文使用的是并行方法,池化操作和卷积并行,然后连接。(Figure2 (a)) -
factorizing filters
nxn->(nx1)(1xn)
This allowed to increase the variety of functions learned by blocks and increase the receptive field. -
dilated convolutions
-
regularization
× L2 weight decay
spatial dropout
数据集
-
Cityscapes
5000 fine-annotated images
training:2975, validation:500, test:1525,class:19. -
CamVid
training:367, test:233,class:12 (一类是未标记的).
该数据集的原始帧分辨率为960×720,在训练前将图像降采样到480×360。 -
SUN datasets(室内)RGBD图像
training:5285, test:5050,class:37.
本文没有使用任何深度信息。
结果
训练过程分两步:首先只训练编码器用于分类下采样后的输入图片,随后加上解码器训练网络实现上采样和像素级分类。
评判指标:运行速度、mAP、IoU