Java 如何在android中处理tensorflow lite输入的图像?
我做了什么? 我正在研究图像分类问题。我已经用python训练了我的CNN模型,然后将它转换成Tensorflow Lite,用于我的android应用程序。我已经用python测试了tensorflow lite模型,并将结果与keras模型结果进行了比较。两者都是相同的,这意味着我转换为Tensorflow lite是正确的 在python中,我读取图像的代码如下所示。我没有在这张图片上做任何标准化或任何其他操作。只是调整它的大小并预测它Java 如何在android中处理tensorflow lite输入的图像?,java,python,android,machine-learning,tensorflow-lite,Java,Python,Android,Machine Learning,Tensorflow Lite,我做了什么? 我正在研究图像分类问题。我已经用python训练了我的CNN模型,然后将它转换成Tensorflow Lite,用于我的android应用程序。我已经用python测试了tensorflow lite模型,并将结果与keras模型结果进行了比较。两者都是相同的,这意味着我转换为Tensorflow lite是正确的 在python中,我读取图像的代码如下所示。我没有在这张图片上做任何标准化或任何其他操作。只是调整它的大小并预测它 image_array_abnormal = np.
image_array_abnormal = np.array([resize(imread('/content/path/abnormal2.png'), (137, 310, 3))])
图像_数组_形状为:
(1, 137, 310, 3)
以下是我对tensorflow lite的输入和输出详细信息:
问题
但当我尝试在android中使用我的模型时,它并没有给出预期的准确性。我认为我的图像或tensorflow lite模型的输入数据有问题。
在android中,我只是使用opencv从drawable读取图像,将其存储在Mat中,将其转换为位图,并将其传递到tensorflow中进行预测,如下所示:
Mat src = Utils.loadResource(this, R.drawable.abnormal2);
Bitmap dst = Bitmap.createBitmap(src.width(), src.height(), Bitmap.Config.ARGB_8888);
classifier = new Classifier(activity, "model.tflite", "labels.txt");
results = classifier.recognizeImage(dst);
对于分类器类,我遵循分类器类
我需要什么帮助?
我很困惑。我知道我在图像输入方面犯了错误,但正确的方法是什么?实际上,我必须如何处理图像才能将其用作模型的输入?看起来您自己在Python中训练图像分类。如果您可以完全访问培训数据集,我建议使用TF Lite Model Maker和ML Model Binding来培训并将TF Lite模型集成到您的Android应用程序中。我会比现在的道路容易得多。看看这个视频。 回到您的问题,有几个原因可能导致这些问题:
你看过所有的Classifier.java文件了吗?在底部有一个loadImage函数,它执行特定的计算,以便将位图预搜索到TensorImage。里面有裁剪、调整大小和旋转。。。。如果这些都是错误的…那么你会有奇怪的结果!。所以,回答我这个问题,我将发布一个如何正确操作的答案是的,我已经看到了loadimage函数。我不需要标准化、旋转或裁剪我的图像,这就是我没有使用该功能的原因。对不起,你没有提到没有使用该方法。我认为您所处的位置是正确的…位图没有正确加载以运行推断。如果有可能的话,上传项目的链接进行调试。我已经在一定程度上解决了我的问题。不,唯一的问题是准确性并不完全相同。虽然它接近原始的准确度。如何解决这个问题?我们必须复制……这是一个浮动模型。我没有用python规范化我的图像。在没有标准化的情况下对图像训练我的模型。所以我认为android也不需要标准化。你能试着使用上面视频中的Model Maker和ML Model Binding,而不是编写自己的培训代码吗?训练模型时不规范输入图像是很少见的,因此我怀疑训练中的预处理与Android应用程序中的预处理之间存在差异。Android studio的版本仅适用于MAC。我没有苹果。实际上,我的图像是信号。这些信号被转换成clip并被标准化。正常化后,我们保存了它们。图像已经标准化。我们不需要在python或android中对它们进行规范化,android Studio是跨平台的。您可以下载Android Studio 4.1 Beta 1 for Windows或Linux,它将具有相同的功能。