口述yolo

本文介绍了Yolo系列的目标检测算法,包括Yolo v1至v3的不同版本及其改进之处。详细阐述了从Yolo v1的基础概念到Yolo v2引入的新技术如全卷积网络、多尺度训练等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

yolo有3个版本 v1 v2 v3

yolo的核心思想就是利用整张图片作为网络的输入,直接在输出层回归bbox所属的类别和bbox的位置,将目标检测转化为回归问题。

yolo1

yolo1,,不需要生成proposal,yolo将图片划分为sxs的格子,每个格子负责中心在该各自的目标检测,采用一次性预测所有格子所含目标的bbox,定位置信度以及所有类别概率向量。
流程如下:
(1) 给个一个输入图像,首先将图像划分成7 * 7的网格。

(2) 对于每个网格,每个网格预测2个bouding box(每个box包含5个预测量)以及20个类别概率,总共输出7×7×(2*5+20)=1470个tensor

(3) 根据上一步可以预测出7 * 7 * 2 = 98个目标窗口,然后根据阈值去除可能性比较低的目标窗口,再由NMS去除冗余窗口即可。

yolo1的inference过程:图片先resize到448x448(意味着yolo1的输入固定),然后进入网络,输出一个维度为SxSx(Bx5+C)的张量,包含了SxS个格子的结果,每个格子的结果包含B个box和C个类别概率,每个box包含4个位置参数和1个confidence。到这里网络就结束了,剩下的就是nms去掉不靠谱的框。

confidence=P(object)IOUtruthpredconfidence=P(object)∗IOUpredtruth

在 test 的时候,每个网格预测的 class 信息和 bounding box 预测的 confidence信息相乘,就得到每个 bounding box 的 class-specific confidence score:
P(Classi|object)P(object)IOUtruthpred=P(Classi)IOUtruthpredP(Classi|object)∗P(object)∗IOUpredtruth=P(Classi)∗IOUpredtruth

乘积即预测的box属于某一类的概率,也有该box准确度的信息。通过该得分滤掉得分低的box,对保留的box进行nms就得到最终结果。

yolo1缺陷:
1. 输入固定
2. 小目标不容易检测到(一个格子最终只输出一类)
3. 框不那么精确

损失函数分为4部分:
1. 坐标预测loss(更重视,权重5)
2. 有目标的box的confidence loss(正常权重1)
3. 没有目标的box的confidence loss(重视少一点,权重0.5)
4. 类别预测loss(只对有目标的box,权重正常)

yolo2

这里写图片描述

yolo1的基础上:
1. 新的基础网络
2. 多尺度训练
3. 全卷积网络
4. 引用了faster rcnn的anchor
5. 更多的训练trick

BatchNorm

Batchnorm是2015年以后普遍比较流行的训练技巧,在每一层之后加入BN层可以将整个batch数据归一化到均值为0,方差为1的空间中,即将所有层数据规范化,防止梯度消失与梯度爆炸。
加入BN层训练之后效果就是网络收敛更快,并且效果更好。YOLOv2在加入BN层之后mAP上升2%。

##### 预训练尺寸
yolo1在预训练时输入是224x224,在输入网络时是448x448

更细网络划分
全卷积网络

因为全连接层必须要求输入输出固定长度特征向量。所以去掉了。去掉fc之后,同时也去掉了一个pooling层确保输出的feature map有更高的分辨率;图片

新基础网络

darn-net19。精度与vgg16相当,速度更快

anchor机制

yolov2为了提高精度与召回率,使用Faster-RCNN中的anchor机制。
在每个网格设置k个参考anchor,训练以GT anchor作为基准计算分类与回归损失。测试时直接在每个格子上预测k个anchor box,每个anchor box为相对于参考anchor的offset与w,h的refine。这样把原来每个格子中边界框位置的全图回归(yolov1)转换为对参考anchor位置的精修(yolov2)。
至于每个格子中设置多少个anchor(即k等于几),作者使用了k-means算法离线对voc及coco数据集中目标的形状及尺度进行了计算。发现当k = 5时并且选取固定5比例值的时,anchors形状及尺度最接近voc与coco中目标的形状,并且k也不能太大,否则模型太复杂,计算量很大。

残差层融合低级特征

为了使用网络能够更好检测小物体,作者使用了resnet跳级层结构,网络末端的高级特征层与前一层或者前几层的低级细粒度特征结合起来,增加网络对小物体的检测效果,使用该方法能够将mAP提高1%。
同样,在SSD检测器上也可以看出使用细粒度特征(低级特征)将进行小物体检测的思想,但是不同的是SSD直接在多个低级特征图上进行目标检测,因此,SSD对于小目标检测效果要优于YOLOv2,这点可以coco测试集上看出,因为coco上小物体比较多,但yolov2在coco上要明显逊色于ssd,但在比较简单的检测数据集voc上优于ssd。

多尺寸训练

yolov2网络结构为全卷积网络FCN,可以适于不同尺寸图片作为输入,但要满足模型在测试时能够对多尺度输入图像都有很好效果,作者训练过程中每10个epoch都会对网络进行新的输入尺寸的训练。需要注意的是,因为全卷积网络总共对输入图像进行了5次下采样(步长为2的卷积或者池化层), 所以最终特征图为原图的1/32。所以在训练或者测试时,网络输入必须为32的位数。并且最终特征图尺寸即为原图划分网络的方式。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值