天天看點

【論文閱讀】【2D目标檢測】CenterNetv2: Probabilistic two-stage detection3. Preliminaries4. A probabilistic interpretation of two-stage detection6、Results

文章目錄

  • 3. Preliminaries
  • 4. A probabilistic interpretation of two-stage detection
  • 6、Results

論文連結:https://arxiv.org/abs/2103.07461

代碼連結:https: //github.com/xingyizhou/CenterNet2

其實一句話就可以概括本文的核心思想:用one-stage的檢測器來代替two stage中的RPN可以提升運作速度和檢測效果。

對于two-stage的RPN和one-stage的檢測器,我一直認為其實它們倆本質上就是同一個東西。但這隻是從網絡架構的形式上看。本文細節地分析了兩者的差別。

其中,3和4兩個section闡述了本文的核心思想,第5個section隻是描述實作細節。

3. Preliminaries

現有的檢測器分為兩類,一個是one-stage的,一個是two-stage的。

先說one-stage:使用 L i , c L_{i,c} Li,c​表示對第i個candidate和c類别的檢測結果,其中candidate可以了解為feature map中的grid。那麼 L i , c = 1 L_{i,c}=1 Li,c​=1代表第i個candidate檢測為c類别, L i , c = 0 L_{i,c}=0 Li,c​=0代表第i個candidate檢測為背景。大多數的one-stage的檢測器parametrize the class likelihood為 s i ( c ) = P ( L i , c = 1 ) s_i(c)=P(L_{i,c}=1) si​(c)=P(Li,c​=1)。在訓練過程中,就是對gt box最大化這個的對數似然, l o g ( P ( L i , c ) ) log(P(L_{i,c})) log(P(Li,c​))。

two-stage:two-stage的檢測器分為兩步,第一步使用RPN盡可能找出proposal,使用objectness P ( O j ) P(O_j) P(Oj​)來描述。然後對每個proposal提取特征,在proposal上進行分類,預測 P ( C i ∣ O i = 1 ) P(C_i|O_i=1) P(Ci​∣Oi​=1), C i C_i Ci​的取值是所有類别加上背景類。**但對于two-stage的檢測器來說,RPN的設計要求是高recall,進可能找到所有物體,所采取的方法則是與gt有IoU>0.3的就認為是前景類。**這種提取的proposal是有大量備援的,而且如果使用最終的檢測評價來看(比如IoU>0.7才是前景類),很多proposal其實屬于背景類。而且,two-stage的方法的最終檢測僅依賴 P ( C i ∣ O i = 1 ) P(C_i|O_i=1) P(Ci​∣Oi​=1),也就是最終檢測不依賴第一階段的機率分布(這一塊會在後面再說)。

4. A probabilistic interpretation of two-stage detection

最終輸出的機率理論上應該如下,o的選取是{0,1}:

【論文閱讀】【2D目标檢測】CenterNetv2: Probabilistic two-stage detection3. Preliminaries4. A probabilistic interpretation of two-stage detection6、Results

對于前景類,要最大化的似然估計是:

【論文閱讀】【2D目标檢測】CenterNetv2: Probabilistic two-stage detection3. Preliminaries4. A probabilistic interpretation of two-stage detection6、Results

對于背景類,要最大化的似然估計是

【論文閱讀】【2D目标檢測】CenterNetv2: Probabilistic two-stage detection3. Preliminaries4. A probabilistic interpretation of two-stage detection6、Results

這裡先說一下以前的two-stage網絡(例如FasterRCNN)采用的方法是:分别在one-stage和two-stage最大化 l o g ( P ( O k = 0 ) ) log(P(O_k=0)) log(P(Ok​=0))和 l o g ( P ( b g ∣ O k = 1 ) ) log(P(bg|O_k=1)) log(P(bg∣Ok​=1))。那這麼一看,說是把最大化 l o g ( A + B ) log(A+B) log(A+B)變成最大化 l o g ( A ) log(A) log(A)和 l o g ( B ) log(B) log(B)也還能了解,但其中的 P ( O k = 1 ) P(O_k=1) P(Ok​=1)這一項其實也丢了。之前的two-stage網絡是完全的解耦了兩個stage,在訓練第二個stage的時候,認為所提取的proposal的 P ( O k = 1 ) = 1 P(O_k=1)=1 P(Ok​=1)=1。其實這也好了解,因為one-stage就是一個分類任務,分類就是前景類和背景類,那如果訓練的好,那可不就是 P ( O k = 1 ) = 1 P(O_k=1)=1 P(Ok​=1)=1。

本文使用Jensen不等式,将 l o g ( P ( b g ) ) log(P(bg)) log(P(bg))轉成了兩個下界:

【論文閱讀】【2D目标檢測】CenterNetv2: Probabilistic two-stage detection3. Preliminaries4. A probabilistic interpretation of two-stage detection6、Results
【論文閱讀】【2D目标檢測】CenterNetv2: Probabilistic two-stage detection3. Preliminaries4. A probabilistic interpretation of two-stage detection6、Results

那麼在第二個和第一個stage分别最大化這兩個下界。第一個stage最大化公式(4)這其實沒變,但第2個stage最大化(3)則需要知道 P ( O k = 1 ) P(O_k=1) P(Ok​=1)。這就引到了Detector design。這裡就直接放原文了:

【論文閱讀】【2D目标檢測】CenterNetv2: Probabilistic two-stage detection3. Preliminaries4. A probabilistic interpretation of two-stage detection6、Results

就是說,根據公式(1),而且最大化公式(3)需要知道 P ( O k ) P(O_k) P(Ok​),是以第一個stage不能說是隻是以高recall為目标,而應該是以準确預測objectness為目标,是以需要一個one-stage detector作為第一階段。

看到這裡,我有個疑問:

對于公式(2)的下界的求取用了Jensen不等式,但其實根據機率不為負數,而且log單調遞增,可以輕松将公式(2)找到兩個下界: l o g ( P ( O k = 0 ) ) log(P(O_k=0)) log(P(Ok​=0))和 l o g ( P ( O k = 1 ) P ( b g ∣ O k = 1 ) ) log(P(O_k=1)P(bg|O_k=1)) log(P(Ok​=1)P(bg∣Ok​=1))。其實最大化這兩個下界和最大化(3)和(4)是沒差別的。但這涉及到如何設計loss,不知道把 P ( O k = 1 ) P(O_k=1) P(Ok​=1)放入log裡面有沒有什麼影響。

soft label能提高檢測效果。我認為,其實将第一階段改為one-stage detector其實和在第一階段使用soft label想法非常相似。

6、Results

實驗效果很好,其中Ablation studies中的第一個實驗很有說服力:如果不把第一階段做改變,把輸出的機率直接乘到第二階段上,并沒有很好的提升。說明如果第一階段不是很strong的話,不能給出一個合适的objectness的預測。

繼續閱讀