|
|
50鱼币
- import numpy as np
- def py_cpu_nms(dets, thresh):#请问一下该函数的两个参数都是什么类型的?
- """Pure Python NMS baseline."""
- #x1、y1、x2、y2、以及score赋值
- x1 = dets[:, 0]
- y1 = dets[:, 1]
- x2 = dets[:, 2]
- y2 = dets[:, 3]
- scores = dets[:, 4]
-
- #每一个检测框的面积
- areas = (x2 - x1 + 1) * (y2 - y1 + 1)
- #按照score置信度降序排序
- order = scores.argsort()[::-1]
- keep = []#保留的结果框集合
- while order.size > 0:
- i = order[0]
- keep.append(i)#保留该类剩余box中得分最高的一个
-
- #得到相交区域,左上及右下
- xx1 = np.maximum(x1[i], x1[order[1:]])
- yy1 = np.maximum(y1[i], y1[order[1:]])
- xx2 = np.minimum(x2[i], x2[order[1:]])
- yy2 = np.minimum(y2[i], y2[order[1:]])
-
- #计算相交的面积,不重叠时面积为0
- w = np.maximum(0.0, xx2 - xx1 + 1)
- h = np.maximum(0.0, yy2 - yy1 + 1)
- inter = w * h
-
- #计算IoU:重叠面积 /(面积1+面积2-重叠面积)
- ovr = inter / (areas[i] + areas[order[1:]] - inter)
- #保留IoU小于阈值的box
- inds = np.where(ovr <= thresh)[0]
- order = order[inds + 1]#因为ovr数组的长度比order数组少一个,所以这里要将所有下标后移一位
- return keep
复制代码
问题一:请问一下py_cpu_nms函数的两个参数都是什么类型的?
问题二:x = dets[:, 4]是什么意思?dets是什么类型
问题三:这段代码是从网上找的NMS算法,有没有大神可以详细解释一下NMS算法,完全不懂,可是老师催。。。还让我用C语言实现这个算法
|
|