Yolov8训练自己的数据集(脱离ultralytics库)

最近在整理关于yolov8的相关内容,有个很大的问题,抛开yolov8性能不谈,yolov8代码的使用灵活性不如yolov5,尤其是对于一些新手或者对yolo框架不是很熟悉的人(这也是因人而异,有些人可能会喜欢v8代码的使用方式)。比如在使用v8的时候需要安装ultralytics库,然后再调用YOLO进行训练或者预测,那么就有这几个问题:

问题1:安装了ultralytics库后如何使用YOLO呢?

针对该问题,就需要我们不断的查看v8提供的各类doc说明文档,很不便利,比如训练和检测应该传入哪些参数,有些人也不知道去哪查看。

问题2:如果希望像v5一样修改网络或者修改其他代码怎么办?

因为是安装的ultralytics库,直接在源代码中修改显然是不方便的。

为了解决诸多代码上使用的不利因素,本文旨在脱离ultralytics库实现yolov8,使其能够更加的方便使用。


参照yolov5的传入参数形式,我对训练和检测代码进行了实现(部分功能还不是那么完整,后期会慢慢的完善)

代码准备

git clone https://github.com/YINYIPENG-EN/YOLOV8.git

clone代码到本地

环境说明

torch==1.10.0+cu102

torchvision==0.11.0+cu102

numpy==1.22.4

训练自己的数据集

数据集准备

我这里的数据集是只有一个类,数据集名称叫target(根据自己的数据集自己命名),然后我把我的数据集放在了cfg/datasets文件下。目录形式如下:

其中Annotations存储的是xml形式的标签文件images存储的所有的图像labels存储的是将xml转为txt的标签文件(也是我们需要用的)。

$ tree
|-- Annotations
|-- images
|-- labels

然后我们需要将images和labels划分成训练集和验证集。

修改split_dataset.py中的datasets_path路径,运行划分数据集脚本代码:

python split_dataset.py

划分完成后会在cfg/datasets/your_Datasets/下生成train和val两个文件夹,同时各包含images和labels子文件。

新建yaml文件

在cfg/datasets/下新建一个mydata.yaml文件,由于我这里只有一个类,而且类的name为"target",因此配置文件内容如下:(这里建议填写绝对路径,否则可能会出现问题)

path: F:/YOLOV8/cfg/datasets/target
train: F:/YOLOV8/cfg/datasets/target/train/images
val: F:/YOLOV8/cfg/datasets/target/val/images
test: #
 
# number of classes
nc: 1
 
# class names
names:
  0: target

训练

训练代码在train.py中,这里传入的参数是模仿yolov5的同时并结合yolov8需要的参数实现的。

快速开启训练:

python train.py --weights yolov8s.pt --epochs 100 --bs 64 
Epoch    GPU_mem   box_loss   cls_loss   dfl_loss  Instances       Size
        1/5     0.669G      1.297      3.061      1.504          7        640: 100%|██████████| 54/54 [00:29<00:00,  1.80it/s]
                 Class     Images  Instances      Box(P          R      mAP50  mAP50-95): 100%|██████████| 3/3 [00:00<00:00,  3.87it/s]
                   all         12         24      0.698      0.583      0.665       0.38

也可以与其他训练参数搭配使用,这里介绍几个常用的参数:

--weights:预权重路径

--model:加载的yolov8类型,默认为yolov8s.yaml

--epochs:训练的epochs数量,默认100

--device:cuda训练

--cache:开启缓存,默认是开启的

--bs:batch size大小

--optimizer:优化器类型

--resume:继续训练

--freeze:冻结训练

 

Yolov8训练自己的数据集(脱离ultralytics库)_第1张图片 其中一个训练batch可视化

检测

检测代码在detect.py中,快速开启检测

python detect.py --weights yolov8s.pt --source assets --show --save

检测效果如下:

Yolov8训练自己的数据集(脱离ultralytics库)_第2张图片

 

也可以与其他参数搭配使用,介绍几种常用参数:

--weights:权重路径

--source:source路径,可以是图像、视频、文件夹

--visualize:特征可视化

--classes:仅检测特定的类别

--show:显示检测结果

--save:保存检测结果

--save_frames:如果是视频检测,开启后可以把每帧进行保存

--save_crop:开启后,可以把目标从背景中截出来并保存

 例如特征可视化:

python detect.py --source bus.jpg --visualize --save
Yolov8训练自己的数据集(脱离ultralytics库)_第3张图片

 

 

你可能感兴趣的:(YOLO)