如何向TFLite Model Maker目标检测数据集添加无标注框图片并解决报错
无标注负样本图片添加方法及训练作用说明
一、正确添加无标注框图片的方案
报错原因是TFLite Model Maker的目标检测数据加载逻辑没有处理空标注字段的场景,会强制尝试把CSV里对应坐标位置的空值转换为浮点数,所以直接使用AutoML文档里全空字段的写法会触发类型转换错误,有两种可行的解决方法:
- 方法一:调整CSV格式+修改加载源码
对于无标注的负样本图片,可单独设置专属类别标记,比如__negative__,CSV行里的坐标字段统一填0作为占位,避免出现空值,然后修改数据加载的源码,在处理坐标转换前先判断类别,如果是负样本标记就直接跳过当前行的标注处理,不给对应图片加任何标注框即可。
负样本CSV行示例:
对应代码修改参考:TRAIN,gs://folder/im3.png,__negative__,0,0,0,0,0,0,0,0# 在原有的坐标转换代码前增加负样本判断逻辑 if line[2] == "__negative__": continue xmin, ymin = float(line[3]) * width, float(line[4]) * height - 方法二:绕开CSV解析直接添加负样本
如果不想修改官方源码,也可以单独整理所有负样本的路径,在正常加载完带标注的正样本数据集之后,手动把负样本图片(标注为空)追加到数据集对象中,不需要走CSV解析流程。
二、无目标图片对训练的作用
这类没有任何待检测目标的负样本对模型训练有明确的正向作用:
- 能有效降低模型的假阳性率,避免模型把背景中的无关物体误识别为待检测类别
- 尤其适配检测场景背景复杂、易出现混淆物体的情况,比如要检测桌面上的水杯,加入大量没有水杯的桌面背景图,能帮模型更好地区分目标和背景
- 负样本数量不需要太多,控制在总样本量的10%~30%即可,过多的负样本可能会导致模型漏检概率升高。
内容的提问来源于stack exchange,提问作者topher217
相关产品推荐
相关产品推荐

