鱼C论坛

 找回密码
 立即注册
查看: 2474|回复: 1

x = dets[:, 4]是什么意思?dets是什么类型

[复制链接]
发表于 2018-8-11 18:30:16 | 显示全部楼层 |阅读模式
50鱼币
  1. import numpy as np

  2. def py_cpu_nms(dets, thresh):#请问一下该函数的两个参数都是什么类型的?
  3.     """Pure Python NMS baseline."""
  4.     #x1、y1、x2、y2、以及score赋值
  5.     x1 = dets[:, 0]
  6.     y1 = dets[:, 1]
  7.     x2 = dets[:, 2]
  8.     y2 = dets[:, 3]
  9.     scores = dets[:, 4]
  10.    
  11.     #每一个检测框的面积
  12.     areas = (x2 - x1 + 1) * (y2 - y1 + 1)
  13.     #按照score置信度降序排序
  14.     order = scores.argsort()[::-1]

  15.     keep = []#保留的结果框集合
  16.     while order.size > 0:
  17.         i = order[0]
  18.         keep.append(i)#保留该类剩余box中得分最高的一个
  19.         
  20.         #得到相交区域,左上及右下
  21.         xx1 = np.maximum(x1[i], x1[order[1:]])
  22.         yy1 = np.maximum(y1[i], y1[order[1:]])
  23.         xx2 = np.minimum(x2[i], x2[order[1:]])
  24.         yy2 = np.minimum(y2[i], y2[order[1:]])
  25.         
  26.         #计算相交的面积,不重叠时面积为0
  27.         w = np.maximum(0.0, xx2 - xx1 + 1)
  28.         h = np.maximum(0.0, yy2 - yy1 + 1)
  29.         inter = w * h
  30.         
  31.         #计算IoU:重叠面积 /(面积1+面积2-重叠面积)
  32.         ovr = inter / (areas[i] + areas[order[1:]] - inter)
  33.         #保留IoU小于阈值的box
  34.         inds = np.where(ovr <= thresh)[0]
  35.         order = order[inds + 1]#因为ovr数组的长度比order数组少一个,所以这里要将所有下标后移一位

  36.     return keep
复制代码

问题一:请问一下py_cpu_nms函数的两个参数都是什么类型的?
问题二:x = dets[:, 4]是什么意思?dets是什么类型
问题三:这段代码是从网上找的NMS算法,有没有大神可以详细解释一下NMS算法,完全不懂,可是老师催。。。还让我用C语言实现这个算法

小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2018-8-11 19:00:32 | 显示全部楼层
1,2 都是矩阵 dets (detection) 检测 ,thres (threshold) 阀值

3. 把多余的资讯滤除。如侦测人脸,把人的身体、背景等排除,剩下有用的资讯,但并没有把所有的资讯都丢掉。再丢就变有损压缩了,所以叫 Non maximum Suppression (非极大值抑制)。

希望答案让您满意
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2026-1-1 11:43

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表