近日,飛槳官方釋出了工業級影像分割模型庫 PaddleSeg,給開發者帶來誠意滿滿的三重超值驚喜:①一次性開源 15 個官方支援的影像分割領域主流模型,大禮包帶來大滿足。②多卡訓練速度比對標產品快兩倍,工業級部署能力,時間節省超痛快。③揭秘包攬了 CVPR2019 LIP 挑戰賽人體解析任務大滿貫的三冠王 ACE2P 預測模型關鍵技術,帶你一步體驗世界領先水平效果。
1. PaddleSeg 重磅釋出
飛槳的新產品 PaddleSeg 全新上線,重點針對影像分割領域,面向開發者提供了完備且易用的工業級分割模型庫。
是的,你沒有看錯,真正經得起考驗的【真. 工業級】的分割模型庫。
據介紹,PaddleSeg 已經在百度無人車、AI 開放平臺人像分割、小度 P 圖和百度地圖等多個產品線上應用或實踐,在工業質檢行業也已經取得了很好的效果。
飛槳官方提供的 PaddleSeg 全景圖如下圖所示:
2. 影像分割是什麼?
影像語義分割透過給出每一個影像中畫素點的標籤,實現影像中畫素級別的語義分割,它是由影像處理到影像分析的關鍵步驟。
就像下圖中所看到的那樣,可以對車輛、馬路、人行道等例項進行分割和標記!
相比於傳統的影像分類任務,影像分割顯然更難更復雜,
但是,影像分割是影像理解的重要基石,在自動駕駛、無人機、工業質檢等應用中都有著舉足輕重的地位。
3. PaddleSeg 三重驚喜
3.1. 一次性開源 15 個影像分割領域主流模型,大禮包帶來大滿足
PaddleSeg 對所有內建的分割模型都提供了公開資料集下的預訓練模型,
全面覆蓋了 DeepLabv3+、ICNet、U-Net 等影像分割領域的主流模型實現,並且內建了 ImageNet、COCO、CityScapes 等資料集下的 15 個預訓練模型,
滿足不同場景下的不同精度需求和效能需求!
15 個預訓練模型,請參考 https://github.com/PaddlePaddle/PaddleSeg/blob/master/docs/model_zoo.md
其中,最重要的三種模型介紹如下:
(1)支援 U-Net 模型:輕量級模型,引數少,計算快
U-Net 起源於醫療影像分割,整個網路是標準的 Encoder-Decoder 網路,特點是引數少,計算快,應用性強,對於一般場景的適應度很高。U-Net 的網路結構如下:
(2)支援 DeepLabv3+模型 :PASCAL VOC SOTA 效果,支援多種 Backbone
DeepLabv3+是 DeepLab 系列的最後一篇文章,其前作有 DeepLabv1,DeepLabv2, DeepLabv3。在最新作中,DeepLab 的作者透過 Encoder-Decoder 進行多尺度資訊的融合,同時保留了原來的空洞卷積和 ASSP 層,其骨幹網路使用了 Xception 模型,提高了語義分割的健壯性和執行速率,在 PASCAL VOC 2012 dataset 取得新的 state-of-art performance,即 89.0mIOU。DeepLabv3+的網路結構如下:
在 PaddleSeg 當前實現中,支援兩種分類 Backbone 網路的切換:
MobileNetv2:
適用於移動端部署或者對分割預測速度有較高要求的場景,PaddleSeg 還提供從 0.5x 到 2.0x 不同 DepthMultiplier 的模型。
Xception:
DeepLabv3+原始實現的 backbone 網路,兼顧了精度和效能,適用於服務端部署。PaddleSeg 提供了 41/65/71 三種不同深度的預訓練模型。
(3)支援 ICNet 模型:實時語義分割,適用於高效能預測場景
ICNet(Image Cascade Network)主要用於影像實時語義分割。相較於其它壓縮計算的方法,ICNet 既考慮了速度,也考慮了準確性。ICNet 的主要思想是將輸入影像變換為不同的解析度,然後用不同計算複雜度的子網路計算不同解析度的輸入,然後將結果合併。ICNet 由三個子網路組成,計算複雜度高的網路處理低解析度輸入,計算複雜度低的網路處理解析度高的網路,透過這種方式在高解析度影像的準確性和低複雜度網路的效率之間獲得平衡。ICNet 的網路結構如下:
3.2. 多卡訓練速度比對標產品快兩倍,工業級部署能力,時間節省超痛快
在速度方面,PaddleSeg 也提供了多程式的 I/O、優秀的視訊記憶體最佳化策略,效能方面得以大大提升。
PaddleSeg 的單卡訓練速度是對標產品的 2.3 倍,多卡訓練速度是對標產品的 3.1 倍。
與對標產品相比,PaddleSeg 在訓練速度、GPU 利用率、視訊記憶體開銷和 Max Batch Size 等方面都有著非常顯著的優勢。詳細的對比資料如下圖:
測試環境與模型:
GPU: Nvidia Tesla V100 16G * 8
CPU: Intel(R) Xeon(R) Gold 6148
Model: DeepLabv3+ with Xception65 backbone
配套的,PaddleSeg 提供了優秀的工業級部署,包括:
高效能 C++預測庫:
支援 Windows 跨平臺相容,支援 Operator 運算元融合、TensorRT 加速、MKL-DNN 等計算圖最佳化。
Paddle Serving 服務化部署:
支援高併發預測,支援單服務多模型,還支援模型熱更新和 A/B Test。
Paddle Serving 的架構圖如下:
不僅在 Paddle Serving 上可以應用,PaddleSeg 提供的模型還可以透過 Paddle Lite 完成移動端部署,可以很好的適配企業級的業務應用。
特別值得一提的是,考慮到在實際的企業場景中(如互娛場景等),往往存在標註成本高、標註資料少的問題,訓練資料相對於整個樣本空間的佔比是非常小的。此時就很有必要採取資料增強策略,對訓練集進行擴充。
PaddleSeg 內建了 10 餘種資料增強策略,可以有效地幫助企業進行資料集擴充,顯著提升模型的魯棒性。
使用 PaddleSeg 進行資料增強的流程如下:
3.3. 提供包攬 CVPR2019 LIP 挑戰賽人體解析任務大滿貫三冠王 ACE2P 模型,帶你一步體驗世界領先水平效果。
CVPR2019 LIP 挑戰賽中,百度公司實力爆棚,提出的 ACE2P 模型,包攬全部三個人體解析任務的第一名,實至名歸的大滿貫三冠王。
看完感覺不明覺厲,帶你瞭解一下:
LIP 是什麼:
LIP(Look Into Person) 是人體解析領域重要的 benchmark,其中人體解析 (Human Parsing) 是細粒度的語義分割任務,旨在將影像中的人體分割為多個區域,每個區域對應指定的類別,如面部等身體部位或上衣等服裝類別。由於類別的多樣性與複雜性,比單純的人體分割更具有挑戰性。
具體的 LIP 又分為三個方向,分別是:
Single-Person Human Parsing Track
Multi-Person Human Parsing Track
Video Multi-Person Human Parsing Track
ACE2P 是什麼
全稱是 Augmented Context Embedding with Edge Perceiving。
ACE2P 為人體部件分割模型,目的在於分割出影像中的人體部件和服裝等部位。該模型透過融合底層特徵、全域性上下文資訊和邊緣細節,端到端訓練學習人體解析任務。本次釋出的模型為 backbone 為 ResNet101 的單一模型,
網路結構圖如下:
CVPR2019 LIP Parsing 的三項榜單全部被百度的 ACE2P 霸榜。
ACE2P 冠軍預測模型在 PaddleHub 版本的快速體驗命令列直接使用:
更多內容:https://paddlepaddle.org.cn/hubdetail?name=ace2p&en_category=ImageSegmentation
4. 實際應用效果怎麼樣?
說了這麼多,PaddleSeg 實際效果怎麼樣,我們用案例說話。
4.1. 應用場景一:工業質檢
飛槳與國內稀土永磁零件質檢領軍企業合作,基於 PaddleSeg 模型庫,對精密零件的質檢工作進行了 AI 賦能升級。
傳統的工作方式下,質檢工人每天需要 8~12 小時在亮光下目視檢查直徑 45mm 以內零件的質量,工作強度非常大,對視力也有很大的損害。
目前,基於 PaddleSeg 內建 ICNet 模型實現的精密零件智慧分揀系統,誤收率已低於 0.1%。對於 1K*1K 解析度的彩色影像,預測速度在 1080Ti 上達到了 25ms,單零件的分揀速度比用其他框架實現的快 20%。PaddleSeg 已幫助工廠達到:生產成本平均降低 15%,工廠效益平均提升 15%。同時,交付質量也大幅提升,投訴率平均降低 30%
4.2. 應用場景二:地塊分割
分割技術在農業領域也有著廣泛的應用,地塊分割便是其中一個場景。
傳統的地塊分割方法,是基於衛星拍攝的遙感影像,依賴於大量擁有遙感專業背景的技術人員使用專業軟體來進行分析的。
衛星遙感影像資料存在畫幅巨大、肉眼解析度低的問題,對技術人員的專業要求能力很高,並且人工標註需要大量的重複勞動,非常費時費力和枯燥無味。
如果基於影像分割技術,開發一款地塊智慧分割系統,快速自動地獲知農耕用地邊境及面積,就可以更加有效地進行農作物產量預估和農作物分類,輔助農業決策。
目前,基於 PaddleSeg 內建模型 DeepLabv3 實現的地塊智慧分割系統,面積提取準確率已達到了 80% 以上,這對作物長勢、作物分類、成熟期預測、災害監測、估產等工作都起到了高效的輔助作用,大大節省了人力成本。
4.3. 應用場景三:車道線分割
車道線分割,是影像分割在自動駕駛領域的一個重要應用。
車道線分割的難點主要有兩個:
一個是準確度。由於涉及到車輛行駛的安全性,車道線分割對準確度的要求非常非常高的。
另一個是實時性。在車輛高速行駛的過程中,必須快速地、實時地提供車道線分割結果。
準確而快速的車道線分割,能夠實時地為車輛提供導航和車道定位指引,提高車輛行駛的安全性,目前正在百度無人車應用實踐。
PaddleSeg 實測效果:
4.4. 應用場景四:人像分割
不僅在工業場景下,在 C 端互娛領域,短影片人像特效、證件照智慧摳圖、影視後期處理等場景下,都需要對人像進行分割。
有了這個技術,一寸照片換底色,藍色、白色、紅色輕鬆切換。
基於 PaddleSeg 實現的人像分割模型,mIoU 指標已經達到了 0.93 以上,並且已經在百度 AI 開放平臺上線,合作企業高達 60 餘家,是真正的產業利器。
5. 技術乾貨:LIP 人體部件分割關鍵技術點揭秘
5.1. 修改網路結構,引入擴張卷積(Dilation convolution),提升 1.7 個點
將 ResNet 的 7x7 的卷積層換成了 3 個 3x3 的卷積層,增加網路深度,加固網路的底層特徵。
使用 stride=2 的卷積層替換掉網路中所有的池化層,讓下采樣過程變得可學習
在 Renset 結構的 stage=5 中加入了 dilation,擴大網路的感受野,增加網路的有效作用區域,使得模型特徵更加魯棒
加入了 pyramid pooling 結構,保證了一個全域性的 context 資訊的提取。
5.2. 引入了 Lovasz loss,提升 1.3 個點
Lovasz loss 是一個多類的 IOU loss,是針對分割的評價指標 IOU 專門設計的 loss,更加適合分割任務
Lovasz loss 配合 cross entroy loss 使用,整體的效果提升了 1.3 個點
5.3. 定製化的學習方式,提升 0.8 個點
在實踐的過程中我們發現學習方法對最終的效果影響也比較大,所以我們針對任務定製化了學習的方法。
在開始學習的時候我們先使用 warmup 的學習策略,使得一開始時模型的最佳化更加容易收斂,替換掉常用的 poly 學習策略,引入 cosine decay 的方法,使得在訓練快結束時學習率不至於過小,而導致網路不能收斂到最佳值。
整個過程學習率曲線視覺化如下:
5.4. 加入 edge 模組,提升 1.4 個點
加入 edge detection 模組,加深不同 part 之間的骨架特徵,減少類間誤分割.
將 edge 模組的特徵與 seg 的特徵融合,使得不同任務之間的效果能夠相互提升。具體如下:
6. 程式碼實戰體驗
為了更好的體驗分割庫的效果,避免因為軟硬體環境導致的各種問題,我們採用了 AIStudio 一站式實訓開發平臺作為體驗環境,透過完整的人像分割的例項教程來熟悉 PaddleSeg 的使用
本教程使用 DeepLabv3+ xception 的網路結構進行人像分割。
DeepLabv3+是 DeepLab 語義分割系列網路的最新作,其前作有 DeepLabv1,DeepLabv2, DeepLabv3, 在最新作中,DeepLab 的作者透過 encoder-decoder 進行多尺度資訊的融合,同時保留了原來的空洞卷積和 ASSP 層,其骨幹網路使用了 Xception 模型,提高了語義分割的健壯性和執行速率,在 PASCAL VOC 2012 dataset 取得新的 state-of-art performance,89.0mIOU。
整個網路結構如下:
Xception 是 DeepLabv3+原始實現的 backbone 網路,兼顧了精度和效能,適用於服務端部署。
傳送門:https://aistudio.baidu.com/aistudio/projectdetail/110669
關於 AIStudio 的使用可以參考:https://aistudio.baidu.com/aistudio/projectdetail/39212
專案程式碼內容都是經過研發人員細心最佳化並封裝好頂層邏輯,可以讓開發者最快方式體驗 PaddleSeg 的效果,以下程式碼內容供參考核心流程及思路,實際體驗建議開發者完整 Fork 專案並點選全部執行即可。
6.1. 模型訓練
第一步:解壓預訓練模型
%cd ~/PaddleSeg/
!mkdir pretrain
!unzip -q -o ~/data/data11874/xception65_pretrained.zip -d pretrain
第二步:解壓訓練資料,
%cd ~/PaddleSeg/
!mkdir data
!unzip -q -o ~/data/data11874/humanseg_train.zip -d data
第三步:開始訓練,其中配置引數「cfg」用於 指定 yaml 配置檔案路徑, 模型的配置檔案位於 configs 資料夾下的.yaml 檔案,「use_gpu」用於是否啟用 gpu, 由於 cpu 訓練過慢,不建議使用 cpu 進行訓練
%cd ~/PaddleSeg/
!cp ~/work/humanseg.yml configs/
!python ./pdseg/train.py --cfg ./configs/humanseg.yml --use_gpu
6.2. 模型預測和視覺化
預測視覺化 引數「--vis_dir」用於指定預測結果圖片存放位置
%cd ~/PaddleSeg/
!python ./pdseg/vis.py --cfg ./configs/humanseg.yml --vis_dir ./visual --
use_gpu
6.3. 實際效果
將分割前後的資料顯示出來
這裡,可以任選測試集的資料也可以自己上傳資料來測試實際的分割結果。
image_path = "./data/humanseg/test_images/f4963c23694e919b153546c95e3479675a5a13bd.jpg"
mask_path =
"./visual/visual_results/f4963c23694e919b153546c95e3479675a5a13bd.png"
display([image_path, mask_path], 0)
效果不錯呦,趕快用起來吧
更多詳情
歡迎加入官方 qq 群:796771754
官網地址:https://www.paddlepaddle.org.cn
專案地址:https://github.com/PaddlePaddle/PaddleSeg