NMS及其变体

nms:1.首先将pred_data中置信度小于x的过滤掉,2.根据conf从大到小重新排序并记为P。3.将P[0]保存到另一个列表R中并计算其与P[1:]的IOU(可选项:是否在不同类间计算IOU),过滤掉其中IOU大于y的P[1:]。4.重复步骤3直到P为空

batch-nms:它并非是真正的在一个batch间进行nms,只是给每个box的坐标加上cls_id*max_wh,将每个类的box分隔开来好计算不同类间的IOU,算是加速计算的一种技巧

weighted-nms:它在进行nms步骤3时,将所有与它IOU大于iou_thresh的box的box_conf为权重*各自的坐标并取加权平均记为weight_box,最终返回weight_box而非P[0]并重复步骤3直到P为空

merge-nms:它是先走一遍普通nms的流程得出的nms_box后再跟原始的pred_box计算IOU,然后将大于iou_thresh的IOU*conf([c,n]*[1,n]->[c,n])记为weight再与pred_box做矩阵乘法([c,n]*[n,4]->[c,4])最后除以weight.sum(1)得到的box作为merge-nms结果返回

soft-nms:多了一个soft_thresh参数,在普通nms中计算IOU后,对大于iou_thresh的box_conf做衰减(线性衰减或指数衰减)(普通nms中是直接将box_conf置为0),然后过滤掉box_conf小于soft_thresh的box,继续重复nms中的步骤3。

diou-nms:nms中计算IOU的方法改为DIOU即可,可以缓解遮挡问题

posted on   夏天只喝脉动  阅读(762)  评论(0编辑  收藏  举报

相关博文:
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 一文读懂知识蒸馏
· 终于写完轮子一部分:tcp代理 了,记录一下

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5
点击右上角即可分享
微信分享提示