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

2023-10-27

一、数据集介绍

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

在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

基于yolov5的车辆行人道路检测 的相关文章

随机推荐

  • 基础算法题——Harder Gcd Problem(数论、思维)

    题目 题目链接 给定一个 n 将 2 n 内的数进行一对一匹配 每个数仅能利用一次 假设 a 与 b 匹配 则 gcd a b 1 现求 2 n 内最大匹配数量 并输出匹配数对 输入 T代表输入组数 下面T行 每一行一个数字n 输出 输出最
  • 数据结构之邻接表及广度优先遍历

    一 邻接表的概念 邻接表是图的一种最主要存储结构 相当于图的压缩存储 用来描述图上的每一个点 图的邻接表存储方法跟树的孩子链表示法相类似 是一种顺序分配和链式分配相结合的存储结构 如这个表头结点所对应的顶点存在相邻顶点 则把相邻顶点依次存放
  • JavaWeb --- CSS

    一 CSS技术介绍 CSS是 层样式表单 是用于 增强 控制网页样式并允许将样式信息与网页内容分离的一种标记性语言 二 CSS语法规则 三 CSS和HTML结合方式 第一种 在标签的style属性上设置key value value 修改标
  • 简单易学的机器学习算法——SVD奇异值分解

    一 SVD奇异值分解的定义 假设是一个的矩阵 如果存在一个分解 其中为的酉矩阵 为的半正定对角矩阵 为的共轭转置矩阵 且为的酉矩阵 这样的分解称为的奇异值分解 对角线上的元素称为奇异值 称为左奇异矩阵 称为右奇异矩阵 二 SVD奇异值分解与
  • 【加载静态资源很慢】解决浏览器加载静态资源阻塞

    开门见山讲方法 增加浏览器的最大并发连接数 避免静态资源的加载请求排队而被其他请求阻塞 仅测试火狐浏览器可用 Chrome据我所知不支持此项配置 IE浏览器需要通过修改组策略 未测试 正文 存在问题 今天调试网页时 网页加载缓慢 一方面主要
  • es基本配置文件详解

    基本概念 近实时 Near Realtime NRT Elasticsearch是一个接近实时的搜索平台 这意味着从索引文档的时间到可搜索的时间之间存在轻微的延迟 通常为一秒 集群 Cluster 集群是一个或多个节点 服务器 的集合 它们
  • FPGA篇(十二)仿真中 `timesclae的用法

    timescale 1ns 1ps 小实验 timescale 1ns 1ps 前面是刻度 小数点之前 后面是精度 小数点之后 一旦超过了精度 就会四舍五入 modelSim仿真 仿真代码如下所示 timescale 1ns 1ps reg
  • 关于Failed to load plugin ‘vue‘ declared in ‘.eslintrc.js‘: createRequire is not a function报错处理

    今天从git上拉了项目代码 install之后就run dev准备跑项目 突然报错TypeError Failed to load plugin vue declared in eslintrc js createRequire is no
  • 免费HTTP代理怎么样

    现在是信息时代 很多互联网场景比如爬虫信息采集 电商效果补量 网上推广等等 都离不开HTTP代理IP 而很多人第一个想到的就是免费HTTP代理 什么是代理服务器 代理服务器是介于浏览器和Web服务器之间的一台服务器 当你通过代理服务器上网浏
  • 提高机器学习模型性能的五个关键方法

    如何提高机器学习模型性能 可从五个关键方面入手 1 数据预处理 2 特征工程 3 机器学习算法 4 模型集成与融合 5 数据增强 以下是各个方面的具体分析和方法 说明 1 这里主要是各个关键方法的知识汇总梳理 便于集中学习 具体的实际应用内
  • 大数据面试知识点梳理

    1 hadoop是什么 Hadoop是一个由Apache基金会所开发的分布式系统基础架构 主要解决海量数据存储与计算的问题 其中主要包括HDFS MapReduce和Yarn框架 2 HDFS HDFS四大机制 心跳机制 安全机制 机架策略
  • PHP取整,四舍五入取整、向上取整、向下取整、小数截取

    PHP取整数函数常用的四种方法 1 直接取整 舍弃小数 保留整数 intval 2 四舍五入取整 round 3 向上取整 有小数就加1 ceil 4 向下取整 floor 一 intval 对变数转成整数型态 intval如果是字符型的会
  • linux oom日志分析,oom killer理解和日志分析:知识储备

    oom killer日志分析 这是前篇 准备一些基础知识 带着问题看 1 什么是oom killer 他是Linux内核设计的一种机制 在内存不足的会后 选择一个占用内存较大的进程并kill掉这个进程 以满足内存申请的需求 内存不足的时候该
  • composer Ratchet 实验心得

    博客迁移 时空蚂蚁http cui zhbor com 你首先要做的是把自己的PHP升级到5 3以上 需要支持命名空间 简介 Composer是PHP中用来管理依赖关系的工具 你可以在自己的项目中声明所依赖的外部工具库 libraries
  • Webpack5 基本使用和基本配置

    依赖环境 NodeJS 16 前置知识 1 对NodeJS各个核心模块操作有一定认识 比如fs path os等 2 对React和Vue有一定的认识 并且开发过项目 为什么要使用 Webpack5 开发时 我们会使用框架React Vue
  • jquery在线地址,layui在线地址,bootstrap在线地址以及把线上地址保存到本地

    前言 jquery在线地址 layui在线地址 bootstrap在线地址 以及保存到本地 jquery在线地址 3 1 1版本
  • cesium.js官网教程之中文版本~~~~第一篇

    翻译地址 https cesiumjs org tutorials Cesium Workshop 翻译者 嬴渠梁 概述 欢迎来到cesuim社区 很高兴你的到来 为了发展你自己的网络地图应用成为可能 本教程将会从头到尾的介绍一个简单的ce
  • 读书笔记:多Transformer的双向编码器表示法(Bert)-1

    多Transformer的双向编码器表示法 Bidirectional Encoder Representations from Transformers 即Bert 本笔记主要是对谷歌Bert架构的入门学习 介绍Transformer架构
  • Tkinter的下拉列表Combobox

    tk中下拉列表使用ttk Combobox 代码如下 usr bin env python coding utf 8 import tkinter as tk from tkinter import ttk win tk Tk win ti
  • 基于yolov5的车辆行人道路检测

    一 数据集介绍 本实验使用自动驾驶的公开数据集BDD100K 数据格式 BDD100K 数据集包含10万段高清视频 每个视频约40秒 720p 30 fps 总时间超过1 100小时 视频序列还包括GPS位置 IMU数据和时间戳 视频带有由