小白也可以操作的手機TensorFlow教程:Android版和iOS版
AiTechYun
編輯:xiaoshan
TensorFlow通常用於訓練海量數據,但新興的智能手機市場也不可忽略。那些不能等待未來和love Machine Learning的人正在通過製造工具來突破界限,他們的目標是擁有數萬億美元的市場。
本教程使用了一個更穩定的Tensorflow版本,遵循這些步驟實現你的模型,並使用它們對移動設備進行優化。
我們將通過重新訓練incepa-v3模型的最終(瓶頸)層來創建一個圖像分類器,然後優化智能設備模型。
本教程只包含5-6個步驟:
步驟1:創建帶有TensorFlow的模型。
本教程嚴格專註於智能手機的實現模型,我推薦教程「在CPU上使用自定義圖像進行初始化」。所以我們最好在同一頁面,並在新目錄下用新訓練的模型開始操作。
教程地址:https://towardsdatascience.com/training-inception-with-tensorflow-on-custom-images-using-cpu-8ecd91595f26
僅供參考:數據模型的訓練包含類型的花是鬱金香,雛菊,向日葵,蒲公英和玫瑰花。
在這之後,你應該有兩個文件,其中一個包含了被選中網路的版本,其最後一層對你的類別進行了重新訓練:
另一個文件包含了文本標籤:
tf_files/retrained_labels.txt
步驟2:創建優化模型
運行以下命令提示符(保持路徑正確)
python -m tensorflow.python.tools.optimize_for_inference --input=tf_files/retrained_graph.pb --output=tf_files/optimized_graph.pb --input_names="input" --output_names="final_result"
它將創建一個新的優化模型文件
權衡
為了減少應用程序的預處理,同時減少庫的大小,tensorflow只支持在推理過程中常用的操作子集。不支持的操作包括tensorflow / contrib / makefile / tf_op_files.txt。
不支持操作地址:
https://github.com/tensorflow/tensorflow/blob/master/tensorflow/contrib/makefile/tf_op_files.txt
現在,要確保我們剛剛創建的任何圖形文件都包括如下可支持操作:
驗證
要確保你的新優化圖形正在運行,並且optimize_for_inference文件刪除了給定輸入和輸出集不需要的所有節點,但並不改變網路的輸出。
利用label_file比較retrained_graph.pb和optimized_graph.pb相同圖像的輸出。
在retrained_graph.pb上:
python -m scripts/label_image --graph=tf_files/retrained_graph.pb --image=tf_files/flower_photos/daisy/3475870145_685a19116d.jpg
在optimized_graph.pb上:
python -m scripts/label_image --graph=tf_files/optimized_graph.pb --image=tf_files/flower_photos/daisy/3475870145_685a19116d.jpg
一個一個地運行這些命令,如果兩個輸出都是相同的,那就意味著optimized_graph.pb完全創建。
步驟3:量化模型,然後壓縮
問題是模型的尺寸仍然很大,而且絕對不適合移動。因為,圖形中佔據的大部分空間都是由大塊浮點數的權值構成的。每一個權值都有一個稍微不同的浮點值,具有非常小的規律性。
但是壓縮工作是利用數據的規律性,這就解釋了失敗的原因。
量化有助於通過對網路的權值進行量化,以按因子減小神經網路的大小。這使得圖形中有了更多的repetition,這將對之後的壓縮中有很大的幫助。
現在使用quantize_graph腳本對圖形進行修改:
python -m scripts/quantize_graph --input=tf_files/optimized_graph.pb --output=tf_files/rounded_graph.pb --output_node_names=final_result --mode=weights_rounded
然後壓縮模型:
gzip -c tf_files/rounded_graph.pb > tf_files/rounded_graph.pb.gzgzip -l tf_files/rounded_graph.pb.gz
這將創建一個rounded_graph.pb文件。
你應該會看到壓縮的一些顯著改進。
注意:如果在運行quantize_graph時遇到任何錯誤,請下載該文件並將其粘貼到Tensorflow庫的tools/quantization /quantize_graph.py中。
從這裡開始,教程分為兩個部分:Android版和iOS版。
iOS
步驟4:添加TensorFlow-experimental pod
在pod文件中添加TensorFlow-experimental pod,它安裝了一個通用的二進位框架。這是在iOS中運行tensorflow最簡單的方法。
步驟5:創建應用程序
創建自己的應用程序或載入你在XCode中創建的應用程序。
在項目根目錄下添加一個名為Podfile的文件,其中包含以下內容:
運行。
開放YourProjectName.xcworkspace並添加你的代碼.
在應用程序的生成設置中,確保將I 添加到其他鏈接器標誌和標題搜索路徑部分。
步驟6:運行樣本
你將需要Xcode 7.3或稍後運行iOS示例。
在簡單、基準和相機方面,有三個示例。你可以複製該代碼。
代碼地址:https://github.com/tensorflow/tensorflow/tree/master/tensorflow/examples/ios#building-the-tensorflow-ios-libraries-from-source
另外,從tensorflow的根目錄下載Inception v1,並使用以下步驟將標籤和圖形文件提取到簡單的相機示例數據文件夾中:
更改為一個示例目錄,下載Tensorflow-experimental pod,並打開Xcode工作區。注意,安裝pod可能需要很長時間,因為它很大(~450MB)。如果想運行簡單的示例,那麼可以運行以下應用程序:
在XCode模擬器中運行這個簡單的應用程序。你應該會看到一個帶有運行模型按鈕的單屏幕應用程序。點擊它,你就會看到格Grace Hopper圖像。一旦你建立並運行它,你應該得到一個實時的相機視圖,你可以指向物體獲得實時的識別結果。
注意:我很確定我犯了一些錯誤,或者在iOS部分留下了一些東西。如果你有任何疑問,請瀏覽下面的官方鏈接。
網站地址:https://www.tensorflow.org/mobile/ios_build
現在,到了本文的Android部分。
Android
步驟4:設置Android Studio和測試運行
有兩種方法可以實現Android Studio和Bazel。我會用更多人熟悉的方法。
如果你還沒有安裝它,那麼就到這裡安裝它。
安裝地址:https://developer.android.com/studio/index.html
測試運行
為了檢查Android Studio中是否一切正常,我們要進行一次測試運行。
打開Android Studio和選擇「
到tensorflow-for-poets-2/android/tfmobile目錄下。
打開Build.gradle文件,同步等級。如果一切正常,單擊BUILD>BUILD APK按鈕。
現在,應該出現一個帶有app.apk文件的文件夾,將其複製到你的手機中並安裝它。同時,要記住打開手機的開發者模式。
步驟5:運行定製的應用程序
默認的應用程序是一個有1000個類別的Imagenet的分類圖像應用。
現在,運行定製的應用程序執行以下兩個步驟:
將模型文件添加到項目中。
現在,演示應用程序正在查看graph.pb文件。在android/tfmobile/assets中顯示的label.txt文件不在你的rounded_graph.pbandretrained_labels.txt上。
現在,用下面的命令替換這些文件,也可以手動執行。
cp tf_files/rounded_graph.pb android/tfmobile/assets/graph.pbcp tf_files/retrained_labels.txt android/tfmobile/assets/labels.txt
在ClassifierActivity.java文件中更改「output_name」。
我們的模型的輸出節點有一個不同的名稱:。按照下面的步驟開放 and 更新:
運行一遍,所有的一切就都完成了。
※人工智慧如何幫助加密貨幣交易者實現收益最大化?
※應賽技巧,教你如何在Kaggle比賽中排在前1%
TAG:ATYUN訂閱號 |