天天看點

ENet: A Deep Neural Network Architecture for Real-Time Semantic Segmentation

Abstract

在移動應用中,實時執行像素級語義分割的能力是至關重要的.針對這一任務的最近的深層神經網絡存在着重複使用的缺點。深度神經網絡有大量浮點操作,且運作時間長,阻礙了它們的可用性.本文提出了一種新的深層神經網絡體系結構-高效神經網絡(ENET)。相比于現有的模型,在速度加快了18×倍,浮點計算量上減少了75×,參數減少了79×,且有相似的精度。ENet在CamVid, Cityscapes and SUN datasets做了相關對比測試。

之前看的幾篇論文FCN 、SegNet、DeconvNet,模型都基于VGG架構,參數多,雖然SegNet參數較少但是依然不足以在移動裝置上使用。自從深度學習用于語義分割,體系結構基本都是Encoder-Decoder,E-net也不例外。本文的新奇架構在于設計的 initial block和 bottleneck module

Architecture

如下圖所示,初始化階段隻有圖2所示的初始化子產品,stage 1~3是編碼階段,stage 4~5屬于解碼階段。stage 1包括5個bottleneck子產品,stage 2和stage3包括相同的結構,但是stage3沒有下采樣。

ENet: A Deep Neural Network Architecture for Real-Time Semantic Segmentation

上圖是論文給出的完整架構,依然是encoder-decoder,作者提出了一個新奇的看法:網絡的初始層不應該直接面向分類做貢獻,而且盡可能的提取輸入的特征。并且與之前的SegNet之類完全鏡像的encoder和decoder,作者認為大的Encoder小的Decoder是有更好效果的,原因是Encoder主要進行資訊處理和過濾,和流行的分類模型相似。而decoder主要是對encoder的輸出做上采樣,對細節做細微調整。

基于第一個看法:網絡的初始層不應該直接面向分類做貢獻,而且盡可能的提取輸入的特征,作者設計了一個initial module:

ENet: A Deep Neural Network Architecture for Real-Time Semantic Segmentation

ENet initial block. MaxPooling is performed with non-overlapping 2 × 2 windows,

and the convolution has 13 filters, which sums up to 16 feature maps after concatenation.

關于bottleneck:bottleneck的主要構思應該還是Resnet思想

ENet: A Deep Neural Network Architecture for Real-Time Semantic Segmentation

其設計分為兩種情況:

下采樣的bottleneck:

主線包括三個卷積層,

先是2×2投影做降采樣;

然後是卷積(有三種可能,Conv普通卷積,asymmetric分解卷積,Dilated空洞卷積)

後面再接一個1×1的做升維

注意每個卷積層後均接Batch Norm和PReLU。

輔線包括最大池化和Padding層

最大池化負責提取上下文資訊

Padding負責填充通道,達到後續的殘差融合

融合後再接PReLU。

非下采樣的bottleneck:

主線包括三個卷積層,

先是1×1投影;

然後是卷積(有三種可能,Conv普通卷積,asymmetric分解卷積,Dilated空洞卷積)

後面再接一個1×1的做升維

注意每個卷積層後均接Batch Norm和PReLU。

輔線直接恒等映射(隻有下采樣才會增加通道數,故這裡不需要padding層)

融合後再接PReLU。

ENet bottleneck module. conv is either a regular, dilated, or full

convolution (also known as deconvolution) with 3 × 3 filters, or a 5 × 5 convolution decomposed into two asymmetric ones.

paper中的trick

1.Feature map resolution

對圖像的下采樣有兩個缺點:首先會降低特征圖分辨率,會丢失細節資訊,容易丢失邊界資訊。其次semantic segmentation輸出與輸入有相同的分辨率,FCN使用32倍下采樣,而作者的ENet隻進行了8倍的下采樣。深的下采樣對應着深的上采樣,這增加了模型的大小和計算量。

下采樣的好處在于可以擷取更大的感受野,擷取更多的上下文資訊,便于分類。

關于下采樣降低圖像分辨率導緻資訊缺失,不同論文探讨了不同方法:

FCN的解決辦法是将encoder階段的pool操作産生的feature map與上采樣後的熱圖相加,增加空間資訊。

SegNet的解決辦法是将encoder階段maxpooling的indices保留到decoder階段做upsampling使用。

Unet的解決方法是将encoder不同層的圖像給decoder階段進行concate

ENet采用的是SegNet的方法,這可以減少記憶體需求。同時為了增加更好的上下文資訊,使用dilated conv(空洞卷積)擴大上下文資訊。

2.Early downsampling

視覺資訊是高度空間備援的,可以壓縮更有效的表示,作者在stage 1~2實作下采樣并大量壓縮特征圖規模。早期處理高分辨率的輸入會耗費大量計算資源。正如作者提出的那樣:網絡的初始層不應該直接面向分類做貢獻,而且盡可能的提取輸入的特征。

3.Decoder size

This is motivated by the idea that the encoder should be able to work in a similar fashion to original classification architectures, i.e. to operate on smaller resolution data and provide for information processing and filtering. Instead, the role of the the decoder, is to upsample the output of the encoder, only fine-tuning the details.

4.Nonlinear operations

一般的網絡架構都會在CNN之前進行ReLU 和 Batch Normalization,但是作者發現使用ReLU降低了模型精度。作者分析了ReLU沒有起作用的原因是網絡架構深度,ENet層數很少,較少的層需要快速過濾資訊,使用PReLU。

5.Information-preserving dimensionality changes

加速推理,初始化階段的操作大約加速了10倍的時間。

6.Factorizing filters

将n×n n×n n×n的卷積核拆為n×1 n×1n×1和1×n 1×n1×n (Inception V3提出的)。可以有效的減少參數量,并提高模型感受野。

7.Dilated convolutions

作者在實作過程中是交叉使用Dilated convolutions。

8.Regularization

Spatial Dropout

Enet現在看來效果就一般了,比Segnet要好,但是速度快,參數少 0.37M

繼續閱讀