摘要:爲了探究垃圾的智能分類等問題,由中關村海華信息研究院、清華大學交叉信息研究院以及Biendata舉辦的2020海華AI垃圾分類大賽吸引了大量工程師以及高校學生的參與
隨着我國經濟的發展,城市化進程不斷加速,生活垃圾對城市環境的威脅日益增長。如何高效、環保地解決處理生活垃圾迫在眉睫。所以垃圾的智能分類對於智能化分揀垃圾、提升垃圾分揀效率就顯得十分重要。爲了探究這一問題,由中關村海華信息研究院、清華大學交叉信息研究院以及Biendata舉辦的2020海華AI垃圾分類大賽吸引了大量工程師以及高校學生的參與。由華爲NAIE平臺提供的算力支持,也爲比賽的順利開展奠基了基礎。該比賽旨在激發更普遍的科研探索熱情,挖掘更有價值的算法優化和創新。算法
咱們參與的是該比賽的專業賽道,所以有兩種數據集可使用。一種爲單類數據集,共80,000張垃圾圖像,每張圖像中只有一個類別。此外,還提供了圖中惟一對象的邊框的信息。多類別數據集包含訓練集中的2998張垃圾圖像,驗證集中的1000張垃圾圖像,測試集中的1000張垃圾圖像,每幅圖像最多包含20個類別。segmentfault
不一樣於VOC、COCO、OID等常見的目標數據集,這些數據集具備不一樣的特色:dom
1. 對於205個類別,單類垃圾數據集的大小就足夠了。然而,這個數據集中的垃圾圖像與多類數據集中的垃圾圖像有很大的不一樣,即便是同一類別的垃圾。直接使用該數據集來訓練模型可能會致使特徵不匹配和性能降低(圖1)。ide
圖1:左圖爲多類數據集中的鏡子,右圖爲單類數據集中的鏡子性能
2. 多類數據集在訓練集中只包含2998張垃圾圖像。而在125個類別的狀況下,該數據量是比較小的,且類別存在不平衡的現象。所以大規模數據集的遷移學習和減小過擬合的技術是很是須要的。學習
3. 在大多數多類圖像中,垃圾密集地堆積在圖像的中心,而且形狀大小不一。它會致使垃圾相互遮擋,使檢測任務更加困難。而且每張圖像的背景都比較乾淨(圖2)。測試
圖2:多類數據集圖像示例優化
4. 數據集中存在許多混淆類別的垃圾,致使類別標籤的不一致性。人工檢查和更正標籤可能有幫助,但也可能存在致使數據不匹配的風險(圖3)。spa
圖3:左右圖爲同一類物體,但在多類數據集中3d
左圖被標定爲食品塑料盒,而右圖被標定爲食品外包裝盒
爲了完成該比賽的任務,咱們借鑑了其餘大型的目標檢測競賽中的解決方案,如COCO、Objects365和OID。在這些解決方案中,咱們借鑑了百度在OID 2019中的解決方案。Baseline模型選用的是基於Class-aware的Cascade R-CNN,且同時使用ResNet200-Vd做爲模型的backbone而且加入了FPN、Dcnv2和Non-local方法來提升模型的總體效果。訓練使用多尺度訓練(480:1440:32)和常見的數據加強方法如水平翻轉。
遷移學習能夠在小數據集上得到良好的性能,所以在該比賽中使用該方法理論上應當能夠取得較好的效果。所以,咱們選擇了COCO、Objects365和OID混合的預訓練模型。具體效果如表1所示。
表1:使用不一樣預訓練參數的Baseline的AP
訓練方面,因爲龐大的模型以及多尺度訓練方法,因此在Tesla V100 上batch size只能設置爲1,這裏感謝華爲NAIE提供的算力支持。使用引用動量的SGD做爲訓練的優化器。基礎學習率設置爲0.001,權重衰減速率爲0.0001。使用了Cosine annealing with warmup的學習率調度策略,從0.0001的學習率開始,1000次迭代後到達基礎學習率。咱們訓練Baseline進行了120K次迭代,訓練時間大約40個小時。
爲了減小在如此小的數據集上的過擬合,就須要大量的數據擴充。咱們嘗試了許多數據加強方案,最終發現RandomVerticalFlip、AutoAugment和GridMask能有效提升模型性能。
不一樣於天然圖像,對於垃圾圖像,水平翻轉和垂直翻轉的效果是等同的,所以咱們使用了RandomVerticalFlip而並不是RandomHorizontalFlip。
而且咱們將普遍使用於圖像分類中的AutoAugment方法遷移到了目標檢測中。實驗證實,該方法對各類目標檢測數據集都是有效的。而且咱們在baseline中嘗試了三種不一樣的自動加強策略(表2),發現AutoAugment v0的效果是最好的,最終咱們也使用了它。
表2:不一樣AutoAugment策略下模型的AP
再者咱們使用了GridMask的數據加強方法,該方法包括random erasing、hide-and-seek、Dropout以及DropBlock。實驗代表,GridMask能夠有效減小目標檢測的過擬合。而且使用GridMask長時間訓練模型能夠顯著提升模型性能。在本實驗中,咱們嘗試了不一樣機率和訓練時間下的GridMask。如表3所示,使用GridMask的訓練模型須要比baseline更長的訓練時間。使用0.3的機率足以減小過擬合,且訓練時間越長越好。機率爲0.5和0.7甚至會導欠擬合的現象。因此若是以較高的GridMask機率訓練超過300K次迭代理論上來講能夠進一步提升結果。
表3:不一樣GridMask機率與迭代次數下模型的AP
在最終提交階段,咱們只能在RTX 2080上測試兩個小時,可是模型大小不受限制。因此考慮到這些約束條件,咱們訓練了僅隨機種子不一樣的6個相同的模型來進行模型融合,且使用了前面提到的全部有效技巧。同時使用了Top-k voting nms對6個模型的檢測結果進行合併,設置top-k voting的nms的IoU閾值爲0.7,該閾值與Cascade R-CNN第三階段的IoU閾值一致。
最終咱們在測試集上以0.910的成績取得了第一名,咱們認爲咱們可以取勝的緣由主要有如下幾點:
(1)參考了大型目標檢測比賽前幾名的方案
(2)使用了COCO,Object365以及OIDV5的混合預訓練模型
(3)使用了多種數據加強方法
(4)在模型融合中使用了top-k voting nms
最後感謝華爲提供的NAIE平臺,爲比賽訓練提供了巨大的幫助,平臺功能也十分強大。在咱們使用平臺遇到問題時,官方都及時地進行了解答和協助,十分的給力。咱們也很是榮幸能有此次機會和你們分享此次比賽的歷程,謝謝!