01 Datafountain_雲狀識別_top1

        我們參加了雲狀識別的比賽,取得了一定的成績,這裏感謝王博,慄宏海大佬,爲了營造更好的學習氛圍,我們把主要的思路以及學習參考分享給大家

摘要

        細粒度圖像分類是圖像分類的子任務[1],主要區分同一類別下的不同子類,本次任務主要是識別3族29種雲朵形狀。與一般的分類任務不同,該分類任務具有類內差距小的特點,往往需要藉助微小的局部細節差異才能分辨出不同的類別。因此,如何提高細粒度圖像的分類準確率至關重要。
        算法的整體結構包括兩層,第一層是以densenet161作爲基礎模型,改變訓練集的不同分割方式獲得15個模型,第二層通過求取15個模型預測各個分類的概率均值,閾值爲0.2進行選取,得到最後的分類結果。
        其中,訓練densenet161的時候,首先對數據圖像進行了翻轉,旋轉,對比度和縮放的調整,增加數據的多樣性,訓練過程中採用差分學習率以及餘弦退火的方式提高精度和減少訓練時間,爲了進一步提高模型的魯棒性,採用了多尺寸圖像訓練,最後通過TTA進一步增加預測的穩定性。

關鍵詞 雲狀識別,細粒度多分類,多尺寸圖像,差分學習率,餘弦退火

1 雲狀識別算法總體思路和架構

圖1:總體方案設計

圖1:總體方案設計

總體方案如圖1所示:首先通過翻轉,旋轉,對比度和縮放對原始數據增強,然後分別調整爲和,首先餵給模型的圖片進行第一部分訓練,然後再把的圖片餵給模型進行第二部分的訓練,每部分模型訓練都分爲兩個階段,第一階段固定預訓練模型參數,只改變後幾層網絡參數,第二階段打開預訓練模型,全部進行訓練,每次訓練採用差分學習率和餘弦退火,提高精度,縮短訓練時間,最後通過TTA對驗證集進行處理,達到預測的穩定性。這樣就產生了第一個densenet161模型,爲了減少預測的抖動,通過對訓練集中訓練樣本和驗證樣本的隨機分割,產生15組分割方式,依次獲取15個densenet161模型,每個模型給出的預測概率進行求均值處理,設置閾值爲0.2進行劃分,得到最後的預測分類結果。

2 雲狀識別算法具體實現過程

       首先對模型進行初步篩選,篩選模型有以下11種:densenet121,densenet161,densenet169,densenet201,resnet18,resnet34,resnet50,resnet101,resnet152,vgg16,vgg19,從中選取表現最好的模型densenet161,把該模型作爲基模型,進行後續的模型融合。
在這裏插入圖片描述

圖2. 經過數據增強的圖片示例

2.1 圖像增強:

       對輸入圖像進行水平,垂直翻轉,任意旋轉設置爲15°,概率爲0.75,最大縮放比例爲1.05,最大隨機光照對比度變化比例爲0.1,概率爲0.75。通過這種方式獲取隨機變化的訓練集樣本,增加數據的多樣性,提高模型的魯棒性。得到的訓練集圖片示例如圖2所示。

2.2 多圖像尺寸訓練:

       多圖像尺寸訓練,經常用來處理過擬合效應和提高準確性,它就是訓練小尺寸圖像,然後增大尺寸並再次訓練相同模型。這種方法在imageNet比賽中得到應用,取得了很好的效果,這裏我將這種方法遷移到雲狀識別的任務中,我首先將訓練圖片尺寸調整爲,訓練模型,然後將訓練好的模型再次在圖片爲的訓練集合中訓練,得到精度更高,魯棒性更好的最終單模型。

2.3 選用densenet161預訓練模型進行fine-tune:

       我們沒有必要從頭開始一個一個的參數去試驗來構造一個深度網絡,因爲已經有很多公開發表的論文已經幫我們做了這些驗證,我們只需要站在前人的肩膀上,去選擇一個合適的網絡結構就好了。且選擇已經公認的網絡結構另一個重要的原因是,這些網絡幾乎都提供了在大規模數據集ImageNet[2]上預先訓練好的參數權重(Pre-trained Weights)。這一點非常重要!因爲我們只有1萬張訓練樣本,而深度網絡的參數非常多,這就意味着訓練圖片的數量要遠遠小於參數搜索的空間,因此,如果只是隨機初始化深度網絡然後用這數千張圖片進行訓練,非常容易產生“過擬合”(Overfitting)的現象。
所謂過擬合,就是深度網絡只看過了少量的樣本,因而“坐井觀天”,導致只能識別這小部分的圖片,喪失了“泛化”(Generalization)能力,不能夠識別其它沒見過、但是也是相似的圖片。爲了解決這樣的問題,我們一般都會使用那些已經在數百萬甚至上千萬上訓練好的網絡參數作爲初始化參數,可以想象這樣一組參數的網絡已經“看過”了大量的圖片,因此泛化能力大大提高了,提取出來的視覺特徵也更加的魯棒和有效。
       DenseNet[3]的一個優點是網絡更窄,參數更少,很大一部分原因得益於這種dense block的設計,dense block中每個卷積層的輸出特徵圖的維度都很小。同時這種連接方式使得特徵和梯度的傳遞更加有效,網絡也就更加容易訓練。梯度消失問題在網絡深度越深的時候越容易出現,原因就是輸入信息和梯度信息在很多層之間傳遞導致的,而現在這種dense連接方式相當於每一層都直接連接輸入和輸出,因此就可以減輕梯度消失現象,這樣更深網絡不是問題。另外這種dense連接還具有正則化的效果,對於過擬合有一定的抑制作用.

2.4 差分學習率與餘弦退火

       差分學習率(Differential Learning rates)[4]意味着在訓練時變換網絡層比提高網絡深度更重要。基於已有模型來訓練深度學習網絡,這是一種被驗證過很可靠的方法,可以在計算機視覺任務中得到更好的效果。大部分已有網絡(如Resnet、VGG和Inception等)都是在ImageNet數據集訓練的,因此我們要根據所用數據集與ImageNet圖像的相似性,來適當改變網絡權重。在修改這些權重時,我們通常要對模型的最後幾層進行修改,因爲這些層被用於檢測基本特徵(如邊緣和輪廓),不同數據集有着不同基本特徵。創建學習對象之後,通過快速凍結前面網絡層並微調後面網絡層來解決問題:當後面網絡層產生了良好效果,我們會應用差分學習率來改變前面網絡層。在實際中,一般將學習率的縮小倍數設置爲10倍。
在這裏插入圖片描述在這裏插入圖片描述

圖3:Loss函數隨學習率變化曲線圖

       圖中A是保持預訓練模型不變,訓練後幾層時候不同學習率下損失函數的變化,爲了提高收斂速度,可以選取下降且變化速率最快的學習率,但考慮到多圖像尺寸訓練的因素,爲了保證一定的泛化程度,本文選擇了學習率爲1e-2,當解凍預訓練模型的時候變化關係如圖B,這時選用了一定的經驗值,其中預訓練層部分學習率選擇爲1e-6, 後幾層學習率選擇爲1e-2/5。選擇的學習率作爲該網絡層的最大學習率,真實的學習率,以1e-2爲例,如圖4所示
在這裏插入圖片描述

圖4:真實學習率以及動量隨迭代次數的關係

       採用學習率先增加後減少的方式,可以有效的提高訓練速度,同時學習率增加段可以規避掉一些局部最小值,後續的利用餘弦函數降低學習率的方式,在神經網絡越來越接近Loss值的全局最小值的時候,保證模型不會超調且儘可能接近這一點。而且餘弦值首先緩慢下降,然後加速下降,再次緩慢下降。這種下降模式能和學習率配合,以一種十分有效的計算方式來產生很好的效果,這是由於這種特殊的學習率調節方式,一般最好的loss函數會呈現如圖5所示
在這裏插入圖片描述

圖5:訓練集和驗證集Loss函數變化圖

       Loss函數會先上升一小段,然後大幅度下降。這種方法既可以提高精度又可以大幅縮減訓練時間。

2.5 TTA(test time augmentation):

       TTA作爲一種先進技巧,可將準確率提高若干個百分點,它就是測試時增強(test time augmentation, TTA)。這裏會爲原始圖像造出多個不同版本,包括不同區域裁剪和更改縮放程度等,並將它們輸入到模型中;然後對多個版本進行計算得到平均輸出,作爲圖像的最終輸出分數。

2.6 模型融合:

       最後由於本次雲狀分類任務中,樣本類別分佈極其不均勻,預測的評估分數抖動很大,爲了提高模型的穩定性,這裏我沒有采用常規的多模型融合,再增加機器學習的Stack方法,而是首先對訓練集進行隨機分割15次,訓練集和測試集的比例都爲4:1,然後利用最優單模型分別訓練,得到15個不同的densnet161模型,把每一個單模型的預測概率值進行求均值,得到最後的各分類概率值,然後設定閾值爲0.2,進行最後的多分類可信值。

致謝

       在這裏首先感謝中國氣象局,Datafountain和組委會給我們這樣的機會和舞臺,來磨練和展示自己。其次要感謝隊友的無私奉獻,吃苦耐勞,開拓進取,以及互相的扶持與砥礪前行。

參考

[1]蔣傑, 熊昌鎮. 一種數據增強和多模型集成的細粒度分類算法[J]. 圖學學報, v.39;No.138(2):68-74.
[2]Alex Krizhevsky, I Sutskever, G Hinton. ImageNet Classification with Deep Convolutional Neural Networks[J]. Advances in neural information processing systems, 2012, 25(2).
[3]Huang, Gao, Liu, Zhuang, van der Maaten, Laurens, etc. Densely Connected Convolutional Networks[J].
[4]Smith L N . Cyclical Learning Rates for Training Neural Networks[J]. Computer Science, 2015:464-472.

覺得有用可以關注我的公衆號CV伴讀社,微博CV七少
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章