YOLO系列

前言

本文是博主整理的学习笔记,不是yolo讲解文章,适合有一定yolo基础的同学复盘学习。
长文预告,多图预告。

yolo主要关注两个检测指标:mAP和速度。

mAP:综合衡量检测效果,包括精度和recall(召回率)等,是精度和recall的交点与原点形成的矩形的面积。
召回率:有多少框被检测到了(查全率)
精度:iou(查准率)

精度和召回率互相矛盾,一个高,另一个就低。所以就直接用mAP一个指标了。其实就是iou的阈值设置的原因。
在这里插入图片描述

yolo的口号:速度第一,mAP第二。
整个yolo系列,在预测时的速度都是极快的,满足端到端的需求。

YOLOV1

yolov博主学习的较早,这次学习yolo系列没有重点关注这一部分,需要的同学可以移步这里

网络结构

卷积+全连接
注意,在v1版本中还是有全连接层的,这无疑对输入图像的维度形成了限制,让我们看看后面都是怎么改进的。

指标

速度:45fps;
mAP:63.4

YOLOV2

v2的改进:
在这里插入图片描述
让我们具体到每一行的指标去看看。

网络结构

  • 加入了Darknet(19,大小可选),输入是416,32×13,奇数13是为了方便定位中心点
  • 去掉了全连接;
  • 用了5次降采样(/32)
  • 采用了1×1.

聚类提取先验框

不按照预先定义的好长宽比例,而是从coco数据集(或自己的数据集)中聚类出5类比例,使用k-means,聚类距离使用的是1-iou。

Batch Normalization

在yolov2中,已经舍弃了全连接层,因此也舍弃了dropout。每一个卷积层都加bn。

高分辨率输入

224改成448,更接近实际图像。

Anchor Box

数量:1313n。这个是为啥?不应该是32吗 v2的网格到底多大,不管它了。想通了。经过5次降采样,剩下的维度就是13×13了,就相当于网格是13×13.
mAP没有提升(微降),但召回率大大提升。

两人最好的人参加比赛,比派十个人去平均成绩更好。但多派人能覆盖更多项目。
在这里插入图片描述

Directed Location Prediction(坐标映射与还原)

目的:位置微调,预测偏移量。
方法:限制偏移量,防止在训练的时候它不收敛飘了。使用的相对于网格的偏移量,是一个相对位置。这样怎么飘都飘不出这个格子。

σ \sigma σ是为了回归到[0-1],红色的点是网格位置(cx,cy)pw,ph是原始的宽高等比例缩小后的(/32)

在这里插入图片描述
我的理解:预测值都是预测的偏移量。位置偏移,宽高偏移。bw,bh得到的是偏移后的相对网格的大小,还原。
在这里插入图片描述

YOLOV3

yolo原作者更新到v3就跑路了。其实是因为他看到yolo被美国军方使用,心里不好受,同时也觉得yolo完成了它的历史使命了。
v3最大的改进就是网络结构,v2是哪个地方都试试。
v3的极度凡尔赛,把自己画到了象限外。
在这里插入图片描述

多尺度(scale)

yolo的大改进终于来了,之前对小目标检测效果一直不好,这不,针对小目标的多尺度它就来了。
大中小3×3=9种候选框。网格大小分别是:52.26.13.
在多尺度时使用了特征融合,
在这里插入图片描述

Resnet

resnet在网络结构里对应的是shortcut层,注意在v3的网络机构里,shortcut层对应的相加的操作,也就是维度不会有任何改变,是数值上的改变。而route层是拼接的操作,是数值不变,维度相加。

softmax->logistic

因为考虑到多类别时有些物体可能同时属于多类,比如既属于狗,又属于哈士奇。
此时用softmax不大合适,改为对每个类别都判断一个二分类(是与不是)

网络结构

darknet53(就是resnet卷积)
不用池化了,用stride=2的下采样。
在这里插入图片描述

YOLOV4

yolov4的作者不是原作者(但是得到了原作者的认可),在4版本没有什么原创内容,但带来的效果比原创更好。作者融合了当下最前沿的一些算法,把效果好的能试的都试了,融合在了网络里。是一个集大成者。
这个图和v3一样,还是学到了原作者的精髓。
在这里插入图片描述
v4的两大核心改善:数据层面和网络结构层面。

Bag of Freebies(BOF)

只增加训练成本,不影响推理速度。如:

  • 数据增强,v4用到了很多数据增强方法;
  • 网络正则化:dropout、dropblock;
  • 类别不平衡的损失函数设计。

马赛克数据增强

参考了cutmix
在这里插入图片描述

dropblock

直接吃掉一个区域,增加游戏难度.
在这里插入图片描述

labelsmothing-标签平滑

[0,1]—>[0.05,0.95]
使用之后的效果,类间间距更大,类内更密集
在这里插入图片描述

iou-giou-diou-ciou损失

(1)iou损失
1-iou
问题:不相交的时候iou=0,而且相同的iou也对应着多种情况,网络学习方向不强。
(2)giou损失
做了一个大框,包裹住两个小框,就是图中的C,然后在1-iou的基础上再加上一个相对于大框的损失
在这里插入图片描述
但是当原本的一个框本来就在另外一个框里面时就失灵了。
(3)diou
直线距离优化,速度更快,并且解决了giou的问题。
在这里插入图片描述
(4)ciou
这个是yolov4最终采用的损失,在diou的基础上,又加了一项宽高比损失。
综合考虑了重叠面积、中心距离、宽高比
在这里插入图片描述

soft-nms(diou-nms)

之前yolo用的nms都太生硬了,soft-nms就是对那些和高分框重合度较高的anchor并没有直接杀死,而是下调了得分,然后它又有资格参与计算了。最终会显示出来吗?这个暂时没弄清。
在这里插入图片描述

Bag of specials(BOS)

稍微增加推算代价,但能提高模型精度。如:

  • 注意力机制
  • 特征金字塔(spp)
  • 网络细节设计
  • 激活函数

SPPNet(spatial pyramid pooling)

在v3中为了更好得满足不同的输入大小,需要在训练的时候改变输入数据的大小。
spp就是用最大池化满足最终输入特征一致。
可以增加感受野。

CSPNet* 核心

将特征图的channel分成两部分,一部分正常走流程,一部分直接拉后面concat,速度会更快,精度不下降。
在这里插入图片描述

SAM(CBAM)注意力机制

CBAM是卷积 block attention module,嵌在卷积中的注意力 ,长这样
假设有一个32×32×256的特征层:
channel注意力就是从256个特征图出发,加一些权重,注意一下哪些是重要的,哪些不重要。有点类似一个256个类别的softmax。
spatial注意力就是从32出发,注意空间上哪些地方重要。是空间位置上的注意力。
在这里插入图片描述
v4中用的是SAM是空间(spatial)注意力机制,也就是阉割版的CBAM,一切为了速度。
并且,v4也对SAM阉割了,直接删去了pooling,上卷积,得到一个概率参数,然后相乘就完事了。

PAN(path aggregation network)

FPN开始讲起。看这个图,想要提取特征,用了resnet,p2-p5提取的是不同层次的特征。为了融合不同层次的特征,fpn中是自顶向下流动。橙色箭头。
在这里插入图片描述
但是这是一个单向的流动,就像是只有大领导问小破民有没有什么困难啊,但是小破民不能向上打报告的那种感觉。
而PAN就是建立了这种双向机制,既可以从p5到p2,也可以从p2到p5.但是从时间成本上,另一条路径并不会经过resnet,而是直接走了捷径,也就是绿色的这条路。
在这里插入图片描述
v4中用的PAN又做了一点小改变,上上个图中的那个红色圆圈,是不同层的特征融合,以直接相加的方式,而v4决定使用直接拼接的方式而不是相加。感觉没多大变化

Mish激活函数

relu有点太绝对了,mish更符合实际情况。感觉就是把leaky relu做的更丝滑了
但是计算量确实增加了。
对底层没发挥好的特征没有一棒子打死,而是给一个微小的改过自新的机会。
在这里插入图片描述

网络架构

在这里插入图片描述
总结:yolov4大的改变没有,但小的改变非常多。并且单gpu也能训练得很好。

YOLOV5

v5版本与前四个版本都不一样,前四个都是偏学术的论文版本,v5没有论文,是一个更偏工程化的代码,相当于是从工程上对yolov4更好的实现.

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值