使用TFLite Model Maker加载Pascal VOC训练报错train_data大小为0如何解决
问题原因与修复方案
报错核心原因是from_pascal_voc方法未读取到任何有效标注数据,导致训练集样本数为0,具体问题和修复步骤如下:
- 路径不匹配问题
你拆分数据集的代码是将图片和XML标注文件共同存放在C:/Users/user/Desktop/GradProject5/train_test_split/train和test目录下,未单独创建image、xml子目录,但加载数据时拼接了image/、xml/路径,程序在不存在的目录下找不到任何文件。
修复方案可直接修改数据加载代码的路径参数:
# 补充定义缺失的train_image_dir,修正路径拼写、转义问题 train_image_dir='C:/Users/user/Desktop/GradProject5/train_test_split/train/' test_image_dir='C:/Users/user/Desktop/GradProject5/train_test_split/test/' # 直接传入同时存放图片和XML的训练、测试目录即可 train_data=object_detector.DataLoader.from_pascal_voc( images_dir=train_image_dir, annotations_dir=train_image_dir, label_map={1:"pill",2:"text"} ) test_data=object_detector.DataLoader.from_pascal_voc( images_dir=test_image_dir, annotations_dir=test_image_dir, label_map={1:"pill",2:"text"} )
- 路径拼写与转义问题
原代码中test_image_dir存在两处路径错误:
- 目录名拼写错误:拆分数据集用的是
GradProject5,原加载代码写的是GradProject,缺少后缀5 - 路径转义错误:路径中混用正斜杠和反斜杠,
\train中的\t会被识别为制表符,导致路径失效,统一使用正斜杠即可避免该问题
- 数据加载有效性验证
修改完路径后,先执行以下代码确认数据加载是否成功:
print(len(train_data))
如果输出仍为0,继续排查以下问题:
- 检查XML标注文件中的
<name>标签内容,必须和label_map中定义的pill、text完全一致,大小写、拼写不能有偏差 - 确认原始数据集目录下没有非jpg格式的图片,避免复制XML时后缀替换错误
- 检查拆分后的train目录下,每个jpg文件都对应存在同名的xml文件
内容的提问来源于stack exchange,提问作者jyoung
相关产品推荐
相关产品推荐

