这是YOLO训练时的运作过程首先我们先设定现在可识别的类别数量是C

 

输入图像之后像左边这样图像被分成S*S大小的grid cell对于每个cell呢,如果obj的中心点落在grid cell中。这个cell就负责检测这个obj

 

 

每个cell都会预测BBoundingBox如中间上左图注意了box是可以超过cell的范围的每个boundingbox都会有5个参数分别是这个box置信度confidence,(置信度的计算我们可以看到下图:

 

 

confidenceIoU解释

 

 

左边PrObject是这个boundingbox含有obj的概率而右边IOU得分则是booudingboxgroundTurth的交并比字面意思也就是两部分交集和并集的比其中的groundTruth是我们训练集中的标注出的真实box

 

 

以及box的中心点坐标xybox的宽高widthheight

另外,,每个cell都会预测C个类别的概率这个概率计算的前提条件是这个cellobject并且这个条件类别概率和boundingbox的置信度confidence是不相关的并且无论cell会生成多少个boundingbox每个grid cell也只负责一个obj进行一组条件类别概率预测这就对应的是中下图的class probability map

接着YOLO会对这些boundingbox进行非最大值抑制算法NMS),这个算法我们可以看到下图

 

 

 

NMS解释

刚才对grid cell进行来条件类别概率的计算就算cell没有obj也没关系继续算反正confidence=0对结果没影响

得到了这两个之后我们可以计算一个分数来衡量boundingbox含有某个类的物体的概率以及box的精准度”

 

基于这个分数我们对其进行not-maximum suppression非极大值抑制具体的运作过程就是先遍历所有的box挑选出得分最高的box接着设立一个阈值当其他box与这个挑选出来的框的IOU超过这个阈值也就是说明他们极有可能预测的是同一个object删除掉这些box接着我们继续在未处理过的box中重复上述过程最后我们得到的结果就是每个obj都由得分最高的box框出

 

question删除了那为什么结果还是S*Stensor此处指的删除是以何种方式

 【置信度=0】

 

 

那么可以看见最终的结果是输出一个S*S*B*5+C的向量就像这样

 

 

 

->输出S*S*(B*5+C)的向量;

 

综上所述: 

 

【在PASCAL VOC数据集上进行YOLO训练测试,使用参数S=7,B=2,VOC有20个label因此C=20,我们最后的预测结果是7*7*(2*5+20)的向量】

 

posted on 2022-09-14 21:22  Jolyne123  阅读(45)  评论(0)    收藏  举报