YOLO中的值得借鉴的思想

关键理论的理解,后面会补充结构等。

1.YOLO1中将图像划分为7*7个网格,每个网格都预测网格中的的类别(是什么物体),以及预测到的物体所对应的框(四个位置量,一个置信度),所以最后的特征图大小为7*7*2*(5+20),也就是7*7*30。抽象出的最后一层应该是S*S*B*(5+C),S*S代表了grid的数量,B为框的数量,C为预测的类别。后面的yolo也满足这个公式。

2.在yolo中,将损失函数分为了三个部分,后续yolo也一直延续这种损失。

   a.位置损失(bounding box loss)也就是预测的框的损失(xywh四个位置量的损失)(使用平方差损失)

   b.置信损失(IoU相关损失)是指网络预测的框中是否有目标,有目标的话IoU是多少(使用平方差损失)

   c.类别损失(classification loss)是指预测框中检测到的物体分类是否正确(使用交叉熵损失)

3.在yolo1以后得版本中都使用了DarkNet(修改为ResNet结构)作为backbone,其实就是conv加BN这种结构

4.加入了anchor 思想,使用k-means聚类获得一些anchor来作为先验框来预测框,简单来说就是在特征图上根据gt生成框的时候不在是胡乱生成以及人为设定,而是有一些规律(聚类结果)。

5.预测框生成:限制生成的框在grid(0-1)之内,后面改进为在grid的框以及两个相邻的框(-0.5,1.5)之间,这样生成的正样本就更准确且数量更多。

6.切片/Focus模块:每隔一个像素拿出一个特征值,然后把新的特征图进行通道维度的concat来增加特性的信息量,不丢失信息。大小变为1/2,数量变为*4.

7.金字塔池化(SPP和SPPF):通过金字塔池化,让输入图像的大小可以改变。

spp通过池化将不同尺寸的输入统一为统一尺寸。

sppf是将并联结构修改为串联结构,这样参数量就更小了,训练会更快,并且增加了非线性。1个9*9相当于两个5*5.类似于一个5*5=2个3*3.

 

 

8.特征拼接:将不同维度的特征进行融合(concat),提升网络的效果。

9.多尺度预测:单尺度预测对于较小的目标检测效果不好,所以多尺度预测,用较大的感受野来预测大物体(比如13*13的特征图),用26826来预测中等的物体,52*52的来预测小物体,并且在这些层之间进行拼接,增加特征量,提升预测的效果。不同网络中的使用尺寸略有不同。

 

10.现在的网络通常会分为三个部分:backbone(特征提取)、neck(特征融合)、head(完成用特征进行预测等任务)

11.PAN通道融合:分为两个部分:a. FPN(高层往低层融合,也就是深层往浅层融合),传递的是强语义信息。 b. 低层往高层融合,传递的是强定位信息。融合使用的是concat方法,不再是简单的add。 

 11.使用了CSP结构:也就是把一个特征图分为两个部分一个部分进行多次卷积操作,一部分只进行一次操作,然后再将两个部分concat。可以提速、减少内存占用、提升网络学习能力。类似下图,不同版本之间的具体的操作会有些许不同,但是就这么个思想。

 12.数据增强:

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值