NMS

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
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末塘辅,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子皆撩,更是在濱河造成了極大的恐慌扣墩,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,185評論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件扛吞,死亡現(xiàn)場離奇詭異呻惕,居然都是意外死亡,警方通過查閱死者的電腦和手機滥比,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,652評論 3 393
  • 文/潘曉璐 我一進店門亚脆,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人守呜,你說我怎么就攤上這事型酥∩胶” “怎么了?”我有些...
    開封第一講書人閱讀 163,524評論 0 353
  • 文/不壞的土叔 我叫張陵弥喉,是天一觀的道長郁竟。 經(jīng)常有香客問我,道長由境,這世上最難降的妖魔是什么棚亩? 我笑而不...
    開封第一講書人閱讀 58,339評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮虏杰,結(jié)果婚禮上讥蟆,老公的妹妹穿的比我還像新娘。我一直安慰自己纺阔,他們只是感情好瘸彤,可當我...
    茶點故事閱讀 67,387評論 6 391
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著笛钝,像睡著了一般质况。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上玻靡,一...
    開封第一講書人閱讀 51,287評論 1 301
  • 那天结榄,我揣著相機與錄音,去河邊找鬼囤捻。 笑死臼朗,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的蝎土。 我是一名探鬼主播视哑,決...
    沈念sama閱讀 40,130評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼瘟则!你這毒婦竟也來了黎炉?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,985評論 0 275
  • 序言:老撾萬榮一對情侶失蹤醋拧,失蹤者是張志新(化名)和其女友劉穎慷嗜,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體丹壕,經(jīng)...
    沈念sama閱讀 45,420評論 1 313
  • 正文 獨居荒郊野嶺守林人離奇死亡庆械,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,617評論 3 334
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了菌赖。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片缭乘。...
    茶點故事閱讀 39,779評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖琉用,靈堂內(nèi)的尸體忽然破棺而出堕绩,到底是詐尸還是另有隱情策幼,我是刑警寧澤,帶...
    沈念sama閱讀 35,477評論 5 345
  • 正文 年R本政府宣布奴紧,位于F島的核電站特姐,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏黍氮。R本人自食惡果不足惜唐含,卻給世界環(huán)境...
    茶點故事閱讀 41,088評論 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望沫浆。 院中可真熱鬧捷枯,春花似錦、人聲如沸专执。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,716評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽本股。三九已至争剿,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間痊末,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,857評論 1 269
  • 我被黑心中介騙來泰國打工哩掺, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留凿叠,地道東北人。 一個月前我還...
    沈念sama閱讀 47,876評論 2 370
  • 正文 我出身青樓嚼吞,卻偏偏與公主長得像盒件,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子舱禽,可洞房花燭夜當晚...
    茶點故事閱讀 44,700評論 2 354

推薦閱讀更多精彩內(nèi)容