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

一.训练数据集准备

        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(You Only Look Once version 8)是一种实时物体检测算法,它在YOLO系列中属于较新的版本。训练自己的数据集主要是为了让你的模型能够识别特定场景下的物体。以下是训练YOLOv8自定义数据集的一般步骤: 1. 数据准备:收集或创建包含目标类别及其标注的图像数据集。每个图片应该有对应的目标框位置信息类别标签。 2. 数据预处理:使用YOLOv8提供的工具,如darknet的数据转换脚本(data_generator.py),将图片标签转换成Darknet所需的文件格式,通常为`.txt``.cfg`配置文件。 3. 定制配置文件:修改`yolov8.cfg`配置文件,更改网络结构、锚点其他超参数以适应你的数据集特性。 4. 准备Darknet库:确保安装了正确的版本,设置环境变量指向darknet源码目录。 5. 搭建训练环境:如果你是在GPU环境下,可以使用CUDAcuDNN加速训练过程。如果使用CPU,则需调整batch size以适应计算资源。 6. 开始训练:运行命令行工具,例如`./darknet train data/your_dataset cfg/yolov8.cfg yolov8.weights`,这里`your_dataset`是你的数据集路径,`yolov8.weights`是初始权重文件(可以选择预训练模型或从头开始训练)。 7. 监控调整:训练过程中会生成日志,观察损失函数mAP等指标,根据需要调整学习率、批次大小等参数。 8. 评估验证:定期保存训练进度,使用验证集测试模型性能优化。
评论 67
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值