PYTHONは、非最大抑制銃を達成します

非最大阻害(非最大抑制)Pythonコードを達成するために
2018年11月20日午後6時48分57秒読取回数293に投稿され、元のButertflyをコレクション
発売し
たオブジェクトを見つけ、そして最終的にアルゴリズムが箱の山を見つけるために、我々は必要どのような長方形の枠差別することは無意味です。非極大抑制:確率の降順に属するオブジェクトの六の矩形枠が存在すると仮定製ソート分類器の分類確率であるA、B、C、D、 E、F。

(1)矩形枠Fの最大確率から開始は、それぞれ、A及びB〜F IOUの重なりの程度か否かの閾値よりもいくつかのセット大きいと判断し、

最初のタグ矩形枠Aは、我々が保持していること、及び、重複の程度はB、D及びFが閾値を超えているものとする(2)、次いで、B、Dを投げます。

(3)矩形枠Cの残りの部分から、Eは、Fは、最も可能性の高いCを選択し、CはE、重複度のFで決定され、オーバーラップがある閾値よりも大きい場合、次いで捨て、そして我々は、Cをマーク第二の長方形のフレームを保持していました。

これは、すべての保持長方形を見つけ、繰り返されました。
 

#必要なパッケージのインポート
NPとしてインポートnumpyの


#Felzenszwalbら。
DEF non_max_suppression_slow(ボックス、THRESH):
何箱がない場合#は、空のリストを返す
lenは(ボックス)== 0の場合:
リターン[]

が選んだインデックスのリストを初期化する
選択= []

グラブ境界ボックスの座標
X1 =ボックス[:, 0]
Y1 =ボックス[:, 1]
、X2 =ボックス[:, 2]
Y 2 =ボックス[:, 3]
スコア=ボックス[:, 4]

は、バウンディングボックスの面積を計算し、ソート境界
右下のバウンディングボックスのy座標によって#ボックス
面積=(X2 - X1 + 1)×(Y2 - Y1 + 1)

获取置信度、并降序排列、获取其在ボックス中对应的索引
idxs = scores.argsort():: - 1]

:idxs.size> 0一方
iはidxs [0] =
pick.append(I)

の開始のための最大の(X、Y)座標を見つける
#バウンディングボックスと最小の(X、Y)座標
終了の位バウンディングボックスの
:XX1 = np.maximum(X1 [i]は、X1 [] idxs [1])
YY1 = np.maximum(Y1 [I]、Y1 [idxs [1]])
XX2 = np.minimum( X2 [I]、X2 [idxs [1])
):YY2 = np.minimum(Y2 [I]、Y2 [] idxs [1]

の計算境界ボックスの幅及び高さ
= np.maximum W( 0.0、XX2 - XX1 + 1)
H = np.maximum(0.0、YY2 - YY1 + 1)

計算計算の間の連合(IOU)上交差点
エリアリスト位バウンディングボックスとバウンディングボックス
* H Wインター=
組合=領域[I] +領域[idxs [1]] -インター
IOU =インター/組合

インデックス= np.where(IOU <THRESH)

idxs = idxs [インデックス+ 1]

採取しただけバウンディングボックス#リターン
リターンボックスは[選択]
 

参考文献:

1.https://www.pyimagesearch.com/2014/11/17/non-maximum-suppression-object-detection-python/

2.https://blog.csdn.net/l_ml_m_lm_m/article/details/79881437

3.https://blog.csdn.net/u011534057/article/details/51235718

4.http://www.cnblogs.com/makefile/p/nms.html


----------------
免責事項:この記事はCSDNブロガー元の記事「Butertfly」で、CC 4.0 BY-SAの著作権契約書に従ってください、複製、元のソースのリンクと、この文を添付してください。 。
オリジナルリンクします。https://blog.csdn.net/Butertfly/article/details/84307659

おすすめ

転載: www.cnblogs.com/shuimuqingyang/p/12148698.html