Yolov5遇到的若干问题

本文介绍了在使用Labelimg创建数据集时,类别标签需用英文小写的重要性,以及遇到XML文件转换问题时如何批量修改标签的Python代码。同时提到在Yolo数据加载和低显卡环境下可能出现的问题及解决方法。
摘要由CSDN通过智能技术生成

注意事项一:

在制造自己数据集的时候,使用Labelimg时,类别标签切记要使用英文小写,不然在把xml文件转为txt文件时,会出现txt文件无内容(空白)情况。错误如下所示:

AssertionError: train: No labels found in \darknet\scripts\2007_train.cache, can not start training.

若遇到此类问题,一个方法可以重新标注,另一个方法可以用python语言批量化修改xml文件里面的标签。(虽然代码比较简单,但是本人却花了整整一个上午时间)代码如下所示,你可以把中文改为英文,也改为小写。

# coding=utf-8
import os
import os.path
import xml.dom.minidom

path="F:/pyProject/yolov5-master/yolov5-master/darknet/scripts/VOCdevkit/VOC2007/Annotations1/"
files = os.listdir(path)  # 得到文件夹下所有文件名称

for xmlFile in files:  # 遍历文件夹
    if not os.path.isdir(xmlFile):  # 判断是否是文件夹,不是文件夹才打开
        print(xmlFile)
        # TODO
        # xml文件读取操作
        # 将获取的xml文件名送入到dom解析
        dom = xml.dom.minidom.parse(os.path.join(path, xmlFile))  
        ###最核心的部分,路径拼接,输入的是具体路径
        root = dom.documentElement
        # 获取标签对name/pose之间的值
        name = root.getElementsByTagName('name')    
        for i in range(len(name)):                      
            if name[i].firstChild.data == '凹凸':
                name[i].firstChild.data = 'sunken'

            if name[i].firstChild.data == '划痕':
                name[i].firstChild.data = 'scratch'

            if name[i].firstChild.data == '孔洞':
                name[i].firstChild.data = 'hole'

            if name[i].firstChild.data == '脏污':
                name[i].firstChild.data = 'sully'

        # 修改
        # 打印输出
        # print('修改后的 name')
        print('~~~~~')
        with open(os.path.join(path, xmlFile), 'w') as fh:
            dom.writexml(fh)
            print('写入name/pose OK!')

注意事项二:

在对数据加载时,遇到问题,需要去dataloader.py或者dataset.py文件中,修改数据加载路径如下图所示(“Ctrl+F”进行搜索比较快):注意事项三:

进行运行前,如果显卡比较差,直接运行会出现以下错误提示:

AttributeError: 'NoneType' object has no attribute '_free_weak_ref'

那么,就需要定位到dataloader.py和train.py文件里面,把workers的参数,都设置为0。

还有不少问题,目前记得以上这些,希望能为第一次使用Yolo的小白提供帮助,谢谢大家。

  • 4
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值