yolo系列学习笔记----yolov4(SPP原理)

yolo系列学习笔记----yolov4(SPP原理)
⽬录
1,概述
据介绍,YOLOv4 在 MS COCO 数据集上获得了 43.5% 的 AP 值 (65.7% AP50),在 Tesla V100 上实现了 ∼65 FPS 的实时速度。
该研究的主要贡献如下:
1.  建⽴了⼀个⾼效强⼤的⽬标检测模型。它使得每个⼈都可以使⽤ 1080Ti 或 2080Ti 的 GPU 来训练⼀个快速准确的⽬标检测器。
2.  验证了当前最优 Bag-of-Freebies 和 Bag-of-Specials ⽬标检测⽅法在检测器训练过程中的影响。
3.  修改了 SOTA ⽅法,使之更加⾼效,更适合单 GPU 训练。这些⽅法包括 CBN、PAN、SAM 等。
YOLOv4模型由以下部分组成:
CSPDarknet53作为⾻⼲⽹络BackBone;
SPP作为Neck的附加模块,PANet作为Neck的特征融合模块;
YOLOv3作为Head。
yolov3的结构如如下:
从两个⽹络结构可以看出,yolov4的Head部分,和yolov3⼀样,其他部分都做了改进,同时还有⼀些新的算法引⼊,v4实际上就是保留Darknet作为backbone,然后通过⼤量的实验研究了众多普适性算法对⽹络性能的影响,然后到了它们最优的组合。下⾯分开看每个部分。
2,yolov4⽹络结构上的变化
2.1,BackBone⾻⼲⽹络(CSPDarknet53)
v4保留Darknet作为backbone,但是单元结构上和v3是有⼀些区别的,具体的区别可以看下⾯的对⽐图:
2.2,增加感受野的SPP结构
同时v4还引⼊SPP结构,增加感受野。SPP结构在v4中的应⽤,如下图所⽰:
在⼀般的CNN结构中,在卷积层后⾯通常连接着全连接。⽽全连接层的特征数是固定的,所以在⽹络输⼊的时候,会固定输⼊的⼤⼩(fixed-size)。但在现实中,我们的输⼊的图像尺⼨总是不能满⾜输⼊时要求的⼤⼩。然⽽通常的⼿法就是裁剪(crop)和拉伸(warp)。
这样做总是不好的:图像的纵横⽐(ratio aspect) 和 输⼊图像的尺⼨是被改变的。这样就会扭曲原始的图像。⽽何凯明在这⾥提出了⼀个SPP(Spatial Pyramid Pooling空间⾦字塔池)层能很好的解决这样的问题, 但SPP通常连接在最后⼀层卷基层。
冷雾
CNN⼀般结构和SPP结构
1)SPP原理
空间⾦字塔池化,使得任意⼤⼩的特征图都能够转换成固定⼤⼩的特征向量,这就是空间⾦字塔池化的意义(多尺度特征提取出固定⼤⼩的特征向量),送⼊全连接层。整体框架⼤致为:输⼊图像,卷
积层提取特征,空间⾦字塔池化提取固定⼤⼩特征,全连接层。
主观幸福感量表SPP原理
2)实例说明
空间⾦字塔池化如何提取特征,得到固定⼤⼩的特征向量:
我们假设⼀个很简单两层⽹络:输⼊⼀张任意⼤⼩的图⽚,假设其⼤⼩为(w,h),输出21个神经元。也就是我们输⼊⼀张任意⼤⼩的特征图的时候,我们希望提取出21个特征。空间⾦字塔特征提取的过程如下:
如上图所⽰,当我们输⼊⼀张图⽚的时候,我们利⽤不同⼤⼩的刻度,对⼀张图⽚进⾏了划分。上⾯⽰意图中,利⽤了三种不同⼤⼩的刻度(4*4,2*2,1*1),对⼀张输⼊的图⽚进⾏了划分,最后总共可以得到16+4+1=21个块,我们即将从这21个块中,每个块提取出⼀个特征,这样刚好就是我们要提取的21维特征向量。
第⼀张图⽚,我们把⼀张完整的图⽚,分成了16个块,也就是每个块的⼤⼩就是(w/4,h/4);
第⼆张图⽚,划分了4个块,每个块的⼤⼩就是(w/2,h/2);
第三张图⽚,把⼀整张图⽚作为了⼀个块,也就是块的⼤⼩为(w,h)。
av大片
空间⾦字塔最⼤池化的过程,其实就是从这21个图⽚块中,分别计算每个块的最⼤值,从⽽得到⼀个输出神经元。最后把⼀张任意⼤⼩的图⽚转换成了⼀个固定⼤⼩的21维特征(当然你可以设计其它维数的输出,增加⾦字塔的层数,或者改变划分⽹格的⼤⼩)。上⾯的三种不同刻度的划分,每⼀种刻度我们称之为:⾦字塔的⼀层,每⼀个图⽚块⼤⼩我们称之为:windows size了。如果你希望,⾦字塔的某⼀层输出n*n个特征,那么你就要⽤windows size⼤⼩为:(w/n,h/n)进⾏池化了。
3)通⽤公式
我们先假定固定输⼊图像的尺⼨s=224, ⽽此⽹络卷积层最后输出256层feature-maps, 且每个feature-map⼤⼩为
13×13(a=13),全连接层总共256×(9+4+1)个神经元, 即输全连接层输⼊⼤⼩为256×(9+4+1)。即我们需要在每个feature-map的到⼀个数⽬为(f=9+4+1)的特征。
由于pooling窗⼝(w×w)很明显如果我们⽤⼀个pooling窗⼝怎么也很难得到f=9+4+1,再加上如果输⼊图像尺度变化的话,是根本不可能。
这⾥⽤了3个pooling窗⼝(w×w), ⽽对应的pooling stride 为t, 经多这3个窗⼝pooling池化得到3个n×n,n=
辞海3,2,1的结果。饼画好了,怎么得到我们的窗⼝⼤⼩ww和stride tt呢?
科技创新导报
n=2,n=1n=2,n=1以此类推,将3个pooling后的结果合并,很容易发现和我们的期望⼀致。
4)SPP的优点和作⽤
SPP 显著特点
1) 不管输⼊尺⼨是怎样,SPP 可以产⽣固定⼤⼩的输出
2) 使⽤多个窗⼝(pooling window)
3) SPP 可以使⽤同⼀图像不同尺⼨(scale)作为输⼊, 得到同样长度的池化特征。
其它特点
1) 由于对输⼊图像的不同纵横⽐和不同尺⼨,SPP同样可以处理,所以提⾼了图像的尺度不变(scale-invariance)和降低了过拟合(over-fitting)
2) 实验表明训练图像尺⼨的多样性⽐单⼀尺⼨的训练图像更容易使得⽹络收敛(convergence)
淮阴师范学院学报
3) SPP 对于特定的CNN⽹络设计和结构是独⽴的。(也就是说,只要把SPP放在最后⼀层卷积层后⾯,对⽹络的结构是没有影响的, 它只是替换了原来的pooling层)
4) 不仅可以⽤于图像分类⽽且可以⽤来⽬标检测
从上⾯的描述,我们应该懂了作者的意思。作者是整体先对整张图⽚进⾏卷积然后,在把其中的⽬标窗⼝拿出来Pooling,得到的结果⽤作全连接层的输⼊。
特点:只需要计算⼀次卷积层,训练速度快。
2.3 ,特征整合(neck的区别)
YOLO v3中采⽤类似FPN,YOLO v4采⽤的是PANet结构整合特征。如下图所⽰:
下⾯就详细介绍⼀下,什么是 PANet结构,如图所⽰:
FPN ⾼维度向低维度传递语义信息(⼤⽬标更明确)
PAN 低维度向⾼维度再传递⼀次语义信息(⼩⽬标也更明确)
3,其它的trick
3.1 常⽤技巧总结
YOLO v4⽂中将前⼈的⼯作主要分为Bag of freebies和Bag of specials,前者是指不会显著影响模型测试速度和模型复杂度的技巧,主要就是数据增强操作,对应的Bag of specials就是会稍微增加模型
复杂度和速度的技巧,但是如果不⼤幅增加复杂度且精度有明显提升,那也是不错的技巧。下图对这些技巧做了总结:

本文发布于:2024-09-20 21:17:55,感谢您对本站的认可!

本文链接:https://www.17tex.com/xueshu/473465.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:图像   特征   结构   模型   字塔   作为   提取   空间
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议