yolov5自定义模型训练二

        前期准备好了用于训练识别是否有火灾的数据集后就可以开始修改yolo相关文件来进行训练

数据集放到yolov5目录里

yolov5自定义模型训练二_第1张图片

在data目录下新建yaml文件设置数据集信息如下

yolov5自定义模型训练二_第2张图片

在model文件夹下新增新的model文件

yolov5自定义模型训练二_第3张图片

开始训练

yolov5自定义模型训练二_第4张图片

训练出错

yolov5自定义模型训练二_第5张图片

确认后是对训练数据集文件夹里的文件名字有要求,原先

yolov5自定义模型训练二_第6张图片

改为如下后

yolov5自定义模型训练二_第7张图片

仍然出错如下,看log应该时转换lable时的问题

yolov5自定义模型训练二_第8张图片

确认了时label没做归一化处理,新增归一化处理的转换脚本代码,

import os
import xml.etree.ElementTree as ET

def convert_xml_to_txt(xml_path, txt_path):
    # 读取XML文件
    tree = ET.parse(xml_path)
    root = tree.getroot()

    # 获取图像的宽度和高度
    width = int(root.find('size/width').text)
    height = int(root.find('size/height').text)

    with open(txt_path, 'w') as f:
        # 遍历所有的目标
        for obj in root.findall('object'):
            # 获取类别名称
            class_name = obj.find('name').text

            # 获取边界框坐标
            xmin = int(obj.find('bndbox/xmin').text)
            ymin = int(obj.find('bndbox/ymin').text)
            xmax = int(obj.find('bndbox/xmax').text)
            ymax = int(obj.find('bndbox/ymax').text)

            # 归一化处理
            x_center = (xmin + xmax) / (2 * width)
            y_center = (ymin + ymax) / (2 * height)
            box_width = (xmax - xmin) / width
            box_height = (ymax - ymin) / height

            # 写入到TXT文件
            class_index = class_names.index(class_name)
            f.write(f"{class_index} {x_center} {y_center} {box_width} {box_height}\n")



# 读取类别名称列表
class_names = ['fire']

# 遍历xml文件夹中的所有xml文件
xml_folder = 'D:/fire-dataset/fire-dataset/validation/annotations'
txt_folder = 'D:/fire-dataset/fire-dataset/validation/txtannotations'
for xml_file in os.listdir(xml_folder):
    if xml_file.endswith('.xml'):
        xml_path = os.path.join(xml_folder, xml_file)
        txt_file = os.path.splitext(xml_file)[0] + '.txt'
        txt_path = os.path.join(txt_folder, txt_file)
        convert_xml_to_txt(xml_path, txt_path)

重新转换后重新训练

yolov5自定义模型训练二_第9张图片

可以训练了,但是又因电脑性能问题出错如下

yolov5自定义模型训练二_第10张图片

 调整默认batchsize到8后重新训练–batch-size 8 

yolov5自定义模型训练二_第11张图片

你可能感兴趣的:(AI,YOLO,人工智能,深度学习)