Tensorflow SDK 与 MLKit SDK

Tensorflow SDK vs MLKit SDK

我们有一个奇怪的问题需要帮助解决。 这是场景: 我们有一个使用 Tensorflow SDK 的原生 android 应用程序和一个识别不同鱼类的 tflite 模型。当从相机捕获输入时,此解决方案会产生不同的结果,但当使用相机胶卷中的图片时,它的效果非常好,并为我们提供了不同鱼类的稳定概率。

我们还有一个原生 iOS 应用程序,它使用 Google 的 MLKit 和相同的 tensorflow lite 模型,这表现非常好,但在某些图片上它完全没有达到目标。

如果我们从相机胶卷加载相同的图片并通过 android 应用程序和 iOS 应用程序上的解释器 运行 它,我们会得到完全不同的结果,但仅限于一些物种。

有没有人解释为什么我们可以在两个应用程序和同一张图片中使用相同的 tflite 模型得到如此不同的结果?

MLKit SDK 和 Tensorflow SDK 之间是否存在可能导致此类行为的差异?

此致, 克里斯蒂安

可能有几个原因。

  1. TFLite 运行时版本。 ML Kit 自定义模型还在底层使用 TFLite,您可以在 Pod 依赖项中找到 TFLite 运行时版本。确保您在测试中使用相同的 TFLite 版本。

  2. 图像处理。您发送到 ML Kit SDK 或 TFLite SDK 的图像总是比模型输入大得多,因此调整大小甚至图像旋转将在 运行 模型之前执行。不同平台可能使用不同的库进行图像处理,结果可能略有不同。但细微的不同可能会导致模型输出不同的结果。这可能是因为该模型对于某些物种来说有点不稳定。您可以尝试发送与模型预期图像 format/size/orientation 完全相同的图像,这样两个平台都不会触发图像处理,看看是否有帮助。