記錄一下對非極大值抑制的了解。
非極大值抑制法
顧名思義,是在抑制不是極大值的元素,即搜尋一個局部最大值。
在目标檢測中應用比較廣泛。對一個目标而言,算法對該目标肯産生多個候選框,每個框對應一個score,将這些score全部排序,選出得分最大的一個,再用其他框與目前最大的框計算其重疊程度,就是常說的iou,當大于某個門檻值,比如0.5時,将這些大于門檻值0.5的框删除,隻保留score最大的一個框,是以就是抑制了不是極大值的框,即非極大值抑制。。
單個目标和多目标
若隻有一個目标,直接選取得分最大的框即可,若有多個目标,NMS算法會疊代的進行選擇,保留每個目标的得分最大框。
假設圖中有兩個人臉待檢測,首先對現有的框按score的大小進行排序,選出得分最大的一個框,通過計算iou,将大于某個門檻值的幾個非極大值的框删除,并标記第一個框,是最終保留下來的;然後在剩下的框中,繼續按照之前的方法,選出score最大的框,計算iou,将大于某個門檻值的框删除。這樣不斷疊代,就可以對多目标進行檢測。
假設有6個得分框,分别按從score從小到大記A,B,C,D,E,F,
(1)選出目前最大的得分框F,計算剩下的框與F的iou,選出大于某個門檻值的框,如A,B,然後将A,B删除,标記現在所選擇的框F
(2)在剩下的框中C,D,E中,選出score最大的框E,計算C,D與E之間的iou,将大于某個門檻值的框删除,标記現在選擇的框E
(3)不斷重複該過程,就可以得到所需要的框
如圖,共有如下5個得分框,有兩個人臉待檢測,按score大小從小到大排序,為0.67,0.75,0.81,0.83,0.98!

首先選出score最大的框,即得分為0.98的紅框,計算剩餘框與它的iou,将大于某門檻值的框删除,在圖中可以看出,删除的框是得分為0.75和0.83的框。标記0.98的得分框。
在剩餘的兩個框中,繼續按照之前的方法進行操作,即可得出另一個所需要的框。
小白了解,如有錯誤請指正。
參考https://blog.csdn.net/shuzfan/article/details/52711706