天天看點

【論文筆記】:Cascade R-CNN: Delving into High Quality Object Detection&Title:&Summary&Research Objective&Problem Statement&Method(s)&Evaluation&Conclusion參考

&Title:

  • Cascade R-CNN: Delving into High Quality Object Detection
  • Cascade R-CNN: Delving into High Quality Object Detection(中文翻譯)

&Summary

本篇文章主要解決了在目标檢測中,檢測框不是特别準,容易出現噪聲幹擾的問題,即close false positive,為什麼會有這個問題呢?

作者實驗發現,因為在基于anchor的檢測方法中,我們一般會設定訓練的正負樣本(用于訓練分類以及對正樣本進行坐标回歸),選取正負樣本的方式主要利用候選框與ground truth的IOU占比,常用的比例是50%,即IOU>0.5的作為正樣本,IOU<0.3作為負樣本等,但是這樣就帶來了一個問題,門檻值取0.5是最好的嗎?

作者通過實驗發現,

  • 設定不同門檻值,門檻值越高,其網絡對準确度較高的候選框的作用效果越好。
  • 不論門檻值設定多少,訓練後的網絡對輸入的proposal都有一定的優化作用。

基于這兩點,作者設計了Cascade R-CNN網絡,如下面圖Figure3(d)所示,即通過級聯的R-CNN網絡,每個級聯的R-CNN設定不同的IOU門檻值,這樣每個網絡輸出的準确度提升一點,用作下一個更高精度的網絡的輸入,逐漸将網絡輸出的準确度進一步提高。

一句話總結就是:Cascade R-CNN就是使用不同的IOU門檻值,訓練了多個級聯的檢測器。

【論文筆記】:Cascade R-CNN: Delving into High Quality Object Detection&amp;Title:&amp;Summary&amp;Research Objective&amp;Problem Statement&amp;Method(s)&amp;Evaluation&amp;Conclusion參考

&Research Objective

本文主要針對的是檢測問題中的IoU門檻值選取問題

&Problem Statement

目标檢測其實主要幹的就是兩件事,一是對目标分類,二是标出目标位置。是以,為了實作這兩個目标,在訓練的時候,我們一般會首先提取候選proposal,然後對proposal進行分類,并且将proposal回歸到與其對應的groud truth上面,但是這就帶來了一個問題,因為我們做分類需要确定樣本的标簽,那麼我們給什麼樣的proposal打一個标簽呢?最常用的做法是利用IOU(proposal與ground truth的交并比),可是IOU門檻值設定成多少可以作為我打标簽的邊界呢?常用的門檻值是0.5,可是0.5是最好的嗎?

作者通過實驗證明了不同IOU對于網絡的影響,如圖Figure 1

©所示。圖c中3條線分别代表3個IOU的門檻值,橫軸是輸入的IOU的proposal,縱軸是對應的proposal經過網絡輸出後的坐标框與ground

truth的IOU,我們觀察可以發現,3條線,都在灰色對角線之上,說明3條線都有一定的優化效果,并且,3條線無一例外在自己設定的門檻值周圍優化較明顯。

那麼問題來了,我們是否可以将門檻值提高,以達到優化輸出精度的效果呢?

作者又做了不同門檻值下網絡精度的實驗,結果如圖figure1(d)所示,可以發現,對于門檻值為0.5以及0.6的時候,網絡精度差距不大,甚至提升了一點,但是将精度提升到0.7後,網絡的精度就急速下降了,(COCO資料集上:AP:0.354->0.319),這個實驗說明了,僅僅提高IoU的門檻值是不行的,因為提高門檻值以後,我們會發現,實際上網絡的精度(AP)反而降低了。

為什麼會下降呢?

由于提高了門檻值,導緻正樣本的數量呈指數減低,導緻了訓練的過拟合。

在inference階段,輸入的IOU與訓練的IOU不比對也會導緻精度的下降。是以才會出現Figure1(d)中,u=0.7的曲線在IOU=0.5左右的時候,差距那麼大。

實驗證明了不能使用高的門檻值來進行訓練,但是實驗也呈現出了另一個事實,那便是:回歸器的輸出IOU一般會好于輸入的IOU,圖figure1(c)所示。并且随着u的增大,對于在其門檻值之上的proposal的優化效果還是有提升的。

【論文筆記】:Cascade R-CNN: Delving into High Quality Object Detection&amp;Title:&amp;Summary&amp;Research Objective&amp;Problem Statement&amp;Method(s)&amp;Evaluation&amp;Conclusion參考

那既然這樣,我們是否可以采用級聯的方式逐漸提升呢?即首先利用u=0.5的網絡,将輸入的proposal提升一些,假如提升到了0.6,然後在用u=0.6的網絡進一步提升,加入提升到0.7,然後再用u=0.7的網絡再提升,這樣豈不是精度越來越高了?

于是乎,作者設計了Cascade R-CNN網絡。

&Method(s)

作者設計了Cascade R-CNN網絡。

對IoU門檻值設定的探索

早前VOC都是以 mAP50 作為唯一的性能衡量标準,為了overfit該資料集,算法的IoU門檻值在train階段和inference階段常被簡單地設定為 0.5,而這會導緻train階段對bbox的品質要求過低。

inference階段,如果IoU門檻值設為0.5,最終輸出可能如下的左圖所示,帶有不少錯分為object的bbox;如果我們把IoU門檻值調高到0.7,如下右圖所示,就可以把一堆IoU介于0.5~0.7之間的bbox給過濾掉:

【論文筆記】:Cascade R-CNN: Delving into High Quality Object Detection&amp;Title:&amp;Summary&amp;Research Objective&amp;Problem Statement&amp;Method(s)&amp;Evaluation&amp;Conclusion參考

那我們直接在train階段就把IoU門檻值改為0.7,test階段依然為0.5,不就好了嗎?

不行。

【論文筆記】:Cascade R-CNN: Delving into High Quality Object Detection&amp;Title:&amp;Summary&amp;Research Objective&amp;Problem Statement&amp;Method(s)&amp;Evaluation&amp;Conclusion參考

如上圖,IoU=0.7訓練出來的detector

紅線

,在IoU=0.5的輸入上定位效果甚至不如IoU=0.5訓練出來的detector

藍線

原因有二:

  • train階段IoU設為0.7會導緻positive bbox的數量驟降,導緻最終訓出的模型overfit。
  • inference階段,RPN丢給roi-wise subnet的大多是low-quality proposal。單個regressor再強也隻能稍微regress一點點location,那麼最終的output還是得GG。

那我們train階段為0.5,隻在test階段把IoU門檻值改為0.7呢?

不行。

原因:

  • train階段 和 inference階段 的 IoU門檻值 設定得不一樣,反而會影響性能。

那就同時把train階段和test階段都改為0.7呢?

還是不行。

原因:

  • 自從更大更全的COCO資料集提出來後,評價标準變得“多IoU門檻值化”了。在原先的mAP50基礎上,又增加了mAP75等等一系列名額。也就是說,不管你怎麼改,都會導緻某些IoU門檻值标準是你在train的階段無法顧及到的。

對regressor數量的探索

作者發現,假設待輸入regressor的bbox為Input,回歸後的輸出bbox為Output,則Output的IoU品質普遍優于Input:

【論文筆記】:Cascade R-CNN: Delving into High Quality Object Detection&amp;Title:&amp;Summary&amp;Research Objective&amp;Problem Statement&amp;Method(s)&amp;Evaluation&amp;Conclusion參考

等于證明了:

經過location regression的bbox明顯更high-quality。

故而,多次疊加roi-wise subnet,就等于多regress幾次bbox,自然可以獲得更high-quality的output bbox,進而刷高COCO測評性能。

那麼直接簡單地在roi-wise subnet後面再疊加roi-wise subnet可以麼?

不行。

原因:

  • 因為如果這麼做的話,對bbox的回歸公式就變成了如下所示:
    【論文筆記】:Cascade R-CNN: Delving into High Quality Object Detection&amp;Title:&amp;Summary&amp;Research Objective&amp;Problem Statement&amp;Method(s)&amp;Evaluation&amp;Conclusion參考
  • 此時對應的網絡結構就會不能很好地挖掘多級roi-wise subnet的作用:
    【論文筆記】:Cascade R-CNN: Delving into High Quality Object Detection&amp;Title:&amp;Summary&amp;Research Objective&amp;Problem Statement&amp;Method(s)&amp;Evaluation&amp;Conclusion參考

作者的Idea,是設計cascade的bbox cls/reg機制:

【論文筆記】:Cascade R-CNN: Delving into High Quality Object Detection&amp;Title:&amp;Summary&amp;Research Objective&amp;Problem Statement&amp;Method(s)&amp;Evaluation&amp;Conclusion參考

總共有三個roi-wise subnet相cascade (級聯) ,每個roi-wise subnet采用不同的IoU門檻值。依次為0.5、0.6、0.7。

對應的網絡結構如下:

【論文筆記】:Cascade R-CNN: Delving into High Quality Object Detection&amp;Title:&amp;Summary&amp;Research Objective&amp;Problem Statement&amp;Method(s)&amp;Evaluation&amp;Conclusion參考

該設計有如下四大優勢:

  • 實作起來簡單;
  • 可以end-to-end訓練;
  • 适用于任何two-stage的檢測算法;
  • 普遍都能漲點2~4。

網絡結構:

【論文筆記】:Cascade R-CNN: Delving into High Quality Object Detection&amp;Title:&amp;Summary&amp;Research Objective&amp;Problem Statement&amp;Method(s)&amp;Evaluation&amp;Conclusion參考

圖figure 3(d)是Cascade R-CNN的網絡結構對比圖,Figure 3(a)是Faster R-CNN的網絡結構圖,其中H0代表的是RPN網絡,H1代表的是Faster R-CNN進行檢測與分類的head,C1代表最終的分類結果,B1代表最終的bounding box回歸結果。那麼Cascade R-CNN有什麼不同呢?H1那一部分是一樣的,但是Cascade R-CNN得到B1回歸後的檢測框後,将其輸入到H2部分,繼續回歸,以此類推到H3部分,使得每次對bounding box都提高一定的精度,已達到提高檢測框準确度的作用。

注:級聯的方式,不再是為了找到hard negatives,而是通過調整bounding boxes,給下一階段找到一個IoU更高的正樣本來訓練。SSD等利用hard negatives方法進行優化。即對負樣本loss排序,取loss較大的部分。

最後總結一下,作者最終确定的結構一共是4個stages: 1個RPN+3個檢測器(門檻值設定分别為0.5/0.6/0.7)……其中RPN的實作想必大家都很清楚了,而後面三個檢測器,則按照之前介紹的那樣,每個檢測器的輸入都是上一個檢測器進行了邊框回歸後的結果,實作思路應該類似于Faster RCNN等二階段檢測器的第二階段。

&Evaluation

【論文筆記】:Cascade R-CNN: Delving into High Quality Object Detection&amp;Title:&amp;Summary&amp;Research Objective&amp;Problem Statement&amp;Method(s)&amp;Evaluation&amp;Conclusion參考

可以看出,提升還是相當好的。特别需要說明的一點是,對于目前流行的檢測結構來說,特征提取是耗時最多的,是以盡管Cascade R-CNN增加了比較多的參數,但是速度的影響并沒有想象中的大,具體可以參考下表:

【論文筆記】:Cascade R-CNN: Delving into High Quality Object Detection&amp;Title:&amp;Summary&amp;Research Objective&amp;Problem Statement&amp;Method(s)&amp;Evaluation&amp;Conclusion參考

這篇文章還做了大量的對比實驗,例如通過添加ground truth來提高proposal的品質進而驗證mismatch問題;通過添加stages來分析适合的級聯階段數等等;包括一些和第2部分中提到的兩種思路的對比等等,可直接看論文。

&Conclusion

本文提出了一種多級目标檢測架構-Cascade R-CNN,用于設計高品質的目标檢測器。該體系結構避免了訓練中的過度拟合和推理時的品質不比對等問題。Cascade R-CNN對具有挑戰性的COCO資料集的可靠和一緻的檢測改進表明,為了推進目标檢測,需要對各種并發因素進行模組化和了解。Cascade R-CNN被證明适用于許多目标檢測體系結構。

參考

  • 論文閱讀: Cascade R-CNN

繼續閱讀