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:冻结训练

 

其中一个训练batch可视化

检测

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

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

检测效果如下:

 

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

--weights:权重路径

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

--visualize:特征可视化

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

--show:显示检测结果

--save:保存检测结果

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

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

 例如特征可视化:

python detect.py --source bus.jpg --visualize --save

 

 

  • 12
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
在PyTorch下使用Ultralytics YOLOv5训练自己的数据集,可以按照以下步骤进行操作: 1. 安装依赖: ```shell pip install torch torchvision ``` 2. 克隆YOLOv5仓: ```shell git clone https://github.com/ultralytics/yolov5.git ``` 3. 进入yolov5目录: ```shell cd yolov5 ``` 4. 准备数据集: - 将自己的数据集放置在`yolov5/data`目录下,包括图像和对应的标注文件(如YOLO格式的txt文件)。 - 在`yolov5/data`目录下创建一个新的文件夹,用于存放自己的数据集,例如`my_dataset`。 5. 配置数据集: - 在`yolov5/data`目录下创建一个新的文件,命名为`my_dataset.yaml`,用于配置自己的数据集。 - 在`my_dataset.yaml`中,按照以下格式填写配置信息: ```yaml train: ../my_dataset/train/images val: ../my_dataset/val/images nc: 1 # 类别数 names: ['class1'] # 类别名称 ``` 6. 划分训练集和验证集: - 在`yolov5/data`目录下创建`my_dataset/train`和`my_dataset/val`两个文件夹,分别用于存放训练集和验证集的图像和标注文件。 - 将数据集中的图像和对应的标注文件按照一定比例划分到`train`和`val`文件夹中。 7. 开始训练: ```shell python train.py --img 640 --batch 16 --epochs 50 --data my_dataset.yaml --weights yolov5s.pt ``` - `--img`:输入图像的大小。 - `--batch`:每个批次的图像数量。 - `--epochs`:训练的轮数。 - `--data`:数据集的配置文件。 - `--weights`:预训练模型的权重文件。 8. 查看训练结果: - 训练过程中的日志和权重文件保存在`yolov5/runs/train/exp`目录下。 - 可以使用TensorBoard查看训练过程中的损失曲线: ```shell tensorboard --logdir=runs/train/exp ``` 9. 进行推理: - 使用训练好的模型进行目标检测: ```shell python detect.py --source path/to/images --weights runs/train/exp/weights/best.pt --conf 0.4 ``` - `--source`:输入图像或视频的路径。 - `--weights`:训练好的权重文件。 - `--conf`:置信度阈值,用于过滤检测结果。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

爱吃肉的鹏

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值