nms修改为soft nms

一,NMS与soft nms原理
先放一张论文中的图

在对上述图片中的目标进行检测过程中,使用非极大值抑制(NMS)进行筛选时只能获取到得分最高的框(得分0.95),对于得分较低的框会抑制掉。但由上图中可以明显看到两个框其实都框住了物体,这就会产生错误的筛选。
soft nms为了改善这种情况(并没有完全消除!)提出了如下的两个函数:
1.线性表达式:
2.高斯表达式(常用):

二,修改后的代码

import numpy as np
def non_max_suppression_fast(boxes,probs,Nt=0.3,sigma=0.5,overlap_thresh=0.001,method=2):dets = boxesN = dets.shape[0]indexes = np.array([np.arange(N)])dets = np.concatenate((dets,indexes.T),axis=1)y1 = dets[:, 1]x1 = dets[:, 0]y2 = dets[:, 3]x2 = dets[:, 2]scores = probsareas = (x2-x1+1)*(y2-y1+1)for i in range(N):tBD = dets[i, :].copy()tscore = scores[i].copy()tarea = areas[i].copy()pos = i+1if i !=N-1:maxscore = np.max(scores[pos:],axis=0)maxpos = np.argmax(scores[pos:],axis=0)else:maxscore = scores[-1]maxpos = 0if tscore<maxscore:dets[i, :] = dets[maxpos+i+1, :]dets[maxpos+i+1, :] = tBDtBD = dets[i,:]scores[i] = scores[maxpos+i+1]scores[maxpos+i+1] = tscoretscore = scores[i]areas[i] = areas[maxpos+i+1]areas[maxpos+i+1] = tareatarea = areas[i]xx1 = np.maximum(dets[i,0],dets[pos:,0])yy1 = np.maximum(dets[i,1],dets[pos:,1])xx2 = np.minimum(dets[i,2],dets[pos:,2])yy2 = np.minimum(dets[i,3],dets[pos:,3])w = np.maximum(0.0,xx2-xx1+1)h = np.maximum(0.0,yy2-yy1+1)inter = w*hovr = inter/(areas[i]+areas[pos:]-inter)if method ==1:weight = np.ones(ovr.shape)weight[ovr>Nt] = weight[ovr>Nt]-ovr[ovr>Nt]elif method == 2:weight = np.exp(-(ovr*ovr)/sigma)else:weight = np.ones(ovr.shape)weight[ovr>Nt] = 0scores[pos:] = weight*scores[pos:]inds = dets[:, 4][scores>overlap_thresh]keep = inds.astype(int)keeps = keep.tolist()boxes = boxes[keeps].astype("int")probs = probs[keeps]return boxes,probs

nms修改为soft nms相关推荐

  1. NMS、soft NMS、softer NMS与IOU-Guided NMS

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 NMS.soft NMS.softer NMS与IOU-Guided NMS 一.NMS 二.soft NMS 三.softer NM ...

  2. Soft NMS+Softer NMS+KL Loss

    论文1: Soft-NMS – Improving Object Detection With One Line of Code (ICCV2017) 速达>> 论文2: Softer-N ...

  3. Soft NMS论文笔记

    论文:Improving Object Detection With One Line of Code. Navaneeth Bodla*, Bharat Singh*, Rama Chellappa ...

  4. 卷积在计算机中实现+pool作用+数据预处理目的+特征归一化+理解BN+感受野理解与计算+梯度回传+NMS/soft NMS

    一.卷积在计算机中实现 1.卷积 将其存入内存当中再操作(按照"行先序"): 这样就造成混乱. 故需要im2col操作,将特征图转换成庞大的矩阵来进行卷积计算,利用矩阵加速来实现, ...

  5. Soft NMS算法笔记

    原博客地址:https://blog.csdn.net/u014380165/article/details/79502197#comments 提出问题 如下图,测算法本来应该输出两个框,但是传统的 ...

  6. 目标检测中的NMS,soft NMS,softer NMS,Weighted Boxes Fusion

    NMS 非最大值抑制算法,诞生至少50年了. 在经典的两阶段目标检测算法中,为了提高对于目标的召回率,在anchor阶段会生成密密麻麻的anchor框. 所以在后处理的时候,会存在着很多冗余框对应着同 ...

  7. 交并比 (IoU), mAP (mean Average Precision), 非极大值抑制 (NMS, Soft NMS, Softer NMS, IoU-Net)

    目录 目标检测的评价指标 交并比 (Intersection of Union, IoU) mAP (mean Average Precision) 其他指标 非极大值抑制 (Non-Maximum ...

  8. nms,soft nms算法理解

    从上面这张图可以看出来nms和soft nms的算法原理: ** 经典nms的原理 **设定目标框的置信度阈值,常用的阈值是0.5左右 根据置信度降序排列候选框列表 选取置信度最高的框A添加到输出列表 ...

  9. NMS与Soft NMS

    1.NMS 非最大抑制(Non-maximum suppression, NMS)是物体检测流程中重要的组成部分.NMS算法的大致思想:对于有重叠的候选框:若大于规定阈值(某一提前设定的置信度)则删除 ...

最新文章

  1. python什么时候用框架_Python 中三大框架各自的应用场景
  2. oracle如何给表上锁,【ORACLE】Oracle中发生表加锁、死锁的原因,查看,与解决方法...
  3. aspnet_Applications表结构
  4. 数据仓库专题18-数据建模语言IDEF(转载)
  5. 网络编程2之Socket简介和java.net包
  6. JavaWeb学习总结(四十八)——模拟Servlet3.0使用注解的方式配置Servlet
  7. 他不怕被拒绝_不怕被拒绝,这几大星座男追人时最有耐心
  8. convolutional layer 源代码
  9. 如何理解在数据类型中元素不能修改?
  10. ​Java面向对象的概念整理
  11. html5做开心消消乐源代码,html开心消消乐源码
  12. C++ 实现小写金额转化为大写金额
  13. 解决cherry pick提交报错问题
  14. 开发规约:接口统一返回值格式 [resend]
  15. Kafka Consumer 消费逻辑
  16. mvc4.0 @ViewBag.Title
  17. python爬虫模拟登录网页:登录wish
  18. 计算机网络实验(思科模拟器Cisco Packet Tracer)配置静态路由使三台pc机网络互通
  19. [摄影写真工作室网站模板]织梦模板+响应式模特艺术展示类网站+自适应手机版
  20. 蓝桥杯嵌入式(G4系列):RTC时钟

热门文章

  1. 中创 | 云服务市场竞争加剧,全国增值电信业务经营许可企业达14万家
  2. PTA 彩虹瓶 C++
  3. 全志和瑞芯微比较_哪家强_瑞芯微全志:渐渐失声的昔日贵族
  4. Python3跳过第一行读取文件
  5. add voom plugin , it's better than tlist
  6. osta计算机等级考试cad,Autodesk在线考试流程介绍
  7. github windows系统监控_GitHub日收7000星,Windows计算器项目开源即爆红!
  8. win10开启热点,设备搜索不到
  9. UVa 10557 - XYZZY
  10. 爱我,就要懂我 – Memcached- 第284篇