import numpy as np
def nms(predicts, threshold):
for name, bbox in predicts.items():#對每一個類別分別進行NMS;一次讀取一對鍵值(即某個類別的所有框)
bbox_array = np.array(bbox, dtype=np.float)
#下面分別獲取框的左上角坐標(x1竭贩,y1)蚜印,右下角坐標(x2,y2)及此框的置信度留量;這里需要注意的是圖像左上角可以看做坐標點(0,0)窄赋,右下角可以看做坐標點(1,1),也就是說從左往右x值增大楼熄,從上往下y值增大
x1 = bbox_array[:, 0]
y1 = bbox_array[:, 1]
x2 = bbox_array[:, 2]
y2 = bbox_array[:, 3]
scores = bbox_array[:, 4]
order = scores.argsort()[::-1]#argsort函數(shù)返回的是數(shù)組值從小到大的索引值,[::-1]表示取反寝凌。即這里返回的是數(shù)組值從大到小的索引值
areas = (x2 - x1 + 1) * (y2 - y1 + 1)#當前類所有框的面積(python會自動使用廣播機制,相當于MATLAB中的.*即兩矩陣對應(yīng)元素相乘)孝赫;x1=3,x2=5,習(xí)慣上計算x方向長度就是x=3、4红符、5這三個像素青柄,即5-3+1=3,而不是5-3=2预侯,所以需要加1
keep = []
#按confidence從高到低遍歷bbx致开,移除所有與該矩形框的IoU值大于threshold的矩形框
while order.size > 0:
i = order[0]
keep.append(i)#保留當前最大confidence對應(yīng)的bbx索引
#獲取所有與當前bbx的交集對應(yīng)的左上角和右下角坐標,并計算IoU(注意這里是同時計算一個bbx與其他所有bbx的IoU)
xx1 = np.maximum(x1[i], x1[order[1:]])#最大置信度的左上角坐標分別與剩余所有的框的左上角坐標進行比較萎馅,分別保存較大值双戳;因此這里的xx1的維數(shù)應(yīng)該是當前類的框的個數(shù)減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:]])
inter = np.maximum(0.0, xx2-xx1+1) * np.maximum(0.0, yy2-yy1+1)
iou = inter / (areas[i] + areas[order[1:]] - inter)#注意這里都是采用廣播機制,同時計算了置信度最高的框與其余框的IoU
inds = np.where(iou <= threshold)[0]#保留iou小于等于闕值的框的索引值
order = order[inds + 1]#將order中的第inds+1處的值重新賦值給order糜芳;即更新保留下來的索引飒货,加1是因為因為沒有計算與自身的IOU,所以索引相差1峭竣,需要加上
bbox = bbox_array[keep]
predicts_dict[object_name] = bbox.tolist()
#predicts_dict = predicts_dict
return predicts_dict
NMS
最后編輯于 :
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
- 文/潘曉璐 我一進店門亚脆,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人守呜,你說我怎么就攤上這事型酥∩胶” “怎么了?”我有些...
- 文/不壞的土叔 我叫張陵弥喉,是天一觀的道長郁竟。 經(jīng)常有香客問我,道長由境,這世上最難降的妖魔是什么棚亩? 我笑而不...
- 正文 為了忘掉前任,我火速辦了婚禮虏杰,結(jié)果婚禮上讥蟆,老公的妹妹穿的比我還像新娘。我一直安慰自己纺阔,他們只是感情好瘸彤,可當我...
- 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著笛钝,像睡著了一般质况。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上玻靡,一...
- 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼瘟则!你這毒婦竟也來了黎炉?” 一聲冷哼從身側(cè)響起,我...
- 正文 年R本政府宣布奴紧,位于F島的核電站特姐,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏黍氮。R本人自食惡果不足惜唐含,卻給世界環(huán)境...
- 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望沫浆。 院中可真熱鬧捷枯,春花似錦、人聲如沸专执。這莊子的主人今日做“春日...
- 文/蒼蘭香墨 我抬頭看了看天上的太陽本股。三九已至争剿,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間痊末,已是汗流浹背。 一陣腳步聲響...
推薦閱讀更多精彩內(nèi)容
- 1.概述 2.線程 3.程序計數(shù)器 介紹image.png內(nèi)存.png每個線程都有各自私有的pc誊稚,存儲當前方法jv...
- 代碼鏈接[https://github.com/msracver/Relation-Networks-for-Ob...
- 非極大值抑制(NMS)的幾種實現(xiàn) [https://www.cnblogs.com/king-lps/p/9031...