概述 移動端所說的AI,通常是指“機器學習”。 定義:機器學習其實就是研究電腦怎樣模擬人類的學習行為,以獲取新的知識或技能,並重新組織已有的知識結構使之不斷改善自身。從實踐的意義上來說,機器學習是一類從數據中自動分析獲得規律,並利用規律對未知數據進行預測的演算法。 目前,機器學習已經有了十分廣泛的應 ...
概述
移動端所說的AI,通常是指“機器學習”。
定義:機器學習其實就是研究電腦怎樣模擬人類的學習行為,以獲取新的知識或技能,並重新組織已有的知識結構使之不斷改善自身。從實踐的意義上來說,機器學習是一類從數據中自動分析獲得規律,並利用規律對未知數據進行預測的演算法。
目前,機器學習已經有了十分廣泛的應用,如:數據挖掘、電腦視覺、自然語言處理、語音和手寫識別、生物特征識別、搜索引擎、醫學診斷、檢測信用卡欺詐、證券市場分析、DNA序列測序、戰略游戲與機器人運用。
機器學習
機器學習包含了幾個重要元素:數據集、AI演算法、AI模型,如下圖:
通過訓練,得到最終的AI模型,可以做什麼?如下圖:
預測結果的準確性取決於模型的判斷合理性(即演算法的準確性與合理性、數據特征各參數的正確性)
移動端現狀
Android端,谷歌提供的面向Android和iOS設備的跨平臺人工智慧SDK: ML Kit
iOS端,蘋果提供的用於iOS設備的機器學習軟體開發工具包:Core ML
ML Kit與 Core ML功能對比,如下:
ML Kit
1、跨平臺,支持Android與iOS
2、支持模型雲托管
3、支持模型離線本地化
4、使用*.tflite 模型文件
5、系統版本要求Android 4.1 + , iOS 9.0 +
Core ML
1、非跨平臺,僅支持iOS
2、不支持模型雲托管
3、支持模型離線本地化
4、使用*.mlmodel模型文件
5、系統版本要求iOS 11+
AI 模型
現階段,機器學習模型推理框架較多,常用的如:TensorFlow、keras、Caffe等。
通過訓練產生的模型文件種類也較多,包括:.pb、.ckpt、.caffemodel、.h5、.pkl等格式。
移動端受設備限制,不能支撐常規模型運算:
1、記憶體、存儲空間較小,模型不能複雜;
2、運算能力差,不如專門的伺服器,只能使用相對簡單的運演算法;
3、電力有限,不適合長時間運算;
所以,移動設備使用AI時,需要將框架已訓練模型文件轉為Android與iOS能識別的.tflite、.mlmodel模型文件。
模型轉換
下麵列出幾個主流的模型框架與對應的轉換工具(本處只列出主流轉換工具,第三方平臺也有很多轉換工具)
Toco示例:
toco --input_file=$(pwd)/mobilenet_v1_1.0_224/frozen_graph.pb \
--input_format=TENSORFLOW_GRAPHDEF \
--output_format=TFLITE \
--output_file=/tmp/mobilenet_v1_1.0_224.tflite \
--inference_type=FLOAT \
--input_type=FLOAT \
--input_arrays=input \
--output_arrays=MobilenetV1/Predictions/Reshape_1 \
--input_shapes=1,224,224,3
tflite_convert示例:
tflite_convert --output_file=/home/yourname/Documents/tensorflow/images/500pics2/model/my_model.tflite --keras_model_file=/home/yourname/Documents/tensorflow/images/500pics2/model/my_model.h5
Core ML Tools示例:
import coremltools
coreml_model = coremltools.converters.caffe.convert('XXX.caffemodel')
coreml_model.save('XXX.mlmodel')
官方已提供的模型與API
谷歌:
官網:https://firebase.google.com/docs/ml-kit/
蘋果:
ML Kit的使用
谷歌的ML Kit是與Firebase移動開發平臺完全集成的機器學習模塊,可用於iOS和Android,移動端集成示意圖,如下:
總結
本篇文章僅為說明AI的基礎概念,讓大家對移動端AI有一定的認識。
文章中概念性的內容較多,如有描述不當的地方,請指出,多謝。
後續,會繼續更新Android與iOS AI相關的使用。