1. 程式人生 > >基於深度學習的目標檢測演算法綜述(二)

基於深度學習的目標檢測演算法綜述(二)

前言

基於深度學習的目標檢測演算法綜述分為三部分:

1. Two/One stage演算法改進。這部分將主要總結在two/one stage經典網路上改進的系列論文,包括Faster R-CNN、YOLO、SSD等經典論文的升級版本。

2. 解決方案。這部分論文對物體檢測中遇到的各類問題進行了分析並提出瞭解決方案。

3. 擴充套件應用、綜述。這部分將就特殊物體檢測和檢測演算法在其他領域的應用等方面進行介紹。

本篇文章將詳細介紹2. 解決方案,我們歸納總結了物體檢測中遇到的具體問題和近期論文提出的解決方案。

2. 解決方案

本部分針對小物體檢測、不規則形狀物體檢測、檢測演算法中正負樣本不均衡問題、物體被遮擋、檢測演算法的mini-batch過小、物體之間的關聯資訊被忽略等問題提出瞭解決方案。在這個部分最後本篇綜述將介紹四篇改進網路結構以提升檢測效果(包括準確率和速度)的論文,如改進基礎網路以提升準確率的DetNet和針對移動端優化速度的Pelee網路等。

2.1 小物體檢測

2.1.1 Feature Pyramid Networks for Object Detection

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

開原始碼:https://github.com/unsky/FPN

錄用資訊:CVPR2017

論文目標:

引入Top-Down 結構提升小物體檢測效果。

核心思想:

Feature Pyramid Networks (FPN) 是比較早提出利用多尺度特徵和Top-Down結構做目標檢測的網路結構之一,雖然論文中整個網路是基於Faster R-CNN 檢測演算法構建,但其整體思想可以廣泛適用於目前常見的大部分目標檢測演算法甚至分類等的其他任務中。

整體來講, FPN 解決的問題如下:只用網路高層特徵去做檢測,雖然語義資訊比較豐富,但是經過層層pooling等操作,特徵丟失太多細節資訊,對於小目標檢測這些資訊往往是比較重要的。所以,作者想要將語義資訊充分的高層特徵映射回解析度較大、細節資訊充分的底層特徵,將二者以合適的方式融合來提升小目標的檢測效果。

特徵利用方法

上圖中作者首先介紹了四種常見的特徵利用的方式,這裡我們一一說明。圖中a部分展示了利用影象特徵金字塔的方式做預測的方法,即通過將預測圖片變換為不同尺寸的圖片輸入網路,得到不同尺寸的特徵進行預測。這種方法行之有效,可以提升對各個尺寸目標的檢測效果。

上圖是imageNet 資料集中各個物體的尺寸分佈,可以看到大部分物體尺寸集中在40-140畫素之間。當我們採用imageNet 的pretrain引數初始化我們的基礎網路時,網路實際上對40-140畫素間的物體是較為敏感的。所以當物體目標過大過小的時候效果都會打折扣。而影象多尺度金字塔預測的方法也解決了這一問題。這個方法雖然行之有效但是缺點是效率低下。尤其是應用於類似於Faster R-CNN 這樣的網路,迫於速度和視訊記憶體的壓力,端對端的訓練難以實現。通常這種方法只應用於網路預測的階段。

圖中b部分展示的方法為利用單一尺度圖片的最高層資訊進行預測的方法,是平時最廣泛被使用的一種方法,簡單高效。但是缺點是由於尺度單一,應對多尺度的目標效果受限。圖中c部分展示了利用特徵金字塔來做預測的方法。即採用不同尺寸不同深度的特徵層分別進行預測,每層的感受野和特徵資訊的豐富程度都不一樣,對不同尺寸的目標響應也有所區別。其中高層特徵更適合用於檢測大目標,而低層特徵細節資訊更加豐富,感受野也偏小,更適合用於檢測小目標。我們經常使用的SSD檢測演算法即使用了這種思路。該方法的缺點是低層的特徵資訊因為層數較淺,語義資訊不太豐富,所以小目標的檢測效果仍然不盡如人意。圖中d部分即為FPN的解決方案,利用Top-Down結構,融合了高層和底層的特徵資訊,使得底層的語義資訊仍然很豐富的同時保持較大的解析度,提升小物體的檢測效果。

上圖展示了FPN網路的特徵融合方式,其中高層特徵通過最近鄰差值的方式增大兩倍的尺寸,而底層的特徵經過一個1*1的卷積做降維操作,這兩層特徵分別作畫素級的相加完成融合。融合之後的特徵可以經過一個3*3的卷積層之後輸入用來預測,也可以再重複上面的操作,和更低層的特徵進行融合。

演算法效果:

上圖展示了各個演算法在COCO資料集上的對比。

2.1.2 Beyond Skip Connections Top Down Modulation for Object Detection

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

開原始碼:無

錄用資訊:CVPR2017

論文目標:

1. 有效利用網路前層資訊。使其既包含小物體細節資訊,又包含高層抽象語義資訊,提高小物體召回率。

2. 避免直接特徵疊加導致維度過高。

核心思想:

本文是Google 對標Facebook FPN的一個演算法,用與FPN不同的方式實現了Top Down結構,主要是為了融合低層的細節特徵和高層語義特徵來提升小物體檢測效果的一個方法。

本論文提出的Top Down modulation的結構主要關鍵點在於modulation這一過程,在該演算法中,高底層的資訊融合不是像FPN一樣畫素級疊加,而是通過卷積進行融合。由神經網路自主的選擇選擇哪些特徵進行融合,實現這一“調製”過程。

一、整體網路結構:

整體網路結構圖

首先對自下而上的CNN網路加入一個自上而下的Top Down網路,使用 lateral connections連線起來。通過這些connections 篩選合適的特徵,通過Top Down 網路進行特徵融合。

二、Top Down Modulation (TDM)網路基礎模組:

基礎單元由兩個部分組成:

L:a lateral module

側向連線主要提取低層資訊特徵,並篩選可用特徵。

T : a Top Down module

鄰近層語意資訊的傳遞,及特徵融合。

演算法細節以VGG16為例:

下文具體分析VGG16 ,Conv2層。

解構流程:

1. 將上層Top Down的feature map經過3 x 3 x 64卷積,再接Relu啟用函式,最後接UpSample上取樣。

2. 將bottom up對應的feature map經過3 x 3卷積,再接Relu啟用函式。

3. 將L模組的feature map 與 T模組的feature map concat。

4. 接1 x 1 x 128卷積做特徵融合。

三、訓練方法:

網路設計準則:

  1. Top Down的深度通常是越深越有效,但是過於深的時候如VGG融合到conv1深度,價效比就相當低了。

2. 側向連線和bottom-up的連線應該減少特徵維度。

3. 網路訓練需要採取一層一層增加,凍結之前層的方式。這樣可以保證訓練收斂穩定。

四、演算法總結:

整體來講高層和底層資訊都經過卷積進行了降維操作,控制了計算量的增加,如VGG16最後一層輸入RPN的特徵數由512減小為256。同時特徵融合是concat一起的,避免了特徵疊加對資訊造成的負面影響。另外需要說明一點,由於RPN網路輸入特徵圖會變大很多倍,如果還遵循原始Faster R-CNN逐畫素判斷正負例的做法,網路會變得很慢,所以作者採取通過更改stride step來控制計算量保持不變。如特徵圖面積增大4倍,stride就設定為2。

演算法效果:

從效果表格上看小物體識別率得到了提升,說明TDM結構發揮了作用。筆者實際使用時也發現TDM結構就速度和效果來講,相較類似於畫素疊加式的方式也要好一些。

另外,關於TDM、FPN和DSSD在Top-Down結構設計上的區別已在本綜述的第一篇文章中詳細闡述,這裡不再重複,具體細節請檢視上一篇文章的DSSD部分。

2.2 不規則形狀物體的檢測

2.2.1 Deformable Convolutional Networks

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

開原始碼:https://github.com/msracver/Deformable-ConvNets

錄用資訊:ICCV2017

論文目標:

提升可變性物體的檢測效果。卷積神經網路由於其固定的幾何結構限制了其幾何變換的建模能力。傳統方法通常使用資料增強(如仿射變換等)、SIFT特徵以及滑動視窗演算法等方法來解決幾何形變的問題。但這些資料增強方法都需假設幾何變換是固定的,無法適應未知的幾何形變,手工設計特徵和演算法也非常困難和複雜。所以需要設計新的CNN結構來適應空間幾何形變。

核心思想:

論文主要是引進可形變卷積和可形變RoI pooling來彌補CNN在幾何變換上的不足。同時實驗也表明在深度CNN中學習密集空間變換對於複雜的視覺任務(如目標檢測和語義分割)是有效的。

一、可形變卷積

1.標準卷積採用固定的kernel在輸入的feature map上取樣;可形變卷積則是在標準卷積取樣的基礎上,每一個取樣位置分別在水平和豎直方向進行偏移,已達到不規則取樣的目的,即卷積具有形變能力。

2.偏移是網路學習出來的,通常是小數;論文采用雙線性差值的方式求這些帶有小數取樣點在feature map上對應的值。

3.偏移量可以採用標準卷積來實現。

4.圖文說明

二、可形變RoI pooling

1.RoI pooling是把不同大小的RoI(w*h)對應的feature map 統一到固定的大小(k*k);可形變RoI pooling則是先對RoI對應的每個bin按照RoI的長寬比例的倍數進行整體偏移(同樣偏移後的位置是小數,使用雙線性差值來求),然後再pooling。

2.由於按照RoI長寬比例進行水平和豎直方向偏移,因此每一個bin的偏移量只需要一個引數來表示,具體可以用全連線來實現。

3.圖文說明

演算法效果:

三層3*3可形變卷積分別在背景(左),小目標(中),大目標(右)上的取樣結果(共9^3=729個點)

2.3 解決正負樣本不均衡的問題

2.3.1 Focal Loss for Dense Object Detection

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

開原始碼:https://github.com/unsky/RetinaNet

https://github.com/unsky/focal-loss

錄用資訊:ICCV2017

論文目標:

論文作者認為,one stage檢測精度之所以低於two stage方案的一個重要原因是檢測樣本不均衡:easy negative samples數量大大超過其他正樣本類別。這使得訓練過程中,easy negative samples的訓練loss主導了整個模型的引數更新。

為解決這個問題,論文提出了focal loss。在計算交叉熵損失時,引入調製因子,降低概率值較大的easy negative samples的loss值的權重,而對於概率值較小的誤分類樣本的loss值,權重保持不變。以此提高佔比較低的誤分類別的樣本在訓練時對loss計算的作用。

核心思想:

一、Focal Loss

Focal Loss是在Cross Entropy上進行的改進,主要有一個γ引數(實際應用中會增加Balanced
Cross Entropy中的α引數),γ是作者引入用來關注hard example的引數,減少hardexample對loss的影響。下圖是其公式及效果曲線圖:

Focal Loss的具體形式並不是很重要,主要是發現在目標檢測中正負樣本極度不平衡導致檢測精度低的問題,論文也驗證了其它形式的loss。雖然先前的檢測器也考慮到這個問題並提出解決方案(例如OHEM),但是這種修改loss並且由資料驅動的形式更加有效和簡潔。

二、RetinaNet

作者為了證明Focal Loss的有效性,設計了一個one-stage的網路結構,並命名為RetinaNet,其是以ResNet+FPN作為基礎網路來提取特徵,然後分別接兩個子網路進行識別和定位。其中rpn的Top-Down pathway和lateral connetions(橫向融合)用來構建大量多尺度的特徵金字塔,然後用anchor機制在其上產生box用於下一步的分類和迴歸。下圖是RetinaNet的結構示意圖:

演算法效果:

論文闡述了one stage檢測器相比two stage檢測器精度低的問題以及原因,並通過設計新的loss給出瞭解決方案。

2.3.2 Chained Cascade Network for Object Detection

論文連結:

http://openaccess.thecvf.com/content_ICCV_2017/papers/Ouyang_Chained_Cascade_Network_ICCV_2017_paper.pdf

開原始碼:https://github.com/wk910930/ccnn

錄用資訊:ICCV2017

論文目標:

物體檢測任務中背景樣本會比前景多很多,在訓練中會造成正負樣本不均衡的情況。作者設計出一套級聯的方式來去除無用的背景,淺層中的無用資訊過濾掉後無需進入更深的網路中計算,後階段的特徵和分類器只負責處理少量更困難的樣本。由於需處理樣本數量減少(主要減少了簡單樣本),此級聯網路可節省訓練預測時間,且更困難樣本經過級聯後作用會加強,所以檢測效果也會有一定提升。

核心思想:

主要的網路結構如圖所示,可以分為兩個部分:前階段層和深階段語義層。

在淺層中,通過多級級聯,網路可以拒絕來自背景的無用RoI。經過RoI pooling後的特徵用來做分類,但被上一層拒絕的RoI不會再用他們的資訊做RoI pooling了。在上下文級聯階段,那些沒有被拒絕的RoI用來生成特徵。特徵再經過級聯,最終沒有被拒絕的部分用來做最終的預測。

作者設計的網路在訓練和預測階段都有層級網路,可以在節省訓練和預測時間的情況下提升檢測效果。因為在淺層網路拒絕RoI在深層網路不會用來被使用。 前階段的網路用來學簡單的分類,可以去除那些比較容易區分的背景,而深層用來學難的分類。以圖為例,第一層,學習是不是哺乳動物。第二層學習是哪種動物如羊牛豬。最後一層學習區分都有角的動物,如牛羊。

作者的創新主要可以歸於以下幾點:把級聯分類器用在物體檢測中,分類器級聯中在上一層的分類得分在下一層也會被用到。不同層用到不同的特徵,這些特徵可以是不同深度、不同引數、解析度和語義資訊。上一層的特徵可以被用到當前層,作為本層的先驗知識。而所有的處理,如框迴歸、特徵級聯、分類級聯都是在一個完整的網路中可以E2E處理。

演算法效果:

2.3.3 RON-Reverse Connection with Objectness Prior Networks for Object Detection

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

開原始碼:https://github.com/taokong/RON

錄用資訊:CVPR2017

論文目標:

該演算法結合 region free 和 region based 檢測演算法的優點,主要嘗試解決兩個問題:

  1. 多尺度目標定位預測的問題。本文提出了RON的檢測方法,首先利用一個類似於FPN的Top-Down 的連線方式,融合高層特徵和底層特徵(其目的在這裡不做過多複述),並將融合後的不同解析度的多層特徵用來進行預測。與此同時利用一個objectness prior map過濾掉大量背景區域,提高檢測效率。

  2. 難例挖掘的問題。提出難例挖掘方法,提出了一套自己的選擇正負樣本的邏輯,以及訓練時loss更新的策略,但整體和其他演算法的思路差別不是很大。

核心思想:

文章介紹了two-stage目標檢測演算法的流程,包括四個步驟:a)利用CNN網路提取影象特徵;b)在影象的特徵圖的基礎上確定帶檢測的proposals,去掉大量的背景區域(相對於滑窗來講);c)對提取的proposals進行分類與精修;d)去掉重複的預測框,輸出最終的檢測結果。而region free的(如SSD)的演算法精簡了b,c兩個步驟,將檢測問題轉變為一個single shot的問題。通過人為設定的一些固定的proposals直接讓CNN學習如何對目標進行定位迴歸,加快了檢測速度;

網路結構

其網路結構圖大致如上圖所示,就Top-Down的結構來講,考慮到該論文的發表時間,其實並無新意,它利用了類似於FPN的連線方法,即一個反捲積將高層特徵圖上取樣,低層特徵圖經過一個3*3卷積處理,然後兩者相素級相加。這種方式其實沒有太多特點,採用別的其他方式應該也能達到大致相同的效果。融合後的特徵層用來做最終的結果預測,其reference box的設定方法也和SSD的default box的設定思路大致類似,即採用如下公式:

其中Smin定義為影象1/10尺寸,而每個畫素點對應5個aspect ratios { 1 3 , 1 2 , 1, 2, 3}。

而在讀這篇論文時真正感到有新意的是作者引入了objectness prior map用來指導訓練和預測,網路對每個預測的特徵層都通過3*3*2卷積產生了一個解析度完全一致的objectness
prior map,其channel的個數為10,其後接一個Softmax的分類用於確定該畫素所對應的default box為前景或背景。

如圖所示,圖中的熱力圖樣子的圖片為objectness prior map各個通道的均值,可以看到不同尺度的物體均只在特定的層產生了響應。利用這樣的objectness prior map,可以過濾掉大量的背景區域,也同時提高了多尺度物體的檢測效能。

在訓練時作者採用了和其他檢測演算法類似的方法,通過特定的overlaps的閾值對每一個default box進行了類別劃分,前傳的階段objectness prior map和網路的預測輸出同時進行,而反傳階段,先對objectness prior map的網路進行更新,然後通過設定的閾值,只對objectness prior map超過閾值的區域的正例進行更新。整體的正負樣本比例保持在1:3,負樣本是隨機選取的。

在目標預測階段,其結構也有一點改進,如下圖所示,主要工作是將分類的模組改成了Inception的結構提高分類的準確率。

演算法效果:

2.4 被遮擋物體檢測

2.4.1 Soft-NMS -- Improving Object Detection With One Line of Code

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

開原始碼:https://github.com/bharatsingh430/soft-nms

錄用資訊:ICCV2017

論文目標:

傳統NMS的處理方法是對檢測框按檢測得分排序,留下得分最高的,其他的如果IoU大於一定閾值就直接將其得分賦值為0(等於去掉)。這樣的話,如果遇到上面這種情況就會有問題:紅框是最好的物體檢測框,但是綠框和紅框的IoU過大,所以按照NMS策略,綠框就直接去除,檢測不到了。作者設計了一種新的NMS方法解決這個問題。

核心思想:

計算NMS時,不是簡單的去除值不是最高的物體,而是給IoU較大的框設定較小的得分。虛擬碼如下,修改的這行程式碼就是把傳統的NMS改進為soft-NMS。

作者使用兩種方法將傳統NMS改進為soft-NMS:

線性方法:


 

高斯加權:

演算法效果:

由於soft-NMS主要關注的是互相遮擋的物體,從下圖中的結果提升來看,像鳥、船這種容易被遮擋的物體的提升比較明顯。

2.4.2 RRC: Accurate Single Stage Detector Using Recurrent Rolling Convolution

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

開原始碼:https://github.com/xiaohaoChen/rrc_detection

錄用資訊:CVPR2017

論文目標:

提升被遮擋物體或小物體的檢測效果。

核心思想:

SSD雖然在時間消耗和準確度上取得了不錯的平衡,但是它對小物體、被遮擋的物體、同類重疊物體、照片過曝光或者欠曝光的物體檢測效果不好。其原因主要是這些物體的預測位置與ground truth的IoU(Intersection over Union)有時會低於0.5。從下圖的效果圖(左側圖)來看雖然分類正確,位置也給出來了,但是與ground truth的偏差會很大,如果通過在訓練過程中針對多尺度預測時,把輸入的每一個特徵圖提高對應的anchor boxes的IoU閾值的話,SSD的預測的準確度會大幅度下降。針對於這種情況,本文提出了Recurrent Rolling Convolution這種結構,在生成anchor大於0.5的時候(本文設定為0.7)基於SSD的one stage模型針對於上所說的小物體、被遮擋物體等所預測的物體的位置會有較高的IoU。

2 網路設計結構

2.1 總體設計

conv10_2_2至此完成了一輪RRC迭代。論文中RCC迭代在實驗中一共使用了5次,這些權重引數在每次迭代是共享的,如果不是共享的話會有過擬合和一些未知的偏差問題(it will be more prone to overfitting and cause unexpected bias)。RRC是一個迴圈的過程,每一次迭代特徵圖都會將資訊聚合來預測迴歸。正如前面討論過的,這些相關特徵資訊包含上下特徵資訊,這對於檢測具有那些小物體和被遮擋物體等特徵提取具有重要作用。每一次迭代有一個單獨的損失函式來訓練學習。這確保了模型在每一次迭代過程中不會退化達到真正的進步。因為RRC可以多次進行,由此產生的特徵圖,具有更好的深度資訊。

2.2 loss函式

下圖中的 r 為框的迴歸和分類的預測運算,F 為上述所說的RRC迭代,作者說到在每一次做預測還是做迭代的時候權重引數分別都是共享的,這樣網路就變成類似rnn的結構(An important insight is that if the weights in F and τ are shared over steps respectively, this is a recurrent network.)。所以每一次做預測在訓練過程中都會產生loss,和SSD類似,分類用交叉熵損失函式,框迴歸用smoothL1。

2.3 實現的一些細節

對於網路的體系結構, RRC迭代5次,使用5層的卷積圖來預測框迴歸和分類任務。實驗通過驗證RRC的 1x1 卷積進行,證明了模型結果是有效的。對於資料增強,除了SSD中採用的資料增強方法外,論文還隨機調整HSV顏色空間中影象的曝光度和飽和度擴大了1.3倍。此外實驗使用KITTI資料集, 該資料集包含了許多挑戰性的物體比如小和嚴重遮擋車輛和行人,並在特徵圖上使用生成anchor的閾值為0.7。在該資料集包含7481個樣本進行訓練和驗證,和其他7518幅影象進行測試。在實驗中沒有使用任何其他資料集來提升結果。因為KITTI資料集中的影象尺寸比較大(1272x375),所以要調整了conv4_3中推斷anchor對應的規模從0.1變成0.066。作者還去掉了在SSD中的全域性池化層並且將conv10_2的anchor scale設定為0.85。

演算法效果:

需要注意的是由於本文主要解決的是遮擋物體檢測的問題,作者使用了KITTI資料集(汽車)進行測試。KITTI資料的物體互相遮擋比較常見,可以更好的反映出演算法的優化效果。

2.5 解決檢測mini-batch過小的問題

2.5.1 MegDet: A Large Mini-Batch Object Detector

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

開原始碼:無

錄用資訊:CVPR2018

論文目標:

解決大規模Batch Size的訓練問題。

縮短訓練時間,提高準確率。

核心思想:

對於圖片分類任務,網路只需識別其中主要的物體,由於其佔圖片的比例較大,導致所需圖片的尺寸相對較小,因此相應的Batch Size很大。而對於檢測任務,需要檢測一些精細的物體,經深度神經網路訓練之後,圖片的尺寸以2的倍數減小。因此,為了保證最後一張特徵圖上小尺寸物體依然佔有一定比例,需要輸入一張較大尺寸的圖片,然而這將導致影象檢測所需的視訊記憶體同比例增長,使得已有的深度學習框架無法訓練大規模Batch Size的影象檢測模型。

小 batch-size有如下缺點:a.訓練時間久,b.不能為BN提供準確的資料,c.正負樣本比例不均衡,d.梯度不穩定的缺點。然而增加Batch Size需要較大的learning rate,但是如果只是簡單地增加learning rate,可能導致網路不收斂,如果用小的lr確保網路收斂,效果又不好。具體改進如下:

1.Variance Equivalence,即使用梯度方差等價代替梯度等價。在之前的工作中經常使用Linear Scaling Rule,即當Batch Size變為原來的k倍時,lr(learning rate)也應該變為原來的k倍。但是在分類裡,損失只有Cross-Entropy,然而在檢測裡,影象之間有不同的Ground-Truth分佈。結合兩個任務的不同,分類任務的lr規律並不適合檢測任務。基於此,論文提出了方差等價來代替梯度等價。

2.Warmup Strategy,即剛開始訓練的時候,lr設定的小,隨著每次迭代,逐漸增加lr。例如,16-batch的FPN學習率為0.02,在訓256的MegDet時,如果設定lr=0.02*16,會導致模型發散,因此需要逐漸增加lr,讓模型適應。隨後隨著訓練逐漸減少lr,確保網路精度提高。

3.Cross-GPU Batch Normalization,在分類裡,圖片大小通常為224或299,所以一塊TitanX可以容納32張圖,或者更多。然而對於檢測來說,檢測器需要接受各種尺寸的圖片,因此會限制一個裝置容納的圖片數。所以,需要跨GPU從多個樣本提取不同的資料完成BN。如下圖所示:

BN操作需要對每個batch計算均值和方差來進行標準化。其中對於多卡的具體做法是,首先聚合算均值,然後將其下發到每個卡,隨後再計算minibatch的方差,最後將方差下發到每個卡,結合之前下發的均值進行標準化。

演算法效果:

論文提出了warmup learning rate和跨GPU BN機制,使訓練時間縮短(從33到4小時),而且準確率更高。使用同樣在COCO資料集上訓練的FPN框架,使用256的batch-size比使用16的batch-size,驗證集精度更高,且訓練時間更少(如下圖所示)。使用MegDet做backbone的檢測網路獲得了COCO2017冠軍。

2.6 關注物體之間關聯性資訊

2.6.1 Relation Networks for Object Detection

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

開原始碼:https://github.com/msracver/Relation-Networks-for-Object-Detection.

錄用資訊:CVPR2018

論文目標:

絕大多數的檢測類論文對目標物體都是獨立檢測,忽略了目標物體彼此之間的關聯性資訊。本文作者受NLP領域注意力方法啟發,提出了一種有效度量物體關聯性資訊的新方法。作者將該方法用於物體識別、重複框消除等階段,均取得了顯著的效果,實現了一種完全的端到端物體檢測。在實際應用中,relation module可以用來替換NMS。

核心思想:

本文主要創新點有兩方面。一方面是提出了物體關聯性資訊有效度量的新方法:relation module。另一方面是該方法在物體識別和重複框消除中的應用。在物體識別中,relation module可以將關聯性資訊融入提取後的特徵中,並能保持特徵維數不變。因此該方法可以方便地嵌入到各種檢測框架中,用於提升效能。在重複框消除中,使用relation module 替換NMS,使得重複框消除這一環節能夠更有效的融入整個學習過程,下面具體介紹下relation module以及它在物體識別和重複框消除中的應用。

一、Relation module

示意圖如下:

對於上圖右邊的每一項,作者都給出了具體的解釋和計算公式,讀者可以閱讀原文了解細節。需要指出的是,通過一系列的變換和限制,在concat所有的relation,並與原來的特徵疊加後,特徵的維數並沒有發生改變。

二、物體識別應用

現在絕大多數的檢測演算法均採用如下處理步驟:

如前所述,relation module並不改變特徵的維數,所以可以非常方便的新增到fc層之後,形成2fc+RM(relation module)的結構,實現如下結果:

其中r1 和 r2代表了relation module的重複次數。

三、重複框消除應用

作者將重複框消除當做了一個二分類問題。對於每個ground truth,只有一個detected object被歸為correct類,而其餘的都被認為是duplicate類。

對於每個detected object,首先按照物體識別階段的輸出 S0(分類分數)進行排名,即將scores轉化為rank,並與fn 物體識別階段的輸入特徵)、 bboxn(物體識別階段的輸出座標)一起作為relationmodule的輸入(需要經過維數對映)。

將relation module的輸出經過一個線性分類器和Sigmoid函式後,得到分數 S0。S0 x S1 即為最終的分類分數。

IoU超過閾值 n 的detected object都會作為當前ground truth的候選框。在候選框中,S0 x S1 最大的(非IoU最大)分類為correct,其餘為duplicate。

示意圖如下:

在訓練和推理中,作者都給出了詳細的策略,讀者可以閱讀原文了解細節。

需要指出的是,不管是NMS或SoftNMS,在學習過程中,重複框消除只是一種孤立的處理手段,並不參與模型引數的更新,而採用relation module方法,重複框消除既可以單獨訓練,也可以融入到整個模型引數的更新中,從而實現完全的end to end訓練。

演算法效果:

作者在COCO資料集上進行了實驗,採用了ResNet-50和ResNet-101作為基礎網路。

關物體識別效果,作者實驗了geometric 特徵的作用、relation的個數、relation module的個數,結果如下所示:

關於重複框消除效果,作者對比實驗了NMS、SoftNMS以及本文方法,結果如下:

關於端到端訓練效果,作者對比了Faster R-CNN、FPN、DCN三種檢測框架。針對每一種框架,分別使用了 2fc +SoftNMS -> 2fc+RM +SoftNMS -> 2fc+RM +e2e(end-to-end)三種網路結構,實驗結果如下:

2.7 改進網路結構以提升效果

2.7.1 DetNet: A Backbone network for Object Detection

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

開原始碼:無

錄用資訊:ECCV2018

論文目標:

討論分類模型和檢測模型各自特點,重新設計了一個適合檢測任務的網路模型。

核心思想:

該論文提出一種專門用於目標檢測的主幹網路結構DetNet,主要的貢獻在於探討了當前主流的CNN網路對於目標檢測任務上的弊端。當前常用的CNN網路結構都是基於分類任務所設計的,其特點是存在大量的pooling層,最後的特徵圖會被壓縮的非常小。Pooling層會造成特徵的部分位移實際上對位置資訊很重要的檢測任務來講比較不友好。而分類任務被分類的部分往往在影象中佔主體,最後特徵層比較小其實並無影響,而且這樣感受野變大使得單位特徵可以包含更豐富的資訊。但是對於檢測任務來講,目標在圖中所佔比例是不固定的,有可能非常小。低解析度高感受野的特徵會丟失太多細節資訊導致小物體的檢測困難。所以適合檢測的網路應當有著較高的解析度,但是這樣會帶來計算量增長和感受野降低的弊端。DetNet 通過精細的設計平衡了這兩個問題。

在論文中作者以ResNet50為例,將ResNet50通過改進變成適合檢測任務的網路。文中提到味了保證公平性,ResNet50網路的前4個stage未作改變,而在第4個stage之後引入的空洞卷積的操作。

如上圖所示,該網路在第四個stage之後便不在進行下采樣,特徵的解析度不會進一步降低。此時特徵的stride step= 16.而引入空洞卷積的操作便是為了克服感受野小的問題,但是值得注意的一點是,隨著網路的變深,空洞卷積的尺度並沒有相應的變大。作者是因為變大效果不好所以沒有變大還是無意而為之也沒有進行討論,這個其實是個挺值得大家去做的一個實驗,沒有這個實驗我們沒法得出到底多大的感受野範圍是最適合目標檢測任務的。與此同時,為了進一步減小計算量,自stage4,網路channel的數量便不再增多,而是保持一樣。這樣的網路結構使得該網路也同樣適合用和檢測中常見的Top-Down結構同時使用,由於預測層解析度沒有變化,所以使得高層特徵和底層特徵融合更加的容易,免去了上取樣的步驟。

我認為論文與其說提出了一個全新的檢測適用的網路倒不如說改進了分類網路的不足,或是說提出了一個重新設計檢測網路的思考方向。目標檢測演算法發展到現在,各個流程趨於穩定與同質化。在底層特徵的研究可以作為一個新的方向,CNN在卷積的過程中如何更好的體現位置座標資訊,如何對於不同尺寸的物體都保持較好的響應,都是優化檢測任務的重點。本論文的網路設計雖然看似簡單,但思考的出發點實際上是非常深刻且能解決實際問題的。而且其中一些操作,如預測層的channel沒有繼續變多,是否也能體現出檢測網路的一個特性?其背後的原因又是什麼?希望未來可以看到更多基於特定任務的特性而單獨設計的網路結構。

演算法效果:

2.7.2 RefineDet:Single-Shot Refinement Neural Network for Object Detection

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

開原始碼:https://github.com/sfzhang15/RefineDet

錄用資訊:CVPR2018

論文目標:

通過實現對ssd default box的二次精修提升檢測效果。

核心思想:

one stage的網路結構,位置框和物體的類是在同一個特徵提取層來做迴歸和分類預測的,這種的網路運算速度雖然快但是準確度不夠高,準確度不夠高的一個重要原因是因為框的正負樣本數目比例失衡嚴重,two stage 的網路由於引入了Region Proposal Networks使得框的迴歸任務精度變高,該網路篩出了大量的負樣本框(正負樣本比例控制在1:3)解決了正負樣本不平衡的問題。RefineDet是基於SSD的改進演算法,該演算法主要是bottom up(網路結構圖上半部分)的網路結構來回歸粗略位置引數來調整anchor的位置以及框的二分類(是否是物體的位置)任務,用Top-Down(網路結構圖下半部分)的網路結構相對於調整的anchor的引數來回歸精細物體位置和框內物體的分類任務。可以看出bottom up的運算就是來解決正負樣本框數目不平衡問題的。

網路總體來說就是把SSD這個one stage模型,通過加入Top-Down的方法變成two stage模型。bottom up階段(論文稱之為arm,anchor refinement module)為常規SSD多尺度預測階段,做預測所提取的特徵圖分別為:conv4_3,conv5_3,fc7,conv6_2。每一個特徵圖都會有兩個子網路分支,為別為預測anchor位置的子網路mbox_loc(3組w, h, x, y,子網路卷積層的channel為12)和預測是否為anchor類別的子網路mbox_conf(3組0,1,子網路卷積層的channel為6),篩選出的負例樣本置信度高於0.99的就不會傳入到Top-Down階段(論文稱之為ODM,object detection module)以此來控制正負樣本的比例不均衡問題。

將arm階段預測出來的結果調整anchor引數(conf:0/1,w,h,x,y圖中標記為refined anchors),將特徵圖conv4_3,conv5_3,fc7,conv6_2輸入給TCB單元(transfer connection block)得到P3, P4, P5, P6傳入給ODM階段。TCB單元實質上就是Top-Down結構,作用就是使得多尺度特徵圖的通道融合以此來豐富特徵。最後生成的特徵圖為:P3, P4, P5, P6(其中P3, P4, P5, P6的生成分別對應arm中的 conv4_3,conv5_3,fc7,conv6_2相對應,特徵圖的尺寸分別是 512x64x64、 512x32x32、512x16x16 、 512x8x8)。有一個細節就是當conv4_3,conv5_3層在做anchor 的預測亦或者是做Top-Down的TCB操作的時候為了防止反向傳播的剃度過大導致loss輸出nan,這兩層會經過一個L2normlization操作然後分別擴大常量倍數,scale的值分別為10和3 ,以網路結構如下:

在Top-Down階段做框精細調整的迴歸和物體分類任務。每一個特徵圖都會有兩個子網路分支,為別為精細調整anchor位置的子網路mbox_loc(3組w, h, x, y,子網路卷積層的channel為12)和預測是否為物體類別的子網路mbox_conf(3組81類樣本,因為是分類coco資料集,子網路卷積層的channel為243)。

網路訓練過程是端到端的訓練方法,loss函式也是常規的分類Softmax和目標檢測的框迴歸smoothL1。損失函式公式如下所示:

在coco的資料集上,選用vgg16的網路結構,全部的圖片resize到 512x512的條件下batch size設定為32,使用4張顯示卡來訓練,0.9動量,0.0005的權重衰減率,前280k次的迭代使用的學習率為10e-3,後80k和40k次的迭代使用的學習率分別為10e-4、10e-5。在推理階段arm將置信度高於0.99的負樣本過濾掉,ODM只會輸出置信度前400個物體預測樣本,然後使用非極大值抑制(閾值為0.45),只會留下置信度為前200個預測樣本作為最終的輸出結果。

演算法效果:

以上效果為在VOC 和 COCO 資料集上的mAP對比。

2.7.3 Pelee: A Real-Time Object Detection System on Mobile Devices

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

開原始碼:https://github.com/Robert-JunWang/Pelee

錄用資訊:CVPR2018

論文目標:

在網路結構設計上更加精緻,可以在移動端進行實時物體檢測。

核心思想:

1. Two-Way Dense Layer

Pelee使用兩路卷積層來得到不同尺寸的感受野。

左邊先通過1 x 1卷積,後面接3 x3卷積,使其對小物體有更好表現。

右邊先通過1 x 1卷積,兩個3 x 3卷積代替5 x 5卷積,有更小的計算量和引數個數,且對大物體有更好表現。

2. Stem Block

網路前幾層對於特徵的表達十分重要,Pelee 採用了類似於DSOD演算法的stem block結構,經實驗可知該結構可以在不增加過多計算量情況下提高特徵表達能力。

3. 動態調整bottleneck layer通道數

bottleneck layer通道數目隨著輸入維度的變化而變化,以保證輸出通道的數目不會超過輸出通道。與原始的 DenseNet 結構相比,實驗表明這種方法在節省 28.5% 的計算資源的同時僅會對準確率有很小的影響。

4. 過渡層不壓縮

實驗表明,DenseNet 提出的壓縮因子會損壞特徵表達,Pelee 在轉換層中也維持了與輸入通道相同的輸出通道數目。

5. Bn層與卷積融合,起到加速的作用。

捨棄了以前的bn-relu-conv採用了conv-bn-relu形式。Bn層與卷積層融合加快推理速度(融合部分計算),同時後面接了1 x 1卷積提高表達能力。

作者將SSD與Pelee相結合,得到了優於YOLOV2的網路結構。

使用Pelee作為基礎網路對SSD改進:

1. 捨棄SSD的38 x 38的feature map

2. 採用了Residual Prediction Block結構,連線了不同的層。

3. 用1 x 1卷積代替SSD裡的3 x 3卷積做最終物體的分類與迴歸。減少了21.5%的計算量。

具體網路結構:

分類網路結構圖

首先圖片輸入後經過Stem Block結構,再通過stage1, stage2,stage3,stage4及後續卷積操作得到相應feature map,接resblock結構後進行分類及位置迴歸。

演算法效果:

結合SSD,在VOC2007 資料集上達到了76.4% 的 mAP,在 COCO 資料集上達到了 22.4% 的 mAP。在iPhone 6s 上的執行速度是 17.1 FPS,在iPhone 8 上的執行速度是 23.6 FPS。

2.7.4 Receptive Field Block Net for Accurate and Fast Object Detection

論文連結:https://arxiv.org/pdf/1711.07767.pdf

開原始碼:https://github.com/ruinmessi/RFBNet

錄用資訊:未被會議收錄

論文目標:

一些檢測論文會依賴很深的CNN網路來提升效果,但此類網路會犧牲執行速度。在RFB論文中,作者由視覺感受野(Receptive Fields)出發提出了感受野RFB模組(Receptive Fields Block)。通過膨脹卷積和增加Inception結構等方法使得網路結構的感受野變大,這樣可以在不增加網路深度的前提下保持較高的檢測效果和較快的執行速度。

核心思想:

通過改進SSD特徵提取網路,使卷積核的感受野可以覆蓋更多範圍,提升檢測效果。演算法主要是對網路中卷積的結構進行改進,相當於把SSD的基礎網路替換為一個類似於Inception的網路,並將普通卷積改為了膨脹卷積,使得每個卷積的感受野變得更大。RBF網路通過模仿人類感受野使基礎網路可以學到更多尺度的資訊,從而在不增加引數的前提下提升準確率。

RFBNet主要創新可以參考以下兩張圖:

作者參考Inception結構,將SSD的基礎網路改進為多Branch結構。每個RFB(感受野模組)由不同大小的普通卷積+Dilation Conv構成。如1*1卷積接3*3卷積,3*3卷積接3*3膨脹卷(感受野為9*9),5*5卷積接3*3膨脹卷積(感受野為15*15)。然後將這三個結構concat在一起共同作用。膨脹卷積如圖所示,雖然3*3的卷積的引數個數和普通卷積一樣,但其覆蓋範圍更大。

其實每個卷積核不覆蓋很小的範圍在deformable conv論文中也早有提及。作者在對比中提到,deformable的每個畫素的作用是相同的,但RFB結構可以通過對不同尺度的卷積設定不同權重使不同尺度的資訊的作用不同。

在實現過程中,作者使用了兩種不同型別的RFB:

A結構分支更多,卷積核更小,且沒有5*5卷積核(作者在使用中使用兩個3*3卷積代替5*5卷積)這兩種構造在最後的SSD物體檢測網路中的位置是不同的。根據作者的說法,在更靠前的網路,為了模仿人類更小的感受野,所以使用了更多分枝,且卷積核更小。事實上在使用過程中,只有第一層用了A結構。

我們看一下整體的網路結構,可以看到RFB a結構只在提取VGG43的特徵時使用,其他的RFB都是B結構。另一個有趣的現象是最後幾層依然使用了原始的卷積操作。因為在這些層feature map的尺寸已經很小了。較大的卷積核(5*5)不能執行在上面。

演算法效果:

VOC資料集的mAP可以達到80.5%。作者在其他基礎網路上也測試了準確率,發現也有提升。證明RFB結構的效果提升具有普遍性。此外,作者嘗試了使用RFB網路從零開始訓練。最終的mAP為77.6 (DSOD為77.7),整體表現差不多。