首页 > 其他分享 >手撕NMS及其变种

手撕NMS及其变种

时间:2023-12-20 10:24:11浏览次数:21  
标签:clamp NMS 变种 及其 min boxes y1 y2 order

NMS

def NMS(boxes,scores, thresholds):
    x1 = boxes[:,0]
    y1 = boxes[:,1]
    x2 = boxes[:,2]
    y2 = boxes[:,3]
    areas = (x2-x1)*(y2-y1)
    _,order = scores.sort(0,descending=True)
    keep = []
    while order.numel() > 0:
        i = order[0]
        keep.append(i)
        if order.numel() == 1:
            break
        xx1 = x1[order[1:]].clamp(min=x1[i])
        yy1 = y1[order[1:]].clamp(min=y1[i])
        xx2 = x2[order[1:]].clamp(max=x2[i])
        yy2 = y2[order[1:]].clamp(max=y2[i])
        w = (xx2-xx1).clamp(min=0)
        h = (yy2-yy1).clamp(min=0)
        inter = w*h
        ovr = inter/(areas[i] + areas[order[1:]] - inter)
        ids = (ovr<=thresholds).nonzero().squeeze()
        if ids.numel() == 0:
            break
        order = order[ids+1]
    return torch.LongTensor(keep)

 

标签:clamp,NMS,变种,及其,min,boxes,y1,y2,order
From: https://www.cnblogs.com/jimchen1218/p/17915887.html

相关文章

  • 关联分析思想及其Python实现
    关联规则分析算法是一种用于挖掘数据集中项之间关系的技术,它可以揭示数据中的潜在模式和趋势。这种算法的核心思想是寻找数据集中频繁出现的组合,从而推断它们之间的关联关系。其中,Apriori算法是关联规则分析的代表之一。Apriori算法的基本原理是利用"先验原理",即如果一个项集是频......
  • 决策树算法思想及其Python实现
    决策树算法是一种在机器学习和数据挖掘领域广泛应用的强大工具,它模拟人类决策过程,通过对数据集进行逐步的分析和判定,最终生成一颗树状结构,每个节点代表一个决策或一个特征。决策树的核心思想是通过一系列问题将数据集划分成不同的类别或值,从而实现对未知数据的预测和分类。这一算......
  • 1346. 检查整数及其两倍数是否存在
    1346.检查整数及其两倍数是否存在给你一个整数数组arr,请你检查是否存在两个整数N和M,满足N是M的两倍(即,N=2*M)。更正式地,检查是否存在两个下标i和j满足:i!=j0<=i,j<arr.lengtharr[i]==2*arr[j]二分还算简单的二分,两个错点:1.原数组无序,要先排(sort)......
  • 小学语文线上作业设计及其优化策略研究—文档
    摘 要从2020年开始,新冠肆虐全国,教育部倡导停课不停教,停课不停学制度,线上教学在教育系统全面覆盖。为保证学生安全,最大限度减小疫情对教学秩序的影响,线上授课以及线上作业的设计成为主要教学手段和课后检测方式。本次研究在充分对小学课改新目标,小学语文线上教学现状以及线上语......
  • 基于光纤环形激光器的optisystem仿真及其传感应用
    近年来,光纤传感器在航空航天领域,工业制造,医疗等领域引起了越来越多的关注,因为他们体积小,结构简单,灵敏度高,抗电磁干扰强,防腐性能好的特点。各种各样的传感器结构被设计出来,以便于提高传感的灵敏度和精确性。比如FP,MZI,Sagnac环,各种FBG等结构。但是,对着需求的提高,上述结构的传感器的性......
  • 系统聚类思想及其Python实现
    系统聚类是一种将对象或数据按照其相似性进行分组的方法。与传统聚类方法不同,系统聚类通过构建一颗层次树(或称为树状图或谱系图)来展现数据的层次结构。在系统聚类中,数据点最初被视为单独的簇,然后通过逐步合并或分裂,形成一个层次结构的聚类结果。这种层次结构可用于分析数据的不同......
  • K-means聚类思想及其Python实现
    聚类就是将一个庞杂数据集中具有相似特征的数据自动归类到一起,称为一个簇,簇内的对象越相似,聚类的效果越好。“相似”这一概念,是利用距离标准来衡量的,我们通过计算对象与对象之间的距离远近来判断它们是否属于同一类别,即是否是同一个簇。聚类是一种无监督的学习(UnsupervisedLearn......
  • Web登录功能及其安全验证
    登录认证业务分析系统的登录认证,本质上是查询语句,查询数据库中用户名与密码是否与前端传来的相同。列如前端来数据为{ "username":"jinyong","password":"123456"}在controller层进行接收,并调用Service层的方法处理后响应结果在Service层调用Mapper层方法查询user......
  • Storm 集群的搭建及其Java编程进行简单统计计算
    一、Storm集群构建编写storm与zookeeper的yml文件 stormyml文件的编写具体如下:version:'2'services:zookeeper1:image:registry.aliyuncs.com/denverdino/zookeeper:3.4.8container_name:zk1.cloudenvironment:-SERVER_ID=1......
  • 旋转数组 二分查找变种
    题目搜索旋转排序数组整数数组nums按升序排列,数组中的值互不相同。在传递给函数之前,nums在预先未知的某个下标k(0<=k<nums.length)上进行了旋转,使数组变为[nums[k],nums[k+1],...,nums[n-1],nums[0],nums[1],...,nums[k-1]](下标从0开始计数)。例如,[0,1,2,......