天天看點

目标檢測——非極大值抑制算法(NMS算法)

1、非極大值抑制算法提出的目的

         在目标檢測中,為了消除多餘的檢測框,找到最佳的物體檢測的位置。

2、 非極大值抑制(Non-Maximum Suppresion, NMS)

  • 什麼是非極大值抑制

        非極大值抑制(Non-Maximum Suppression,NMS),顧名思義就是抑制不是極大值的元素,可以了解為局部最大搜尋。這個局部代表的是一個鄰域,鄰域有兩個參數可變,一是鄰域的維數,二是鄰域的大小。此處主要說明NMS用于目标檢測中提取分數最高的視窗的。例如在行人檢測中,滑動視窗經提取特征,經分類器分類識别後,每個視窗都會得到一個分數。但是滑動視窗會導緻很多視窗與其他視窗存在包含或者大部分交叉的情況。這時就需要用到NMS來選取那些鄰域裡分數最高(是行人的機率最大),并且抑制那些分數低的視窗。NMS在計算機視覺領域有着非常重要的應用,如視訊目标跟蹤、資料挖掘、3D重建、目辨別别以及紋理分析等。

  • 思想:

         選取那些鄰域裡分數最高的視窗,同時抑制那些分數低的視窗。

  • 原理分析:

        對所有檢測到的檢測框按照他們的得分進行排序(這個得分就是我們利用分類器來進行時,會得到一個機率值,這個機率值就表示目前檢測框是我們所需要檢測目标的機率大小。)選出得分最大的檢測框A,設定門檻值b,在剩下的檢測框中,計算他們與最大檢測框A之間的IoU(Intersection over Union),若IoU大于門檻值b,即重疊率高的檢測框。删除這些檢測框;有可能存在與目前檢測框完全不重疊的,或者他們的重疊面積非常小(IoU小于門檻值b),接下來會對這些沒有處理過的檢測框重新進行排序,排序完成後同樣選擇一個得分最大的檢測框,然後計算其他檢測框與這個最大檢測框的IoU值,然後将IoU大于一定門檻值的檢測框再進行一次删除,不斷的疊代這個過程,直到所有的檢測框都被處理之後,輸出最後的檢測結果。

3、NMS在目标檢測中應用執行個體

  • 去除人臉檢測中的重疊框:我們的目的就是要去除備援的檢測框,保留最好的一個
目标檢測——非極大值抑制算法(NMS算法)
  • 目标檢測 pipline

        産生proposal(區域)後使用分類網絡給出每個框的每類置信度,使用回歸網絡修正位置,最終應用NMS。

目标檢測——非極大值抑制算法(NMS算法)

4、NMS改進的方法——Soft-NMS

  • 相鄰區域内的檢測框的分數進行調整而非徹底抑制,進而提高了高檢索率情況下的準确率
  • 在低檢索率時仍能對物體檢測性能有明顯提升

改進方法在于将置信度改為IoU的函數:f(IoU),具有較低的值而不至于從排序清單中删去。即公式的第二項由0改成現在的第二項。

目标檢測——非極大值抑制算法(NMS算法)
  • 在基于proposal方法的模型結果上應用比較好,檢測效果提升:
目标檢測——非極大值抑制算法(NMS算法)
  • 在YOLO、SSD等非proposal上沒有提升。

繼續閱讀