NMS的实现代码详解

更新时间:2023-06-24 11:43:58 阅读: 评论:0

NMS的实现代码详解
NMS代码说明(来⾃Fast-RCNN)
说普通话写规范字内容个⼈觉得NMS包含很多框,其坐标为(x1,y1,x2,y2),每个框对应了⼀个score,我们将按照score得分降序,并将第⼀个最⾼的score的框(我们叫做标准框)作为标准框与其它框对⽐,即计算出其它框与标准框的IOU值,然后设定阈值,与保留框的最⼤数量,若超过阈值,就删除该框,以此类推,所选框最⼤不能超出设定的数量,最后得到保留的框,结束NMS
接下来,请看代码:
import numpy as np
def py_cpu_nms(dets, thresh):
"""Pure Python NMS baline."""
x1 = dets[:, 0]
y1 = dets[:, 1]
x2 = dets[:, 2]天下第一庙
应该近义词y2 = dets[:, 3]
scores = dets[:, 4]贫困理由
areas = (x2 - x1 + 1) * (y2 - y1 + 1)                                  # 我认为xy坐标应该包含了(0,0)坐标,所以需要+1(个⼈是这么认为)
order = scores.argsort()[::-1]                                            # [::-1]表⽰降序排序,输出为其对应序号
keep = []                                                                          #需要保留的bounding box
while order.size > 0:
警惕的意思i = order[0]                                                                        #取置信度最⼤的(即第⼀个)框
keep.append(i)                                                                #将其作为保留的框
#以下计算置信度最⼤的框(order[0])与其它所有的框(order[1:],即第⼆到最后⼀个)框的IOU,以下都是以向量形式表⽰和计算
多大上幼儿园xx1 = np.maximum(x1[i], x1[order[1:]])                            #计算xmin的max,即overlap的xmin
yy1 = np.maximum(y1[i], y1[order[1:]])                            #计算ymin的max,即overlap的ymin
xx2 = np.minimum(x2[i], x2[order[1:]])                              #计算xmax的min,即overlap的xmax
yy2 = np.minimum(y2[i], y2[order[1:]])                              #计算ymax的min,即overlap的ymax
w = np.maximum(0.0, xx2 - xx1 + 1)                                #计算overlap的width,我认为xy坐标应该包含了(0,0)坐标,所以需要+1(个⼈是这么认为)二年级乘除法
h = np.maximum(0.0, yy2 - yy1 + 1)                                #计算overlap的hight
inter = w * h                                                                      #计算overlap的⾯积
ovr = inter / (areas[i] + areas[order[1:]] - inter)                #计算并,-inter是因为交集部分加了两次。
inds = np.where(ovr <= thresh)[0]                                    #本轮,order仅保留IOU不⼤于阈值的下标坐标,但是是从第⼆个数开始当成第⼀个数order = order[inds + 1]                                                      #删除IOU⼤于阈值的框,因为从第⼆个数开始,当作第⼀个数,所以需要+1,如[1,2,3,4],将从[2,3,4]开始,
#若选择第⼀个数2,下标为0,所以需要+1,才能对应原来数[1,2,3,4],选择为2.
return keep
单独对这句话的理解,如下:温庭筠

本文发布于:2023-06-24 11:43:58,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/fan/82/1028449.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:个数   坐标   阈值   保留
相关文章
留言与评论(共有 0 条评论)
   
验证码:
推荐文章
排行榜
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图