YOLO-V4经典物体检测算法介绍

news2024/11/28 20:44:05

在前文我们介绍了YOLO-V1~V3版本都做了哪些事,本文我们继续介绍YOLO-V4版本。

YOLO的作者在发表完V3之后,发现YOLO产品被美国军方应用到了很多军事战争当中,这是他所不希望看见的,因此宣布不再继续研究。

但历史和科技总是随时间不断发展,一个人的力量总是渺小的,后来的学者们“前赴后继”,继往圣之绝学,续写、补全着YOLO这本功法。

一、YOLO-V4

YOLO-V4的贡献:

  • 亲民,单GPU就能训练的非常好,接下来很多小模块都是这个出发点

  • 两大核心方法,从数据层面网络设计层面来进行改善

  • 消融实验,感觉能做的都让他给做了(凝当年百家之长),工作量不轻

  • 全部实验都是单GPU完成,不用太担心设备了

1.1 Bag of freebies(BOF)

  • 只增加训练成本,但是能显著提高精度,并不影响推理速度

  • 数据增强:调整亮度、对比度、色调、随机缩放、剪切、翻转、旋转

  • 网络正则化的方法:Dropout、Dropblock等

  • 类别不平衡,损失函数设计

1.1.1 数据增强

Mosaic data augmentation方法

一种数据增强的方法,参考CutMix然后四张图像拼接成一张进行训练;

所参考的CutMix:

上图展示CutMix中提到的融合、裁剪、裁剪拼接

V4作者参考该方法,将四张图像拼接成一张进行训练

具有以下优点

  • 丰富一张图上的信息

  • 增强后一张图上包含四张图的信息,减少了对大batch_size的依赖

  • 通常小目标的检测效果要比大目标差,将四张图放到一张图中,相当于变相扩充了数据集中小目标的样本数量。

当然在数据增强时还用了一些其它方法,如

  • 用随机值或训练集的平均像素值替换图像的区域

  • 根据概率设置随机隐藏一些补丁

  • 引入噪音点等

1.1.2 DropBlock与标签平滑方法

  • DropBlock

之前的dropout是随机选择点去掉(随机杀死一些神经元),如下图b

现在是直接去掉整个区域,dropblock。

这样做就好比去掉了图片中狗的眼睛/耳朵/鼻子或者是大半个头。

显然相比去掉一些点提升了更大的难度让计算机去好好学。

  • 标签平滑 Label Smoothing

神经网络最大的缺点就是容易过拟合,以猫狗分类0/1标签为例,这里进行平滑处理:

其中0.1为自己指定,2为类别个数

效果:右图,使用后簇内更加紧密,簇间更加分离(过拟合的话就会很近)

1.1.3 CIOU损失函数定义

IOU损失:从之前的学习中我们得知IOU是干嘛的,即真实框和预测框的重叠程度,一般IOU损失计算时直接1-IOU,有时也会使用下图右下角公式

但是使用IOU损失会面临一些问题

  • 如果两框没有相交则IOU=0无法梯度计算,

  • 相同的IOU却反映不出实际情况到底咋样,如以下三图IOU相同,但重叠情况却不同。

GIOU损失

  • 引入了最小封闭形状C(C可以把A、B包含在内,即下图C把两框都框起来了。)

  • 这样在在不重叠情况下能让预测框尽可能朝着真实框前进(以真实框为准,C越接近真实框越好)。

但是重叠的话又完了,以下情况结果是相同的。

DIOU损失

  • 其中分子计算预测框与真实框的中心点欧式距离d

  • 分母是能覆盖预测框与真实框的最小BOX的对角线长度c

  • 直接优化距离,速度更快,并解决GIOU问题

CIOU损失

损失函数必须考虑三个几何因素:重叠面积,中心点距离,长宽比,其中α可以当做权重参数 。

1.1.4 NMS细节改进

(其实这个并不属于BOF,而是属于后面BOS,因为涉及到计算了肯定会影响速度。这里为了知识点的连贯性放在一起说。)

DIOU-NMS

之前使用NMS来决定是否删除一个框,现在改用DIOU-NMS

  • 不仅考虑了IoU的值,还考虑了两个Box中心点之间的距离

  • 其中M表示高置信度候选框,Bi就是遍历各个框跟置信度高的重合情况

SOTF-NMS

"做人留一面日好相见",柔和一点的NMS,更改分数而且直接剔除

意思是之前高度重叠的,就要置信度最大的,别的都剔除。

上图中红色绿色框重叠了,但实际框起来的是两匹马,不应该去掉。

这里选用的方法就是降低置信度,如绿框是0.8,给它降低0.3分,然后通过阈值去筛选。

1.2 Bag of specials(BOS)

  • 增加稍许推断代价,但可以提高模型精度的方法

  • 网络细节部分加入了很多改进,引入了各种能让特征提取更好的方法

  • 注意力机制,网络细节设计,特征金字塔等,你能想到的全有

  • 读这一篇相当于把当年来部分优秀的论文又过了一遍

1.2.1 SPP与CSP网络结构

SPPNet(Spatial Pyramid Pooling)

  • V3中为了更好满足不同输入大小,训练的时候要改变输入数据的大小

  • SPP其实就是用最大池化控制大小,来满足最终输入特征一致即可。

CSPNet(Cross Stage Partial Network)

  • 每一个block按照特征图的channel维度拆分成两部分

  • 一份正常走网络,另一份直接concat到这个block的输出

意思是把输入的特征图切成两份,一份继续按照之前的路走(去卷积、block等),另一份直接拿过去和前面那份走完之后的结果进行concat。

这样算是减少特征图的深度(实际上并没有影响到精度),加快计算速度。

1.2.2 SAM注意力机制模块

注意力机制:

简单来说就是比如这里这句话:“小明今天开心地踢了一个绿色的皮球”,这句话的关键词/重要的部分是 "小明踢球",其他的次要,次次要。我们把注意力放在这些重要的上面,即分配一些权重。

这是语言/NLP中,图片中也是一样的,比如猫狗识别,我记得猫有胡须狗没有,可以把注意力放在胡须上。又或者说图片有前景和背景,我们应该把注意力放在更重要的前景里。

所参考的CBAM介绍

比如我们得到32*32*512的256个特征图,那就给这256个特征图经过操作得到它们的重要程度/分配权重(channel attention),之后再把权重乘到原始特征图中去。

此外除了看哪个特征图重要,还要看特征图里的哪个点/哪部分重要(spatial attention),即给每个特征图每个位置/像素点/grid cell分配权重,乘进去。

  • V4中参考CBAM,不过V4中用的是SAM只有spatial attention也就是空间的注意力机制。

YOLOV4中的Spatial attention module

在原始SAM(a)做了点修改(b),之前是最大池化和平均池化后拼在一起然后后再卷积,这里直接卷积,更快。

1.2.3 PAN模块

  • 下图是FAN,它是一种自顶向下的模式,将高层特征传下来,各层间进行特征融合、3*3卷积得到P2、P3、P4、P5等特征。

  • 但这样好像只有一条路(特征只从高层向底层传递),能不能来个双向的呢?

  • 于是,PAN登场

PAN(Path Aggregation Network)

引入了自底向上的路径,使得底层信息更容易传到顶部

并且还是一个捷径,红色的线没准走个100层(走的Resnet层数),绿色的线几层(橙色那几层,走的P后面延申的路)就到了。

YOLO-V4中在PAN上做了点修改,PAN中融合特征时使用的是加法(矩阵+矩阵),而YOLO-V4中则是拼接。虽然特征多了一些但是会提升一些精度。

1.2.4 激活函数

YOLO-V4中并非使用的是ReLU,而是Mish。

Mish

  • 不一棒子给"打死",给个改过自新的机会。

  • Relu有点太绝对了,Mish更符合实际

  • 虽然计算量确实增加了,效果会提升一点

在网络的初期,因为一开始是高斯随机的数,特征值在前面有负的可以理解,ReLU直接就去掉了,而Mish给了点机会,当然只挽留一定范围内的。

1.2.5 eliminate grid sensitivity

最终预测回归值的时候,还不是它真正的坐标,而是相对这个网格的位置,坐标回归值的预测都在0-1之间,但此时在grid边界怎么办?

  • 此时我们想要取到0或1,就需要无穷大的数

  • 为了缓解这种情况可以在激活函数前乘上 一个系数(大于1的),即放大结果。

1.3 整体网络架构

架构图如下:

输入、卷积、BN、Mish;然后SPP进行最大池化控制大小,来满足最终输入特征一致;

右边是PAN,特征图高底层特征双向拼接。

最右边的Yolo Head和V3一样。不同尺度的特征检测器。

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

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

相关文章

(第五章)OpenGL超级宝典学习:统一变量(uniform variable)

统一变量 前言 本篇在讲什么 本篇记录对glsl中的变量uniform的认知和学习 本篇适合什么 适合初学Open的小白 适合想要学习OpenGL中uniform的人 本篇需要什么 对C语法有简单认知 对OpenGL有简单认知 最好是有OpenGL超级宝典蓝宝书 依赖Visual Studio编辑器 本篇的特色 …

设计模式-组合模式和建筑者模式详解

一. 组合模式1. 背景在现实生活中,存在很多“部分-整体”的关系,例如,大学中的部门与学院、总公司中的部门与分公司、学习用品中的书与书包、生活用品中的衣月艮与衣柜以及厨房中的锅碗瓢盆等。在软件开发中也是这样,例如&#xf…

spring注解的开端(@Component替代bean标签的使用)

目录 一、介绍 1.什么是注解开发? 2.Spring注解的版本 3.基于spring注解的应用 4. Component的细分注解 5.相关注解 二、简单例子讲解 1.类打注解 2.扫描注解放入工厂 3.总工厂取注解调用 4.运行结果 总结: 一、介绍 1.什么是注解开发&…

人工智能聊天工具ChatGPT为Delphi写的诗歌

现在每个人似乎都在谈论 ChatGPT,所以这里有一首关于我们最喜欢的开发工具Delphi的好诗,来自 ChatGPT 生成的 Embarcadero 的 Delphi。 Delphi,哦,Delphi! 作者:ChatGPT Delphi,哦,…

java面试题(十九) Mybatis

4.1 谈谈MyBatis和JPA的区别 参考答案 ORM映射不同: MyBatis是半自动的ORM框架,提供数据库与结果集的映射; JPA(默认采用Hibernate实现)是全自动的ORM框架,提供对象与数据库的映射。 可移植性不同&…

166_技巧_Power BI 窗口函数处理连续发生业务问题

166_技巧_Power BI 窗口函数处理连续发生业务问题 一、背景 在生产经营的数据监控中,会有一类指标需要监控是否连续发生,从而根据其在设定区间中的连续频次来评价业务。 例如: 员工连续迟到天数。销售金额连续上升或者下降。用户连续登陆…

卧槽!一个小时不到就把ChatGPT接入了微信!被问疯了~

大家好,我是鸟哥。一个半路出家的程序员。 最近ChatGPT又火了,一时兴起就把它接入我的微信机器人中。从账号注册到接入微信机器人,全程不到1个小时就搞定了!当然不是我牛逼而是Github上的人才太多了。 大家聊的还是很嗨的&#…

Hadoop自动安装JDK

目录 1、使用xftp工具 在opt目录下创建install和soft文件 ​2、使用xftp工具 将压缩包上传到install文件 3、编写shell脚本 3.1、创建目录来放shell脚本 3.2、创建autoinsatll.sh文件并修改权限 3.3、编写autoinsatll.sh 文件 4、 运行 5、测试 1、使用xftp工具 在opt目…

SpringBoot整合(二)MyBatisPlus技术详解

MyBatisPlus详解 一、标准数据层开发 MyBatisPlus(简称MP)是基于MyBatis框架基础上开发的增强型工具,旨在简化开发、提高效率 MyBatisPlus的官网为:https://mp.baomidou.com/ 1.1 标准CRUD 1.2 新增 int insert (T t)T:泛型&#xff0c…

SAP SD模块相关表的知识笔记

VBAK表 销售凭证(抬头数据) 主键为VBELN: 销售凭证 常用的有: kunnr : 售达方 erdat: 记录创建日期 vdatu: 请求交货日期 VBAP表 (销售凭证:项目数据) 主键为 vbeln销售凭证 和posnr 行号 常用的有&#x…

2年功能测试月薪9.5K,100多天自学自动化,跳槽涨薪4k后我的路还很长...

前言 其实最开始我并不是互联网从业者,是经历了一场六个月的培训才入的行,这个经历仿佛就是一个遮羞布,不能让任何人知道,就算有面试的时候被问到你是不是被培训的,我还是不能承认这段历史。我是为了生存,…

leaflet加载KML文件,显示图形(方法2)

第049个 点击查看专栏目录 本示例的目的是介绍演示如何在vue+leaflet中加载KML文件,将图形显示在地图上。 直接复制下面的 vue+openlayers源代码,操作2分钟即可运行实现效果; 注意如果OpenStreetMap无法加载,请加载其他来练习 文章目录 示例效果配置方式示例源代码(共66…

YOLOv5-Backbone模块实现

🍨 本文为🔗365天深度学习训练营 中的学习记录博客🍦 参考文章地址: 365天深度学习训练营-第P8周:YOLOv5-Backbone模块实现🍖 作者:K同学啊一、前期准备1.设置GPUimport torch from torch impor…

Node=>Express中间件分类 学习4

1.中间件分类 应用级别的中间件路由级别的中间件错误级别的中间件Express 内置的中间件第三方的中间件 通过app.use()或app.get()或app.post()绑定到app实力上的中间件,叫做应用级别的中间件 …

泼辣修图2023最新版本人像美白滤镜手机电脑修图工具

今天,小编分享的是泼辣修图2023最新版本,喜欢追新的朋友赶紧下载使用吧。新版本在图标设计和使用上都有了一些改变,简洁的操作是其一贯的风格。这是一款功能强大的手机及电脑修图app。具体包括了几十种滤镜、曲线调整、颜色调整、皮肤美白、脸…

Biotin-PEG-FITC 生物素聚乙二醇荧光素;FITC-PEG-Biotin 科研用生物试剂

结构式: ​Biotin-PEG-FITC 生物素聚乙二醇荧光素 英文名称:Biotin-PEG-Fluorescein 中文名称:生物素聚乙二醇荧光素 外观:黄色液体、半固体或固体,取决于分子量。 溶剂:溶于大部分有机溶剂,…

学弟学妹少走弯路,超完整算法刷题路线出炉

大家好,我是帅地。 本篇文章主要讲解下面三个事: 1、自己学习算法的一些经历 2、大家学习算法存在的一些普遍问题 3、给大家规划的算法刷题路线 一、算法学习往事 记得当初学了 C 语言就开始刷题了,刷题倒不是面试,而是为了…

图扑数字孪生智慧社区,助力社区数字化转型

前言 智慧社区是社区管理的一种新理念,是新形势下社会管理创新的一种新模式。智慧社区是指充分利用物联网、云计算、移动互联网等新一代信息技术的集成应用,为社区居民提供一个安全、舒适、便利的现代化、智慧化生活环境,从而形成基于信息化…

[Linux]-Ansible

[Linux]-Ansible 森格 | 2023年2月 介绍:本文旨在介绍ansible的基本使用,提高部署环境时的效率,避免重复操作带来的时间成本。 文章目录[Linux]-Ansible一、什么是Ansible1.1 基本介绍1.2 核心概念1.3 优点二、环境部署2.1 Ansible2.2 Docke…

帮中国人搞钱的ChatGPT,算不清自己的“经济账”

好消息,ChatGPT找到盈利模式了。坏消息,尽是“二道贩子”在赚钱。当OpenAI尝试着为红到发紫的ChatGPT推出20美元的Plus订阅服务时,大多数人已经忘记了这个“吞金兽”的成长耗费了多少财力物力。问答狂欢者的岁月静好靠的是OpenAI的负重前行&a…