yolov5解读

1. 综述

先放上个人对YOLOv5_v6的理解(可结合图1进行阅读),这里我们假设对一组图片进行训练。首先我们要了解,YOLOv5_v6是对三个尺度的特征图进行目标检测的,即large(大)、medium(中)、small(小)三种
1)准备工作(Input中进行):图片需要经过数据增强(尤其是Mosaic数据增强),并且初始化一组anchor预设(YOLOv5_v6针对不同参数量的模型给出了不同的通用预设)。
2)特征提取(Backbone中进行):使用了Conv、C3、SPPF基本结构对输入图片进行特征提取。Conv用于对输入进行下采样(共进行了5次下采样);C3用于对输入进行特征提取、融合,丰富特征的语义信息,在这个过程中使用了Boottleneck减少参数量和计算量、借鉴CSPNet思想增强CNN学习能力;SPPF利用池化、特征融合的方式丰富特征的语义信息,使得最深层的特征图拥有极丰富的语义信息。
3)加工特征(Neck中进行):对要进行目标检测的三种尺度的特征图融合浅层特征(浅层特征有利于检测)。v6借鉴了PANet,对提取的特征图融合浅层特征,使得特征图既具有丰富的语义信息又具有物体准确的位置信息。
4)预测目标(Head中进行):对加工后的特征图进行预测,根据损失函数(Classificition Loss和Bounding Box Regeression Loss)和优化器优化参数权重。

图1 网络构架图

2. 前置知识

2.1. 特征融合方式

concat:张量拼接,会扩充两个张量的维度,例如2626256和2626512两个张量拼接,结果是2626768。
add:张量相加,张量直接相加,不会扩充维度,例如104104128和104104128相加,结果还是104104128。

2.2. anchor

YOLOv5是基于anchor的目标检测网络,虽然YOLOv5实现了自适应锚框计算,不过了解anchor有助于我们深入理解YOLOv5。
anchor(锚框)就是在图像上预设好的不同大小,不同长宽比的参照框。anchor是由Faster-RCNN提出的,anchor解决了scale和aspect ratio变化范围大的问题,即将单元格的预测框空间划分为了几个子空间,降低模型学习难度。在YOLOv5中,输入图片的尺寸是640640,经过32倍、16倍、8倍下采样,会产生2020、4040、8080大小的特征图(也就是网格尺寸),特征图的每个像素(该像素对应的视野域大小就是网格中的单元格大小)设置3个anchor,因此v5一共有 (2020+4040+8080)3=25200个anchor。
那么,anchor是如何对输出的预测框产生影响的呢?借助神经网络强大的拟合能力,直接让神经网络输出每个anchor是否包含(或者说与物体有较大重叠,也就是IoU较大)物体,以及被检测物体相对本anchor的中心点偏移以及长宽比例。因为anchor的位置都是固定的,所以就可以很容易的换算出来实际物体的位置。以下图中的小猫为例,红色的anchor就以99%的概率认为它是一只猫,并同时给出了猫的实际位置相对于该anchor的偏移量,这样,我们将输出解码后就得到了实际猫的位置,如果它能通过NMS(非最大抑制)筛选,它就能顺利的输出来。但是,绿色的anchor就认为它是猫的概率就很小,紫色的anchor虽然与猫有重叠,但是概率只有26%。

图2-图源:https://zhuanlan.zhihu.com/p/112574936

2.3. Bottleneck

Bottleneck结构是为了减少参数量和计算量而设计的,其包括三个卷积层:两个11卷积层和一个33卷积层,其结构如下图左(图右是等效的33卷积层)所示:

假设Input是[1, 256, 10, 10],则
普通卷积的参数量(params):25633256+256=590, 080(最后一个256是BN层参数,不考虑bias)
普通卷积的计算量(FLOPs):256332561010=58,982,400(不考虑bias)
Bottleneck结构的参数量(params):(2561164+64)+(643364+64)+(6411256+256)=70, 016(最后一个256是BN层参数,不考虑bias)
Bottleneck结构的计算量(FLOPs):25611641010+6433641010+641125610*10=6,963,200(不考虑bias)
可以看到Bottleneck结构减少了的参数量和计算量十分明显。

2.4. CSPNet(Cross Stage Partial Network)

CSPNe是一种增强CNN学习能力的跨阶段局部网络。CSPNet全称是Cross Stage Partial Network,主要从网络结构设计的角度来解决以往工作在推理过程中需要很大计算量的问题,其能够在降低20%计算量的情况下保持甚至提高CNN的能力。作者认为推理计算过高的问题是由于网络优化中的梯度信息重复导致的,因此CSPNet通过将梯度的变化从头到尾地集成到特征图中,在减少了计算量的同时可以保证准确率。需要指出的是CSPNet是一种处理思想,它可以与ResNet、DenseNet、HarNet等分类网络和YOLO等目标检测网络结合。下图展示了CSPNet与不同网络的backbone结合后的效果,可以看出计算量大幅下降、准确率保持不变或提升。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值