YOLOv1 前向推断后处理——NMS非极大值抑制

YOLOv1 前向推断后处理——NMS非极大值抑制_第1张图片

每个grid cell包含2个bounding box(每个bounding box包含4个box位置坐标和1个box置信度) 和20个类别的条件概率。

将box置信度和20个类别的条件概率分别相乘,得到一个权概率(20*1)。

因此每个bounding box有一个权概率,1个grid cell有2个权概率,总共输出有7*7*2=98个权概率(上图竖条)。

YOLOv1 前向推断后处理——NMS非极大值抑制_第2张图片

把98个权概率分别以颜色(类别)和粗细(box置信度)加持,可视化就得到了中间的98个框。


 接下来是正题——后处理——NMS非极大值抑制,把98个框变为最终的目标检测结果


YOLOv1 前向推断后处理——NMS非极大值抑制_第3张图片

假设第一个类是狗,我们设一个阈值0.2,所有小于0.2的全设为0。

将所有权概率按狗的权概率重新按大到小进行排序。

非极大值抑制将多余的bounding box也设为0。

 YOLOv1 前向推断后处理——NMS非极大值抑制_第4张图片

最左边的最大的bounding box和后面的bounding box分别计算ioU,设ioU阈值为0.5,如果ioU>0.5就将小的bounding box设为0。

YOLOv1 前向推断后处理——NMS非极大值抑制_第5张图片

上一轮结束后,将第二大的bounding box分别和后面的计算,以此类推。

狗这一类结束后,重复操作猫类,飞机类等等,以上为NMS。

YOLOv1 前向推断后处理——NMS非极大值抑制_第6张图片

经过处理后,98个bounding box中有很多概率为0的类,分别对每个bounding box取最大值,如果最大值也是0就跳过这个bounding box,如果最大值大于0就记下这个概率以及对应的类,然后将这个bounding box中的(x,y,w,h)进行绘框,在框上写上刚刚记下的概率和类,对98个bounding box重复以上操作,至此前向推断完成。

你可能感兴趣的:(YOLO,算法,python,机器学习,深度学习,计算机视觉)