NMS 非極大值抑制的作用

2022-07-05 19:42:07 字數 2756 閱讀 6510

參考鏈結 :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演算法,而是用於在目標檢測中用於提取分數最高的視窗的。例如在行人檢測中,滑動視窗經提取特徵,經分類器分類識別後...