博客專欄

        EEPW首頁 > 博客 > 卷積神經網絡長尾數據集識別的技巧包

        卷積神經網絡長尾數據集識別的技巧包

        發布人:計算機視覺工坊 時間:2022-12-22 來源:工程師 發布文章
        作者丨ronghuaiyang

        來源丨AI公園

        Bag of Tricks for Long-Tailed Visual Recognition with Deep Convolutional Neural Networks

        圖片

        摘要:目前,在長尾分布的數據集上,在數據極端不均衡的情況下,使用復雜的模式(元學習)的方法取得了很大的進展。除了這些復雜的方法,在訓練時的簡單的調整也有一些貢獻。這些調整,也就是tricks,很小但是很有效,比如調整數據分布或者損失函數。但是,tricks之間也會有沖突。如果使用的不恰當,會適得其反。然而,如何使用這些tricks并沒有給出科學的引導。本文中,我們首先收集了這些已有的tricks,并做了很多的實驗,給出了很細節的實驗指導,并得到了這些tricks的組合效果。我們還基于類別激活圖提出了一種新的數據增強方法,可以很友好的和重采樣方法組合使用,并取得了很好的效果。通過將這些tricks科學的組合在一起,我們的效果超過了當前的SOTA。

        代碼:https://github.com/zhangyongshun/BagofTricks-LT

        1. 介紹

        最近,長尾識別持續引起關注,產生了很多不同的方法,這些方法屬于不同的范式,度量學習,元學習和知識遷移。盡管這些方法在長尾數據集上取得了穩定的精度的提升,但是要么對于超參數非常的敏感,要么訓練過程非常的復雜,而且,在現實場景中很難用起來。除去這些方法,長尾數據集的識別中還有一些tricks,這些tricks非常簡單,只是對原始的方法做很小的修改,比如修改一下損失函數,修改一些采樣策略,但是會對結果產生很大的影響。但是,這些tricks在使用的時候容易相互影響。比如說,重采樣和重加權是兩個常用的tricks,重采樣的目的是生成均衡的數據集,重加權的目的是針對類別的概率對類別進行反向的加權。但是兩者一起使用的時候,可能會反而效果變得更差。

        因此,在使用這些tricks的時候,我們需要知道,哪些是可以組合在一起使用的,哪些可能會相互影響。本文中,我們關注哪些常用的,容易部署的,超參數不敏感的tricks。這些tricks分為4大類,重加權,重采樣,mixup訓練,2階段訓練。特別是我們將mixup訓練加到了長尾識別的tricks中,因為我們發現mixup訓練和重采樣組合起來可以得到更好的效果。在每種tricks大類中,我們都介紹一些tricks,并在長尾數據集中進行了結果的對比。更進一步,為了克服已有的重采樣方法的缺乏可區分信息的缺點,我們基于類激活圖(CAM)提出了一種新的數據增強方法,這是一種兩階段的訓練方法,通過變換前景但是保持背景不變來生成具有可區分特征的圖像。這個方法可以很方便的和已有的重采樣方法組合,并取得非常好的效果,我們稱之為“CAM-based sampling”。我們還探索了不同的大類的tricks之間的的沖突,并找到了tricks的最佳組合。在這三個數據集上的最優結果見表1。

        圖片

        我們這個工作的主要貢獻如下:

        • 我們綜合探索了已有的簡單的,參數不敏感的,長尾相關的tricks,并為以后的研究提供了一個實用的指南。
        • 我們提出了一個新的CAM-based采樣方法,為2階段訓練方法定制,很簡單但是很有效。
        • 我們進行了很豐富的實驗,找到了最佳的tricks的組合。我們的方法在4個長尾數據集上都取得了SOTA的效果。
        2. 數據集和基礎設置

        數據集

        長尾 CIFAR 這是長尾分布版本的CIFAR-10和CIFAR-100。和原始的CIFAR數據集具有相同的類別,但是,每個類別的訓練樣本的數量是指數遞減的, ,其中t是類別的索引,是訓練圖像的原始數量,。測試集保持不變。長尾CIFAR數據集的不均衡因子定義為最多樣本數量類別的樣本數除以最小樣本數量類別的樣本數。在文章中,常用的不均衡因子為50和100,圖像總數為12000張左右。

        iNaturalist 2018 這個數據集是一個大規模的真實世界的數據集,類別極度不均衡,包含437513張圖像,8142個類別,除了不均衡的問題,還有細粒度的問題。

        長尾ImageNet 這個數據集是由原始的ImageNet2012經過采樣得到的,最多的類別1280張圖,最少的5張圖。

        基線設置

        主干 我們使用了殘差網絡作為主干。具體來說,我們在長尾CIFAR和iNaturalist上分別使用了ResNet-32和ResNet-50,在ImageNet-LT上使用了ResNet-10。

        數據增強 對于CIFAR數據集,訓練時,每張圖每邊填充4個像素,然后隨機裁剪出一個32x32的區域。裁剪出的區域用0.5的概率水平翻轉,然后進行圖像的歸一化。驗證時,每張圖保持長寬比將短邊縮放到36像素。然后,從中心裁剪出32x32的區域做歸一化后進行訓練。

        對于iNaturalist和ImageNet-LT,在訓練時我們使用縮放和長寬比的數據擴充,然后得到一個224x224的隨機裁剪的區域,并隨機水平翻轉。驗證的時候,我們將保持比例將短邊縮放為256,然后裁剪224x224的中心區域。

        訓練細節 所有的主干都是從頭進行訓練。對于CIFAR數據集,我們使用sgd,動量0.9,權值衰減,訓練輪數200輪,batch size為128。初始學習率為0.1,在160輪和180輪除以100。前5輪使用warmup。

        對于iNaturalist和ImageNet-LT,我們的batch size為512,訓練輪數為90,初始學習率為0.2,分別在30輪,60輪,80輪除以10,不使用warmup,使用sgd優化器,動量0.9,權值衰減為

        基線的訓練結果見表2,

        圖片

        3. Trick總結

        我們將所有的tricks分為4大類:重加權,重采樣,mixup訓練和兩階段訓練。我們認為mixup訓練是一種長尾分布相關的trick,因為我們發現mixup訓練在長尾識別上能得到很好的效果,特別是和重采樣組合起來的的時候。對于每個大類的trick,我們介紹了最常使用的tirck并比較了準確率。

        另外,我們還提出了一種簡單有效的數據增強方法,為兩階段訓練定制。我們提出的方法基于類激活圖(CAM),可以非常方便的集成到重采樣方法中成為“CAM-based sampling”。

        重加權方法

        cost-sensitive重加權方法是處理長尾問題的常見方法。這些方法引導網絡將更多的注意力放在少數類別中,通過對不同的類別設置不同的權重來實現。

        我們一般作為基線使用的Softmax交叉熵損失定義如下:

        圖片

        已有的重加權方法

        我們回顧了常用的重加權方法,包括cost-sensitive交叉熵損失,focal loss以及class-balanced loss方法。

        • cost-sensitive交叉熵損失定義:

        圖片

        • Focal loss在sigmoid中增加了一個調制****引子,著重訓練困難樣本:

        圖片

        • Class-balanced loss考慮了不同類別的真實數量,稱為有效數量,而不是數據集里的名義上的數量。使用有效數量的理論,類別均衡的focal loss和類別均衡的softmax交叉熵loss定義為:

        圖片

        這里,γ和β都是超參數。

        實驗結果

        我們在長尾CIFAR數據集上評估了重加權方法,見表3,我們發現重加權在CIFAR-10-LT上能得到更小測錯誤率,但是在CIFAR-100-LT上變差了。這表明直接用重加權并不是理想的選擇,特別是類別數增加不平衡度增加的時候。

        圖片

        后面我們會介紹一種兩階段的訓練長尾識別的方法,應用重加權能取得很好的效果。

        重采樣方法

        重采樣是用來處理長尾問題的常見方法,試圖通過采樣數據來達到類別的均衡分布。

        已有的重采樣方法

        • 隨機過采樣,從少樣本類中隨機重復訓練樣本,該方法很有效,但是容易導致過擬合。
        • 隨機欠采樣,從多數類中隨機去掉訓練樣本,直到所有類別均衡,在某些場景上比隨機過采樣效果更好。
        • 類別均衡采樣,使得每個類別有相同的采樣概率。每類采樣概率如下:

        圖片

        • 平方根采樣,在式(7)中,q=1/2,即為平方根采樣,這樣得到的是略微不均衡的數據集。
        • 漸進均衡采樣,逐漸的改變采樣概率,逼近均衡采樣。采樣概率的計算如下,t為當前epochs,T為總epochs數:

        圖片

        實驗結果 表4顯示了不同的采樣方法的結果,可以看到,直接使用重采樣的方法,提升很少。

        圖片

        Mixup 訓練

        Mixup 訓練可以看成是一種數據增強的trick,用來對CNN做正則化。我們發現,Mixup訓練在長尾數據集識別中和重采樣結合可以取得很好的效果。

        已有的mixup方法 我們介紹了2種mixup的方法:input mixup和manifold mixup。

        • input mixup是一種減緩對抗擾動的有效方法。具體來說,新的樣本由2個隨機采樣的樣本線性加權組合而成。其中,λ是從beta分布中采樣得到。

        圖片

        • manifold mixup讓神經網絡對于隱表示的插值的預測不那么確定,使用語義插值作為額外的訓練信號:

        圖片

        其中是兩個隨機采樣樣本的第k層的中間輸出,λ是從beta分布中采樣得到,在實驗中,我們只在一個層上進行mixup。

        mixup訓練之后的微調 在mixup訓練之后,將mixup去除掉,再訓練幾個epochs可以進一步提升效果。在我們的實驗中,我們也是先用mixup訓練,再去掉mixup后微調幾個epochs。

        實驗結果 mixup方法的結果如圖5,我們并沒有嘗試所有的超參數α,我們發現1)input mixup和manifold mixup都能相比baseline得到更好的結果,2)當α為1的時候并且mixup的位置是池化層的時候,input mixup和manifold mixup的結果相當。

        圖片

        mixup訓練后再微調的結果見表6,我們發現input mixup之后的微調可以進一步提升效果,但是manifold mixup之后再微調反而變差了。

        圖片

        二階段訓練過程

        2階段訓練包括不均衡訓練和均衡微調。這部分,我們聚焦不同方法的均衡微調,我們首先介紹已有的微調方法,然后介紹我們的CAM-based采樣方法。

        不均衡訓練之后的均衡微調 CNN在不均衡數據集上訓練,不適用任何的重加權和重采樣的方法,能夠學到好的特征表示,但是識別準確率很差。對這個網絡在均衡的子數據集上進行微調,可以使得學習到的特征遷移到均衡的所有類別上。這些微調方法可以分為2大類:推遲重采樣(DRS)和推遲重加權(DRW)。

        • DRS在第一階段使用原始的訓練策略訓練,然后在第二階段使用重采樣,再進行微調。為了在微調的時候得到均衡的數據集,需要使用重采樣方法,我們提出了一種簡單有效的生成式采樣方法叫做“CAM-based采樣”。
        • DWR在第一階段使用原始的訓練策略訓練,然后在第二階段使用重加權,重加權的方法我們使用之前介紹過的“重加權”方法。

        用提出的CAM-based采樣方法進行DRS  已有的重采樣方法是簡單的重復或者丟棄數據集中的一些數據來達到均衡的效果,這種方法提升有限。為了能夠生成具有可區分性的特征,受到特征激活圖的啟發,我們提出了CAM-based采樣方法,相對于已有的方法顯示了顯著的準確率的提升。

        如圖1所示,我們先使用重采樣得到均衡的樣本圖像,對于每個樣本圖像,我們使用第一階段訓練出來的模型基于label和全連接層的權重得到CAM,基于這個CAM的均值,前景和背景是分開的。最后,我們保持背景不變,對前景進行變換,這些變換包括水平翻轉,平移,旋轉,縮放,我們為每個圖像隨機選取一種變換。

        圖片

        具體來說,我們分別將CAM和隨機過采樣,隨機降采樣,類別均衡采樣,均方根采樣,漸進式采樣相結合。

        實驗結果 重采樣的結果見表7,我們發現:1)相比于直接進行重采樣,DRS重采樣可以得到更好的效果,2)CAM-based重采樣方法可以得到顯著的效果提升,3)在CAM-based重采樣方法中,CAM-based均衡采樣取得了最佳結果,4)ImageTrans均衡采樣的結果證明了CAM-based均衡采樣的有效性。

        圖片

        表8顯示了不同的重加權方法的結果,從中我們可以發現,1)相比于直接進行重加權,DRW能夠取得更好的結果,2)DRW使用CS_CE能得到更好的結果。

        圖片

        4. Tricks的組合

        這里,我們首先回顧了每個tricks大類里面互補的tricks,我們將這些tricks和其他的最佳tricks組合起來,目的是得到最優的tricks的組合。更進一步,我們增量應用這些tricks,顯示了互補的效果。

        在兩階段訓練章節中顯示,最佳的兩階段訓練是CAM-based過采樣DRS和使用CS_CE的DRW,但是,DRS和DRW都是兩階段的tricks,我們需要更多的實驗來來探索最佳的策略。在mixup訓練中,input mixup和manifold mixup能得到相當的效果,我們需要更多的實驗來探索和其他tricks組合在一起的效果。

        從實驗中,我們發現了最優的組合是input mixup,CAM-based均衡采樣DRS,以及mixup訓練之后的finetune。

        為了證明我們這個tricks組合的有效性,我們在長尾數據集上增量的應用這些tricks,結果見表11,我們發現:1)把input mixup,使用CAM-based均衡采樣的DRS,mixup訓練之后的finetune,這些疊加起來,效果穩步提升。2)在三個數據集上的表現說明了我們這個方法的有效性。3)使用了我們的方法,在3個數據集上都能降低10點左右的錯誤率。

        圖片

        圖片END

        論文鏈接:Bag of Tricks for Long-Tailed Visual Recognition with Deep Convolutional Neural Networks (nju.edu.cn)

        本文僅做學術分享,如有侵權,請聯系刪文。


        *博客內容為網友個人發布,僅代表博主個人觀點,如有侵權請聯系工作人員刪除。

        物聯網相關文章:物聯網是什么




        關鍵詞: AI

        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 都昌县| 大城县| 息烽县| 通江县| 上林县| 宝丰县| 延安市| 苏尼特左旗| 固阳县| 凤台县| 南川市| 蓬安县| 邹城市| 天津市| 锡林浩特市| 乐山市| 平舆县| 砀山县| 巨鹿县| 邢台市| 正蓝旗| 基隆市| 贵德县| 普宁市| 邹城市| 承德市| 麻城市| 阿拉善右旗| 两当县| 漳州市| 吐鲁番市| 桂阳县| 温宿县| 睢宁县| 平昌县| 会泽县| 临江市| 阿尔山市| 荆州市| 平南县| 巫溪县|