yolov8进行改进并训练自定义的数据集(代码片段)

江小白jlj 江小白jlj     2023-04-12     369

关键词:

一.训练数据集准备

        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即可

用yolov8推荐的roboflow工具来训练自己的数据集(代码片段)

YOLOv8是Ultralytics公司开发的YOLO目标检测和图像分割模型的最新版本,相较于之前的版本,YOLOv8可以更快速有效地识别和定位图像中的物体,以及更准确地分类它们。作为一种深度学习技术,YOLOv8需要大量的训练数... 查看详情

yoloyolov8实操:环境配置/自定义数据集准备/模型训练/预测(代码片段)

YOLOv8实操:环境配置/自定义数据集准备/模型训练/预测引言1环境配置2数据集准备3模型训练4模型预测引言源码链接:https://github.com/ultralytics/ultralyticsyolov8和yolov5是同一作者,相比yolov5,yolov8的集成性更好了,... 查看详情

yoloyolov8训练自定义数据集(4种方式)(代码片段)

YOLOv8出来一段时间了,继承了分类、检测、分割,本文主要实现自定义的数据集,使用YOLOV8进行检测模型的训练和使用YOLOv8此次将所有的配置参数全部解耦到配置文件default.yaml,不再类似于YOLOv5,一部分在配... 查看详情

yolov8从0开始搭建部署yolov8,环境安装+推理+自定义数据集搭建与训练,一小时掌握(代码片段)

...细视频教程bilibili详细视频教程一、(ultralytic)YOLOV8项目部署github链接:https://github.com/ultralytics/ultralyticsgit拉取项目:gitclonehttps://github.com/ultralytics/ultralytics.git二、cuda、cudnn、Pytorch等环境安装与卸载首先查看pytorc... 查看详情

yolov8详解与实战(代码片段)

...集(适用V4,V5,V6,V7,V8)配置yolov8环境训练测试训练自定义数据集Labelme数据集摘要YOLOv8是ultralytics公司在2023年1月10号开源的YOLOv5的下一个重大更新版本,目前支持图像分类、物体检测和实例分割任... 查看详情

pytorch自定义数据集模型训练流程(代码片段)

文章目录Pytorch模型自定义数据集训练流程1、任务描述2、导入各种需要用到的包3、分割数据集4、将数据转成pytorch标准的DataLoader输入格式5、导入预训练模型,并修改分类层6、开始模型训练7、利用训好的模型做预测Pytorch模... 查看详情

yolov8最强操作教程.(代码片段)

YoloV8详细训练教程.相信各位都知道yolov8发布了,也是U神大作,而且V8还会出论文喔!2023.1.17更新yolov8-grad-cam热力图可视化链接2023.1.20更新YOLOV8改进-添加EIoU,SIoU,AlphaIoU,FocalEIoU链接2023.1.30更新如果你需要修改或者改进yol... 查看详情

windows使用yolov8训练自己的模型(0基础保姆级教学)(代码片段)

...belimg1.2、安装库并启动labelimg1.4、制作YOLO数据集二、使用YOLOv8训练模型2.1、下载库——ultralytics(记得换源)2.2、数据模板下载2.3、开始训练1、启动train.py,进行训练2、我们可以直接使用命令进行训练三、其他问题1... 查看详情

yolov8训练筷子点数数据集(代码片段)

序言yolov8发布这么久了,一直没有机会尝试一下,今天用之前自己制作的筷子点数数据集进行训练,并且记录一下使用过程以及一些常见的操作方式,供以后翻阅。一、环境准备yolov8的训练相对于之前的yolov5简单... 查看详情

yolov8从pytorch到caffe训练模型并转换到caffemodel(代码片段)

Yolov8从pytorch到caffe(三)训练模型并转换到caffemodel1.训练前数据准备工作2.训练行人摔倒模型pth3.转换模型pth到onnx4.onnx转caffemodel从官方文档可以看到,yolov8的训练可以采用命令行的方式进行,非常方便yolotask=detectmode=trainmodel=yolov... 查看详情

yolov8模型学习笔记(代码片段)

...0c;从正负样本匹配策略到LOSS设计,今天博主学习的是YOLOv8,同为ultralytics公司的产品,两者无论是思想层面还是具体的设计方面都有着异曲同工之妙。那么就让我们来学习一下这个横空出世的YOLOv8算法吧。值得一提的... 查看详情

yolov8详解网络结构+代码+实操(代码片段)

文章目录YOLOv8概述模型结构Loss计算训练数据增强训练策略模型推理过程网络模型解析卷积神经单元(model.py)Yolov8实操快速入门环境配置数据集准备模型的训练/验证/预测/导出使用CLI使用python多任务支持检测实例分割分... 查看详情

tensorflow2自定义数据集图片完成图片分类任务(代码片段)

...G19的迁移学习。你可以通过这个例子,快速搭建网络,并训练处一个较为满意的结果。1.Loaddata数据集 查看详情

使用mmdetection3.x训练自定义数据集和类别(代码片段)

使用MMDetection3.x训练自定义数据集和类别1.安装2.训练2.1准备数据和配置文件2.2训练2.3测试3.评价指标(EvaluationMetrics)3.1目标检测评估(DetectionEvaluation)3.1.1计算Precision和Recall3.1.2通过P-R曲线计算AP3.2COCO上物体检测器的性能指... 查看详情

关于detr模型训练自定义数据集ap=0问题(代码片段)

在使用DETR模型进行训练过程时,其在每次训练完成后都会进行评估,但在运行过程中,博主发现其AP值始终都为0,如下图:刚开始时,博主还以为是初始训练的问题,后来进行了6个轮次后结果依旧没... 查看详情

使用pytorch进行数据处理(代码片段)

...的效果。本文以处理图像数据为例,记录一些使用PyTorch进行图像预处理和数据加载的方法。一、数据的加载??在PyTorch中,数据加载需要自定义数据集类,并用此类来实例化数据对象,实现自定义的数据集需要继承torch.utils.data包... 查看详情

yolov8模型学习笔记

...计,从正负样本匹配策略到LOSS设计,今天博主学习的是YOLOv8,同为ultralytics公司的产品,两者无论是思想层面还是具体的设计方面都有着异曲同工之妙。那么就让我们来学习一下这个横空出世的YOLOv8算法吧。值得一提的是,YOLOv8... 查看详情

使用mmdetection3.x训练自定义数据集和类别(代码片段)

使用MMDetection3.x训练自定义数据集和类别1.安装2.训练2.1准备数据和配置文件2.2训练2.3测试3.评价指标(EvaluationMetrics)3.1目标检测评估(DetectionEvaluation)3.1.1计算Precision和Recall3.1.2通过P-R曲线计算AP3.2COCO上物体检测器的性能指... 查看详情