Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
acqpriwny1
yolov5-pytorch
Commits
aebcc5d4
Commit
aebcc5d4
authored
Jul 22, 2023
by
acqpriwny1
Browse files
Update README.md
parent
0d79aeb5
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
116 additions
and
76 deletions
+116
-76
README.md
README.md
+116
-76
No files found.
README.md
View file @
aebcc5d4
# 模型名称(此处需修改,用英文全称与简写)
# YOLOV5测试
## 模型介绍
此处填写模型介绍。
## 1.模型介绍
## 模型结构
此处简要介绍模型结构。
[
YOLO
](
https://arxiv.org/abs/1506.02640
)
(You Only Look Once)是一种流行的对象检测和图像分割模型,由华盛顿大学的Joseph Redmon和Ali Farhadi开发。YOLO 于 2015 年推出,因其高速和准确性而迅速普及。
## 数据集
此处介绍使用的数据集
-
[
YOLOv2
](
https://arxiv.org/abs/1612.08242
)
于2016年发布,通过合并批处理规范化、锚框和维度集群改进了原始模型。
-
[
YOLOv3
](
https://pjreddie.com/media/files/papers/YOLOv3.pdf
)
于 2018 年推出,使用更高效的主干网络、多个锚点和空间金字塔池化进一步增强了模型的性能。
如添加了自己写的数据集处理脚本,在此处说明脚本的使用方法:
-
[
YOLOv4
](
https://arxiv.org/abs/2004.10934
)
于 2020 年发布,引入了 Mosaic 数据增强、新的无锚检测头和新的损失函数等创新。
-
[
YOLOv5
](
https://github.com/ultralytics/yolov5
)
进一步提升了模型的性能,并增加了超参数优化、集成实验跟踪和自动导出为流行导出格式等新功能。
python xxx.py \
--args0 xxx \
## 2.模型结构
--args1 xxx \
...
YOLOv5是一种基于深度学习的目标检测算法,它的模型结构主要包括backbone、neck、head和loss四个部分。其中,backbone是用于提取特征的主干网络,neck是用于融合不同层次的特征,head是用于预测目标的检测头,loss是用于计算损失的函数。YOLOv5的模型结构相比YOLOv4有所改进,主要体现在backbone和head上。
## 训练及推理
更具体地说,YOLOv5的backbone采用CSPDarknet53网络结构,其中CSP表示Cross Stage Partial Network,它可以有效地减少参数量和计算量。neck采用FPN+PAN的结构,其中FPN表示Feature Pyramid Network,PAN表示Path Aggregation Network,它们可以将不同层次的特征进行融合。head采用YOLOv3中的anchor-based检测头,并在此基础上加入了SPP结构和SAM结构,以提高检测精度。loss采用GIOU Loss作为bounding box的损失,并使用二进制交叉熵和Logits损失函数计算类概率和目标得分的损失。
## 3.数据集
使用COCO2017数据集,COCO2017数据集是一个用于目标检测、分割、关键点检测和图像描述的数据集,由微软公司制作收集。该数据集包含超过33万张图像,其中大约20万张图像用于训练,6万张图像用于验证,7万张图像用于测试。COCO2017数据集中的物体类别共有80个,包括人、动物、交通工具、家具等。
COCO2017数据集中的每个物体都有一个矩形边界框和一个类别标签,同时还有一些物体的关键点标注和图像描述信息。COCO2017数据集的标注格式采用JSON文件存储,其中包含了每个物体的位置、类别、关键点等信息。
## 4.训练
### 环境配置
### 环境配置
提供
[
光源
](
https://www.sourcefind.cn/#/service-details
)
拉取的训练以及推理的docker镜像:
*
训练镜像:
提供光源拉取的训练镜像
*
推理镜像:
```
docker pull image.sourcefind.cn:5000/dcu/admin/base/pytorch:1.10.0-centos7.6-dtk-22.10.1-py38-latest
```
python依赖安装:
python依赖安装:
pip install -r requirement.txt
```
### 训练与Fine-tunning
pip3 install -r requirement.txt
训练命令:
```
本地安装PyTorch1.7
```
# 安装torch
pip install /public/software/apps/DeepLearning/whl/dtk-21.04/torch-1.8.0a0+56b43f4-cp37-cp37m-linux_x86_64.whl
# 安装torchvision
pip install /public/software/apps/DeepLearning/whl/dtk-21.04/torchvision-0.9.0a0-cp37-cp37m-linux_x86_64.whl
python train.py \
```
--args0 xxx \
在本地创建一个pytorch_env.sh的文件,添加环境变量:
--args1 xxx \
```
...
vi ~/pytorch_env.sh
Fine-tunning命令:
export
LD_LIBRARY_PATH=/public/software/apps/DeepLearning/PyTorch_Lib/lib:/public/software/apps/DeepLearning/PyTorch_Lib/lmdb-0.9.24-build/lib:/public/software/apps/DeepLearning/PyTorch_Lib/opencv-2.4.13.6-build/lib:/public/software/apps/DeepLearning/PyTorch_Lib/openblas-0.3.7-build/lib:$LD_LIBRARY_PATH
python train.py \
# 记得以后每次登录新的节点时,一定要执行一次source ~/pytorch_env.sh命令,这关系到服务器能不能找到PyTorch
--args0 xxx \
source ~/pytorch_env.sh
--args1 xxx \
```
...
### 预训练模型
### 预训练模型
model文件夹提供的预训练模型介绍,例如:
预训练模型均在models文件夹内
Project
├── model
### 单卡训练
│ ├── xxx.pth #pytorch预训练模型
│ ├── xxx.onnx #对应的onnx模型
```
└── └── xxx.mxr #对应的migraphx离线推理模型
export HIP_VISIBLE_DEVICES=0
### 测试
测试命令:
python train.py --data data/citrus.yaml --cfg models/yolov5s.yaml --weights weights/yolov5s.pt --epochs 150 --batch-size 4
```
python test.py \
--args0 xxx \
### 单节点多卡训练
--args1 xxx
...
```
#以单机四卡为例子
### 推理
export HIP_VISIBLE_DEVICES=0,1,2,3
推理引擎版本:
*
ONNXRuntime(DCU版本) >= x.xx.x
python3 -m torch.distributed.run --nproc_per_node 4 train.py --batch 128 --data coco.yaml --cfg 'yolov5m.yaml' --weights '' --project 'run/train' --hyp 'data/hyps/hyp.scratch-high.yaml' --device 0,1,2,3 --epochs 1000 2>&1 | tee yolov5m_4.log
*
Migraphx(DCU版本) >= x.x.x
```
#### ORT
基于ORT的推理命令:
其中--nproc_per_node参数代表卡的个数,--batch参数代表global batchsize的大小
python ORT_infer.py \
--args0 xxx \
## 推理测试
--args1 xxx \
```
...
python detect.py --source 0 # webcam
#### Migraphx
file.jpg # image
基于Migraphx的推理命令:
file.mp4 # video
path/ # directory
python Migraphx_infer.py \
path/*.jpg # glob
--args0 xxx \
'https://youtu.be/NUsoVlDFqZg' # YouTube
--args1 xxx \
'rtsp://example.com/media.mp4' # RTSP, RTMP, HTTP stream
...
```
## 性能和准确率数据
detect.py 在各种来源上运行 YOLOv5 推论,从最新的 YOLOv5 版本中自动下载模型,并将结果保存到 runs/detect 中。推理源示例如下
测试数据:
[
test data
](
链接
)
,使用的加速卡:xxx。
```
python detect.py --weights yolov5s.pt --img 640 --conf 0.25 --source data/images/
根据模型情况填写表格:
Image(filename='runs/detect/exp/zidane.jpg', width=600)
| xxx | xxx | xxx | xxx | xxx |
```
| :------: | :------: | :------: | :------: |:------: |
| xxx | xxx | xxx | xxx | xxx |
将训练好的pt文件导入weight参数中即可,推理代码如下:
| xxx | xx | xxx | xxx | xxx |
```
python3 val.py --data data/coco-v5.yaml --weights runs/train/exp12/weights/best.pt --device 0
```
## 准确率数据
| 模型 | size(pixels) | map0.5:0.95 | map0.5 |
| :-----: | :------: | :---------: | :----: |
| yolov5n | 640 | 27.9 | 46.8 |
| yolov5s | 640 | 37.2 | 57.1 |
| yolov5m | 640 | 44.3 | 64.1 |
| yolov5l | 640 | 48 | 67.3 |
| yolov5x | 640 | 49.6 | 68.6 |
## 源码仓库及问题反馈
## 源码仓库及问题反馈
*
仓库的https链接
https://developer.hpccube.com/codes/acqpriwny1/yolov-5-pytorch/
## 参考
## 参考
*
链接1
*
链接2
[GitHub - ultralytics/yolov5 at v6.1]https://github.com/ultralytics/yolov5/releases/tag/v6.1)
*
......
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment