文章作者:Tyan
非極大值抑制,簡稱為NMS算法,英文為Non-Maximum Suppression。其思想是搜素局部最大值,抑制極大值。NMS算法在不同應用中的具體實作不太一樣,但思想是一樣的。非極大值抑制,在計算機視覺任務中得到了廣泛的應用,例如邊緣檢測、人臉檢測、目标檢測(DPM,YOLO,SSD,Faster R-CNN)等。
以目标檢測為例:目标檢測的過程中在同一目标的位置上會産生大量的候選框,這些候選框互相之間可能會有重疊,此時我們需要利用非極大值抑制找到最佳的目标邊界框,消除備援的邊界框。Demo如下圖:
![](https://img.laitimes.com/img/_0nNw4CM6IyYiwiM6ICdiwiI0NXYFhGd192UvwVe0lmdhJ3ZvwFM38CXlZHbvN3cpR2Lc1TPB10QGtWUCpEMJ9CXsxWam9CXwADNvwVZ6l2c052bm9CXUJDT1wkNhVzLcRnbvZ2Lc1zdXlFcS5mYx4UbiBnVYVldRhlW1VTaitmTzkVdjJjYzpkMMZ3bENGMShUYvwFd4VGdvwlMvw1ayFWbyVGdhd3PwgjM5QDM1EjM2EjMxcTMwIzLcRXZu5ibkN3Yuc2bsJmLn1Wavw1LcpDc0RHaiojIsJye.jpg)
左圖是人臉檢測的候選框結果,每個邊界框有一個置信度得分(confidence score),如果不使用非極大值抑制,就會有多個候選框出現。右圖是使用非極大值抑制之後的結果,符合我們人臉檢測的預期結果。
前提:目标邊界框清單及其對應的置信度得分清單,設定門檻值,門檻值用來删除重疊較大的邊界框。
IoU:intersection-over-union,即兩個邊界框的交集部分除以它們的并集。
非極大值抑制的流程如下:
根據置信度得分進行排序
選擇置信度最高的比邊界框添加到最終輸出清單中,将其從邊界框清單中删除
計算所有邊界框的面積
計算置信度最高的邊界框與其它候選框的IoU。
删除IoU大于門檻值的邊界框
重複上述過程,直至邊界框清單為空。
Python代碼如下:
記得給個Star。Demo原圖在<code>README.md</code>裡。
實驗結果:
門檻值為0.6
門檻值為0.5
門檻值為0.4
![](https://img.laitimes.com/img/_0nNw4CM6IyYiwiM6ICdiwiI0NXYFhGd192UvwVe0lmdhJ3ZvwFM38CXlZHbvN3cpR2Lc1TPB10QGtWUCpEMJ9CXsxWam9CXwADNvwVZ6l2c052bm9CXUJDT1wkNhVzLcRnbvZ2Lc1zdXlFcS5mYx4UbiBnVYVldRhlW1VTaitmTzkVdjJjYzpkMMZ3bENGMShUYvwFd4VGdvwlMvw1ayFWbyVGdhd3PwgjM5QDM1EjM2EjMxcTMwIzLcRXZu5ibkN3Yuc2bsJmLn1Wavw1LcpDc0RHaiojIsJye.jpg)
<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>