BMVC2019论文,关注实时语义分割。
现有实时方法,主要有几个途径:
- 空洞卷积,在不增加参数的情况下增加感受野
- depth-wise separable convolution
但是暴力的将上面两种方法进行替换并不能取得最好的结果,因此论文就设计了一种网络框架,用于两种方法的结合。
- DAB module:
作者首先采用了33的卷积去减少channel,而不是11的卷积。虽然11的卷积能够减少计算量。但是11的卷积在resnet中采用主要是为了加深网络的深度,但是这里不需要网络深度100层以上。
为了更好的获取空间信息,作者在卷积之后将channel数减少了一般,并没有压缩太多。
由于之前的网路结构已经证实分层的网络会对语义分割任务更有效,所以DAB module也是融合多尺度的信息,感觉也是借鉴了bisenet,采用了双分支的结构。
一个分支获取local information,为了减少计算量,借鉴了erfnet采用了将nn的卷积分解成n1深度可分离卷积和1*n的深度可分离卷积。
一个分支为了获取边缘语义信息,采用空洞卷积,在不减少分辨率的情况下。但是空洞卷积随着rate的增大,计算量也会变大。为了解决这个问题,作者将其与depth-wise asymmetric convolution结合。所以叫做depth-wise asymmetric dilated convolution。
激活函数:作者采用了前置激活的策略(conv之前做激活),参考(Identity mappings in deep residual networks ICCV 2016),并且Mobilenetv2: Inverted residuals and linear bottlenecks中提出了non-linear layers in bottlenecks hurts the performance。所以在1*1的point-wise convolution之删除了non-linearity
Downsampling策略:作者没有像enet一样一上来就下采样而是先用3*3卷积减少通道然后采用enet initial block,之后再经过一次不加max pooling的下采样。借鉴ESPNetv2中的方法,利用了long-range shortcut connection融合原图和downsampling block。
DAB block:做block内的信息融合,采用可空洞卷积。毕竟dense connect的方式效果还是很显著的。
DABnet:无decoder
这里采用了不少trick,值得学习和借鉴!!
实验结果表明:
空洞卷积rate{3, 3, 7, 7, 13, 13}要比{4, 4, 8, 8, 16, 16}高2.3个点。
加上decoder效果提升不大,但是很影响速度。
加入spp有效果提升,但是也会影响速度。