天天看點

非極大值抑制(Non-Maximum Suppression)

文章作者:Tyan

非極大值抑制,簡稱為NMS算法,英文為Non-Maximum Suppression。其思想是搜素局部最大值,抑制極大值。NMS算法在不同應用中的具體實作不太一樣,但思想是一樣的。非極大值抑制,在計算機視覺任務中得到了廣泛的應用,例如邊緣檢測、人臉檢測、目标檢測(DPM,YOLO,SSD,Faster R-CNN)等。

以目标檢測為例:目标檢測的過程中在同一目标的位置上會産生大量的候選框,這些候選框互相之間可能會有重疊,此時我們需要利用非極大值抑制找到最佳的目标邊界框,消除備援的邊界框。Demo如下圖:

非極大值抑制(Non-Maximum Suppression)

左圖是人臉檢測的候選框結果,每個邊界框有一個置信度得分(confidence score),如果不使用非極大值抑制,就會有多個候選框出現。右圖是使用非極大值抑制之後的結果,符合我們人臉檢測的預期結果。

前提:目标邊界框清單及其對應的置信度得分清單,設定門檻值,門檻值用來删除重疊較大的邊界框。

IoU:intersection-over-union,即兩個邊界框的交集部分除以它們的并集。

非極大值抑制的流程如下:

根據置信度得分進行排序

選擇置信度最高的比邊界框添加到最終輸出清單中,将其從邊界框清單中删除

計算所有邊界框的面積

計算置信度最高的邊界框與其它候選框的IoU。

删除IoU大于門檻值的邊界框

重複上述過程,直至邊界框清單為空。

Python代碼如下:

記得給個Star。Demo原圖在<code>README.md</code>裡。

實驗結果:

門檻值為0.6

非極大值抑制(Non-Maximum Suppression)

門檻值為0.5

非極大值抑制(Non-Maximum Suppression)

門檻值為0.4

非極大值抑制(Non-Maximum Suppression)

<a href="https://www.pyimagesearch.com/2014/11/17/non-maximum-suppression-object-detection-python/">https://www.pyimagesearch.com/2014/11/17/non-maximum-suppression-object-detection-python/</a>

<a href="http://cs.brown.edu/~pff/papers/lsvm-pami.pdf">http://cs.brown.edu/~pff/papers/lsvm-pami.pdf</a>

<a href="http://blog.csdn.net/shuzfan/article/details/52711706">http://blog.csdn.net/shuzfan/article/details/52711706</a>

<a href="http://www.cnblogs.com/liekkas0626/p/5219244.html">http://www.cnblogs.com/liekkas0626/p/5219244.html</a>

<a href="http://www.tk4479.net/yzhang6_10/article/details/50886747">http://www.tk4479.net/yzhang6_10/article/details/50886747</a>

<a href="http://blog.csdn.net/qq_14845119/article/details/52064928">http://blog.csdn.net/qq_14845119/article/details/52064928</a>

繼續閱讀