yolov3的训练(四)VOC数据集的错误


##################################
同学们,这个系列的文件不要直接就跟着我操作了,因为这个是踩坑的记录,不是教程,我只是将整个流程记录下来,让后面的同学操作的时候能够避开这些坑,希望你能将整个系列的操作流程看了一遍斟酌后进行操作
##################################

那么在上一节,显卡的驱动问题搞定了,能够正常的使用了
就继续开始进行yolov3的训练

后面开始训练,但发现有报错

./darknet detector train cfg/voc.data cfg/yolov3-voc.cfg darknet53.conv.74  >>  /home/heying/darknet/scripts/VOCdevkit/VOC2020/traffic_light.log

yolov3的训练(四)VOC数据集的错误_第1张图片

经过查验,并且考虑到在即将进行训练时,daeknet在【voc_label.py】文件中自动生成的后缀是.jpg的,并且之前生成的图片路径名称也是jpg。
结果有177项文件是PNG格式的,所以就因为图片的后缀名无法索引导致报错
yolov3的训练(四)VOC数据集的错误_第2张图片

那么在这里我是将数据集备份到了自己的虚拟机中进行操作

首先移动这177项文件
将001138.png—001314.png
移动到【/home/xiong/VOC/VOC_MAX(另一个复件)/png】
那么在这个文件夹中的所有图片都要进行修改
yolov3的训练(四)VOC数据集的错误_第3张图片

然后对这些图片进行后缀名称的修改
python实现将png格式的照片批量转化为jpg格式


#将png格式的照片批量转化为jpg格式


import os
from PIL import Image

dirname_read="/home/xiong/VOC/VOC_MAX(另一个复件)/png/"  #png格式文件夹路径
dirname_write="/home/xiong/VOC/VOC_MAX(另一个复件)/jpg/"	#jpg格式输出路径
names=os.listdir(dirname_read)
count=0
for name in names:
    img=Image.open(dirname_read+name)
    name=name.split(".")
    if name[-1] == "png":
        name[-1] = "jpg"
        name = str.join(".", name)
#        r,g,b,a=img.split()              
#        img=Image.merge("RGB",(r,g,b))   
        to_save_path = dirname_write + name
        img.save(to_save_path)
        count+=1
        print(to_save_path, "------conut:",count)
    else:
        continue

yolov3的训练(四)VOC数据集的错误_第4张图片

然后运行
这里终端只输出了167个。以为程序出错,经查验
这中间也有10个的jpg格式的文件
总数也就是177张
yolov3的训练(四)VOC数据集的错误_第5张图片
然后将这些jpg文件移动到JPEGImages里
yolov3的训练(四)VOC数据集的错误_第6张图片

然后移动到主机进行测试
这里我是移动到了nvidia的 jetson系列的主机,用jetson-inference测试
测试过后发现了报错
yolov3的训练(四)VOC数据集的错误_第7张图片

经过检查是图片的问题
yolov3的训练(四)VOC数据集的错误_第8张图片

那么我解决的方案就是将这张图片的上一张或下一张复制粘贴,然后重命名为001222,因为很难为了一张图片的空缺把这张图片后的所有的图片和标注文件都进行重命名,不划算,相对应的标注文件也要修改,不过我懒的修改了,一张图片有点错误对大局的影响不大

你可能感兴趣的:(python,ubuntu,linux,目标检测)