PaddleSeg影像分割庫再添新武器,新增壓縮部署方案FLOPs降低51%
- 2020 年 3 月 26 日
- 筆記
什麼是影像分割?
影像分割是一種將影像分成若干個特定的、具有獨特性質的區域並提取出感興趣目標的技術和過程。從數學角度來看,影像分割是將影像劃分成互不相交的區域的過程。

圖1 影像分割應用效果圖
如圖1所示,隨著人工智慧的發展,影像分割技術已經在交通控制、醫療影像和工業用表識別等多個領域獲得了廣范的應用。為了讓廣大開發者可以方便快捷的將影像分割技術應用到自己的業務中,飛槳開發了一整套影像分割模型庫,這就是我們接下來要介紹的PaddleSeg。
什麼是PaddleSeg?
早在2019年秋季的時候飛槳就已經正式發布了影像分割模型庫 PaddleSeg,這是一款如同工具箱般便捷實用的影像分割開發套件,該套件具有模組化設計、豐富的數據增強、高性能、工業級部署四大特點:
- 模組化設計:支援U-Net、DeepLabv3+、ICNet和PSPNet等多種主流分割網路,結合預訓練模型和可調節的骨幹網路,可以滿足不同性能和精度的要求;PaddleSeg提供了不同的損失函數,如Dice Loss、BCE Loss等類型,通過選擇合適的損失函數,可以強化小目標和不均衡樣本場景下的分割精度。
- 豐富的數據增強:基於百度視覺技術部的實際業務經驗,內置10+種數據增強策略,可結合實際業務場景進行訂製組合,提升模型泛化能力和魯棒性。
- 高性能:PaddleSeg支援多進程IO、多卡並行、跨卡Batch Norm同步等訓練加速策略,結合飛槳開源框架的顯示記憶體優化功能,可以大幅度減少分割模型的顯示記憶體開銷,更快完成分割模型訓練。
- 工業級部署:全面提供服務端和移動端的工業級部署能力,依託飛槳高性能推理引擎和高性能影像處理,開發者可以輕鬆完成高性能的分割模型部署和集成。並且通過Paddle Lite,用戶可以在移動設備或者嵌入式設備上完成輕量級、高性能的人像分割模型部署。
正因為上述特點,用戶僅需要少量程式碼或指令就可以根據使用場景從PaddleSeg中選擇並組合出合適的影像分割方案,從而更快捷高效地開發出從訓練到部署的全流程影像分割應用。
如今PaddleSeg升級了!
為了不斷追求卓越,此次隨著飛槳開源框架升級到1.7版本,PaddleSeg再度重磅出擊。如圖2所示,如今的PaddleSeg無論在性能上,還是在模型豐富度上都做出了提升!

圖2 飛槳開源框架1.7版本上的PaddleSeg架構圖
01
新增高精度影像分割模型HRNet
HRNet(High-Resolution Net)模型最大的特點就是可以使影像在整個處理過程中保持高解析度特徵,這和大多數模型所使用的從高解析度到低解析度網路(high-to-low resolution network)產生的低解析度特徵中恢復高解析度特徵有所不同。

圖3 HRNet網路結構圖
如圖3所示,HRNet以高解析度子網開始作為第一階段,逐個添加由高到低解析度子網以形成更多階段,同時並行連接多解析度子網路。在整個過程中反覆交換並行多解析度子網路中的資訊來進行重複的多尺度融合。在像素級分類、區域級分類和影像級分類任務中,都證明了這些方法的有效性。
這樣的網路結構特點使得HRNet網路能夠學習到更豐富的語義資訊和細節資訊,因此HRNet在人體姿態估計、語義分割和目標檢測領域都取得了顯著的性能提升。如下表所示,基於Cityscapes數據驗證集進行測評,HRNet的分割精度最高。

HRNet模型使用教程請參見:
https://github.com/PaddlePaddle/PaddleSeg/blob/release/v0.4.0/turtorial/finetune_hrnet.md
02
新增實時語義分割模型Fast-SCNN
Fast-SCNN是一個面向實時的快速語義分割模型,其網路結構如圖4所示,主要包含了四個部分,分別是學習下取樣模組,全局特徵提取模組,特徵融合模組和最後的分類器模組。在雙分支的結構基礎上,Fast-SCNN使用了大量的深度可分離卷積和逆殘差(inverted-residual)模組,並且使用特徵融合構造金字塔池化模組(Pyramid Pooling Module)來融合上下文資訊。這使得Fast-SCNN在保持高效的情況下能學習到豐富的細節資訊。

圖4 Fast-SCNN網路結構圖
Fast-SCNN最大的特點是「小快靈」,即該模型在推理計算時僅需要較小的FLOPs,就可以快速推理出一個不錯的結果。如下表所示,在不需要預訓練模型的情況下,輸入尺寸為(1024,2048)的圖片推理時, PaddleSeg實現的Fast-SCNN的FLOPs僅為7.21G,推理時間只需要6.28ms,而在基於Cityscapes驗證數據集進行評測時,其mIoU評價能夠達到0.6964,可見Fast-SCNN不僅速度快,而且效果良好。

Fast-SCNN模型使用教程請參見:
https://github.com/PaddlePaddle/PaddleSeg/blob/release/v0.4.0/turtorial/finetune_fast_scnn.md
03
分割模型壓縮方案助力模型部署,FLOPs減少51%
在某些場景中,語義分割模型在實際部署時,可能會由於耗時、體積等多方面因素導致模型無法滿足要求。此時模型壓縮通常是解決記憶體佔用和速度問題的有效手段。飛槳模型壓縮工具PaddleSlim為PaddleSeg提供了多種分割模型的壓縮方案,保障PaddleSeg可以順利部署成功。
以L1 Pruning裁剪方案為例,該方案通過裁剪掉卷積核來減小模型體積並降低模型計算複雜度,是一種常用的有效裁剪方案。其原理如下所示。

圖5 L1 Pruning原理圖
以圖5為例,ni是第i個卷積層的輸入通道數,wi 和hi是輸入特徵圖的寬和高。卷積層將輸入維度為Xi的特徵圖轉化為維度為Xi+1的輸出特徵圖,且該特徵圖可以直接當作下一個卷積層的輸入。該卷積核的維度為

,卷積層的加乘操作次數為

。如果將圖中的第一個卷積核裁剪掉,則對應的一個特徵圖通道就沒有了,這樣將減少

次運算。
同時由於此處輸出通道數的減少,將會連鎖導致下一層的卷積通道維度的縮減,又減少了

次運算。這是因為當圖中第一個卷積層的卷積核被剪掉以後,第二層保留的卷積核參數不僅是在卷積核個數這個維度上縮減了,還和第一個卷積層剪掉的卷積核個數有關,因此第一層卷積核的裁剪會間接導致了第二層卷積核在通道維度的縮減。
那麼如何確定哪些卷積核可以被裁剪呢?其具體過程如下:
- 對每個卷積核(ni × h × w)計算h和w維度的L1範數,從而得到通道維度上的特徵(ni × 1)。
- 對得到的特徵(ni × 1)進行排序,這個排序就可以看成是通道維度上的特徵重要性排序。
- 最後根據排序的結果和需要被裁剪的卷積核比例,裁剪掉排序中比較靠後的不重要的卷積核。
如下表所示,實驗表明在Cityscapes數據集上,使用PaddleSlim對Fast-SCNN模型進行裁剪,能夠確保在模型精度幾乎無損的情況下,減少51%的FLOPs(每秒浮點運算次數),可以有效的提高運算速度。

如果您加入官方QQ群,您將遇上大批志同道合的深度學習同學。官方QQ群:703252161。
如果您想詳細了解更多飛槳的相關內容,請參閱以下文檔。
官網地址:
https://www.paddlepaddle.org.cn
飛槳PaddleSeg項目地址:
https://github.com/PaddlePaddle/PaddleSeg
飛槳開源框架項目地址:
GitHub: https://github.com/PaddlePaddle/Paddle
Gitee: https://gitee.com/paddlepaddle/Paddle

