隨著防控措施效果顯現,新冠疫情在全國範圍內已經得到了控制。當我們走進地鐵與車站,甚至很多小區與超市,都會看到口罩人臉檢測系統與紅外測溫系統,這些都是人工智慧在疫情控制方面給出的獨到幫助。
人工智慧在抗擊疫情過程中作出的貢獻,與深度學習先進演算法的不斷開源是密不可分的。早在 2 月份,百度就開源了首個口罩人臉檢測模型,併發布了多個預訓練模型,你要部署到伺服器還是移動端,它都能滿足。
我們會發現,這樣的預訓練模型簡直太好用了,比如說藉助 PaddleHub,只需一行命令就能部署到伺服器。然而不止是 PaddleHub,整個 PaddleCV 也非常好用,不然開發者很難在短時間內藉助它開發並開源「防疫模型」。
近日,百度正式全面升級 PaddleCV,頂尖模型新發布、常用模型再提速,它已經是有 73 個視覺頂尖演算法、203 個預訓練模型的大家庭了。
PaddleCV 新一波來襲
之前機器之心曾介紹過,相比 TensorFlow 或 PyTorch,PaddlePaddle 擁有最大的官方模型庫,也就是說飛槳團隊會花費大量精力維護這些模型,以保證它們的效能最優、API 最新、易用性最好。PaddleCV 是就是其中包含視覺演算法、模型和工具的開源專案。
在這一次的 PaddleCV 更新中,PaddleCV 新增產業實踐中廣泛應用的 15 個演算法、35 個高精度預訓練模型,以及 3D 視覺、PLSC 超大規模分類模型這兩項全新能力。
PaddleCV 地址:https://github.com/PaddlePaddle/models/tree/release/1.7/PaddleCV
如上全景圖所示,整個 PaddleCV 從底層工具到最上層的套件都有更新,其中 PaddleDetection 更新、新增了一系列演算法模型,例如增強版 YOLOv3 相比原版提升 mAP 10 個點,新增 COCO 最佳檢測模型 CBNet 等。
與此同時,PaddleSeg 也有很多更新,例如新增實時語義分割模型 Fast-SCNN、基於 HRNet 的高精度影像分割模型。以非常流行的 DeepLab V3+來說,Fast-SCNN 的推理速度要比它快一倍多。
兩大新發布
PaddleCV 全新發布了 3D 點雲視覺演算法,可能在我們的印象中,3D 視覺還處於研究階段,但這兩個模型已經經過了工業界的重重考驗,有很好的穩定性與效果。給定 3D 點雲,PaddleCV 中的 3D 視覺模型就能完成目標檢測,構建一個神奇的 3D 邊界框。
PointRCNN 與一般目標檢測一樣分為兩階段:自底向上生成 3D 候選邊界框,以及微調精煉得到精確的 3D 邊界框。
另一項新發布是 PLSC 這個超大規模分類工具,它的「超大規模」指的是千萬規模的分類任務,這對於大規模人臉識別,或「口罩人臉識別」非常重要。
飛槳大規模分類庫 PLSC 封裝了大規模分類神經網路實現,提供簡潔易用的高層 API,使用者透過五行程式碼即可實現千萬類別分類神經網路。訓練有多簡單?看下面這段程式碼就知道了:
from plsc import Entry
if __name__ == "main":
ins = Entry()
ins.set_class_num(1000000) #設定分類類別數
ins.train()
——————————————————————————————————————————————————
# command line
python -m paddle.distributed.launch \
--selected_gpus=0,1,2,3,4,5,6,7 \
train.py
演算法硬體不分家
總的來說,在演算法上,PaddleCV 現在已有 73 個視覺頂尖演算法。如果覺得這個數字還不夠直觀的話,推薦可以看一看 PaddleCV 的 GitHub 頁面,模型列表真的非常豐富,不說最常規的影像分類模型,影片類演算法都有下面這麼多。
PaddleCV 的模型已經有那麼多了,若要用好它們,壓縮、部署、硬體缺一不可。而現在,從訓練到部署,藉助飛槳在伺服器和移動端全硬體平臺能力,視覺模型能落地到各種平臺,包括百度的崑崙晶片。PaddleSlim 為不同的模型提供最好的壓縮方案,以適合不同的硬體,而 Paddle Lite 等工具則以最好的方式真正將模型執行在各類硬體上。
完整的 PaddleCV 與更新內容讀者可檢視 GitHub 地址,本文後面則主要介紹 PaddleDetection 的更新內容,它從效能更新、頂尖新模型和實戰部署都有很多進步。
YOLOv3:訓練再提速 40%
PaddleDetection 的目的是為工業界和學術界提供豐富、易用的目標檢測模型。在這一次更新中,我們能看到 PaddleDetection 最佳化了很多主流模型的效能,YOLOv3 就是一個明顯的案例。
在 COCO 資料集的上,骨幹網路 DarkNet 作者在其論文中所使用的 YOLOv3 模型的驗證精度 mAP 為 33.0%,而飛槳在之前版本中曾經發布過基於 DarkNet53 的 YOLOv3 模型,該模型的驗證精度為 mAP 38.9%。
在最新的 PaddleDetection 檢測庫中,飛槳對 YOLOv3 又做了如下改進,使得驗證精度 mAP 再次提高到 43.2%,並且推理速度提升 21%。本次升級還對資料預處理速度持續最佳化,使得整體訓練速度提升 40%。相比原版 YOLOv3,百度最佳化的模型在 mAP 上已經有 10 個點的提升,就說準確度這就已經非常驚人了。
而 YOLO,差不多是目前最為常用的目標檢測演算法,每次最佳化都顯得非常有意義。YOLO 模型最早由 Joseph Redmon 等人在 2015 年提出,並在隨後的幾篇論文中進行了修訂。
YOLO 的創新之處在於,它提出了 one-stage 的檢測思路,即目標定位和目標識別在一個步驟中完成,不需要網路劃定邊界框後再進行預測。但它也有一定的缺陷:它不擅長小目標檢測。為了彌補這一缺陷,2018 年,Redmon 等人釋出了 YOLO v3。
在架構上,YOLOv3 採用了 Darknet-53,並借鑑了殘差神經網路的思路,採用了殘差連線,從而更好地學習影像特徵。那麼,飛槳團隊為什麼能最佳化 10 個點的精度,且還提升訓練推理速度?
首先,飛槳團隊將 YOLOv3 的骨幹網路從 DarkNet 更換為 ResNet50-VD 型別。ResNet50-VD 網路相比升級前的 DarkNet53 網路,在速度和精度上都有一定的優勢,且 ResNet 系列更容易擴充套件。在 PaddleDetection 中,使用者可以針對自己業務場景的特點,靈活選擇 ResNet18、34、101 等不同網路型別作為模型的骨幹網路。
ResNet-50 是著名的目標檢測骨幹網路,具有一定的效能優勢。而「VD」則是在這一網路的基礎上進行的改進,如在訓練方面增加一些技巧,或進行架構上的改進等。
對於 ResNet-50 的幾種架構改進。
另一方面,PaddleDetection 引入 Deformable Convolution v2(簡稱 DCNv2,可變形卷積)替代原始卷積操作。實驗資料表明,使用 ResNet50-VD 和 DCNv2 後,模型精度提升了 0.2%,提速約為 21%。
DCNv2 同時考慮了速度與精度平衡。本次升級的 YOLOv3 模型使用 DCNv2 替換了主幹網路中 stage5 部分的 3x3 卷積。
此外,PaddleDetection 在 FPN 部分增加 DropBlock 模組,提高了模型泛化能力。DropBlock 演算法相比於 Dropout 演算法,在 Drop 特徵的時候會集中在某一塊區域,更適合應用到檢測任務中來提高網路的泛化能力。
Dropout 和 Dropblock 對比圖。
這樣一種機制,很明顯能夠幫助網路集中對某些區域進行 Dropout,因此它相比隨機 Dropout 具有更好的針對性。
從 YOLOv3 在飛槳上進一步大放光彩可以說明,本次 PaddleDetection 的開源,讓很多優秀而成熟的老模型能夠進一步提升自身的效能,從而在更多影像場景中發揮有效能力。
CBNet:新增 COCO 最優檢測模型
PaddleCV 除了保證 YOLO 這種常用模型「跟上時代的步伐」,也會增加一些經實踐檢驗過的優質演算法。COCO 資料集精度最高的開源模型 CBNet、Open Images V5 目標檢測比賽最佳單模型等在這一次更新中都有加入。
CBNet 是目前 COCO 資料集上表現最佳的目標檢測網路,在測試集上其 mAP 為 53.3%。CBNet 透過相鄰骨幹(backbone)網路之間的複合連線 (Composite Connection) 組合生成新的骨幹網路,稱為複合骨幹網路 (Composite Backbone Network)。以 ResNet 結構為例,級聯個數為 2 時,稱為 Dual-ResNet,級聯個數為 3 時,稱為 Triple-ResNet。
本次 PaddleCV 新增的 CBNet 基礎模型使用的是 AHLC(Adjacent Higher Level Composition)組網方式,即Assistant Backbone的每個輸出特徵都透過複合連線模組作為相鄰骨幹的輸入。在論文中,AHLC 為多種組網方式中效能最好的聯結方式。
此外除了新增基礎模型外,還發布了單尺度檢測模型 CascadeRCNN-CBR200-vd-FPN-dcnv2-nonlocal,其在 COCO 測試集上精度高達 53.3%。
PaddleSlim:模型壓縮排入 1.0
PaddleCV 提升、更新了一大波模型,這些模型要實際應用到手機等裝置,還是必須得完成「瘦身」操作。目前 PaddleSlim 已經進入了 1.0 版,它應用到在 SDK,在嵌入式裝置上 0.3 秒內就能完成人臉檢測、跟蹤、活體檢測和識別等全流程。
在前文中,YOLO v3 已經有了增強版,而對於 PaddleSlim,它也能提供定製化的 YOLO 蒸餾方案,其可以重新整理 COCO 檢測任務精度。下表對 YOLOv3 的「瘦身」效果有很詳細的描述,在 Pascal VOC 資料集上,減少 67% 的引數量、69% 的計算量,效果竟然還要提升 2.6%。
PaddleSlim 1.0 也是走向成熟的標識,它在模型壓縮方面已經做得非常好了,那麼 1.0 將不止步於的知識蒸餾、剪枝等壓縮方法。PaddleSlim 1.0 開放了更加靈活的網路結構搜尋 NAS API,預定義了更豐富的搜尋策略和搜尋空間,只有搜尋,才能針對特定任務實現更完美的架構。
上圖展示了 One-Shot 網路結構搜尋原理,相比之前方法一塊 V100 GPU 需要 42 天 才能完成,One-Shot 只需要 4 天。其獲得的收益是,相比 MobileNet V2,搜尋出的網路在計算量(FLOPs)上少了 20%。
作為成熟的瘦身框架,它勢必與部署聯絡在一起,我們壓縮模型不就是為了方便在各種裝置上使用麼?PaddleSlim 1.0 這一點也是考慮到的,從訓練、壓縮到部署,模型能無縫落地到各種硬體環境。
最後,基於飛槳框架,開發者們現在可以快速利用主流演算法,直接進行全流程模型開發。甚至可以快速實現最頂尖的 3D影像分類、語義分割和目標檢測任務,並讓模型精度與世界領先水平持平。百度飛槳已為我們發展應用提供了必不可少的工具。
在疫情進入消退期後,「新基建」正在成為各界關注重點,在發力於科技端的基礎設施建設過程中,人工智慧登場的舞臺必將越來越多