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
欢迎扫码关注: