ACCV2020国际细粒度网络图像识别冠军方案解读、经验总结
0. 團隊介紹
團隊來自NetEase Games AI Lab,成員分別為韋嘉,習思,徐文元,張偉東,排名不分先后。
| NetEase Games AI Lab研究員 | NetEase Games AI Lab研究員 |
2. 數據集的挑戰
1.1. 數據集概要
數據集是從網絡上收集的圖片數據,jpg格式。
訓練數據集:5000類共557169張圖片,含標注信息(內含標簽噪聲)。數據集中包含的類別包括動物和植物。
測試數據集:5000類共100000張圖片,不含標注信息。
1.2. 數據噪聲
- 臟數據
我們發現有很多臟樣本是無法學習的,并且有些類別并不屬于動植物。
- 二義性圖片
我們注意到在同一張圖片上有不同的標簽,例如,這兩張圖片在標簽不同的情況下是完全相同的圖片。
- 長尾分布
- 混亂類別
發現訓練集中約5%的類別樣本過于混亂,似乎是其他類別樣本的混合
2. 解決方案
2.1 數據清洗
最先做的事情是清洗數據集。為了分析數據集,我們首先將訓練數據集劃分為訓練集和驗證集,使用訓練集訓練模型并統計驗證集badcase分布,具體分布如下圖。可以看出,在所有badcase中,噪聲圖片和錯誤標簽占比最多分別是24%和13%。噪聲至少占了badcase的37%左右,給訓練增加了一定的難度,模型很大概率被不準確的標簽誤導,因此該比賽清洗數據能提升較大的精度。
為了應對這種情況,我們針對噪聲圖片和標簽錯誤嘗試了不同方法來清洗數據集。
首先為了清洗部分明顯的臟樣本,使用模型聚類來聚類并刪除共性大的臟樣本,例如地圖圖片,文章圖片,圖表等。
其次,我們使用自蒸餾的方法處理噪聲數據。根據分析發現數據集中存在大量的錯誤標簽和二義性樣本,為了降低模型的訓練難度,我們將所有訓練集圖片均分為五份,使用4份作為訓練集并預測剩下數據,完成五折模型訓練,之后預測的每一折驗證集組成所有數據集的out-of-fold結果文件,之后將out-of-fold結果與數據集的ground truth label按一定比例混合,組成了新的訓練集標簽,換句話說,我們給每一個大概率是噪聲樣本的圖片賦予了軟化后的標簽,從而降低了模型訓練難度。
最后,我們再根據新的訓練集標簽,進一步清洗置信度過低的樣本,與此同時,我們兼顧了類別平衡,降低少樣本類別被誤清除的概率,不至于部分類別圖片過少,加劇長尾分布程度,增加模型訓練難度。
我們也嘗試了其他的去噪方式,比如AUM Ranking等,通過訓練模型給每一個樣本根據AUM指標進行排序。我們根據AUM刪除了部分圖片訓練模型,從而導致精度明顯下降。AUM Ranking還是存在一些坑,我們最后放棄了該方法。
2.2 backbones
Backbones對模型的表現至關重要。我們使用efficientnet, resnet-based的模型和bbn作為backbones。我們可以看到下圖中這兩種類別之間的唯一區別是頭部紋理,帶注意力機制的backbones能夠聚焦于關鍵細節,帶來更好的表現。
2.3 BBN
在數據分析中發現本次比賽中訓練集是典型的長尾分布。長尾分布屬于極端的類別不平衡現象,這一現象會削弱一般分類的模型的分類能力。通常來說為了解決這一問題會使用類別再平衡方法,如從數據層面進行再采樣,或者從損失函數角度進行加權。
首先被嘗試的是在數據層面進行樣本強制重采樣,在某些類別中少量的樣本被不斷重復,但并沒有對訓練起到太多積極作用。其次是使用focal loss和class balance loss這類加權損失函數,但模型精度仍有0.2%~0.3%的下降。
通過調研我們選擇了BBN結構,我們最好的單個模型也是由BBN訓練的。 BBN 模型由兩個分支構成,即常規學習分支(Conventional Learning Branch)和再平衡分支(Re-Balancing Branch)。總體而言,BBN 的每個分支各自執行其表征學習和分類器學習任務。顧名思義,常規學習分支為原始數據分布配備了典型的均勻采樣器(Uniform Sampler),可用于為識別任務學習通用的表征;再平衡分支則耦合了一個逆向的采樣器(Reversed Sampler),其目標是建模尾部數據。接著,再通過累積學習(Cumulative Learning)將這些雙邊分支的預測輸出聚合起來。通過使用bbn訓練resnet50,可以將Top 1準確性提高10%以上。此外我們還使用bbn訓練了其他的backbones,如resenxt,se-resnext,efficientnet等。
2.5 混合精度訓練
上一小節中提到BBN能夠極大的提高模型精度,但事實上該模型的訓練時間較長,gpu資源占用也比較多。以se-resnext50位主干的BBN在8張V100上不能以256的batchsize運行。而batchsize的大小又直接影響了訓練效果與耗時。
為了解決這一問題我們使用了pytorch的拓展插件apex,它能夠在只添加少量代碼的情況下使用自動混合精度的技術來提高模型的資源占用和訓練速度,提高生產力。在實際訓練中我們使用的是O1模式,gpu資源占用能夠減少一半以上。為我們訓練高分辨率的深層模型提供了可能。
2.4 Bag-of-Tricks
在模型訓練的過程中也使用了很多tricks,并配置了大量算力資源。對于少樣本類別做了數據增廣和重采樣,并嘗試使用focal loss但表現不佳。同時在預測過程中使用ten-crop、multiscale及flip等TTA策略,模型精度有一定提高。與此同時增強模型泛化能力的Mixup和labelsmoothing也能提高模型性能。
以bbn-resnet50為例,baseline準確度為55.7%。清理數據集后,精度可以提高2.6%,Mixup和label smoothing后,精度可以提高1.5%,使用三次KD后,精度可以提高1.1%。我們還使用許多其他技巧。這里不再贅述。
2.5 模型融合
在比賽中已經訓練了超過40個模型,不同的backbones,不同的分辨率,不同的訓練策略。
最終最好的單一模型準確性為68.9%。但是即使如此,融合三個精度較低(60%左右)但相關性低的模型(分辨率、loss、backbones等)仍改善性能。最后我們調整了模型權重,以增強更強大的模型,準確率可以提高0.2%左右。
表中列出了我們5個模型的所有結果。最終,我們在排行榜B中獲得71.4%的準確度。
3 總結
3.1 我們做了什么
1) ACCV_WebFG5000數據集:5K類,具有大量噪聲的550K訓練圖像;
2) 最終模型在B榜準確性為71.4%,在挑戰賽中排名第一。
3.2 我們從競賽中學到了什么
1) 適用于小型數據集的技巧可能不適用于大型數據集,需要不斷快速試錯。
2) 數據集中具有多種類型的噪聲,在使用常規去噪方法的同時,創新性的引入了類別均衡的去噪方法,提升模型去噪能力。
3) 在模型融合過程中相關度低的模型往往能夠取得更好的效果,高相關度模型融合可能會起到反向效果。
4)在計算資源有限的情況下,比起使用小模型,大模型的半精度訓練不失為一個更好的選擇。
3.3 我們沒做什么
1)Backbone,在公開數據集上resnest精度高于resnext和efficientnet,但時間關系沒有進行嘗試。
2)Ensemble,在模型融合階段目前采用的是voting,stacking等基于學習的方式由于步驟繁瑣,沒有進行嘗試。
3)Unsupervised learning,使用moco或mocov2等無監督方法獲得更為強大的特征提取能力。
參考文獻
【1】 Zhou, Boyan, et al. “BBN: Bilateral-Branch Network with Cumulative Learning for Long-Tailed Visual Recognition.” Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition. 2020.
【2】 Pleiss, Geoff, et al. “Identifying Mislabeled Data using the Area Under the Margin Ranking.” arXiv preprint arXiv:2001.10528
【3】 He, Kaiming, et al. “Deep residual learning for image recognition.” Proceedings of the IEEE conference on computer vision and pattern recognition. 2016.
【4】 Lin, Tsung-Yi, et al. “Focal loss for dense object detection.” Proceedings of the IEEE international conference on computer vision. 2017.
【5】 Tan, Mingxing, and Quoc V. Le. “Efficientnet: Rethinking model scaling for convolutional neural networks.” arXiv preprint arXiv:1905.11946 (2019).
【6】 He, Kaiming, et al. “Deep residual learning for image recognition.” Proceedings of the IEEE conference on computer vision and pattern recognition. 2016.
【7】 Xie, Saining, et al. “Aggregated residual transformations for deep neural networks.” Proceedings of the IEEE conference on computer vision and pattern recognition. 2017.
【8】 Hu, Jie, Li Shen, and Gang Sun. “Squeeze-and-excitation networks.” Proceedings of the IEEE conference on computer vision and pattern recognition. 2018.
【9】 Zhang, Hongyi, et al. “mixup: Beyond empirical risk minimization.” arXiv preprint arXiv:1710.09412 (2017).
【10】 Yun, Sangdoo, et al. “Cutmix: Regularization strategy to train strong classifiers with localizable features.” Proceedings of the IEEE International Conference on Computer Vision. 2019.
【11】 He, Kaiming, et al. “Momentum contrast for unsupervised visual representation learning.” Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition. 2020.
【12】 Chen, Xinlei, et al. “Improved baselines with momentum contrastive learning.” arXiv preprint arXiv:2003.04297 (2020).
總結
以上是生活随笔為你收集整理的ACCV2020国际细粒度网络图像识别冠军方案解读、经验总结的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 首次摆脱对梯度的依赖,CMU等开源Sco
- 下一篇: AdvFlow:一种基于标准化流的黑盒攻