PaddleSeg圖像分割庫再添新武器,新增壓縮部署方案FLOPs降低51%

相信很多人都看過電影《變形金剛》,電影中經常可以看到大黃蜂變身的跑車飛馳在公路之上,可是大家有沒有仔細想過,大黃蜂是怎麼知道馬路中間是黃實線還是黃虛線,到底能不能壓線,能不能掉頭呢?要知道差一點沒分清楚,那就是200塊錢罰3分的下場。說到這裏那些瞭解圖計算機視覺的小夥伴們應該就會想到這個領域的核心研究方向之一的圖像分割技術(Image Segmentation)。

什麼是圖像分割?

圖像分割是一種將圖像分成若干個特定的、具有獨特性質的區域並提取出感興趣目標的技術和過程。從數學角度來看,圖像分割是將圖像劃分成互不相交的區域的過程。

 

圖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的輸出特徵圖,且該特徵圖可以直接當作下一個卷積層的輸入。該卷積核的維度爲

​ 卷積層的加乘操作次數爲

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

​次運算。

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

​次運算。這是因爲當圖中第一個卷積層的卷積核被剪掉以後,第二層保留的卷積核參數不僅是在卷積核個數這個維度上縮減了,還和第一個卷積層剪掉的卷積核個數有關,因此第一層卷積核的裁剪會間接導致了第二層卷積核在通道維度的縮減。

 

那麼如何確定哪些卷積核可以被裁剪呢?其具體過程如下:

  1. 對每個卷積核(ni × h × w)計算h和w維度的L1範數,從而得到通道維度上的特徵(ni × 1)。
  2. 對得到的特徵(ni × 1)進行排序,這個排序就可以看成是通道維度上的特徵重要性排序。
  3. 最後根據排序的結果和需要被裁剪的卷積核比例,裁剪掉排序中比較靠後的不重要的卷積核。

 

如下表所示,實驗表明在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

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章