AssertionError: Label class 1 exceeds nc=1 in data/Person.yaml

文章讲述了在运行Yolov5程序时遇到的AssertionError,该错误源于标签文件中的类别定义错误。作者发现类别的索引值超出了nc=1的限制。为了解决问题,作者提供了使用Python脚本批量将标签文件中的类别全部改为0的方法,适用于只有一个类别的场景。
摘要由CSDN通过智能技术生成

问题:运行yolov5程序时,报错信息如下:

AssertionError: Label class 1 exceeds nc=1 in data/Person.yaml

报错原因:

通过借鉴各位大佬的经验,发现是标签文件中的标签定义错误,当初打标签的时候,输错了类别名称,索引值变成了1。

解决:

将标签文件中的类别全改为0.

批量修改代码如下:(适用于只有一个类别)

import os
 
path = r'D:\jiafeng\middle\labels\train' #需改的txt文件的路径
filenames = os.listdir(path) #将所有txt文件的文件名用filename储存起来
 
for filename in filenames: #遍历所有txt文件
    position = path + '\\' + filename #获取绝对路径 '\\'有一个斜杠是转义符
    # print(position) #此行代码不注释可用于检查绝对路径是否正确
 
    with open(position) as f:
        lines = f.readlines() #以行为单位读取txt文件中的内容
        s = [line[:-1].split(' ') for line in lines] #以空格为标志分割txt中每行的内容,并以列表的方式储存在s中
        # print(s) #取消注释可以看是否成功分行分元素储存
 
        for i in range(len(s)): #遍历s的每一行
            # print(s[i][0]) #取消注释可看每一行的第一个元素是多少
            if s[i][0] == '1':
                s[i][0] = '0' #如果每一行的第一个元素为1,也就是分类的标签为1,则将其修改成0
                # print(s) #取消注释可查看是否成功将第一列全修改为0
                # print(len(s[i]))
 
            with open(position,'w',encoding='utf-8') as f: #将修改完的s写入到txt文件当中
                for j in range(len(s)): #此处采用先按行读取,再按列一个一个元素读取
                    for k in range(len(s[j])):
                        f.write((s[j][k]+' ')) #写入的每一个元素都以空格隔开,因此需要+' '
                    f.write("\n") #写完一行之后需要换行

参考:yolov5运行时显示AssertionError:Label class 1 exceeds nc = 1 in data/middle.yaml._assertionerror: data.yaml 'names:' field missing_凤酱的博客-CSDN博客

YOLO系列是基于深度学习的端到端实时目标检测方法。 PyTorch版的YOLOv5轻量而高性能,更加灵活和易用,当前非常流行。 本课程将手把手地教大家使用labelImg标注和使用YOLOv5训练自己的数据集。课程实战分为两个项目:单目标检测(足球目标检测)和多目标检测(足球和梅西同时检测)。  本课程的YOLOv5使用ultralytics/yolov5,在Windows和Ubuntu系统上分别做项目演示。包括:安装YOLOv5、标注自己的数据集、准备自己的数据集(自动划分训练集和验证集)、修改配置文件、使用wandb训练可视化工具、训练自己的数据集、测试训练出的网络模型和性能统计。 除本课程《YOLOv5实战训练自己的数据集(Windows和Ubuntu演示)》外,本人推出了有关YOLOv5目标检测的系列课程。请持续关注该系列的其它视频课程,包括:《YOLOv5(PyTorch)目标检测:原理与源码解析》课程链接:https://edu.csdn.net/course/detail/31428《YOLOv5目标检测实战:Flask Web部署》课程链接:https://edu.csdn.net/course/detail/31087《YOLOv5(PyTorch)目标检测实战:TensorRT加速部署》课程链接:https://edu.csdn.net/course/detail/32303《YOLOv5目标检测实战:Jetson Nano部署》课程链接:https://edu.csdn.net/course/detail/32451《YOLOv5+DeepSORT多目标跟踪与计数精讲》课程链接:https://edu.csdn.net/course/detail/32669《YOLOv5实战口罩佩戴检测》课程链接:https://edu.csdn.net/course/detail/32744《YOLOv5实战中国交通标志识别》课程链接:https://edu.csdn.net/course/detail/35209 《YOLOv5实战垃圾分类目标检测》课程链接:https://edu.csdn.net/course/detail/35284  
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值