NMS非极大值抑制的功能:
筛选出一定区域内、属于同一种类、得分最大的框。
每个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非极大值抑制_我的博客-CSDN博客
NMS的实现过程:
输出的大小为:[batch_size , all_anchors ,4+1+num_classes ]
第一个维度是图片的数量。
第二个维度是所有的预测框。
第三个维度是所有的预测框的预测结果:x,y,w,h,confidence,类别概率。
非极大抑制的执行过程如下所示:
1、对所有图片进行循环。
2、找出该图片中得分大于门限函数的框。在进行重合框筛选前就进行得分的筛选可以大幅度减少框的数量。
假设第一个类是狗,我们设一个阈值0.2,所有小于0.2的全设为0。
将所有全概率按狗的全概率重新按大到小进行排序。
非极大值抑制将多余的bounding box也设为0。
3、判断第2步中获得的框的种类与得分。取出预测结果中框的位置与之进行堆叠。此时最后一维度里面的内容由5+num_classes变成了4+1+2

这篇博客深入解析了YOLOv1目标检测模型中的NMS(非极大值抑制)过程,包括其功能和实现步骤。NMS用于筛选得分高的目标框,避免重复检测。首先,解释了每个gridcell的输出结构,然后详细介绍了NMS的执行流程,涉及得分筛选、概率排序、IOU计算和框的剔除。最后展示了NMS的Python实现,通过PyTorch进行预测框的处理和非极大值抑制,输出最终的检测结果。

1万+

被折叠的 条评论
为什么被折叠?



