百度飛槳推出「最抗造」目標檢測模型! 工業應用裡實打實的實用

2020-12-05 極客公園

工業視覺、自動駕駛、安防、新零售等我們身邊熟知的各行各業都需要目標檢測技術,由於其很好的平衡了標註成本、檢測精度和速度等,成為當前智能製造產業升級浪潮中被商業化應用最為廣泛的AI技術之一。

而實際生產環境對檢測算法的精度、速度、體積等要求往往十分苛刻。例如工業質檢,生產線上往往需要毫秒級別的圖片檢測速度,而為了確保使用廠商收益最大化,還需要儘量平衡硬體成本和性能。因此,如何在保持高檢測精度的前提下,儘量提高檢測速度、減小模型體積,成為這項技術真正深入工業實際應用的關鍵。

而目標檢測的王牌家族——YOLO系列模型,作為單階段目標檢測算法的代表之一,一經出世,便以快速精準的檢測效果而迅速躥紅。其不僅在速度上做到真正實時,精度上也可以達到很多非實時兩階段模型才有的水平。

(來自論文《YOLOv3: An Incremental Improvement》)

而學術界和開源社區中的YOLO擁躉、大神們,並未止步於此, YOLOv4、「YOLO v5」也在今年被相繼推出,它們大量整合了計算機視覺的state-of-the-art技巧,例如在數據增強、錨定框、骨架網絡、訓練方式等維度進行優化,從而達到大幅提升YOLO目標檢測性能的效果。

飛槳目標檢測套件PaddleDetection研發團隊為了讓YOLOv3模型在工業實際應用場景擁有更優異的精度與推理速度,以儘量不增加模型計算量和推理開銷為前提,探索出了一整套更深度的算法優化秘籍,將原先YOLOv3模型的精度,在COCO test-dev2017數據集中,從33.0%提升了12.9個絕對百分點,達到45.9%,處於業界領先行列!而在該精度下,其推理速度在V100上達到了72.9 FPS。也就是說,它在精度和預測速度都超越原生的YOLOv4,並且體積更小,實打實的成為工業應用場景最實用目標檢測模型。而這次華麗變身後的YOLOv3,也被正式命名為——PP-YOLO!

如下表所示,在不同輸入尺度下PP-YOLO模型與YOLOv4模型在COCO數據集精度和V100推理速度的交手結果。

(表中數據均為在單卡Tesla V100上batch size=1測試結果,TRT-FP16為使用TensorRT且在FP16上的測試結果,TensorRT版本為5.1.2.2)

而PP-YOLO所應用的的這套優化策略,也可以被嘗試應用到該系列的其它模型上,產業開發者或者科研人員可借鑑這套優化算法展開進一步的探索。而這整套PP-YOLO的優化秘籍也被飛槳同學總結梳理成了論文,感興趣的開發者可以參見飛槳公眾號。

飛槳團隊也在AI Studio為大家創建了 PP-YOLO實戰項目,以供開發者快速體驗模型效果。

PP -YOLO的高精度和高推理速度對多快速運動目標檢測的視頻也可以達到很好的效果。

那PP-YOLO到底採用了哪些優化策略呢?下面咱們帶領大家一起來深入剖析一下飛槳團隊算法優化的 「內功心法」。

1. 基於YOLOv3-DarkNet53的初步優化

原始的模型在COCO minival數據集上精度為33.0%,PaddleDetection首先加入了Bag of Freebies for Training Object Detection Neural Networks論文中提及的優化策略,在不引入額外計算量的情況下,精度提升了3.9個百分點,達到38.9%。具體策略如下:

Image Mixup(圖像混合):以隨機權重將兩張圖片混合起來,提高網絡在空間上的抗幹擾能力。以下圖為例,將任意兩張圖片加權疊加作為輸入,訓練過程中使用的損失為兩張圖片的損失乘以各自權重的加和。

(來自論文《Bag of Freebies for Training Object Detection Neural Networks》)

Label Smooth(標籤平滑):通過在真實的分類標籤one-hot編碼中真實類別的1上減去一個小量,非真實標籤的0上加上一個小量,將硬標籤變成一個軟的標籤,起到正則化的作用,防止過擬合,提升模型泛化能力。

Synchronize Batch Normalization(同步批歸一化):多卡訓練時,一般實現的批歸一化只統計單卡上均值和方差,而檢測任務中,受顯存的限制,batch size比較小,多卡同步,會使得均值和方差統計的更加準確。

2. 更優的骨幹網絡: ResNet50vd-DCN

骨幹網絡可以說是一個模型的基礎,一個優秀的骨幹網絡會給模型的性能帶來極大的提升。針對YOLOv3,飛槳研發人員使用更加優異的ResNet50vd-DCN 作為模型的骨幹網絡。它可以被分為ResNet50vd和DCN兩部分來看。

ResNet50vd是指擁有50個卷積層的ResNet-D網絡。ResNet系列模型是在2015年提出後,在學術界和工業屆得到了廣泛的應用,其模型結構也在被業界開發者持續改進,在經過了B、C、D三個版本的改進後,最新的ResNet-D結構能在基本不增加計算量的情況下先住提高模型精度。經飛槳團隊的多重實驗發現,使用ResNet50vd結構作為骨幹網絡,相比於原始的ResNet,可以提高1%-2%的目標檢測精度,且推理速度基本保持不變。

而DCN(Deformable Convolution)可變形卷積的特點在於:其卷積核在每一個元素上額外增加了一個可學習的偏移參數。這樣的卷積核在學習過程中可以調整卷積的感受野,從而能夠更好的提取圖像特徵,以達到提升目標檢測精度的目的。但它會在一定程度上引入額外的計算開銷。經過多翻嘗試,PaddleDetection團隊發現只在ResNet的最後一個stage(C5)增加可變形卷積,是實現引入極少計算量並提升模型精度的最佳策略。

在使用ResNet50vd-DCN作為骨幹網絡後,YOLOv3模型的檢測精度從原先的38.9% 達到39.1%,而推理速度得到了36%的大幅提高(58.2FPS -> 79.2FPS)。

3. 更穩定的訓練方式:EMA、DropBlock和更大的batch size

為了使PP-YOLO的訓練過程有更好的收斂效果,飛槳團隊通過API paddle.optimizer.ExponentialMovingAverage調用了EMA(Exponential Moving Average)滑動平均功能。滑動平均是指將參數過去一段時間的均值作為新的參數。相比直接對參數進行更新,採用滑動平均的方式能讓參數學習過程中變得更加平緩,能有效避免異常值對參數更新的影響,提升模型訓練的收斂效果。

PP-YOLO的優化過程中使用了DropBlock算法來減少過擬合。如下圖所示,相比於Dropout算法,DropBlock算法在Drop特徵的時候不是以特徵點的形式來Drop的,而是會集中Drop掉某一塊區域,從而更適合被應用到目標檢測任務中來提高網絡的泛化能力。

(來自論文《DropBlock: A regularization method for convolutional networks》)

通過訓練過程中的指數滑動平均和DropBlock策略,結合適當增大訓練的batch size(將單卡的batch size調整到24,8卡總batch size為192,使訓練更加穩定,獲取更優的結果),YOLOv3此時在COCO minival數據集精度提升了2.5%(39.1%->41.4%)。

4. IoU學習

對於目標檢測任務,IoU是我們常用的評估指標,即預測框與真實框的IoU越大,檢測效果越好。基於「所見即所得」的思想,PP-YOLO使用了業界提出的一種新的Loss——IoU Loss,即在訓練過程中使用模型產生的預測框和真實框求IoU,對其取反並加入到損失計算中,這樣相當於在優化損失的時候就是在提升IoU。注:在PP-YOLO中,飛槳採用了最基礎的IoU損失計算方法,即IoU Loss = 1 - IoU * IoU 。

另一方面,我們知道YOLOv3模型裡的預測框評分score = objectness score * classification score,即該預測框處存在目標的概率和對應目標類別的概率的乘積,而此種評分方式並沒有考慮預測框的定位精度。而目標檢測模型都需要對最後的預測框進行非極大值抑制(NMS),即按照預測框評分進行排序,然後刪除得分低的框。因此很容易出現如下圖的情況,即IoU低的預測框因為評分高而在NMS過程中將IoU高的預測框擠掉了。

而使用IoU Aware可以很好的避免這種情況,即在訓練過程中增加一個通道來學習預測框和真實框之間的IoU,在推理過程中,將這個通道學習的IoU預測值也作為評分的因子之一,這樣就能一定程度上避免高IoU預測框被擠掉的情況,從而提升模型的精度。同時,由於只是輸出層的每個anchor上增加了一個通道,對於推理計算量的增加也基本可以忽略不計。

(來自論文《IoU-aware Single-stage Object Detector for Accurate Localization》)

通過使用上述優化方法,模型精度又提升了1.1%(41.4%->42.5%),而對推理速度的影響比較小(79.2FPS -> 74.9FPS)。

5. Grid Sensitive

YOLOv3的檢測原理是將圖片劃分成多個網格,真實框的中心點落在哪個網格上就由哪個網格負責檢測這個真實框,而推理輸出特徵圖中包含預測框中心坐標的logits值,這個值經Sigmoid激活後,即表示預測框中心坐標在網格中的相對位置。如下圖所示,預測框的Px和Py經Sigmoid激活後,即表示預測框中心坐標相對真實框中心坐標gx和gy的偏移。那麼如果這個真實框的中心點剛好落在網格邊緣,則訓練過程中趨向於把輸出logit值向正負無窮去學習,容易導致過擬合。

Grid Sensitive是YOLOv4模型引入的一種優化方法,即在計算預測框中心點在網格內的坐標時,對輸出logit取sigmoid激活後,再加上一個縮放和偏移,可以保證預測框中心點能夠有效的擬合真實框剛好落在網格邊線上的情況。

通過加入Grid Sensitive,此輪精度又提升了0.3%(42.5%->42.8%),推理過程中只需要對預測框解碼時在中心點坐標上乘上縮放,再加上偏移即可,因此推理速度幾乎沒有影響(74.9FPS -> 74.8FPS)。

6. 後處理優化: Matrix NMS

在推理過程中,NMS還會刪除與得分高的框的重合度大於一定閾值的其它預測框,這樣對於存在兩個同類別物體重疊的的圖像檢測任務來說,就會出現一個物體的預測框把另一個物體的預測框抑制掉的情況,導致漏檢。

因此又引入了Soft NMS這個概念,其解決思路並不是粗暴的將與得分高的預測框重合度大於閾值的框直接濾除,而是降低這個預測框的評分,對預測框評分的懲罰係數與這兩個框的重合度,也就是IoU正相關,採用這種軟化的濾除方式就能有效的避免重疊的同類物體預測框互相衝突的情況,提高檢測的精度。

但引入Soft NMS會使推理速度變慢。因此此輪模型優化採用了更優的Matrix NMS:一種並行化進行Soft NMS的實現思路。Matrix NMS通過一個矩陣並行運算的方式計算出任意兩個框之間的IoU,例如對某一個預測框B計算抑制係數時,Matrix NMS通過矩陣並行方式計算出所有得分高於B的預測框與預測框B的IoU,然後根據這些IOU和得分高於B的預測框的被抑制概率做近似估算,估算出B的抑制係數,從而實現並行化的計算Soft NMS,在提高檢測精度的同時,避免了推理速度的降低。

使用Matrix NMS後,模型在推理速度幾乎不變的情況下提升0.7%的精度(42.8% -> 43.5%)。

8. 特徵提取優化: CoordConv, 空間金字塔池化

另外PP-YOLO還引入了兩種幾乎不增加計算量但是能優化特徵提取的方法。我們知道深度學習裡的卷積運算是具有平移等變性的,這樣可以在圖像的不同位置共享統一的卷積核參數,但是這樣卷積學習過程中是不能感知當前特徵在圖像中的坐標的。CoordConv就是通過在卷積的輸入特徵圖中新增對應的通道來表徵特徵圖像素點的坐標,讓卷積學習過程中能夠一定程度感知坐標來提升檢測精度。

(來自論文《An Intriguing Failing of Convolutional Neural Networks and the CoordConv Solution》)

空間金字塔池化是SPPNet提出的,如下圖所示通過多個不同尺度的池化窗口提取不同尺度的池化特徵,把特徵組合在一起作為輸出特徵,在骨幹網絡提取特徵後加入空間金字塔池化,能有效的增加特徵的感受野,是一種廣泛應用的特徵提取優化方法。

使用CoordConv和SPP兩種特徵提取優化方法後,精度進一步提升了0.8%(43.5%->44.3%), 這兩種方式新增的推理計算量並不大,所以推理速度僅有少量下降(74.1FPS -> 72.9FPS)。

9. 更優的預訓練模型: SSLD

通過上述優化方法,PP-YOLO模型在COCO minival數據集上的精度優化到了44.3%,V100上預測速度為72.9FPS。另外飛槳推出的圖像分類端到端套件PaddleClas還提供了ResNet50vd的SSLD知識蒸餾模型及權重,使ResNet50vd模型在ImageNet上的Top-1分類精度從79.1%優化到82.4%,感興趣的同學可以通過下面的地址了解蒸餾方案。PP-YOLO模型在使用了SSLD知識蒸餾之後更優的預訓練權重進行訓練後,COCO minival數據集的精度又提升了0.5%(44.3%->44.8%)。

經過上述優化方法,飛槳的研發人員又將訓練迭代次數和學習率衰減的迭代次數調整至和原始YOLOv3模型的迭代次數一致,也就是訓練迭代次數從25萬次增加到50萬次,對應學習率衰減的迭代次數調整至40萬和45萬,使PP-YOLO模型(如表中的K模型所示)在COCO minival數據集精度再次提升0.5% ,達到45.3%,單卡V100上batch size=1時的預測速度為72.9 FPS。如果使用COCO test_dev2017數據集測試,精度將達到45.9%。

後續工作

考慮到現在工業、網際網路等各行各業需要使用輕量化的模型在移動端、邊緣端部署目標檢測模型,PaddleDetection團隊正在進一步優化適用於輕量化部署的PP-YOLO,很快也將以開源項目、詳細的使用文檔及快速體驗Demo的組合形式為大家呈現。

課程預告

百度飛槳為了幫助大家能快速、深入、全面的了解目標檢測技術,將於九月中旬特地開設「目標檢測7日打卡營」。資深研發工程師傾囊相授多年「煉丹」經驗,配套真實工業落地場景案例,最先進的調優方式、訓練技巧、優化技巧和工業部署方案,7天帶您一網打盡,千萬不要錯過!

來源:科技世界網

相關焦點

  • 精度45.9%,推理速度72.9FPS,百度飛槳推出工業級目標檢測模型
    而實際生產環境對檢測算法的精度、速度、體積等要求往往十分苛刻。例如工業質檢,生產線上往往需要毫秒級別的圖片檢測速度,而為了確保使用廠商收益最大化,還需要儘量平衡硬體成本和性能。因此,如何在保持高檢測精度的前提下,儘量提高檢測速度、減小模型體積,成為這項技術真正深入工業實際應用的關鍵。
  • 全球AI作業系統暗戰:百度飛槳為中國深度學習撐起天空
    為了適應這個趨勢,產業界都在力爭實現AI技術上的「彎道超車」;另一方面,前沿技術在各行業裡的應用,也已經達到相當高水平,客觀上給產業技術帶來了通過AI應用實現升級的可能性。這種發展態勢,對超大規模深度學習模型訓練技術提出了極高要求。而百度飛槳,正是在這個大背景下應運而生的。
  • 飛槳閃耀2019百度雲智峰會,軟硬結合助力產業智能化
    AI加速器性能提升了近30倍,兼容飛槳深度學習框架,針對圖像、語音、NLP等AI能力專門優化,使得中國的AI跑在自主可控的AI晶片上;企業級AI開發平臺——百度機器學習BML4.0,全面涵蓋從數據到模型再到服務的AI全流程,支撐端、邊、雲一體化,內置飛槳深度學習框架,集成超過70個飛槳自研模型,超過60個高性能算子。
  • 明晚直播丨有趣又實用瑕疵檢測項目思路分享
    對於一架擁有成千上萬個精密零件的航空飛機來說,輪胎表面的一點點瑕疵,也許是最不起眼的一個部分。但就是這麼一個細節的瑕疵,可能會直接影響航空飛機的使用效果,甚至會給乘客帶來不可挽回的損失。在工業質檢領域,一切細節都至關重要。
  • 百度開源業內首個口罩人臉檢測及分類模型
    抗擊疫情,眾志成城,人工智慧技術正被應用到疫情防控中來。2月13日,百度宣布免費開源業內首個口罩人臉檢測及分類模型。
  • 北航孫鈺:昆蟲目標檢測技術
    報告內容:以2018年C4-AI創意賽一等獎作品《智能蟲情監測物聯網》為例,介紹人工智慧+生態的典型項目,講解針對林業害蟲紅脂大小蠹的目標檢測技術,內容覆蓋數據採集、模型設計、飛槳軟硬體選型、物聯網部署等完整流程。
  • 百度兌現承諾:手把手教零AI基礎的你,如何訓練高精度NLP...
    EasyDL是百度大腦面向企業開發者推出的零門檻AI開發平臺,基於百度自主研發的深度學習平臺飛槳,結合業界先進的工程服務技術打造,覆蓋視覺與自然語言處理兩大技術方向,支持一站式智能標註、模型訓練、服務部署等全流程功能。目前EasyDL已經被廣泛應用在零售、網際網路、安全生產、工業質檢、教育、醫療、交通等20多個行業,擁有70多萬用戶。
  • 國產AI力量崛起,中國工業迎來智能化新時代
    在百度飛槳(PaddlePaddle)的助力下,一直專注於電子商務數據分析與數據挖掘的精諾數據推出精諾智能熔煉系統,以大數據、物聯網、人工智慧的方式解決熔煉難題。精諾數據基於百度飛槳,研發了一套鑄造熔煉生產智能解決方案。
  • 百度吳甜解讀飛槳成長之路:與時代發展脈搏同頻共振
    六年級的陳奕帆,是百度之星辦賽16年來進入決賽年齡最小的選手,與近萬名博士、碩士開發者角逐後脫穎而出,榮獲「未來之星」特別獎;58歲郭崇華,是一位退休的人才管理專家和終身學習者,高鐵上也在爭分奪秒趕飛槳培訓課程的作業;晶片企業工程師安寶磊,累計在飛槳平臺上開發代碼數量已超過3600行,志在把AI帶進各行各業;代號「GT-老張」的張弘基從2018年底接觸飛槳開始,不分晝夜地在社區累計答疑超過
  • 全球頂尖學術期刊《Nature》盤點中國AI飛躍式發展 百度飛槳等核心...
    如百度飛槳(PaddlePaddle)等核心技術工具及基礎研究是實現人工智慧長期研發目標的關鍵所在。  比如深度學習領域,美國的開源平臺TensorFlow和Caffe在世界範圍內被工業和學術界被廣泛應用。但他同時指出,百度開發的開源深度學習平臺飛槳(PaddlebPaddle)也被廣泛應用於人工智慧產品的快速開發。  據鄭南寧預測,中國達到美國和英國在基礎理論和算法方面的創新水平是可以實現的,但可能需要5-10年的時間。
  • 百度大腦論壇如期而至,語音、視覺、語言與知識技術成熱點
    百度飛槳最新進展及其應用作為百度極力推薦的深度學習平臺,飛槳自然是此次論壇的重點。百度深度學習技術平臺部總監馬豔軍詳細介紹了飛槳在圖像搜索、目標檢測、工業質檢方面的三大進展。而談到工具的發展,與開發者息息相關的必然是開發者培訓,飛槳目前有三大培養體系,黃埔學院、AI 快車道、PaddleCamp。在最後,他提到 2019 百度之星,這包括百度之星編程賽(基礎算法+AI 對抗賽)與百度之星開發賽(基於飛槳的目標檢測任務),這一賽事的報名會在本月截止,今年十月會進行全國總決賽。
  • 百度「 AI 抗疫」啟示錄
    這件事情聽起來未免有點玄乎,但是百度真的做成了這件事情。這得益於百度飛槳開源的業內首個「口罩檢測及分類模型」,以及戴口罩人臉識別技術的開放。一般情況下,人臉識別是先提取人臉的128維特徵點,然後根據不同的算法比較特徵點進行人臉識別工作。戴了口罩之後,臉部的特徵點就會少很多。這個情況下,對模型提出的要求有多高,我們可以想像的到。百度是怎麼做的?
  • 2019百度AI開發者大會前夕,解讀百度大腦的半年「豹變」
    近期,在被稱為計算機視覺界「奧斯卡」的計算機視覺及模式識別領域頂級國際學術會議CVPR上,百度大腦在10項競賽中奪冠,涵蓋視覺領域下的視頻理解與分析、目標檢測、圖像超分辨、智能城市車輛識別、人體&人臉檢測等眾多子領域。本屆會議收到了5160篇提交論文,1294篇論文最終被接收發表,其中百度共有17篇論文被收錄。
  • 百度AI的2020
    飛槳凝聚超過265萬開發者,累計 commit 16萬次,開源貢獻者超過5000位,發展飛槳開發者技術專家(PPDE)97位,基於飛槳訓練34萬個模型,服務10萬家企業。在城市、工業、電力、通信等很多關乎國計民生的領域,飛槳都在發揮價值。
  • 護航百度大腦 百度AI安全版圖亮相百度世界大會2020
    作為其中的核心議題,AI在安全方面的諸多挑戰不僅關係到整個AI體系的穩定可靠,直接影響到AI算力、算法和數據的落地應用,也為相應的安全能力建設提出了新的要求與新的思維方式。面對一系列全新的安全挑戰,馬傑在演講中將AI安全問題劃分為Security、Safety和Privacy三個維度進行考量,並由此探尋更具針對性的解決方案。
  • 自研晶片+自主AI框架,百度CTO王海峰攜百度大腦6.0亮相
    那麼,到了第十個年頭,百度大腦成功升級6.0後又帶來了哪些新變化?過去一年,百度大腦又在AI計算架構、算法、能力上做出了創新和重要升級,已經成為智能時代的「AI新型基礎設施」。如果說,百度大腦的第一個十年是完成了能力進化和體系構建,那麼下一個十年,百度大腦的目標就是將最先進的AI技術落地化。
  • 11項新升級,免費送億元算力:國產深度學習平臺「飛槳」大更新
    王海峰介紹說,AutoDL設計的網絡已經超過了很多專家設計的深度學習系統,而EasyDL上已經有超過3萬個模型,很多行業都在EasyDL上解決自己的問題,比如零售、工業、醫療等等。它們都讓深度學習任務更加自動化了。可以說,無論是整個飛槳的設計還是剛剛發布的更新,都在適應工業化大生產的需求:具有通用性,朝著標準化、自動化和模塊化的方向發展。
  • 百度EasyDL全新升級,文心(ERNIE)3項能力助力快速定製企業級NLP模型
    近日,百度文心(ERNIE)重磅發布三項功能,新增定製多標籤文本分類、情感傾向分析模型等功能,同時數據管理能力也進一步增強,更好地滿足自然語言處理(NLP)領域開發者需求,開發者可通過百度AI開發平臺EasyDL進行使用。
  • 「百度大腦」 放大招了!
    1.輕鬆上手的一站式服務 EasyDL 為廣大 AI 小白提供了便利性,使大家無需了解算法細節,5分鐘即可上手,最快10分鐘完成模型訓練。內置百度自研 AutoDL 技術,只需少量數據就能訓練出高精度模型。