近日,飛槳官方發佈了工業級圖像分割模型庫 PaddleSeg,給開發者帶來誠意滿滿的三重超值驚喜:①一次性開源 15 個官方支持的圖像分割領域主流模型,大禮包帶來大知足。②多卡訓練速度比對標產品快兩倍,工業級部署能力,時間節省超痛快。③揭祕包攬了 CVPR2019 LIP 挑戰賽人體解析任務大滿貫的三冠王 ACE2P 預測模型關鍵技術,帶你一步體驗世界領先水平效果。git
1. PaddleSeg 重磅發佈github
飛槳的新產品 PaddleSeg 全新上線,重點針對圖像分割領域,面向開發者提供了完備且易用的工業級分割模型庫。
是的,你沒有看錯,真正經得起考驗的【真. 工業級】的分割模型庫。
據介紹,PaddleSeg 已經在百度無人車、AI 開放平臺人像分割、小度 P 圖和百度地圖等多個產品線上應用或實踐,在工業質檢行業也已經取得了很好的效果。
飛槳官方提供的 PaddleSeg 全景圖以下圖所示:
安全
2. 圖像分割是什麼?網絡
圖像語義分割經過給出每個圖像中像素點的標籤,實現圖像中像素級別的語義分割,它是由圖像處理到圖像分析的關鍵步驟。
就像下圖中所看到的那樣,能夠對車輛、馬路、人行道等實例進行分割和標記!
相比於傳統的圖像分類任務,圖像分割顯然更難更復雜,
可是,圖像分割是圖像理解的重要基石,在自動駕駛、無人機、工業質檢等應用中都有着舉足輕重的地位。架構
3. PaddleSeg 三重驚喜併發
3.1. 一次性開源 15 個圖像分割領域主流模型,大禮包帶來大知足框架
PaddleSeg 對全部內置的分割模型都提供了公開數據集下的預訓練模型,
全面覆蓋了 DeepLabv3+、ICNet、U-Net 等圖像分割領域的主流模型實現,而且內置了 ImageNet、COCO、CityScapes 等數據集下的 15 個預訓練模型,
知足不一樣場景下的不一樣精度需求和性能需求!
15 個預訓練模型,請參考 https://github.com/PaddlePadd...ide
其中,最重要的三種模型介紹以下:高併發
(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/h...
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/ai...
• 關於 AIStudio 的使用能夠參考:https://aistudio.baidu.com/ai...
項目代碼內容都是通過研發人員細心優化並封裝好頂層邏輯,可讓開發者最快方式體驗 PaddleSeg 的效果,如下代碼內容供參考核心流程及思路,實際體驗建議開發者完整 Fork 項目並點擊所有運行便可。
6.1. 模型訓練
第一步:解壓預訓練模型。
第二步:解壓訓練數據。
第三步:開始訓練,其中配置參數「cfg」用於 指定 yaml 配置文件路徑, 模型的配置文件位於 configs 文件夾下的.yaml 文件,「use_gpu」用因而否啓用 gpu, 因爲 cpu 訓練過慢,不建議使用 cpu 進行訓練。
6.2. 模型預測和可視化
預測可視化 參數「--vis_dir」用於指定預測結果圖片存放位置。
6.3. 實際效果
將分割先後的數據顯示出來。
這裏,能夠任選測試集的數據也能夠本身上傳數據來測試實際的分割結果。
效果不錯呦,趕快用起來吧!