基于yolov5的车辆行人道路检测
一、数据集介绍
本实验使用自动驾驶的公开数据集BDD100K。
数据格式:BDD100K 数据集包含10万段高清视频,每个视频约40秒\720p\30 fps,总时间超过1,100小时。视频序列还包括GPS位置、IMU数据和时间戳;视频带有由手机记录的GPS/IMU信息,以显示粗略的驾驶轨迹,这些视频分别是从美国不同的地方收集的,并涵盖了不同的天气状况,包含晴天、阴天和雨天以及在白天和夜天的不同时间。每个视频的第10秒对关键帧进行采样,主要有这些标记:图像标签、道路对象边界框、可驾驶区域、车道标记和全帧实例分割,最终得到10万张图片(图片尺寸:1280*720 ),并进行标注。7万张图片为训练集,1万张图片为验证集,2万张为测试集。
标签类别:数据集中的GT框标签共有13个类别,分别为:person , rider , car , bus ,truck , bike , motor , tl_green , tl_red , tl_yellow , tl_none , t_sign , train ,总共约有184万个标定框。
"
"图1 图片标记
二、模型介绍yolov5
"
"图2 yolov5模型图
YOLO网络由三个主要组件组成:
1)Backbone -在不同图像细粒度上聚合并形成图像特征的卷积神经网络。
2)Neck:一系列混合和组合图像特征的网络层,并将图像特征传递到预测层。
3)Head: 对图像特征进行预测,生成边界框和并预测类别。
输入端-输入端表示输入的图片。该网络的输入图像大小为608*608,该阶段通常包含一个图像预处理阶段,即将输入图像缩放到网络的输入大小,并进行归一化等操作。在网络训练阶段,YOLOv5使用Mosaic数据增强操作提升模型的训练速度和网络的精度;并提出了一种自适应锚框计算与自适应图片缩放方法。
基准网络-基准网络通常是一些性能优异的分类器种的网络,该模块用来提取一些通用的特征表示。YOLOv5中不仅使用了CSPDarknet53结构,而且使用了Focus结构作为基准网络。
Neck网络-Neck网络通常位于基准网络和头网络的中间位置,利用它可以进一步提升特征的多样性及鲁棒性。虽然YOLOv5同样用到了SPP模块、FPN+PAN模块,但是实现的细节有些不同。
Head输出端-Head用来完成目标检测结果的输出。针对不同的检测算法,输出端的分支个数不尽相同,通常包含一个分类分支和一个回归分支。YOLOv4利用GIOU_Loss来代替Smooth L1 Loss函数,从而进一步提升算法的检测精度。
"
"图3 不同模型的性能对比
在yolov5目录下的model文件夹下是模型的配置文件,根据模型的规模不同设有4个模型:v5s、v5m、v5l、v5x,如上图所示是这些不同规模的模型与EfficientDet模型的性能对比图,性能逐渐增大(随着架构的增大,训练时间也是逐渐增大)。由于硬件设备有限,因此本文主要使用v5s的较小模型进行实验。
三、实现流程
"
"图4 实现流程图
具体步骤:
- 下载bdd100k数据集,包括图片和标注文件。
- 安装yolov5,下载预训练模型。
- 将bdd100k数据集转换为yolov5可读取的格式。
- 上传华为云,对预训练后的模型进行训练和测试。
- 对训练和测试结果进行分析和评估,可以使用各种评估指标来评估模型的性能,例如精度、召回率、F1值等。
四、数据预处理
读取数据,只取需要的13个标签,去除不必要的数据(天气情况等),将数据转化为coco格式,该格式是一种常用的图像识别和物体检测数据集格式。再将得到的coco格式数据转化为yolo格式,以txt存储,其中包含五个数据。将每张图片中含有的标签合集作为一个txt保存。
"
"图5 数据预处理后格式
如上图所示,每个目标对应的bounding box包含信息:
- bounding box中心x坐标x_center,
- bounding box中心y坐标y_center,
- bounding box的宽width,
- bounding box的高height。
需要注意几点: - 这4个信息均要被归一化为0-1之间的值,
- 这4个信息前加上目标类别class总共5列信息即TXT文件中的标签信息,
- 类别的索引从0开始。
五、模型训练
1、定义yolov5检测器
img: 定义输入图像的大小
batch: 确定批次的大小
epochs: 定义训练周期的数量
data: 设置.yaml文件路径
cfg: 指定模型配置
weights: 指定权重的自定义路径
name: 结果名称
nosave: 仅保存最终检查点
cache: 缓存图像以加速训练速度
2、训练方式
(1)从头开始训练
“
”
图6 预训练
该处使用yolov5s.pt预训练模型训练了300个epochs,其中设置的图片大小为640*640,batch(size)设为32。其性能评估结果如下图所示:
(2)迁移学习
"
"图8 迁移学习训练
迁移学习是一种将一个训练模型学习到的表征或信息用于另一个需要针对不同数据和相似或不同任务进行训练的模型的方法。这里我们使用的是yolov5s.pt权重文件。训练时所使用的是华为云平台,将预处理完成后的yolo格式文件的数据包以zip导入并解压后,下载yolov5预处理权重后对数据进行训练。Epoch设定为230,运行时间总长约120h+。
①部分训练数据的可视化如下图:
"
"图9 训练数据的可视化
②训练集ground truth(带标签):
"
"图10 标记图
③验证集预测结果(含置信度): 图为第一批验证集
"
"图11 预测图
六、模型测试
利用训练好的模型权重在验证集上进行测验,输出分类结果。20000张图片每张图像中含有的类别,及每个类别所含有的数量。
"
"图12 训练过程
测试集上预测结果如下图所示:
"
"图13 预测结果
七、模型评价指标
1、评价指标定义
①GIoU Loss :目标检测损失函数
GIoU的目标相当于在损失函数中加入了一个ground truth和预测框构成的闭包的惩罚,它的惩罚项是闭包减去两个框的并集后的面积在闭包中的比例越小越好,如图3所示,闭包是红色虚线的矩形,我们要最小化阴影部分的面积除以闭包的面积。
②边框回归:采用了CIoU
③Objectness:置信度损失,采用了BCEWithLogitsLoss和CIoU,用于监督grid中是否存在物体,计算网络的置信度
④Classification:分类损失,采用了交叉熵损失函数BCEWithLogitsLoss
⑤Precision:精确度
⑥Recall:召回率
⑦MAP:全类平均正确率,对所有类别检测的平均正确率(AP)进行综合加权平均。
"
"图14 初始与GloU、DloU、CloU的对比
2、可视图对比
①官方结果:
"
"图15 初始评价指标可视化
②自训练时epoch设定为230的结果:
"
"图16 train_GIOU_loss、val_GIOU_loss、train_obj_loss
" "图17 val_obj_loss、train_cls_loss、val_cls_loss
" "图18 MAP、precision、recall
由图可得,训练集和测试集的目标检测损失函数和置信度损失最终均下降至0.04左右,分类损失则下降到0.008左右,MAP近似于0.47,recall近似于0.55。
编写不易,求个点赞!!!!!!!
“你是谁?”“一个看帖子的人。”“看帖子不点赞啊?”“你点赞吗?”“当然点了。”“我也会点。”“谁会把经验写在帖子里。”“写在帖子里的那能叫经验贴?”“上流!”
cheer!!!
基于yolov5的车辆行人道路检测相关推荐
- 【小白CV教程】YOLOv5+Deepsort实现车辆行人的检测、追踪和计数
[小白CV教程]YOLOv5+Deepsort实现车辆行人的检测.追踪和计数 本文禁止转载! 项目简介: YOLOv5检测器: DeepSort追踪器: 运行demo: 训练自己的模型: 调用接口: ...
- 基于YOLOv5的智慧工地安全帽检测(1)
基于YOLOv5的智慧工地安全帽检测 数据集+代码下载地址:下载地址
- 基于YOLOV5的FPS类游戏检测auto aim
FPSAutomaticAiming--基于YOLOV5的FPS类游戏检测auto aim Github地址:github 简介 本项目基于yolov5,实现了一款FPS类游戏的检测,旨在使用现有网络 ...
- 基于yolov5的Android版本目标检测app开发(部署安卓手机)
基于yolov5的Android版本目标检测app开发(部署安卓手机) 0.项目开发需求 (1)开发app部署到安卓手机 (2)支持VOC数据集上所有的目标检测 1.开发环境搭建 windows10+ ...
- 基于YOLOv5和U-NET的火灾检测与分割
1.文章信息 本次介绍的文章是发表在EUSIPCO 2021的一篇基于计算机视觉的火灾检测文章. 2.摘要 当今世界面临的环境危机是对人类的真正挑战.对人类和自然的一个显著危害是森林火灾的数量不断增加 ...
- 基于yolov5的交通标志牌的目标检测研究设计——思路及概念
有需要项目的可以私信博主!!!!! 一.选题的目的.意义及研究现状 (1)选题的目的和意义 随着人们对道路安全性的重视和城市交通量的不断增加,交通标志牌作为道路交通安全的重要组成部分之一,扮演着十分重 ...
- 基于YOLOv5的输电线路绝缘子缺陷检测项目
目录 1 项目背景 2 图像数据集介绍 3 模型训练部分 4 模型性能测试 1 项目背景 随着输电网络规模不断增大,输电线路巡检任务日益加重,实现输电 线路的高效率巡检已刻不容缓.传统的巡检技术较为落 ...
- 基于深度学习的无人驾驶道路检测
最近在自学深度学习,网上有很多计算机视觉比赛和资源,比如kaggle,天池 ,百度飞浆,paddle现在做得越来越好,于是我就选择了百度飞浆,支持国产开源框架,也自己跑通了代码,以此记录一下学习过程, ...
- 基于Yolov5的玻璃瓶盖缺陷检测
1.数据集介绍 缺陷类型:cap 数据集数量:125张 数据集:https://download.csdn.net/download/m0_63774211/87741211 1.1 通过spli ...
最新文章
- spring-data-redis工程
- 计算机辅助普通话水平测试评分办法,江苏省计算机辅助普通话水平测试评分细则...
- VMware报错“锁定文件失败“解决方法
- LeetCode90. 子集 II(回溯)
- 提取pdf文件文本:pdfparser与xpdf具体操作
- 计算机应用基础doc,计算机应用基础.doc
- php常用数组,php常用数组函数
- ppt太大怎么压缩变小一点?
- Xcel 测试版使用手册
- 来吧,我是BOSS!
- 华为应用市场Android客户端,华为应用市场官方安卓最新版
- Mac设置顶部菜单栏技巧?
- python好用的软件_比python好用的分析软件_财务分析报表怎么做_企业财务报表分析软件-帆软...
- Java实战之继承与多态
- java web应用实现扫码枪获取信息
- SQL Compare数据库比较工具 完全破解+使用教程
- 楚留香服务器维护,【楚留香】4月20日维护公告
- 网站用户体验研究:新窗口打开链接还是当前窗口打
- JAVA学习笔记(三)
- Sentinel限流