目標檢測(一)-R-CNN系列

有關傳統機器學習方法和深度學習方法在目標檢測領域的一些總結。

傳統機器學習方法

Detection based on Adaboost

Ref:Rapid Object Detection using a Boosted Cascade of Simple Features.(CVPR2001)

這個方法是一個二分類方法,判斷是還是不是人臉。主要包括了以下內容:

  • 文中提出了一種新的圖片表達方式和三種特徵,新的圖片表達方式是便於計算特徵,而特徵本質是一個值,每一種特徵會在scale和location維度上變動,所以特徵的個數相當龐大。在檢測階段,一個feature也可以在scale上變化,而且因爲新的圖片表達方式,它不會因爲scale因數的不同而導致計算時間的變化,最後也可以在location上進行變化,在輸入圖片上不斷移動。
  • 文中使用稍作修改的AdaBoost算法學習一個強分類器,弱分類器會對應一個特徵,它會對應一個閾值,閾值會將特徵的值劃分爲人臉和非人臉兩個類別;
  • 文中提出一種退化的決策樹strong classifier cascade,每一層就是一個AdaBoost學習的強分類器,每一層的作用就是爲了過濾非人臉圖片,最後沒有被過濾掉的即爲人臉圖片。作者在訓練級聯的分類器時,也有他相應的策略,包括了因後面層面對的數據更難而提出降低或提高閾值來提高FPR以保證TPR、使用target來確定每一層強分類器的feature個數和整體的級聯層數以尋求在精度和效率上的權衡等。
針對不同尺寸的objects識別

在這個方法中不同於其他如[1]和[2],這些方法爲了識別不同的尺寸的objects,對圖片進行了下采樣,構成一個圖片尺寸的金字塔,而檢測器的尺寸不變,檢測器會將其內部的數據傳入分類器中進行解析。而這篇論文中的方法不會改變圖片的尺寸,而是以1.25爲因數縮放級聯檢測器的輸入尺寸,因爲其的features的計算時間不會因爲尺寸的變化而發生變化,這在不同尺寸objects的識別上不會增加額外的時間。
與[1]和[2]檢測器掃描一樣,這篇論文的檢測器也會在圖片上以一定步長進行掃描。

[1] H. A. Rowley, S. Baluja, and T. Kanade. Neural network- based face detection. TPAMI, 20:23–38, 1998.
[2]P. Viola and M. Jones. Robust real-time face detection. IJCV, 57(2):137–154, May 2004.

優點

迅速、準確

缺點

與深度學習方法相比,它所能處理的數據相當有限,且僅僅支持object or background識別;和很多其他機器學習方法一樣,它利用了圖片的像素區域梯度來進行目標的檢測,是不能夠解決複雜場景下的目標檢測的;它所使用的特徵,雖然有垂直、水平、對角線梯度信息,但是僅僅使用一個特徵數值作爲根據進行分類,可以想象丟失的信息非常多;這個算法僅僅做了單對象的定位,沒有涉及單對象分類和多對象定位分類。

selective search

此方法是一種產生候選區域的方法,輸出可以用於分割和檢測。

特點
  • 基於圖像中物體的層級關係,從小region融合產生更大的region;
  • 基於多種顏色空間,不同顏色空間面對亮度等圖片特徵有不同的不變性;
  • 結合多種相似性度量,實現最相似region的融合;
  • 產生多種起始的小區域;
  • 合併所有的region,並對他們排序,以便使用者能夠在數量和質量上進行權衡;
  • 最後的排序主要解決兩個問題,防止模型輸出過於強調大區域,對於那些多個策略都產生的相同區域應該具有更前的位置。
優點

不需要標籤,不需要學習,獨立於class。

缺點

個人認爲selective search的最後排序的效果並不是很好,在R-CNN的論文中提到了region的缺失和定位的粗糙,最後的排序並沒有基於region裏面的數據進行判斷,而是通過提高小區域位於高rank和重複區域位於高rank的可能性,以此作者認爲是具有高的rank的region更可能包含object。

Ref

[1]J.Uijlings,K.vandeSande,T.Gevers,andA.Smeulders.Selective search for object recognition. IJCV, 2013.
[2]R. Girshick, J. Donahue, T. Darrell, and J. Malik. Rich feature hierarchies for accurate object detection and semantic segmentation. In CVPR, 2014.

深度學習方法

目標檢測模型的mAP評估方法

mAP評估模型主要是用於估計recall-precision的面積,我們自然希望當recall一定時,precision越大越好,即面積越大模型越好。
假定我已經有了一個訓練好的模型,它的輸出是一系列的預測框伴隨着置信度,現在我要評價這個模型的好壞。不同的benchmark數據集使用的mAP方法有些許不同。
主要有兩個量決定了mAP值,分別是recall統計量和precision統計量。

需要用到的統計量
  • recall:反應了檢測出來的TP的數量佔ground truth的比例,通過指定某一個未知的置信度實現,我們也稱這個置信度閾值爲rank,我們用rank之上的positive預測結合IoU閾值爲0.5(不同數據集IoU策略不一樣)計算TP FP,從而得到recall值。
  • precision:計算TP佔rank之上的比例,反應了我的模型的效果。對應於一個recall值,在mAP中需要計算大於或等於給定recall值的recall範圍中precision最大的值,作爲對應於給定的recall值的precision。(PS:這裏的precision反應的是要實現給定的recall其對應的精確度,其值必定是反映模型在此recall的最優precision,個人認爲既然我能夠有更高的recall且precision更大,那我理應選擇更大的recall對應的更大的precision,這樣的值更加符合模型在這個recall的精確度;第二個原因是因爲recall是一系列給定的值,先不說模型的recall值能不能夠準確與其匹配,recall對應的precision值存在偶然性,並沒有上述方法的precision更能反應模型的能力
計算

在PASCAL VOC,給定一個recall[0,0.1,0.2,…,1]分別計算不同recall的precision,再求平均得到AP,每一個類均計算AP,最後做平均得到mAP。

R-CNN

它是早期的基於深度學習的目標檢測算法,以至於在它的方法裏面還包含有機器學習的方法。
它包含三個模塊(i.e. selective search、CNN、class-specific linear SVMs)和一個optional bounding box regression(爲了提高最後輸出region的準確性),主要的三個模塊也是借鑑了其他文章中的方法,神經網絡的作用只是起到了提取特徵的作用,神經網絡提取的特徵在數據維度上和質量上都優於傳統的機器學習方法,所以相比state-of-the-art這篇文章的模型大幅度提高了mAP值。 同時這篇文章也使用了非最大值抑制算法(non-maximum suppression),用於在測試期間去除一些與更高分數的region產生的IoU大於某個學習的閾值的低分數region,每個類獨立地進行非最大值抑制。
其中在訓練時一個mini-batch的大小是128,測試時是取了2000左右的proposals進行提取特徵、分類。

優點

此篇文章開創性得把CNN應用於目標檢測,得到了非常好的效果。

缺點

R-CNN模型是一個非端到端訓練的模型,需要先訓練好CNN然後再訓練SVMs還有可選的迴歸;雖然對於所有的類,它僅僅使用一個CNN,但是每一個類都有一個SVM分類器,當類型很多時,模型將會難以去訓練。因爲multi-stage,導致了需要存儲大量的中間feature,去訓練SVM和迴歸。因爲一個mini-batch或者測試階段的前向傳播包含了很多的proposals,它們一定存在重疊部分,也即意味着重複地計算,所以運行時間多,效率低下。

Ref

[1]R. Girshick, J. Donahue, T. Darrell, and J. Malik. Rich feature hierarchies for accurate object detection and semantic segmentation. In CVPR, 2014.

Fast R-CNN

這裏提出了RoI和RoI池化層的概念,RoI池化層是來源於SPPnets所使用的spatial pyramid pooling layer。

特點
  • 實質上是基於ImageNet中的網絡的改變;
  • 作者爲了充分利用sharing computation,所以沒有像SPPnets那樣選擇在所有圖片的region中採樣,而是使用了基於等級的採樣,即先採樣兩張圖片,然後從每張圖片採樣64個region;
  • 使用了RoI max pooling layer來實現region特徵size的統一化,並實現了這一層反向傳播梯度的計算(部分輸入的梯度+累計);
  • class-specific的全連接回歸層,預測偏移量refine bounding box;
  • 提出了一個multi-task loss,將分類誤差和偏移量誤差進行了融合
  • 可以使用兩種Scale invariance解決辦法;
  • 不必使用具體的某個神經網絡,而是將這個神經網絡作爲主幹網絡,可以從分類網絡中進行選擇;
  • SPPnets中使用了 spatial pyramid pooling,它們是由輸出尺寸不同的RoI max pooling layer構成,所以作者在spatial pyramid pooling做了簡化。
優點

相比於R-CNN,增加了多個全連接層,實現迴歸預測bounding box偏移量,用於各個類refine bounding box;相比於R-CNN,作者受到了SPPnets的啓發,於是實現了sharing computation,減少了重複計算;相比於SPPnets的sample實現,作者的sample更有效率,也並沒有影響迭代輪數

缺點

同樣使用了selective search產生proposal region;

Ref

[1]K.He,X.Zhang,S.Ren,andJ.Sun.Spatial pyramid pooling in deep convolutional networks for visual recognition. In ECCV,2014.

Mask R-CNN

  • 低分辨率的feature map(高層)對應的感受野更大,相當於使用更少的像素表達圖片,高分辨率的feature map(底層)對應的感受野更小,相當於使用較多的像素表達圖片。所以對於大的RoI我們使用低分辨率feature map進行切割得到RoI的特徵,對於小的RoI我們使用高分辨率feature map進行切割得到RoI的特徵;
  • FPN(Feature Pyramid Network)是一種特徵學習網絡,正如它的名字一樣,它主要應用於多尺寸的目標檢測任務。它擁有bottom-up和up-bottom的特徵融合,使其具有更強的語義和空間信息。
  • 取消了Faster R-CNN中RoI pooling的兩個取整操作,分別是取整RoI的位置和進行RoI pooling時grid位置的取整。但在Mask R-CNN中保留了小數,作者提出了新的池化方法RoI Align,這個方法去掉了兩個正數化操作,首先它會將RoI進行均等地劃分,然後作者在每個cell中使用了4個採樣點(4是超參),這四個採樣點的座標是浮點數,需要使用雙線性插值基於這個採樣點所在的feature map 的cell,計算這個點的值,然後對這四個點進行max pooling(PS:當採樣點數爲1時,也能取得相似的效果,這樣計算量少了效果提高了,得益於非整數化處理);
  • 在mask分支輸出分別對於不同類進行訓練其對應一層,這樣大大減少了類間競爭,提高了性能;
Ref

[1]https://zhuanlan.zhihu.com/p/37998710

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章