在用YOLOv7训练自己的数据过程中,遇到了一点问题,错误如下:
Traceback (most recent call last):
File "train.py", line 615, in <module>
train(hyp, opt, device, tb_writer)
File "train.py", line 250, in train
mlc = np.concatenate(dataset.labels, 0)[:, 0].max() # max label class
File "D:\ProgramFile\anaconda\envs\yoloV7Env\lib\site-packages\numpy\core\_method
s.py", line 40, in _amax
return umr_maximum(a, axis, None, out, keepdims, initial, where)
ValueError: zero-size array to reduction operation maximum which has no identity
在网上找了许多方法,都是标签归一化,或者标签类别错了。没有解决我的问题。
我的数据组织如下所示:
data.yaml的配置如下,其中只有一个类别。没错。
我的标签数据如下:
到这里都没错。
不知道问题出现在哪了。
最后发现我的训练数据中只有空标签数据,没有带标签的数据。出现类别不匹配的问题。改完之后就好了。
重要的事说三遍:注意标签、标签、标签。
检查训练数据和验证数据是否包含所有标签。
检查标签的个数和标签名是否相同。
如果用了模型结构的配置文件,检查里面标签个数改没改。