黃國新,梁斌斌,張建偉
(1.四川大學(xué)視覺合成圖形圖像技術(shù)國防重點學(xué)科實驗室,成都610065;2.四川大學(xué)空天科學(xué)與工程學(xué)院,成都610065;3.四川川大智勝軟件股份有限公司,成都 610045)
監(jiān)控視頻中目標(biāo)檢測系統(tǒng)基本覆蓋人類生活的各方各面,不論是在出行還是生活住宿中,都保障人們正常生活的安全有序。特別是在大型機場等人員流動量大,人員密度高的社會場景中,尤其需要通過目標(biāo)檢測來保障大眾安全。但是,由于飛機場面地理和環(huán)境限制,監(jiān)控探頭通常距離地面較遠(yuǎn),導(dǎo)致場面上的工作人員,牽引車等目標(biāo),在圖像中很小,甚至只有十幾個像素大小。
在最開始的YOLO[1]算法中,由于直接在原圖上進行劃分7×7 的格子進行預(yù)測,并且假定每個網(wǎng)格只包含一個物體,導(dǎo)致YOLO 算法先天性對小目標(biāo)不敏感。在后來的YOLOv2[2]中,加入批正則化[3]層,多尺度訓(xùn)練使得YOLOv2 算法較之前對于小目標(biāo)有更好的檢測效果。隨后在劉偉等人提出SSD[4]算法中,使用前期分辨率較高的淺層卷積特征圖來預(yù)測較小的目標(biāo),在深層的特征圖中預(yù)測大目標(biāo)。小目標(biāo)在淺層卷積網(wǎng)絡(luò)中通常具有較好的細(xì)節(jié)信息,而隨著網(wǎng)絡(luò)層增加,在深層的特征圖中這些細(xì)節(jié)信息很容易丟失。為此,Li 等人研究提出了膨脹卷積[5-7]等技巧。但是前期的網(wǎng)絡(luò)層中目標(biāo)的語意信息不夠豐富,使得簡單進行目標(biāo)檢測效果并不是很好。深層的卷積網(wǎng)絡(luò)特征雖然語意信息豐富,但是由于小目標(biāo)占比太小,在進行位置回歸時很難有較為準(zhǔn)確的定位。我們使用兩階段的檢測精度較高的Faster R-CNN[8]和端到端網(wǎng)絡(luò)檢測速度較快的SSD 進行實驗,發(fā)現(xiàn)上述方法對目標(biāo)像素值較大物體,例如飛機等目標(biāo)都有較好的AP 值,但在對于小像素值目標(biāo)的檢測上,存在明顯的漏檢和誤檢。
已有研究表明[9-11]圖像分辨率對于目標(biāo)檢測有相當(dāng)大的影響,特別是在小目標(biāo)檢測方面。針對機場場面環(huán)境小目標(biāo)的檢測,我們提出一種統(tǒng)一的端到端的檢測網(wǎng)絡(luò)。本文的主要貢獻可以概況為以下三個方面:
(1)提出一個端到端的目標(biāo)檢測網(wǎng)絡(luò),主要用于提升遠(yuǎn)場小目標(biāo)檢測效果;
(2)提出保持分辨率卷積網(wǎng)絡(luò)模塊,用以保存小目標(biāo)的特征和語義信息;
(3)在進行上采樣與淺層特征進行信息融合時,使用pixelshuffle 操作替換傳統(tǒng)的雙線性插值,使用基于學(xué)習(xí)的上采樣方式,提升網(wǎng)絡(luò)的魯棒性和準(zhǔn)確性。
目標(biāo)檢測自DCNN[12]提出以后,被廣泛應(yīng)用于機器人視覺、消費電子、智能視頻監(jiān)視等人工智能和信息技術(shù)領(lǐng)域。早期目標(biāo)檢測模型主要是基于外觀特征的統(tǒng)計分類器,例如SVM、AdaBoost。后來的各種計算機視覺任務(wù)的核心進展基本都是基于本地描述子的使用,例如Haar、HOG、LBP 等。其中使用基于手工特征的DPM[13]是其中的一個比較具有代表性的目標(biāo)檢測器。但是基于手工特征目標(biāo)檢測算法,由于滑動窗口的區(qū)域選擇策略沒有針對性,時間復(fù)雜度高,窗口比較冗余。在變化較大的場景中,手工設(shè)計特征對于多樣性的變化沒有很好的魯棒性?;陔S著近年來深度學(xué)習(xí)的發(fā)展,基于深度學(xué)習(xí)的目標(biāo)檢測器采用卷積神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu),得到了巨大的發(fā)展。Girshick 等人提出的Re?gion based CNN 的目標(biāo)檢測器開創(chuàng)了兩步檢測器的先河。使用選擇性搜索在原始圖像中確定上千個候選框后輸入到CNN 中進行特征的提取,但是在提取特征前需要將每個候選框縮放至相同的大小。然后將CNN對候選框提取出來的特征使用分類器判定屬于某一個特定類,最后將屬于某一特征的候選框用回歸器進一步的微調(diào)其位置。雖然RCNN 采用了選擇性搜索作為潛在的bounding box 輸入,但是仍然會在CNN 提取特征時會有重復(fù)的計算,F(xiàn)ast R-CNN[14]就是為了解決這個問題而誕生。使用共享卷積層,此時并不將每一個候選框當(dāng)作單獨的輸入傳輸?shù)紺NN 中,而是先輸入這張完整的圖片,在第五卷積層再得到每個候選框的特征。這種做法在一定程度上提高檢測速度。在提出Fast R-CNN 不久后,為了進一步的加快檢測速度,F(xiàn)aster R-CNN 提出區(qū)域建議網(wǎng)絡(luò)(RPN),取代以前的選擇性搜索,大大的加快了檢測速度,成為了第一個接近實時的深度學(xué)習(xí)檢測器(17fps+ZFNet)。盡管Fast?er R-CNN 在速度與精度上做了較好的平衡,但是最近的研究工作發(fā)現(xiàn)在后續(xù)的檢測階段仍然存在冗余的計算。由此,提出了RFCN[15]、Light Head RCNN[16]通過共享計算更多的層以達到更快的速度。
YOLO 的提出使得基于回歸的單次目標(biāo)檢測器大方光彩,能夠在與兩步檢測器相差不多的精度情況下,檢測速度遠(yuǎn)超實時,達到了155fps。該網(wǎng)絡(luò)直接拋棄了區(qū)域提名加分類回歸的檢測范式,使用單一網(wǎng)絡(luò)將目標(biāo)檢測問題巧妙的轉(zhuǎn)化為了回歸問題,對原圖進行分割,劃分多個區(qū)域,直接在這些區(qū)域中同時預(yù)測bounding box 及其概率。開啟了基于深度學(xué)習(xí)的單步目標(biāo)檢測器先河。但是由于直接在原圖上進行7×7 大小的區(qū)域分割,導(dǎo)致其給定的區(qū)域非常粗糙,并且先驗性的假定每個區(qū)域至多包含一個目標(biāo),所以YOLO 對于小目標(biāo)的檢測,有著算法本身的劣勢和缺點。隨后Liu 等人為了改進這一缺點提出SSD,使用在不同尺度下預(yù)測不同大小目標(biāo)的思想,在網(wǎng)絡(luò)的淺層預(yù)測較小的目標(biāo),在網(wǎng)絡(luò)較深層中預(yù)測比較大的目標(biāo)。SSD 在VOC2007 數(shù)據(jù)集上取得了74.3%的mAP,并且使用titan X 的情況下幀率可以達到59fps。但并不是無限在卷積網(wǎng)絡(luò)的淺層進行檢測就可以提升小目標(biāo)被檢率,雖然在網(wǎng)絡(luò)的淺層部分具有很好的細(xì)節(jié)信息,但是由于所包含的語義信息不夠豐富,無法區(qū)分該目標(biāo)是“馬腿”還是“樹干”。為了使在前期網(wǎng)絡(luò)層中包含的豐富的細(xì)節(jié)信息,傳遞到深層網(wǎng)絡(luò)而不被抹掉,提出膨脹卷積或叫空洞卷積。膨脹卷積在不需要做池化操作損失信息的情況下,加大了感受野,讓每個卷積輸出都包含較大范圍的信息。但是假設(shè)多次疊加膨脹率為2 的3×3 大小的卷積核進行卷積操作,會發(fā)現(xiàn)卷積核并不連續(xù),也就是不是所有的像素都用來計算了。從感受野較大的較晚的層中檢測大目標(biāo)和使用感受野較小的較早的層來檢測小目標(biāo)是很符合人類直觀感受的。但是正如上述所說,淺層網(wǎng)絡(luò)的語義信息較少,簡單的直接檢測效果并不好。所以為了綜合淺層和深層各自的優(yōu)點,提出了融合網(wǎng)絡(luò)特征層的方法。早期的融合方法相對比較簡單,例如超列[17],通過將每層特征圖變換為相同大小后,把對應(yīng)像素的所有特征圖拼成一列,使用描述子來對每一列進行表述,達到分類的目標(biāo)。此時的目標(biāo)檢測效果并不理想,隨后Lin 等人提出了特征金字塔網(wǎng)絡(luò)(FPN)[18]。FPN 提出了一個具有橫向連接的自頂向下的網(wǎng)絡(luò)體系結(jié)構(gòu),來豐富任一一層的高級語義信息。通過將上層的特征圖等比例放大后與本層的特征圖進行元素相乘,再與自下而上對應(yīng)的特征圖進行通道融合,最后進行檢測。這種通用的特征提取方式,顯著的提升了目標(biāo)檢測精度特別是在小目標(biāo)上。使用Faster R-CNN 作為骨干網(wǎng)絡(luò),在COCO 數(shù)據(jù)集上取得了mAP@.5=59.1%的成績。
圖1 整體網(wǎng)絡(luò)圖
本節(jié)我們將介紹小目標(biāo)檢測的方法。我們從兩個方面來設(shè)計網(wǎng)絡(luò),首先,考慮保持小目標(biāo)信息特別是位置信息的特征提取網(wǎng)絡(luò)。其次,我們設(shè)計了完全基于學(xué)習(xí)的子網(wǎng)絡(luò)來減少上采樣過程中特征信息的丟失,這對于小目標(biāo)的檢測具有重要的意義。
總體來說,本文設(shè)計的特征提取網(wǎng)絡(luò)有三種不同的分辨率,最上面的分辨率最高,用來盡可能多地保存小對象的特征信息。高分辨率的特征信息從輸入就開始一直保存到最后。圖像的語義信息由卷積網(wǎng)絡(luò)表示,而特征圖的分辨率在卷積時通過填充邊緣以避免降低。在本文2.2 中詳細(xì)描述了保持分辨率模塊。每次生成新的低分辨率特征圖時,采用類似于特征金字塔網(wǎng)絡(luò)的操作,對不同分辨率下的所有已有的特征進行特征融合。根據(jù)神經(jīng)網(wǎng)絡(luò)設(shè)計的一般思路,當(dāng)特征圖的分辨率減小一倍時,對應(yīng)的通道數(shù)將增加一倍,反之亦然。例如,如圖1 所示,當(dāng)網(wǎng)絡(luò)準(zhǔn)備從第一層和第二層的特征圖生成第三層特征圖時,第一層特征圖的分辨率是將要生成的第三層特征圖分辨率的4 倍。而第二層的網(wǎng)絡(luò)特征圖分辨率是第三層的兩倍大小。然而,對于每層的通道數(shù)來說,情況正好相反。在進入保持分辨率模塊之前,通過卷積運算將特征圖的分辨率降低一半。但是,在保持分辨率模塊之間的連接時,不會降低分辨率。這種操作的主要原因是為了減少模型的參數(shù)和操作數(shù)量,從而達到更好的實時性。與目前流行的兩階段或多階段目標(biāo)檢測器不同,本文提出了一種單階段端到端目標(biāo)檢測器,因此從設(shè)計之初就沒有RPN 網(wǎng)絡(luò)與分類網(wǎng)絡(luò)相結(jié)合,而是在網(wǎng)絡(luò)末端直接回歸目標(biāo)位置和類別。受YOLO 的啟發(fā),將網(wǎng)絡(luò)的最后三個輸出放入檢測層。在每個輸出之前,為每個輸出設(shè)計三個錨點,然后在每個輸出特征圖中為每個網(wǎng)格預(yù)測三個邊界框。最后,通過邏輯回歸預(yù)測邊界框的偏移量。KR1 表示一個保持分辨率模塊,KR2 和KR4 分別表示兩個連續(xù)的保持分辨率模塊和四個連續(xù)的保持分辨率模塊。向下的連接線表示stride 2 的卷積運算,從第一層到第三層需要做兩次。上行代表pixelshuffle,它將第三層到第一層的分辨率提高了四倍。
保持分辨率模塊作為整個網(wǎng)絡(luò)體系結(jié)構(gòu)的重要組成部分,在表征特征信息和減少計算量方面發(fā)揮著重要作用,下面是對保持分辨率模塊的詳細(xì)說明。當(dāng)對特征圖進行卷積時,如果輸出大小等于輸入,那么需要特別設(shè)計卷積核的大小K,步長S 和填充P。假設(shè)輸入特征圖的大小為W×W,則輸出特征圖的大小為:
其中N 為輸出特征圖的大小。因此,當(dāng)卷積核K大小為3×3,填充P 為1,步長S 為1 時,輸出特征圖的大小與輸入相同。但是如果總是使用3×3 的卷積核就會增加模型的大小,增加計算量。然而,如果直接使用1×1 的卷積核進行卷積,則會造成感受野過小,提取的特征信息過于局部,導(dǎo)致特征圖所代表的圖像信息質(zhì)量下降。為了保持網(wǎng)絡(luò)結(jié)構(gòu)的高效性和高質(zhì)量,在進行3×3 卷積之前,我們使用1×1 的卷積核進行通道數(shù)調(diào)整。也就是說,減少了計算量,同時保持了特征信息的質(zhì)量。在每個保持分辨率模塊中,輸入與最終輸出會做一個元素相乘,防止梯度的爆炸或者消失。由于前期使用1×1 的卷積核進行降維,為了保持通道數(shù)不變,在進行元素相乘之前也使用1×1 的卷積核進行降維。
如圖2 所示是一個基本的單層保持分辨率模塊。保持分辨率模塊由三個卷積核組成,分別用來降低維數(shù)和提高維數(shù),用于提取特征和保持中間分辨率不變。單層分辨率保持模塊是一種中間沒有特征融合的模塊。而在后續(xù)的多層分辨率保持模塊中,在提取特征后,將在不同層之間進行特征融合。三層特征圖的分辨率呈倍數(shù)遞減,因此在進行特征融合時,提前對特征圖進行上采樣或下采樣。每一次向上采樣,特征圖的分辨率就增加一倍,通道的數(shù)量就減少一半。每向下采樣一次,特征圖的分辨率降低一半,通道數(shù)增加一倍。
圖2 單層保持分辨率模塊
多層保持分辨率模塊內(nèi)特征信息融合示意如圖3。不同于直接將三個單層的分辨率模塊疊加在一起,在提取出特征后,在不同分辨率之間進行特征融合,獲得更好的特征表示能力。
圖3 三層保持分辨率模塊
對低分辨率特征圖進行上采樣,與高分辨率特征圖進行元素相乘,是一種常用的特征融合方法。對于待檢測對象,其特征在低分辨率特征圖中具有較高的特征。特別是小的物體,在放大過程中稍有誤差就可能帶來很大的噪聲。因此,我們提出了一種基于神經(jīng)網(wǎng)絡(luò)的自學(xué)習(xí)采樣方法。與傳統(tǒng)的基于數(shù)學(xué)的雙線性插值和填充零相比,Pixelshuffle 更擅長于對特征信息進行向上采樣。Pixelshuffle 操作是利用大小為1×1 的卷積核,提前擴展通道數(shù)量,對重組后的特征圖進行放大。如果上采樣因子為r,則擴展的通道數(shù)為原始通道數(shù)的r2倍。但是如果不需要保持特征圖放大后的通道數(shù)量不變,那么就不需要預(yù)先提升維度。在這種情況下,原始的通道數(shù)必須可以被上采樣因子的平方整除。在具體的采樣操作中,首先將低分辨率地形圖分成r 個部分。在生成第i 個高分辨率特征圖時,取每個低分辨率特征圖部分的第i 個通道,根據(jù)上采樣因子r將它們組合起來。通道從前到后排序,從小到大依次提取。在第一通道中,將原始像素位置與上采樣因子r相乘,得到所填充像素對應(yīng)的高分辨率特征圖的位置。然后,將剩余通道的像素按照先形成列再形成行的方式進行組合,生成高分辨率的特征圖。同樣的操作,完成所有剩余通道的采樣,完成整個基于學(xué)習(xí)的特征圖上采樣。與其他上采樣方法相比,我們使用卷積網(wǎng)絡(luò)通過基于重組的學(xué)習(xí)來獲得高分辨率的特征圖,可以減少人為放大特征所帶來的噪聲影響,并能盡可能地保持和放大小目標(biāo)的語義信息。它為后續(xù)的目標(biāo)檢測提供了更健壯的語義信息。
圖4 pixelshuffle操作
如圖4 所示是一個使用Pixelshuffle 的簡單例子。一個從8×8×256 到16×16×64 的特征圖采樣過程。從64 個通道的每個通道中提取相同位置的像素點,根據(jù)偏移量進行組合,形成圖4 右側(cè)的放大特征圖。依據(jù)上述說明的規(guī)則,高分辨率特征圖的第9 個通道由低分辨率特征圖的第9,73,137 和201 四個通道組成。
在這一部分,我們首先介紹了自建機場地面數(shù)據(jù)集,并分析了其特點。接著使用其他目標(biāo)檢測方法與本文方法進行對比實驗,最后分析了實驗結(jié)果。
通過在不同的機場航站樓和塔臺設(shè)置相機進行拍照,組成了共含有4009 張圖像的機場場面數(shù)據(jù)集,圖片分辨率分別為960×544 和1920×1080。由于缺乏像素級的標(biāo)注記錄,航空器、車輛、人員均統(tǒng)一標(biāo)注為矩形框。通過對數(shù)據(jù)集注釋信息的統(tǒng)計,同一類的對象包含不同的大小和比例,不同類的對象大小和比例差異很大。統(tǒng)計樣本大小和長寬比比例見表1。三類目標(biāo)的物理形狀和體積是完全不同的。這和機場場面相對比較空曠,以及相機的安裝角度有關(guān),相機被安裝在一個相對固定的位置(航站樓、塔臺等地方)有一個很大的成像角度,從而導(dǎo)致不同的分辨率和攝像機位姿情況下,圖像中相同目標(biāo)的大小和比例具有較大的差別。
表1 機場場面數(shù)據(jù)集目標(biāo)尺寸比例分析
通過使用機場數(shù)據(jù)集進行訓(xùn)練和測試,在CPU 為Intel i7 8700K,顯卡為1080ti 的情況下,本文方法取得了64.7%的mAP 值。對比其他兩種算法SSD 和Fast?er R-CNN 分別取得了7.7%和4.6%的mAP 提升,并且在保持精度最高的同時,還能在速度上達到每秒45幀,遠(yuǎn)超實時處理。表2 詳細(xì)的說明了本文方法與其他算法在機場場面數(shù)據(jù)集上的檢測精度。
表2 不同檢測方法在機場數(shù)據(jù)集上的精度對比
圖5 和圖6 是使用本文方法和SSD 算法的檢測結(jié)果圖,可以看見在SSD 算法中有部分的人員和車輛等小目標(biāo)被漏檢了,而本文方法能夠正確地識別出這些小目標(biāo)。
圖5 SSD檢測效果圖
圖6 本文方法檢測效果圖
本文設(shè)計了一個保持高分辨率網(wǎng)絡(luò),替換傳統(tǒng)的雙線性插值上采樣為pixelshuffle 操作并將其融入到目標(biāo)檢測網(wǎng)絡(luò)中,在速度和檢測精度上均取得了較好的實驗結(jié)果。特別是對于機場場面的小目標(biāo),本文的檢測方法有相對較大幅度的提升。但是,本文也存在進一步改進的空間,首先是數(shù)據(jù)集的增廣,目前本文數(shù)據(jù)集還不到上萬張,還可以繼續(xù)擴大數(shù)據(jù)集進行訓(xùn)練;其次,為了進一步加強對小目標(biāo)的檢測效果,可以對網(wǎng)絡(luò)進行再次的加深,以提升精度。