“如何将单个图像传递给Tensorflow Lite”

时间:2019-10-10 11:25:39

标签: tensorflow-lite tensorflow-android

我想制作一个使用移动相机捕获图像并将该图像传递给tensorflow lite进行分类的应用程序。

2 个答案:

答案 0 :(得分:1)

您可以使用TensorImage(来自org.tensorflow.lite.support.image)。它具有TensorBufferBitmapint []float []的构造函数。

因此,假设您有一个名为myImage的图像,并且在myContext上下文中运行,则可以使用以下代码在myModel.tflite模型上运行tflite解释器:

// create tflite options (currently empty) and load the tf model
Interpreter.Options tfliteOptions = (new Interpreter.Options());
tfliteModel = FileUtil.loadMappedFile(myContext, "myModel.tflite");

// create tflite interpreter
tfliteInterpreter = new Interpreter(tfliteModel, tfliteOptions);

// get model parameters (index tensor is 0 for a single image)
DataType myImageDataType = tfliteInterpreter.getInputTensor(0).dataType();
myTensorImage = new TensorImage(myImageDataType);

// load bitmap
myTensorImage.load(myImage);

// run inference
tfliteInterpreter.run(myTensorImage.getBuffer(), output);

如果图像输入以字节为单位,则可以使用TensorBuffer的{​​{1}},其余部分相同。

请注意,我没有指定解释器ByteBuffer

您还可以使用output作为输出,可以轻松地为您提供TensorBufferByteBufferint []数组。

希望这会有所帮助:)

答案 1 :(得分:0)

如果您是经验丰富的人,则可以遵循@somethingorange提到的方法。

如果您是初学者,并且想要在Mobile上开发图像分类应用程序,请遵循以下方法。例如,您尝试开发一个模型来对给定图像是Cat还是Dogs进行分类。

  1. 收集类的数据(CatsDogs的图像)
  2. 制作两个文件夹,一个用于存放猫的图像,另一个用于存放狗的图像
  3. 使用任何预训练的模型通过转移学习方法来开发分类模型
  4. 训练模型并保存模型
  5. 将模型转换为tflite格式(model.tflite
  6. 使用类的名称创建label.txt
  7. model.tflitelabel.txt移动到Android Studio中的资产文件夹。

最好的是,上述所有步骤都是TFLite小组在this tutorial中提到的,这是一个很好的起点。

希望这些步骤对初学者有所帮助。