AI大有可為:NAIE平台助力垃圾分類

摘要:生活垃圾的分類和處理是目前整個社會都在關注的熱點,如何對生活垃圾進行簡潔高效的分類與檢測對垃圾的運輸處理至關重要。AI技術在垃圾分類中的應用成為了關注焦點。

如今AI已經是這個時代智能的代名詞了,任何領域都有AI的身影,垃圾分類及監管等場景自然也少不了「AI+」的賦能。

不過,垃圾往往屬於商品的極端變形體,情況比較特殊。目前的技術在視覺可見的基礎上,是可以做到垃圾分類報警提醒的,比如判斷垃圾是否是經過分類整理的。至於是否能夠直接進行視覺檢測並分類,且達到某種效果,需要更多的數據和實驗支撐才能判斷這件事情的可行性。針對這些問題,我們或許可以從海華垃圾分類挑戰賽中去聽聽參賽者都是如何用技術來改變世界的。

海華垃圾分類挑戰賽數據包括單類垃圾數據集以及多類垃圾數據集。單類垃圾數據集包含80,000張單類生活垃圾圖片,每張單類垃圾圖片中僅有一個垃圾實例。多類垃圾數據集包括4998張圖像,其中2,998張多類垃圾圖片作為訓練集數據,A榜和B榜各包含1000張測試圖像,每張多類垃圾圖片中包含至多20類垃圾實例。我們將對兩種數據集分別進行介紹。

一、多類別垃圾

圖1 多類垃圾數據類別分佈

如圖1所示,多類別垃圾涵蓋了204類垃圾,但這204類的數據非常不均衡,有一些類別數目非常少甚至沒有出現。

圖2 多類垃圾數據可視化

圖2中兩張圖是訓練集中的兩張圖像,垃圾目標主要集中在圖像的中心區域重疊度較高,此外可以看到很一些目標往往會以不同的角度姿態在另一張圖像中出現。

從圖1與圖2的觀察與統計我們可以得出幾個結論:

(1)由於一個物體經常在多張圖像中出現,因此過擬合這些目標非常有效,這也是為什麼這個比賽AP能訓到90以上的原因。因此可以考慮參數量更大的backbone,比如ResNext101 X64+DCN。

(2)圖像是俯視拍攝的,水平和垂直翻轉都很有效。

(3)雖然類別非常不均衡,但是由於目標的重複出現,經常幾個目標的訓練,再見到同一個目標就能100%的檢測到。類別不均衡主要對數據極少的物體有影響,因此只需要對這些目標進行擴充,主要包括墨盒、螺螄、話梅核、貝類等。

(4)重疊度較高可以使用mixup等方法,人為地製造一些重疊度高的目標進行訓練。

表1 數據統計

除了圖像級別的宏觀統計,我們對數據集中的目標也做了詳細分析。表1為目標大小、以及長寬比層面的統計。首先物體長度按照coco的劃分,大於96的屬於大物體,75%的目標都是大物體,這意味着針對小物體的提升方法是基本無效的。其次長寬比很少有大比例物體的出現,這些給予我們anchor方面的參數調整很多啟發。

二、單類別垃圾

單類別垃圾主要包含80000張圖像,每張1個目標,如左邊兩張圖所示單類別垃圾的目標都較大。單類的使用主要有兩種思路,一種是對類別少的數據擴充,另一種是使用單類數據集訓練得到一個較好的預訓練模型。

圖3數據對比

數據擴充時我們發現,和多類別垃圾相比,同一類的目標並不是完全一致的,單類的小龍蝦是小龍蝦,多類的小龍蝦實際標的是牛奶盒,二極管標的是塑料管。這一點說明想用單類做數據擴充是行不通的,因為數據不是同源的。我們嘗試了這種方案,但是精度保持不變。

針對預訓練模型,由於目標較大,我們將圖像按照4*4進行拼接,減少了數據量,提升了單張圖像的目標數,也能取得一定的效果。但是當與其他增強方法結合時基本沒有效果,因此我們也放棄了這種方案。

三、模型方案:

1.Baseline

圖4 baseline方案

我們baseline選用的是mmdetection所實現的Cascade RCNN,backbone選用的是ResNeXt101 X64+DCN。因為此次比賽採用的是coco的評測指標AP50:95,因此Cascade RCNN通過設置不同的閾值進行回歸可以取得非常好的效果。此外較大的backbone在這個數據集上往往能取得更好的效果。

2. 參數調整

在比賽的初期,我們將訓練集的數據選取2500張訓練,498張本地驗證,在此基礎上進行調參。由於目標重疊度較高,在使用softnms閾值為0.001、max_per_img =300、翻轉測試時效果較好,相比不使用這些參數大約能提升0.02左右。受到顯存的限制從圖像中隨機裁剪(0.8w,0.8h)的圖像區域,然後將短邊隨機限制在[640,960]之間,長邊限制到1800進行多尺度訓練,測試時圖像適度放大短邊設置為1200,精度可以訓練到88.3%, 結合OHEM精度訓練到88.6%左右,將本地驗證的498張圖像也輸入進去訓練能提升0.5%到89.2%左右。

針對數量較少的類別,我們在多類訓練集中對貝類去硬殼、螺螄、二極管、話梅核這幾個類別進行補充標註,把一些模稜兩可的目標都進行標註提高召回率,大約標記了100多個目標,在A榜能提升到90%左右。

如圖5所示,針對anchor的調整,我們調整anchor 的比例從【0.5,1.0,2.0】改為【2.0/3.0,1.0,1.5】。此外為了提升大物體的檢測能力,我們調整FPN的層次劃分從56改為了70,相當於將FPN各層所分配的目標都調大,然後我們將anchor的尺度由8改為12對這些大物體進行檢測。

圖5 anchor 修改

如圖6所示參數調整後可以發現FPN中目標數量的分佈更加接近正態分佈,我們認為這樣的一種分佈對檢測會有所幫助。從ResNet的幾個stage的卷積數量我們可以看到,FPN中間層所對應的ResNet的stage參數較多應檢測較多目標,FPN兩側對應到backbone的參數較少檢測目標數不宜過多。

圖6 目標在FPN上的數量分佈變化

在圖像增強時,我們加入在線的mixup進行24個epoch的訓練可以提升到91.2%~91.3%,不過只有12個epoch的時候沒有提升。Mixup我們設置的比較簡單,兩張圖像分別以0.5的比例進行融合,因此沒必要對loss進行加權。

圖7 mixup 效果圖

3.模型融合

之前的測試過程中,我們認為1080Ti與2080速度應該相差不大,每次1080Ti上測試大約需要40分鐘,因此我們只選用3個模型左右,這一點是比較吃虧的,在B榜的測試時我們發現2080居然比1080Ti快很多,我們單個模型加翻轉測試只使用了25分鐘,如果用更多模型可能會進一步提高分數。我們使用基於ResNext101 x32+gcb+DCN的Cascade RCNN,基於ResNext101 x64 +DCN的Cascade RCNN,基於ResNext101 x64 +DCN的Guided anchor Cascade RCNN。對於融合所使用的方法,不同的方法所能取得的效果都相差不大,我們採用的方法是論文《Weighted Boxes Fusion: ensembling boxes for object detection models》所提供的方法,融合閾值設置為0.8.

圖8 wbf效果圖

4.參數效果

表2 參數設置

圖9 A榜精度變化

四、NAIE平台部署使用

1.平台理解

個人理解NAIE平台主要由三部分組成,本地調試區、雲端存儲區、雲端訓練區域,對這三部分各自地功能有所了解便可以很快上手。

本地調試區域基於vscode,關聯到一台無GPU的服務器,可以在命令行像正常linux服務器一樣操作進行環境的初步部署調試。

雲端存儲區域主要保存大的數據以及預訓練模型,像預訓練模型這些大文件是無法直接從本地調試區傳送到模型訓練區域的。

模型訓練區域調用GPU完成模型的訓練,並將訓好的參數模型copy到雲端進行存儲,只有存至雲端的模型才可下載。
2. 模型部署

這裡以mmdetection的部署為例進行介紹。

  • 1)代碼上傳

代碼上傳通過右鍵選取NAIE upload,代碼上傳時有大小限制,大約不能超過100M,因此建議將預訓練模型以及一些無關的文件刪除只保留核心代碼。

  • 2)環境部署

環境部署需要在本地代碼區寫一個requirements.txt的文件,上面寫明所需要的python庫和版本號。

  • 3)模型運行

平台不支持sh文件的運行,因此需要寫一個py比如叫model.py ,裏面使用os.system()仿照命令行進行執行。

此外在model.py中還要調用moxing 包,將訓好的模型存至雲端。

在模型訓練區域,選中model.py 以及所需的GPU規格進行訓練。

  • 4)額外補充

直接通過NAIE upload是無法完成大文件上傳的,因此可以在本地調試區域寫一個程序比如叫debug.py, 在程序中調用wget下載文件,並通過moxing包傳至雲端,訓練過程中可以在model.py中利用moxing包再將其傳輸到服務器中。

幾位參賽者最終完成比賽並獲得獎勵,雖然名次不是特別好,但還是通過比賽積累了很多經驗。他們表示,取得的成績離不開華為NAIE訓練平台的算力支持,華為NAIE訓練平台免費提供了V100和P100顯卡進行訓練,為我們科研以及參加比賽提供了很大的幫助,修改代碼和訓練都非常方便,前期熟悉平台遇到的問題都能及時解答或者協助解決。希望通過這次分享能給大家提供一定借鑒和避坑的經驗。

參考文獻

[1]. Cai Z , Vasconcelos N . Cascade R-CNN: Delving into High Quality Object Detection[J]. 2017.

[2]. Zhang H , Cisse M , Dauphin Y N , et al. mixup: Beyond Empirical Risk Minimization[J]. 2017.

[3]. Solovyev R , Wang W . Weighted Boxes Fusion: ensembling boxes for object detection models[J]. arXiv, 2019.

[4]. P. Wang, X. Sun, W. Diao, and K. Fu, 「Fmssd: Feature-merged single-shot detection for multiscale objects in large-scale remote sensing imagery,」 IEEE Transactions on Geoscience and Remote Sensing, 2019.

[5]. Zhang S , Chi C , Yao Y , et al. Bridging the Gap Between Anchor-based and Anchor-free Detection via Adaptive Training Sample Selection[J]. 2019.

[6]. Pang J , Chen K , Shi J , et al. Libra R-CNN: Towards Balanced Learning for Object Detection[J]. 2019.

[7]. Deng L , Yang M , Li T , et al. RFBNet: Deep Multimodal Networks with Residual Fusion Blocks for RGB-D Semantic Segmentation[J]. 2019.

[8]. Ren S , He K , Girshick R , et al. Faster R-CNN: Towards Real-Time Object Detection with Region Proposal Networks[J]. IEEE Transactions on Pattern Analysis and Machine Intelligence, 2015, 39(6).

[9]. Lin T Y , Dollár, Piotr, Girshick R , et al. Feature Pyramid Networks for Object Detection[J]. 2016.

[10]. J. Dai, H. Qi, Y. Xiong, Y. Li, G. Zhang, H. Hu, and Y.Wei, 「Deformable convolutional networks,」 in Proceedings of the IEEE international conference on computer vision, 2017, pp. 764–773.

[11]. X. Zhu, H. Hu, S. Lin, and J. Dai, 「Deformable convnets v2: More deformable, better results,」 in Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition, 2019, pp. 9308–9316.

[12]. Z. Huang, X. Wang, L. Huang, C. Huang, Y. Wei, and W. Liu, 「Ccnet: Criss-cross attention for semantic segmentation,」 in Proceedings of the IEEE International Conference on Computer Vision, 2019, pp. 603–612.

[13]. Wang J , Chen K , Yang S , et al. Region Proposal by Guided Anchoring[J]. 2019.

 

點擊關注,第一時間了解華為雲新鮮技術~