亦余心之所善兮,虽九死其犹未悔。这篇文章主要讲述如何使用tensorflow for mobile,开发环境为android studio相关的知识,希望能为你提供帮助。
目前要做一个基于图片识别的安卓app,撇开ui的部分,首先要做的就是在android上把tensorflow跑起来。
在android上使用tensorflow有两种方式:
- tensorflow for mobile,较为成熟,包含的功能方法多。
- tensorflow lite,是1的升级版,目前处于开发者预览阶段,优势是体积小性能有优化。是未来的趋势。
第一步,在android studio里添加tensorflow的library引用。
有三种方式
鉴于网络没问题,所以我直接使用第一种方式(Include the jcenter AAR which contains it):
在
build.gradle
里添加依赖compile \'org.tensorflow:tensorflow-android:+\'
即可第二步,调用tensorflow接口进行使用。
官网的代码:
// Load the model from disk.
TensorFlowInferenceInterface inferenceInterface =
new TensorFlowInferenceInterface(assetManager, modelFilename);
// Copy the input data into TensorFlow.
inferenceInterface.feed(inputName, floatValues, 1, inputSize, inputSize, 3);
// Run the inference call.
inferenceInterface.run(outputNames, logStats);
// Copy the output Tensor back into the output array.
inferenceInterface.fetch(outputName, outputs);
根本看不懂这些参数要怎么设定,不过可以用官方的example,所以就直接copy了图片识别的code
【如何使用tensorflow for mobile,开发环境为android studio】拷贝这两个文件就可以了:Classifier.java和TensorFlowImageClassifier.java
第三步,进行识别。
// 用model创建一个分类器。
final Classifier classifier = TensorFlowImageClassifier.create(
getAssets(),
MODEL_FILE,
LABEL_FILE,
INPUT_SIZE,
IMAGE_MEAN,
IMAGE_STD,
INPUT_NAME,
OUTPUT_NAME);
// 加载图片
final Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.noodle);
// 识别图片
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
List<
Classifier.Recognition>
results = classifier.recognizeImage(bitmap);
for(Classifier.Recognition result : results) {
tv.setText(tv.getText().toString() + "\\r\\n" + result.getTitle());
}
}
});
至此,成功在android手机跑起了tensorflow的库,真的是很简单好用。
PS:图片的部分遇到arrayOutOfIndex问题就是这个原因了。
推荐阅读
- Android 开发,你遇上 Emoji 头疼吗()
- Linux命令参数
- 注册表打开项,本文教您如何通过注册表防范某些开机打开项
- 蓝屏代码0x0000050,本文教您怎样处理蓝屏代码0x0000050
- 贴吧小尾巴怎样设置,本文教您贴吧小尾巴怎样设置
- 如何删除ie浏览器,本文教您ie浏览器如何删除
- 打开项管理,本文教您电脑开机打开项怎样设置
- 桌面图标显示不正常,本文教您桌面图标显示不正常怎样处理
- 怎样给文件夹设置密码,本文教您文件夹怎样设置密码