1. 程式人生 > >閱讀筆記:Gated Bi-directional CNN for Object Detection

閱讀筆記:Gated Bi-directional CNN for Object Detection

背景

在目標檢測中,不同尺寸和解析度下的多個區域中的視覺線索對待定區域的分類具有互補作用。由此引出目標檢測的一個基本問題:如何有效地整合從這些區域中得到的區域性和上下文視覺線索。目前大多數的成果僅僅是將從這些區域得到的特徵或分數簡單結合,本文提出了一個新的雙向門控CNN網路(GBD-Net),用於特徵學習和特徵提取時在不同支援區域的特徵間傳遞資訊。這種資訊傳遞可以通過兩個方向的卷積實現,並且可以在不同的層中進行。因此,區域性和上下文視覺模式可以通過學習他們的非線性關係來彼此證實,然而他也證明對於個別樣本,資訊傳遞不總是有用的。門控功被進一步引入以控制訊息傳輸,並且他的開和關是由額外的視覺證據控制的。

一.介紹

目標檢測是一個基本的視覺問題,其中檢測被視為一個待定區域的分類問題。但由於角度,姿勢,遮擋,光照條件記憶背景等的變化,目標檢測的難度很大。最近,因為在學習特徵方面的突出能力,CNN網路被廣泛應用於目標檢測任務中。

在目標檢測中,如果一個待定域與標準背景的交併比超過一個閾值,則記這個待定域對目標類別的分數是正的。但是,當一個待定域只與標準背景交於一部分時,就會出現很多問題:

①待定域中的視覺線索可能不足以辨別目標的類別。例如圖(a)中的兩幅圖片,待定域中的視覺線索相似,但是其實它們屬於兩個類別。

       

②待定域的分類還受到遮擋情況的影響,而遮擋情況要從更大的周邊區域來推斷。

為了解決這些問題,首先就想到在待定域周圍尋找上下文區域,除此之外,周圍區域還提供了關於背景的上下文資訊和其他周邊物體來幫助檢測。因此,作者設計的深度模型利用了周圍區域來提升待定域的分類。

除了這些問題,CNN對輸入區域的大小也有一定的限制,如果輸入過大,CNN描述區域性細節的能力就會弱化,而這些細節對於識別目標類別會產生巨大影響,因此,CNN將輸入編碼成一個固定長度的特徵向量。

作者提出這個新的網路的動機之一是不同解析度和支援區域上的特徵可以彼此驗證。舉個例子,在區域性區域上兔子耳朵的存在可以加強兔子頭的存在性,而在一個更大的上下文區域中兔子上半身的存在也能加強兔子頭的存在性。由此,作者提出,在多個層間不同解析度和支援區域的特徵應該能夠互相傳遞,並以此在特徵學習和特徵提取時共同驗證它們的存在。

更進一步,作者強調要注意上下文和區域性區域之間的資訊傳遞。這種資訊不總是有用的,例如圖(c)和圖(d),區域性資訊不足以支援目標的正確分類。

 

對於這種情況,就需要一些額外的資訊來幫助分類,由此,作者設計了一個網路,利用輸入圖片中區域的額外資訊來自適應地控制資訊地傳遞。

文中,作者提出了一個雙向門控CNN結構(GBD-Net),這個模型能在特徵學習和提取特徵時自適應地建立上下文和區域性視覺線索之間的聯絡。作者在Fast RCNN檢測框架下實現這個新提出的網路,並且分別在三個資料集ImageNet,PASCAL VOC2007和Microsoft COCO上實驗驗證了這個網路的效果。

二.相關工作

待定域的選取。Selective search通過對語義結果按等級分組獲得待定域,再用Edgebox對邊界盒圍出來的輪廓數量進行評估,以此判斷其為目標的可能性。

目標檢測方法。目前最先進的深度學習是基於RCNN目標檢測方法的,它從多個互相交疊的影象區域中提取CNN特徵,再用一個線性SVM作為分類器。通過在ImageNet分類資料集上進行預訓練,這個網路與之前那些在PASCAL VOC和大規模ImageNet目標檢測資料集上使用手工特徵的滑窗方法相比,在檢測精度上取得了重大進展。

CNN的學習與設計。目前的大多數工作都更關注網路結構的設計,以及它們在檢測任務中的效果,例如【1-4,19】提出的更深的網路,

及對有效訓練深度網路方法的探究。文中方法主要關注新的雙向門控網路結構來有效地利用多尺度和多上下文的區域。作者設計的網路與上述的待定域選取,渠道,CNN層的設計及訓練方法是互補的。

資訊的傳遞與門控功能。RNN允許在特徵級上傳遞資訊,在長短期記憶網路中利用門控功能控制資訊的傳遞。然而,這兩種方法都沒有被應用在對多解析度和多上下文區域的特徵提取中,這個目標價測的基本問題沒能得到妥善解決。作者設計的資訊傳遞機制和門控功能就是專門針對這個問題設定的。

三.雙向門控CNN

1.Fast RCNN Pipeline

作者採用Fast RCNN作為目標檢測渠道,步驟如下:

①生成待定域。

②生成特徵圖。給定CNN的輸入,隨之生成特徵圖。

③Roi-polling。每個待定域都被視為一個興趣區域(ROI),然後在步驟②中生成的CNN特徵圖上進行一個池化操作。在Roi-pooling操作後,原本具有不同尺寸的待定域都被取樣成相同大小的特徵向量。

④分類。經ROi-pooling得到的CNN特徵經過幾個卷積,池化和全連線層最終預測待定域的類別。

2.框架概述

文中方法概述如下圖。


此網路以BN-Net為基準網路結構。網路以圖片為輸入並生成一個特徵圖,在特徵圖上進行roi-pooling來獲得具有不同解析度和支援區域的特徵(將他們表示為),然後利用雙向門控層在特徵間進行資訊傳遞(圖中紅色箭頭,圖中的G表示門控函式,利用它來控制資訊傳遞的速度),接下來所有的特徵通過引數共享的多個CNN層得到最終的特徵,最後利用這些特徵進行分類。其中,黑色箭頭上的引數在各個分支上被共享,而紅色箭頭上的引數不共享。

作者利用與1.中介紹的Fast RCNN相同的待定域生成和特徵圖生成的步驟,為了充分利用周圍/內部區域的視覺線索,作者又對Fast RCNN進行了一些修正,具體如下:

—在roi-pooling步驟中,從相同的特徵圖上提取中心位置相同但尺寸不同的區域。不同尺寸的區域在經過roi-pooling後尺寸都變為相同的區域,通過這種方法,採集出的特徵對應著不同的支援區域並且具有不同的解析度。

—不同解析度的特徵隨機地通過幾個CNN層來提取他們更高階的特徵。

—設計雙向門控結構來在不同解析度和支援區域的roi-pooled特徵間進行資訊傳遞。通過這種方法,對應不同解析度和支援區域的特徵可以互相驗證。

—利用門控函式來控制資訊的傳遞。

—資訊傳遞後,不同解析度和支援區域的特徵經過幾個CNN層來做分類。

文中提出了一個典型的模型實現如下圖所示。

 

BN-Net中有9個起始模組,在第6個模組(4d)之後對多個解析度和支援區域做roi-pooling操作,再利用雙向門控網路在特徵之間進行資訊傳遞,接下來,特徵各自經過第7,8,9個起始模組(被所有分支共享)和平均池化層後被用來做分類。

3.不同解析度和支援區域下特徵的roi-pooling

作者利用【6】設計的roi-pooling層來獲得具有不同解析度和支援區域的特徵。給定一個待定域,中心位置為,其中為寬度為高度,它的填充邊界盒用來表示。是通過將原來的邊界盒沿著x和y方向擴大尺度p得到的:

 

RCNN中,p預設為0.2,通過將擴大的邊界盒中所有畫素warp為固定大小w*h得到CNN的輸入,其中對於BN-Net,w=h=224;而在fast RCNN中,對特徵圖做warp而不再是對畫素。對一個邊界盒,計算其在特徵圖上對應的特徵盒並且利用最大池化的roi-pooling將中的特徵轉換為固定大小的特徵圖。

文中實驗對每個待定域都生成一個填充邊界盒集合,其中p=-0.2,0.2,0.8,1.7。在CNN特徵上通過roi-pooling將這些盒子warp成相同大小,這些填充過的盒子具有不同的解析度和支援區域。在roi-pooling步驟中,對應的區域被分別warp為特徵,步驟如下圖。

 

由於特徵經過roi-[ooling後尺寸都相同,故背景規模值p不僅決定了填充背景量,還決定了特徵的解析度。p較大就表示解析度較低,而上下文資訊則較多;反之,較小的p表示較高的解析度和較少的上下文資訊。

4.雙向門控網路結構

雙向結構。作者提出的雙向網路結構如下圖。對一個單個待定域,輸入為,其中用表示背景填充值為下的特徵,輸出為,記為。為了使(資訊傳遞後得到的解析度和支援區域都不同的升級特徵)彼此間相互配合,這個新的結構在它們間建立了兩個方向的連線,一個始於區域尺度最小的特徵終於區域尺度最大的特徵,另一個與之相反。

 

這個雙向結構的向前傳播總結如下:

 

其中,i=1,2,3,4。

表示接受(解析度更高,支援區域更小)的資訊後升級的特徵。設定,這是因為,是最小的支援區域並且不接受任何資訊。

表示接受(解析度更低,支援區域更大)的資訊後升級的特徵。設定,這是因為,是最大的支援區域並且不接受任何資訊。

CNN特徵圖沿通道方向連線起來。

—利用卷積濾波器將資訊傳遞後的整合入

表示卷積操作。卷積層的偏置和濾波器分別表示為

—非線性函式使用ReLU。

學習來控制一個解析度/支援區域的存在對另一個解析度/支援區域存在的影響的強度。即使經過了雙向的資訊傳遞,之間還是互補的,並且在接下來的層中為分類進行聯合使用。

作者提出的雙向結構與RNN不同,RNN強調利用一個定向迴圈捕獲動態的時間/空間行為,它假定定向連線中的引數都是共享的;而作者提出的結構因為輸入的解析度和背景級都不同,在資訊傳遞時的卷積引數是不共享的。

資訊傳遞的門函式。帶有門函式的雙向結構如下圖。

 

作者通過在帶有非線性sigmoid函式的卷積層上設計門函式來將資訊傳遞速度控制在(0,1)之間。在門函式下,(2)(3)中的資訊傳遞變為:

 

其中,,並且表示元素相乘,表示門函式。G為門函式,它包含了可學習的卷積引數並且使用從co-located區域得到的特徵決定資訊傳遞的速度。當0時,資訊不傳遞。求的公式不改變。

討論。作者提出的GBD-Net是在不同的解析度和背景上建立的。它的定位與roi-pooling的位置無關。在一個極端實驗中,直接對原始畫素做roi-pooling操作以獲得多解析度和背景的特徵,同時,將GBD-Net放在最後一個卷積層來做資訊傳遞。在這個實驗中,fast RCNN被減弱為RCNN,由此將在特徵圖上進行的待定域選取變為在原始畫素上進行。

5.實驗細節,訓練策略和損失函式

對於最先進的fast RCNN目標檢測框架,首先利用ImageNet圖片分類資料對CNN進行預訓練,然後利用它作為初始值來微調CNN以學習每個待定域的目標信心分數s和邊界盒迴歸偏移t。作者提出的框架也遵循這種策略,並且對雙向門控結構的濾波器隨機初始化,而對其它層從預訓練好的CNN進行初始化。最後對類別的預測和邊界盒迴歸基於等式(4)中的表達。以一個類別標籤為y,真實背景邊界盒偏移為的訓練樣本為例,文中提出的框架下的損失函式為分類的交叉熵損失和邊界盒迴歸的平滑的L1損失的總和:

 

其中,對類別c的預測分類可能性記為,而預測偏移記為。如果,則,否則,。在此實驗中,,網路的引數都是通過反向傳播學習到的。

四.實驗結果

1.實施細節

作者提出的框架是基於使用BN-Net作為基礎網路結構的RCNN pipeline實現的,雙向門控結構被加在BN-Net的第六個起始模組(4d)後。在GBD-Net中,屬於BN-Net的層被預訓練好的(訓練資料為ImageNet 1000類的分類和定位資料集)基準BN-Net初始化。GBD-Net的引數如5所示(在預訓練的BN-Net中是不存在的),在檢測任務中進行微調時做隨機初始化。在GBD-Net的實施中,等式(2)-(4)中的特徵圖(n=1,2,3),與輸入具有相同的寬度,高度和通道數量(i=1,2,3,4)。

作者在三個公共資料集上對這個方法進行了評估,分別為ImageNet目標檢測資料集,Pascal VOC 2007資料集和Microsoft COCO目標檢測資料集。由於ImageNet目標檢測任務包含了足夠多的影象和目標類以得到結論,故作者在這個資料集上對提出的訓練方法進行成分分析。這個資料集包含了200個目標類別並且具有三個子集:訓練集,驗證集和測試集,再將整個驗證集分為兩部分val1和val2。網路利用訓練集和val1中的訓練樣本做微調,利用val2做評估。以下實驗中訓練過程的學習率和權重衰減都固定為0.0005,利用批處理下的隨機梯度下降法來學習網路,批尺度為192。The overhead time at inference due to gated connections is less than 40%.

2.整體效能

ILSVRC2014 目標檢測資料集。作者將文中框架與其它先進方法進行了比較,結果如下表。(其中,sgl表示單個模型,avg表示平均模型,比較數值為平均正確率。)

 

PASCAL VOC2007資料集。這個資料集包含20個目標類別。作者沿用了【16】中最常用的方法,利用07+12訓練集微調網路,並在測試集上評估效能。GBD-Net的平均正確率為77.2%,而基準模型BN+FRCN的平均正確率只有73.1%。

Microsoft COCO目標檢測資料集。作者利用MCG來選取區域並且報告封閉測試資料集上的整體和。基準模型BN+FRCN得到24.4%的AP和39.3%的。而利用作者提出的雙向門控結構,網路的AP提高了2.6%,達到了27.0%的AP和45.8%的,這有力證明了新模型的效率。

3.成分研究

對不同層利用roi-pooling。Roi-pooling放置的位置與GBN-Net的位置無關。如果將roi-pooling放置在第六個起始模組(4d)之後來生成不同解析度的特徵,這個模型的訓練和測試都會更快;而若將其放在圖片畫素後來生成不同解析度的特徵,這個模型會更慢,這是因為對CNN層的計算直到第六個起始模組都是不能共享的。相比於放在4d之後達到的48.9%的平均正確率,放在畫素之後達到的51.4%具有更好的檢測精度。這是由於roi-pooling放在畫素值之後,GBD-Net的特徵更加多樣且彼此之間更加密切。

門函式。引入門函式來控制個別待定域的資訊傳遞。如果沒有門函式,是很難在實驗中訓練傳遞資訊的網路的。這是因為資訊傳遞層顯著增加了非線性和梯度爆炸或消失,就如很難在沒有LSTM的情況下訓練

RNN。為了證實這一想法,作者嘗試了不同的初始化。對於帶有資訊傳遞層而沒有門函式的網路,且資訊傳遞層被隨機初始化,達到的平均正確率為42.3%;而若這些層由一個已訓練好的GBD-Net來初始化,達到的平均正確率則為48.2%。這兩個結果都顯示出門函式的效果。

利用不同的特徵區域尺度。為了研究不同的解析度和背景設定產生的影響,作者進行了一系列實驗。在這些實驗中,一個特定填充值p下的特徵is added one by one。實驗結果如下圖。

 

當利用單個填充值時,能夠看出僅僅通過增加填充值p來擴大CNN支援域的方法會造成檢測效能變差,這是由於受解析度的損失和背景遮擋的影響。而如果利用GBD-Net將多個解析度和背景的特徵整合起來,隨解析度/背景數量增加檢測效能得到大幅提高。

多區域結合。這部分研究了將雙向門控結構和多域方法結合下的實驗結果。 We adopt the simple straightforward method and average the detection scores of the two approaches.基準模型BN的平均正確率為46.3%,在GBD-Net下為48.9%,基於BN-Net的多域方法為47.3%。將GBD-Net和多域BN結合得到的平均正確率為51.2%,比GBD-Net高2.3%,比多域BN-Net高3.9%。這個實驗表明GBD-Net和多域方法是互補的。

五.結論

這篇文章中,作者提出了一個雙向門控CNN(GBD-Net)來做目標檢測。在這個網路中,在雙向結構中不同解析度和支援域的特徵彼此傳遞資訊以驗證彼此的存在,在利用門函式來控制資訊傳遞的速率。這個GBD-Net被設計為一般的層,可以被任意結構引用,也可以放在任何卷積層之後來使用不同解析度和支援域的特徵之間的關係。

有三個問題:

1.類別y到底是一個數還是一個什麼  如何用y表示類別

2.p為什麼取-0.2,0.2,0.8,1.7這四個數,為什麼不取對稱的數呢

3.這個網路怎樣進行SGD,反向傳播怎麼進行