一、YOLO简介

YOLO(You Only Look Once)是一种高效的实时目标检测算法,其核心思想是将目标检测任务转化为单次神经网络前向传播的回归问题,从而实现快速且准确的多目标识别。

基于一个朋友的想法,本项目用于日常物品的目标检测检查 (仅供娱乐)

二、本地部署

1.Clone仓库

Github yolov5仓库地址

2.创建环境

推荐使用 conda 管理python环境

1
2
conda create -n yolo python=3.10    
conda activate yolo

如果你有基于GPU的CUDA,建议你安装一下torch,因为纯用CPU训练时内存往往会不足(电脑卡的要死 bushi)

1
pip install "cuda路径"

3.安装依赖

1
pip install -r requirements.txt

4.自制数据集

这里推荐线上工具 Make Sense
准备好测试图片和标签文件

将图片和标签导入,并开始标记

这里可以参考B站UP主 我是土堆的视频

5.写配置文件,开始训练

下面是我的yaml文件,可供参考

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
# Ultralytics 🚀 AGPL-3.0 License - https://ultralytics.com/license

# COCO128 dataset https://www.kaggle.com/datasets/ultralytics/coco128 (first 128 images from COCO train2017) by Ultralytics
# Example usage: python train.py --data coco128.yaml
# parent
# ├── yolov5
# └── datasets
# └── coco128 ← downloads here (7 MB)

# Train/val/test sets as 1) dir: path/to/imgs, 2) file: path/to/imgs.txt, or 3) list: [path/to/imgs1, path/to/imgs2, ..]
train: mydata/images/train # train images (relative to 'path') 128 images
val: mydata/images/train # val images (relative to 'path') 128 images
test: # test images (optional)

# Classes
names:
0: key
1: earphone
2: ID-Card
3: Umbrella
4: Book

调整train.py文件中的数据路径、batch-size、模型类型

  • 数据路径改为你的训练数据的路径
  • batch-size从16改为8(我的显卡是RTX4050,batch-size过大时会炸掉)
  • 我的模型类型选择yolov5x.pt(yolov5s.pt也可以)

现在可以开始训练了

1
2
python train.py
# 如果你有基于GPU的CUDA,你可以加入参数 python train.py --device=0

训练结束,训练结果保存至/runs/train/

6.目标检测

detect.py中的模型路径改为训练好的模型权重的路径

现在可以开始检测了

1
2
python detect.py
# 如果你有基于GPU的CUDA,你可以加入参数 python detect.py --device=0

检测结束,检测结果保存至/runs/detect/

三、效果演示