首先搞清yolo检测网络的输入输出

最终输入的是416*416的三通道图像,输出的是三个尺度特征图上的预测张量。

第一尺度:13*13,对此特征图使用最大的三个anchor box,最终得到13*13*3*(4+1+num_class)维度的张量。此尺度的特征图对原图来说有最小的分辨率,这个anchor尺寸适宜检测大物体。特征图每个像素点感受野为32*32,即原图片空间划分的每个grid的尺寸为32*32

第二尺度:26*26,此尺度由第一尺度featuremap上采样并融合而来,对此特征图使用中间大的三个anchor box,最终得到26*26*3*(4+1+num_class)维度的张量。此尺度的特征图对原图来说有中间大小的分辨率,这个尺度anchor适宜检测中等尺度的物体。特征图每个像素点感受野为16*16,即原图片空间划分的每个grid的尺寸为16*16

第三尺度:52*52,此尺度由第二尺度featuremap上采样并融合而来,对此特征图使用最小的三个anchor box,最终得到52*52*3*(4+1+num_class)维度的张量。此尺度的特征图对原图来说有最大分辨率,此尺度anchor最适宜检测小物体。特枕图每个像素点感受野为8*8,即原图片空间划分的每个grid的尺寸为8*8。

每一个pred_box都是(4+1+num_class)维度,4通过struct box  box实现。完整的pred_box张量用结构体detection实现的。

得到的所有的bouding box先用物体得分obj_score = 0.5粗过滤,然后剩下的再用类别置信度和IOU阈值做。

通过找到最大类别概率大于阈值的anchor,予以显示preb_box。且如果有其它分类概率,大于阈值,那么也会在box旁打印概率。

 

(4+Confidence+C):

    Confidence =(是目标的概率P)*(框到了目标多少部分IOU)。

    C是条件类别概率:已知是目标的前提下,属于某类别的概率。

图片空间分三个尺度划分Grid:(三种划分方法,每种划分其grid内都有3个anchor)

  s = 32*32

  s = 16*16

  s =  8 * 8

每个grid放置3个尺度的anchor box

如何确定物体被哪个区域的anchor预测?物体中心落在哪个grid里,就用这个gird里对应的3个anchor负责预测。

如何确定哪个anchor负责预测目标?这9个anchor与GT_box交并比最大的那个anchor负责预测。

每个格子上的每个anchor都是一个回归器,所有这些回归器是独立的。

https://www.jianshu.com/p/86b8208f634f