| |
论文名称
|
YOLO-v1:You Only Look Once: Unified, Real-Time Object Detection
|
作者
|
miclover
|
参考
| |
书摘
| |
核心思想:
利用整张图作为网络的输入,直接在输出层回归 bounding box(边界框) 的位置及其所属的类别
特点:
运行速度很快,可以用于实时系统
网络结构:
卷基层
全连接层
YOLO V1 24 2
FastYOLO 9 2
论文中,
将输出图片被划分为 7*7=49 个网格(
grid cell
),每个网格允许预测出2个边框(bounding box,包含某个对象的矩形框),总共 49*2=98 个bounding box。
如果某个 object 的中心落在这个网格中,则这个网格就负责预测这个object。
每个网格要预测 2 个 bounding box,每个 bounding box 除了要回归自身的位置之外,还要附带预测一个 confidence 值。
这个 confidence 代表了所预测的 box 中含有 object 的置信度和这个 box 预测的有多准这两重信息,其值是这样计算的:
Pr表示是否为目标,是为1,否为0;并且在为1的情况下IoU值。
Loss损失函数:
output结果向量为:7*7*30的结构,其中某一
网格为如下所示:
前两个为坐标预测;中间为置信度的预测;最后为类别的预测。
第 i 个单元格存在目标,且该单元格中的第 j 个边界框负责预测该目标
指的是第 i 个单元格存在目标
增加了边界框坐标预测的损失,并减少了不包含对象的框的置信预测的损失。
预测阶段:
conditional class probability(类条件概率)信息是针对每个网格的。
confidence信息是针对每个bounding box的。
测试阶段,首先对网络输出的7*7*30中的各自conditional class probabilities与每个 bounding box的 confidence相乘。
通过上述处理,我们可以获取到每一个bounding box的具体confidence分数,这就使得结果中的每一个bounding box
既包含了预测的class的 probability信息,也反映了bounding box是否含有Object和bounding box坐标的准确度。
通过上述操作之后,我们将得到7*7*2 = 98个维度为20的数据。
得到每个bounding box
的具体confidence分数
以后,设置阈值,滤掉得分低的boxes,在惊醒降序排列,对保留的boxes进行NMS(非极大值预测)处理,就得到最终的检测结果。
非极大值预测(NMS):
NMS算法主要解决的是一个目标被多次检测的问题
以dog类别为例,上述98*20的数据降序排列之后,得到如下的结果。我们将使用概率最大的bounding box这个,与其他非零概率的一一比较(参与比较的我们称之为
bboc_cur
)。
如果,IoU值>0.5->将其设置为0;
然后继续往下比较
比较完成之后,我们将会再次将接下来的次大的非零概率为bbox_max,依次比较。
所有的比较完之后,基本都是零了,现在的话选取目标框。
| |
注解
| |
目前,基于深度学习算法的一系列目标检测算法大致可以分为两大流派:
1.两步走(two-stage)算法:先产生候选区域然后再进行CNN分类(RCNN系列),
2.一步走(one-stage)算法:直接对输入图像应用算法并输出类别和相应的定位(YOLO系列)
| |
缺点 | |
1、采用了多个下采样层,网络学到的物体特征并不精细,因此也会影响检测效果。
2、同一类物体出现的新的不常见的长宽比和其他情况时,泛化能力偏弱。
3、由于损失函数的问题,定位误差是影响检测效果的主要原因。尤其是大小物体的处理上,还有待加强。
4、YOLO 对相互靠的很近的物体,还有很小的群体检测效果不好,这是因为一个网格中只预测了两个框,并且只属于一类。
|