最新Kaggle制勝技巧——有限數據下的圖像分類

有限數據下的圖像分類挑戰是一項含有13個類別的自然圖像分類任務。

本文中,Venturebeat的作者Kayo Yin介紹了kaggle的一項挑戰——有限數據下的圖像分類,最終提交分數為0.97115,在最終排行榜上排名第二。

挑戰的第一個難點是缺乏可用的數據:僅有3859張可用於訓練的圖像。挑戰的規則是在訓練期間不使用外部數據。

由於數據量少,模型更容易過度擬合而無需學習泛化。


最新Kaggle制勝技巧——有限數據下的圖像分類


此外,由於這些圖像是灰度圖像,因此與諸如ImageNet數據集之類的彩色圖像相比,它們包含的信息更少,因此,彩色圖像上的預訓練模型無法直接應用於此任務。


最新Kaggle制勝技巧——有限數據下的圖像分類



進一步檢查數據集後,研究者發現,許多類別的圖像在視覺上都包含相似或相同的元素。當這些類別被混淆時,模型將失去了準確性。

首先,數據集的圖像尺寸並不相同,因此在將所有圖像輸入模型之前,要調整它們的大小。超過一半的訓練圖像的尺寸是256 x 256,所以要將其他圖像調整或裁剪到這個尺寸。

研究者還將運用歸一化方法。最初,圖像表示為像素值從0到255的張量。將每個值簡單除以255,得到0到1之間的值。

此外,將對比度拉伸應用於所有圖像的圖像增強,這將有助於模型更清晰地“查看”圖像中的細節。


最新Kaggle制勝技巧——有限數據下的圖像分類



這些類別也是不平衡的,這意味著每個類別之間的數據量不相等。這將使模型或多或少地都會偏向某些類。

為了解決這個問題,研究者人為地添加了許多的圖像,以便不同類別具有相同的圖像數量。

為了重新採樣,研究者在圖像中隨機裁剪一個區域來創建新的樣本。這是基於“裁剪後的圖像將包含與類特徵相同元素”的假設。


最新Kaggle制勝技巧——有限數據下的圖像分類


最後,當深度網絡使用大量訓練數據很好地執行和泛化時,研究者將對數據進行擴充。其目標是人為地創建包含同類特徵的新圖像。

研究者使用的方法

遷移學習

因為數據集包含的圖像與ImageNet中的圖像相似,所以研究者從在ImageNet上預先訓練過的CNN模型開始。

其目的是凍結可以捕獲通用特徵的較低層次的預訓練模型,同時對特定領域的較高層次進行微調。

研究者還將最後一層重新定義以輸出13個值,每個類一個。

通過對不同數量的凍結層進行試驗,發現7個是最好的。研究者還使用了SGD優化器來減輕重量,以防止過度擬合。

學習率調整

為了進一步改善結果並使模型收斂到全局最小值,需要調整學習率。研究者沒有通過實驗確定最佳學習率,而是選擇使用循環調整學習率。

這種方法使學習率呈週期性變化,從而使模型收斂到幾個局部最小值,同時也避免了“手工”尋找最佳學習率的需要。

快照集成

集成方法在提高模型整體性能方面非常有效。然而,在計算上,為集成學習分別訓練幾個不同的模型可能花費較大。這就是研究者選擇在循環LR調度中使用快照集成的原因。

快照集成在訓練期間定期保存模型的參數。其思想是在循環LR調度過程中,將模型收斂到不同的局部最小值。

因此,通過將模型參數保存在不同的局部最小值處,研究者可以獲得了一組為預測提供不同見解的模型。可以在單個訓練週期中收集集成的模型。


最新Kaggle制勝技巧——有限數據下的圖像分類



對於每幅圖像,研究者將每個“快照”模型的類別概率預測串聯起來,以形成一個新的數據點。然後,將這些新數據輸入到XGBoost模型中,以基於快照模型進行預測。

子類決策

在檢查單個模型驗證集上的混淆矩陣後,研究者發現,它們經常將不同的類別混淆。

例如,研究者發現經常混淆在一起的三個子類:

“房間”:臥室,廚房,客廳,辦公室

“自然”:海岸,森林,山脈,野外,高速公路

“城市”:市區,街道,高層建築

該模型已經非常擅長區分這些子類,但是要想獲得良好的性能,模型還需要準確識別子類中的分類。

為此,研究者使用與前面相同的方法,在每個子類上訓練三個獨立的新模型。

有些類的訓練數據很少,因此研究者增加了數據擴充量。研究者還發現了針對每個子類調整的新參數。

在預測過程中,研究者首先使用在整個數據集上訓練的模型,然後,對於得到的預測,如果某一類的概率低於某一閾值,就使用相關子類模型預測的類。

抗鋸齒處理方法

大多數現代卷積網絡,例如ResNet18,都不是位移不變的。

網絡輸出可能會發生巨大變化,只需對輸入進行很小的移動或平移即可。這是因為卷積網絡中的跨步操作忽略了Nyquist採樣定理和別名,從而打破了位移等方差。

研究者決定採用抗鋸齒處理方法。只需在網絡的卷積層之後添加一個“ BlurPool”層即可,這是一個模糊濾鏡和一個子採樣層。

實驗結果表明,該方法不僅提高了圖像不同移位之間的分類一致性,而且由於具有較好的泛化能力,提高了分類精度。使用經過預訓練的抗鋸齒ResNet18模型來對挑戰的數據集進行微調。


最新Kaggle制勝技巧——有限數據下的圖像分類


藉助抗鋸齒處理方法,研究者希望通過將模型推廣到圖像轉換和平移,來克服因數據稀缺而導致的過度擬合。

結果總結

對於所使用的方法可以總結如下:對ResNet18模型進行5個epoch的微調,除了調整大小外不需要任何處理,其測試精度已經達到0.91442。

由於數據和計算量很少,在相關任務上,該模型已經顯示出良好的性能,這顯示了遷移學習的顯著效率。

增加10個epoch的數據擴充和訓練,得到了0.93076的測試精度。

這證實了擁有一個大型訓練數據集的重要性,它可以以更高的精度來預測沒有代表性的的類。這也說明了學習率是模型收斂的一個重要參數。

其次,快照集成在所有數據上訓練模型,其測試精度提高到0.95000。

這說明循環LR調度能使研究者通過不同行為的單個訓練週期模型獲得數據,而XGBoost元學習者可以從預測中提取有用信息。

通過對比拉伸所有圖像和特定子類的訓練模型,並結合它們的預測,測試精度提高到0.95865。

在對子類的準確分類中,混淆矩陣有了明顯改進,尤其是對於“城市”子類。

開發某些類的“expert”模型,並將其與擅長區分子類的模型一起使用,被證明是非常有效的。

最後,在對ResNet18網絡進行抗鋸齒處理後,將訓練集和驗證集結合起來,使用所有可用於訓練的註釋數據,其測試精度提高到0.97115。

抗鋸齒是提高泛化能力的有效方法,當圖像數據有限時,抗鋸齒處理方法尤為重要。


最新Kaggle制勝技巧——有限數據下的圖像分類


研究者的其他思考

單通道圖像

這些圖像是灰度的,儘管加載時它們被編碼成三個通道,但它們可以表示為單通道矩陣。研究者的想法是,這樣的數據降維可以加快訓練速度,同時保留所有必要的東西。

研究者還嘗試通過其他方式獲取集成的模型,例如使用不同處理方法(使用/不使用類平衡,使用不同的圖像增強技術,使用不同的數據增強方法)在圖像上訓練模型,但是這些方法更加昂貴,且沒有顯著的準確性。

生成對抗網絡

如上所述,數據增強和類平衡在模型性能中起著關鍵作用。除了經典的圖像處理之外,生成的模型只能用於合成帶註釋的數據。例如,DAGAN模型可用於數據擴充,而BAGAN可用於平衡。

灰度ImageNet預訓練

提供的數據集圖像與ImageNet數據集的自然圖像具有相似性,不同之處在於研究者的圖像是黑白的。因此,在灰度圖像上進行預訓練的模型更為重要。

人工圖像著色

如果無法獲得灰度圖像的預訓練模型,那麼下一個想法就是對圖像進行人為著色,希望可以獲得更多信息。

GitHub:

https://github.com/kayoyin/GreyClassifier

原文鏈接:

https://towardsdatascience.com/latest-winning-techniques-for-kaggle-image-classification-with-limited-data-5259e7736327

福利:關注本公眾號(ID:turingtopia)

特別推薦

最新Kaggle制勝技巧——有限數據下的圖像分類

如果您對工業互聯網、數據中臺、精準營銷、智能推薦、人臉識別等業務經驗和AI應用感興趣,就來@派小僧 吧!

一線專家給你:

最全面的趟坑總結;

最前沿的實踐經驗;

最新落地的行業應用案例。

立即關注,一網打盡!

(ID:python_daydayup)


分享到:


相關文章: