YOLOv8进行改进并训练自定义的数据集

news2025/7/19 3:29:23

一.训练数据集准备

        YOLOv8的训练数据格式与YOLOv5的训练数据格式一致,这一部分可以进行沿用。之前博文有发布VOC标注格式转YOLO标注格式的脚本,有需要可以查看。

二.项目克隆

        YOLOv8项目文件可以直接去github上下载zip文件然后解压,也可以直接Git克隆。项目官方地址

三.训练前准备

        这一部分首先保证机子上安装好了深度学习环境(可以跑YOLOv5就行)。

        下一步用Pycharm打开YOLOv8项目,打开项目的终端,输入

pip install -r requirements.txt

         到这里。如果按照官方的操作指南需安装ultralytics这个包(我认为,这也是YOLOv8相较于YOLOv5区别最大的地方),但是如果大家要对YOLOv8做出改进,这里可能会出现问题。因此,我推荐大家不要执行这一步操作(如果不需要对YOLOv8做出改进,可以按照官方的指南进行操作)。

四.模型训练

        第一、需要创建数据集的yanl文件

 NWPU VHR-10 dataset/split_data

        train

                images

                        000001.jpg

                        000002.jpg

                        000003.jpg

                        ......

                labels 

                        000001.txt

                        000002.txt

                        000003.txt

                        ......

        val

                images

                        ......

                labels

                        ......

        test

                images

                        ......

                labels

                        ......

        第二、下载YOLOv8的预训练权重文件(这一步也可以不需要)

        链接地址

        第三、添加自定义模块(这里如果不对YOLOv8进行改进可以直接看第五步) 

        比如这里我要在YOLOv8的基础上添加CBAM注意力模块,首先打开modules.py,在下方添加CBAM注意力模块的代码实现。

        再打开task.py,在对应位置添加CBAM模块的声明

 

        第四、根据自己设计的网络结构修改yaml文件 

        比如这里我将YOLOv8中部分的C2f模块替换为C3模块。

         第五、开始训练

        这里也是和YOLOv5有着较大的差别,在YOLOv8中train、val和test的参数设置都是依赖于default.yaml这个文件,因此在对参数设置进行修改前,建议先对该文件进行备份。

        这里进行切换任务与模式。

        这里需要注意,在YOLOv5中是同时包含--weights预训练权重文件和--cfg模型文件,预训练权重(.pt)是由官方提供,模型文件(.yaml)是自己修改的文件,并在训练中导入相同层的权重信息。而在YOLOv8中,只有--model这一个参数设置,且同时允许.pt文件与.yaml文件的接受处理。因此,这里的话,我建议用yaml文件,因为这样我们才能载入我们自己设计的网络结构(注:从目前的实验来看,只导入yaml文件也能进行迁移学习,载入预训练权重文件)。--data存放我们数据集的yaml文件。其他参数可以根据自己的需求自己设定(注:这里发现YOLOv8在训练时GPU的内存占用比YOLOv5的大许多,有bug。部分博主说可通过减少workers来缓解此类现象)。

# Train settings -------------------------------------------------------------------------------------------------------
model:  # path to model file, i.e. yolov8n.pt, yolov8n.yaml
data:  # path to data file, i.e. i.e. coco128.yaml
epochs: 100  # number of epochs to train for
patience: 50  # epochs to wait for no observable improvement for early stopping of training
batch: 16  # number of images per batch (-1 for AutoBatch)
imgsz: 640  # size of input images as integer or w,h
save: True  # save train checkpoints and predict results
cache: False  # True/ram, disk or False. Use cache for data loading
device:  # device to run on, i.e. cuda device=0 or device=0,1,2,3 or device=cpu
workers: 8  # number of worker threads for data loading (per RANK if DDP)
project:  # project name
name:  # experiment name
exist_ok: False  # whether to overwrite existing experiment
pretrained: False  # whether to use a pretrained model
optimizer: SGD  # optimizer to use, choices=['SGD', 'Adam', 'AdamW', 'RMSProp']
verbose: True  # whether to print verbose output
seed: 0  # random seed for reproducibility
deterministic: True  # whether to enable deterministic mode
single_cls: False  # train multi-class data as single-class
image_weights: False  # use weighted image selection for training
rect: False  # support rectangular training if mode='train', support rectangular evaluation if mode='val'
cos_lr: False  # use cosine learning rate scheduler
close_mosaic: 10  # disable mosaic augmentation for final 10 epochs
resume: False  # resume training from last checkpoint
min_memory: False  # minimize memory footprint loss function, choices=[False, True, <roll_out_thr>]

        最后,运行train.py即可。

python train.py

五.模型验证与测试

        模型的验证与测试步骤基本和训练一样,先修改验证/测试的设置,也是在default.yaml中,然后执行val.py和predict.py即可

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

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

相关文章

Telerik UI for WPF 2023 R1

Telerik UI for WPF 2023 R1 之 WPF 的 Telerik 用户界面&#xff0c;WPF 控件库开发人员信任&#xff0c;快速构建美观、高性能的 WPF 业务应用程序。现在支持 .NET 6 和 7.0。 概述部分背景图像 主要特征 现代专业主题图标&#xff0c;现代专业主题 通过各种受 Office、Wind…

【机器学习】P0 基础与相关名词

机器学习基础与相关名词什么是机器学习监督学习与非监督学习Classification And RegressionClusteringModel and Function什么是机器学习 机器学习是计算机发展到一定阶段的必然产物。相比于19世纪一个房间大小的计算机&#xff0c;当前的计算机更便携&#xff0c;性能更强&am…

开源项目-旅游信息管理系统

哈喽,大家好,今天给大家带来一个开源系统-旅游信息管理系统 前台 地址:http://ip/index 账号:user 密码:123456 后台 地址:http://ip/login 账号:root 密码:123456 功能模块:旅游路线、旅游景点、旅游酒店、旅游车票、旅游保险、旅游策略、订单管理、留言管理、数据…

一篇解决Linux 中的负载高低和 CPU 开销并不完全对应

负载是查看 Linux 服务器运行状态时很常用的一个性能指标。在观察线上服务器运行状况的时候&#xff0c;我们也是经常把负载找出来看一看。在线上请求压力过大的时候&#xff0c;经常是也伴随着负载的飙高。 但是负载的原理你真的理解了吗&#xff1f;我来列举几个问题&#x…

c/c++开发,无可避免的模板编程实践(篇二)

一、开发者需要对模板参数负责 1.1 为您模板参数提供匹配的操作 在进行模板设计时&#xff0c;函数模板或类模板一般只做模板参数&#xff08;typename T&#xff09;无关的操作为主&#xff0c;但是也不见得就不会关联模板参数自身的操作&#xff0c;尤其是在一些自定义的数据…

JVM基础学习

JVM分为两个子系统,两个组件一个子系统是Class loader类装载系统&#xff0c;另一个子系统是Execution Engine执行引擎一个组件是Runtime data area 运行时数据区&#xff0c;Native Interface 本地接口Class loader&#xff1a;根据给定的全限定类名来装载class文件到运行时数…

借助docker, 使用verdaccio搭建npm私服

为何要搭建npm私服 搭建npm私服好处多多&#xff0c;网上随便一篇教程搜出来都罗列了诸多好处&#xff0c;譬如: 公司内部开发环境与外网隔离&#xff0c;内部开发的一些库高度隐私不便外传&#xff0c;内网搭建npm服务保证私密性同属内网&#xff0c;可以确保使用npm下载依赖…

RPC技术选型

前言HTTP1.0 & HTTP1.1 & HTTP2.0 & RPCHTTP1.0无法复用连接HTTP1.0 协议时&#xff0c;HTTP 调用还只能是短链接调用&#xff0c;每次发送请求的时候&#xff0c;都需要进行一次TCP的连接&#xff0c;而TCP的连接释放过程又是比较费事的。这种无连接的特性会使得网…

金三银四跳槽季,JAVA面试撸题就来【笑小枫】微信小程序吧~

JAVA面试撸题就来【笑小枫】微信小程序啦~ 疫情已过&#xff0c;金三银四即将到来&#xff0c;小伙伴们是否有跳槽的打算呢&#xff1f;不管有没有&#xff0c;技术不能丢&#xff0c;让我们一起来撸题吧。 博主最近整理了一批面试题&#xff0c;包括JAVA基础、多线程与锁、Red…

媒体邀约电视台对商业活动选题有什么要求?如何邀请电视台报道

传媒如春雨&#xff0c;润物细无声&#xff0c;大家好随着互联网&#xff0c;移动互联网的快速发展&#xff0c;大众在电视上消磨的时间就越来越短了&#xff0c;但是随着新媒体的出现&#xff0c;传统媒体不断的跟进发展&#xff0c;不断打造自己的媒体矩阵&#xff0c;虽然离…

界面控件DevExpress WinForm——轻松构建类Visual Studio UI(一)

DevExpress WinForm拥有180组件和UI库&#xff0c;能为Windows Forms平台创建具有影响力的业务解决方案。DevExpress WinForm能完美构建流畅、美观且易于使用的应用程序&#xff0c;无论是Office风格的界面&#xff0c;还是分析处理大批量的业务数据&#xff0c;它都能轻松胜任…

图穷了,来搞一搞(内附源码)

本章继续我们的爬虫教程&#xff0c;爬什么呢 &#xff0c;还是斗图&#xff0c;娱乐性的东西&#xff0c;为什么要爬&#xff1f; 因为我图库空了&#xff0c;发现这个网址的图库还是很丰富的。 「注意&#xff1a;如下文&#xff0c;是封装后拆分的&#xff0c;所以详情参照…

Word处理控件Aspose.Words功能演示:使用 C# 在电子邮件正文中发送 Word 文档

Aspose.Words 是一种高级Word文档处理API&#xff0c;用于执行各种文档管理和操作任务。API支持生成&#xff0c;修改&#xff0c;转换&#xff0c;呈现和打印文档&#xff0c;而无需在跨平台应用程序中直接使用Microsoft Word。此外&#xff0c;API支持所有流行的Word处理文件…

《精通Spring4.x 企业应用开发实战》第12章 Spring 的事务管理难点剖析

目录标题前言一、DAO 和事务管理的牵绊二、应用分层的迷惑三、事务方法嵌套调用的迷茫(事务传播行为)1.Spring 事务传播机制回顾2.相互嵌套的服务方法四、多线程的困惑1. Spring 通过单实例化 Bean 简化多线程问题2.启动独立线程调用事务方法五、联合军种作战的混乱1.Spring 事…

用了 ChatGPT 后,我迫不及待的问了它这 10 个问题

前言20230208 日&#xff0c;ChatGPT 已经联手微软登录必应搜索引擎&#xff0c;谷歌、百度等巨头更是紧随其后着急麻慌的推出自己的 AI 聊天产品&#xff0c;有理由相信&#xff0c;传统搜索引擎时代已经结束&#xff0c;不远的未来&#xff0c;每个人家里都会有一个可以陪你聊…

数字芯片是怎样设计出来的?

芯片在我们的生活和工作中无处不在。例如&#xff0c;交通智能卡就嵌入了一颗带有微处理器、储存单元、芯片操作系统的芯片&#xff1b;而手机的主板则集成了数百颗芯片&#xff0c;有的负责无线电收发、有的负责功率放大、还有的负责存储照片和文件、处理音频&#xff0c;完成…

如何查找专用 IP 地址?

专用 IP 地址&#xff1a;这些地址在网络内部使用&#xff0c;例如&#xff0c;平板电脑、Wi-Fi 相机、无线打印机和台式电脑使用的家庭网络。这些类型的 IP 地址为设备提供了一种与路由器和专用家庭网络上的其他设备进行通信的方法。私有IP地址可以手动设置&#xff0c;也可以…

Mr. Cappuccino的第40杯咖啡——Kubernetes之Pod生命周期

Kubernetes之Pod生命周期Pod生命周期官方文档Pod的状态初始化容器案例钩子函数Exec命令TCPSocketHTTPGet案例容器探测Exec命令TCPSocketHTTPGet探测时间重启策略Pod生命周期官方文档 Pod生命周期官方文档 Pod的状态 pending&#xff1a;挂起&#xff0c;apiserver创建了pod资…

2月第2周榜单丨飞瓜数据B站UP主排行榜(哔哩哔哩平台)发布!

飞瓜轻数发布2023年2月6日-2月12日飞瓜数据UP主排行榜&#xff08;B站平台&#xff09;&#xff0c;通过充电数、涨粉数、成长指数三个维度来体现UP主账号成长的情况&#xff0c;为用户提供B站号综合价值的数据参考&#xff0c;根据UP主成长情况用户能够快速找到运营能力强的B站…

python基于django+vue微信小程序的校园跑腿平台

随着计算机技术的高速发展,现代计算机系统已经从以计算为中心向以信息化处理为中心的方向发展。而校园跑腿服务系统,不仅需要在硬件上为现代社会的学生们提供一个学习知识,获取知识的环境,更要在软件上为愿意上课的人提供必要的便利。于是校园跑腿服务系统系统便应运而生。 目前…