日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

NMS、Soft-NMS、Softer-NMS

發布時間:2023/12/14 编程问答 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 NMS、Soft-NMS、Softer-NMS 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

NMS

NMS 顧名思義,非極大值抑制,也就是把極值周圍的給抑制掉,不輸出。在深度學習中叫去重,只保留最可靠的那個輸出。

首先定義一個相似度,深度學習中用IOU表示兩個框的相似度。

步驟:
1、取分值最大的框。
2、將IOU大于閾值(0.5)的框抑制掉。
3、取剩下框分值最大的框,循環步驟1、2。

很簡單,是不是!

代碼:

def NMS(boxes, scores, th):x1 = boxes[:,0]y1 = boxes[:,1]x2 = boxes[:,2]y2 = boxes[:,3]box_erea = (y2 - y1) * (x2 - x1)orders = scores.argsort()[::-1] ## 取逆序print(orders)keep = []print(orders.size)while orders.size > 0:item = orders[0]keep.append(item)cur_box = boxes[item]ix1 = np.maximum(cur_box[0], x1[orders[1:]]) iy1 = np.maximum(cur_box[1], y1[orders[1:]]) ix2 = np.minimum(cur_box[2], x2[orders[1:]]) iy2 = np.minimum(cur_box[3], y2[orders[1:]])iners = np.maximum(ix2 - ix1 + 1, 0.) * np.maximum(iy2 - iy1 + 1, 0.)unions = (box_erea[orders[1:]] + box_erea[item]) - inersious = iners / unionstemp = np.where(ious < th)[0]orders = orders[temp + 1]return keep

代碼解析:
1、先計算所有框的面積
2、分值降序排序,得到一個位置序列
3、循環:如果序列(N個值)不空:
取最大分值框,id對應第0個位置。
取所有剩余的框,id對應第0個位置之后。
剩余框(N-1個值)和最大分值框求IOU(N-1 個 IOU)
保留(N-1個)剩余框中對應IOU小于閾值的框的序列編號。作為新的序列。

注意事項:
temp = np.where(ious < th)[0]
orders = orders[temp + 1]
因為 temp 對應的是(N-1個)剩余框的位置,要取原序列(N個值)對應的位置,所以temp 對應的位置要加1。

np.max() 求最大值
np.minimum(array, a)array 和 a 逐個比較取最大。

Soft-NMS

顧名思義,柔和的NMS。也就是不會立馬斬殺,而是降低分值待考察。為的就是防止漏檢。

怎么降低score呢?有很多種方式,

1、IOU線性抑制

2、IOU 高斯抑制

抑制死亡閾值: th = 0.001 , 未達到死亡閾值,仍可保留。

Softer-NMS

主要用在:
NMS時用到的score僅僅是分類置信度得分,不能反映Bounding box的定位精準度,既分類置信度和定位置信非正相關的

基于soft-NMS,對預測標注方差范圍內的候選框加權平均,使得高定位置信度的bounding box具有較高的分類置信度。

其實很簡單,預測的四個頂點坐標,分別對IoU>Nt的預測加權平均計算,得到新的4個坐標點。

總結

以上是生活随笔為你收集整理的NMS、Soft-NMS、Softer-NMS的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。