【Warning】YOLOV5训练时的ignoring corrupt image/label: [Errno 2]…..,无法全部训练数据集,快速带你解决它

问题描述

        在使用yolo(yolov5)训练自己的模型时候,有时候会发现出现下面的问题:

ignoring corrupt image/label: [Errno 2]…..

        仔细一看,这是自己的数据集出现了问题。

        再细心一看,好家伙,一共5000张数据图片,有2000多没被训练,这不难受死了?辛辛苦苦打的数据标签,最后全都用不上???

        不,肯定有方法解决!!!

        解决方法在下面,只需要操作一波就可以全部训练了~~~


原因分析:

原因是,yolov5需要训练【JPG】格式的图片,而我们喂进去的部分是【JPEG】数据

        我们需要将自己的数据集中【JPEG】图片修改下格式(简单来说,就是修改下后缀名),就可以解决这个问题了,让自己的数据全部训练!!!


解决方案:

1.新建一个python脚本,建议放在和数据集文件同级下。在脚本里放入下面的代码,注意路径中不应存在中文。

2.新建一个文件夹,用来存放修改好的图片文件。这是为了双保险,可以避免修改过程中出现问题,自己的源文件也出现问题.

        数据图片中通常使用的是JPEG和jpg两种文件格式。我们在yolo训练的时候,运行【train.py】文件时会出现报错而无法正常训练,故需要将文件格式统一成【.jpg】格式后便可成功训练。代码如下:

import os
import cv2 as cv
 
image_path = 'J:/102HorizontalProject/zong/image'    #设置图片读取的路径
save_path = 'J:/yolov5-master-cow/data/images'    #设置图片保存的路径
 
if not os.path.exists(save_path):    #判断路径是否正确,如果正确就打开
    os.makedirs(save_path)
 
image_file = os.listdir(image_path)
 
for image in image_file:
    if image.split('.')[-1] in ['bmp', 'jpg', 'jpeg', 'png', 'JPG', 'PNG']:
        str = image.rsplit(".", 1)    #从右侧判断是否有符号“.”,并对image的名称做一次分割。如112345.jpeg分割后的str为["112345","jpeg"]
        output_img_name = str[0] + ".jpg"    #取列表中的第一个字符串与“.jpg”放在一起。
        src = cv.imread(os.path.join(image_path, image))
        newimg = cv.imwrite(save_path + '/' + output_img_name, src)
print('FINISHED')

        成功后,自己新建的文件里图片就都是【JPG】格式的文件了~~~

        再次运行自己的【train.py】就会发现,所有的图片已经都开始训练了~~~完美解决!!!

物联沃分享整理
物联沃-IOTWORD物联网 » 【Warning】YOLOV5训练时的ignoring corrupt image/label: [Errno 2]…..,无法全部训练数据集,快速带你解决它

发表评论