論文原文
https://arxiv.org/pdf/1704.08545.pdf
香港中文大學,騰訊優圖,商湯科技聯合發表的一篇用于語義分割的論文。
摘要
ICNet是一個基于PSPNet的實時語義分割網絡,設計目的是減少PSPNet推斷時期的耗時,論文對PSPNet做了深入分析,在PSPNet的基礎上引入級聯特征融合子產品,實作快速且高品質的分割模型。論文報告了在Cityscape上的表現。
摘要
主要通過下面的圖來表現:
![](https://img.laitimes.com/img/_0nNw4CM6IyYiwiM6ICdiwiI0gTMx81dsQWZ4lmZf1GLlpXazVmcvwFciV2dsQXYtJ3bm9CX9s2RkBnVHFmb1clWvB3MaVnRtp1XlBXe0xCMy81dvRWYoNHLwEzX5xCMx8FesU2cfdGLwMzX0xiRGZkRGZ0Xy9GbvNGLpZTY1EmMZVDUSFTU4VFRR9Fd4VGdsYTMfVmepNHLrJXYtJXZ0F2dvwVZnFWbp1zczV2YvJHctM3cv1Ce-cmbw5SNwYzMyYjNwIDNyMjZmRWNyYzX2QTNxgDM5EzLcRDMyIDMy8CXn9Gbi9CXzV2Zh1WavwVbvNmLvR3YxUjLyM3Lc9CX6MHc0RHaiojIsJye.png)
可以看到之前的許多分割的經典方法速度不快,而速度快的ENet的精度又不高,PSPNet在速度和精度找到了一個平衡點。論文的主要貢獻在于:
- 綜合低分辨率的處理速度和高分辨率圖像的推斷品質,提出圖像級聯架構逐漸細化分割預測
-
ICNet可以在1024
×
\times
× 2048分辨率下保持30fps運作
相關工作
高品質的語義分割模型
先驅工作FCN将全連接配接層換成卷積層;DeepLab等使用空洞卷積(dilated convolution);Encoder-Decoder結構融合高層的語義和底層的細節;也有使用CRG,MRF模拟空間關系;PSPNet采用空間上的金字塔池化結構。這些方法對于提升性能有效,但不能用于實時系統。
快速的語義分割模型
SegNet放棄層資訊來提速;ENet是一個輕量級網絡,這些方法雖然快,但是性能差。
視訊分割模型
視訊中包含大量備援資訊,可利用減少計算量。
PSPNet給出了一個快讀的語義分割的層次結構,利用級聯圖像作為輸入加速推理,建構一個實時分割系統。
時間分析
藍色的分辨率為1024
×
\times
× 2048,綠色的分辨率為512
×
\times
× 512。上圖顯示了多個資訊:
- 不同分辨率下的速度差異很大,呈平方趨勢增加
- 網絡的寬度越大速度越慢
- 核數量越多速度越慢
加速政策
輸入降采樣
根據上面的分析,半分辨率的推斷時間為全分辨率的1/4。測試不同分辨率下輸入下的預測情況。一個簡單的測試方法使用1/2,1/4的輸入,将輸出上采樣回原來的大小。實驗如下:
對比在不同縮放比例下得到的結果可以發現,在縮放比例為0.25的情況下,雖然推斷時間大大減短,但是預測結果非常粗糙,丢失了很多小但是重要的細節。縮放0.5相對來說好了很多,但丢失了很多細節,并且最麻煩的是推理速度達不到實時要求了。
特征降采樣
輸入能降采樣,自然特征也可以降采樣。這裡以1:8,1:16,1:32的比例測試PSPNet50,結果如下:
較小的特征圖可以以犧牲準确度換取更快的推斷,但考慮到使用1:32(132ms)依然達不到實時要求。
模型壓縮
減少網絡的複雜度,有一個直接的方法就是修正每層的核數量,論文測試了一些有效的模型壓縮政策。即使隻保留四分之一的核,推斷時間還是很長。并且準确率大大降低了。
ICNet的結構
ICNet在總結了上面的加速政策後,提出了一個綜合性的方法:使用低分辨率加速捕捉語義,使用高分辨率擷取細節,使用級聯網絡結合,在限制的時間内獲得有效的結果。模型結構如下:
圖檔分為1,1/2,1/4這3個尺度分三路送到模型中。3個分支介紹如下:
- 對于第一個1/4分支,可以看到經過3次卷積(下采樣)後分辨率為原圖的1/32,經過卷積後使用幾個空洞卷積層擴充感受野但不縮小尺寸,最終以原圖的1/32大小輸出feture map。這一個分支雖然層數較多,但分辨率小,速度快,且與第二個分子共享一部分權重。
- 以原圖的1/2分辨率作為輸入,經過卷積後以1/8縮放,得到原圖1/16大小的feature map,再将低分辨率分支的輸出feature map通過CFF單元融合得到最終輸出。這一和分子有17個卷積層,與第一個分支共享一部分權重,與分支1一共耗時6ms。
-
第3個分支以原圖作為輸入,經過卷積後以1/8縮放,得到原圖大小1/8的特征圖,再将中分辨率處理後的輸出通過CFF單元融合,第3層有3個卷積層,雖然分辨率高,但層少,耗時9ms。
\quad
對于每個分支的輸出特征,首先會上采樣二倍做輸出,在訓練的時候,會以ground truth的1/16,1/8,1/4來指導各個分支的訓練,這樣的輔助訓練使得梯度優化更加平滑,便于訓練收斂,随着每個分支學習能力的增強,預測沒有被任何一個分支主導。利用這樣漸變的特征融合和級聯引導結構可以産生合理的預測結果。ICNet使用低分辨率完成語義分割,使用高分辨率幫助細化結果,在結構上,産生的feature大大減少,同時仍然保持必要的細節。
CFF單元
F1代表低分辨率輸入,F2代表高分辨率輸入。将低分辨率的圖檔上采樣後使用空洞卷積(dilated conv),擴大上采樣結果的感受野範圍。注意将輔助的标簽引導設定為0.4(根據PSPNet的實驗結果),即如果下分支的
l
o
s
s
L
3
loss L_3
lossL3的占比
λ
3
\lambda_3
λ3為1的話,則中分支的
l
o
s
s
L
2
loss L_2
lossL2的占比
λ
2
\lambda_2
λ2為0.4,上分支的
l
o
s
s
L
1
loss L_1
lossL1的占比
λ
1
\lambda_1
λ1為0.16。
損失函數和模型壓縮
損失函數
依據不同的分支定義如下:
L
=
λ
1
L
1
+
λ
2
L
2
+
λ
3
L
3
L=\lambda_1L_1+\lambda_2L_2+\lambda_3L_3
L=λ1L1+λ2L2+λ3L3,根據CCF的設定,下分支的
l
o
s
s
L
3
loss L_3
lossL3的占比
λ
3
\lambda_3
λ3為1的話,則中分支的
l
o
s
s
L
2
loss L_2
lossL2的占比
λ
2
\lambda_2
λ2為0.4,上分支的
l
o
s
s
L
1
loss L_1
lossL1的占比
λ
1
\lambda_1
λ1為0.16。
壓縮模型
這裡不是很懂,論文采用的一個簡單而有效的辦法:漸進式壓縮。例如以壓縮率1/2為例,我們可以先壓縮到3/4,對壓縮後的模型進行微調,完成後,再壓縮到1/2,再微調。保證壓縮穩定進行。這裡采用Pruning filters for efficient convnets(可以查一下這篇論文)的方法,對于每個濾波器計算核權重的L1和,降序排序,删除權重值較小的。
模型壓縮的結果
mIoU降低了,但推理時間170ms達不到實時要求。這表明隻是模型壓縮是達不到有良好分割結果的實時性能。對比ICNet,有類似的分割結果,但速度提升了5倍多。
級聯結構的有效性
結論
代碼實作