參考鏈結 :nms(非極大值抑制)
nms: non maximum suppression
翻譯為「非極大值抑制」,為什麼不翻譯成最大值抑制呢?maximum可以翻譯為「最大值」,也可以翻譯成「極大值」,所以翻譯成極大值或者最大值一定要看這個值的含義。
極大值和最大值的區別就是,極大值是區域性最大值。
nms的作用:去掉detection任務重複的候選框,只留下**概率值最大的候選框最為最終**的結果(非極大值抑制)。
實現**如下,來自鏈結:
1#非極大值抑制
2def nms(bboxes, scores, score_thresh, nms_thresh, pre_nms_topk, i=0, c=0):
3"""
4nms
5"""
6 inds =np.argsort(scores)
7 inds = inds[::-1]
8 keep_inds =
9while(len(inds) >0):
10 cur_ind =inds[0]
11 cur_score =scores[cur_ind]12#
if score of the box is less than score_thresh, just drop it
13if cur_score 14break
1516 keep =true
17for ind in
keep_inds:
18 current_box =bboxes[cur_ind]
19 remain_box =bboxes[ind]
20 iou =box_iou_xyxy(current_box, remain_box)
21if iou >nms_thresh:
22 keep =false
23break
24if i == 0 and c == 4 and cur_ind == 951:
25print('
suppressed,
', keep, i, c, cur_ind, ind, iou)
26if
keep:
2728 inds = inds[1:]
2930
return
np.array(keep_inds)
3132
#多分類非極大值抑制
33def multiclass_nms(bboxes, scores, score_thresh=0.01, nms_thresh=0.45, pre_nms_topk=1000, pos_nms_topk=100):
34"""
35this is for multiclass_nms
36"""
37 batch_size =bboxes.shape[0]
38 class_num = scores.shape[1]
39 rets =
40for i in
range(batch_size):
41 bboxes_i =bboxes[i]
42 scores_i =scores[i]
43 ret =
44for c in
range(class_num):
45 scores_i_c =scores_i[c]
46 keep_inds = nms(bboxes_i, scores_i_c, score_thresh, nms_thresh, pre_nms_topk, i=i, c=c)
47if len(keep_inds) < 1:
48continue
49 keep_bboxes =bboxes_i[keep_inds]
50 keep_scores =scores_i_c[keep_inds]
51 keep_results = np.zeros([keep_scores.shape[0], 6])
52 keep_results[:, 0] =c
53 keep_results[:, 1] =keep_scores[:]
54 keep_results[:, 2:6] =keep_bboxes[:, :]
5556
if len(ret) < 1:
5758
continue
59 ret_i = np.concatenate(ret, axis=0)
60 scores_i = ret_i[:, 1]
61if len(scores_i) >pos_nms_topk:
62 inds = np.argsort(scores_i)[::-1]
63 inds =inds[:pos_nms_topk]
64 ret_i =ret_i[inds]
6566
6768
return rets
非極大值抑制(NMS)
非極大值抑制 nms 非極大值抑制顧名思義就是抑制不是極大值的元素,搜尋區域性的極大值。這個區域性代表的是乙個鄰域,鄰域有兩個引數可變,一是鄰域的維數,二是鄰域的大小。這裡不討論通用的nms演算法,而是用於在目標檢測中用於提取分數最高的視窗的。例如在行人檢測中,滑動視窗經提取特徵,經分類器分類識別後...
NMS非極大值抑制
非極大值抑制演算法 non maximum suppression for object detection in python 非極大值抑制演算法 nms 非極大值抑制 矩形框融合 nms 卷積網路改進實現 筆記 人臉檢測視窗選擇辦法 nms convnet 開源 如何用soft nms實現目標檢...
非極大值抑制(NMS)
非極大值抑制 nms 非極大值抑制顧名思義就是抑制不是極大值的元素,搜尋區域性的極大值。這個區域性代表的是乙個鄰域,鄰域有兩個引數可變,一是鄰域的維數,二是鄰域的大小。這裡不討論通用的nms演算法,而是用於在目標檢測中用於提取分數最高的視窗的。例如在行人檢測中,滑動視窗經提取特徵,經分類器分類識別後...