nms修改为soft nms
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相关推荐
- NMS、soft NMS、softer NMS与IOU-Guided NMS
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 NMS.soft NMS.softer NMS与IOU-Guided NMS 一.NMS 二.soft NMS 三.softer NM ...
- Soft NMS+Softer NMS+KL Loss
论文1: Soft-NMS – Improving Object Detection With One Line of Code (ICCV2017) 速达>> 论文2: Softer-N ...
- Soft NMS论文笔记
论文:Improving Object Detection With One Line of Code. Navaneeth Bodla*, Bharat Singh*, Rama Chellappa ...
- 卷积在计算机中实现+pool作用+数据预处理目的+特征归一化+理解BN+感受野理解与计算+梯度回传+NMS/soft NMS
一.卷积在计算机中实现 1.卷积 将其存入内存当中再操作(按照"行先序"): 这样就造成混乱. 故需要im2col操作,将特征图转换成庞大的矩阵来进行卷积计算,利用矩阵加速来实现, ...
- Soft NMS算法笔记
原博客地址:https://blog.csdn.net/u014380165/article/details/79502197#comments 提出问题 如下图,测算法本来应该输出两个框,但是传统的 ...
- 目标检测中的NMS,soft NMS,softer NMS,Weighted Boxes Fusion
NMS 非最大值抑制算法,诞生至少50年了. 在经典的两阶段目标检测算法中,为了提高对于目标的召回率,在anchor阶段会生成密密麻麻的anchor框. 所以在后处理的时候,会存在着很多冗余框对应着同 ...
- 交并比 (IoU), mAP (mean Average Precision), 非极大值抑制 (NMS, Soft NMS, Softer NMS, IoU-Net)
目录 目标检测的评价指标 交并比 (Intersection of Union, IoU) mAP (mean Average Precision) 其他指标 非极大值抑制 (Non-Maximum ...
- nms,soft nms算法理解
从上面这张图可以看出来nms和soft nms的算法原理: ** 经典nms的原理 **设定目标框的置信度阈值,常用的阈值是0.5左右 根据置信度降序排列候选框列表 选取置信度最高的框A添加到输出列表 ...
- NMS与Soft NMS
1.NMS 非最大抑制(Non-maximum suppression, NMS)是物体检测流程中重要的组成部分.NMS算法的大致思想:对于有重叠的候选框:若大于规定阈值(某一提前设定的置信度)则删除 ...
最新文章
- python什么时候用框架_Python 中三大框架各自的应用场景
- oracle如何给表上锁,【ORACLE】Oracle中发生表加锁、死锁的原因,查看,与解决方法...
- aspnet_Applications表结构
- 数据仓库专题18-数据建模语言IDEF(转载)
- 网络编程2之Socket简介和java.net包
- JavaWeb学习总结(四十八)——模拟Servlet3.0使用注解的方式配置Servlet
- 他不怕被拒绝_不怕被拒绝,这几大星座男追人时最有耐心
- convolutional layer 源代码
- 如何理解在数据类型中元素不能修改?
- ​Java面向对象的概念整理
- html5做开心消消乐源代码,html开心消消乐源码
- C++ 实现小写金额转化为大写金额
- 解决cherry pick提交报错问题
- 开发规约:接口统一返回值格式 [resend]
- Kafka Consumer 消费逻辑
- mvc4.0 @ViewBag.Title
- python爬虫模拟登录网页:登录wish
- 计算机网络实验(思科模拟器Cisco Packet Tracer)配置静态路由使三台pc机网络互通
- [摄影写真工作室网站模板]织梦模板+响应式模特艺术展示类网站+自适应手机版
- 蓝桥杯嵌入式(G4系列):RTC时钟
热门文章
- 中创 | 云服务市场竞争加剧,全国增值电信业务经营许可企业达14万家
- PTA 彩虹瓶 C++
- 全志和瑞芯微比较_哪家强_瑞芯微全志:渐渐失声的昔日贵族
- Python3跳过第一行读取文件
- add voom plugin , it's better than tlist
- osta计算机等级考试cad,Autodesk在线考试流程介绍
- github windows系统监控_GitHub日收7000星,Windows计算器项目开源即爆红!
- win10开启热点,设备搜索不到
- UVa 10557 - XYZZY
- 爱我,就要懂我 – Memcached- 第284篇