您好,登錄后才能下訂單哦!
這篇文章將為大家詳細(xì)講解有關(guān)如何使用Mobilenet和Keras進(jìn)行遷移學(xué)習(xí),文章內(nèi)容質(zhì)量較高,因此小編分享給大家做個參考,希望大家閱讀完這篇文章后對相關(guān)知識有一定的了解。
我將向您展示使用Mobilenet對狗的圖像進(jìn)行分類的示例。然后,我將向您展示一個例子,它會把藍(lán)山雀的圖像錯誤分類。然后,我將重新訓(xùn)練Mobilenet并使用遷移學(xué)習(xí),以便它可以正確地對相同的輸入圖像進(jìn)行分類。在這個過程中,僅使用了兩個分類器,但是這可以擴(kuò)展到您想要的數(shù)量,僅限于您可用的硬件數(shù)量和時間。
Mobilenet的源文件位于:https://arxiv.org/pdf/1704.04861.pdf
MobileNets:用于移動視覺應(yīng)用的高效卷積神經(jīng)網(wǎng)絡(luò)。
我們使用Mobilenet,是因?yàn)樗募軜?gòu)很輕巧。它使用深度可分離的卷積,這基本上意味著它在每個顏色通道上都執(zhí)行單個卷積,而不是將所有三個卷積相合并展平它。這具有過濾輸入通道的效果?;蛘哒绫疚淖髡咔宄亟忉尩哪菢樱骸皩τ贛obileNets,深度卷積對每個輸入通道應(yīng)用單個濾波器。然后,逐點(diǎn)卷積應(yīng)用1×1卷積來組合輸出深度卷積。標(biāo)準(zhǔn)卷積既可以在一個步驟中過濾并將輸入組合成一組新的輸出。深度可分離卷積將其分成兩層,一個用于過濾的單獨(dú)層一個用于組合的單獨(dú)層。這種因式分解具有顯著減少計(jì)算和模型大小的效果。”
逐點(diǎn)和深度卷積之間的差異
所以Mobilenet的整體架構(gòu)如下,有30層
步長為2的卷積層
depthwise layer
pointwise layer,使通道數(shù)加倍
步長為2的depthwise layer
pointwise layer,使通道數(shù)加倍
等等
Mobilenet完整架構(gòu)
它的維護(hù)成本非常低,在高速下表現(xiàn)也非常好。還有許多類型的預(yù)訓(xùn)練模型,其存儲器中的網(wǎng)絡(luò)大小和磁盤上使用的參數(shù)數(shù)量成比例。網(wǎng)絡(luò)的速度和功耗與MACs (Multiply-Accumulates)的數(shù)量成正比,后者是融合乘法和加法運(yùn)算數(shù)量的度量。
現(xiàn)在讓我們來看看代碼!
我的全部代碼:https://github.com/ferhat00/Deep-Learning/tree/master/Transfer%20Learning%20CNN
讓我們加載必要的包和庫。
我們從Keras輸入預(yù)先訓(xùn)練的模型。
讓我們嘗試下對不同品種的狗的圖像進(jìn)行一些測試。
輸出:
輸出:
輸出:
到現(xiàn)在為止還挺好。它很好地分類了每一種狗,那么接下來讓我們試一種鳥類藍(lán)色的山雀來看看。
藍(lán)雀
輸出:
你可以看到它無法識別藍(lán)山雀。它錯誤地將圖像歸類為小雞。這是一種原產(chǎn)于北美的本土鳥類,并且有微妙的不同:
山雀
現(xiàn)在讓我們操縱Mobilenet架構(gòu),重新訓(xùn)練前幾個層并使用遷移學(xué)習(xí)。要做到這一點(diǎn),我們需要用一些圖像訓(xùn)練它。在這里,我將用藍(lán)山雀和烏鴉的圖像進(jìn)行訓(xùn)練。但是,不是手動下載它們的圖像,而是使用谷歌圖像搜索并拉動圖像。要做到這一點(diǎn),我們可以導(dǎo)入一個很好的包。
查看https://github.com/hardikvasa/google-images-download
讓我們現(xiàn)在重新使用MobileNet,因?yàn)樗浅]p巧(17Mb),讓我們添加和訓(xùn)練前幾個層。注意我只會訓(xùn)練兩個分類器,藍(lán)山雀和烏鴉。
讓我們檢查一下模型架構(gòu)
我們將使用預(yù)先訓(xùn)練的權(quán)重,因?yàn)橐呀?jīng)在Imagenet數(shù)據(jù)集上訓(xùn)練了模型。我們確保所有權(quán)重都是不可訓(xùn)練的,只訓(xùn)練最后幾層密集層。
現(xiàn)在讓我們將訓(xùn)練數(shù)據(jù)加載到ImageDataGenerator中。指定路徑,它會自動發(fā)送批量訓(xùn)練數(shù)據(jù),簡化代碼。
編譯模型?,F(xiàn)在讓我們訓(xùn)練吧。在GTX1070 GPU上花費(fèi)不到兩分鐘。
該模型現(xiàn)已接受訓(xùn)練。 現(xiàn)在讓我們測試一些獨(dú)立的輸入圖像來檢查預(yù)測。
輸出:
正如你所看到的,它正確地預(yù)測了烏鴉的圖像,因?yàn)樗{(lán)山雀的圖像被注釋掉了。
烏鴉
這可以進(jìn)一步擴(kuò)展到更多的圖像,更多數(shù)量的分類器可以更好地推廣,但它是實(shí)現(xiàn)CNN遷移學(xué)習(xí)的最輕量級的方法和最快捷的方式。這當(dāng)然取決于您想要實(shí)現(xiàn)模型的速度、準(zhǔn)確程度和硬件,以及您有多少時間可用。
關(guān)于如何使用Mobilenet和Keras進(jìn)行遷移學(xué)習(xí)就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,可以學(xué)到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。