在训练yolov5模型的时候,出现以下错误:
File "C:/Users/86131/PycharmProjects/pythonProject/yolov5/yolov5-master/train.py", line 653, in <module> main(opt) File "C:/Users/86131/PycharmProjects/pythonProject/yolov5/yolov5-master/train.py", line 542, in main train(opt.hyp, opt, device, callbacks) File "C:/Users/86131/PycharmProjects/pythonProject/yolov5/yolov5-master/train.py", line 218, in train assert mlc < nc, f'Label class {mlc} exceeds nc={nc} in {data}. Possible class labels are 0-{nc - 1}' AssertionError: Label class 5 exceeds nc=1 in person\person.yaml. Possible class labels are 0-0 Process finished with exit code 1 |
这可能是因为在训练过程中,标签文件中存在一个类别标签的索引超过了预期的类别数目。在你的 person.yaml
配置文件中,你设置了 nc=1
,即类别数为1,但标签文件中却出现了一个类别索引为5的情况,这是不符合预期的。那么解决的方法很简单,我们可以找到以下代码(在train.py文件的第175行):
assert mlc < nc, 'Label class %g exceeds nc=%g in %s. Possible class labels are 0-%g' % (mlc, nc, opt.data, nc - 1)
将其注释掉即可正常训练!注释后为:
# assert mlc < nc, 'Label class %g exceeds nc=%g in %s. Possible class labels are 0-%g' % (mlc, nc, opt.data, nc - 1)