基于yolov5的车辆行人道路检测

news2025/2/24 6:14:37

一、数据集介绍

  本实验使用自动驾驶的公开数据集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 实现流程图

  具体步骤:

  1. 下载bdd100k数据集,包括图片和标注文件。
  2. 安装yolov5,下载预训练模型。
  3. 将bdd100k数据集转换为yolov5可读取的格式。
  4. 上传华为云,对预训练后的模型进行训练和测试。
  5. 对训练和测试结果进行分析和评估,可以使用各种评估指标来评估模型的性能,例如精度、召回率、F1值等。

四、数据预处理

  读取数据,只取需要的13个标签,去除不必要的数据(天气情况等),将数据转化为coco格式,该格式是一种常用的图像识别和物体检测数据集格式。再将得到的coco格式数据转化为yolo格式,以txt存储,其中包含五个数据。将每张图片中含有的标签合集作为一个txt保存。
在这里插入图片描述"

"图5 数据预处理后格式

  如上图所示,每个目标对应的bounding box包含信息:

  1. bounding box中心x坐标x_center,
  2. bounding box中心y坐标y_center,
  3. bounding box的宽width,
  4. bounding box的高height。
      需要注意几点:
  5. 这4个信息均要被归一化为0-1之间的值,
  6. 这4个信息前加上目标类别class总共5列信息即TXT文件中的标签信息,
  7. 类别的索引从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!!!

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/576017.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【刷题之路】LeetCode 1700. 无法吃午餐的学生数量

【刷题之路】LeetCode 1700. 无法吃午餐的学生数量 一、题目描述二、解题1、思路分析2、代码实现2.1、先将队列实现一2.2、代码实现 一、题目描述 原题连接: 1700. 无法吃午餐的学生数量 题目描述: 学校的自助午餐提供圆形和方形的三明治,分…

进程信号之产生

目录 🏆一、认识信号 🏆二、信号的产生 ①通过终端按键产生信号 ②调用系统函数向进程发信号 ③由硬件异常产生信号 ④软件条件产生信号 🏆三、进程退出时的核心转储的问题 🏆一、认识信号 生活中,有很多信号…

Python 下载的 11 种姿势,一种比一种高级

今天我们一起学习如何使用不同的Python模块从web下载文件。此外,你将下载常规文件、web页面、Amazon S3和其他资源。 通过本文的学习,你将学到如何克服可能遇到的各种挑战,例如下载重定向的文件、下载大型文件、完成一个多线程下载以及其他策…

面试官:你会从哪些维度进行MySQL性能优化?

面试官如果问你:你会从哪些维度进行MySQL性能优化?你会怎么回答? 所谓的性能优化,一般针对的是MySQL查询的优化。既然是优化查询,我们自然要先知道查询操作要经过哪些环节,然后思考可以在哪些环节进行优化…

English Learning - L3 作业打卡 Lesson3 Day21 2023.5.25 周四

English Learning - L3 作业打卡 Lesson3 Day21 2023.5.25 周四 引言🍉句1: Here is another expression about meat one man’s meat is another man’s poison.成分划分连读爆破语调 🍉句2: In other words, one person might like something very muc…

postMessage引发XSS

这次的主题是postMessage未验证消息来源origin,导致恶意代码注入的dom-xss,由于很少人关注这类型的注入,因为挖掘难度中等,需要一定的javascript代码审计能力,且漏洞危害等级不高,导致国内许多SRC都存在跨域…

【计算机网络】 7、websocket 概念、sdk、实现

文章目录 一、背景二、简介三、client3.1 ws 构造函数3.2 ws.readyState3.3 ws.onopen3.4 ws.onclose3.5 ws.onmessage3.6 ws.send3.7 ws.bufferedAmount3.8 ws.onerror 四、server4.1 go4.1.1 apifox client4.1.2 js client 五、范式 一、背景 已经有了 http 协议&#xff0c…

懂点自动化基础就要25k? 测试总监:给你15K,爱来不来

公司前段缺人,也面了不少测试,结果竟然没有一个合适的。一开始瞄准的就是中级的水准,也没指望来大牛,提供的薪资在10-25k,面试的人很多,但平均水平很让人失望。看简历很多都是3年工作经验,但面试…

【C++11】C++的新特性(详解)

文章目录 1.C11简介2.统一的列表初始化2.1{}初始化2.2 std::initializer_list 3.声明3.1 auto3.2 decltype3.3 nullptr 4.范围for5.STL中一些变化5.1 array5.2 forward_list容器5.3 unordered_map和unordered_set容器 1.C11简介 相比于C98/03,C11则带来了数量可观的…

2023年武汉市职业院校技能大赛“网络安全”竞赛任务书

2023年武汉市职业院校技能大赛“网络安全” 竞赛任务书 一、竞赛时间 总计:360分钟 竞赛阶段 竞赛阶段 任务阶段 竞赛任务 竞赛时间 分值 A模块 A-1 登录安全加固 180分钟 200分 A-2 本地安全策略配置 A-3 流量完整性保护 A-4 事件监控 A-5 服…

2023年电工杯B题半成品论文使用讲解

注:蓝色字体为说明备注解释字体,不能出现在大家的论文里。黑色字体为论文部分,大家可以根据红色字体的注记进行摘抄。该文件为半成品论文,即引导大家每一步做什么,怎么做,展示按着本团队的解题思路进行建模…

Integrated LogicAnalyzer v6.2 (Vivado ILA使用方法)

Chapter 1 Overview 1.1 Feature Summary(功能摘要) FPGA设计中的信号连接到ILA核时钟和探针输入(图1-1)。这些连接到探针输入的信号以设计速度进行采样,并使用片上块RAM(BRAM)进行存储…

【旅游网】前后端分离——用户管理

1、先创建数据库,建立用户表 2、创建后端项目,这里使用Springboot,创建好controler、mapping、pojo、service四个文件,在实体里创建User类 package com.example.pjtest.Pojo;public class User {public int id_u;public Strin…

SpringBoot 之 Tomcat 与 Undertow 容器性能对比

一、前言🔥 环境说明:Windows10 Idea2021.3.2 Jdk1.8 SpringBoot 2.3.1.RELEASE 在上一篇《SpringBoot 之配置 Undertow 容器》一文中写道:“Undertow 的性能和内存使用方面都要优于 Tomcat 容器”, 这一期,我就要给大家来求证…

受不了了,被00后卷的想辞职了

在程序员职场上,什么样的人最让人反感呢? 是技术不好的人吗?并不是。技术不好的同事,我们可以帮他。 是技术太强的人吗?也不是。技术很强的同事,可遇不可求,向他学习还来不及呢。 真正让人反感的,是技术平平&…

御剑WEB指纹识别系统教程,图文教程(超详细)

「作者简介」:CSDN top100、阿里云博客专家、华为云享专家、网络安全领域优质创作者 「推荐专栏」:对网络安全感兴趣的小伙伴可以关注专栏《网络安全入门到精通》 御剑WEB指纹识别 一、基本使用二、内置字典三、自定义字典四、扫描原理 御剑WEB指纹识别系…

php html转pdf wkhtmltopdf

系统CentOS7.6 1.安装 wkhtmltopdf yum install wkhtmltopdf 看别的大佬的教程这步就已经可以正常生成,但我这边运行脚本的时候返回了 "wkhtmltopdf: cannot connect to X server" 2.安装 Xvfb yum install Xvfb 3.运行脚本 xvfb-run --server-ar…

20220912深圳市梧桐山桃花源看植物

20220912深圳市梧桐山桃花源看植物 2023/5/27 13:27 大自然生态探索之旅第3期 明天去梧桐山看植物。有空不? 交通方式: 黄贝岭地铁站C出口坐M445到终点! 02木荷 https://baijiahao.baidu.com/s?id1676100940201729045&wfrspider&fo…

人生苦短,我用Python。

人生苦短,我用Python。欢迎大家一起分享,你是如何入门Python的~ 方向一:你是如何学习/自学 Python 的? 偶然的机会接触到python,于是开始利用空闲时间学起了python。自学过2年python,有一些学习心得和避坑…

分布式事务的21种武器 - 6

在分布式系统中,事务的处理分布在不同组件、服务中,因此分布式事务的ACID保障面临着一些特殊难点。本系列文章介绍了21种分布式事务设计模式,并分析其实现原理和优缺点,在面对具体分布式事务问题时,可以选择合适的模式…