训练VOC格式数据集时导入Annotations出现:IndexError:too many indices for array

出现的问题:
在这里插入图片描述

这里是从xml文件中读取的bounding boxes(也就是xml中的bndbox)出现了问题:
从datasets.py文件找到这个函数
在这里插入图片描述读取到的boxes信息是空的,也就是读取不到标定框的两个角的位置信息:
在这里插入图片描述
回头看了一下datasets.py这个脚本,发现手动写入的class_names是大写,改成小写之后就可以正常读入bndbox数据了。
改前:
在这里插入图片描述
改后:在这里插入图片描述

debug流程:
将train.py中的batch_size设为1,训练集的DataLoader中shuffle设为False
在这里插入图片描述这样就可以按照txt中的文件顺序逐张图片导入,方便后续检查

如果根据上述说明仍然存在bug,那么就要查看一下xml文件是不是有问题
可以利用labelImg软件进行verify强制转换,再进行测试。
例如:
在这里插入图片描述
verify转换后:
在这里插入图片描述这样操作之后导入的数据是可以正常训练的,反正我是没问题了。
如果要大批量处理的话可以自行写一个脚本,用软件转换效率太低。

第一次发帖子,写得不太好,反正你懂意思就好啦,谢谢各位指正!

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
将darknet格式数据集转为VOC格式数据集需要以下步骤和注意事项: 1. 首先,确保你已经下载了darknet格式数据集,并且了解其文件结构。darknet格式数据集通常包含一个文件夹用于存放图像,以及一个txt文件用于存放图像的标注信息,如目标的类别、边界框坐标等。 2. 创建一个新的文件夹,用于存放VOC格式数据集。新的文件夹中通常包含三个子文件夹:Annotations(用于存放xml格式的标注文件),JPEGImages(用于存放图像文件),以及ImageSets(用于存放训练、验证和测试的图像文件列表)。 3. 遍历darknet数据集中的每一张图像。将图像文件复制到VOC数据集的JPEGImages文件夹中。 4. 对于每张图像,根据对应的txt文件中的标注信息,创建一个相应的xml文件。这个xml文件应该包含图像的尺寸信息、目标的类别、边界框坐标等。 5. 将创建的xml标注文件保存到VOC数据集的Annotations文件夹中。 6. 在ImageSets文件夹中创建一个文本文件,用于记录训练、验证和测试的图像文件的文件名(不带文件扩展名)。 7. 根据你的需求,可以选择将图像文件随机划分为训练、验证和测试集,或者按照一定比例划分。 8. 最后,将处理后的图像文件名列表保存到对应的训练、验证和测试的txt文件中,并存放在ImageSets/Main/文件夹中。 需要注意的是,darknet和VOC格式数据集之间的差异在于标注文件的格式VOC使用xml格式保存目标的类别、边界框坐标等信息,而darknet使用txt文本文件保存。因此,在转换格式,需要根据VOC的xml格式创建对应的标注文件,并将相关信息从darknet的txt文件中提取出来保存到xml文件中。同,还需要将图像文件和标注文件保存到相应的文件夹中,并生成对应的训练、验证和测试集的文件列表。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值