0
本文為 AI 研習社編譯的技術博客,原標題 :
Boost your Image Classification Model
作者 | Aditya Mishra
翻譯 | MichaelChen 編輯 | 鄧普斯?杰弗、咩咩咩魚
原文鏈接:
https://towardsdatascience.com/boost-your-image-classifier-e1cc7a56b59c
圖像分類是一個認為幾乎解決了的問題。有趣的是,你必須竭盡所能來提升額外的1%的準確率。當我參加“ Intel Scene Classification Challenge hosted by Analytics Vidhya(由Analytics Vidhya主辦的英特爾場景分類挑戰(zhàn))”我非常喜歡這次比賽,因為我嘗試從我的深度學習模型中榨干所有的潛力。下面的技術通常是可以應用到手頭上的任何圖像分類問題中去。
下面的問題是把給定的圖片分類到下面的6個類別中去。
數(shù)據(jù)類別
數(shù)據(jù)中包含25,000張自然風景的圖片,這些圖片來自世界各地。
當訓練CNN模型的時候,從小到大的線性調(diào)整圖片尺寸是一項技術。漸進的尺寸調(diào)整在很贊的fastai課程中被描述為:程序員的深度學習實踐。一種不錯的方式是先用小的尺寸,如64 x 64進行訓練,再用這個模型的參數(shù),在128 x 128尺寸上進行訓練,如此以往。每個較大的模型都在其體系結構中包含以前較小的模型層和權重。
漸進的尺寸調(diào)整
fastai庫是一個強大的深度學習庫。如果fastai團隊找到了一篇很感興趣的論文,他們會在不同的數(shù)據(jù)集上進行測試,并實現(xiàn)調(diào)參。一旦成功,就會被合并到他們的庫,并且對它的用戶開放閱讀。這個庫包含了很多內(nèi)置的先進的技巧?;趐ytorch,fastai對于大多數(shù)任務都有很好的默認參數(shù)。部分技巧包括:
周期性學習率
一個周期的學習
結構化數(shù)據(jù)的深度學習
在查看可用的標準數(shù)據(jù)集時,我偶然發(fā)現(xiàn)了Place365數(shù)據(jù)集。Place365數(shù)據(jù)集包含365種風景分類的1,800,000張圖片。本次挑戰(zhàn)賽提供的數(shù)據(jù)集與這個數(shù)據(jù)集很相似,所以在這個數(shù)據(jù)集訓練的模型,具有一些學習的特征,與我們分類的問題是相關的。由于我們的問題中的類別是Place365數(shù)據(jù)集的子集,所以我使用了一個用Place365權重初始化的ResNet50模型。
這個模型的權重在“pytorch weights”中提供。下面使用的實用函數(shù)幫助我們正確地將數(shù)據(jù)加載到fastai的CNN學習器中。
混合增強是一種通過對已有的兩幅圖像進行加權線性插值,來形成新圖像的增強方法。我們?nèi)蓮垐D像,然后使用這些圖像的張量進行線性組合。
混合增強
λ是服從beta分布的隨機采樣。雖然論文的作者建議使用 λ=0.4,但是fastai的庫默認值設為0.1。
fastai中的混合增強
學習率是訓練神經(jīng)網(wǎng)絡中最重要的超參數(shù)之一。fastai有一種方法來找出合適的初始學習速率。這個技術被稱作循環(huán)學習率,我們用較低的學習率進行試驗,并以指數(shù)形式增加,記錄整個過程的損失。然后我們根據(jù)學習率繪制損失曲線,并選擇損失值最陡峭處的學習率。
fastai中的LR Ffinder
在學習率為1e-06時,損失最陡峭
這個庫還為我們自動的處理帶有重新啟動的隨機梯度下降(SGDR)。在SGDR中,學習率在每次迭代開始時會重新設置為原始選擇的數(shù)值,這些數(shù)值會隨著迭代減小,就像余弦退火一樣。這么做的主要收益是,由于學習率在每次迭代的開始可以重置,因此學習器能夠跳出局部極小值或鞍點。
fastai中帶有重啟的隨機梯度下降
生成式對抗網(wǎng)絡(GAN是Generative Adversarial Networks的縮寫)在2014年被Ian Goodfellow提出,GANs是由兩個網(wǎng)絡組成的深層神經(jīng)網(wǎng)絡結構,它們相互競爭。 GANs可以模擬任何數(shù)據(jù)分布。他們可以學習生成類似原始數(shù)據(jù)的數(shù)據(jù),而且可以是任何領域——圖像、語音、文本等等。我們使用fastai的Wasserstein GAN的實現(xiàn)來生成更多的訓練數(shù)據(jù)。
GANs包括訓練兩個神經(jīng)網(wǎng)絡,一個被稱為生成器,它生成新的數(shù)據(jù)實例,另一個被稱為判別器,它對它們進行真實性評估,它決定每個數(shù)據(jù)實例是否屬于實際的訓練數(shù)據(jù)集。你可以從這個鏈接查閱更多。
https://github.com/fastai/course-v3/blob/master/nbs/dl1/lesson7-wgan.ipynb
GAN生成樣本圖片
訓練神經(jīng)網(wǎng)絡的第一步不是寫任何的神經(jīng)網(wǎng)絡的代碼,而是徹底觀察你的數(shù)據(jù)。這一步至關重要。我喜歡花費大量的時間(以小時為單位)瀏覽數(shù)千張樣例,理解他們的分布,尋找他們的模式?!狝ndrej Karpathy
正如Andrej Karpathy所說,“數(shù)據(jù)調(diào)查”是一個重要的一步。關于數(shù)據(jù)調(diào)查,我發(fā)現(xiàn)很多數(shù)據(jù)包含不少于兩種的類別。
方法-1
使用之前訓練的模型,我對整個訓練數(shù)據(jù)進行了預測。然后丟棄概率得分超過0.9但是預測錯誤的圖像。下面這些圖像,是模型明顯錯誤分類的。深入觀察以后,我發(fā)現(xiàn)這些圖像是被人工錯誤分類了。
混淆的圖像
有些圖像的預測概率在0.5到0.6之間,理論上可能是這個圖像表現(xiàn)出不止一個類別,所以模型給他們分配了相同的概率,我也把這些圖像剔除了。觀察這些圖像,這個理論最終被證明是正確的。
方法 2
fast.ai提供了一個方便的插件“圖像清理器插件”,它允許你為自己的模型清理和準備數(shù)據(jù)。圖像清理器可以清洗不屬于你數(shù)據(jù)集的圖像。它在一行中呈現(xiàn)圖像,使你有機會在文件系統(tǒng)中刪除文件。
測試時間的增加包括提供原始圖像的一系列不同的版本,并把他們傳遞到模型中。從不同的版本中計算出平均值,并給出圖像的最終輸出。
fast.ai中測試時間的增加
之前提出的10-crop技巧跟此技巧類似。我首先在殘差網(wǎng)絡的論文中讀到了10-crop技巧。10-crop技巧包括沿著四角和中心點各裁剪一次,得到五張圖像。反向重復以上操作,得到另外五張圖像,一共十張。測試時間增加的方法無論如何比10-crop技巧要快。雷鋒網(wǎng)雷鋒網(wǎng)雷鋒網(wǎng)
機器學習中的集成是一種使用多種學習算法的技術,這種技術可以獲得比單一算法更好的預測性能。集成學習最好在下面的條件下工作:
組成模型具有不同的性質(zhì)。比如,集成ResNet50和InceptionNet要比組合ResNet50和InceptionNet有用的多,因為它們本質(zhì)上是不同的。
組成模型的相關性較低。
改變模型的訓練集,能得到更多的變化。
在本例中,我通過選擇最大發(fā)生類來集成所有模型的預測。如果有多個類有最大出現(xiàn)的可能,我隨機選擇其中的一個類。
結果:
公開排行榜——29名(0.962)
私人排行榜——22名(0.9499)
漸進的尺寸調(diào)整在開始時是一個好主意。
花時間去理解你的數(shù)據(jù)并且可視化是必須的。
像fastai這種具有出色的初始化參數(shù)的出色的深度學習庫,確實有幫助。
只要有可能,就要盡量使用遷移學習,因為確實有用。最近,深度學習和遷移學習已經(jīng)應用到了結構化數(shù)據(jù),所以遷移學習絕對應該是首先要嘗試的事情。
最先進的技術例如混合增強,測試時間增加,周期學習率將毫無疑問的幫助你將準確率提高1到2個百分點。
始終搜索與你的問題相關的數(shù)據(jù)集,并且把他們盡可能的用在你的訓練數(shù)據(jù)集中。如果可能,深度學習模型在這些模型上訓練之后,使用他們的參數(shù)作為你模型的初始權重。
想要繼續(xù)查看該篇文章相關鏈接和參考文獻?
點擊【如何優(yōu)化你的圖像分類模型效果?】即可訪問:
https://ai.yanxishe.com/page/TextTranslation/1724
社長今日推薦:2017春季CS231n斯坦福深度視覺
李飛飛主講王牌課程,計算機視覺的深化課程,神經(jīng)網(wǎng)絡在計算機視覺領域的應用,涵蓋圖像分類、定位、檢測等視覺識別任務,以及其在搜索、圖像理解、應用、地圖繪制、醫(yī)學、無人駕駛飛機和自動駕駛汽車領域的前沿應用。
本課程完全免費!加入小組即可立即觀看!
課程鏈接:https://ai.yanxishe.com/page/groupDetail/19
雷峰網(wǎng)原創(chuàng)文章,未經(jīng)授權禁止轉(zhuǎn)載。詳情見轉(zhuǎn)載須知。