袁慧敏,張緒紅
(廣東技術(shù)師范大學(xué) 自動(dòng)化學(xué)院,廣東 廣州 510000)
當(dāng)今社會(huì),圖像處理已成為廣泛的探索領(lǐng)域,主要包含以下幾個(gè)方面:圖像的數(shù)字化處理、圖像的標(biāo)準(zhǔn)變換、圖像的效果增強(qiáng)、恢復(fù)、分割、特征的識(shí)別等等[1]。本文主要討論圖像識(shí)別的相關(guān)內(nèi)容,圖像識(shí)別是指計(jì)算機(jī)視覺(jué)、自然語(yǔ)言處理以及AI的三大熱點(diǎn)方向。目標(biāo)檢測(cè)和識(shí)別就是物體的檢測(cè)識(shí)別。首先,檢測(cè)是視覺(jué)感知的第一步,它可以在圖像中搜索出某一目標(biāo),而目標(biāo)識(shí)別可以理解為是圖像的分類(lèi),用來(lái)確定在圖像塊中找到目標(biāo)的具體類(lèi)別。
計(jì)算機(jī)視覺(jué)的一個(gè)重要任務(wù)是目標(biāo)檢測(cè),主要用于在數(shù)字圖像中檢測(cè)特定類(lèi)別的視覺(jué),判斷圖像中有沒(méi)有來(lái)自給定類(lèi)別(如植物,動(dòng)物,交通工具等等)的對(duì)象實(shí)例,目標(biāo)檢測(cè)是復(fù)雜或高級(jí)視覺(jué)任務(wù)的基礎(chǔ),如圖像分割、目標(biāo)跟蹤、事件檢測(cè)和活動(dòng)識(shí)別[2]。廣泛應(yīng)用于物體表面的缺陷檢測(cè)、人臉檢測(cè)、行人檢測(cè)等領(lǐng)域。當(dāng)今時(shí)代,深度學(xué)習(xí)技術(shù)的發(fā)展?jié)u漸成為主流,人們廣泛關(guān)注于基于卷積神經(jīng)網(wǎng)絡(luò)的目標(biāo)檢測(cè)算法,出現(xiàn)了很多結(jié)構(gòu)簡(jiǎn)單,運(yùn)行效率高的網(wǎng)絡(luò)模型,使得這些算法能得到大規(guī)模應(yīng)用,然而對(duì)于目標(biāo)檢測(cè)的難點(diǎn),國(guó)內(nèi)外的研究者們提出了很多解決方案并做了大量嘗試。比如,Itti等人構(gòu)建了選擇性注意機(jī)制來(lái)提取圖像中的顯著區(qū)域[3];Viola和Jones等提出級(jí)聯(lián)檢測(cè)器框架并成功應(yīng)用于人臉檢測(cè)[4];Navneet 等人則提出Hog和SVM結(jié)合使用的思想,Hog被用來(lái)進(jìn)行圖像特征提取,線性SVM被用作分類(lèi)器,從而實(shí)現(xiàn)行人檢測(cè)[5,6];Felzenszwalb等人提出一種基于部件的檢測(cè)方法DPM,對(duì)目標(biāo)的形變具有很強(qiáng)的魯棒性[7-9]。不過(guò)在經(jīng)歷了許多年的研究發(fā)展之后,最先進(jìn)的目標(biāo)檢測(cè)系統(tǒng)已與多種不同的技術(shù)組合在了一起,例如多尺度檢測(cè),上下文啟動(dòng),邊界框回歸等[7]。
本文第二節(jié)對(duì)目標(biāo)檢測(cè)流程進(jìn)行了介紹,第三節(jié)主要針對(duì)目標(biāo)檢測(cè)算法的種類(lèi)及其結(jié)構(gòu)進(jìn)行介紹,最后一節(jié)提出了對(duì)算法的展望。
目標(biāo)檢測(cè)主要涵蓋了兩個(gè)主要部分,目標(biāo)位置確定和目標(biāo)分類(lèi)任務(wù),它使用圖像處理方法,機(jī)器學(xué)習(xí)和其他多方向知識(shí)從圖像中定位感興趣對(duì)象[10],其中待檢測(cè)區(qū)域候選框的特征提取和候選區(qū)域的特征識(shí)別是檢測(cè)過(guò)程中的難點(diǎn),目標(biāo)檢測(cè)流程的具體思路如圖1所示,大致分為三個(gè)主要步驟,分別是圖像的區(qū)域選擇、圖像的特征提取和圖像分類(lèi),接著就是對(duì)圖像進(jìn)行邊框回歸,對(duì)獲得的結(jié)果進(jìn)行優(yōu)化,最后完成目標(biāo)檢測(cè)。首先,對(duì)圖像中可能的目標(biāo)位置提議,提出一些可能包含目標(biāo)的候選區(qū)域,然后使用適當(dāng)?shù)脑啬P蛠?lái)獲取元素的表示,最后一步是使用形如支持向量機(jī)一樣的圖像分類(lèi)器來(lái)判斷特定的目標(biāo)類(lèi)型有沒(méi)有包含再每個(gè)區(qū)域當(dāng)中,并通過(guò)一些后處理操作,例如NMS,邊界位置回歸等[11]進(jìn)行完善。
圖1 目標(biāo)檢測(cè)的基本流程
一般認(rèn)為,目標(biāo)檢測(cè)的發(fā)展歷程大致經(jīng)歷了兩個(gè)關(guān)鍵的時(shí)期,我們把這兩個(gè)時(shí)期稱(chēng)之為是基于傳統(tǒng)方法的目標(biāo)檢測(cè)時(shí)期和基于深度學(xué)習(xí)的目標(biāo)檢測(cè)時(shí)期[12],圖2向我們展示了目標(biāo)檢測(cè)算法的分類(lèi)。
圖2 目標(biāo)檢測(cè)算法種類(lèi)
本小節(jié)中我們主要討論的是與深度學(xué)習(xí)相關(guān)的目標(biāo)檢測(cè)算法,主要分為兩類(lèi),一階段和兩階段。前者首先通過(guò)算法生成一系列候選框作為樣本,然后通過(guò)卷積神經(jīng)網(wǎng)絡(luò)對(duì)樣本進(jìn)行分類(lèi),比如R-CNN算法、Fast R-CNN算法、Faster R-CNN算法等。后者則省去了生成候選幀的步驟,直接將目標(biāo)幀的定位問(wèn)題轉(zhuǎn)化為回歸問(wèn)題進(jìn)行下一步的處理。
R-CNN算法是Ross等人在2014年提出的基于區(qū)域的卷積神經(jīng)網(wǎng)絡(luò)方法,已成為基于區(qū)域提議的典型識(shí)別方案,全名是Region-cnn,它的偉大之處在于它是第一個(gè)將深度學(xué)習(xí)方法應(yīng)用于目標(biāo)檢測(cè)中的算法[14]。以前,大多數(shù)傳統(tǒng)的目標(biāo)檢測(cè)方法都是基于圖像識(shí)別,通常是通過(guò)在圖像上使用一一列舉的方式來(lái)選擇對(duì)象所有可能的區(qū)域范圍,并且可以通過(guò)使用圖像識(shí)別方法來(lái)提取和分類(lèi)這些區(qū)域框的特征,在獲得所有成功分類(lèi)的區(qū)域后,通過(guò)非極大值抑制(NMS)輸出結(jié)果。
圖4 Fast R-CNN結(jié)構(gòu)
快速R-CNN的網(wǎng)絡(luò)結(jié)構(gòu)如圖4所示,它的輸入主要由兩部分組成,首先將想要處理的圖像送入到卷積神經(jīng)網(wǎng)絡(luò)當(dāng)中;其次是形成一組建議區(qū)域,我們把這組區(qū)域稱(chēng)之為候選區(qū)域。
圖3 R-CNN結(jié)構(gòu)
R-CNN[15]背后的思想很簡(jiǎn)單,依然參考了傳統(tǒng)的目標(biāo)檢測(cè)算法的思想,先進(jìn)行候選區(qū)域的提取,提取完成之后再對(duì)每個(gè)候選框提取顯著的特征,再進(jìn)行分類(lèi)以及后續(xù)處理等等。具體如圖3所示,在提取特征這一步,算法通過(guò)選擇性搜索方法[18]提取一組對(duì)象候選框,大約生成兩千個(gè)候選區(qū)域,然后每個(gè)提議被重新調(diào)整為一個(gè)特定大小的圖像,再送到一個(gè)在ImageNet上訓(xùn)練的卷積網(wǎng)絡(luò)模型中以提取特征。這里所講的卷積網(wǎng)絡(luò)模型架構(gòu)我們有兩個(gè)可選方案,第一是選擇經(jīng)典的Alexnet網(wǎng)絡(luò)[16];第二選擇VGG16網(wǎng)絡(luò)[17],VGG網(wǎng)絡(luò)模型具有卷積核小、跨度小且網(wǎng)絡(luò)精度高的優(yōu)點(diǎn),不足是計(jì)算量太大。可以根據(jù)需要進(jìn)行選取,選好網(wǎng)絡(luò)模型后使用線性支持向量機(jī)分類(lèi)器預(yù)測(cè)每個(gè)區(qū)域內(nèi)對(duì)象的存在并識(shí)別對(duì)象類(lèi)別。
Fast R-CNN的提出者Girshick由于受到R-CNN和SPPNet的啟發(fā),在2015年提出了Fast R-CNN 目標(biāo)檢測(cè)算法,首次實(shí)現(xiàn)了端到端(end-to-end)訓(xùn)練,該算法采用了很多的創(chuàng)新技術(shù)來(lái)同時(shí)提高訓(xùn)練和測(cè)試速度以及檢測(cè)精度,與R-CNN相比,經(jīng)過(guò)非常深入的Fast R-CNN訓(xùn)練的VGG16網(wǎng)絡(luò)使得存儲(chǔ)空間也大大減少,而且相對(duì)于R-CNN運(yùn)行的速度也有較快提升,因此被稱(chēng)為Fast R-CNN,也即快速R-CNN。該算法要處理的第一步是要獲取卷積特征圖,但是因?yàn)樘崛〕龅暮蜻x區(qū)域數(shù)量較多,系統(tǒng)必須要對(duì)其篩選出感興趣的區(qū)域(ROI)。RoI池化層是空間金字塔池化層(SSP)的特殊情況,它可以從特征圖的映射當(dāng)中提取一個(gè)固定長(zhǎng)度的特征向量。這些固定長(zhǎng)度的特征向量都會(huì)被輸送到全連接(FC)層序列中,這個(gè)全連接層在同一層被分成兩個(gè)輸出層,其中一個(gè)輸出層的作用是進(jìn)行圖像的分類(lèi),對(duì)目標(biāo)關(guān)于K個(gè)對(duì)象類(lèi)(包括全部“背景”類(lèi))輸出每一個(gè)感興趣區(qū)域(ROI)的概率分布,也就是產(chǎn)生softmax概率估計(jì),分類(lèi)的損失函數(shù)如(1):
另一個(gè)輸出層是為K個(gè)對(duì)象中的每一個(gè)類(lèi)別輸出4個(gè)實(shí)數(shù)的值(bbox回歸),說(shuō)你是函數(shù)如式(3):
每四個(gè)值編碼每一個(gè)K類(lèi)的精確邊界框位置,整個(gè)網(wǎng)絡(luò)結(jié)構(gòu)的端到端訓(xùn)練是利用多任務(wù)損失來(lái)進(jìn)行的[18]。
2015年,Kaiming He, Ross Girshick等人提出了著名的Faster R-CNN算法,這種方法至今仍是精確度最高的算法之一,它相比于以前眾多算法的一個(gè)創(chuàng)新點(diǎn)就是該算法利用了一個(gè)小型的區(qū)域提議網(wǎng)絡(luò)(RPN,Region Proposal Network)取代了之前傳統(tǒng)的選擇性搜索算法(SS)[19,20],這個(gè)新的提議網(wǎng)絡(luò)大量減少了提議框的數(shù)量,從而提高了圖像的處理速度。更快 R-CNN算法的總體結(jié)構(gòu)大致由兩個(gè)模塊所組成,第1個(gè)模塊是構(gòu)建出區(qū)域的深度全卷積網(wǎng)絡(luò),第2個(gè)模塊是利用該區(qū)域的快速R-CNN檢測(cè)器。更快的R-CNN是第一個(gè)端到端的,也是第一個(gè)接近實(shí)時(shí)的深度學(xué)習(xí)檢測(cè)器。具體的結(jié)構(gòu)如圖5所示:
圖5 Faster R-CNN結(jié)構(gòu)圖
首先,先將自己要測(cè)試的目標(biāo)圖像進(jìn)行輸入,輸入到一個(gè)卷積神經(jīng)網(wǎng)絡(luò)當(dāng)中目的是想要提取圖像的各種特征,之后利用小型的區(qū)域提議網(wǎng)絡(luò)RPN來(lái)產(chǎn)生許多個(gè)錨盒,對(duì)這些錨盒進(jìn)行篩選之后再使用Softmax分類(lèi)器來(lái)對(duì)它們進(jìn)行分類(lèi)判斷是屬于前景還是屬于后景,我們可以把這稱(chēng)為是一個(gè)兩分類(lèi)的問(wèn)題,與此同時(shí)另一條分支是通過(guò)邊界框回歸來(lái)修正錨盒,再把建議窗口映射到卷積網(wǎng)絡(luò)的最后一層特征圖上,通過(guò)感興趣區(qū)域池化層生成固定尺寸的特征圖,最后再利用Softmax Loss(探測(cè)分類(lèi)概率)和Smooth L1 Loss(探測(cè)邊框回歸)對(duì)分類(lèi)概率和邊框回歸進(jìn)行聯(lián)合訓(xùn)練[21]。
SSD算法是Single Shot MultiBox Detector的縮寫(xiě),中文名是單點(diǎn)多盒檢測(cè)器,是Szegedy等人在2016年提出。該算法將邊界框的輸出空間離散化為默認(rèn)框,這些默認(rèn)框在每個(gè)特征圖的位置上具有不同的大小和高寬比。在預(yù)測(cè)期間,該網(wǎng)絡(luò)為每個(gè)默認(rèn)框產(chǎn)生該框?qū)儆诿糠N物體類(lèi)別的分?jǐn)?shù),同時(shí)調(diào)整邊界框使得它更能匹配物體的形狀。另外,為了自然地處理大小不同的目標(biāo),該網(wǎng)絡(luò)把多層不同分辨率的特征圖都結(jié)合在一起。
SSD算法是一個(gè)基于深度卷積神經(jīng)網(wǎng)絡(luò)的檢測(cè)器,無(wú)需重采樣像素或者假設(shè)框的特征,跟那些需要這些步驟的方法達(dá)到了同樣的精度。這使得該網(wǎng)絡(luò)在速度上有很大的提升,而且有很高的檢測(cè)準(zhǔn)確率。
圖6是SSD算法的網(wǎng)絡(luò)結(jié)構(gòu),該方法基于一個(gè)前向卷積網(wǎng)絡(luò),產(chǎn)生一個(gè)固定大小的邊界框集合和在這些邊界框里各目標(biāo)類(lèi)別出現(xiàn)的分?jǐn)?shù),隨后采用一個(gè)非極大值抑制步驟產(chǎn)生最后的檢測(cè)結(jié)果。基礎(chǔ)網(wǎng)絡(luò)使用了VGG16的網(wǎng)絡(luò)結(jié)構(gòu),然后通過(guò)對(duì)基礎(chǔ)網(wǎng)絡(luò)的改進(jìn),增加了幾個(gè)不同大小的卷積層來(lái)進(jìn)行不同尺度特征圖的提取,在提取不同特征圖的方法上主要通過(guò)下采樣的方式進(jìn)行尺寸的變化[22]。所謂的預(yù)測(cè)網(wǎng)絡(luò)還包括prior box層的提取過(guò)程,也等同于R-CNN中的錨盒。提取過(guò)程以特征圖的每個(gè)單位點(diǎn)為中心,通過(guò)等比法求出其在原始圖像中的位置,并以該點(diǎn)為中心提取各種邊界框,每一個(gè)prior box都會(huì)分別預(yù)測(cè)相應(yīng)的類(lèi)別概率和坐標(biāo)值。每個(gè)特征圖中的點(diǎn)都會(huì)對(duì)應(yīng)不同的prior box。
通過(guò)以上介紹,我們了解了不同算法的網(wǎng)絡(luò)結(jié)構(gòu),下面針對(duì)這幾種算法的運(yùn)算速度、訓(xùn)練精度、不足等進(jìn)行一個(gè)比較,具體內(nèi)容如表1所示。
圖6 SSD結(jié)構(gòu)
表1 算法比較
Faster R-CNN計(jì)算量較大,速度較慢1、PASCAL VOC 2007測(cè)試集上實(shí)現(xiàn)了 69.9% 的 mAP;2、PASCAL VOC 2012測(cè)試集上實(shí)現(xiàn)了67%的mAP。1、實(shí)現(xiàn)端到端的目標(biāo)檢測(cè)框架;2、 采 用RPN網(wǎng)絡(luò)加快了建議框的生成速度。無(wú)法達(dá)到實(shí)時(shí)檢測(cè)目標(biāo)的效果,獲取區(qū)域提議,再對(duì)每個(gè)提議進(jìn)行分類(lèi)的計(jì)算量還是比較大。SSD運(yùn)行速度快,訓(xùn)練的精度超過(guò)Faster R-CNN 1、PASCAL VOC 2007的SSD300中07測(cè)試集上實(shí)現(xiàn)了68%的mAP;2、PASCAL VOC 2012的SSD300中07++12測(cè)試集上實(shí) 現(xiàn) 了72.4%的mAP。消除了提議生成和隨后的像素或特征重采樣階段,并將所有計(jì)算封裝在一個(gè)單一的網(wǎng)絡(luò)中。1、需人工設(shè)置默認(rèn)值的初始尺度和長(zhǎng)寬比的值;2、網(wǎng)絡(luò)中每一層 特征使用的默認(rèn)值大小和形狀都不一樣。
本文系統(tǒng)的闡述了近這幾年來(lái)目標(biāo)檢測(cè)領(lǐng)域的研究進(jìn)展,隨著強(qiáng)大計(jì)算設(shè)備的不斷升級(jí),基于深度學(xué)習(xí)的目標(biāo)檢測(cè)技術(shù)得到了迅速發(fā)展,是目前目標(biāo)檢測(cè)領(lǐng)域的一項(xiàng)里程碑。目標(biāo)檢測(cè)至今仍然是計(jì)算機(jī)視覺(jué)領(lǐng)域中人們感興趣的話題,雖然單級(jí)和二級(jí)的目標(biāo)檢測(cè)算法都取得了令人滿意的效果,但是每個(gè)算法還是各有所長(zhǎng),很難有一個(gè)算法既可以實(shí)現(xiàn)精度的要求又能滿足速度的加快,也就是說(shuō)每個(gè)算法之間都是互補(bǔ)的,各有利弊。其次,對(duì)于是否廣泛的應(yīng)用于真實(shí)場(chǎng)景下還有一段距離,目前技術(shù)來(lái)看實(shí)時(shí)性還不夠強(qiáng),所以目標(biāo)檢測(cè)這一基本任務(wù)仍然是非常具有挑戰(zhàn)性的課題,有很大的發(fā)展空間。