非極大值抑制(NMS)講解
阿新 • • 發佈:2019-01-09
非極大值抑制(Non-maximum suppression,NMS)是一種去除非極大值的演算法,常用於計算機視覺中的邊緣檢測、物體識別等。
演算法流程:
給出一張圖片和上面許多物體檢測的候選框(即每個框可能都代表某種物體),但是這些框很可能有互相重疊的部分,我們要做的就是隻保留最優的框。假設有N個框,每個框被分類器計算得到的分數為Si, 1<=i<=N。
0、建造一個存放待處理候選框的集合H,初始化為包含全部N個框;
建造一個存放最優框的集合M,初始化為空集。
1、將所有集合 H 中的框進行排序,選出分數最高的框 m,從集合 H 移到集合 M;
2、遍歷集合 H 中的框,分別與框 m 計算交併比(Interection-over-union,IoU),如果高於某個閾值(一般為0~0.5),則認為此框與 m 重疊,將此框從集合 H 中去除。
3、回到第1步進行迭代,直到集合 H 為空。集合 M 中的框為我們所需。
需要優化的引數:
IoU 的閾值是一個可優化的引數,一般範圍為0~0.5,可以使用交叉驗證來選擇最優的引數。
示例:
比如人臉識別的一個例子:
已經識別出了 5 個候選框,但是我們只需要最後保留兩個人臉。
首先選出分數最大的框(0.98),然後遍歷剩餘框,計算 IoU,會發現露絲臉上的兩個綠框都和 0.98 的框重疊率很大,都要去除。
然後只剩下傑克臉上兩個框,選出最大框(0.81),然後遍歷剩餘框(只剩下0.67這一個了),發現0.67這個框與 0.81 的 IoU 也很大,去除。
至此所有框處理完畢,演算法結果:
(圖片來自https://blog.csdn.net/shuzfan/article/details/52711706)