0
本文作者: AI研習(xí)社-譯站 | 2019-06-19 10:39 |
本文為 AI 研習(xí)社編譯的技術(shù)博客,原標(biāo)題 :
How to improve your image classifier with Google’s AutoAugment
作者 | Philip Popien
翻譯 | 敬愛的勇哥 編輯 | 王立魚
原文鏈接:
https://towardsdatascience.com/how-to-improve-your-image-classifier-with-googles-autoaugment-77643f0be0c9
通過(guò)使用優(yōu)化的數(shù)據(jù)增強(qiáng)方法,在CIFAR-10、CIFAR-100、SVHN和ImageNet上得到了目前最好的結(jié)果。您可以從這里找到和使用它們。
在ImageNet上得到的最好的增強(qiáng)效果,源自:https://arxiv.org/abs/1805.09501v1
AutoML——使用機(jī)器學(xué)習(xí)來(lái)改進(jìn)機(jī)器學(xué)習(xí)設(shè)計(jì)(如體系結(jié)構(gòu)或優(yōu)化器)的想法——已經(jīng)來(lái)到了數(shù)據(jù)增強(qiáng)的領(lǐng)域。本文將解釋什么是數(shù)據(jù)增強(qiáng),谷歌AutoAugment如何搜索最佳增強(qiáng)策略,以及如何將這些策略應(yīng)用到您自己的圖像分類問(wèn)題。
數(shù)據(jù)增強(qiáng)意味著在訓(xùn)練機(jī)器學(xué)習(xí)模型時(shí),對(duì)輸入數(shù)據(jù)隨機(jī)的應(yīng)用各種變換。這種人為地?cái)U(kuò)大訓(xùn)練數(shù)據(jù),可以生成更多可能的輸入數(shù)據(jù)。它還有助于防止過(guò)度擬合,因?yàn)榫W(wǎng)絡(luò)幾乎從來(lái)不會(huì)看到完全相同的兩次輸入然后僅僅記住它們。典型的圖像數(shù)據(jù)增強(qiáng)技術(shù)包括從輸入圖像中隨機(jī)裁剪部分,水平翻轉(zhuǎn),應(yīng)用仿射變換,如平移、旋轉(zhuǎn)或剪切等。
源自:https://github.com/aleju/imgaug
事實(shí)上,正如 AutoAugment 作者所指出的,近年來(lái)在ImageNet挑戰(zhàn)賽上,人們?yōu)閷ふ腋玫木W(wǎng)絡(luò)結(jié)構(gòu)投入了大量的精力,但是數(shù)據(jù)增強(qiáng)技術(shù),基本上與Krizhevsky等人在2012年為AlexNet設(shè)計(jì)的方法相同,或者只有一些微小的變化。
選擇使用哪些數(shù)據(jù)增強(qiáng)的通用做法,是首先提出適合對(duì)應(yīng)數(shù)據(jù)集的不同假設(shè),然后進(jìn)行試驗(yàn)。你可以從隨機(jī)剪切、隨機(jī)調(diào)整大小或者水平翻轉(zhuǎn)開始,因?yàn)樗鼈儙缀蹩偸怯行У模⑶疫€可以嘗試諸如小尺度的旋轉(zhuǎn)等。由于重復(fù)訓(xùn)練帶來(lái)的驗(yàn)證集性能的隨機(jī)波動(dòng),很難確定這些增加的旋轉(zhuǎn)是否提高了模型性能,因?yàn)槟梢詮膬纱尾煌挠?xùn)練中獲得隨機(jī)的改進(jìn),而這些改進(jìn)并不是因?yàn)槭褂昧藬?shù)據(jù)增強(qiáng)。
通常來(lái)說(shuō),由于我們實(shí)驗(yàn)的高度不確定性,并且也沒有時(shí)間或資源來(lái)嚴(yán)格測(cè)試所有的可能組合,所以我們放棄了搜索最好的方法,或者堅(jiān)持使用某些固定的增強(qiáng)策略,而不知道它們是否有很大的貢獻(xiàn)。但是,如果有一種可以遷移有用數(shù)據(jù)的增強(qiáng)技術(shù),就像我們?cè)谶w移學(xué)習(xí)中從預(yù)先訓(xùn)練的模型中遷移參數(shù)一樣,那會(huì)怎樣呢?
AutoAugment的思想是在強(qiáng)化學(xué)習(xí)(RL)的幫助下學(xué)習(xí)給定數(shù)據(jù)集的最佳增強(qiáng)策略。由于在圖片上應(yīng)用和組合轉(zhuǎn)換的方法非常多,所以它們對(duì)可選擇的方法增加了一些限制。一個(gè)主要策略由5個(gè)子策略組成,每個(gè)子策略依次應(yīng)用2個(gè)圖像操作,每個(gè)圖像操作都有兩個(gè)參數(shù):應(yīng)用它的概率和操作的幅值(70%的概率執(zhí)行旋轉(zhuǎn)30度的操作)
這種策略在訓(xùn)練時(shí)是如何應(yīng)用在圖片上的呢?對(duì)于我們當(dāng)前批次的每張圖片,首先隨機(jī)均勻地選擇一個(gè)子策略,然后應(yīng)用該子策略。讓我們來(lái)看一個(gè)包含5個(gè)子策略的示例,這些子策略應(yīng)用于SVHN數(shù)據(jù)集中的圖片:
對(duì)SVHN圖像應(yīng)用一些最佳增強(qiáng)的例子。源自:https://arxiv.org/abs/1805.09501v1
子策略1在x的方向上,以90%的概率執(zhí)行力度為7的剪裁。然后,有20%的概率,對(duì)圖像的顏色進(jìn)行翻轉(zhuǎn)。子策略4以90%的概率對(duì)圖像進(jìn)行顏色反轉(zhuǎn),然后在10次中有6次進(jìn)行顏色直方圖均衡化。操作的次數(shù)是固定的,但是由于子策略的隨機(jī)性和操作存在的概率,對(duì)于單個(gè)圖像也可能有很多的增強(qiáng)結(jié)果。
讓我們看看AutoAugment RL模型的搜索空間。他們考慮了16種操作:14種來(lái)自Python圖像庫(kù)PIL,比如旋轉(zhuǎn)、顏色反轉(zhuǎn)和一些不太知名的操作,比如色調(diào)分離(減少像素位)和過(guò)度曝光(將顏色反轉(zhuǎn)到某個(gè)閾值以上),再加上裁剪和采樣(類似于Mixup)這些數(shù)據(jù)增強(qiáng)領(lǐng)域的新方法。增加11個(gè)離散概率值(0.0,0.1,…,1)和從0到9共10個(gè)等間距的幅值,這相當(dāng)于對(duì)某一個(gè)子策略有(16 * 11 * 10)2種可能性,如果同時(shí)有五個(gè)子策略,則共有(16 * 11 * 10)1?≈2.9 * 1032種可能 。需要強(qiáng)化學(xué)習(xí)來(lái)幫忙了!
如何訓(xùn)練AutoAugment ?
AutoAugment像NASNet一樣訓(xùn)練——一個(gè)源自Google的用于搜索最優(yōu)圖像分類模型結(jié)構(gòu)的增強(qiáng)學(xué)習(xí)方法。它的訓(xùn)練方法如下:我們有一個(gè)控制器,它決定當(dāng)前哪個(gè)增強(qiáng)策略看起來(lái)最好,并通過(guò)在特定數(shù)據(jù)集的一個(gè)子集上運(yùn)行子實(shí)驗(yàn)來(lái)測(cè)試該策略的泛化能力。在子實(shí)驗(yàn)完成后,采用策略梯度法(Proximal policy Optimization algorithm, PPO),以驗(yàn)證集的準(zhǔn)確度作為更新信號(hào)對(duì)控制器進(jìn)行更新。解釋PPO超出了本文的范圍,但是我們可以更詳細(xì)地看看控制器和子模型實(shí)驗(yàn)。
控制器以Softmax輸出要應(yīng)用于哪個(gè)操作決策。然后,該決策作為輸入傳遞到控制器的下一步,這是因?yàn)榭刂破魇且粋€(gè)RNN(對(duì)于NASNet,使用了一個(gè)包含100個(gè)隱藏單元的LSTM)。然后控制器決定應(yīng)用哪個(gè)幅值的操作。第三步是選擇概率。因此,控制器擁有所有其他操作的上下文、早期的概率和幅值,以便做出最佳的下一個(gè)選擇。(這是一個(gè)說(shuō)明性的例子,因?yàn)檫@篇論文目前并沒有告訴我們選擇操作、大小和概率的順序)。
控制器模型架構(gòu) 源自:https://arxiv.org/abs/1707.07012
總共有30個(gè)softmax預(yù)測(cè)值,因?yàn)橛?個(gè)子策略,每個(gè)子策略需要在兩個(gè)操作、大小和概率(5 * 2 * 3 = 30)中做出兩個(gè)選擇。
我們?nèi)绾胃嬖V控制器哪些策略選擇得好,哪些沒有真正提高性能(例如將亮度設(shè)為零)?為此,我們使用當(dāng)前增強(qiáng)策略在子神經(jīng)網(wǎng)絡(luò)上進(jìn)行泛化實(shí)驗(yàn)。實(shí)驗(yàn)結(jié)束后,對(duì)RNN控制器的權(quán)值進(jìn)行更新,以驗(yàn)證集的準(zhǔn)確度作為更新信號(hào)。當(dāng)最后將整體最佳的5個(gè)策略(每個(gè)策略包含5個(gè)子策略)合并到最終策略(現(xiàn)在包含25個(gè)子策略)中時(shí),共將執(zhí)行15,000次迭代。最后的這個(gè)策略是用于該數(shù)據(jù)集所有數(shù)據(jù)的策略。
正如副標(biāo)題已經(jīng)給出的那樣,AutoAugment提升了CIFAR-10、CIFAR-100、SVHN、ImageNet等數(shù)據(jù)集上的最優(yōu)結(jié)果。此外,還有一些特別有趣的細(xì)節(jié):
CIFAR-10和ImageNet數(shù)據(jù)集上的最佳策略主要是基于顏色的轉(zhuǎn)換。對(duì)于SVHN數(shù)據(jù)集,與CIFAR-10相比,AutoAugment選擇了完全不同的轉(zhuǎn)換:剪切圖像和反轉(zhuǎn)顏色,這對(duì)于門牌號(hào)是很有意義的。
CIFAR-10測(cè)試集上的錯(cuò)誤率,越低越好,源自:https://arxiv.org/abs/1805.09501v1
ImageNet驗(yàn)證集上Top-1/Top-5的錯(cuò)誤率,越低越好,源自:https://arxiv.org/abs/1805.09501v1
在數(shù)據(jù)很少的情況下,使用autoaugmented的效果會(huì)更好。這是數(shù)據(jù)增強(qiáng)技術(shù)的預(yù)期效果。
在CIFAR-10上發(fā)現(xiàn)的最佳增強(qiáng)策略可以將CIFAR-100的錯(cuò)誤率從12.19%提高到10.67%。
CIFAR-100測(cè)試集的錯(cuò)誤率,源自:https://arxiv.org/abs/1805.09501v1
將ImageNet上的最終策略應(yīng)用在5個(gè)不同的較難的數(shù)據(jù)集,可以顯著提高最終的準(zhǔn)確度。這是通過(guò)數(shù)據(jù)增強(qiáng)而不是權(quán)值的遷移學(xué)習(xí)得到的結(jié)果。這些結(jié)果是從零開始訓(xùn)練Inception v4,而不是從ImageNet微調(diào)權(quán)重時(shí)得到的。
FGVC測(cè)試集上Top-1錯(cuò)誤率(%)。Inception v4是從零開始訓(xùn)練,沒有應(yīng)用最佳ImageNet增強(qiáng)策略。源自:https://arxiv.org/abs/1805.09501v1
如果我們想要解決圖像分類問(wèn)題,通常使用來(lái)自ImageNet預(yù)訓(xùn)練的權(quán)重初始化模型,然后對(duì)這些權(quán)重進(jìn)行微調(diào)。我們剛剛看到,使用AutoAugment的最佳ImageNet策略,同時(shí)從零開始訓(xùn)練,也有類似的正效果。如果我們同時(shí)使用這兩種方法:在使用ImageNet AutoAugment 策略時(shí)微調(diào)ImageNet的權(quán)重?這些優(yōu)化的效果會(huì)疊加起來(lái),為我們解決新的圖像分類問(wèn)題提供新的最佳方法嗎?
為了回答這個(gè)問(wèn)題,我使用了相同的5個(gè)FGVC數(shù)據(jù)集(Oxford 102 Flowers, Caltech-101, Oxford- iiit Pets, FGVC Aircraft和Stanford Cars),對(duì)Inception v4進(jìn)行微調(diào),使用或不使用來(lái)自AutoAugment的ImageNet策略。
實(shí)驗(yàn)設(shè)置:
在GPU上以batch size為32訓(xùn)練一個(gè)Inception v4網(wǎng)絡(luò),SGD的momentum設(shè)為0.9,學(xué)習(xí)率設(shè)為0.01。
如果驗(yàn)證集的準(zhǔn)確度在5個(gè)epoch內(nèi)沒有增加,則學(xué)習(xí)率減半。如果驗(yàn)證集上的準(zhǔn)確度在3*5=15個(gè)周期內(nèi)沒有提高,就停止訓(xùn)練。
使用這個(gè)repo中預(yù)訓(xùn)練的ImageNet權(quán)值,只有最后的輸出層被替換來(lái)表示數(shù)據(jù)集的不同類。從一開始,所有層都是可訓(xùn)練的。
如AutoAugment論文中所寫的那樣,輸入圖像的尺寸為448x448。
兩種微調(diào)場(chǎng)景都使用隨機(jī)水平翻轉(zhuǎn)和隨機(jī)大小裁剪作為基礎(chǔ)數(shù)據(jù)增強(qiáng)。選擇隨機(jī)調(diào)整大小的最小剪切百分比,基于小的ResNet18驗(yàn)證集的效果而定。
ImageNet 的AutoAugment策略是在隨機(jī)裁剪大小后施加。不過(guò)實(shí)驗(yàn)表明,在剪切前還是剪切后施加都無(wú)關(guān)緊要。
選擇這些超參數(shù)后,最終的模型在訓(xùn)練集和驗(yàn)證集的組合上進(jìn)行訓(xùn)練,并在測(cè)試集中進(jìn)行測(cè)試。為了保證測(cè)試結(jié)果的穩(wěn)定性,采用該方法訓(xùn)練了5個(gè)模型,并對(duì)測(cè)試結(jié)果進(jìn)行平均。
對(duì)FGVC測(cè)試集上5次Top-1錯(cuò)誤率結(jié)果進(jìn)行平均。Inception v4通過(guò)對(duì)ImageNet權(quán)重進(jìn)行微調(diào),使用和不使用AutoAugment ImageNet策略。有趣的是,在5個(gè)數(shù)據(jù)集中,只有3個(gè)數(shù)據(jù)集的微調(diào)結(jié)果比從上面AutoAugment論文中從零開始訓(xùn)練的結(jié)果更好。正如在“Do Better ImageNet Models Transfer Better”中討論的那樣,微調(diào)似乎不會(huì)在所有情況下都提升模型性能。 https://arxiv.org/abs/1805.08974
將最佳的ImageNet增強(qiáng)策略應(yīng)用于不同的數(shù)據(jù)集,可以將5個(gè)數(shù)據(jù)集中的3個(gè)的錯(cuò)誤率平均降低18.7%。在另外兩個(gè)數(shù)據(jù)集上,錯(cuò)誤率平均增加了5.3%。
這些結(jié)果表明,當(dāng)需要對(duì)ImageNet權(quán)重進(jìn)行微調(diào)時(shí),應(yīng)該嘗試額外應(yīng)用ImageNet AutoAugment策略。通常情況下,基本上都可以額外獲得顯著的改進(jìn)。
我在本文附錄中創(chuàng)建了一個(gè)包含最佳ImageNet、CIFAR-10和SVHN策略的repo。一些實(shí)現(xiàn)細(xì)節(jié)還不明確,但我正在與作者聯(lián)系,一旦我知道更多細(xì)節(jié),我將會(huì)在這個(gè)repo里及時(shí)更新。雷鋒網(wǎng)雷鋒網(wǎng)雷鋒網(wǎng)
將ImageNet策略的隨機(jī)子策略通過(guò)PIL應(yīng)用搭配圖像上,可以如下:
要將它應(yīng)用到PyTorch,您可以這樣做:
AutoML再次展現(xiàn):對(duì)于給定數(shù)據(jù)集,最好的數(shù)據(jù)增強(qiáng)操作是可學(xué)習(xí)的,甚至可以遷移到類似的數(shù)據(jù)集中。這只是許多可能的自動(dòng)優(yōu)化數(shù)據(jù)增強(qiáng)方法中的一個(gè)。提高學(xué)習(xí)此類策略的效率是另一種令人興奮的方法,目的是使任何人都能夠使用這些技術(shù)(無(wú)需使用GPU服務(wù)器群)。ENAS表明這是可行的。
把這個(gè)新方法應(yīng)用到你自己的問(wèn)題上吧,祝你好運(yùn)!如有錯(cuò)誤和疑問(wèn),請(qǐng)發(fā)郵件至philip@popien.net聯(lián)系我。
感謝Avinash C Mishra和Tom Voltz。
想要繼續(xù)查看該篇文章相關(guān)鏈接和參考文獻(xiàn)?
點(diǎn)擊【如何使用 Google 的 AutoAugment 改進(jìn)圖像分類器】即可訪問(wèn):
今日博客推薦:ICML 2019 | 神經(jīng)網(wǎng)絡(luò)的可解釋性,從經(jīng)驗(yàn)主義到數(shù)學(xué)建模
本來(lái)想把題目取為「從煉丹到化學(xué)」,但是這樣的題目太言過(guò)其實(shí),遠(yuǎn)不是近期可以做到的,學(xué)術(shù)研究需要嚴(yán)謹(jǐn)。但是,尋找適當(dāng)?shù)臄?shù)學(xué)工具去建模深度神經(jīng)網(wǎng)絡(luò)表達(dá)能力和訓(xùn)練能力,將基于經(jīng)驗(yàn)主義的調(diào)參式深度學(xué)習(xí),逐漸過(guò)渡為基于一些評(píng)測(cè)指標(biāo)定量指導(dǎo)的深度學(xué)習(xí),是新一代人工智能需要面對(duì)的課題,也是在當(dāng)前深度學(xué)習(xí)渾渾噩噩的大背景中的一些新的希望。
點(diǎn)擊鏈接查看:https://ai.yanxishe.com/page/blogDetail/13438
雷峰網(wǎng)原創(chuàng)文章,未經(jīng)授權(quán)禁止轉(zhuǎn)載。詳情見轉(zhuǎn)載須知。