目标检测 | Yolo1算法原理总结

Yolo算法通过运行单个卷积网络来定位和检测物体,流程图如下:

步骤:

1)将输入图像的大小调整为448×448

2)在图像上运行卷积神经网络,输出每个grid cell的Bounding Box和所属每个类的概率值

3)根据非极大值抑制算法,输出最有可能包含物体的Bounding Box

若仅包含上述步骤,则模型处于测试阶段;若模型处于训练阶段,则需要根据预测Bounding Box与目标矩形框的损失值,然后利用梯度下降法更新模型参数,若达到迭代次数或损失之小于某一阈值时,则停止训练。

文章介绍了yolo算法原理的几个基本概念

1. 什么是grid cell 

如下图,Yolo算法把图像划分成7×7的网格,每个网格就是grid cell。

2. Yolo算法的输出是什么

Yolo算法输出每个grid cell的Bounding Box和所属每个类的概率值,

Bounding Box包含了矩形框的中心横坐标、纵坐标,宽度w,高度h以及grid cell的置信度confidence,即Bounding Box共5个维度。

若设置检测的物体类数为C,则Yolo算法输出每个grid cell的类概率值,维度为C。

Yolo算法认为每个grid cell只包含一个物体对象,若设置每个grid cell包含两个Bounding Box,物体对象可能的类数为20个,则每个grid cell的输出维度为:(20 + 5×2)= 30。因此Yolo算法的输出维度为:7×7×30

3. 置信度的含义是什么

Bounding Box包含了置信度,反映了Bounding Box是否包含物体以及这个物体的可能性是多少,公式为:

Pr(Object)表示Bounding Box是否包含物体,具体含义可参考Yolo1论文的解释:

若Bounding Box包含物体,则Pr(Object) = 1;反之,则Pr(Object) = 0。

因此Bounding Box置信度的含义为预测框和真实框的交并比,我们常用交并比(IoU)衡量矩形框的重叠度,如下图:

4. grid cell的类条件概率计算

上节介绍的置信度反映了Bounding Box包含物体的可能性,即:

若要计算每个grid cell包含物体的前提下属于某个类的概率,即Pr(Classi | Object),这一含义是针对每个grid cell而非Bounding Box。

将每个grid cell的类的条件概率与Bounding Box相乘,即:

该值得到了每个Bounding Box所属类的置信度,既包含了每个Bounding Box预测类的信息,也反映了Bounding Box包含物体的准确度。

5. 非极大值抑制算法原理

若满足条件的预测框有很多个,我们需要用非极大值抑制算法选择最优预测框,若两个矩形框都包含了相同类的物体,且两个矩形框的重叠度较高,则选择置信度较高的矩形框,删除置信度较低的矩形框

6. Bounding Box的含义是什么

Bounding Box包含了矩形框的中心 (x,y),矩形框的宽高(w,h)以及置信度c,这5个值的范围在0和1之间,通过Sigmoid函数来实现。

矩形框中心 (x,y)的含义:每个Bounding Box相对于grid cell的偏移值,范围0~1

矩形框的宽高 (w,h)的含义: 每个Bounding Box的宽高相对于整个图像的大小,范围0~1

7. 训练阶段的损失函数计算

图像中包含物体对象的Bounding Box数量远远小于不包含物体的Bounding Box数量,因此若两者的权重相等,那么计算的损失函数会偏向于给出背景的结果。Yolo1算法论文设置包含物体的Bounding Box的权重为5,不包含的Bounding Box的权重为0。

包含物体和不包含物体的权重分别记为:

Yolo算法把定位和检测目标看成是一个回归问题,因此对于所有的输出变量,我们都使用和平方误差表示损失函数。

每个grid cell包含了2个Bounding Box和1个条件类概率,grid cell结构和损失函数如下图:

其中:

 表示第i个grid cell的第j个Bounding Box是否包含物体对象,若包含,则等于1;若不包含,则等于0。

表示第i个grid cell是否包含物体对象,若包含,则等于1;若不包含,则等于0。

对于不同大小的Bounding Box,小的Bounding Box对于偏差的容忍度更低,比如千万富翁丢失1000块钱与普通家庭丢失1000块钱的意义不一样。为了缓和这个问题,我们对Bounding Box的宽和高取平方根。如下图:

8. 如何定位目标物体的grid cell和Bounding Box

我们知道了损失函数如何计算,yolo算法预测每个grid cell的Bounding Box?训练阶段,我们需要知道物体的实际grid cell和Bounding Box。

如何定位?若目标物体的中心点在某一个grid cell,则该目标物体属于这一个grid cell,然后以整个图像宽高为尺度,计算该物体所在grid cell的宽高。如下图的红框grid cell标记的狗:

参考

https://zhuanlan.zhihu.com/p/24916786?utm_source=qq&utm_medium=social

https://blog.csdn.net/shuiyixin/article/details/82533849

欢迎扫码关注:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值