box[:, [0,2]] = box[:, [0,2]]*nw/iw + dx IndexError: too many indices for array

与世无争的帅哥 提交于 2020-02-06 20:12:37
generator_output = next(self._generator)
  File "train.py", line 175, in data_generator
    image, box = get_random_data(annotation_lines[i], input_shape, random=True)
  File "F:\yolo\keras-yolo3-voc\yolo3\utils.py", line 109, in get_random_data
    box[:, [0,2]] = box[:, [0,2]]*nw/iw + dx
IndexError: too many indices for array

关于Keras实现yolo v3的数据集错误

在文件夹的根目录中,运行voc_annotation.py文件会生成yolo格式对应的数据集格式,生成2007_train,2007_val,2007_trainval三个文件。
但是我在没有改变voc_annotation.py源代码的情况下生成了三个文件。但是打开其中的2007_train.txt文件会发现,有的图片后面并没有bbox数据,像这样
2007_train.txt文件
刚开始我以为是不是代码有些bug.我自己手动把bbox的信息手动添加上了!!!!像这样。
在这里插入图片描述

但这样不会增加训练集数据的图片数量,不会增加数据集数据的利用率!反而造成以下错误:

    generator_output = next(self._generator)
  File "train.py", line 175, in data_generator
    image, box = get_random_data(annotation_lines[i], input_shape, random=True)
  File "F:\yolo\keras-yolo3-voc\yolo3\utils.py", line 109, in get_random_data
    box[:, [0,2]] = box[:, [0,2]]*nw/iw + dx
IndexError: too many indices for array

解决办法

错误原因是你添加的bbox信息维度超过了array的索引,不用添加空的bbox信息,错误解决!

错误原因

这个我没有查到官方的解释,但是我个人认为,在所有的训练数据集中,bbox的数量应该是一定的。如果某一张图片的bbox数量过多,在整个训练数据集bbox数量一定的情况下,有些图片就没有分配bbox。所有就会存在数据集有些没有bbox信息。

仅个人观点,如有错误请指正!

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!