目标检测之YOLOv4算法分析

news2024/12/28 19:37:02

基本原理

网络结构

CSPDarknet53
在这里插入图片描述
最后三个箭头指向输出即三种特征图

SPP
解决多尺度问题
对于同一个特征输出图,进行三种maxpool2d操作,然后将三种操作的输出进行叠加
在这里插入图片描述

PANet
融合上采样、下采样等特征,深度方向拼接
在这里插入图片描述
PANet由五个核心模块组成(a,b,c,d,e)

图中红色和绿色的虚线是跨越多层的shortcut,更高实现不同层次的特征融合。

图a中为FPN的自上而下结构,第一列的4个特征图为依次卷积的结果,浅层反应边缘等细节,深层反应更丰富语义特征,第二列为4组feature map,分别为 P 5 , P 4 , P 3 , P 2 P_5,P_4,P_3,P_2 P5,P4,P3,P2,上采样过程使用双线性插值方式。为何不直接使用第一列的特征图旨在单独使用每一层的特征图无法反映整体特征,会减弱表达能力;而使用第二列的特征,可以将浅层特征与深层特征进行融合,达到更为丰富的表达特征。

图b中为自下而上的路径,得到 N 2 , N 3 , N 4 , N 5 N_2,N_3,N_4,N_5 N2,N3,N4,N5共4个feature map.其中 N 2 N_2 N2就是复制 P 2 P_2 P2, N 3 N_3 N3是通过将 N 2 N_2 N2经过步长为2的 3 ∗ 3 3*3 33卷积后的结果加上 P 3 P_3 P3得到的,其他一样处理。

图c为自适应特征池化,融合所有层的feature map,最后得到一个 1 ∗ 1 ∗ n 1*1*n 11n的向量,用于分类与定位

损失函数

L o s s = λ c o o r d ∑ i = 0 S 2 ∑ j = 0 M I i j o b j ( 2 − w i ∗ h i ) ( 1 − C I O U ) − ∑ i = 0 S 2 ∑ j = 0 M I i j o b j [ C i ^ l o g ( C i ) + ( 1 − C i ^ ) l o g ( 1 − C i ) ] − λ n o o b j ∑ i = 0 S 2 ∑ j = 0 M I i j n o o b j [ C i ^ l o g ( C i ) + ( 1 − C i ^ ) l o g ( 1 − C i ) ] − ∑ i = 0 S 2 ∑ j = 0 M I i j o b j ∑ c ϵ c l a s s e s [ p i ^ ( c ) l o g ( p i ( c ) ) + ( 1 − p i ^ ( c ) ) l o g ( 1 − p i ( c ) ) ] Loss=\lambda_{coord}\sum_{i=0}^{S^2}\sum_{j=0}^{M}I_{ij}^{obj}(2-w_i*h_i)(1-CIOU)\\ -\sum_{i=0}^{S^2}\sum_{j=0}^{M}I_{ij}^{obj}[\hat{C_i}log(C_i)+(1-\hat{C_i})log(1-C_i)]\\-\lambda_{noobj}\sum_{i=0}^{S^2}\sum_{j=0}^{M}I_{ij}^{noobj}[\hat{C_i}log(C_i)+(1-\hat{C_i})log(1-C_i)]\\-\sum_{i=0}^{S^2}\sum_{j=0}^{M}I_{ij}^{obj}\sum_{c\epsilon classes}^{}[\hat{p_i}(c)log(p_i(c))+(1-\hat{p_i}(c))log(1-p_i(c))] Loss=λcoordi=0S2j=0MIijobj(2wihi)(1CIOU)i=0S2j=0MIijobj[Ci^log(Ci)+(1Ci^)log(1Ci)]λnoobji=0S2j=0MIijnoobj[Ci^log(Ci)+(1Ci^)log(1Ci)]i=0S2j=0MIijobjcϵclasses[pi^(c)log(pi(c))+(1pi^(c))log(1pi(c))]
第一行为正样本的坐标损失, 2 − w i ∗ h i 2-w_i*h_i 2wihi为惩罚系数, C I O U CIOU CIOU损失为在DIOU基础上增加的尺度损失。计算公式为
C I O U = I O U − ( ρ 2 ( b , b g t ) c 2 + α ν ) ν = 4 π ( a r c t a n w g t h g t − a r c t a n w h ) 2 α = ν ( 1 − I O U ) + ν CIOU=IOU - (\frac{\rho ^2(b,b^{gt})}{c^2}+\alpha \nu )\\ \nu= \frac{4}{\pi}(arctan\frac{w^{gt}}{h^{gt}}-arctan\frac{w}{h})^2\\ \alpha =\frac{\nu }{(1-IOU)+\nu } CIOU=IOU(c2ρ2(b,bgt)+αν)ν=π4(arctanhgtwgtarctanhw)2α=(1IOU)+νν
其中 b b b代表预测中心坐标, b g t b^{gt} bgt代表真实框中心坐标; ρ \rho ρ代表 b b b b g t b^{gt} bgt之间的欧氏距离; c c c代表预测框与真实框最小外接矩形对角线长度; w 、 h w、h wh w g t 、 h g t w^{gt}、h^{gt} wgthgt分别代表预测框和真实框的宽、高;
第二行为正样本的置信度损失
第三行为负样本的置信度损失
第四行为分类损失


优化方案

边界框回归
在这里插入图片描述

在yolov2和yolov3中都使用边界框回归的方案,预测 t x , t y , t w , t h t_x,t_y,t_w,t_h tx,ty,tw,th四个与预测框位置和大小相关的参数,而在yolov4中沿用该方法,但采取一点优化:
原方法使用sigmoid函数限制 t x , t y , t w , t h t_x,t_y,t_w,t_h tx,ty,tw,th这四个值在(0,1)之间。
由于 σ ( x ) = 1 1 + e − x \sigma(x) = \frac{1}{1+e^{-x}} σ(x)=1+ex1
在这里插入图片描述

值域在 ( 0 , 1 ) (0,1) 01之间,那么导致在基准点 ( c x , c y ) (c_x,c_y) (cx,cy)基础上,偏移量为 ( 0 , 1 ) (0,1) (0,1),那么预测框的中心点只能在grid cell格子内部。
此时,存在一种特殊情况,若真实框的中心点落在grid cell的边界线上,如 ( c x , c y ) (c_x,c_y) (cx,cy)位置,那么预测框的中心位置也在 ( c x , c y ) (c_x,c_y) (cx,cy)将会是最好的效果,到达此条件,就要求公式中 σ ( t x ) = 0 , σ ( t y ) = 0 \sigma(t_x)=0, \sigma(t_y)=0 σ(tx)=0,σ(ty)=0.但对于sigmoid函数而言,实现等于0的条件为x趋近于负无穷时,函数值为0。这种情况对于网络而言,难以实现。
为此,在yolov4中,引入缩放因子 s c a l e x y scale_{xy} scalexy,数学计算公式为
b x = ( σ ( t x ) ∗ s c a l e x y − s c a l e x y − 1 2 ) + c x b y = ( σ ( t y ) ∗ s c a l e x y − s c a l e x y − 1 2 ) + c y b_x=(\sigma(t_x) * scale_{xy}-\frac{scale_{xy}-1}{2})+c_x\\ b_y=(\sigma(t_y) * scale_{xy}-\frac{scale_{xy}-1}{2})+c_y bx=(σ(tx)scalexy2scalexy1)+cxby=(σ(ty)scalexy2scalexy1)+cy
在实际使用中, s c a l e x y scale_{xy} scalexy常取值为2,则原计算式为
b x = ( σ ( t x ) ∗ 2 − 0.5 ) + c x b y = ( σ ( t y ) ∗ 2 − 0.5 ) + c y b_x=(\sigma(t_x) * 2-0.5)+c_x\\ b_y=(\sigma(t_y) * 2-0.5)+c_y bx=(σ(tx)20.5)+cxby=(σ(ty)20.5)+cy
即在原 σ ( x ) \sigma{(x)} σ(x)乘以2,表达式为 σ ( x ) = 2 1 + e − x \sigma(x) = \frac{2}{1+e^{-x}} σ(x)=1+ex2
在这里插入图片描述

σ ( x ) = 2 1 + e − x − 2 \sigma(x) = \frac{2}{1+e^{-x}}-2 σ(x)=1+ex22
在这里插入图片描述
从上图可知值域变为 ( − 0.5 , 1.5 ) (-0.5,1.5) (0.5,1.5)
那么最后得到的预测框的中心位置可以在偏离grid cell内部一定距离,如x坐标在 ( c x − 0.5 , c x + 1.5 ) (c_x -0.5,c_x+1.5) (cx0.5,cx+1.5)之间,y坐标在 ( c y − 0.5 , c y + 1.5 ) (c_y -0.5,c_y+1.5) (cy0.5,cy+1.5)之间,那么即使真实框的中心在边界线上也无关紧要了。

Mosaic 数据增强
在这里插入图片描述

mosaic是通过混合4张训练图像的数据增强方式,使模型具有更好的鲁棒性。

IOU阈值处理
对于每一个grid cell的anchor,若存在多个anchor与真实框的IOU值大于阈值,则令这几个anchor都进行预测,可以增加正样本数量。

具体实现方法为:
在这里插入图片描述

将每一个anchor与真实框左上角对齐,计算IOU值。
在这里插入图片描述
如上图,若对于某个真实框,中心点在深绿grid cell中,那么深绿grid cell生成的anchor中与真实框IOU最大(并且满足阈值)的anchor肯定是正样本,但不仅仅这一种正样本。对于深绿框左侧与上侧两个grid cell生成的anchor中,满足阈值的anchor也会作为该真实框的正样本,之所以这样做,可结合上面对边界框优化那一部分理解,由于偏移量在 ( − 0.5 , 1.5 ) (-0.5,1.5) (0.5,1.5)之间,那么预测框的中心点位置是可能出现在左侧与上侧的。我们进行回归的目的在于使预测框与真实框更加接近,那么在优化之后,就有更多的预测框可以优化接近于真实框,使预测效果更好。

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

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

相关文章

Unity 3D工具栏与常用工具||Unity 3D 菜单栏与快捷键

Unity 3D 的工具栏( Toolbar )中,一共包含 13 种常用工具,如下所列。 一. 平移窗口工具:平移场景视图画面。 快捷键:鼠标中键 二. 位移工具:针对单个或两个轴向做位移。 快捷键:W…

stm32f407VET6 系统学习 day04 DHT11 温湿度传感器

1.温湿度的一次完整的数据包括: 一次完整的数据传输为40bit,高位先出。 数据格式: 8bit湿度整数数据 8bit湿度小数数据 8bi温度整数数据 8bit温度小数数据 8bit校验(校验和的值是前四个字节数据的和) 用户MCU发送一次开始信号后,DHT11从低功耗模式转…

灰色关联分析(系统分析+综合评价)

系统分析:探究系统中哪个自变量对系统的影响最大 灰色关联分析的基本思想是根据序列曲线几何形状的相似程度来判断其联系是否紧密。曲线越接近,相应序列之间的关联度就越大,反之就越小 应用一、进行系统分析(国内比赛合适&#xf…

idea创建spring项目

文章目录一、Maven 项目的创建1.1 创建一个空项目2.2 新建一个模块2.3 创建Maven模块2.4 添加resources目录2.5 选定maven版本二、添加spring2.1 添加依赖2.2 创建applicationContext文件2.3 添加bean一、Maven 项目的创建 1.1 创建一个空项目 新建一个空项目;随便…

十、Express 路由

路由是Express框架中最重要的功能之一,在Express中,路由指的是客户端的请求与服务器处理函数之间的映射关系,Express中的路由分别由请求的类型(GET/POST等)、请求的URL地址和处理函数三个部分组成的; APP级…

【C++】侯捷C++面向对象高级编程(下)

转换函数(conversion function) 可以把"这种"东西,转化为"别种"东西。 即Fraction ——> double class Fraction { public:Fraction(int num, int den 1) :m_numerator(num), m_denominator(den) {}operator double()const {return ((dou…

hashmap哈希map是什么?什么时候需要使用hashmap?C实现hashmap示例

背景 对于C程序员,尤其是嵌入式C程序员,hashmap使用的相对较少,所以会略显陌生,hashmap其实涉及到2个概念,分别是哈希(hash)、map。 哈希hash:是把任意长度输入通过蓝列算法变换成固定长度的输出&#xff…

CSS Flex 布局的 flex-direction 属性讲解

flex-direction 设置了主轴,从而定义了弹性项目放置在弹性容器中的方向。 Flexbox 是一种单向布局概念,可将弹性项目视为主要以水平行或垂直列布局。 .container {flex-direction: row | row-reverse | column | column-reverse; }几种支持的属性&#x…

devServer和VueCli | Webpack

文章目录devServer和VueCliwebpack-dev-servercontentBase模块热替换开启HMRhotOnly host配置port open compressproxyresolveextensions和alias配置如何区分开发环境devServer和VueCli webpack-dev-server contentBase 模块热替换 开启HMR hotOnly host配置 port open compres…

IMX6ULL学习笔记(15)——GPIO接口使用【官方SDK方式】

一、GPIO简介 i.MX6ULL 芯片的 GPIO 被分成 5 组,并且每组 GPIO 的数量不尽相同,例如 GPIO1 拥有 32 个引脚, GPIO2 拥有 22 个引脚, 其他 GPIO 分组的数量以及每个 GPIO 的功能请参考 《i.MX 6UltraLite Applications Processor Reference M…

有没有股票实时行情的同花顺l2接口?

对于个人投资者而言,一般看盘平台软件系统中,通过自定义公式接口,可以获取到股票实时行情的。例如同花顺l2接口系统会通过一些输入的公式就能查找指定的股票行情了,那么这个就相当于股票实时行情的API接口一样的道理,输…

加密解决HTTP协议带来的安全问题

HTTP协议默认是采取明文传输的,容易被中间人窃听、拦截、篡改,存在安全隐患。 常见提高安全性的方法是对通信内容进行加密,再进行传输,常见的加密方式有 不可逆加密:单向散列函数 可逆加密:对称加密、非对称…

从模型到服务——iDesktopX处理自动化工具实现BIM模型到三维服务发布

目录前言一、 处理自动化模型二、 算子参数设置1、 使用迭代数据集打开导出后的BIM模型2、 移除重复点、重复面和重复子对象3、 模型生成缓存4、 三维切片缓存发布5、 执行结果前言 BIM模型在SuperMap实际使用的业务流程中常常需要在桌面产品中生成缓存,然后通过iS…

安装和配置MySQL

首先前往官网下载mysql社区版(不要钱) MySQL Community Serverhttps://dev.mysql.com/downloads/windows/installer/8.0.html 甲骨文比较鸡贼,会要求你注册一个账号。但是下面有一行小字,直接点击下载就好了 双击后直接按…

Blender——苹果的纹理绘制

效果图 前言 在进行纹理绘制之前,首先要具有苹果三维模型。 关于苹果的建模请参考:Blender——“苹果”建模_行秋的博客 1.苹果UV的展开 1.1首先点击UV Eidting,滑动三维模型,使其大小适中。 1.2打开左上角的UV选区同步&#x…

使用idb操作IndexedDB

使用idb操作IndexedDB 译自:https://www.hackernoon.tech/use-indexeddb-with-idb-a-1kb-library-that-makes-it-easy-8p1f3yqq GitHub地址:https://github.com/jakearchibald/idb 文章目录使用idb操作IndexedDB前置条件本文承诺上手demo1:…

python中的encode()和decode()函数

前言: 我们知道,计算机是以二进制为单位的,也就是说计算机只识别0和1,也就是我们平时在电脑上看到的文字,只有先变成0和1,计算机才会识别它的意思。这种数据和二进制的转换规则就是编码。计算机的发展中,有…

【SpringCloud Alibaba】Sentinel流控规则

概念 流控规则 直接(默认) QPS快速失败 线程数直接控制 QPSWarming up QPS排队等待 关联 链路 具体启动Sentinel的步骤可以参考我的上一篇文章。 概念 资源名:唯一名称,默认请求路径 针对来源:Sentinel可以针…

微服务系列之远程服务调用

随笔 对自己不满是任何有才能的人的根本特征 参考书籍: “凤凰架构”“微服务架构设计模式” 本篇文章开始之前提示一下,读者带着“IPC与RPC的有什么区别”疑惑读效果更好 引言 从架构师的角度来看,微服务架构的落地实现第一个需要解决问…

改良型新药之详细分类

随着一类新药开发越来越困难、仿制药竞争激烈,改良型新药被认为符合我国医药企业转型升级的方向,吸引了更多企业切入,本文也将针对改良型新药的6个常见共性问题给予解答,涉及科普、专利、分类、临床价值、立项、注册申请、数据统计…