yolov5训练自己的数据集

一、安装环境

1.1 安装Python和Anaconda

首先,确保你的系统上安装了Python 3.8或更高版本。推荐使用Anaconda进行环境管理。
下载并安装Anaconda:访问Anaconda官网 ,根据你的操作系统选择合适的安装包进行安装。

1.2 创建虚拟环境

打开Anaconda Prompt或终端,输入以下命令创建一个新的虚拟环境:

conda create -n yolov5_env python=3.8

1.3 激活虚拟环境:

conda activate yolov5_env

1.4 安装依赖包

使用pip安装YOLOv5所需的依赖包。YOLOv5的依赖包列表通常包含在项目根目录的requirements.txt文件中。
输入以下命令安装依赖:

pip install -r requirements.txt

如果遇到安装问题,可以尝试升级pip:

python -m pip install --upgrade pip

1.5 安装PyTorch

YOLOv5基于PyTorch框架,因此需要安装PyTorch。根据你的GPU情况选择合适的版本:
如果有NVIDIA GPU并安装了CUDA驱动,安装带CUDA支持的PyTorch:

pip install torch torchvision torchaudio --extra-index-url https://download.pytorch.org/whl/cu113

如果没有GPU,安装CPU版本:

pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cpu

验证安装是否成功:

import torch
print(torch.__version__)
print(torch.cuda.is_available())  # 如果输出为True,则表示GPU可用

二、下载YOLOv5代码

2.1 克隆YOLOv5仓库

打开终端,进入你希望存放项目的目录,运行以下命令克隆YOLOv5的GitHub仓库:

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

进入项目目录:

cd yolov5

2.2 下载预训练权重

YOLOv5提供了多种预训练模型,可以直接使用这些权重进行迁移学习。例如,下载YOLOv5s的预训练权重:

wget https://github.com/ultralytics/yolov5/releases/download/v6.0/yolov5s.pt

三、在PyCharm中导入YOLOv5

3.1 安装PyCharm

如果你还没有安装PyCharm,可以从JetBrains官网下载并安装 。

3.2 导入项目

打开PyCharm,选择“File” > “Open”,然后导航到YOLOv5项目的根目录,选择yolov5文件夹,点击“OK”导入项目。

3.3 配置虚拟环境

在PyCharm中,点击右上角的“Python”图标,选择“Add Local”,然后导航到你之前创建的虚拟环境的解释器路径(例如:Anaconda3/envs/yolov5_env/python.exe)。
确保PyCharm使用的是你创建的虚拟环境。

3.4 安装依赖包

在PyCharm的终端中,运行以下命令安装项目依赖:

pip install -r requirements.txt

四、准备数据集

4.1 收集数据

收集与你任务相关的图片数据。例如,如果你要训练一个检测猫的模型,收集包含猫的图片。
建议使用至少1000张高质量的图片,并确保数据集中包含各种光照条件、角度和背景。

4.2 数据清洗

删除模糊、不相关的图片。确保所有图片的分辨率一致,或者在数据增强阶段进行统一处理。

4.3 数据标注

使用标注工具(如LabelImg、CVAT等)对图片进行标注。YOLOv5使用的是VOC格式的标注文件。
每个标注文件对应一张图片,文件名为图片名,后缀为.txt,内容为每行一个目标的类别ID和边界框坐标(归一化为0-1的范围)。

4.4 组织数据集

将数据集分为训练集、验证集和测试集。
数据集的组织结构如下:
yolov5/
├── datasets/
│ ├── train/
│ │ ├── images/
│ │ │ └── *.jpg
│ │ └── labels/
│ │ └── *.txt
│ ├── val/
│ │ ├── images/
│ │ │ └── *.jpg
│ │ └── labels/
│ │ └── *.txt
│ └── test/
│ ├── images/
│ │ └── *.jpg
│ └── labels/
│ └── *.txt

4.5 数据增强

YOLOv5内置了多种数据增强方法,可以在训练时自动应用。你可以在配置文件中启用或调整这些增强参数。

五、修改配置文件

5.1 配置文件位置

YOLOv5的配置文件位于yolov5/models/目录下,文件名以.yaml结尾(如yolov5s.yaml)。

修改配置文件

打开配置文件,修改以下参数:

  • nc: 类别数量(例如,检测猫则设为1)。
  • names: 类别名称列表(例如,[‘cat’])。
  • train和val的路径:指向你的训练集和验证集的路径。
  • weights: 预训练权重文件的路径(如yolov5s.pt)。
  • batch_size: 根据你的GPU内存调整,通常为16或32。
  • epochs: 训练的轮数,建议至少100轮。
  • optimizer: 通常使用Adam,但也可以尝试SGD。
  • lr0: 初始学习率,通常为0.001或0.0001。

示例配置文件


# 模型参数
nc: 1
names: ['cat']

# 数据参数
train: ../datasets/train/images/
val: ../datasets/val/images/
names: ../datasets/train/labels/

# 训练参数
batch_size: 32
epochs: 100
optimizer: Adam
lr0: 0.001

六、开始训练

6.1 运行训练脚本

在终端中,进入YOLOv5项目根目录,运行以下命令开始训练:

python train.py --data datasets/train.yaml --weights yolov5s.pt --cfg models/yolov5s.yaml --img 640 --batch 32 --epochs 100 --name cat_yolov5
  • –data: 数据集配置文件的路径。
  • –weights: 预训练权重文件的路径。
  • –cfg: 模型配置文件的路径。
  • –img: 输入图像的分辨率。
  • –batch: 批量大小。
  • –epochs: 训练的轮数。
  • –name: 训练的名称,用于保存结果。

6.2 监控训练过程

YOLOv5会在训练过程中输出损失值、学习率等信息。你可以在runs/train/目录下查看训练日志和模型权重文件。

6.3 调整超参数

  • 如果发现模型过拟合,可以尝试减少学习率、增加数据增强或使用正则化方法。
  • 如果模型表现不佳,可以增加训练轮数或调整批量大小。

七、模型验证和评估

7.1 验证模型

训练完成后,运行以下命令使用验证集评估模型性能:

python val.py --weights runs/train/cat_yolov5/weights/best.pt --data datasets/val.yaml --img 640 --name val_cat

结果会保存在runs/val/目录下,包括mAP、mAR等指标。

7.2 查看评估结果

  • 打开runs/val/val_cat/results.txt文件,查看模型的评估指标。
  • 如果模型性能不理想,可以尝试调整超参数或增加数据集大小。

7.3 优化检测阈值

根据实际需求调整置信度阈值(–conf-thres)和IoU阈值(–iou-thres):

python detect.py --weights runs/train/cat_yolov5/weights/best.pt --source datasets/test/images/ --conf 0.5 --iou 0.5

八、模型导出和部署

8.1 导出模型

将训练好的模型导出为ONNX格式,以便在其他环境中使用:

python export.py --weights runs/train/cat_yolov5/weights/best.pt --include onnx

导出的ONNX模型位于runs/export/目录下。

8.2 部署模型

使用导出的ONNX模型进行推理。以下是一个使用Python和ONNX Runtime进行推理的示例代码:

import cv2
import numpy as np
import onnxruntime as ort

# 加载模型
session = ort.InferenceSession('runs/export/onnx/best.onnx')
input_name = session.get_inputs()[0].name

# 读取图片
image = cv2.imread('test.jpg')
image = cv2.cvtColor(image, cv2.COLOR_BGR2RGB)
image = cv2.resize(image, (640, 640))
image = np.transpose(image, (2, 0, 1)).astype(np.float32)
image = image / 255.0
image = np.expand_dims(image, axis=0)

# 执行推理
output = session.run(None, {input_name: image})[0]

# 处理输出
# 根据模型输出格式进行后处理,例如解码边界框和类别

九、常见问题及解决方法

9.1 显存不足

减小批量大小(batch_size)或图像分辨率(–img)。
使用混合精度训练:

python train.py --data datasets/train.yaml --weights yolov5s.pt --cfg models/yolov5s.yaml --img 640 --batch 32 --epochs 100 --name cat_yolov5 --adam 0.001 --amp

9.2 数据加载错误

  • 检查数据集路径是否正确。
  • 确保标注文件格式正确,且每行的类别ID在0到nc-1之间。

9.3 模型性能不佳

  • 增加训练数据集的大小。
  • 调整学习率和优化器。
  • 尝试不同的模型架构(如YOLOv5m或YOLOv5l)。

十、总结

通过本教程,你已经掌握了使用YOLOv5训练自己的数据集的完整流程,包括安装环境、下载代码、准备数据集、配置参数、训练模型、验证评估以及模型部署。希望这篇教程能帮助你顺利实现自己的目标检测任务!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

深图智能

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

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

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

打赏作者

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

抵扣说明:

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

余额充值