文章學習《MobileNet教程:用TensorFlow搭建在手機上執行的影象分類器》

NO IMAGE

本文僅是博主為記錄和加深印象所整理,有興趣請閱讀原文。

原文地址:
https://baijia.baidu.com/s?id=1574323979283055&wfr=pc&fr=ch_lst&utm_source=tuicool&utm_medium=referral

移動端執行神經網路成了明顯的趨勢,Google的MobileNet框架可以完成這樣的功能。

MobileNet非常非常 小,快,準,易除錯。

以前和現在,在移動端的深度學習網路都是在雲端完成,比如將一幅圖片通過網路傳送到遠端伺服器進行分類,分類結果再返回手機。
隨著手機計算能力增加,架構的改善網路複雜度的下降,以及對反應速度的要求,本地學習是跟好的選擇。

1、MobileNets是什麼

MobileNet是Google研究的一類卷積神經網路,計算消耗小,執行速度快,適合在移動端是做應用。
MobileNet結構上主要是將3×3的卷積層分為一個3×3深度方向的卷積和一個1×1點對點的卷積。
具體細節和原因在論文:MobileNets: Efficient Convolutional Neural Networks for Mobile Vision Applications
https://arxiv.org/pdf/1704.04861.pdf

當然,好處總不能全讓你佔了,MobileNet的短板就是準確性不如那些大型的神經網路。但它是在功耗和效能中找到了良好的平衡點。

之後對比了 Inception V3和MobileNet的訓練和識別過程,MobileNet更快,訓練出的模型更小,但準確率要低。
訓練好後,將模型應用到Android App中,
目標:
1 在很小的特定資料上重新訓練MobileNet
2 測試集準確率達到95%以上
3 佔用CPU要小於5%

訓練是在電腦上完成的。
為了達到這些目標,我們的計劃是:

1生成一個新的訓練資料集;

2訓練多個MobileNet結構,從而尋找所能夠達到準確率目標(95%)的最小型網路;

使用Tensorflow中的Anfroid示例專案完成模型的搭載。可以從TensorFlow的repository下載這個Android示例專案:
git clone https://github.com/tensorflow/tensorflow.git –depth 1
具體的資料夾
tensorflow/examples/android。

用Android Studio開啟這個資料夾,編譯,然後把生成的APK安裝包搭載到你的手機上,你就得到了一個搭載著在ImageNet資料集上訓練出的Inception V3模型的影象分類器App,它能夠準確地把貓咪跟鴨嘴獸區分開來。
3與在Android上執行的Inception V3做對比;

4將TensorFlow上Android example App中的模型替換為我們的MobileNet;

5大量的測試;

6進行除錯,從而將CPU的佔用調到5%以下。