下載安裝命令
## CPU版本安裝命令
pip install -f https://paddlepaddle.org.cn/pip/oschina/cpu paddlepaddle
## GPU版本安裝命令
pip install -f https://paddlepaddle.org.cn/pip/oschina/gpu paddlepaddle-gpu
今天我們來聊聊計算機視覺領域最核心的技術之一——圖像分類。顧名思義圖像分類是指根據圖像信息把不一樣類別的圖像自動區分開來,並能指出圖像類別信息。如圖 1 所示,當前圖像分類技術有着很是普遍的應用場景。git
圖 1 圖像分類技術應用github
此外圖像分類技術在計算機視覺各種任務中堪稱「基石」,這和人類的視覺方面的技能樹點亮順序很像。嬰兒在能看清周圍事物後,父母除了教他認識爸爸媽媽以外,還會經過畫本告訴他,這是花,這是草,這是車,這是飛機等等,這其實就是訓練圖像分類的過程。能夠說圖像分類是人類最早學到的一門本領。而在此基礎之上,纔會繼續學會指出什麼物體在什麼位置(目標檢測),以及如何去接觸物體(圖像分割)等等。若是您仔細分析下計算機視覺的其它技術,您會發現,也確實是如此。算法
對於其它視覺任務,像圖像目標檢測、圖像分割、圖像檢索、天然場景文字檢測和識別、人臉檢測和識別等等,經常將圖像分類的網絡結構做爲骨幹網絡。例如使用基於 ImageNet1K 分類數據集訓練的模型做爲特徵提取器,來提高目標任務的組網效率和效果。若是把某個視覺任務當作是建造一棟大樓,圖像分類的網絡結構和預訓練模型則能夠當作是這棟大樓牢固的地基和穩定的骨架。服務器
圖像分類如此重要,可想而知訓練出優秀的圖像分類模型也是一個頗有挑戰的任務,其最大的困難點就在於訓練圖像的複雜性!什麼?想知道有多複雜?那我們拿狗狗舉例子吧,有人會說:狗狗嘛,很好分辨啊!你覺得你的模型只會用於推理這種一寸免冠照片式的圖像嗎?網絡
錯!你的模型可能面臨的是這樣的、這樣的和這樣的!app
怎麼樣?有什麼想說的嗎?框架
解決問題的第一步就要認識問題,所以通過科研人員的研究,如圖 2 所示,圖像的辨識困難點主要有如下幾點:ide
-
occlusion:識別目標被遮擋工具
-
scale:識別目標的尺度變化
-
deformation:識別目標變形
-
clutter:識別目標所處的背景嘈雜
-
illumination:識別目標所處環境的光照變化
-
viewpoint:拍攝識別目標的視角變化
-
object pose:識別目標的姿態變化
圖 2 圖像分類困難點(來源於:KristenGrauman,BastianLeibe,Visual Object Recognition)
爲了解決上述這些困難,研究人員從數據增廣、骨幹網絡設計、損失定義、優化器設計、模型壓縮裁剪量化、模型可解釋性、特徵遷移學習等不一樣的角度對圖像分類問題進行深刻探索。飛槳圖像分類套件 PaddleClas 是飛槳爲工業界和學術界所準備的一個圖像分類任務的工具集,助力使用者訓練出更好的視覺模型和應用落地。PaddleClas 具有如下 4 大特點,豐富的模型庫、高階優化支持、特點拓展應用、以及工業級部署工具。下面將爲你們詳細分解。
豐富的模型庫
因爲學習率、學習率降低策略、batch_size、權重衰減、標籤平滑、數據增廣等超參選擇和設定對分類效果影響很大,復現對齊一種分類網絡結構每每很是具備挑戰性。基於 ImageNet1k 分類數據集,PaddleClas 提供 ResNet、ResNet_vd、Res2Net、HRNet、MobileNetV3 等 23 個系列的分類網絡結構的簡單介紹、論文指標復現配置以及在復現過程當中積累的訓練技巧。同時,PaddleClas 還提供了與 23 個系列網絡結構相對應的 117 個預訓練模型,以及推理效果和性能評估。
先說服務器端的預訓練模型,如圖 3 所示,圖中記錄了在 V100,FP32 和 TensorRT 環境下一些最新的面向服務器端應用場景的模型的效果和性能對比圖,經過該圖用戶能夠直觀的快速選擇出須要的網絡結構。
圖 3 服務器端預訓練模型效果和性能評估
在這些模型中,優先推薦使用 ResNet_vd 系列模型,這是由於 ResNet 系列模型是業界較爲成熟且應用普遍的一種模型,其不只應用於圖像分類任務,還能夠用於目標檢測等其它任務類型。而 ResNet_vd 是 ResNet 的改進版,在儘量減小推理耗時增長的前提下,識別準確率大幅提高 2.5% 左右,而且在採用知識蒸餾方案 SSLD 的增強後,PaddleClas 能夠提供該系列當前最有競爭力的預訓練模型,82.4% 的 ResNet50_vd_ssld 和 83.7% 的 ResNet101_vd_ssld,現在這些模型的性能還在持續提高中。
再看移動端場景,圖 4 根據在驍龍 855(SD855)上預測一張圖像所需的時間和準確率,記錄比對了一些最新的面向移動端應用場景的模型。包括 MobileNetV1 系列、MobileNetV2 系列、MobileNetV3 系列和 ShuffleNetV2 系列。
圖 4 移動端預訓練模型效果和性能評估
在這些模型中,優先推薦使用 MobileNetV3 系列模型。MobileNetV3 是一種基於 NAS 的新的輕量級網絡,與其餘網絡相比,在相同的預測速度下,MobileNetV3 系列網絡的精度更有競爭力。同時,採用知識蒸餾方案 SSLD,PaddleClas 也提供了該系列當前最有競爭力的預訓練模型,準確率達到 79% 的 MobileNetV3_large_x1_0_ssld 和 71.3% 的 MobileNetV3_small_x1_0_ssld。此外,PaddleClas 還提供了在內存佔用上很是有優點的 MobileNetV1 和 MobileNetV2 的蒸餾模型,這兩類模型能夠僅佔用較少的內存資源,便可以達到不錯的性能效果。
不一樣模型的簡介、訓練技巧、FLOPS、Parameters、GPU 預測時間、CPU 預測時間和存儲大小請參考教程中的模型庫章節:
https://paddleclas.readthedocs.io/zh_CN/latest/models/index.html
高階優化支持之
SSLD 知識蒸餾方案
前面屢次提到 SSLD 知識蒸餾方案,那它到底是什麼呢?知識蒸餾是指使用教師模型 (teacher model) 去指導學生模型 (student model) 學習特定任務,保證小模型在參數量不變的狀況下,獲得比較大的效果提高,甚至得到與大模型類似的精度指標。此外該方案的最大的特色是能夠幫助用戶利用沒有標註的數據對模型進行訓練,提高模型效果。
那麼圖像分類模型與知識蒸餾技術攜手,會有什麼樣的威力呢?PaddleClas 提供了一種簡單的半監督標籤知識蒸餾方案(SSLD,Simple Semi-supervised Label Distillation)。如圖 5 所示,使用該方案模型效果廣泛提高 3% 以上。
詳細的 SSLD 知識蒸餾方案介紹、核心關鍵點、實驗細節以及方案使用請參考教程中高階使用的知識蒸餾章節:
https://paddleclas.readthedocs.io/zh_CN/latest/advanced_tutorials/distillation/index.html
圖 5 蒸餾模型提高效果圖
高階優化支持之
八種數據增廣方法
在圖像分類任務中,圖像數據的增廣是一種經常使用的正則化方法,能夠有效提高圖像分類的效果,尤爲對於數據量不足或者模型網絡較大的場景。經常使用的數據增廣能夠分爲 3 類,圖像變換類、圖像裁剪類和圖像混疊類:
-
圖像變換類是指對全圖進行一些變換,包括 AutoAugment、RandAugment。
-
圖像裁剪類是指對圖像以必定的方式遮擋部分區域的變換,包括 CutOut、RandErasing、HideAndSeek、GridMask。
-
圖像混疊類是指多張圖進行混疊一張新圖的變換,包括 Mixup、Cutmix。
圖 6 數據增廣方法
PaddleClas 提供了上述 8 種數據增廣算法的復現,以及在統一實驗環境下的效果評估,如圖 7 所示。該圖展現了不一樣數據增廣方式在 ResNet50 上的表現, 與標準變換相比,採用數據增廣的識別準確率最高能夠提高 1%。不要小看這 1%,若是應用到實際業務中,這可能就是多識別出幾千幾萬張圖片呢!
圖 7 數據增廣算法對比圖
每種數據增廣方法的詳細介紹、對比的實驗環境以及使用請參考教程中高階使用圖像增廣章節:
https://paddleclas.readthedocs.io/zh_CN/latest/advanced_tutorials/image_augmentation/index.html
工業級部署工具
飛槳提供了一系列實用工具,便於工業應用部署 PaddleClas,包括 TensorRT 部署推理、移動端部署推理、模型服務化部署等等。而這些工具大都以圖像分類爲例,提供示例教程和進行優化。所以若是用戶使用 PaddleClas 訓練的模型,經過參考文檔教程中的實用工具章節,就能夠很方便的把模型集成到本身的服務中,完成相應的圖像分類任務。
教程中的實用工具章節請參見:
https://paddleclas.readthedocs.io/zh_CN/latest/extension/index.html
實際應用案例
1. 10 萬類圖像分類預訓練模型
在實際應用中,因爲訓練數據匱乏,每每將 ImageNet1K 數據集訓練的分類模型做爲預訓練模型,而後進行圖像分類的遷移學習。然而 ImageNet1K 數據集的類別只有 1000 種,預訓練模型的特徵遷移能力有限。所以百度自研了一個有語義體系的、粒度有粗有細的 10W 級別的 Tag 體系。經過使用人工或半監督方式,至今收集到 5500w+ 圖片訓練數據;該系統是國內甚至世界範圍內最大規模的圖片分類體系和訓練集合。
百度的小夥伴基於 PaddleClas 提供的 ResNet_vd 系列網絡結構的訓練方法和預訓練模型,訓練了一批大規模圖像分類預訓練模型,並應用到實際圖像分類相關業務中。下表顯示了一些實際應用場景中,基於 ResNet50_vd,使用 ImageNet 預訓練模型和 10 萬類圖像分類預訓練模型的效果比對,使用 10 萬類圖像分類預訓練模型,識別準確率最高能夠提高 30%。最最重要的是,上述預訓練模型都已經在 PaddleClas 上開源了!心動的小夥伴們不要錯過啊!
上述圖像分類方案的詳細介紹和使用請參考教程中應用拓展的圖像分類遷移學習章節:
https://paddleclas.readthedocs.io/zh_CN/latest/application/transfer_learning.html
2. PSS-DET 實用目標檢測算法
近年來,學術界和工業界普遍關注圖像中目標檢測任務,而圖像分類的網絡結構以及預訓練模型效果直接影響目標檢測的效果。PaddleDetection 使用 PaddleClas 的 ResNet50_vd_ssld 預訓練模型做爲骨幹網,結合豐富的檢測算子,提供了一種面向服務器端應用的目標檢測方案,PSS-DET (Practical Server Side Detection)。
該方案融合了多種不增長計算量,能夠有效提高兩階段 Faster RCNN 目標檢測效果的策略,包括檢測模型剪裁、使用分類效果更優的預訓練模型、DCNv二、Cascade RCNN、auto augment、libra sampling 以及多尺度訓練。其中基於 82.39% 的 ResNet50_vd_ssld 預訓練模型,與 79.12% 的 R50_vd 的預訓練模型相比,檢測效果能夠提高 1.5%。在 COCO 目標檢測數據集上測試 PSS-DET,當 V100 單卡預測速度爲 61FPS 時,mAP 是 41.6%,預測速度爲 20FPS 時,mAP 是 47.8%。相同的預測速度下,檢測效果優於最近業內較爲火熱的 EfficientDet 模型。
上述檢測方案的詳細介紹和使用請參考文檔教程中應用拓展的通用目標檢測章節:
https://paddleclas.readthedocs.io/zh_CN/latest/application/object_detection.html
若是您加入官方 QQ 羣,您將趕上大批志同道合的深度學習同窗。官方 QQ 羣:703252161。
若是您想詳細瞭解更多飛槳的相關內容,請參閱如下文檔。
下載安裝命令
## CPU版本安裝命令
pip install -f https://paddlepaddle.org.cn/pip/oschina/cpu paddlepaddle
## GPU版本安裝命令
pip install -f https://paddlepaddle.org.cn/pip/oschina/gpu paddlepaddle-gpu
官網地址:https://www.paddlepaddle.org.cn
GitHub: https://github.com/PaddlePaddle/PaddleClas
Gitee: https://gitee.com/paddlepaddle/PaddleClas
https://paddleclas.readthedocs.io/zh_CN/latest/
飛槳開源框架項目地址:
GitHub: https://github.com/PaddlePaddle/Paddle
Gitee: https://gitee.com/paddlepaddle/Paddle
>> 訪問 PaddlePaddle 官網,瞭解更多相關內容。