README.md 4.95 KB
Newer Older
dcuai's avatar
dcuai committed
1
# YOLOv8
dengjb's avatar
dengjb committed
2
3
4
## 论文

## 模型结构
dengjb's avatar
dengjb committed
5
yolov8是一种单阶段目标检测算法,该算法在YOLOV5的基础上添加了一些新的改进思路,使其速度与精度都得到了极大的性能提升。<br>
dengjb's avatar
dengjb committed
6
![block.jpg](asserts%2Fblock.jpg)
dengjb's avatar
dengjb committed
7
8
9
10
11
12
## 算法原理
YOLOv8算法通过将图像划分为不同大小的网格,预测每个网格中的目标类别和边界框,利用特征金字塔结构和自适应的模型缩放来实现高效准确的实时目标检测。
- 骨干网络和 Neck 部分将 YOLOv5 的 C3 结构换成了梯度流更丰富的 C2f 结构,并对不同尺度模型调整了不同的通道数,大幅提升了模型性能。
- Head 部分相比 YOLOv5 改动较大,换成了目前主流的解耦头结构,将分类和检测头分离,同时也从 Anchor-Based 换成了 Anchor-Free.
- Loss 计算方面采用了 TaskAlignedAssigner 正样本分配策略,并引入了 Distribution Focal Loss.
- 训练的数据增强部分引入了 YOLOX 中的最后 10 epoch 关闭 Mosiac 增强的操作,可以有效地提升精度
dengjb's avatar
dengjb committed
13
![model_framework.png](asserts%2Fmodel_framework.png)
dengjb's avatar
dengjb committed
14
15
## 环境配置
### Docker(方法一)
dengjb's avatar
dengjb committed
16

dengjb's avatar
dengjb committed
17
18
19
20
21
22
23
24
25
26
27
```
docker pull image.sourcefind.cn:5000/dcu/admin/base/pytorch:2.1.0-centos7.6-dtk24.04-py310
docker run -it -v /path/your_code_data/:/path/your_code_data/ -v /opt/hyhal/:/opt/hyhal/:ro --shm-size=80G --privileged=true --device=/dev/kfd --device=/dev/dri/ --group-add video --name docker_name imageID bash

cd /your_code_path/yolov8_pytorch
pip install -e . -i https://mirrors.aliyun.com/pypi/simple/

```
### Dockerfile(方法二)
```
cd ./docker
dengjb's avatar
dengjb committed
28
docker build --no-cache -t yolov8:last .
dengjb's avatar
dengjb committed
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
docker run -it -v /path/your_code_data/:/path/your_code_data/ -v /opt/hyhal/:/opt/hyhal/:ro --shm-size=80G --privileged=true --device=/dev/kfd --device=/dev/dri/ --group-add video --name docker_name imageID bash
cd /your_code_path/yolov8_pytorch
pip install -e . -i https://mirrors.aliyun.com/pypi/simple/
```
### Anaconda(方法三)
1、关于本项目DCU显卡所需的特殊深度学习库可从光合开发者社区下载安装: https://developer.hpccube.com/tool/
```
DTK软件栈: dtk24.04
python: python3.10
torch: 2.1
```

Tips:以上dtk软件栈、python、torch、mmcv等DCU相关工具版本需要严格一一对应

2、其他非特殊库直接按照requirements.txt安装

```
cd /your_code_path/yolov8_pytorch
pip install -e . -i https://mirrors.aliyun.com/pypi/simple/
```

## 数据集
chenzk's avatar
chenzk committed
51
COCO2017(在网络良好的情况下,如果没有下载数据集,程序会默认在线下载数据集):
dengjb's avatar
dengjb committed
52

chenzk's avatar
chenzk committed
53
54
训练数据快速下载中心:[SCNet AIDatasets](https://www.scnet.cn/ui/aihub/datasets) ,项目中的训练数据下载地址[COCO2017](https://www.scnet.cn/ui/aihub/datasets/yiziqinx/COCO2017)

dengjb's avatar
dengjb committed
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
[训练数据](http://images.cocodataset.org/zips/train2017.zip)

[验证数据](http://images.cocodataset.org/zips/val2017.zip)

[测试数据](http://images.cocodataset.org/zips/test2017.zip)

[标签数据](https://github.com/ultralytics/yolov5/releases/download/v1.0/coco2017labels.zip)

数据集的目录结构如下:

```
├── images 
│   ├── train2017
│   ├── val2017
│   ├── test2017
├── labels
│   ├── train2017
│   ├── val2017
├── annotations
│   ├── instances_val2017.json
├── LICENSE
├── README.txt 
├── test-dev2017.txt
├── train2017.txt
├── val2017.txt

```
我们通过了coco128数据集,供验证训练使用,如需正式使用,请下载完整COCO数据集或使用定制化数据集。
```bash
cd /your_code_path/yolov8_pytorch
cd datasets/
unzip  coco128.zip
```
## 训练
- 数据集放置位置默认为当前目录下 datasets/
- 如需要正式训练COCO2017请修改[coco.yaml](ultralytics%2Fcfg%2Fdatasets%2Fcoco.yaml)下的 path
- 当前使用coco128.yaml进行训练测试[coco128.yaml](ultralytics%2Fcfg%2Fdatasets%2Fcoco128.yaml)
### 单机四卡
```bash
cd /your_code_path/yolov8_pytorch
chmod -R 7777 train_multi.sh 
bash ./train_multi.sh
dengjb's avatar
dengjb committed
97
98
# 若遇到dataset路径找不到的报错,修改官方默认的dataset数据集地址 datasets_dir: /home/yolov8_pytorch/
vim /root/.config/Ultralytics/settings.yaml
dengjb's avatar
dengjb committed
99
100
101
102
103
104
105
106
107
108
109
110
```
### 单机单卡
```bash
cd /your_code_path/yolov8_pytorch
chmod -R 7777 train.sh 
bash ./train.sh
```
## 推理
- 可使用官方模型权重进行推理,也可使用自己训练模型权重进行推理
- 这里以官方模型推理举例[[下载地址:yolov8s.pt](https://github.com/ultralytics/assets/releases/download/v8.2.0/yolov8s.pt)]
```bash
# 官方推理代码
dcuai's avatar
dcuai committed
111
HIP_VISIBLE_DEVICES=0 python inference.py
dengjb's avatar
dengjb committed
112
113
114
115
116
117
```
## result
![result.jpg](asserts%2Fresult.jpg)
### 精度
|  模型名称   |      amp混精       | Box AP |
|:------:|:----------------:|:------:|
dengjb's avatar
dengjb committed
118
| yolo8s |        on        |  44.1   |
dengjb's avatar
dengjb committed
119
120
121
122
123
124
125
126
127
128

## 应用场景
### 算法类别
`目标检测`
### 热点应用行业
`金融,交通,教育`
## 源码仓库及问题反馈
- https://developer.hpccube.com/codes/modelzoo/yolov8_pytorch
## 参考资料
- https://github.com/ultralytics/ultralytics