2018 年 3 月 30 日 — 由 Laurence Moroney 发表,开发者倡导者
什么是 TensorFlow Lite?TensorFlow Lite 是 TensorFlow 为移动设备和嵌入式设备提供的轻量级解决方案。它允许您在移动设备上以低延迟运行机器学习模型,因此您可以利用它们进行分类、回归或任何您想要的操作,而无需进行服务器往返。
它目前...
介绍 TensorFlow Lite — 编码 TensorFlow |
compile ‘org.tensorflow:tensorflow-lite:+’
完成此操作后,您可以导入 TensorFlow Lite 解释器。解释器加载模型并允许您通过提供一组输入来运行它。然后,TensorFlow Lite 将执行模型并写入输出,就这么简单。import org.tensorflow.lite.Interpreter;
要使用它,您需要创建一个解释器的实例,然后用 MappedByteBuffer 加载它。protected Interpreter tflite;
tflite = new Interpreter(loadModelFile(activity));
GitHub 上的 TensorFlow Lite 示例 中有一个为此提供的辅助函数。只需确保 getModelPath() 返回一个指向 assets 文件夹中文件的字符串,模型就应该加载。/** Memory-map the model file in Assets. */
private MappedByteBuffer loadModelFile(Activity activity) throws IOException {
AssetFileDescriptor fileDescriptor = activity.getAssets().openFd(getModelPath());
FileInputStream inputStream = new FileInputStream(fileDescriptor.getFileDescriptor());
FileChannel fileChannel = inputStream.getChannel();
long startOffset = fileDescriptor.getStartOffset();
long declaredLength = fileDescriptor.getDeclaredLength();
return fileChannel.map(FileChannel.MapMode.READ_ONLY, startOffset, declaredLength);
}
然后,要对图像进行分类,您只需要调用 Interpeter 上的 **run** 方法,将图像数据和标签数组传递给它,它将完成其余的工作。tflite.run(imgData, labelProbArray);
详细介绍如何从相机获取图像并将其准备用于 tflite 超出了本文的范围,但在 tensorflow github 中有一个完整的示例说明如何执行此操作。通过逐步浏览此示例,您可以了解它是如何从 gamera 获取图像、准备用于分类的数据以及如何通过将模型的加权输出优先级列表映射到标签数组来处理输出。适用于 Android 的 TensorFlow Lite — 编码 TensorFlow |
> git clone https://www.github.com/tensorflow/tensorflow
完成此操作后,您可以从 Android Studio 中的 /tensorflow/contrib/lite/java/demo 文件夹打开 TensorFlow 示例项目。/** Classifies a frame from the preview stream. */
private void classifyFrame() {
if (classifier == null || getActivity() == null || cameraDevice == null) {
showToast(“Uninitialized Classifier or invalid context.”)
return;
}
Bitmap bitmap = textureView.getBitmap(
classifier.getImageSizeX(), classifier.getImageSizeY());
String textToShow = classifier.classifyFrame(bitmap);
bitmap.recycle();
showToast(textToShow);
}
在这里您可以看到位图被加载并调整为分类器所需的适当大小。然后,classifyFrame() 方法将返回包含与图像匹配的前 3 个类的列表及其权重的文本。
2018 年 3 月 30 日 — 由 Laurence Moroney 发表,开发者倡导者
什么是 TensorFlow Lite?TensorFlow Lite 是 TensorFlow 为移动设备和嵌入式设备提供的轻量级解决方案。它允许您在移动设备上以低延迟运行机器学习模型,因此您可以利用它们进行分类、回归或任何您想要的操作,而无需进行服务器往返。
它目前...