付苗苗,鄧淼磊,張德賢
1(河南工業(yè)大學(xué) 信息科學(xué)與工程學(xué)院,鄭州 450001)
2(河南省糧食信息處理國際聯(lián)合實(shí)驗(yàn)室,鄭州 450001)
目標(biāo)檢測是圖像分類的自然延伸,其目的只是識別圖像中的目標(biāo). 目標(biāo)檢測的目的是檢測預(yù)定義類的所有實(shí)例,并通過軸對齊的框提供其在圖像中的粗略定位. 檢測器除了能夠識別對象類的所有實(shí)例,還要在其周圍繪制邊界框. 它通常被視為一個(gè)有監(jiān)督的學(xué)習(xí)問題. 現(xiàn)代目標(biāo)檢測模型可以訪問大量標(biāo)記圖像進(jìn)行訓(xùn)練,并在各種標(biāo)準(zhǔn)基準(zhǔn)上進(jìn)行評估. 目標(biāo)檢測主要是確定圖像中哪些位置有對象,這些對象分屬什么類別.對于人來說,實(shí)現(xiàn)這樣的任務(wù)輕而易舉,就算是幾個(gè)月大的小孩也可以識別一些常見的物體,然而對于計(jì)算機(jī)來說這幾乎是一項(xiàng)不可能完成的任務(wù). 盡管教計(jì)算機(jī)定位和識別視野內(nèi)的實(shí)例對象很艱難,但是在過去20 年里,我們還是通過一些方法教會了計(jì)算機(jī)對圖像里的物體進(jìn)行定位和識別,在很多大型的圖像數(shù)據(jù)集上也取得了一些不錯(cuò)的結(jié)果.
早期對目標(biāo)檢測進(jìn)行研究時(shí),由于算力資源的緊張,通常對數(shù)據(jù)進(jìn)行復(fù)雜的特征設(shè)計(jì),使用各種機(jī)器學(xué)習(xí)算法對圖像處理進(jìn)行分功能設(shè)計(jì),然后進(jìn)行聯(lián)合訓(xùn)練. 傳統(tǒng)算法對于物體的檢測通常分為輸入圖像、區(qū)域選取、提取特征、分類器、后處理以及最終檢測結(jié)果這6 個(gè)階段,操作流程圖如圖1 所示.
圖1 傳統(tǒng)目標(biāo)檢測流程
首先對輸入的圖像進(jìn)行區(qū)域選擇,主要使用滑動窗口(sliding windows)等方式對整個(gè)圖像進(jìn)行搜索,目的是選擇出可能含有目標(biāo)的位置. 其次需要對挑選出來的目標(biāo)可能存在區(qū)域進(jìn)行特征提取,主要通過HOG(histogram of oriented gradient)、LBP (local binary pattern)及SIFT (scale-invariant feature transform)等手工設(shè)計(jì)特征的方式,目的是提取圖像的紋理、尺度和空間變換特征. 然后使用支持向量機(jī)SVM (support vector machine)[1]、AdaBoost 等分類算法對圖像中提取的特征向量進(jìn)行訓(xùn)練. 最后,通過NMS (non-maximum suppression)[2]后處理算法基于指定閾值進(jìn)行預(yù)測框篩選,得到最終的檢測結(jié)果.
傳統(tǒng)目標(biāo)檢測的研究早在上世紀(jì)就已經(jīng)開始展開,1998 年P(guān)apageorgiou 等人[3]提出了針對靜態(tài)圖像處理從而推廣到目標(biāo)檢測通用處理結(jié)構(gòu),該結(jié)構(gòu)直接從圖像中學(xué)習(xí)Haar 特征,然后使用SVM 對提取特征進(jìn)行分類學(xué)習(xí). 2001 年Viola 等人提出VJ 檢測器[4],首先對圖像區(qū)域進(jìn)行滑動窗口選擇感興趣區(qū)域,之后提取每個(gè)窗口其中的Haar 特征,以積分圖計(jì)算進(jìn)行特征選擇,最后用級聯(lián)方式訓(xùn)練分類器,可以得到具有魯棒性的實(shí)時(shí)人臉檢測算法. 第一次在人臉檢測上達(dá)到了實(shí)時(shí)檢測效果(沒有任何約束條件),在同等精度下其速度比任何其他算法都要快幾十倍甚至幾百倍.
2004年Lowe 等人設(shè)計(jì)了尺度不變特征交換SIFT[5],通過對圖像區(qū)域進(jìn)行梯度信息描述來得到特征,該提取特征在面對光線變化、角度偏移及圖像噪聲等現(xiàn)象可以保持檢測的魯棒性. 2005 年Dalal 等人設(shè)計(jì)了定向梯度直方圖方法HOG[6],他們認(rèn)為圖像局部區(qū)域內(nèi)物體可以被梯度信息來很好描述,這樣提取的特征可以得到不錯(cuò)的效果. 2010 年Felzenszwalb 等人提出DPM (deformable part model)算法[7],其將HOG 和SVM 相結(jié)合,利用了多種優(yōu)秀的手工特征組件進(jìn)行聯(lián)合訓(xùn)練的目標(biāo)檢測方法,是傳統(tǒng)機(jī)器學(xué)習(xí)目標(biāo)檢測算法的集大成之作.
上述傳統(tǒng)的基于機(jī)器學(xué)習(xí)的目標(biāo)檢測算法有重大的缺陷,第一,需要對整個(gè)區(qū)域滑動窗口的方式暴力搜索會帶來大量的無用邊框,其計(jì)算量大而且效率低; 第二,復(fù)雜的特征提取設(shè)計(jì),針對性太明顯,局限性太大,得到的特征不具有魯棒性; 第三,SVM 等分類器多分類效果太低,時(shí)間消耗太大,不利于實(shí)際應(yīng)用.
隨著手工提取特征造成的檢測算法性能飽和,目標(biāo)檢測在此后一直處于“平原期”,直到2012 年的AlexNet 網(wǎng)絡(luò)[8]的出現(xiàn)使得深度學(xué)習(xí)重新成為主流,其在ImageNet 圖像分類任務(wù)中以“碾壓”第二名算法的姿態(tài)取得了冠軍. 由于深度卷積網(wǎng)絡(luò)優(yōu)異的特征學(xué)習(xí)能力,能夠抽取出圖像中更高級別的語義特征,于是人們思考能否將這種學(xué)習(xí)能力用到目標(biāo)檢測任務(wù)中. 直到2014 年Girshick 等人[9]率先打破僵局,提出了基于區(qū)域提議的卷積神經(jīng)網(wǎng)絡(luò)算法,自此,基于深度學(xué)習(xí)的目標(biāo)檢測開始以前所未有的速度向前推進(jìn). 并且隨著VGGNet[10]、ResNet[11]和GoogLeNet[12]等優(yōu)秀網(wǎng)絡(luò)的接連問世,在分類、物體檢測、圖像分割等領(lǐng)域漸漸地展現(xiàn)出深度學(xué)習(xí)的統(tǒng)治力,大大超過了傳統(tǒng)算法的水平. 圖2 梳理了目標(biāo)檢測算法發(fā)展的時(shí)間線,深度學(xué)習(xí)時(shí)代的檢測算法主要介紹兩階段和單階段比較經(jīng)典的一些模型.
圖2 目標(biāo)檢測主要發(fā)展歷程
建立大型且具有較少偏差的數(shù)據(jù)集對于開發(fā)先進(jìn)的目標(biāo)檢測算法至關(guān)重要,近10 年已經(jīng)發(fā)布了許多目標(biāo)檢測相關(guān)的數(shù)據(jù)集,如PASCAL VOC 07/12、ImageNet、COCO、Open-Image 等挑戰(zhàn)賽中使用的數(shù)據(jù)集.
PASCAL VOC 數(shù)據(jù)集[13]始于2005 年,最初使用4 個(gè)類別的圖像數(shù)據(jù)來做分類和檢測任務(wù),包含1578張訓(xùn)練和測試圖片,這些圖像標(biāo)注了2209 個(gè)對象實(shí)例;2007 年,檢測的類別增加到了20 個(gè)類別,自此類別的數(shù)量不再改變,包含了5k 的訓(xùn)練圖像和12k 的標(biāo)記物體,同時(shí)增加了分割和人體關(guān)鍵點(diǎn)檢測等視覺任務(wù);2012 年將數(shù)據(jù)集擴(kuò)大到11k 個(gè)訓(xùn)練圖像和超過27k 的標(biāo)記物體,同時(shí)擴(kuò)大了分割以及人體關(guān)鍵點(diǎn)檢測兩個(gè)任務(wù)的數(shù)據(jù)集大小. PASCAL VOC 引入了平均精度mAP (設(shè)置IoU=0.5)來評估模型的性能. 目前,VOC 07和VOC 12 主要用作新檢測器的測試平臺.
ImageNet 是ILSVRC 挑戰(zhàn)賽[14]的數(shù)據(jù)集,該比賽每年都會從ImageNet 數(shù)據(jù)集中抽出部分樣本作為本次比賽的數(shù)據(jù)集,ImageNet 有1400 多萬幅圖像,涵蓋了2 萬多個(gè)類別,可用于分類、檢測、定位以及場景分類等視覺任務(wù). 其中檢測任務(wù)的數(shù)據(jù)集包含了200類視覺對象,構(gòu)成了超過500k 的圖像,圖像中所有類別的邊界框都被標(biāo)記了. ImageNet 數(shù)據(jù)集[15]作為目前世界上最大的數(shù)據(jù)集,推動了通用目標(biāo)檢測技術(shù)的發(fā)展; 另一方面,過于龐大的數(shù)據(jù)集和類別數(shù)目增加了訓(xùn)練的計(jì)算量和檢測難度.
COCO 數(shù)據(jù)集[16]是目前可用最具有挑戰(zhàn)性的數(shù)據(jù)集,COCO 數(shù)據(jù)集中的圖片都是從復(fù)雜的日常生活中獲取的,具有小目標(biāo)對象多、單個(gè)圖像目標(biāo)多等特點(diǎn),自2015 年起每年都會有基于COCO 數(shù)據(jù)集的比賽. 雖然該數(shù)據(jù)集的物體類別數(shù)比ImageNet 少,只有80 個(gè)類別,但是每幅圖像擁有更多的目標(biāo)實(shí)例,如COCO-17包含164k 的圖像以及897k 的標(biāo)記樣本(來自80 個(gè)類別). 和VOC、ILSVRC 相比,COCO 最大的進(jìn)展就是對每個(gè)目標(biāo)采用per-instance segmentation 方法來幫助更精確的定位. 此外,COCO 還包含了更多的小目標(biāo)(其面積可以不到整個(gè)圖像的1%),定位目標(biāo)更加密集,目標(biāo)分布更加接近于現(xiàn)實(shí)世界. 目前,COCO 數(shù)據(jù)集是檢測領(lǐng)域的基準(zhǔn)數(shù)據(jù)集.
Open Image[17]是OID (open images detection)挑戰(zhàn)賽使用的數(shù)據(jù)集,該數(shù)據(jù)集主要用于兩個(gè)任務(wù): (1)標(biāo)準(zhǔn)的目標(biāo)檢測; (2)視覺關(guān)系檢測,即檢測具有特定關(guān)系的成對的目標(biāo). 對于目標(biāo)檢測來說,該數(shù)據(jù)集包含了600 個(gè)物體類別以及1910k 張圖像(共有15540k 個(gè)標(biāo)記邊界框),這使得它成為目前最大的目標(biāo)定位數(shù)據(jù)集.
數(shù)據(jù)集是計(jì)算機(jī)視覺任務(wù)中必不可少的要素,所有的任務(wù)都需要使用數(shù)據(jù)集訓(xùn)練模型,數(shù)據(jù)集的優(yōu)劣也對于模型的性能有著直接的影響,因此我們在訓(xùn)練模型時(shí)對于數(shù)據(jù)集的選擇也是至關(guān)重要的. 表1 對不同的檢測數(shù)據(jù)集進(jìn)行了總結(jié).
表1 不同檢測數(shù)據(jù)集的比較
目標(biāo)檢測使用多個(gè)準(zhǔn)則來測量算法的性能: 檢測速度(frames per second,FPS)、精確度(precision,P)、召回率(recall,R)、交并比(intersection over union,IoU)、平均精度(average precision,AP)、平均召回率(average recall,AR)和平均精度均值(mean average precision,mAP). 其中,mAP 一般作為分類準(zhǔn)確率的度量,IoU 作為目標(biāo)定位的度量值.
檢測模型的性能主要是精度和速度兩方面,mAP值越大,證明模型檢測的精度越高; 速度則體現(xiàn)了模型的計(jì)算性能,其FPS 值越大,說明模型檢測速度越快,更具有實(shí)時(shí)性. 一般情況下,評估模型性能要結(jié)合平均精度均值mAP 和檢測速度FPS 來判斷[18],未來的檢測模型要朝著速度精度平衡這個(gè)目標(biāo)努力.
深度神經(jīng)網(wǎng)絡(luò)的目標(biāo)檢測算法主要有兩種類型,即兩階段檢測和單階段檢測,這主要取決于是否存在候選框生成過程. 兩階段目標(biāo)檢測算法先使用多個(gè)固定大小的滑動窗口方法掃描整個(gè)圖像,產(chǎn)生一系列的候選框,這個(gè)候選框集合同時(shí)篩選并消除掉大部分負(fù)樣本集合,然后對這些候選區(qū)域進(jìn)行二次修正回歸得到最終檢測結(jié)果,檢測準(zhǔn)確度較高,但檢測時(shí)效性一般;單階段檢測算法則是將圖像中的實(shí)例對象分配到提前劃分好的單元格中,每個(gè)單元格都有固定數(shù)量大小不一的錨框,然后直接對這些錨框進(jìn)行分類和位置修正,不用單獨(dú)生成window 了. 檢測速度基本可以滿足實(shí)時(shí)性,但沒有起到篩選候選框的作用導(dǎo)致模型的精度十分低下. 因此當(dāng)前目標(biāo)檢測致力于研究對這些主流算法的優(yōu)化和改進(jìn),以實(shí)現(xiàn)檢測精度和檢測速度的最佳平衡.
3.1.1 R-CNN
作為region with CNN (convolutional neural networks)系列的開篇之作,R-CNN[9]是Girshick等人在2014 年提出的檢測模型,它使用與類無關(guān)的區(qū)域提議模塊和CNN 一起將檢測任務(wù)轉(zhuǎn)換為分類和定位問題. 該算法主要包含3 個(gè)模塊: (1)使用SS (selective research)[19]在輸入圖像上提取2000 個(gè)候選區(qū)域;(2)提取的候選區(qū)域經(jīng)過裁剪送入CNN產(chǎn)生固定長度的特征向量; (3)使用AlexNet 作為檢測器的主干架構(gòu),將提取的特征向量傳送到經(jīng)過訓(xùn)練的線性分類器SVM,為每個(gè)區(qū)域產(chǎn)生分?jǐn)?shù),同時(shí)利用IoU 計(jì)算和非極大抑制NMS 來排除那些重疊位置的區(qū)域.
R-CNN 算法在VOC 2012 上獲得了53.3%的mAP,相比于VOC 2012 上的最佳結(jié)果提升了30%的改進(jìn);在VOC 2007 上也有著很大改進(jìn),mAP 從DPM 的33.7%提高到了58.5%; 在ILSVRC 2013 數(shù)據(jù)集上從 OverFeat[20]的24.3%大幅提升至31.4%.
盡管R-CNN 在mAP 方面有著明顯提高,但它的缺點(diǎn)也很明顯: (1)首先訓(xùn)練時(shí)對大量的候選區(qū)域分別做特征提取,計(jì)算繁瑣復(fù)雜,且候選區(qū)域之間有著許多重疊部分,產(chǎn)生的冗余計(jì)算更加導(dǎo)致圖片的檢測速度極慢(47 fps); (2)每張圖片提取到的特征向量有成百上千張,它們都需要被存入磁盤中. 以上這兩點(diǎn)對于深度卷積神經(jīng)網(wǎng)絡(luò)(deep convolutional neural networks,DCNN)來說很不友好,需要的時(shí)空代價(jià)過于昂貴.
3.1.2 SPP-Net
針對R-CNN 分別對候選區(qū)域做特征提取而導(dǎo)致的冗余計(jì)算問題,2015 年He 等人提出的SPP-Net[21](特征空間金字塔網(wǎng)絡(luò))采用了一次卷積方法來解決,即一次性對整個(gè)圖像做卷積操作提取特征圖,避免了R-CNN 中重復(fù)計(jì)算卷積的操作,大大減少了計(jì)算量,提高了檢測速度. 同時(shí),SPP-Net 模型還解決了傳統(tǒng)CNN 提取特征圖時(shí)要求輸入圖像大小固定的問題. 傳統(tǒng)卷積網(wǎng)絡(luò)調(diào)整圖像尺寸的方式一般有crop 和wrap這兩種,但是這樣容易導(dǎo)致幾何失真以及圖像殘缺,SPP-Net 模型通過在網(wǎng)絡(luò)的最后一個(gè)卷積層和全連接層之間增加一個(gè)空間金字塔池化層SPP (spatial pyramid pooling)來輸出固定尺寸的特征向量用于檢測器的訓(xùn)練,避免了對輸入圖像的裁剪和扭曲,可以處理任意大小/縱橫比的圖像,提高了模型對形變物體的魯棒性.
SPP-Net 模型在ILSVRC 2014 年的挑戰(zhàn)賽目標(biāo)檢測任務(wù)中獲得了第2 名; 在VOC 2017 上的mAP 達(dá)到了59.2%,和R-CNN 的精確度相當(dāng),但速度卻是RCNN 的24–102 倍. 盡管SPP-Net 的速度提高了很多,但是仍然不能滿足實(shí)時(shí)性的需求. 此外,由于模型體系結(jié)構(gòu)類似于R-CNN,SPP-Net 也有著R-CNN 的缺點(diǎn),如多級管道訓(xùn)練、存儲空間大、計(jì)算成本高、訓(xùn)練時(shí)間長,且SPP-Net 在微調(diào)時(shí)只更新了SPP 層后的全連接層,對深度網(wǎng)絡(luò)的負(fù)面影響較大.
3.1.3 Fast R-CNN
為了進(jìn)一步提高檢測算法的性能,Girshick 等人在2015 年提出了Fast R-CNN[22]模型,該模型: (1)提出了一個(gè)單段訓(xùn)練算法,將SVM 分類和BBox (bounding box)回歸聯(lián)合起來在CNN 階段訓(xùn)練,解決了R-CNN和SPP-Net 中存在的多級管道訓(xùn)練的問題; (2)將SPP 層簡化成RoI pooling 層,利用RoI 對特征圖進(jìn)行歸一化操作,然后分別輸入到Softmax 分類和BBox 回歸兩個(gè)分支得到分類分?jǐn)?shù)和回歸偏移量; (3)提出了multi-task 損失,訓(xùn)練時(shí)將分類和回歸損失結(jié)合起來更新參數(shù); (4)在全連接層引入了截?cái)嗥娈愔捣纸釹VD(singular value decomposition),將大的全連接層壓縮,從而減少在全連接層計(jì)算前向傳播的時(shí)間.
Fast R-CNN 采用了VGG16 模型,在同樣的環(huán)境配置下,訓(xùn)練速度比R-CNN 快9 倍,比SPP-Net 快3 倍,測試速度比R-CNN 快213 倍,比SPP-Net 大約快10 倍,同時(shí)在VOC 2012 數(shù)據(jù)集上可以達(dá)到66%的mAP,在VOC 2007 上mAP 可以達(dá)到70%. 可以看出,Fast R-CNN 在提高速度的同時(shí)保證了精度.
雖然Fast R-CNN 成功的集成了R-CNN 和SPPNet 的優(yōu)勢,檢測速度也大幅度提高,但是由于使用Selective Search 生成區(qū)域提議,其速度不可避免地受到了限制,同年提出的Faster R-CNN 解決了該問題.
3.1.4 Faster R-CNN
在Fast R-CNN 問世不久后,Faster R-CNN[23]被提出用于解決先前檢測算法依賴區(qū)域提議算法生成候選框的問題. 之前的Fast R-CNN 獲得實(shí)時(shí)檢測速度的前提是忽略在區(qū)域提議上的花費(fèi)時(shí)間,所以生成候選框集合的計(jì)算一直是兩階段檢測算法速度不能大幅提升的瓶頸. Faster R-CNN 引入?yún)^(qū)域提議網(wǎng)絡(luò)RPN (region proposal network)代替Selective search 方法,同時(shí)預(yù)測每個(gè)候選框的分類得分和回歸偏移,經(jīng)過端到端的訓(xùn)練,可以生成高質(zhì)量、零代價(jià)的區(qū)域提議,大大加快了模型的計(jì)算速度. 之前的算法都采用圖像金字塔來解決輸入圖像大小變化的問題,RPN 引入了anchor 的概念,通過在anchor 上使用多個(gè)尺度和多個(gè)寬高比來定義邊界框,然后對它們進(jìn)行回歸以便定位對象. 通過和檢測階段共享全局圖像卷積特征,Faster R-CNN 將RPN 和Fast R-CNN 融合成一個(gè)統(tǒng)一的網(wǎng)絡(luò),像特征提取、候選區(qū)域生成、分類以及定位等操作被集成到了一個(gè)學(xué)習(xí)框架中.
Faster R-CNN 使用深度網(wǎng)絡(luò)模型VGG16[10]獲得了5fps 的速度(包括所有步驟),同時(shí)在VOC 2012 上可以獲得70.4% 的mAP,在VOC 2007 上獲得73.2%的mAP. 盡管Faster R-CNN 突破了Fast R-CNN 的速度瓶頸,獲得了接近實(shí)時(shí)檢測速度,但是仍存在一些問題: (1)使用anchor 機(jī)制設(shè)置的候選框有著固定的尺度和比例,并不適用于所有目標(biāo),特別是小目標(biāo)的檢測效果很不好; (2)仍然使用RoI Pooling 使得后續(xù)網(wǎng)絡(luò)特征失去平移不變性,影響最終定位精度[18]; (3)在RoI Pooling中使用整數(shù)量化操作會產(chǎn)生一些誤差,這些誤差在錨框映射回原圖時(shí)被放大很多倍,從而影響定位任務(wù).
3.1.5 Mask R-CNN
Mask R-CNN[24]是He 等人在2017 年提出的一個(gè)簡單、靈活、通用的對象實(shí)例分割的框架,并且很容易擴(kuò)展到其他的視覺領(lǐng)域上,如目標(biāo)檢測、人體關(guān)鍵點(diǎn)檢測以及人體姿態(tài)估計(jì)等高級視覺任務(wù). 該算法通過增加一個(gè)與現(xiàn)有的邊界框回歸和分類并行的mask 分支來擴(kuò)展Faster R-CNN,并將3 個(gè)分支的損失聯(lián)合起來訓(xùn)練.Faster R-CNN 的RoI Pooling 中的兩次整數(shù)量化操作引入了誤差,造成了特征圖和原圖區(qū)域不匹配,該缺陷對于分類影響不大,但是對檢測和分割這樣需要準(zhǔn)確定位的視覺任務(wù)有著很大的負(fù)面影響. 因此Mask R-CNN使用了RoIAlign 來改進(jìn)這一缺陷. RoIAlign 取消了量化操作,采用雙線性差值方法計(jì)算非整數(shù)位置的像素值,實(shí)現(xiàn)像素級對齊,將掩碼的準(zhǔn)確率提升了10%到50%.
Mask R-CNN 雖然在比Faster R-CNN 增加了一點(diǎn)開銷,但在同樣的環(huán)境下,其運(yùn)行速度可以達(dá)到5fps,且精度相比于Faster R-CNN 提高了2 個(gè)點(diǎn). 但是其檢測速度仍然不能滿足實(shí)時(shí)性要求,且實(shí)例分割標(biāo)注的代價(jià)過于昂貴.
雙階段目標(biāo)檢測使用了級聯(lián)結(jié)構(gòu),采用“region proposal+CNN feature+SVM”的思路思想,結(jié)合CNN網(wǎng)絡(luò),大大提高了檢測的精度; 后續(xù)的SPP-Net、Fast R-CNN、Faster R-CNN 等大都沿用了這一思路,在檢測效率上進(jìn)行改進(jìn)[25],但它們速度最多達(dá)到5 fps,就實(shí)時(shí)性而言略有不足. 表2 總結(jié)了基于候選區(qū)域的檢測算法的性能以及優(yōu)缺點(diǎn).
表2 兩階段算法的性能比較
3.2.1 YOLO 系列
前面所述的兩級檢測器將目標(biāo)檢測作為一個(gè)分類問題來解決,使用某個(gè)模塊給出一些候選對象,網(wǎng)絡(luò)將其分類為目標(biāo)或背景. 然而,YOLO (you only look once)將其視為一個(gè)基于回歸的檢測問題,在一個(gè)單獨(dú)的網(wǎng)絡(luò)中直接完成從圖像輸入到物體的定位和分類,沒有顯示的提取候選框過程.
在YOLO[26]中,輸入圖像被分成一個(gè)S×S網(wǎng)格,網(wǎng)絡(luò)將每個(gè)對象分配給該對象中心所在的單元. 一個(gè)網(wǎng)格單元預(yù)測多個(gè)邊界框,每個(gè)預(yù)測數(shù)組由5 個(gè)元素組成: 邊界框的中心x和y,框的維度w和h,以及置信度得分(該邊框包含目標(biāo)的可能性). YOLO 的靈感來自圖像分類的GoogLeNet 模型,該模型使用較小卷積網(wǎng)絡(luò)的級聯(lián)模塊. 它在ImageNet 數(shù)據(jù)上進(jìn)行預(yù)訓(xùn)練,直到模型達(dá)到高精度,然后通過添加隨機(jī)初始化的卷積和完全連接的層進(jìn)行修改. 在訓(xùn)練時(shí),每個(gè)網(wǎng)格單元只預(yù)測一個(gè)類,因?yàn)樗諗康酶?但推理時(shí)間會增加.提出多任務(wù)損失用于優(yōu)化模型,使用后處理NMS 刪除特定類別的多重檢測. YOLO 在精確度和速度上都大大超過了當(dāng)代的單階段實(shí)時(shí)模型,其處理速度可以達(dá)到45 fps,在較小模型的Fast YOLO 甚至可以達(dá)到155 fps. 然而,它也有顯著的缺點(diǎn),主要是對于較小對象和密集對象的定位精度較差,以及每個(gè)單元所能預(yù)測對象數(shù)量的限制. 這些問題在YOLO 的后續(xù)版本中得到了解決.
YOLOv2[27]是對YOLO 的改進(jìn),在速度和精度之間提供了一個(gè)簡單的平衡,而YOLOv2 又稱為YOLO9000,聞名知意,該模型可以實(shí)時(shí)預(yù)測9000 個(gè)對象類. YOLOv2用Darknet-19 取代了GoogLeNet 的主干架構(gòu),同時(shí)結(jié)合了許多令人印象深刻的技術(shù),如: 批處理標(biāo)準(zhǔn)化(batch normalization,BN)[28]來提高收斂性,分類和檢測系統(tǒng)的聯(lián)合訓(xùn)練來提高檢測種類數(shù)量(即用COCO 中的物體檢測標(biāo)注數(shù)據(jù)進(jìn)行定位訓(xùn)練,用ImageNet 中的數(shù)據(jù)學(xué)習(xí)對象分類),去掉完全連接層以提高速度,并使用Fast R-CNN 中的anchor 機(jī)制來提供更好的先驗(yàn)框和提高召回率. YOLOv2 在速度和精度上提供了更好的選擇模型的靈活性,新架構(gòu)的參數(shù)更少,正如論文標(biāo)題所示,它“更好、更快、更強(qiáng)”.
YOLOv3[29]比之前的YOLO 版本有“增量改進(jìn)”.Redmon 等人用更大的Darknet-53 網(wǎng)絡(luò)取代了特征提取器網(wǎng)絡(luò). 同時(shí)還結(jié)合了各種技術(shù),如數(shù)據(jù)擴(kuò)充、多尺度訓(xùn)練、批量標(biāo)準(zhǔn)化等. 分類器層的Softmax 被二元交叉熵分類器取代. 盡管YOLOv3 比YOLOv2 快,但與它的前身相比,它缺乏任何突破性的變化. 它甚至比一個(gè)一年前最先進(jìn)的檢測器精度更低.
YOLOv4[30]設(shè)計(jì)了一種快速且易于訓(xùn)練的物體探測器,可以在現(xiàn)有的簡單設(shè)備上工作. 它利用“免費(fèi)包”,即只增加訓(xùn)練時(shí)間而不影響推理時(shí)間的方法. YOLOv4利用數(shù)據(jù)增強(qiáng)技術(shù)、正則化方法、類標(biāo)簽平滑、CIoUloss[31]、交叉小批量歸一化CmBN (cross mini-batch normalization)、自對抗訓(xùn)練等技巧來改進(jìn)訓(xùn)練. 網(wǎng)絡(luò)中還加入了只影響推理時(shí)間的方法,稱為“特殊包”,包括Mish 激活[32]、跨階段部分連接網(wǎng)絡(luò)CSPNet (crossstage partial connections)[33]、SPP-Block[21]、PAN (path aggregation network)[34]路徑聚合塊、多輸入加權(quán)殘差連接MiWRC (multi-input weighted residual connections)等. 它有一個(gè)ImageNet 預(yù)先訓(xùn)練的CSPNet-Darknet-53 骨干,SPP 和PAN 塊頸部和YOLOv3 作為檢測頭. 大多數(shù)現(xiàn)有的檢測算法需要多個(gè)GPU 來訓(xùn)練模型,但是YOLOv4 可以很容易地在單個(gè)GPU 上訓(xùn)練. 它的速度是同等性能的高效檢測器的兩倍. 這是最先進(jìn)的實(shí)時(shí)單級探測器.
3.2.2 SSD
SSD (single shot multibox detector)[35]是第一個(gè)在保持實(shí)時(shí)速度的同時(shí)能與兩級探測器(如Faster RCNN)的精度相匹配的單級檢測器. SSD 是建立在VGG-16 的基礎(chǔ)上,增加了輔助結(jié)構(gòu)來提高性能. 當(dāng)圖像特征不太粗糙時(shí),SSD 在網(wǎng)絡(luò)中較早地檢測到較小的對象,而較深的層負(fù)責(zé)默認(rèn)框和縱橫比的偏移. 在訓(xùn)練過程中,SSD 將每個(gè)真實(shí)框與具有最佳Jaccard 重疊的默認(rèn)框相匹配,并相應(yīng)地訓(xùn)練網(wǎng)絡(luò),類似于Multibox[36].同時(shí)還使用硬負(fù)挖掘和大量數(shù)據(jù)擴(kuò)充. 類似于DPM,它利用局部化和置信度損失的加權(quán)和來訓(xùn)練模型,通過執(zhí)行非最大抑制獲得最終輸出. 盡管SSD 比YOLO和R-CNN 等最先進(jìn)的網(wǎng)絡(luò)要快得多,也更準(zhǔn)確,但它很難檢測到小物體.
要關(guān)注、集中訓(xùn)練hard example. 2017 年Lin 等人在一個(gè)簡單的單級探測器中證明了該損失函數(shù)的有效性,該檢測器被稱為RetinaNet[37],它通過對輸入圖像的位置、比例和縱橫比進(jìn)行密集采樣來預(yù)測物體. 使用增加了特征金字塔網(wǎng)絡(luò)FPN[38]的ResNet 作為backbone以及兩個(gè)相似的子網(wǎng)—分類和邊框回歸. FPN 的每一層都被傳遞給子網(wǎng),使其能夠以不同的比例檢測對象.分類子網(wǎng)預(yù)測每個(gè)位置的對象分?jǐn)?shù),而邊框回歸子網(wǎng)將每個(gè)錨點(diǎn)的偏移量回歸到真實(shí)邊框. 兩個(gè)子網(wǎng)都是小型的全卷積網(wǎng)絡(luò)FCN,同時(shí)兩個(gè)子網(wǎng)共享參數(shù). 與之前的檢測模型不同,該模型使用了一個(gè)與類無關(guān)的邊界框回歸器,并發(fā)現(xiàn)該方法同樣有效.
RetinaNet 訓(xùn)練簡單,收斂速度快,易于實(shí)現(xiàn). 與兩級檢測器相比,它在精度和運(yùn)行時(shí)間方面取得了更好的性能. 通過引入一個(gè)新的損失函數(shù),RetinaNet 在推進(jìn)物體探測器的優(yōu)化方面也突破了極限.
單階段算法的出現(xiàn)晚于兩階段,其簡單的結(jié)構(gòu)、高效的計(jì)算優(yōu)勢可以滿足實(shí)時(shí)性的需求,收斂過程十分迅速,其精度相比于雙階段算法較低一些,但是隨著視覺技術(shù)的發(fā)展,單階段檢測框架的在精度方面有著顯著的提升. 表3 總結(jié)了單階段算法的性能及其優(yōu)缺點(diǎn).
表3 單階段算法的性能比較
3.2.3 RetinaNet
鑒于單級檢測器和兩級檢測器的精度之間的差異,Lin 等人認(rèn)為單級檢測器滯后的原因是“正負(fù)樣本極端的不平衡”. 他們提出了一個(gè)重構(gòu)的交叉熵?fù)p失(focal loss),稱為焦點(diǎn)損失,作為補(bǔ)救類不平衡的手段. 焦點(diǎn)損失的參數(shù)減少了來自easy example 的損失貢獻(xiàn),主
目標(biāo)檢測是機(jī)器視覺領(lǐng)域的一個(gè)重要組成部分,基于深度神經(jīng)網(wǎng)絡(luò)學(xué)習(xí)的目標(biāo)檢測依然存在一些困難和挑戰(zhàn). 如目標(biāo)檢測在行人檢測方面,存在著小目標(biāo)(圖像中的行人占據(jù)的像素非常少,如目標(biāo)占整張圖像的5%等)、行人密集以及行人遮擋等問題; 在人臉檢測方面,存在人臉擁有不同表情、目標(biāo)被另一個(gè)目標(biāo)遮擋、待檢測目標(biāo)擁有各種尺度等問題; 在文本檢測方面,存在字體和語言的多樣化、目標(biāo)文本損壞模糊、密集的文本排列等問題. 文獻(xiàn)[39]也從目標(biāo)尺度變化大、樣本不均衡、弱監(jiān)督檢測以及實(shí)時(shí)檢測等4 個(gè)檢測難點(diǎn)綜述了最新的目標(biāo)檢測研究方法,分析這些算法之間的關(guān)系,并比較了其精度、優(yōu)缺點(diǎn)以及適用場景.
盡管近年來目標(biāo)檢測研究領(lǐng)域取得了極大的進(jìn)步,目標(biāo)檢測距離實(shí)現(xiàn)達(dá)到人類檢測識別水平仍然需要開展大量研究工作[40],目標(biāo)檢測的未來可以關(guān)注但不僅限于以下幾個(gè)方面:
(1)輕量級檢測: 事實(shí)上,許多應(yīng)用程序都需要通過提高算法的速度才能在移動設(shè)備上持續(xù)穩(wěn)定的執(zhí)行,如無人駕駛、智能相機(jī)、人臉識別、智能機(jī)器人等.盡管近年來目標(biāo)檢測在模型性能上做出了極大的提升,但是大多數(shù)模型網(wǎng)絡(luò)的參數(shù)量巨大且目前嵌入式設(shè)備的計(jì)算能力有限,因此難以在嵌入式設(shè)備上平穩(wěn)運(yùn)行[41].近幾年也提出了許多輕量級的檢測網(wǎng)絡(luò),如實(shí)現(xiàn)模型壓縮的SqueezeNet[42]、使用深度可卷積分離的單階段模型MobileNet[43]、針對移動設(shè)備的ShuffleNet[44]等,也出現(xiàn)了許多具有針對性的改進(jìn)方法,如文獻(xiàn)[45]提出了基于特征融合的輕量級SSD 檢測方法,文獻(xiàn)[46]提出了基于輕量級注意力機(jī)制的人臉檢測算法,文獻(xiàn)[47]提出了輕量級網(wǎng)絡(luò)改進(jìn)的實(shí)時(shí)人體關(guān)鍵點(diǎn)檢測算法等等. 未來可以繼續(xù)朝著輕量級模型優(yōu)化的方向改進(jìn),平衡模型的速度和精度,使其在內(nèi)存有限的移動設(shè)備上更加平穩(wěn)快速的運(yùn)行.
(2)滿足自動機(jī)器學(xué)習(xí)(AutoML)的檢測: 現(xiàn)在基于深度神經(jīng)網(wǎng)絡(luò)的檢測模型變得越來越復(fù)雜繁瑣,其建模與應(yīng)用面臨很大瓶頸和制約,存在著嚴(yán)重依賴人為設(shè)計(jì)、建模周期長等問題. 國際上出現(xiàn)的自動化機(jī)器學(xué)習(xí)(AutoML)技術(shù)獲得了國內(nèi)外學(xué)術(shù)領(lǐng)域和工業(yè)領(lǐng)域的廣泛關(guān)注,它利用機(jī)器代替人工來自動化地完成模型選擇和超參數(shù)調(diào)優(yōu),讓模型設(shè)計(jì)自動化[48],如文獻(xiàn)[49]介紹了AutoML 使用工程化思維可以實(shí)現(xiàn)語義分割中的超參數(shù)優(yōu)化、遷移學(xué)習(xí)與神經(jīng)架構(gòu)搜索等方法的自動化學(xué)習(xí). 目標(biāo)檢測未來可能的方向是深度研究神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)來設(shè)計(jì)智能檢測模型從而減少人工對模型的干預(yù),例如: 如何根據(jù)圖像自動選取合適的錨框和如何為模型選取好的優(yōu)化方案. AutoML 會成為未來重要的對象檢測技術(shù).
(3)弱監(jiān)督學(xué)習(xí)的目標(biāo)檢測: 目前的主流檢測算法都是基于強(qiáng)監(jiān)督學(xué)習(xí)的,嚴(yán)重依賴那些有著豐富標(biāo)注的圖像,標(biāo)注工作都是由人們手工完成,但是復(fù)雜的背景和目標(biāo)的多樣性都使得標(biāo)注階段不僅消耗時(shí)間,且效率十分低下,而且像軍事、航天這樣的特殊領(lǐng)域難以獲得大規(guī)模數(shù)據(jù)集,使用基于強(qiáng)監(jiān)督學(xué)習(xí)實(shí)現(xiàn)目標(biāo)檢測任務(wù)很難訓(xùn)練出檢測效果好的模型. 目前,數(shù)據(jù)集標(biāo)注的成本越來越高,如何在低成本標(biāo)注的數(shù)據(jù)集上取得良好的檢測結(jié)果已經(jīng)成為研究的熱點(diǎn),學(xué)者們研究了許多從不同角度實(shí)現(xiàn)弱監(jiān)督檢測,如文獻(xiàn)[50]中從特征處理方式的不同,介紹了基于多示例學(xué)習(xí)、基于類激活圖、基于注意力機(jī)制以及基于偽標(biāo)簽的弱監(jiān)督目標(biāo)檢測算法; 文獻(xiàn)[51]介紹了一些基于圖像級別標(biāo)簽的弱監(jiān)督算法,從圖像分割、多示例學(xué)習(xí)以及卷積神經(jīng)網(wǎng)絡(luò)等3 個(gè)方面分析了目前的弱監(jiān)督目標(biāo)檢測算法,并比較了弱監(jiān)督和強(qiáng)監(jiān)督算法的性能. 總體來說,近年來弱監(jiān)督學(xué)習(xí)取得了不錯(cuò)的成績,但是相對于強(qiáng)監(jiān)督學(xué)習(xí)依然有很大的發(fā)展空間. 就像文獻(xiàn)[50]所展望的那樣,未來的弱監(jiān)督學(xué)習(xí)可以繼續(xù)朝著強(qiáng)弱監(jiān)督學(xué)習(xí)相結(jié)合的檢測算法進(jìn)行研究.
(4)小目標(biāo)檢測: 小目標(biāo)檢測是目前計(jì)算機(jī)視覺領(lǐng)域中的一個(gè)重難點(diǎn)問題,有限的分辨率和特征信息使得小目標(biāo)檢測任務(wù)成為現(xiàn)階段計(jì)算機(jī)視覺領(lǐng)域的一項(xiàng)巨大挑戰(zhàn)[52]. 目前針對小目標(biāo)檢測算法出現(xiàn)了許多綜述型文章,如文獻(xiàn)[53]簡介了常見的兩階段、一階段檢測算法以及針對小目標(biāo)檢測時(shí)需要的專門數(shù)據(jù)集,然后介紹了從多尺度方面改進(jìn)的算法; 文獻(xiàn)[54]綜述了當(dāng)前的一些小目標(biāo)檢測算法,按照改進(jìn)原理不同將其分成了5 大類,介紹了每種方法的典型模型并進(jìn)行比較,最后介紹了小目標(biāo)檢測常用的數(shù)據(jù)集. 從這些文章中看出來目前的小目標(biāo)檢測還是存在著一些問題,對比大、中尺度目標(biāo)的檢測性能還存在著較大差距,故如何實(shí)現(xiàn)小目標(biāo)的精準(zhǔn)識別、平衡其精度和速度仍然是一個(gè)極大的挑戰(zhàn),小目標(biāo)檢測在自動駕駛、反恐刑偵、缺陷檢測、智慧醫(yī)療等領(lǐng)域有著廣泛的應(yīng)用前景[55],是未來研究的重要方向. 該研究方向的一些潛在應(yīng)用還包括利用遙感圖像進(jìn)行軍事狀況的偵察以及通過無人機(jī)拍攝野生動物進(jìn)行數(shù)量統(tǒng)計(jì)等任務(wù),未來可以關(guān)注視覺注意力機(jī)制的整合以及高分辨率輕量級網(wǎng)絡(luò)的設(shè)計(jì).
(5)視頻目標(biāo)檢測: 與靜態(tài)的圖像相比,視頻具有高度的冗余性,包含了大量的時(shí)空局部信息,其動態(tài)性給視頻檢測任務(wù)帶來了極大的困難. 傳統(tǒng)的檢測模型大多都是為了檢測靜態(tài)的圖像,恰好忽視了動態(tài)視頻中幀與幀之間的相關(guān)性,無法完全利用視頻的全局信息. 針對視頻特有的性質(zhì),提出了許多視頻檢測的算法,文獻(xiàn)[56]從視頻檢測面臨的3 個(gè)技術(shù)方面的挑戰(zhàn)(改進(jìn)與優(yōu)化、保持時(shí)空序列一致性以及模型輕量化)出發(fā),介紹了當(dāng)前的視頻檢測算法,包含了基于運(yùn)動信息、基于檢測和跟蹤結(jié)合、輕量化視頻檢測以及跨界模型的使用(如將自然語言處理領(lǐng)域的Transformer 和視頻檢測相結(jié)合)等4 種類型; 文獻(xiàn)[57]研究了基于時(shí)序特性的檢測方法,結(jié)合特征融合和雙模型對視頻進(jìn)行逐幀檢測,通過前一個(gè)幀的結(jié)果反饋修正當(dāng)前幀的檢測結(jié)果從而提高幀之間的連續(xù)性,提升了檢測準(zhǔn)確率和視頻連續(xù)性. 現(xiàn)如今,視頻檢測有著非常廣泛的應(yīng)用,比如高清攝像頭中的實(shí)時(shí)目標(biāo)檢測和跟蹤對于視頻監(jiān)控、自動駕駛以及車載視頻中的障礙物檢測都有著重大意義. 未來視頻檢測可以朝著泛化能力方向進(jìn)行研究,比如讓模型更適應(yīng)真實(shí)場景的檢測要求,也可以嘗試和弱監(jiān)督學(xué)習(xí)結(jié)合起來,研究如何在少樣本或者零樣本的條件下實(shí)現(xiàn)高精度的視頻檢測.