在 Flutter App 中集成自定义 TensorFlow Lite 模型:替换后对象检测不起作用

问题描述 投票:0回答:1

我正在尝试将使用 Teachable Machine 创建的自定义 TensorFlow Lite (TFLite) 模型集成到 Flutter 应用程序中。最初,我遵循 tflite_flutter 插件存储库中提供的活动对象检测示例,特别是 live_object_detection_ssd_mobilenet 示例。

我成功使用提供的模型 (ssd_mobilenet.tflite) 运行了示例,但是当我用自定义 TFLite 模型替换它时,应用程序停止正常运行。具体来说,它不再显示检测到的对象的边界框和统计信息。

以下是我采取的步骤:

  1. 下载并用我的自定义模型替换默认的 ssd_mobilenet.tflite 模型。
  2. 更新了 detection_service.dart 中的模型路径以指向我的自定义模型。
  3. 我检查了 Netron 并确保代码中的 mlModelInputSize 与训练期间使用的输入大小匹配(224 而不是默认的 300)。
class _DetectorServer {
  /// Input size of image (height = width = 300)
  static const int mlModelInputSize = 300;

  /// Result confidence threshold
  static const double confidence = 0.5;
  Interpreter? _interpreter;
  List<String>? _labels;

  _DetectorServer(this._sendPort);

  final SendPort _sendPort;

  ...
}

补充:

我是 tflite 的新手。我需要一个明确的指导来在我提供的示例中使用我自己的模型上面。如果您有与此问题相关的其他建议或知识,请告诉我。谢谢。

flutter tensorflow tensorflow-lite tflite
1个回答
0
投票

首先,您的模型是分类模型,而不是对象检测模型。因此,不存在边界框。在 Netron 中,您可以看到输出形状为 [1,29],这意味着有 29 个类。如果在推断模型后立即打印输出,您将获得每个类的概率,例如 [[0.002,0.004,0.5,....]]。

如果您需要训练用于对象检测的自定义模型,则需要使用带有边界框的带注释数据集来训练它。您可以搜索 Google Colab 笔记本,使用 SSD 移动网络或 yolo 之类的工具来训练带注释的数据。可教学机器仅用于分类模型。

© www.soinside.com 2019 - 2024. All rights reserved.