avatar

云中有鹿来

心上无垢、林间有风

  • 首页
  • 标签
  • 小小项目
  • 归档
  • 个人简历
Home [YOLO v5]在隧道雷达DZT预测中的应用
文章

[YOLO v5]在隧道雷达DZT预测中的应用

Posted 2021-08-4 Updated 2023-07- 15
[YOLO v5]在隧道雷达DZT预测中的应用
By chenyun
20~26 min read

YOLO v5在隧道雷达DZT预测中的应用

YOLO v5训练自己数据集详细教程

🐛 🐛 现在YOLOv5 已经更新到5.0版本了,但是其训练方式同本Repo是一致的,只需要按照对应版本安装对应Python环境即可,其数据集的构建,配置文件的修改,训练方式等完全与本Repo一致!

西南交大-计算机与人工智能学院-1806

2021/08/27

本项目描述了雷达隧道检测dzt文件如何使用进行YOLO v5训练,下面是YOLOv5 的一些基础信息

但是YOLO v4的二作提供给我们的信息和官方提供的还是有一些出入:

0.环境配置

安装必要的python package和配置相关环境

pip3 install -U -r requirements.txt
具体环境如下:
absl-py                 0.13.0
cachetools              4.2.2
certifi                 2021.5.30
charset-normalizer      2.0.4
click                   8.0.1
cycler                  0.10.0
Cython                  0.29.24
Flask                   2.0.1
Flask-Cors              3.0.10
google-auth             1.35.0
google-auth-oauthlib    0.4.5
grpcio                  1.39.0
idna                    3.2
importlib-metadata      4.7.0
itsdangerous            2.0.1
Jinja2                  3.0.1
kiwisolver              1.3.1
Markdown                3.3.4
MarkupSafe              2.0.1
matplotlib              3.4.3
numpy                   1.21.2
oauthlib                3.1.1
opencv-python           4.5.3.56
pandas                  1.3.2
Pillow                  8.3.1
pip                     21.0.1
protobuf                3.17.3
pyasn1                  0.4.8
pyasn1-modules          0.2.8
pycocotools             2.0.2
pyparsing               2.4.7
python-dateutil         2.8.2
pytz                    2021.1
PyYAML                  5.4.1
requests                2.26.0
requests-oauthlib       1.3.0
rsa                     4.7.2
scipy                   1.7.1
seaborn                 0.11.2
setuptools              52.0.0.post20210125
six                     1.16.0
tensorboard             2.6.0
tensorboard-data-server 0.6.1
tensorboard-plugin-wit  1.8.0
thop                    0.0.31.post2005241907
torch                   1.9.0
torchvision             0.10.0
tqdm                    4.62.2
typing-extensions       3.10.0.0
urllib3                 1.26.6
Werkzeug                2.0.1
wheel                   0.37.0
zipp                    3.5.0

1.创建数据集的配置文件 DZT.yaml

找到[data/dzt.yaml]可以基于该yaml修改自己数据集的yaml文件,具体配置如下:

# train and val datasets (image directory or *.txt file with image paths)
train: /Users/chenyun/test/YOLO-v5/datasets/yolov5_dzt_data/images/train/ #修改数据集位置
val: /Users/chenyun/test/YOLO-v5/datasets/yolov5_dzt_data/images/train/

# 目前就2个分类,空动和不密实
nc: 2
# class names
names: ['tuokong','bumishi']

2.导出标注文件

在隧道雷达标注系统中标记完成图片之后,在浏览器运行**“http://0.0.0.0:5000/admin/dzt/yolov5**”,运行导出标记线程。同时注意查看控制台信息,待控制台导出完成之后,到 标记系统applications/static/yolov5_data 目录查看导出的训练标注文件。其中label目录中创建的*.txt文件遵循如下规则:

  • 每一行存放一个标注类别
  • 每一行的内容包括class x_center y_center width height
  • Bounding box 的坐标信息是归一化之后的(0-1)
  • class label转化为index时计数是从0开始的

每一个标注*.txt文件存放在和图像相似的文件目录下,只需要将/images/*.jpg替换为/lables/*.txt即可(这个在加载数据时代码内部的处理就是这样的,可以自行修改为VOC的数据格式进行加载)

例如:

datasets/score/images/train/000000109622.jpg  # image
datasets/score/labels/train/000000109622.txt  # label

如果一个标注文件包含2个中空类别:

3.组织训练集的目录

将训练集train和验证集val的images和labels文件夹按照如下的方式进行存放

至此数据准备阶段已经完成,过程中我们假设算法工程师的数据清洗和数据集的划分过程已经自行完成。

4.选择模型backbone进行模型配置文件的修改

在项目的./models文件夹下选择一个需要训练的模型,这里我们选择yolov5s.yaml,最大的一个模型进行训练,参考官方README中的table,了解不同模型的大小和推断速度。如果你选定了一个模型,那么需要修改模型对应的yaml文件

# parameters
nc: 3  # number of classes   <------------------  UPDATE to match your dataset
depth_multiple: 1.33  # model depth multiple
width_multiple: 1.25  # layer channel multiple

# anchors
anchors:
  - [10,13, 16,30, 33,23]  # P3/8
  - [30,61, 62,45, 59,119]  # P4/16
  - [116,90, 156,198, 373,326]  # P5/32

# yolov5 backbone
backbone:
  # [from, number, module, args]
  [[-1, 1, Focus, [64, 3]],  # 1-P1/2
   [-1, 1, Conv, [128, 3, 2]],  # 2-P2/4
   [-1, 3, Bottleneck, [128]],
   [-1, 1, Conv, [256, 3, 2]],  # 4-P3/8
   [-1, 9, BottleneckCSP, [256]],
   [-1, 1, Conv, [512, 3, 2]],  # 6-P4/16
   [-1, 9, BottleneckCSP, [512]],
   [-1, 1, Conv, [1024, 3, 2]], # 8-P5/32
   [-1, 1, SPP, [1024, [5, 9, 13]]],
   [-1, 6, BottleneckCSP, [1024]],  # 10
  ]

# yolov5 head
head:
  [[-1, 3, BottleneckCSP, [1024, False]],  # 11
   [-1, 1, nn.Conv2d, [na * (nc + 5), 1, 1, 0]],  # 12 (P5/32-large)

   [-2, 1, nn.Upsample, [None, 2, 'nearest']],
   [[-1, 6], 1, Concat, [1]],  # cat backbone P4
   [-1, 1, Conv, [512, 1, 1]],
   [-1, 3, BottleneckCSP, [512, False]],
   [-1, 1, nn.Conv2d, [na * (nc + 5), 1, 1, 0]],  # 17 (P4/16-medium)

   [-2, 1, nn.Upsample, [None, 2, 'nearest']],
   [[-1, 4], 1, Concat, [1]],  # cat backbone P3
   [-1, 1, Conv, [256, 1, 1]],
   [-1, 3, BottleneckCSP, [256, False]],
   [-1, 1, nn.Conv2d, [na * (nc + 5), 1, 1, 0]],  # 22 (P3/8-small)

   [[], 1, Detect, [nc, anchors]],  # Detect(P3, P4, P5)
  ]

5.训练

#运行
$ python3 train.py --img-size 640 --batch-size 16 --epochs 300 --data ./data/dzt.yaml --cfg ./models/yolov5s.yaml

6.可视化

开始训练后,查看train*.jpg图片查看训练数据,标签和数据增强,如果你的图像显示标签或数据增强不正确,你应该查看你的数据集的构建过程是否有问题

一个训练epoch完成后,查看test_batch0_gt.jpg查看batch 0 ground truth的labels

查看test_batch0_pred.jpg查看test batch 1的预测

训练的losses和评价指标被保存在Tensorboard和results.txtlog文件。results.txt在训练结束后会被可视化为results.png

>>> from utils.utils import plot_results
>>> plot_results()
# 如果你是用远程连接请安装配置Xming: https://blog.csdn.net/akuoma/article/details/82182913

7.推断

$ python detect.py --weights yolov5s.pt #训练出的模型权重 
                                        --source file.jpg  # image 
                            ./dir  # directory

输出预测结果下如图:

8.相关技术
[1].https://github.com/ultralytics/yolov5
[2].https://github.com/ultralytics/yolov5/wiki/Train-Custom-Data

小小项目, 深度学习
License:  CC BY 4.0
Share

Further Reading

May 10, 2023

使用Golang编写Windows小工具

这段代码是一个用于将派工明细文件同步到MES系统的程序插件。它包含了一些结构体和方法,用于处理文件上传和解析HTTP响应。在main函数中,程序首先获取当前目录并读取配置文件。然后,它遍历指定目录下的文件,找到当天发生变动的派工明细文件。接下来,程序使用多线程并发地读取文件,并将文件内容上传到MES

May 31, 2022

垃圾分类对比分析实验过程及结果

垃圾分类对比分析实验过程及结果设计了三个实验进行对比实验分析

May 31, 2022

嵌入式项目汇总

OLDER

下肢动脉粥样硬化闭塞性疾病预测

NEWER

隧道雷达标记预测系统

Recently Updated

  • 理解设计原则
  • MySQL知识点
  • 面试知识点总结
  • JVM相关
  • 分布式事务锁

Trending Tags

flowable 设计模式 摸鱼小项目 物体检测 考研 机器学习 前端 全栈 垃圾分类 青城山

Contents

©2023 云中有鹿来. Some rights reserved.

Using the Halo theme Chirpy