YOLOv3精度再次提升4.3%,訓練提速40%!PaddleDetection全面升級

喜歡看科幻電影的朋友必定會對這樣的畫面印象深入:鋼鐵俠去解救被恐怖分子挾持的人質時,他的戰衣能夠快速的從人羣之中識別持有武器的恐怖分子,並肯定恐怖分子的位置,而後一陣火花帶閃電就問題解決了,豈是一個「帥」字能夠形容!從發現敵人到發動攻擊不超過5秒種,可謂戰衣在手,天下我有!令科幻迷們大喊一聲:「這樣的戰衣給我來一打!」git

 

 

其實讓鋼鐵俠戰衣這樣的高科技電子設備作出「看」這個動做並不難,只要有攝像頭就能夠了,可是要識別出圖像上哪些是人、哪些是物體,這麼多人中哪些是恐怖分子、哪些是人質,恐怖分子在什麼位置,可就不那麼簡單了,也就是說不只要經過攝像頭接收圖像,還要識別圖像中都有哪些不一樣種類的元素、在什麼位置等等,這就涉及到機器視覺領域的核心技術之一目標檢測技術。github

 

目標檢測的主要目的是讓計算機能夠自動識別圖片或者視頻幀中全部目標的類別,並在該目標周圍繪製邊界框,標示出每一個目標的位置。以圖1 爲例,目標檢測技術能夠幫助計算機檢測出圖像中動物的具體位置,而且識別出動物的種類是斑馬。算法

 

圖1 目標檢測示意圖安全

 

現在目標檢測已經成爲愈來愈熱門的方向,它能夠被普遍應用於工業產品檢測、智能導航、視頻監控等各個應用領域,幫助政府機關和廣大企業提升工做效率,實現向科技要人力。工欲善其事,必先利其器!爲了能更好的幫助用戶使用目標檢測技術,飛槳提供了一組強力的目標檢測開發套件PaddleDetection。性能優化

 

01 什麼是PaddleDetection網絡

 

PaddleDetection是基於飛槳核心框架構建的目標檢測開發套件,其總體結構如圖2所示。該開發套件覆蓋了主流的目標檢測算法並提供豐富的預訓練模型,能夠幫助用戶能夠很是方便、快速的搭建出各類檢測框架,高質量完成各種目標檢測任務,架構

 

圖2 PaddleDetection結構圖框架

 

爲了能讓用戶更好的使用PaddleDetection,飛槳的工程師們也在不斷的精雕細琢。這次隨着飛槳升級到1.7版本,PaddleDetection再次發力,性能獲得了進一步提高!模塊化

 

升級後的PaddleDetection模型豐富度再次提升並完整開源了檢測模型的壓縮方案。以此前飛槳已發佈的YOLOv3模型爲例,該模型在以前的版本上與同期最優同類產品相比,基於COCO數據集的訓練速度超出了40%,驗證集精度mAP(mean Average Precision)爲38.9%,超出了1%。在本次升級中,飛槳工程師本着精益求精的工匠精神,使該模型獲得了進一步強化,COCO數據集mAP高達43.2%,訓練速度也提高了40%,並基於YOLOv3開源了多種模型壓縮完整方案,使YOLOv3更上一層樓!函數

 

那麼新版本的PaddleDetection具體都有哪些閃光點呢?下面將爲你們詳細分解。

 

02 模塊種類與性能全面提高

 

 

PaddleDetection採用了模塊化設計,解耦了檢測經常使用的組件,便於用戶組合和擴展新的算法。通過這次升級優化,1.7版本的PaddleDetection上YOLOv3和BlazeFace性能大幅加強,新增多款IoU(Intersection over Union)損失函數、以及多種強力目標檢測模型,套件總體豐富度再次提高。

 

YOLOv3大幅加強,精度提高4.3%,訓練提速40%,推理提速21%

 

在基於COCO數據集的測試中,骨幹網絡DarkNet做者在其論文中所使用的YOLOv3模型的驗證精度mAP爲33.0%,而飛槳在以前版本中曾經發布過基於DarkNet53的YOLOv3模型,該模型的驗證精度爲mAP 38.9%。飛槳又作了以下改進,使得驗證精度mAP再次提升到43.2%,而且推理速度提高21%。本次升級還對數據預處理速度持續優化,使得總體訓練速度提高40%。

 

  • 骨幹網絡更換爲ResNet50-VD類型。ResNet50-VD網絡相比升級前的DarkNet53網絡,在速度和精度上都有必定的優點,且相較於DarkNet53網絡,ResNet系列更容易擴展,用戶能夠針對本身業務場景的特色,靈活選擇ResNet1八、3四、101等不一樣網絡類型做爲模型的骨幹網絡。

 

  • 引入Deformable Convolution v2(簡稱DCNv2,可變形卷積)替代原始卷積操做。DCNv2已經在多個視覺任務中普遍驗證過其效果,在考慮到速度與精度平衡的前提條件下,本次升級的YOLOv3模型使用DCNv2替換了主幹網絡中stage5部分的3x3卷積。實驗數據代表,使用ResNet50-VD和DCVv2後,模型精度提高了0.2%,提速約爲21%。

 

  • 在FPN部分增長DropBlock模塊,提升了模型泛化能力。DropBlock算法相比於Dropout算法,在Drop特徵的時候會集中Drop掉某一塊區域,更適合應用到檢測任務中來提升網絡的泛化能力。

 

圖3 Dropout和Dropblock對比圖

 

  • YOLOv3做爲一階段檢測網絡,在定位精度上相比Faster RCNN、Cascade RCNN等網絡結構有着其自然的劣勢,增長IoU Loss分支,能夠必定程度上提升邊界框的定位精度,縮小一階段和兩階段檢測網絡的差距。

 

  • 使用Objects365數據集訓練獲得的模型做爲COCO數據集上的預訓練模型。Objects365數據集包含約60萬張圖片、365種類別,高達1000萬框數,與COCO數據集相比,Objects365數據集具備5倍的圖像數量、4倍的類別數量、以及10倍以上標註框數量,能夠進一步提升YOLOv3預訓練模型的精度。

 

 

人臉檢測模型BlazeFace壓縮3倍,提速122%

 

PaddleDetection中包含了兩種輕量化的人臉檢測算法,即Faceboxes和BlazeFace。其中Faceboxes提出時號稱CPU上實時人臉檢測器,而BlazeFace是Google Research發佈的人臉檢測模型,它輕巧而且性能良好,專爲移動GPU推理量身定製,在嵌入式部署方面有很大的優點。

 

在PaddleDetection中,飛槳從新實現並優化了BlazeFace模型,同時還開源了許多變種模型,而且已經開始應用到實際業務場景中。

 

 

本次升級,飛槳針對BlazeFace模型完整開源了基於硬件延時條件的神經結構搜索方法(Neural Architecture Search,簡稱NAS)。其具體過程如圖4所示。

 

(1)首先在端上硬件測試單個算子的時延,獲得延時表

(2)在模型搜索過程當中,Controller端和定義的搜索空間負責生成模型結構,利用延時錶快速得到當前模型結構在該硬件上的總耗時(latency)。

(3)總耗時和模型的精度(accuracy)一塊兒做爲當前模型結構的得分回傳給Controller端,生成下一個模型結構,開始新一輪循環。

 

使用硬件延時搜索的目的是爲了加快搜索速度而且更容易搜索到在硬件上加速明顯的模型網絡。實驗數據代表,搜索獲得的模型結構,相比於原版模型,在FDDB評測集上的離散ROC曲線AP值(DistROC AP)幾乎不變的狀況下,體積僅有240KB,壓縮了3.3倍。在高通驍龍855 ARMv8處理器上單線程測試加速1.22倍。

 

 

圖4 BlazeFace的NAS版本硬件延時搜索過程

 

新增IoU損失函數,精度再提高1%,不增長預測耗時

 

PaddleDetection新增IoU(Intersection over Union)系列損失函數及相關模型。IoU是論文中十分經常使用的指標,它對於物體的尺度並不敏感,在以前的檢測任務中,常使用Smooth L1計算邊框損失,可是該種方法計算出來的損失函數一方面沒法與最終的指標直接對應,同時也對檢測框的尺度較爲敏感,所以有學者提出將IoU做爲迴歸的損失函數。

 

本次升級的1.7版本中,PaddleDetection增長了GIoU(Generalized IoU),DIoU(Distance IoU)、CIoU(Complete IoU)損失函數,使用他們分別替換傳統的Smooth L1 loss損失函數後,在使用Faster RCNN的ResNet50-vd-FPN模型和,COCO val2017數據集測評後,精度mAP分別增加1.1%、0.9%、1.3%,而且沒有帶來任何預測耗時的損失。

 

新增基於COCO數據集的精度最高開源模型CBNet,高達53.3%

 

新增CBNet模型,該模型是對已有的結構進行聯結,生成新的骨幹網絡,以ResNet結構爲例,級聯個數爲2時,稱爲Dual-ResNet,級聯個數爲3時,稱爲Triple-ResNet。本次新增的CBNet基礎模型使用的是AHLC(Adjacent Higher Level Composition)組網方式,在論文中的幾種組網聯結方式中性能最好。此外除了新增基礎模型外,還發布了單尺度檢測模型CascadeRCNN-CBR200-vd-FPN-dcnv2-nonlocal,該模型在通過COCO val2017驗證集驗證後,其精度高達53.3%。

 

新增Libra-RCNN模型,精度提高2%

 

新增的Libra R-CNN模型。檢測模型訓練大多包含候選區域生成與選擇、特徵提取、類別分類和檢測框迴歸等多個任務的訓練與收斂。在兩階段目標檢測任務中存在樣本(sample level)、特徵(feature level)以及目標級別(objective level)三個層面的不均衡現象,這些不均衡現象會限制模型的性能。LibraR-CNN模型從這三個層面分別進行了優化。最終與FasterRCNN-ResNet50vd-FPN相比,在COCO兩階段目標檢測任務中,LibraR-CNN模型精度超出2%,效果十分明顯。

 

新增Open Images V5目標檢測比賽最佳單模型

 

本次升級開源了Open Images V5目標檢測比賽中的最佳單模型,該模型是百度自研模型,並結合了當前較優的檢測方法。其模型結構圖如圖5所示,它將ResNet200-vd做爲檢測模型的骨幹網絡,並結合了CascadeClsAware RCNN、Feature Pyramid Networks、Non-local和Deformable V2等方法。

 

 

圖5 Open Images V5最佳單模型結構圖

 

訓練策略方面,該模型融合了Libra Loss做爲邊框迴歸損失;針對數據集類別不均衡的現象,在訓練時使用動態採樣策略去選擇樣本;此外,因爲Objects365數據集和Open Images V5數據集有大約189個類別是重複的,所以使用了Objects365數據集去擴充訓練數據集。而且在測試時使用SoftNMS方法進行後處理。最終該模型單尺度測試的Public/Private Score爲0.62690/0.59459,多尺度測試的結果爲0.6492/0.6182。

 

PaddleSlim助力PaddleDetection,化學反應,勢不可擋!

 

目標檢測模型在實際部署時,因爲耗時和內存佔用,仍然存在很大挑戰。模型壓縮一般是解決速度和內存佔用的有效手段。飛槳框架的壓縮工具PaddleSlim提供了多種很是有效的模型壓縮方法,推進PaddleDetection性能達到新高度。

 

使用蒸餾模型壓縮方案提高驗證精度2%

 

模型蒸餾是將複雜網絡中的有用信息提取出來,遷移到一個更小的網絡中去,從而達到節省計算資源的目的。經過蒸餾實驗能夠發現同一種蒸餾方法不必定適用全部數據集,因爲Pascal VOC和COCO數據集的任務難度不一樣,PaddleDetection對YOLOv3模型在PascalVOC和COCO數據採用了不一樣的蒸餾方案,實驗代表,蒸餾後的MobileNet-YOLOv3模型在Pascal VOC數據集上,驗證集精度mAP 提升了2.8%,在COCO數據集上,驗證集精度mAP提升了2.1%。

 

 

使用裁剪模型壓縮方案大幅下降FLOPs

 

裁剪策略能夠經過分析各卷積層的敏感度獲得各卷積核的適宜裁剪率,經過裁剪卷積層通道數來減小卷積層中卷積核的數量,實現減少模型體積,下降模型計算複雜度的做用。實驗代表以ResNet50vd-dcn-YOLOv3爲例,在COCO數據集上FLOPS下降了8.4%,mAP提升了0.7%;MobileNet-YOLOv3在COCO數據集上FLOPS下降了28.54%,mAP提升了0.9%;在Pascal VOC數據集上FLOPs下降了69.57%,mAP提升了1.4%。

 

 

蒸餾+裁剪,基於COCO數據集的測試能夠加速2.3倍

 

裁剪和蒸餾兩種策略能夠相互結合,並可以取得不錯的效果。經過輸入608x608圖片進行測試,部分耗時測試數據以下表所示。當裁剪的FLOPs減小超過50%時,在手機上的耗時減小57%,即加速2.3倍,裁剪的模型在GPU上也有必定的收益。

 

 

 

03 部署流程無縫銜接

 

PaddleDetection爲用戶提供了從訓練到部署的端到端流程,並提供一個跨平臺的圖像檢測模型的C++預測部署方案。用戶在訓練完模型後,便可獲取現成的C++預測代碼,能夠直接使用完成預測操做,而且僅經過必定的配置以及少許代碼,就能夠把模型集成到本身的服務中,完成相應的圖像檢測任務。預測部署方案擁有以下四大特色:

 

1.    跨平臺。支持在 Windows和Linux 完成編譯、開發和部署。

2.    可擴展性。支持用戶針對新模型開發本身特殊的數據預處理等邏輯。

3.    高性能。除了飛槳自身帶來的性能優點,咱們還針對圖像檢測的特色對關鍵步驟進行了性能優化。

4.    支持常見的檢測模型。如YOLOv三、SSD、Faster-RCNN等,用戶經過少許配置便可加載模型完成常見檢測任務。

 

04 實際應用案例

 

目前PaddleDetection已在武漢精測電子工業質檢、創贏科技垃圾分類項目、南方電網指針類表計讀數解決方案、電網巡檢等多個項目中獲得了實際應用,且取得了良好的效果。

 

以電網巡檢爲例,電網巡檢主要是發現電網設備附近是否存在施工機械、山火、煙霧、異物等安全隱患並上報。傳統電網設備巡檢方式是人工和智能分析設備相結合的方式,可是人工方式存在工種缺員率高,成本大,時效性低,且多爲過後報警等問題,即便發現了,也已經形成了重大損失,例如火災或大型挖掘機觸碰到高壓電網,等人工發現時重大隱患已經發生了一段時間,對電網已經形成重大損失。此外,已有智能設備存在準確率不足,分析耗時長的問題。

 

爲了解決上述問題,百度打造了電網智能巡檢解決方案。該方案中使用了PaddleDetection的目標檢測模型YOLOv3,並使用了YOLOv3的壓縮方案進行部署,能夠實現定時拍照、數據收集、智能分析、自動上報等功能。不只能夠經過AI技術彌補人力不足問題,並且能夠快速準確檢查電網設備附近是否存在施工機械、山火、煙霧、異物等安全隱患。經過PaddleDetection提供的模型壓縮方案,YOLOv3模型總體準確率提高1.8%,硬件CPU內存佔用節省近3倍,速度提高80%,報警響應速度從小時級下降至分鐘級,使企業資產和業務獲得安全保障。目前已完成1000臺電網巡檢設備的實際部署。

 

圖6 電網巡檢方案效果圖

 

若是您加入官方QQ羣,您將趕上大批志同道合的深度學習同窗。官方QQ羣:703252161。

 

若是您想詳細瞭解更多飛槳的相關內容,請參閱如下文檔。

 

官網地址:

https://www.paddlepaddle.org.cn

 

飛槳PaddleDetection項目地址:

https://github.com/PaddlePaddle/PaddleDetection

 

飛槳核心框架項目地址:

 

GitHub: 

https://github.com/PaddlePaddle/Paddle

 

Gitee:  

https://gitee.com/paddlepaddle/Paddle

>> 訪問 PaddlePaddle 官網,瞭解更多相關內容

相關文章
相關標籤/搜索