當前位置:
首頁 > 知識 > 基於深度學習的目標檢測演算法綜述(二)

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

本文為美圖雲視覺技術部「基於深度學習的目標檢測演算法綜述」系列第二篇文章。

目標檢測(Object Detection)是計算機視覺領域的基本任務之一,學術界已有將近二十年的研究歷史。近些年隨著深度學習技術的火熱發展,目標檢測演算法也從基於手工特徵的傳統演算法轉向了基於深度神經網路的檢測技術。從最初 2013 年提出的 R-CNN、OverFeat,到後面的 Fast/Faster R-CNN、SSD、YOLO 系列,再到 2018 年最近的 Pelee。短短不到五年時間,基於深度學習的目標檢測技術,在網路結構上,從 two stage 到 one stage,從 bottom-up only 到 Top-Down,從 single scale network 到 feature pyramid network,從面向 PC 端到面向手機端,都湧現出許多好的演算法技術,這些演算法在開放目標檢測數據集上的檢測效果和性能都很出色。

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

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

2. 解決方案。這部分我們歸納總結了目標檢測的常見問題和近期論文提出的解決方案。

3. 擴展應用、綜述。這部分我們會介紹檢測演算法的擴展和其他綜述類論文。

圖 1

上篇文章(基於深度學習的目標檢測演算法綜述(一))介紹了 Two/One stage 演算法改進,本篇文章將詳細介紹解決方案,這部分我們歸納總結了目標檢測的常見問題和近期論文提出的解決方案。

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

#小物體檢測

Feature Pyramid Networks for Object Detection

論文鏈接:arxiv.org/abs/1612.03144

開源代碼:github.com/unsky/FPN

錄用信息:CVPR2017

論文目標

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

核心思想

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

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

圖 2:特徵利用演算法

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

圖 3

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

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

圖 4

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

演算法效果

圖 5

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

Beyond Skip Connections Top Down Modulation for Object Detection

論文鏈接:arxiv.org/abs/1612.06851

開源代碼:/

錄用信息:CVPR2017

論文目標

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

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

核心思想

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

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

整體網路結構

圖 6:整體網路結構圖

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

Top Down Modulation(TDM)網路基礎模塊

圖 7

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

L:a lateral module

側向連接主要提取低層信息特徵,並篩選可用特徵。

T : a Top Down module

鄰近層語意信息的傳遞,及特徵融合。

演算法細節以 VGG16 為例:

圖 8

下文具體分析 VGG16 ,Conv2 層。

圖 9

解構流程:

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 卷積做特徵融合。

訓練方法

以預訓練好的原網路作為開始,論文發現逐步構建 bottom-up 的網路比一次性構建要好。用整體網路結構圖舉例說明,論文先添加(,),並且用out 獲取目標檢測的特徵。訓練完(,)模塊後,再添加(,),並且用一個新的out 獲取檢測特徵,以此類推。每添加一對模塊,整個網路都是端到端訓練的。

網路設計準則:

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

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

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

演算法總結

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

演算法效果

圖 10

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

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

#不規則形狀物體的檢測

Deformable Convolutional Networks

論文鏈接:arxiv.org/abs/1703.06211

開源代碼:github.com/msracver/Deformable-ConvNets

錄用信息:ICCV2017

論文目標

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

核心思想

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

可形變卷積

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

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

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

4.圖文說明

圖 11

可形變 RoI pooling

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

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

3.圖文說明

圖 12

演算法效果

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

圖 13

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

Focal Loss for Dense Object Detection

論文鏈接:arxiv.org/abs/1708.02002

開源代碼:github.com/unsky/RetinaNet

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 的影響。下圖是其公式及效果曲線圖:

圖 14

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

RetinaNet

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

圖 15

演算法效果

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

圖 16

Chained Cascade Network for Object Detection

論文鏈接:

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

開源代碼:github.com/wk910930/ccnn

錄用信息:ICCV2017

論文目標

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

核心思想

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

圖 17

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

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

圖 18

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

演算法效果

圖 19

RON-Reverse Connection with Objectness Prior Networks for Object Detection

論文鏈接:arxiv.org/abs/1707.01691

開源代碼: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 學習如何對目標進行定位回歸,加快了檢測速度。

圖 20

其網路結構圖大致如上圖所示,就 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 為前景或背景。

圖 21

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

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

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

圖 22

圖 23

演算法效果

圖 24

#被遮擋物體檢測

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

論文鏈接:arxiv.org/abs/1704.04503

開源代碼:github.com/bharatsingh430/soft-nms

錄用信息:ICCV2017

論文目標

圖 25

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

核心思想

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

圖 26

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

線性方法

高斯加權

演算法效果

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

圖 27

RRC: Accurate Single Stage Detector Using Recurrent Rolling Convolution

論文鏈接:arxiv.org/abs/1711.06897

開源代碼: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。

圖 28

網路設計結構

總體設計

圖 29

上圖為連續兩次 RRC 迭代的流程圖。以 VGG16 的網路結構為例,RRC 在第一次迭代的計算需要輸入的特徵圖包括 conv4_3、 FC6、conv8_2、conv9_2、conv10_2。在每一次迭代的每一個 bottom up 和 Top-Down 的階段(圖中上半部分為第一次迭代和下半部分為第二次迭代中)從左往右箭頭使得網路歷經的卷積和池化操作後,加在高一級卷積層的前面。從右往左箭頭使得網路歷經的卷積和反卷機操作後,加在低一級卷機層的後面。這樣原來的特徵圖的厚度為 256+38/19,然後經過一個的卷機操作以後生成回原來的 channel 尺寸,生成的特徵圖分別為 conv4_3_2、FC6_2、conv8_2_2、conv9_2_2、conv10_2_2 至此完成了一輪 RRC 迭代。論文中 RCC 迭代在實驗中一共使用了 5 次,這些權重參數在每次迭代是共享的,如果不是共享的話會有過擬合和一些未知的偏差問題(it will be more prone to overfitting and cause unexpected bias)。RRC 是一個循環的過程,每一次迭代特徵圖都會將信息聚合來預測回歸。正如前面討論過的,這些相關特徵信息包含上下特徵信息,這對於檢測具有那些小物體和被遮擋物體等特徵提取具有重要作用。每一次迭代有一個單獨的損失函數來訓練學習。這確保了模型在每一次迭代過程中不會退化達到真正的進步。因為 RRC 可以多次進行,由此產生的特徵圖,具有更好的深度信息。

loss函數

下圖中的為框的回歸和分類的預測運算,為上述所說的 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。

圖 30

實現的一些細節

對於網路的體系結構, RRC 迭代 5 次,使用 5 層的卷積圖來預測框回歸和分類任務。實驗通過驗證 RRC 的卷積進行,證明了模型結果是有效的。對於數據增強,除了 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 數據的物體互相遮擋比較常見,可以更好的反映出演算法的優化效果。

圖 31

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

MegDet: A Large Mini-Batch Object Detector

論文鏈接: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,可能導致網路不收斂,如果用小的 learning rate 確保網路收斂,效果又不好。具體改進如下:

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

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

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

圖 32

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

演算法效果

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

圖 33

#關注物體之間的關聯性

Relation Networks for Object Detection

論文鏈接:arxiv.org/abs/1711.11575

開源代碼:github.com/msracver/Relation-Networks-for-Object-Detection

錄用信息:CVPR2018

論文目標

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

核心思想

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

Relation module

示意圖如下:

圖 34

其中代表第 n 個物體的 apperance 特徵(卷積特徵),代表第 n 個物體的 geometric 特徵(4D 的 bounding box 信息)。上圖右邊的輸出即代表了作者提出的關聯性信息(第 n 個物體)。

物體識別應用

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

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

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

重複框消除應用

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

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

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

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

示意圖如下:

圖 35

演算法效果

作者在 COCO 數據集上進行了實驗,採用了 ResNet-50 和 ResNet-101 作為基礎網路。關於物體識別效果,作者實驗了 geometric 特徵的作用、relation 的個數、relation module 的個數,結果如下所示:

圖 36

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

圖 37

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

圖 38

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

DetNet: A Backbone network for Object Detection

論文鏈接:arxiv.org/abs/1804.06215

開源代碼:/

錄用信息:ECCV2018

論文目標

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

核心思想

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

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

圖 39

圖 40

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

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

演算法效果

圖 41

RefineDet:Single-Shot Refinement Neural Network for Object Detection

論文鏈接:arxiv.org/abs/1711.06897

開源代碼: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 的運算就是來解決正負樣本框數目不平衡問題的。

圖 42

網路總體來說就是把 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 相對應,特徵圖的尺寸分別是、

、、)。有一個細節就是當 conv4_3,conv5_3 層在做 anchor 的預測亦或者是做 Top-Down 的 TCB 操作的時候為了防止反向傳播的剃度過大導致 loss 輸出 nan,這兩層會經過一個 L2normlization 操作然後分別擴大常量倍數,scale 的值分別為 10 和 3 ,以網路結構如下:

圖 43

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

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

其中,i 為一個 batch 裡面預測 anchor 的序列,為第 i 個 anchor 的真實標籤,為第 i 個 anchor 的真實位置參數(w, h, x, y)。和為第 i 個 anchor 在 arm 階段預測的是否為前景置信度和位置參數。和為第 i 個 anchor 在 ODM 階段預測物體類別的景置信度和位置參數。和分別是在 arm 階段和 ODM 階段預測出的 anchor 為正樣本的個數。為二分類(anchor box 是否是物體)的交叉熵損失函數,也成對數損失函數,為多類別分類 Softmax 損失函數,為 Faster R-CNN 中的 smoothL1 損失函數。在公式中 []的意思是,如果 anchor 是正樣本時,該值為 1,anchor 是負樣本時,該值為 0。因此[]指出了 RefineDet 網路只關心 anchor 正樣本的 loss 值,負樣本的 loss 值忽略不計。

在 coco 的數據集上,選用 vgg16 的網路結構,全部的圖片 resize 到的條件下 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 個預測樣本作為最終的輸出結果。

演算法效果

圖 44

圖 45

以上效果為在 VOC 和 COCO 數據集上的 mAP 對比。

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

論文鏈接:arxiv.org/abs/1804.06882

開源代碼:github.com/Robert-JunWang/Pelee

錄用信息:CVPR2018

論文目標

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

核心思想

Two-Way Dense Layer

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

圖 46

左邊先通過 1 x 1 卷積,後面接 3 x3 卷積,使其對小物體有更好表現。右邊先通過 1 x 1 卷積,兩個 3 x 3 卷積代替 5 x 5 卷積,有更小的計算量和參數個數,且對大物體有更好表現。

Stem Block

圖 47

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

動態調整 bottleneck layer 通道數

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

過渡層不壓縮

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

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%的計算量。

具體網路結構:

圖 48:分類網路結構圖

圖 49

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

圖 50

演算法效果

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

圖 51

圖 52

Receptive Field Block Net for Accurate and Fast Object Detection

論文鏈接:arxiv.org/abs/1711.07767

開源代碼:github.com/ruinmessi/RFBNet

錄用信息:/

論文目標

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

核心思想

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

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

圖 53

圖 54

作者參考 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:

圖 55

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

圖 56

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

演算法效果

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

圖 57

圖 58

(未完待續)


喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 AI研習社 的精彩文章:

只需連接電腦攝像頭,就能用深度學習進行實時對象檢測
6次Kaggle 計算機視覺類比賽賽後感

TAG:AI研習社 |