nms

import numpy as np

def py_cpu_nms(dets, thresh):
    #首先數(shù)據(jù)賦值和計算對應矩形框的面積
    #dets的數(shù)據(jù)格式是dets[[xmin,ymin,xmax,ymax,scores]....]
 
    x1 = dets[:,0]
    y1 = dets[:,1]
    x2 = dets[:,2]
    y2 = dets[:,3]
    areas = (y2-y1+1) * (x2-x1+1)
    scores = dets[:,4]
    print('areas  ',areas)
    print('scores ',scores)
 
    #這邊的keep用于存放,NMS后剩余的方框
    keep = []
    
    #取出分數(shù)從大到小排列的索引馋嗜。.argsort()是從小到大排列探入,[::-1]是列表頭和尾顛倒一下悼沈。
    index = scores.argsort()[::-1]
    print(index) 
    #上面這兩句比如分數(shù)[0.72 0.8  0.92 0.72 0.81 0.9 ]    
    #  對應的索引index[  2   5    4     1    3   0  ]記住是取出索引导匣,scores列表沒變果正。
    
    #index會剔除遍歷過的方框养筒,和合并過的方框试躏。 
    while index.size >0:
        print(index.size)
        #取出第一個方框進行和其他方框比對帜消,看有沒有可以合并的
        i = index[0]       # every time the first is the biggst, and add it directly
        
        #因為我們這邊分數(shù)已經(jīng)按從大到小排列了棠枉。
        #所以如果有合并存在,也是保留分數(shù)最高的這個泡挺,也就是我們現(xiàn)在那個這個
        #keep保留的是索引值辈讶,不是具體的分數(shù)。     
        keep.append(i)
        print(keep)
        print('x1',x1[i])
        print(x1[index[1:]])
 
        #計算交集的左上角和右下角
        #這里要注意娄猫,比如x1[i]這個方框的左上角x和所有其他的方框的左上角x的
        x11 = np.maximum(x1[i], x1[index[1:]])    # calculate the points of overlap 
        y11 = np.maximum(y1[i], y1[index[1:]])
        x22 = np.minimum(x2[i], x2[index[1:]])
        y22 = np.minimum(y2[i], y2[index[1:]])
        
        print(x11,y11,x22,y22)
        #這邊要注意贱除,如果兩個方框相交生闲,X22-X11和Y22-Y11是正的。
        #如果兩個方框不相交月幌,X22-X11和Y22-Y11是負的碍讯,我們把不相交的W和H設為0.
        w = np.maximum(0, x22-x11+1)    
        h = np.maximum(0, y22-y11+1)    
       
        #計算重疊面積就是上面說的交集面積。不相交因為W和H都是0扯躺,所以不相交面積為0
        overlaps = w*h
        print('overlaps is',overlaps)
        
        #這個就是IOU公式(交并比)捉兴。
        #得出來的ious是一個列表,里面擁有當前方框和其他所有方框的IOU結果录语。
        ious = overlaps / (areas[i]+areas[index[1:]] - overlaps)
        print('ious is',ious)
        
        #接下來是合并重疊度最大的方框倍啥,也就是合并ious中值大于thresh的方框
        #我們合并的操作就是把他們剔除,因為我們合并這些方框只保留下分數(shù)最高的澎埠。
        #我們經(jīng)過排序當前我們操作的方框就是分數(shù)最高的虽缕,所以我們剔除其他和當前重疊度最高的方框
        #這里np.where(ious<=thresh)[0]是一個固定寫法。
        idx = np.where(ious<=thresh)[0]
        print(idx)
 
        #把留下來框在進行NMS操作
        #這邊留下的框是去除當前操作的框蒲稳,和當前操作的框重疊度大于thresh的框
        #每一次都會先去除當前操作框氮趋,所以索引的列表就會向前移動移位,要還原就+1弟塞,向后移動一位
        index = index[idx+1]   # because index start from 1
        print(index)
    return keep


def soft_nms(dets,thre):
    if method == 1: # linear 
        if ov > Nt: 
            weight = 1 - ov 
        else: 
            weight = 1 
        elif method == 2: # gaussian 
            weight = np.exp(-(ov * ov)/sigma) 
                else: # original NMS 
                    if ov > Nt: 
                        weight = 0 
                    else: 
                        weight = 1 # re-scoring 修改置信度 

    boxes[pos, 4] = weight*boxes[pos, 4]
最后編輯于
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末凭峡,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子决记,更是在濱河造成了極大的恐慌摧冀,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,277評論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件系宫,死亡現(xiàn)場離奇詭異索昂,居然都是意外死亡,警方通過查閱死者的電腦和手機扩借,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,689評論 3 393
  • 文/潘曉璐 我一進店門椒惨,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人潮罪,你說我怎么就攤上這事康谆。” “怎么了嫉到?”我有些...
    開封第一講書人閱讀 163,624評論 0 353
  • 文/不壞的土叔 我叫張陵沃暗,是天一觀的道長。 經(jīng)常有香客問我何恶,道長孽锥,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,356評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮惜辑,結果婚禮上唬涧,老公的妹妹穿的比我還像新娘。我一直安慰自己盛撑,他們只是感情好碎节,可當我...
    茶點故事閱讀 67,402評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著撵彻,像睡著了一般钓株。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上陌僵,一...
    開封第一講書人閱讀 51,292評論 1 301
  • 那天轴合,我揣著相機與錄音,去河邊找鬼碗短。 笑死受葛,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的偎谁。 我是一名探鬼主播总滩,決...
    沈念sama閱讀 40,135評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼巡雨!你這毒婦竟也來了闰渔?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 38,992評論 0 275
  • 序言:老撾萬榮一對情侶失蹤铐望,失蹤者是張志新(化名)和其女友劉穎冈涧,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體正蛙,經(jīng)...
    沈念sama閱讀 45,429評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡督弓,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,636評論 3 334
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了乒验。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片愚隧。...
    茶點故事閱讀 39,785評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖锻全,靈堂內(nèi)的尸體忽然破棺而出狂塘,到底是詐尸還是另有隱情,我是刑警寧澤鳄厌,帶...
    沈念sama閱讀 35,492評論 5 345
  • 正文 年R本政府宣布睹耐,位于F島的核電站,受9級特大地震影響部翘,放射性物質發(fā)生泄漏。R本人自食惡果不足惜响委,卻給世界環(huán)境...
    茶點故事閱讀 41,092評論 3 328
  • 文/蒙蒙 一新思、第九天 我趴在偏房一處隱蔽的房頂上張望窖梁。 院中可真熱鬧,春花似錦夹囚、人聲如沸纵刘。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,723評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽假哎。三九已至,卻和暖如春鞍历,著一層夾襖步出監(jiān)牢的瞬間舵抹,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,858評論 1 269
  • 我被黑心中介騙來泰國打工劣砍, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留惧蛹,地道東北人。 一個月前我還...
    沈念sama閱讀 47,891評論 2 370
  • 正文 我出身青樓刑枝,卻偏偏與公主長得像香嗓,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子装畅,可洞房花燭夜當晚...
    茶點故事閱讀 44,713評論 2 354

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

  • 至今掠兄,我只有過一次戀愛像云,那段感情維持了一個多月,我提出了分手徽千。大概苫费,我真的不適合愛情吧! 我們是由好朋友發(fā)展成戀人...
    鹿知之閱讀 249評論 0 0
  • 打卡日期:2019年/3月/16日 90天打卡累計天數(shù):47/90 #宣言:愛是教育的基礎# 孩子第二個30天目標...
    張藝媽媽閱讀 86評論 0 0
  • 這幾天看了幾篇文章,讓我陷入沉思牍汹,同時在送貨中也接觸了幾個客戶铐维,讓我找回心中的自己~ 一篇標題說40歲之前要明白的...
    廣為麻麻182013閱讀 142評論 0 1
  • 明天就去菲律賓長灘島玩了,今天繼續(xù)買買買慎菲,清行李嫁蛇,很多瑣碎的事,總算是弄的差不多了露该,很期待這次的旅行睬棚。 從一開始的...
    嘉寶Y閱讀 299評論 0 1