我想制作一个使用移动摄像头捕获图像并将此图像传递给 tensorflow lite 以对图像中的内容进行分类的应用程序。
问问题
2655 次
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
用作输出,它可以轻松地为您提供ByteBuffer
、int []
或float []
数组。
希望这可以帮助 :)
于 2020-04-11T12:37:16.043 回答
0
如果您有经验,可以按照@somethingorange 提到的方法进行操作。
如果您是初学者并想在移动设备上开发图像分类应用程序,请遵循以下方法。例如,您正在尝试开发一个模型来分类给定图像是Cat
还是Dogs
。
- 收集您班级的数据(
Cats
和的图片Dogs
) - 创建两个文件夹,一个用于猫的图像,另一个用于狗的图像
- 使用任何预训练模型通过迁移学习方法开发分类模型
- 训练模型并保存模型
- 将模型转换为 tflite 格式 (
model.tflite
) label.txt
使用类的名称创建- 将
model.tflite
andlabel.txt
移至 Android Studio 中的 assets 文件夹。
最好的事情是 TFLite 团队在本教程中提到了上述所有步骤,这是一个很好的起点。
希望这些步骤对初学者有所帮助。
于 2020-05-11T03:23:43.677 回答