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