3 7 非極大值抑制

2022-05-28 06:09:12 字數 1736 閱讀 9284

假設你需要在這張裡檢測行人和汽車,你可能會在上面放個 19×19 網格,理論上這輛車只有乙個中點,所以它應該只被分配到乙個格仔裡,左邊的車子也只有乙個中點,所以理論上應該只有乙個格仔做出有車的**。

實踐中當你執行物件分類和定位演算法時,對於每個格仔都執行一次,所以這個格仔(編號1)可能會認為這輛車中點應該在格仔內部,這幾個格仔(編號 2、 3)也會這麼認為。對於左邊的車子也一樣,所以不僅僅是這個格仔,如果這是你們以前見過的影象,不僅這個格(編號 4)子會認為它裡面有車,也許這個格仔(編號 5)和這個格仔(編號 6)也會,也許其他格仔也會這麼認為,覺得它們格仔內有車。

我們分步介紹一下非極大抑制是怎麼起效的,因為你要在 361 個格仔上都執行一次影象檢測和定位演算法,那麼可能很多格仔都會舉手說我的$$,我這個格仔裡有車的概率很高,而不是 361 個格仔中僅有兩個格仔會報告它們檢測出乙個物件。所以當你執行演算法的時候,最後可能會對同乙個物件做出多次檢測,所以非極大值抑制做的就是清理這些檢測結果。這樣一輛車只檢測一次,而不是每輛車都觸發多次檢測。

首先看看每次報告每個檢測結果相關的概率$$,實際上是$$乘以$$、$$、$$,現在我們就說,這個$$檢測概率,首先看概率最大的那個,下圖中左邊車最大的概率是0.8,右邊車最大的概率是0.9,概率最大的就是最可靠的檢測,就說我這裡找到了一輛車。這麼做之後,非極大值抑制就會逐一審視剩下的矩形,所有和這個最大的邊框有很高交並比,高度重疊的其他邊界框,那麼這些輸出就會被抑制。以右邊的車為例,右邊車最大的概率是0.9,所以剩餘的矩形0.6,0.7,這兩個矩形和淡藍色矩形重疊程度很高,所以會被抑制,變暗,表示它們被抑制了。

非最大值意味著你只輸出概率最大的分類結果,但抑制很接近,但不是最大的其他**結果,所以這方法叫做非極大值抑制。

首先這個 19×19 網格上執行一下演算法,你會得到 19×19×8 的輸出尺寸。不過對於這個例子來說,我們簡化一下,就說你只做汽車檢測。對於 361 個格仔的每個輸出,你會得到這樣的輸出**,就是格仔中有物件的概率$$,然後是邊界框引數$$,$$, $$, $$。如果你只檢測一種物件,那麼就沒有$$、$$、$$這些**分量。

現在要實現非極大值抑制,你可以做的第一件事是,去掉所有邊界框,我們就將所有的**值,所有的邊界框$$小於或等於某個閾值,比如$ \le 0.6$的邊界框去掉。

我們就這樣說,除非演算法認為這裡存在物件的概率至少有 0.6,否則就拋棄,所以這就拋棄了所有概率比較低的輸出邊界框。所以思路是對於這 361 個位置,你輸出乙個邊界框,還有那個最好邊界框所對應的概率,所以我們只是拋棄所有低概率的邊界框。

接下來剩下的邊界框,沒有拋棄沒有處理過的,你就一直選擇概率$$最高的邊界框。

接下來去掉所有剩下的邊界框,任何沒有達到輸出標準的邊界框,之前沒有拋棄的邊界框,把這些和輸出邊界框有高重疊面積和上一步輸出邊界框有很高交並比的邊界框全部拋棄。在還有剩下邊界框的時候,一直這麼做,把沒處理的都處理完,直到每個邊界框都判斷過了,它們有的作為輸出結果,剩下的會被拋棄,它們和輸出結果重疊面積太高,和輸出結果交並比太高,和你剛剛輸出這裡存在物件結果的重疊程度過高。

非極大值抑制

nms non maximum suppression 中文名非極大值抑制,在很多計算機視覺任務中都有廣泛應用,如 邊緣檢測 目標檢測等。這裡主要以人臉檢測中的應用為例,來說明nms,並給出matlab和c 示例程式。人臉檢測的一些概念 1 絕大部分人臉檢測器的核心是分類器,即給定乙個尺寸固定,分類...

非極大值抑制

參考 思想 1.將每乙個檢測框的得分值排序,得到得分值最大的檢測框,將該檢測框記錄下來 2.然後其他計算所有的檢測框與該框的iou,將iou大於閾值的檢測框去除,iou小於閾值的認為是不同的目標,則保留 3.對剩下的檢測框繼續做上述的處理 import numpy as np def py cpu ...

非極大值抑制

在進行目標檢測的時候,當多個方框都 到同乙個目標的時候,我們需要去除iou小的方框,原始碼如下 def nms boxes,threshold,method union param boxes n,9 x1,y1,x2,y2,score,offset x1,offset y1,offset x2,o...