【E-Net & LinkNet】For Efficient

【E-Net & LinkNet】For Efficient_第1张图片

ENet: A Deep Neural Network Architecture for Real-Time Semantic segmentation.
LinkNet: Exploiting Encoder Representations for Efficient Semantic Segmentation.
其中E-Net是2016年论文,LinkNet是2017年的论文(VCIP,Visual Communication and Image Processing Conference)。都是为速度而生的网络。


文章目录

  • E-Net
    • 概述
    • 细节
    • Design
    • Results
  • LinkNet
    • 概述
    • 细节
    • Results
  • Conclusion

E-Net

概述


  • 解决的问题
    • ENet–>Efficient neural network
  • 采用的方法
    • 精简网络结构,减少训练的参数
  • 结果如何
    • 数据集:CamVid, Cityscapes, SUN
    • 18x faster, 75x less Flops, 79x less parameters【这个在abstract上啊,跟什么模型比,到后面结果看吧】, 在速度和精度上有比较好的平衡。且精度可以与当时的state-of-the-art媲美。
  • Contributions
    • 平衡速度和精度,速度是真的挺快的。

细节


结构

【E-Net & LinkNet】For Efficient_第2张图片

这里是两个其中的结构:

【E-Net & LinkNet】For Efficient_第3张图片
  • figure2 (a)是结构表中的输入部分,即initial部分。表中的结构是以输入为512x512为前提。这部分会有一个2x下采样。两个branch,最后concat,concat后还会接上bn和PReLU才会进入到bottlenect1.0。
  • figure2 (b)是表中的bottleneck结构,但表中根据bottleneck type的不同,这个结构会有一定的变化。
    • downsampling 1: 左右两个支路都是存在的,但是在都是downsampling类型的1.0,2.0中,第一个1x1处的卷积会改成2x2,s=2,用来下采样两倍。另一支路上的Maxpooling也是下采样两次,此处会有一个连接传递index到对应的upsampling上的unpooling支路上,用来对应上采样。
    • downsampling 2:bottleneck 1.x的支路第一个conv仍然是1x1。
    • dilate x:表示在figure2(b)中的conv使用的空洞卷积,rate=x。且,maxpool这条支路上只是单纯的一个残差连接,没有任何操作的一条支路
    • asymmetric x:这里使用的是非对称conv,也就是将XX的conv拆分成X1和1*X的级联结构,此处X=5。
    • upsampling:conv更改为deconv,maxpooling处也更改为对应的unpooling。
    • fullconv:deconv上采样2x。

整体结构以及细节就是上面的各个部分组成。

Design


  • feature map resolution:遵循SegNet的做法来上采样,可以减少内存需要,大量的下采样会让分割的精度损失【适当下采样可以增加感受野,获取上下文信息,从而得到更多的语义信息】,采用空洞卷积也是这种目的,保证分辨率,get大感受野。
  • Early downsampling【下采样都都放在网络结构的靠前部分】:ENet的开头两个blocks就极大的减少了input size,这样做的道理是:视觉信息在空间上被极大的减少,图片可以被压缩成一个高效的表达。在早期就很快的将input size降下来,不会影响分类,仅仅将前面的几层作为预处理部分。
  • Information-preserving dimensionality changes:一般会使用conv后接pool层,会增加feature map的深度(channels),这样会需要很大的计算量,因此,在文中尝试使用pool与conv并行的方式。【This technique allowed us to speed up inference time of the initial block 10 tiime】
  • Factorizing filter:n1和1n级联来代替n*n,可以节省很多参数。上面的pool和conv并联的方式和这个Factorizing filter方式都是ENet借鉴InceptionV3里的方式
  • Dilated convolutions:空洞卷积,给网络带来了IOU上的很大提升,在Cityscapes上提升了将近4个百分点,却没有带来额外的计算代价。在此处,是将dilated block之间插入了其他的block,也是学习的“Multi-scale context aggregation by dilated convolutions”的做法。
  • Regularization:使用了Spatial Dropout在convolutional branches之后,在addition之前。【但是在结构里没有找到,疑惑~~】

Results


数据集 类型
CamVid road scenes,5000 images(2975 for training, 500 for validation, 1525 for testing),19 classes, 包含instance-level intersection over union union(iIOU)
Cityscapes road scenes, 367 for training, 233 for testing, 960x720【在本实验中,resize为480x360】
SUN RGB-D indoor scenes,5285 for training, 5050 for testing, 37 indoor classes,【此实验中,未用到其深度信息】,

将SegNet作为对比的对象,因为其算是相对很快的网络

硬件 x
NVIDIA Titan X GPU
NVIDIA TX1 embedded system module【达到640x360图的10fps速度】

【E-Net & LinkNet】For Efficient_第4张图片

【E-Net & LinkNet】For Efficient_第5张图片

Training

Param Value
优化器 Adam optimization
GPU Titan XP
Two stages training encoder & decoder
learning rate 5e-4
L2 weight decay 2e-4
batch size 10
class weighing scheme W c l a s s = 1 / l n ( c + p c l a s s ) , c = 1.02 {W_{class}=1/ln(c+p_{class}), c=1.02} Wclass=1/ln(c+pclass),c=1.02

【E-Net & LinkNet】For Efficient_第6张图片
【E-Net & LinkNet】For Efficient_第7张图片

【E-Net & LinkNet】For Efficient_第8张图片

LinkNet

概述


  • 解决的问题
    • 为了效率,为了实时
  • 采用的方法
    • 精简结构
  • 结果如何
    • 11.8m的参数量,处理一张3x640x360的图片21.2GFlops,在CamVid上取得了最好的效果,在Cityscapes上取得较好效果。有在NVIDIA GPU上和嵌入式设备上做实验。
  • Contributions
    • 论文中阐述:在目标检测上,为了速度而生的网络有很多,在分割上就很少,所以,就做了这项工作。

细节


【E-Net & LinkNet】For Efficient_第9张图片
  • /2表示下采样2x, *2表示上采样2x,每一个conv之后都会跟有BN和relu。
  • 在encoder中,每一个encoder block都是residual block,Table1中是对应的每个block中的m,n参数值。其中,如conv[(7x7), (3, 64), /2]的3是输入channel, 64是输出channels。
  • 主干网络,也即encoder部分,用的是resnet18,为了网络的参数量少。
【E-Net & LinkNet】For Efficient_第10张图片
【E-Net & LinkNet】For Efficient_第11张图片
【E-Net & LinkNet】For Efficient_第12张图片

Results


几个模型在NVIDIA TX1嵌入式设备上和NVIDIA Titan X GPU上的实验结构。【其中‘-’表示无法在此硬件下做有效实验】
【E-Net & LinkNet】For Efficient_第13张图片
一些参数量的对比,其中GFLOPs:Giga Floating-point operations Per second.即每秒10亿次的浮点运算。是作为运算量的计量单位。

【E-Net & LinkNet】For Efficient_第14张图片

接下来是在实验结果Accuracy的对比:

Params Values
tool Torch7 machine learning tool
class weighing scheme W c l a s s = 1 / l n ( 1.02 + p c l a s s ) {W_{class}=1/ln(1.02+p_{class})} Wclass=1/ln(1.02+pclass),这个同E-Net一样,且是为了缓解类别不平衡问题
评价指标 IoU & iIoU(instance-level IoU)
dataset Cityscapes

其中bypass就是bypass connections

【E-Net & LinkNet】For Efficient_第15张图片

【E-Net & LinkNet】For Efficient_第16张图片

Conclusion


两个网络都会把下采样放在encoder很靠前的位置,至少是会在很靠前的位置上先下采样一定的倍数。网络主干都是选择比较精简的网络,E-Net使用了一套自己设计的小网络,但是其中还有借鉴了各种减少参数量的手段,如空洞卷积、分离卷积、还有并联结构【好多都是从Inception V3搬过来】。而LinkNet则是直接使用了Resnet18作为主干,在对应的encoder和decoder之间,接上bypass connections这种的残差操作,提高精度,这是LinkNet自己说的一个创新点,确实效果也对比有提升。不过速度还是没有E-Net快。

你可能感兴趣的:(论文阅读)