YOLOv5训练数据提示No labels found

利用YOLOv5训练数据的时候,一直提示找不到标签。
1.首先检查图片文件和标签文件的位置,这两个文件要在同一个路径下。如下:

YOLOv5训练数据提示No labels found_第1张图片

2.文件夹位置OK,再检查下yaml配置文件中的信息是否正确。看起来也没有问题。
在这里插入图片描述
3.但是依旧提示找不到标签╮(╯▽╰)╭,仔细看下数据加载、处理的文件datasets.py,发现有一句会根据第2步中images文件夹的位置找到对应labels文件夹:

# Define labels
self.label_files = [x.replace('images', 'labels').replace(os.path.splitext(x)[-1], '.txt') for x in self.img_files]

YOLOv5训练数据提示No labels found_第2张图片
这个替换不仅替换了文件夹的名称,顺便把文件名也改了(O_o)??
我的图片文件命名都是images(1).jpg、images(2).jpg、images(3).jpg、images(4).jpg、images(5).jpg…
对应的标签文件就是images(1).txt、images(2).txt、images(3).txt、images(4).txt、images(5).txt…
但是经过这个转变就变成了labels(1).txt、labels(2).txt、labels(3).txt、labels(4).txt、labels(5).txt…
这能找到才有鬼啊!!!
想了一下最简单的方法就是把文件名批量改一下了Python 批量修改文件名


import os
#输入要更改文件的上级目录,我的话就是images和labels这两个文件夹下的train文件夹和val文件夹,以下以images/train文件夹为例。
path = "H:/data/fire_data/images/train" 
#需要被替换的字符images
originalname = 'images' 
#替换的字符串fire
replacename = 'fire' 
def main1(path1):
    files = os.listdir(path1)  # 得到文件夹下的所有文件名称
    for file in files: #遍历文件夹
        if os.path.isdir(path1 + '\\' + file):
            main1(path1 + '\\' + file)
        else:
            files2 = os.listdir(path1 + '\\')
            for file1 in files2:
                if originalname in file1:
                    #用‘’替换掉 X变量
                    n = str(path1 + '\\' + file1.replace(originalname,replacename))
                    n1 = str(path1 + '\\' + str(file1))
                    try:
                        os.rename(n1, n)
                    except IOError:
                        continue
main1(path)

修改完名字再运行一下train.py,没有问题了,默默等数据训练完就好啦!YOLOv5训练数据提示No labels found_第3张图片

你可能感兴趣的:(python)