想要做nms的優化所以·了解一下nms**。原理不說了太簡單直接講**。
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""created on mon may 7 21:45:37 2018
@author: lps
"""import numpy as np
boxes=np.array([[
100,
100,
210,
210,
0.72],
[250
,250
,420
,420
,0.8],
[220
,220
,320
,330
,0.92],
[100
,100
,210
,210
,0.72],
[230
,240
,325
,330
,0.81],
[220
,230
,315
,340
,0.9]]
)#【文字框樣本,格式:【x1,y1,x2,y2,scoer】】
defpy_cpu_nms
(dets, thresh)
:# dets:(m,5) thresh:scaler
x1 = dets[:,
0]y1 = dets[:,
1]x2 = dets[:,
2]y2 = dets[:,
3]#取出座標
areas =
(y2-y1+1)
*(x2-x1+1)
#計算面積
scores = dets[:,
4]#取出分數
keep =
index = scores.argsort()[
::-1
]#.argsort()是從小到大排列,這整體為取出最大分數的座標
while index.size >0:
i = index[0]
# 取出最大的,加到keep裡
x11 = np.maximum(x1[i]
, x1[index[1:
]])# 計算有多少點是重複的為計算重合率做準備, np.maximum為取比較大的。所以可以算出重合的。
y11 = np.maximum(y1[i]
, y1[index[1:
]]) x22 = np.minimum(x2[i]
, x2[index[1:
]]) y22 = np.minimum(y2[i]
, y2[index[1:
]])
w = np.maximum(
0, x22-x11+1)
# 最大和最小座標相減,是重合部分的寬
h = np.maximum(
0, y22-y11+1)
# 最大和最小座標相減,是重合部分的長
overlaps = w*h#重疊部分面積
ious = overlaps /
(areas[i]
+areas[index[1:
]]- overlaps)
#計算iou
idx = np.where(ious<=thresh)[0
]## np.where(condition)輸出符合條件的thresh應該是閾值
index = index[idx+1]
# because index start from 1
return keep
import matplotlib.pyplot as plt
defplot_bbox
(dets, c=
'k')
:
x1 = dets[:,
0]y1 = dets[:,
1]x2 = dets[:,
2]y2 = dets[:,
3]plt.plot(
[x1,x2]
,[y1,y1]
, c)
plt.plot(
[x1,x1]
,[y1,y2]
, c)
plt.plot(
[x1,x2]
,[y2,y2]
, c)
plt.plot(
[x2,x2]
,[y1,y2]
, c)
plt.title(
"after nms")
plot_bbox(boxes,
'k')
# before nms
keep = py_cpu_nms(boxes, thresh=
0.7)
plot_bbox(boxes[keep]
,'r'
)# after nms
實現NMS演算法
python3 import numpy as np defpy nms dets,thresh pure python nms baseline.x1 y1 x2 y2 以及score賦值 x1 dets 0 y1 dets 1 x2 dets 2 y2 dets 3 scores dets 4 ...
NMS演算法實現
nms演算法 非極大值抑制 是目標檢測演算法中經典的後處理步驟,其本質是搜尋區域性最大值,抑制非極大值元素。主要利用目標檢測框以及對應的置信度分數,設定一定的閾值來刪除重疊較大的邊界框。其演算法流程如下 根據置信度得分進行排序 選擇置信度最高的目標檢測框新增到輸出列表中,將其從檢測框列表中刪除 計算...
NMS 卷積網路改進實現
未完待續 nms,非極大值抑制,在很多計算機視覺問題中有著重要應用,尤其是目標檢測領域。以人臉檢測為例,通常的流程為3步 1 通過滑動視窗或者其它的object proposals方法產生大量的候選視窗 2 用訓練好的分類器對候選視窗進行分類,該過程可以看做是乙個打分的過程 3 使用nms對上面的檢...