YOLOv8 目标检测项目实操

本文介绍了YOLOv8,一种基于先前版本的SOTA目标检测模型,强调其速度、准确性和易用性。文章详细指导了环境安装、数据集使用、模型训练及调试过程,包括解决Wandb和protobuf版本问题。作者分享了使用自定义数据集进行重新训练并优化参数后的良好效果。
摘要由CSDN通过智能技术生成

一 yolov8 背景介绍

YOLOv8是一种尖端的、最先进的(SOTA)模型,建立在以前 YOLO 版本的成功基础上,并引入了新的特性和改进,以进一步提高性能和灵活性。YOLOv8被设计为快速、准确、易于使用,这使它成为一个很好的选择,用于范围广泛的目标检测和跟踪、实例分割、图像分类和姿势估计任务。

一个不错的参考:yolov8官方代码训练模型

github yolov8 官网地址 地址:

GitHub - ultralytics/ultralytics: NEW - YOLOv8 🚀 in PyTorch > ONNX > OpenVINO > CoreML > TFLite

 预训练模型在 coco 数据集的执行效果:

1.1 环境安装

pip install ultralytics

1.2 安装cuda

使用的是重新配置的一套环境,使用最新版的cuda 本机执行没有成功,使用11.8可以

pip install torch==2.1.1 torchvision==0.16.1 torchaudio==2.1.1 --index-url https://download.pytorch.org/whl/cu118

二 数据集

本项目场景比较通用,使用的网上的公共数据集,下载网站:

Roboflow Universe: Open Source Computer Vision Community

这里选择数据集下载格式:

三 执行训练 

3.1 先把代码拉到本地

git clone https://github.com/ultralytics/ultralytics.git

3.2 使用demo文件做测试

from ultralytics import YOLO

# Load a model
model = YOLO('yolov8n.yaml')  # build a new model from YAML
model = YOLO('yolov8n.pt')  # load a pretrained model (recommended for training)
model = YOLO('yolov8n.yaml').load('yolov8n.pt')  # build from YAML and transfer weights

# Train the model
results = model.train(data='coco128.yaml', epochs=100, imgsz=640)

3.3 wandb 显示bug

这个报错显示了你正在使用的代码试图使用 Wandb(Weights & Biases),但是没有配置正确的 API 密钥。

要解决这个问题,你需要提供正确的 Wandb API 密钥。你可以按照之前的建议在代码中调用 wandb.login(key="your_api_key") 方法来配置 API 密钥。确保将 "your_api_key" 替换为你自己生成的 API 密钥。

3.3.1 解决方法

命令行执行:

wandb offline

方法二,没测试不知道是否可行:

import wandb
wandb.disabled = True

3.4 调整配置参数

注意 线程的数据 设置不能是8,默认设为0,设为8给我卡住了。

3.5 下载预训练模型

根据需要和场景下载适合的预训练模型:

3.6 开始训练

from ultralytics import YOLO
import multiprocessing

# Load a model
model = YOLO('yolov8m.yaml')  # build a new model from YAML
model = YOLO('./yolov8m.pt')  # load a pretrained model (recommended for training)
model = YOLO('yolov8m.yaml').load('./yolov8m.pt')  # build from YAML and transfer weights

# results = model.train(data='./data.yaml', epochs=10, imgsz=640)

if __name__ == '__main__':
    multiprocessing.freeze_support()

    # 这里放置你的主程序代码
    # 例如,调用 model.train() 函数
    results = model.train(data='./data.yaml', epochs=500, imgsz=640)

四 重新训练

4.1 数据集重新整理

之前的训练数据 使用了500+张图,图像基本为 640*640,迭代次数为500次, 使用实际模型进行预测效果不佳,重新训练。

在 Roboflow 合并了多个同类型数据集,图片数据量 达到 4000+。 

4.2 调整参数重新训练

使用最新的数据集执行训练,调整 训练图片尺寸 [1280, 720], 调整线程同步数量为2后执行速度快了一倍,每个epoch的时长有4分钟降低为了2分钟。

如果想改目标检测的类名,直接改yaml的文件的类别就可以 直接改类名,标注文件使用的是0,1,2这种index, 所以直接改数据集的yaml文件即可:

五 报错

5.1 wandb 报错

pip install --upgrade wandb

5.2 protobuf 版本问题

protobuf 5.26.1

 六 结果 (使用本项目数据集自己标注后训练)

把所有图片使用检测框标注,然后做训练,最后使用模型进行预测,然后对检测框做过滤,去掉不相干的,效果贼好,标了100多张吧。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值