使用Mobilenet和Keras進行遷移學習!
在這個筆記本中,我將向您展示使用Mobilenet對狗的影像進行分類的示例。然後,我將向您展示一個例子,它會把藍山雀的影像錯誤分類。然後,我將重新訓練Mobilenet並使用遷移學習,以便它可以正確地對相同的輸入影像進行分類。在這個過程中,僅使用了兩個分類器,但是這可以擴充套件到您想要的數量,僅限於您可用的硬體數量和時間。
Mobilenet的原始檔位於:https://arxiv.org/pdf/1704.04861.pdf
MobileNets:用於移動視覺應用的高效卷積神經網路。
我們使用Mobilenet,是因為它的架構很輕巧。它使用深度可分離的卷積,這基本上意味著它在每個顏色通道上都執行單個卷積,而不是將所有三個卷積相合並展平它。這具有過濾輸入通道的效果。或者正如本文作者清楚地解釋的那樣:“對於MobileNets,深度卷積對每個輸入通道應用單個濾波器。然後,逐點卷積應用1×1卷積來組合輸出深度卷積。標準卷積既可以在一個步驟中過濾並將輸入組合成一組新的輸出。深度可分離卷積將其分成兩層,一個用於過濾的單獨層一個用於組合的單獨層。這種因式分解具有顯著減少計算和模型大小的效果。”
所以Mobilenet的整體架構如下,有30層
-
步長為2的卷積層
-
depthwise layer
-
pointwise layer,使通道數加倍
-
步長為2的depthwise layer
-
pointwise layer,使通道數加倍
等等
它的維護成本非常低,在高速下表現也非常好。還有許多型別的預訓練模型,其儲存器中的網路大小和磁碟上使用的引數數量成比例。網路的速度和功耗與MACs (Multiply-Accumulates)的數量成正比,後者是融合乘法和加法運算數量的度量。
現在讓我們來看看程式碼!
我的全部程式碼:https://github.com/ferhat00/Deep-Learning/tree/master/Transfer%20Learning%20CNN
讓我們載入必要的包和庫。
我們從Keras輸入預先訓練的模型。
讓我們嘗試下對不同品種的狗的影像進行一些測試。
輸出:
輸出:
輸出:
到現在為止還挺好。它很好地分類了每一種狗,那麼接下來讓我們試一種鳥類藍色的山雀來看看。
輸出:
你可以看到它無法識別藍山雀。它錯誤地將影像歸類為小雞。這是一種原產於北美的本土鳥類,並且有微妙的不同:
現在讓我們操縱Mobilenet架構,重新訓練前幾個層並使用遷移學習。要做到這一點,我們需要用一些影像訓練它。在這裡,我將用藍山雀和烏鴉的影像進行訓練。但是,不是手動下載它們的影像,而是使用谷歌影像搜尋並拉動影像。要做到這一點,我們可以匯入一個很好的包。
檢視https://github.com/hardikvasa/google-images-download
讓我們現在重新使用MobileNet,因為它非常輕巧(17Mb),讓我們新增和訓練前幾個層。注意我只會訓練兩個分類器,藍山雀和烏鴉。
讓我們檢查一下模型架構
我們將使用預先訓練的權重,因為已經在Imagenet資料集上訓練了模型。我們確保所有權重都是不可訓練的,只訓練最後幾層密集層。
現在讓我們將訓練資料載入到ImageDataGenerator中。指定路徑,它會自動傳送批次訓練資料,簡化程式碼。
編譯模型。現在讓我們訓練吧。在GTX1070 GPU上花費不到兩分鐘。
該模型現已接受訓練。 現在讓我們測試一些獨立的輸入影像來檢查預測。
輸出:
正如你所看到的,它正確地預測了烏鴉的影像,因為藍山雀的影像被註釋掉了。
這可以進一步擴充套件到更多的影像,更多數量的分類器可以更好地推廣,但它是實現CNN遷移學習的最輕量級的方法和最快捷的方式。這當然取決於您想要實現模型的速度、準確程度和硬體,以及您有多少時間可用。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31545819/viewspace-2220773/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 使用Keras和遷移學習從人臉影像中預測體重指數BMIKeras遷移學習
- keras實現MobileNetKeras
- 1.5 使用nvicat和kettle進行全量遷移
- 什麼是遷移學習?什麼時候使用遷移學習?遷移學習
- 神經風格遷移:使用 tf.keras 和 Eager Execution,藉助深度學習創作藝術作品Keras深度學習
- 使用Keras進行深度學習:(六)LSTM和雙向LSTM講解及實踐Keras深度學習
- 使用Keras進行深度學習:(五)RNN和雙向RNN講解及實踐Keras深度學習RNN
- 【火爐煉AI】深度學習006-移花接木-用Keras遷移學習提升效能AI深度學習Keras遷移學習
- 使用PyTorch進行主動遷移學習:讓模型預測自身的錯誤PyTorch遷移學習模型
- Python機器學習筆記:使用Keras進行迴歸預測Python機器學習筆記Keras
- 使用Conda Pack進行環境打包遷移
- 深度學習之遷移學習介紹與使用深度學習遷移學習
- 【火爐煉AI】深度學習009-用Keras遷移學習提升效能(多分類問題)AI深度學習Keras遷移學習
- 遷移學習系列---基於例項方法的遷移學習遷移學習
- COVID-19:利用Opencv, Keras/Tensorflow和深度學習進行口罩檢測OpenCVKeras深度學習
- 貓狗大戰--使用 “VGG16進行CIFAR10分類” 遷移學習實現遷移學習
- 遷移學習(Transfer Learning)遷移學習
- 使用dbeaver 用csv 檔案進行資料遷移
- 遷移學習幫大忙!成都理工大學搭建 SCDUNet++ 模型進行滑坡測繪遷移學習模型
- [譯] 利用 Keras 深度學習庫進行詞性標註教程Keras深度學習詞性標註
- 使用DistCp將Hadoop進行雲遷移時注意事項TCPHadoop
- 教程:使用遷移學習來解決影像問題!遷移學習
- 深度學習+深度強化學習+遷移學習【研修】深度學習強化學習遷移學習
- 使用 SVM 和決策樹進行整合學習
- 使用 AutoNLP 和 Prodigy 進行主動學習 - huggingface
- Velero系列文章(四):使用Velero進行生產遷移實戰
- 遷移學習基本原理遷移學習
- 基於VGG的遷移學習遷移學習
- [譯] TensorFlow 教程 #08 – 遷移學習遷移學習
- 遷移學習:該做的和不該做的事遷移學習
- 如何用 Python 和深度遷移學習做文字分類?Python遷移學習文字分類
- 機器學習:詳解遷移學習(Transfer learning)機器學習遷移學習
- 深度學習之PyTorch實戰(4)——遷移學習深度學習PyTorch遷移學習
- Python遷移學習:機器學習演算法Python遷移學習機器學習演算法
- 模擬Oracle行遷移和行連結Oracle
- 帶你用深度學習虛擬機器進行文字遷移學習(附程式碼)深度學習虛擬機遷移學習
- 使用Liquibase和Spring Boot進行資料庫遷移的一站式指南 - reflectoringUISpring Boot資料庫
- 遷移學習(ADDA)《Adversarial Discriminative Domain Adaptation》遷移學習AIAPT