23個系列分類網絡,10萬分類預訓練模型,這是飛槳PaddleClas百寶箱

 2020-04-27 06:00:25.0

如何訓練出優秀的圖像分類模型?飛槳圖像分類套件 PaddleClas 來助力。
今天咱們來聊聊計算機視覺領域最核心的技術之一——圖像分類。顧名思義圖像分類是指根據圖像信息把不同類別的圖像自動區分開來,並能指出圖像類別信息。如圖 1 所示,當前圖像分類技術有着非常廣泛的應用場景。

圖 1 圖像分類技術應用


此外圖像分類技術在計算機視覺各類任務中堪稱「基石」,這和人類的視覺方面的技能樹點亮順序很像。嬰兒在能看清周圍事物後,父母除了教他認識爸爸媽媽之外,還會通過畫本告訴他,這是花,這是草,這是車,這是飛機等等,這其實就是訓練圖像分類的過程。可以說圖像分類是人類最先學到的一門本領。而在此基礎之上,纔會繼續學會指出什麼物體在什麼位置(目標檢測),以及如何去接觸物體(圖像分割)等等。如果您仔細分析下計算機視覺的其它技術,您會發現,也確實是如此。

對於其它視覺任務,像圖像目標檢測、圖像分割、圖像檢索、自然場景文字檢測和識別、人臉檢測和識別等等,常常將圖像分類的網絡結構作爲骨幹網絡。例如使用基於 ImageNet1K 分類數據集訓練的模型作爲特徵提取器,來提升目標任務的組網效率和效果。如果把某個視覺任務看成是建造一棟大樓,圖像分類的網絡結構和預訓練模型則可以看成是這棟大樓牢固的地基和穩定的骨架。

圖像分類如此重要,可想而知訓練出優秀的圖像分類模型也是一個很有挑戰的任務,其最大的困難點就在於訓練圖像的複雜性!什麼?想知道有多複雜?那咱們拿狗狗舉例子吧,有人會說:狗狗嘛,很好分辨啊!你以爲你的模型只會用於推理這種一寸免冠照片式的圖像嗎?

錯!你的模型可能面臨的是這樣的、這樣的和這樣的!

怎麼樣?有什麼想說的嗎?

解決問題的第一步就要認識問題,因此經過科研人員的研究,如圖 2 所示,圖像的辨識困難點主要有以下幾點:
  • 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 蒸餾模型提升效果圖


高階優化支持之 8 種數據增廣方法

在圖像分類任務中,圖像數據的增廣是一種常用的正則化方法,可以有效提升圖像分類的效果,尤其對於數據量不足或者模型網絡較大的場景。常用的數據增廣可以分爲 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

實際應用案例

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

PSS-DET 實用目標檢測算法

近年來,學術界和工業界廣泛關注圖像中目標檢測任務,而圖像分類的網絡結構以及預訓練模型效果直接影響目標檢測的效果。PaddleDetection 使用 PaddleClas 的 ResNet50_vd_ssld 預訓練模型作爲骨幹網,結合豐富的檢測算子,提供了一種面向服務器端應用的目標檢測方案,PSS-DET (Practical Server Side Detection)。

該方案融合了多種不增加計算量,可以有效提升兩階段 Faster RCNN 目標檢測效果的策略,包括檢測模型剪裁、使用分類效果更優的預訓練模型、DCNv2、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。

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

官網地址: https://www.paddlepaddle.org.cn

飛槳 PaddleClas 項目地址:

飛槳 PaddleClas 文檔教程地址: https://paddleclas.readthedocs.io/zh_CN/latest/

飛槳開源框架項目地址:

文章來源:機器之心