soft-nms(softnms) softer nms
softnms和softer nms是nms的兩個改進算法
傳統nms存在的問題
傳統的NMS方法是基于分類分數的,只有最高分數的預測框能留下來,但是大多數情況下IoU和分類分數不是強相關,很多分類標簽置信度高的框都位置都不是很準
還會有別的物體的框因為和當前物體的框重合部分過多被刪掉的情況
Soft-NMS
發現了這些問題,讓我們想想如何避免:
首先說第一個問題:物體重疊是由于輸出多個框中存在某些其實是另一個物體,但是也不小心被NMS去掉了。這個問題的解法最終是要落在“將某個候選框刪掉”這一步驟上,我們需要找到一種方法,更小心的刪掉S中的框,而不是暴力的把所有和最高分框刪掉,于是有了這個想法:
對于與最高分框overlap大于閾值t的框M,我們不把他直接去掉,而是將他的置信度降低,這樣的方法可以使多一些框被保留下來,從而一定程度上避免overlap的情況出現。
那么讀者可能會問,如果只是把置信度降低,那么可能原來周圍的多個表示同一個物體的框也沒辦法去掉了。Soft-NMS這樣來解決這個問題,同一個物體周圍的框有很多,每次選擇分數最高的框,抑制其周圍的框,與分數最高的框的IoU越大,抑制的程度越大,一般來說,表示同一個物體的框(比如都是前面的馬)的IoU是會比另一個物體的框(比如后面的馬)的IoU大,因此,這樣就會將其他物體的框保留下來,而同一個物體的框被去掉。
接下來就是Soft NMS的完整算法:
紅色的部分表示原始NMS算法,綠色部分表示Soft-NMS算法,區別在于,綠色的框只是把si降低了,而不是把bi直接去掉,極端情況下,如果f只返回0,那么等同于普通的NMS。
接下來說一下f函數:f函數是為了降低目標框的置信度,滿足條件,如果bi和M的IoU越大,f(iou(M, bi))就應該越小,Soft-NMS提出了兩種f函數:
線性函數:
這個比較好理解,當iou條件滿足時,si乘上一個1-iou,線性變小?
高斯函數懲罰,越接近高斯分布中心,懲罰力度越大
Soft-NMS的效果也比較明顯:重疊的物體被更大程度的保留下來,以下是效果圖
不過Soft-NMS還是需要調整閾值的,由于沒有“去掉”某些框的操作,因此,最后所有框都會被加入D中,只是那些被去掉的框的置信度明顯降低,所以需要一個閾值(通常很小)來過濾D中的輸出框,從而輸出最后的預測框。所以Soft-NMS還是需要一些調參的
softer nms
Soft-NMS只解決了三個問題中的第一個問題,那么剩下兩個問題如何解決呢?
我們先分析第三個問題,對于分類置信度和框的IoU不是強相關的問題,我們需要找到一種方法來衡量框的“位置置信度”,對于第二個問題我們也有辦法:只需要讓多個框加權合并生成最終的框就可以了,softernms提出這兩個想法:
總結
以上是生活随笔為你收集整理的soft-nms(softnms) softer nms的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: iOS开发除了XCode还需要掌握的8个
- 下一篇: Linux apache服务器(上)