1

我想制作一个使用移动摄像头捕获图像并将此图像传递给 tensorflow lite 以对图像中的内容进行分类的应用程序。

4

2 回答 2

1

您可以使用TensorImage(来自 org.tensorflow.lite.support.image)。它具有 a TensorBuffer、 a Bitmap、 anint []或的构造函数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's ByteBuffer,其余部分相同。

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

您也可以TensorBuffer用作输出,它可以轻松地为您提供ByteBufferint []float []数组。

希望这可以帮助 :)

于 2020-04-11T12:37:16.043 回答
0

如果您有经验,可以按照@somethingorange 提到的方法进行操作。

如果您是初学者并想在移动设备上开发图像分类应用程序,请遵循以下方法。例如,您正在尝试开发一个模型来分类给定图像是Cat还是Dogs

  1. 收集您班级的数据(Cats和的图片Dogs
  2. 创建两个文件夹,一个用于猫的图像,另一个用于狗的图像
  3. 使用任何预训练模型通过迁移学习方法开发分类模型
  4. 训练模型并保存模型
  5. 将模型转换为 tflite 格式 ( model.tflite)
  6. label.txt使用类的名称创建
  7. model.tfliteandlabel.txt移至 Android Studio 中的 assets 文件夹。

最好的事情是 TFLite 团队在本教程中提到了上述所有步骤,这是一个很好的起点。

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

于 2020-05-11T03:23:43.677 回答