使用TensorFlow Lite Model Maker训练出现label_map属性错误如何解决
问题根因
报错触发的核心原因是object_detector.DataLoader.from_csv没有成功加载数据集,返回了None值,导致后续执行train_data.label_map时调用空对象的属性失败。
排查与解决方案
- 验证存储路径与访问权限
你使用了GCS路径加载CSV,首先确认当前Colab运行账号拥有gs://zmlcoral/存储桶的读取权限。可在Colab单元格执行以下命令验证资源是否可访问:
若命令执行报错,可将CSV和关联的标注图片转存到Colab本地磁盘,改用本地路径加载数据集。!gsutil ls gs://zmlcoral/strips/export_data-untitled_1629418661144-2021-08-20T01:44:38.803321Z/image_object_detection_1.csv - 校验CSV格式是否符合要求
TensorFlow Lite Model Maker的目标检测CSV数据集必须包含以下字段,字段名不能修改:image_uri:标注对应的图片存储路径,相对路径或绝对路径需确保可正常访问label:目标的类别名称xmin、ymin、xmax、ymax: bounding box的归一化坐标,取值范围为0~1,不可直接填写像素坐标
同时需要检查CSV无空行、无缺失字段的标注项,所有标注对应的图片资源都可正常读取。
- 增加数据集加载校验逻辑
在数据集加载代码后新增校验,提前识别加载失败问题,避免后续逻辑报错:train_data, validation_data, test_data = object_detector.DataLoader.from_csv('你的CSV路径') # 新增校验代码 if train_data is None: raise ValueError("数据集加载失败,请检查路径与CSV格式") print(f"训练集样本量:{len(train_data)},类别总数:{len(train_data.label_map)}") - 手动指定数据集拆分比例
若你的数据集标注总量较小,默认拆分逻辑可能导致训练集分配为空。可手动控制拆分比例,避免该问题:# 先加载全量数据集 all_data = object_detector.DataLoader.from_csv('你的CSV路径') # 按7:2:1拆分训练、验证、测试集 train_data, rest_data = all_data.split(0.7) validation_data, test_data = rest_data.split(0.67)
内容的提问来源于stack exchange,提问作者allen
相关产品推荐
相关产品推荐

