目標檢測的過程中,會產生多個候選區域proposals,但是最終一個目標只能選取匹配程度最大的框,抑制其他框。
過程:
- 檢測結果會有目標的區域建議及區域得分score,按照得分大小排列(理論上從小到大排,但個人認爲從大到小也沒差),這個過程中也可去掉得分太小的框(比如小於0.5的直接去掉,不參與後邊的篩選)
- 取出得分最大的候選框,比如圖中左邊的0.98(圖片源於https://blog.csdn.net/xiexu911/article/details/80609298),依次與其他的框做一次IOU的計算,如果大於某一閾值,去掉
- 確保每個框都與得分最大的框做一次IOU計算,最終保留得分最大的框
- 如果有多個目標,需要獨立進行三次非極大值抑制,找出各自的得分最大框
個人認爲單目標的檢測過程中,NMS好像沒什麼重要的作用,爲何不直接選取最大score框?但是多目標檢測時,如下圖,若直接選取最大框而不做多次IOU計算,會出現右邊目標漏檢。