You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Flutter开发的目标检测App无法正确显示物体名称如何修复

Flutter目标检测App识别结果错误修复方案

问题根因排查及修复步骤

  • 第一步:修正标签文件格式
    Google Teachable Machine默认导出的labels.txt文件每条标签前会自带数字序号、空格,还会保留平台默认的未被你删除的类别(比如你没删掉默认的「树」类别),这是最常见的识别结果完全错误的原因。
    操作方法:
    1. 打开assets/labels.txt,删除每条标签前的序号和空格,仅保留你自定义的类别名称
    2. 删除所有你训练时没有用到的默认类别(比如你只训练了笔记本、手机两类,就删掉其余所有行)
    3. 确认pubspec.yaml中已经正确声明了该标签文件的assets路径
  • 第二步:调整推理配置参数
    你当前的参数配置存在两处不合理:
    1. 置信度阈值设置过低:你当前threshold: 0.1,会把置信度仅10%以上的错误结果也输出,修改为threshold: 0.5,过滤低置信度的错误结果
    2. 图像旋转参数固定:你当前rotation: 90是硬编码,不同设备的摄像头传感器方向不同,输入图像方向错误会导致模型完全无法正确识别,可以依次尝试0/90/180/270四个值,找到适配你设备的旋转角度
      修改后的推理参数示例:
    var recognitions = await Tflite.runModelOnFrame(
      bytesList:  imgCamera!.planes.map((plane)
      {
        return plane.bytes;
      }).toList(),
      imageHeight: imgCamera!.height,
      imageWidth: imgCamera!.width,
      imageMean: 127.5,
      imageStd: 127.5,
      rotation: 90, // 替换为适配你设备的数值
      numResults: 2,
      threshold: 0.5, // 调整阈值
      asynch:true,
    );
    
  • 第三步:修复状态更新代码
    你当前的状态更新写法不规范,可能导致结果不刷新:
    原代码:
    setState(() {
      result;
    });
    
    修改为:
    setState(() {
      this.result = result;
    });
    
  • 第四步:核对训练数据集质量
    如果以上操作都完成后还是识别错误,检查训练数据集:
    1. 每类样本量是否不低于100张,覆盖不同光线、角度、背景的拍摄场景
    2. 训练时是否完成了足够的迭代轮次,没有出现欠拟合
    3. 导出模型时选择的是TensorFlow Lite的浮点数模型,和你代码里的预处理参数匹配

内容的提问来源于stack exchange,提问作者vj_15

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 02:27:03