使用Mobilenet和Keras進行遷移學習!

人工智慧頻道發表於2018-11-20

使用Mobilenet和Keras進行遷移學習!


在這個筆記本中,我將向您展示使用Mobilenet對狗的影像進行分類的示例。然後,我將向您展示一個例子,它會把藍山雀的影像錯誤分類。然後,我將重新訓練Mobilenet並使用遷移學習,以便它可以正確地對相同的輸入影像進行分類。在這個過程中,僅使用了兩個分類器,但是這可以擴充套件到您想要的數量,僅限於您可用的硬體數量和時間。

Mobilenet的原始檔位於:https://arxiv.org/pdf/1704.04861.pdf

MobileNets:用於移動視覺應用的高效卷積神經網路。

我們使用Mobilenet,是因為它的架構很輕巧。它使用深度可分離的卷積,這基本上意味著它在每個顏色通道上都執行單個卷積,而不是將所有三個卷積相合並展平它。這具有過濾輸入通道的效果。或者正如本文作者清楚地解釋的那樣:“對於MobileNets,深度卷積對每個輸入通道應用單個濾波器。然後,逐點卷積應用1×1卷積來組合輸出深度卷積。標準卷積既可以在一個步驟中過濾並將輸入組合成一組新的輸出。深度可分離卷積將其分成兩層,一個用於過濾的單獨層一個用於組合的單獨層。這種因式分解具有顯著減少計算和模型大小的效果。”

使用Mobilenet和Keras進行遷移學習!

逐點和深度卷積之間的差異

所以Mobilenet的整體架構如下,有30層

  1. 步長為2的卷積層

  2. depthwise layer

  3. pointwise layer,使通道數加倍

  4. 步長為2的depthwise layer

  5. pointwise layer,使通道數加倍

等等

使用Mobilenet和Keras進行遷移學習!

Mobilenet完整架構

它的維護成本非常低,在高速下表現也非常好。還有許多型別的預訓練模型,其儲存器中的網路大小和磁碟上使用的引數數量成比例。網路的速度和功耗與MACs (Multiply-Accumulates)的數量成正比,後者是融合乘法和加法運算數量的度量。

使用Mobilenet和Keras進行遷移學習!


現在讓我們來看看程式碼!

我的全部程式碼:https://github.com/ferhat00/Deep-Learning/tree/master/Transfer%20Learning%20CNN

讓我們載入必要的包和庫。

使用Mobilenet和Keras進行遷移學習!


我們從Keras輸入預先訓練的模型。

使用Mobilenet和Keras進行遷移學習!


讓我們嘗試下對不同品種的狗的影像進行一些測試。

使用Mobilenet和Keras進行遷移學習!


使用Mobilenet和Keras進行遷移學習!


使用Mobilenet和Keras進行遷移學習!


輸出:

使用Mobilenet和Keras進行遷移學習!


使用Mobilenet和Keras進行遷移學習!


使用Mobilenet和Keras進行遷移學習!


使用Mobilenet和Keras進行遷移學習!


輸出:

使用Mobilenet和Keras進行遷移學習!


使用Mobilenet和Keras進行遷移學習!


使用Mobilenet和Keras進行遷移學習!


使用Mobilenet和Keras進行遷移學習!


輸出:

使用Mobilenet和Keras進行遷移學習!


到現在為止還挺好。它很好地分類了每一種狗,那麼接下來讓我們試一種鳥類藍色的山雀來看看。

使用Mobilenet和Keras進行遷移學習!


使用Mobilenet和Keras進行遷移學習!

藍雀

使用Mobilenet和Keras進行遷移學習!


輸出:

使用Mobilenet和Keras進行遷移學習!


你可以看到它無法識別藍山雀。它錯誤地將影像歸類為小雞。這是一種原產於北美的本土鳥類,並且有微妙的不同:

使用Mobilenet和Keras進行遷移學習!

山雀

現在讓我們操縱Mobilenet架構,重新訓練前幾個層並使用遷移學習。要做到這一點,我們需要用一些影像訓練它。在這裡,我將用藍山雀和烏鴉的影像進行訓練。但是,不是手動下載它們的影像,而是使用谷歌影像搜尋並拉動影像。要做到這一點,我們可以匯入一個很好的包。

檢視https://github.com/hardikvasa/google-images-download

使用Mobilenet和Keras進行遷移學習!


讓我們現在重新使用MobileNet,因為它非常輕巧(17Mb),讓我們新增和訓練前幾個層。注意我只會訓練兩個分類器,藍山雀和烏鴉。

使用Mobilenet和Keras進行遷移學習!


使用Mobilenet和Keras進行遷移學習!


讓我們檢查一下模型架構

使用Mobilenet和Keras進行遷移學習!


我們將使用預先訓練的權重,因為已經在Imagenet資料集上訓練了模型。我們確保所有權重都是不可訓練的,只訓練最後幾層密集層。

使用Mobilenet和Keras進行遷移學習!


現在讓我們將訓練資料載入到ImageDataGenerator中。指定路徑,它會自動傳送批量訓練資料,簡化程式碼。

使用Mobilenet和Keras進行遷移學習!


編譯模型。現在讓我們訓練吧。在GTX1070 GPU上花費不到兩分鐘。

使用Mobilenet和Keras進行遷移學習!


使用Mobilenet和Keras進行遷移學習!


該模型現已接受訓練。 現在讓我們測試一些獨立的輸入影像來檢查預測。

使用Mobilenet和Keras進行遷移學習!


輸出:

使用Mobilenet和Keras進行遷移學習!


正如你所看到的,它正確地預測了烏鴉的影像,因為藍山雀的影像被註釋掉了。

使用Mobilenet和Keras進行遷移學習!

烏鴉

這可以進一步擴充套件到更多的影像,更多數量的分類器可以更好地推廣,但它是實現CNN遷移學習的最輕量級的方法和最快捷的方式。這當然取決於您想要實現模型的速度、準確程度和硬體,以及您有多少時間可用。


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31545819/viewspace-2220773/,如需轉載,請註明出處,否則將追究法律責任。

相關文章