yolov5自定义模型训练二

news2024/11/27 1:26:38

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

数据集放到yolov5目录里

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

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

开始训练

训练出错

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

改为如下后

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

确认了时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)

重新转换后重新训练

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

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/952711.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

YOLO目标检测——人脸数据集下载分享

目标检测人脸数据集在人脸识别、监控和安防、社交媒体、情感分析、医疗诊断等多个领域都具有广泛的应用潜力。 数据集点击下载:YOLO人脸数据集7000图片.rar

Shell 脚本入门

目录 一、Shell是什么 1.1 我们为什么要学习Shell和使用Shell? 1.2 Shell的分类有哪些? 二、Shell脚本入门知识 2.1 Shell文件命名规范 2.2 Shell解析器 2.3 用Shell 编写hello World 三、Shell的四种变量类型 3.1 系统预定义变量 3.2 自定义变…

移动端几种适配方式

移动端几种适配方式 第一种&#xff1a;rem <meta name"viewport" content"widthdevice-width, initial-scale1.0,,maximum-scale1,user-scalableno">设置窗口不能缩放 一般设备宽度的十分之一 如果这个值是动态计算的需要使用js去设置 根据设备…

【rar密码】使用WinRAR加密的三种方法

如何使用WinRAR加密压缩包&#xff1f;详细介绍WinRAR中的三种加密方法给大家。 方法一&#xff1a;加密 最简单的加密方法&#xff0c;就是在加密文件时输入想要设置的密码&#xff0c;完成加密和压缩了。 方法二&#xff1a;自动加密 普通的加密方式&#xff0c;需要我们加…

1.8.7 练习 冒泡排序 Bubble Sort(提取函数)

C自学精简教程 目录(必读) 1 前驱知识点 for循环语句 、 if语句、函数 、动态内存 2 排序 是将元素按照从小到大的顺序存放的方法。 一开始元素可能并不是按照从小到大的顺序存放的。 这时候我们需要找到需要调整的元素对&#xff0c;并交换这两个元素的值&#xff0c;不…

无涯教程-Android - Absolute Layout函数

Absolute Layout 可让您指定其子级的确切位置(x/y坐标)&#xff0c;绝对布局的灵活性较差且难以维护。 Absolute Layout - 属性 以下是AbsoluteLayout特有的重要属性- Sr.NoAttribute & 描述1 android:id 这是唯一标识布局的ID。 2 android:layout_x 这指定视图的x坐标…

什么是面向对象以及和面向过程的区别

概念 面向对象是一种编程范式&#xff0c;它将现实世界中的事物抽象为对象&#xff0c;并通过对象之间的交互来实现程序的设计和开发。在面向对象编程中&#xff0c;对象是程序的基本单元&#xff0c;具有状态&#xff08;属性&#xff09;和行为&#xff08;方法&#xff09;…

【python爬虫】3.爬虫初体验(BeautifulSoup解析)

文章目录 前言BeautifulSoup是什么BeautifulSoup怎么用解析数据提取数据 对象的变化过程总结 前言 上一关&#xff0c;我们学习了HTML基础知识&#xff0c;知道了HTML是一种用来描述网页的语言&#xff0c;又了解了HTML的基本结构。 认识了HTML中的常见标签和常见属性&#x…

A系统跳转到B系统URl传参与接收

处理url字符串拼接方法new URLSearchParams() A系统 let data { study_id: row.study_id, hospital_id: row.hospital_id, pageType: detail };let params new URLSearchParams(); for (let key in data) {params.append(key, data[key]); } window.open(url ? params.toS…

SpringCloud(十)——ElasticSearch简单了解(二)DSL查询语句及RestClient查询文档

文章目录 1. DSL查询文档1.1 DSL查询分类1.2 全文检索查询1.3 精确查询1.4 地理查询1.5 查询算分1.6 布尔查询1.7 结果排序1.8 分页查询1.9 高亮显示 2. RestClient查询文档2.1 查询全部2.2 其他查询语句2.3 排序和分页2.4 高亮显示 1. DSL查询文档 1.1 DSL查询分类 查询所有…

中央仓库更新失败,IDEA报错repository is non-nexus repo, or does not indexed

某个仓库未被识别为 Nexus 仓库&#xff0c;或者没有被正确地索引。导致引入依赖一直爆红&#xff0c;找不到。只有本地仓库的依赖没报错&#xff0c;因为下载过了&#xff0c;添加新的依赖就需要到远程仓库找就爆红。 解决 去阿里云Maven官网看了一下&#xff0c;发现阿里云…

详解 SpringMVC 中获取请求参数

文章目录 1、通过ServletAPI获取2、通过控制器方法的形参获取请求参数3、[RequestParam ](/RequestParam )4、[RequestHeader ](/RequestHeader )5、[CookieValue ](/CookieValue )6、通过POJO获取请求参数7、解决获取请求参数的乱码问题总结 在Spring MVC中&#xff0c;获取请…

前后端项目部署上线详细笔记

部署 参考文章&#xff1a;如何部署网站&#xff1f;来比比谁的方法多 - 哔哩哔哩大家好&#xff0c;我是鱼皮&#xff0c;不知道朋友们有没有试着部署过自己开发的网站呢&#xff1f;其实部署网站非常简单&#xff0c;而且有非常多的花样。这篇文章就给大家分享几种主流的前端…

自编码器AE全方位探析:构建、训练、推理与多平台部署

本文深入探讨了自编码器&#xff08;AE&#xff09;的核心概念、类型、应用场景及实战演示。通过理论分析和实践结合&#xff0c;我们详细解释了自动编码器的工作原理和数学基础&#xff0c;并通过具体代码示例展示了从模型构建、训练到多平台推理部署的全过程。 关注TechLead&…

软件测试/测试开发丨Python 学习笔记 之 链表

点此获取更多相关资料 本文为霍格沃兹测试开发学社学员学习笔记分享 原文链接&#xff1a;https://ceshiren.com/t/topic/26458 链表与数组的区别 复杂度分析 时间复杂度数组链表插入删除O(n)O(1)随机访问O(1)O(n) 其他角度分析 内存连续&#xff0c;利用CPU的机制&#xff0…

上海炒股开户哪个证券公司好?找谁能开低佣金的账户?

在上海炒股开户选择哪家券商都可以&#xff0c;但是要拿到低佣金的账户就有点难度了。上海&#xff0c;简称“沪&#xff0c;是国务院批复确定的中国国际经济、金融、贸易、航运、科技创新中心&#xff01;正是如此&#xff0c;上海地区的券商公司也是非常之多的&#xff0c;这…

centos安装jdk-8u371-linux-x64.tar.gz包

java -version //查看jdk版本 rpm -qa | grep jdk 删除带有"openjdk"字样的jdk 例: rpm -e --nodeps java-1.7.0-openjdk-1.7.0.141-2.6.10.5.el7.x86_64 下载该版本的jdk(jdk-8u371-linux-x64.tar.gz) (https://www.oracle.com/java/technologies/javase/javase8u2…

AI:04-基于机器学习的蘑菇分类

蘑菇是一类广泛分布的真菌,其中许多种类具有重要的食用和药用价值,但也存在着一些有毒蘑菇。因此,准确地区分可食用和有毒的蘑菇对于保障人们的食品安全和健康至关重要。本研究旨在基于机器学习技术开发一种蘑菇分类系统,以实现对蘑菇的自动分类和识别。通过构建合适的数据…

8年经验之谈 —— 如何用 JMeter 编写性能测试脚本?

Apache JMeter 应该是应用最广泛的性能测试工具。怎么用 JMeter 编写性能测试脚本&#xff1f; 1. 编写 HTTP 性能测试脚本 STEP 1. 添加 HTTP 请求 i STEP 2. 了解配置信息 HTTP 请求各项信息说明&#xff08;以 JMeter 5.1 为例&#xff09;。 如下图所示&#xff1a; W…

MindsDB为许多不支持内置机器学习的数据库带来了机器学习功能

选择平台的首要原则是“靠近数据”,让代码靠近数据是保持低延迟的必要条件。 机器学习,特别是深度学习往往会多次遍历所有数据(遍历一次被称为一个epoch)。对于非常大的数据集来说,理想的情况是在存储数据的地方建立模型,这样就不需要大量的数据传输。目前已经有部分数据…