0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

圖像分類比賽中,你可以用如下方案舉一反三

jmiy_worldofai ? 來源:未知 ? 作者:李倩 ? 2018-11-02 10:36 ? 次閱讀

眾所周知,Kaggle 是一個進(jìn)行預(yù)測建模及數(shù)據(jù)分析的競賽平臺。在這個平臺上,統(tǒng)計學(xué)家和數(shù)據(jù)科學(xué)家競相構(gòu)建最佳的模型,這些模型被用于預(yù)測、描述公司和用戶上傳的數(shù)據(jù)集。這種眾包的方式之所以被廣為接受,是因為對于同一個預(yù)測建模任務(wù)來說,可能存在無數(shù)種解決策略,但是想要事先知道哪種技術(shù)或分析方法是最有效的幾乎不可能。[1]

任務(wù)概述

你能分清雜草和農(nóng)作物幼苗嗎?

如果我們能高效地區(qū)分農(nóng)作物幼苗和雜草,那么就可以提升農(nóng)作物的產(chǎn)量,更好地管理環(huán)境中的雜草。

Aarhus 大學(xué)信號處理研究小組與南丹麥大學(xué)合作,發(fā)布了一個用于該任務(wù)的數(shù)據(jù)包,其中包括處于不同生長階段的 12 個物種(共計 960 種植物)的圖像。[1][2]

植物樣本之一:「繁縷」樣本

這個公開的數(shù)據(jù)庫由注釋的 RGB 圖像組成,其物理分辨率大約為每毫米 10 像素。

為了對使用該數(shù)據(jù)庫得到的分類結(jié)果進(jìn)行標(biāo)準(zhǔn)化評估,組織者提供了基于 F1 值的對比基準(zhǔn),你可以通過如下鏈接獲得這個數(shù)據(jù)集:https://vision.eng.au.dk/plant-seedlings-dataset/。[13]

下圖是一個表示了該數(shù)據(jù)集中 12 類植物的樣本:

圖片來源:https://vision.eng.au.dk/plant-seedlings-dataset/

下面為大家介紹這一圖像分類任務(wù),該任務(wù)可以分為五個步驟

第一步:

在大多數(shù)機器學(xué)習(xí)任務(wù)中,我們首先要做的(也是最重要的任務(wù))就是在使用算法之前分析數(shù)據(jù)集。這一步驟之所以重要,是因為它能夠讓我們對數(shù)據(jù)集的復(fù)雜度有深入的了解,這最終將有助于算法的設(shè)計。

圖像和類別的分布情況如下:

正如文中所提到的,該數(shù)據(jù)集共包含 4750 張從屬于 12 個類別的植物圖片。然而,如上圖所示,這種分布是不均勻的,各種類別的植物分布從最多 654 張圖像到最少 221 張圖像。很顯然數(shù)據(jù)是不平衡的,我們需要對數(shù)據(jù)進(jìn)行平衡處理,以便獲得最佳的分類效果。本文將在第三步中討論這個問題。

每個類的圖像分布

為了更好地理解數(shù)據(jù),對圖像進(jìn)行可視化處理十分重要。因此,我們將每類植物的示例圖片展示了出來,以便看到圖像之間的差異。

上面這些圖片看上去實在太像了,以至于我們不能直接看出什么信息。因此,我決定使用 t 分布隨機鄰域嵌入(https://lvdmaaten.github.io/tsne/)可視化技術(shù)來查看圖片的分布。

t 分布隨機鄰域嵌入(t—SNE)是一種特別適合對高維數(shù)據(jù)集進(jìn)行可視化的降維技術(shù)。這種技術(shù)可以通過「Barnes-Hut」近似算法來實現(xiàn),這使得它能夠被應(yīng)用于大型的真實數(shù)據(jù)集。[14]

數(shù)據(jù)集的t-SNE可視化結(jié)果

仔細(xì)觀察之后,我們幾乎看不出類別之間的區(qū)別。因此,知道僅僅是人類難以區(qū)分這個數(shù)據(jù),還是機器學(xué)習(xí)模型也很難區(qū)分這個數(shù)據(jù)很重要。所以,我們將為此做一個基本的對比基準(zhǔn)。

訓(xùn)練集和驗證集

在開始建立模型的對比基準(zhǔn)前,我們需要將數(shù)據(jù)劃分為訓(xùn)練數(shù)據(jù)集和驗證數(shù)據(jù)集。在原始測試集上測試模型之前,驗證集起到了測試數(shù)據(jù)集的作用。所以,一個模型基本上是在訓(xùn)練數(shù)據(jù)集上進(jìn)行訓(xùn)練,在驗證集上進(jìn)行測試,隨著時間的推移,模型在驗證集上的性能將會提升。

一旦我們對驗證集上的測試結(jié)果感到滿意,我們就可以在真實的測試集上應(yīng)用該模型。通過這種方式,可以看出模型是否在驗證集上發(fā)生欠擬合或過擬合現(xiàn)象,這可以幫助我們更好地擬合模型。

我們將包含 4750 張圖片的數(shù)據(jù)集的 80% 作為訓(xùn)練集,另外 20% 作為驗證集。

訓(xùn)練集和驗證集的劃分

第二步:

當(dāng)獲得了訓(xùn)練集和驗證集之后,我們將開始使用數(shù)據(jù)集的對比基準(zhǔn)。正如所見,這是一個分類問題:給定測試集,我們需要將圖片歸類到 12 個類別中的某一類。我們將使用卷積神經(jīng)網(wǎng)絡(luò)(CNN)來完成這項任務(wù)。

「如果你是一位初學(xué)者,需要對深度學(xué)習(xí)術(shù)語有更深的了解,請訪問如下博客:https://medium.com/@shridhar743/a-beginners-guide-to-deep-learning-5ee814cf7706」

事實上,有許多方法可以創(chuàng)建卷積神經(jīng)網(wǎng)絡(luò)(CNN)模型,我們將使用 Keras 深度學(xué)習(xí)程序庫來實現(xiàn)第一個對比基準(zhǔn)。我們還將使用 Keras 中提供的預(yù)訓(xùn)練好的模型,這些模型已經(jīng)利用 ImageNet 數(shù)據(jù)集訓(xùn)練過,我們將對其進(jìn)行調(diào)優(yōu)以滿足任務(wù)需求。

從頭開始訓(xùn)練一個卷積神經(jīng)網(wǎng)絡(luò)(CNN)的效率相當(dāng)?shù)拖拢覀儗⒗迷诎?1000 類圖像的 ImageNet 上預(yù)訓(xùn)練好的卷積神經(jīng)網(wǎng)絡(luò)(CNN)的權(quán)重,然后通過將某些層保持為「凍結(jié)」?fàn)顟B(tài),再將一些層解凍并進(jìn)行訓(xùn)練,從而進(jìn)行調(diào)優(yōu)。這是因為,最上面的層學(xué)習(xí)到簡單的基本特征,而我們不需要對其進(jìn)行訓(xùn)練,可以直接將它們應(yīng)用到我們的任務(wù)中。需要注意的一點是,我們要檢查數(shù)據(jù)集是否與 ImageNet 類似,以及我們的數(shù)據(jù)集規(guī)模有多大。這兩個特征將決定我們?nèi)绾芜M(jìn)行調(diào)優(yōu)。如果你想了解更多的細(xì)節(jié),請參閱 Andrej Karpathy 的博客(https://medium.com/@karpathy)。

在植物幼苗檢測比賽的環(huán)境下,數(shù)據(jù)集規(guī)模很小,但是與 ImageNet 有些相似之處。因此,我們可以首先直接使用 ImageNet 的權(quán)重,僅僅在對比基準(zhǔn)的基礎(chǔ)上添加一個能夠?qū)?12 個類進(jìn)行分類的最終輸出層。接著,我們將逐漸解凍一些模型底部的層,并僅僅對這些解凍的層進(jìn)行訓(xùn)練。

由于 Keras 庫提供了大量預(yù)訓(xùn)練好的模型,我們采用 Keras 為對比基準(zhǔn)進(jìn)行初始化。具體而言,我們將使用 ResNet50 和 InceptionResNetV2 這兩個模型。很重要的是,我們需要用一個簡單模型和一個非常高端的模型對數(shù)據(jù)集進(jìn)行基準(zhǔn)測試,以便發(fā)現(xiàn)給定模型是否產(chǎn)生了欠擬合和過擬合。

Keras 庫提供的在 ImageNet 上預(yù)訓(xùn)練好的模型

圖片來源:https://keras.io/applications/

此外,我們還可以檢測這些模型在 ImageNet 數(shù)據(jù)集上的性能,查看 Keras 中每個模型(https://keras.io/applications/)的參數(shù)個數(shù),從而選擇對比基準(zhǔn)模型。

圖片來源:https://keras.io/applications/

在第一個基準(zhǔn)測試中,我刪除了最后的輸出層,并添加了一個能夠?qū)?12 個類別進(jìn)行分類的最終輸出層。此外,我將總結(jié)出的模型運行結(jié)果和參數(shù)的個數(shù)打印了出來,下圖是最后幾層網(wǎng)絡(luò)的信息截圖:

我在模型的最后添加了一個全連接層,構(gòu)建了第一個對比基準(zhǔn)

我共將該模型運行了 10 輪,而實驗結(jié)果在第 6 輪之后就飽和了。訓(xùn)練的準(zhǔn)確率為 88%,驗證的準(zhǔn)確率則為87%。

為了進(jìn)一步提升模型的性能,我們解凍了一些模型底部的層,并且令其學(xué)習(xí)率呈指數(shù)形式遞減,像這樣,我們訓(xùn)練了更多的層。這個操作使模型性能提高了 2%。

訓(xùn)練了模型底部幾層之后得到的實驗結(jié)果

此外,在這個過程中,我們使用的超參數(shù)總結(jié)如下:

第三步:

一旦準(zhǔn)備好了對比基準(zhǔn),我們就需要開始對其進(jìn)行改進(jìn)。首先,我們可以進(jìn)行數(shù)據(jù)增強處理,增加數(shù)據(jù)集中的圖像數(shù)。

沒有數(shù)據(jù),就沒有機器學(xué)習(xí)!

但是正如上文所述,我們得到的數(shù)據(jù)集是不平衡的,我們需要對其進(jìn)行平衡化處理,從而使用于訓(xùn)練模型的每一批的數(shù)據(jù)中都有均勻分布的 12 類圖像。

現(xiàn)實生活中的數(shù)據(jù)集往往都是不平衡的,而模型在樣本數(shù)量較少的類別上的性能并不太好。所以,將一個具有少數(shù)樣本的類誤分類為一個樣本數(shù)量較多的類的成本通常要比將數(shù)量較多的類誤分類高得多。

由此,我們嘗試使用兩種方法來平衡數(shù)據(jù):

針對不平衡學(xué)習(xí)的自適應(yīng)樣本合成方法(ADASYN):ADASYN 為樣本較少的類生成合成的數(shù)據(jù),這種方法會生成更多較難學(xué)習(xí)的數(shù)據(jù)集樣本。

ADASYN 的核心思想是,根據(jù)學(xué)習(xí)的困難程度,對樣本數(shù)少的類別實例使用加權(quán)分布。ADASYN 通過兩種方法提高了對數(shù)據(jù)分布的學(xué)習(xí)效果:(1)減少類別的不平衡所帶來的偏差。(2)自適應(yīng)地將分類的決策邊界轉(zhuǎn)換為更困難的樣本。[5]

少數(shù)類過采樣技術(shù)(SMOTE):SMOTE 包括對少數(shù)類的過采樣和多數(shù)類的欠采樣,從而得到最佳抽樣結(jié)果。

我們對少數(shù)(異常)類進(jìn)行過采樣并對多數(shù)(正常)類進(jìn)行欠采樣的做法可以得到比僅僅對多數(shù)類進(jìn)行欠采樣更好的分類性能(在 ROC 空間中)。[6]

重抽樣結(jié)果示意圖[7]

在此用例中,可以證明 SMOTE 算法的結(jié)果更好,因此 SMOTE 的性能優(yōu)于 ADASYN 算法。當(dāng)數(shù)據(jù)集處于平衡狀態(tài)后,我們就可以繼續(xù)進(jìn)行數(shù)據(jù)增強工作。

我們可以通過許多途徑實現(xiàn)數(shù)據(jù)增強,其中最重要的一些方法如下:

縮放

裁剪

反轉(zhuǎn)

旋轉(zhuǎn)

平移

加入噪音

改變光照條件

使用 GAN 這樣的先進(jìn)技術(shù)

第四步:

接下來,我們將進(jìn)一步提升模型結(jié)果。在這里,我們將對學(xué)習(xí)率進(jìn)行優(yōu)化,這里涉及到周期性學(xué)習(xí)率(cyclical learning rate)和帶熱重啟的學(xué)習(xí)率(learning rate with warm restarts)技術(shù)。在此之前,我們需要為模型找到可能的最佳學(xué)習(xí)率。這是通過繪制學(xué)習(xí)率和損失函數(shù)的關(guān)系圖來實現(xiàn)的,這一圖像用來查看損失函數(shù)值從哪里開始下降。

本文描述了一種設(shè)定學(xué)習(xí)率的新方法——周期性學(xué)習(xí)率,它實際上讓我們不必再通過大量實驗找到全局學(xué)習(xí)率的最優(yōu)值和最佳學(xué)習(xí)計劃。這種方法并不是單調(diào)地減小學(xué)習(xí)率,而是讓學(xué)習(xí)率周期性地在合理的邊界值之間變化。利用周期性學(xué)習(xí)率代替固定的學(xué)習(xí)率進(jìn)行訓(xùn)練,能夠有效地在不用進(jìn)行調(diào)優(yōu)的情況下提升分類準(zhǔn)確率,需要的迭代次數(shù)往往也更少。[11]

學(xué)習(xí)率和損失函數(shù)的關(guān)系示意圖

如上圖所示,0.1 看上去似乎是一個不錯的學(xué)習(xí)率。但是隨著越來越接近全局最小值,我們希望用更小的步長對最佳學(xué)習(xí)率進(jìn)行探索。「學(xué)習(xí)率退火」是一種實現(xiàn)這種操作的方法,受到這篇論文(https://arxiv.org/pdf/1608.03983.pdf)的影響,我選擇使用帶熱重啟的學(xué)習(xí)率。同時,我們將優(yōu)化器從 Adam 變?yōu)殡S機梯度下降(SGD),實現(xiàn)了帶重啟策略的隨機梯度下降(SGDR)。

接下來,我們可以使用上述技術(shù)訓(xùn)練一些模型架構(gòu),然后將這些模型得到的結(jié)果進(jìn)行合并。這也就是所謂的模型集成,如今它已經(jīng)成為一種流行技術(shù),但是這種技術(shù)也將帶來高昂的計算開銷。

因此,我決定使用一種名為快照集成(snapshot ensembling)的技術(shù),通過訓(xùn)練一個單一神經(jīng)網(wǎng)絡(luò)來達(dá)到集成目的,并且沿著優(yōu)化路徑收斂到幾個局部最小值,最終將模型參數(shù)保存下來。

左圖:使用傳統(tǒng)學(xué)習(xí)率計劃的隨機梯度下降優(yōu)化示意圖。在訓(xùn)練結(jié)束時,模型收斂到一個最小值處

右圖:快照集成示意圖。模型經(jīng)歷了幾個學(xué)習(xí)率退火周期,在從多個局部最小值中逃離出來后,收斂到某最小值處。我們?yōu)闇y試時集成的每一個最小值建立了一個快照。

圖片來源:https://arxiv.org/abs/1704.00109

當(dāng)學(xué)習(xí)率被固定下來后,我開始調(diào)整圖像的大小。我訓(xùn)練了一個針對于 64*64 圖像大小的模型(在 ImageNet 上對其進(jìn)行調(diào)優(yōu)),解凍某些層,對其應(yīng)用周期性學(xué)習(xí)率和快照集成技術(shù),獲得該模型的權(quán)重。將圖像的尺寸改為 299*299,并且再次利用圖像大小為 64*64 的權(quán)重對其進(jìn)行調(diào)優(yōu),并采用快照集成技術(shù)和帶熱重啟的學(xué)習(xí)率。

如果改變圖像的大小,需要再次采用周期性學(xué)習(xí)率、快照集成、熱重啟等技術(shù)尋找學(xué)習(xí)率和損失函數(shù)之間的關(guān)系,獲得最佳學(xué)習(xí)率。

第五步:

在最后一步,我們將對結(jié)果進(jìn)行可視化,看看模型對哪個類別的預(yù)測結(jié)果最好、對哪個類別的預(yù)測結(jié)果最差,并且我們還可以采取必要的措施進(jìn)一步改進(jìn)結(jié)果。

構(gòu)造一個混淆矩陣是理解模型結(jié)果的好方法。

在機器學(xué)習(xí)領(lǐng)域,特別是統(tǒng)計分類問題中,混淆矩陣(也稱為誤差矩陣)是一個特定的表格,它能夠?qū)⑺惴ǖ男阅芸梢暬?,這種算法通常是監(jiān)督學(xué)習(xí)算法,在非監(jiān)督學(xué)習(xí)領(lǐng)域它通常被稱為匹配矩陣。矩陣中的每一行代表預(yù)測類別中的一個實例,而每一列則代表真實類別中的一個實例(反之亦然)。這個矩陣之所以被稱為「混淆矩陣」,是因為它能夠讓人很容易地看到系統(tǒng)是否混淆了兩個類(即通常將一個類錯誤標(biāo)記為另一個類)。

混淆矩陣中真正的類別和預(yù)測出的類別

從混淆矩陣中我們可以看到所有的模型預(yù)測類別和真實類別不符的情況,我們可以采取措施去改進(jìn)模型。例如,可以做更多的數(shù)據(jù)增強工作,試著讓模型更好地學(xué)習(xí)到分類規(guī)則。

最后,我們將驗證集與訓(xùn)練數(shù)據(jù)合并,并通過已經(jīng)得到的超參數(shù),對模型進(jìn)行最后一次訓(xùn)練,在最終提交結(jié)果之前對測試數(shù)據(jù)集進(jìn)行評估。

本文模型在最終提交后名列第一

請注意:訓(xùn)練中使用的數(shù)據(jù)增強結(jié)果需要在測試集中顯示出來,以獲得可能得到的最佳結(jié)果。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 圖像分類
    +關(guān)注

    關(guān)注

    0

    文章

    93

    瀏覽量

    12002
  • 機器學(xué)習(xí)
    +關(guān)注

    關(guān)注

    66

    文章

    8460

    瀏覽量

    133420
  • 數(shù)據(jù)集
    +關(guān)注

    關(guān)注

    4

    文章

    1212

    瀏覽量

    24998

原文標(biāo)題:圖像分類比賽中,你可以用如下方案舉一反三

文章出處:【微信號:worldofai,微信公眾號:worldofai】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    電源產(chǎn)品設(shè)計總是很難?教你輕松舉一反三

    通過結(jié)合實際的應(yīng)用案例對抽象的知識點進(jìn)行講解,旨在重點幫助和教會聽眾在實際的電源產(chǎn)品設(shè)計怎樣正確地應(yīng)用這些知識點,怎樣讓這些知識點融會貫通,舉一反三,是門實踐性很強的電源設(shè)計學(xué)習(xí)課程。
    的頭像 發(fā)表于 03-05 18:11 ?0次閱讀

    請問做圖像處理可以用k210嗎?

    圖像處理可以用k210嗎?
    發(fā)表于 03-19 08:29

    [推薦學(xué)技術(shù)定要懂得觸類旁通,舉一反三

      通常搞技術(shù)的人,都說白頭發(fā)早早的就冒出來了,其實也沒有那么嚴(yán)重,站在個技術(shù)人的角度去看問題,其實學(xué)技術(shù)定要懂得觸類旁通,舉一反三,首先些基本的電子基礎(chǔ),數(shù)字電路,模
    發(fā)表于 06-01 11:02

    2012年參加電子類比賽所獲榮譽小顯擺下嘻嘻

    土包子也要去大城市看看,也要給我們的學(xué)校證明我們是可以的,苦心人天不負(fù),在分賽區(qū)的比賽我們東北省排名第四,順利進(jìn)入國家賽,車子跑向終點的時候我哭了,我抑制不住自己的感情,我們對待這
    發(fā)表于 01-07 21:38

    電子類比賽時間

    全國各種電子類比賽時間安排表,求哪位大神總結(jié)下給我
    發(fā)表于 11-29 16:39

    舉一反三數(shù)字,***

    舉一反三數(shù)字,***解釋《六六無窮打數(shù)字》加 高 手 解 釋 交 流 討 論QQ群:288~986~748 每 期 第 時 間 解釋 機會不等人 .O70期 解 釋 高 手
    發(fā)表于 06-16 13:33

    類比解釋激式電源原理

    變換,不承擔(dān)存儲能量的任務(wù),唯的存儲能量就是我們力求不斷要減少的勵磁能量而已。如下個典型的激式電源原理圖激式電源,是先把能量存儲在
    發(fā)表于 07-01 06:00

    種新的圖像定位和分類系統(tǒng)實現(xiàn)方案

    首先簡單介紹了圖像定位和分類系統(tǒng)的基本概念。然后分析了幾種圖像定位和分類系統(tǒng)的實現(xiàn)方式與性能。在此基礎(chǔ)上,提出了種新型
    發(fā)表于 07-30 16:29 ?25次下載

    AT89C52電子鐘四位按鍵可以用

    AT89C52電子鐘四位按鍵可以用
    發(fā)表于 12-08 17:23 ?19次下載

    圖像其實是種波,可以用波的算法處理圖像

    前幾天讀到篇文章,它提到圖像其實是種波,可以用波的算法處理圖像。我頓時有種醍醐灌頂?shù)母杏X,
    的頭像 發(fā)表于 01-05 10:44 ?1.1w次閱讀

    簡單好上手的圖像分類教程!

    簡單好上手的圖像分類教程!構(gòu)建圖像分類模型的個突破是發(fā)現(xiàn)卷積神經(jīng)網(wǎng)絡(luò)(CNN)可以用來逐步地提
    的頭像 發(fā)表于 05-31 16:36 ?8319次閱讀
    簡單好上手的<b class='flag-5'>圖像</b><b class='flag-5'>分類</b>教程!

    類比解釋激式電源原理資料下載

    電子發(fā)燒友網(wǎng)為提供類比解釋激式電源原理資料下載的電子資料下載,更有其他相關(guān)的電路圖、源代碼、課件教程、中文資料、英文資料、參考設(shè)計、用戶指南、解決
    發(fā)表于 03-27 08:43 ?17次下載
    <b class='flag-5'>一</b>個<b class='flag-5'>類比</b>解釋<b class='flag-5'>反</b>激式電源原理資料下載

    文看懂電感可以用大的替換小的嗎

    文看懂電感可以用大的替換小的嗎 編輯:谷景電子 電感是種特別重要的電感元件,對于電路的運行穩(wěn)定電感是非常重要的。只要電路的電感出現(xiàn)質(zhì)量的問題或者出現(xiàn)損壞,就會引起電路故障。在這種
    的頭像 發(fā)表于 01-13 21:56 ?1012次閱讀

    電路的電感是否可以用大電感替換小電感

    電子發(fā)燒友網(wǎng)站提供《電路的電感是否可以用大電感替換小電感.docx》資料免費下載
    發(fā)表于 01-22 09:28 ?0次下載

    谷景告訴貼片電感可以用什么代替

    “貼片電感可以用什么代替”這是近來被問的比較多的個問題。貼片電感作為電子電路中非常重要的種電子元器件,它的品質(zhì)和性能對于設(shè)備的運行有著直接影響。那么,電子電路的貼片電感
    的頭像 發(fā)表于 05-27 10:36 ?938次閱讀