蘆 佳 陸振宇 詹天明 戴裕亮 王 鵬
1(南京信息工程大學(xué)電子與信息工程學(xué)院 江蘇 南京 210044)
2(南京審計(jì)大學(xué)信息工程學(xué)院 江蘇 南京 211815)
隨著社會(huì)的發(fā)展與進(jìn)步,人們飼養(yǎng)寵物的情況越來(lái)越多,它們?cè)谌藗兩磉叺牡匚灰苍絹?lái)越重要。但是寵物給人們帶來(lái)歡樂(lè)的同時(shí)也帶來(lái)了許多的問(wèn)題,如寵物店里的監(jiān)管與喂養(yǎng),寵物的丟失和尋找,以及流浪狗的管轄等都需要更加智能化和系統(tǒng)化的管理。寵物的身份認(rèn)證也是智能化和系統(tǒng)化管理中非常重要的環(huán)節(jié)之一。而狗作為日常最受歡迎的寵物之一,提取其特征來(lái)進(jìn)行智能識(shí)別在寵物狗智能管理中具有非常廣泛的應(yīng)用。
傳統(tǒng)的目標(biāo)檢測(cè)算法大致方法如下:一開(kāi)始是候選區(qū)域的選擇,然后在已經(jīng)選定的候選區(qū)域中提取特征,如HOG(Histogram of Oriented Gradient)[1]、SIFT(Scale Invariant Feature Transform)[2]、Haar等方法,最后使用訓(xùn)練的分類器,如SVM(Support Vector Machine)[3]、Adaboost[4]等進(jìn)行分類。這些檢測(cè)方法雖然實(shí)現(xiàn)起來(lái)比較簡(jiǎn)單,但是由于手工設(shè)計(jì)的特征對(duì)于多樣性的變化沒(méi)有很好的魯棒性,而且待檢測(cè)目標(biāo)會(huì)因?yàn)楣庹?、視角等因素的變化而變化,因此?huì)直接影響到目標(biāo)檢測(cè)的準(zhǔn)確性。為此,研究者們又提出了DPM(Deformable Part Model)[5]目標(biāo)檢測(cè)算法,但是該模型特征相對(duì)復(fù)雜,計(jì)算速度慢,對(duì)于旋轉(zhuǎn)、拉伸的物體檢測(cè)效果不好。后來(lái),還有一些目標(biāo)檢測(cè)的算法被提出,但是大多還是借鑒了DPM方法的思路進(jìn)行改進(jìn),并沒(méi)有發(fā)生本質(zhì)的變化,因而傳統(tǒng)的目標(biāo)檢測(cè)的研究工作遇到了瓶頸。
隨著研究者們?cè)谀繕?biāo)檢測(cè)技術(shù)上的不斷改進(jìn)與創(chuàng)新,新穎而高效的目標(biāo)檢測(cè)算法層出不窮。其中,基于深度學(xué)習(xí)的方法在目標(biāo)檢測(cè)中得到了迅速發(fā)展。Ross Girshick提出的R-CNN算法作為深度學(xué)習(xí)目標(biāo)檢測(cè)算法中的開(kāi)山之作,多次在目標(biāo)檢測(cè)比賽中摘得桂冠,但是該方法訓(xùn)練和測(cè)試耗時(shí)長(zhǎng),訓(xùn)練所需的空間大。為此,作者在原算法的基礎(chǔ)上進(jìn)行了改進(jìn),提出了Fast R-CNN算法,雖然該算法在時(shí)間和準(zhǔn)確率上都有了提升,但沒(méi)有真正實(shí)現(xiàn)端到端的訓(xùn)練測(cè)試。于是,作者又進(jìn)一步作出改進(jìn),提出了Faster R-CNN算法[6-7],將候選區(qū)域的生成、特征的提取、分類和位置精修統(tǒng)一到一個(gè)深度網(wǎng)絡(luò)框架之中,大大提高了運(yùn)行的速度和準(zhǔn)確率。隨后,Liu等[8]提出了SSD(Single Shot Multi-Box Detector)算法,該方法沒(méi)有生成候選區(qū)域的過(guò)程,極大提高了檢測(cè)速度。Redmon等[9]提出的YOLOv1(You Only Look Once)算法又使目標(biāo)檢測(cè)算法上升了一個(gè)臺(tái)階,它速度快,背景錯(cuò)檢率低,泛化能力強(qiáng),但是不足之處是其輸入尺寸必須固定。時(shí)隔一年,作者提出了YOLOv2算法,在保證原有速度的優(yōu)勢(shì)之下,提升了精度。之后,作者又提出了YOLOv3算法,使用了新的網(wǎng)絡(luò)結(jié)構(gòu)Darknet-53,用Logistic取代Softmax進(jìn)行對(duì)象的分類,并利用多尺度特征進(jìn)行對(duì)象的檢測(cè),在保持其一貫檢測(cè)速度快的情況下,性能又有了提升。但是該算法缺點(diǎn)在于識(shí)別物體位置的精確性差且召回率低,為了解決這一問(wèn)題,本文在特征提取部分添加與Darknet-53[10]網(wǎng)絡(luò)結(jié)構(gòu)相同層數(shù)的深度殘差網(wǎng)絡(luò),并將這兩個(gè)特征提取模型分別輸出后取均值降維,生成三個(gè)尺度的特征圖,使其能更好地提取圖像中的信息,再結(jié)合ImageNet數(shù)據(jù)集中的狗臉數(shù)據(jù)集,進(jìn)行狗臉檢測(cè)。
YOLO算法的核心思想就是將整幅圖像作為網(wǎng)格的輸入,直接在輸出層回歸邊界框的位置以及所屬的類別。首先將一幅圖像劃分成S×S的網(wǎng)格,每個(gè)網(wǎng)格預(yù)測(cè)B個(gè)邊界框,每個(gè)邊界框除了要回歸自身的位置外,還要附帶一個(gè)置信度值,這個(gè)置信度值表示所預(yù)測(cè)的框內(nèi)含有物體的準(zhǔn)確性,用式(1)表示。
(1)
式中:如果目標(biāo)落在網(wǎng)格中,則第一項(xiàng)為1,反之為0;第二項(xiàng)是邊界框與真實(shí)框的IOU值。每個(gè)邊界框都要預(yù)測(cè)(x,y,w,h)和置信度共5個(gè)值,其中:x、y為預(yù)測(cè)框的中心位置的坐標(biāo);w、h為預(yù)測(cè)框的寬度和高度。每個(gè)網(wǎng)格預(yù)測(cè)一個(gè)類別信息,記作C類,所以最后輸出為S×S×(5×B+C)維。
在測(cè)試的時(shí)候,每個(gè)網(wǎng)格預(yù)測(cè)的類別信息和邊界框預(yù)測(cè)的置信度值相乘,就是相對(duì)應(yīng)邊界框的最后類別得分,用式(2)表示。
(2)
得到最后的類別得分后,給定一個(gè)閾值,將分?jǐn)?shù)低于閾值的框淘汰掉,再對(duì)剩余的框進(jìn)行NMS(非極大值抑制)算法處理[11],得到最終的檢測(cè)結(jié)果。
但由于輸出層為全連接層,在檢測(cè)時(shí)只能輸入相同大小的圖像,且每個(gè)格子最多只能檢測(cè)出一個(gè)物體。在此基礎(chǔ)上,YOLOv2算法加入了歸一化層,使得網(wǎng)絡(luò)不需要每層都去學(xué)習(xí)數(shù)據(jù)的分布,加快了收斂的速度。在預(yù)測(cè)框的數(shù)量上,每個(gè)特征圖位置使用5種anchor boxes,相比原先的算法增加了很多??偟膩?lái)說(shuō),YOLOv2算法在YOLOv1算法的基礎(chǔ)上進(jìn)行了一系列改進(jìn),且綜合了ImageNet數(shù)據(jù)集和COCO數(shù)據(jù)集,采用聯(lián)合訓(xùn)練的方式進(jìn)行訓(xùn)練,使系統(tǒng)可以識(shí)別超過(guò)9 000種物體。但是對(duì)于重疊的分類,YOLOv2算法依然沒(méi)有給出很好的解決方案。
針對(duì)無(wú)法很好地識(shí)別重疊的物體,YOLOv3提出了多標(biāo)簽任務(wù),用Sigmoid分類器代替Softmax分類器,這樣每個(gè)類的輸出仍在[0,1]之間,但它們的和不再是1,只要置信度大于閾值,該錨點(diǎn)便被作為檢測(cè)框輸出。多標(biāo)簽?zāi)P偷奶岢?,?duì)于提高覆蓋率高的圖像的檢測(cè)效果是十分顯著的。
一般在一幅圖像中,都或多或少包含著大小不一的各種物體,比較理想的狀態(tài)是將圖像中待檢測(cè)的目標(biāo)全部檢測(cè)出來(lái)。但由于網(wǎng)絡(luò)的不斷加深,特征圖越來(lái)越小,導(dǎo)致小目標(biāo)很難被檢測(cè)出來(lái)。而在實(shí)際的特征圖中,低層的目標(biāo)位置準(zhǔn)確,但包含的語(yǔ)義信息少,而高層正好相反。因此,YOLOv3汲取了FPN(Feature Pyramid Network)[12]的思想,從不同尺度上提取了特征。
如圖1所示,YOLOv3方法一共分為兩個(gè)部分,第一部分是網(wǎng)絡(luò)的前向傳播過(guò)程,它主要是通過(guò)一定的步長(zhǎng)縮放來(lái)得到其特征層次結(jié)構(gòu)。第二部分是將特征圖進(jìn)行上采樣得到更大及語(yǔ)義更強(qiáng)的特征圖,然后通過(guò)將兩者特征融合,生成具有更明顯特征的特征圖。
圖1 多尺度檢測(cè)
損失函數(shù)是評(píng)價(jià)一個(gè)模型好壞的重要指標(biāo),損失函數(shù)越小,模型的魯棒性就越好。YOLOv3的損失函數(shù)由預(yù)測(cè)框定位誤差、IOU誤差和分類誤差三部分組成,用式(3)表示。
(3)
YOLOv3算法雖然在anchor boxes[13]和多尺度檢測(cè)等方面都做了改進(jìn),有效地解決了對(duì)小目標(biāo)檢測(cè)效果不好的問(wèn)題,但是識(shí)別物體位置的精確性差且召回率低。如果想要進(jìn)一步提升模型的精確性,最好的方法就是將網(wǎng)絡(luò)設(shè)計(jì)得越深越好,但隨之帶來(lái)的問(wèn)題就是梯度消失。而深度殘差網(wǎng)絡(luò)能在加深網(wǎng)絡(luò)的同時(shí)解決梯度消失的問(wèn)題,從而提升模型的精度。因此,本文在特征提取部分Darknet-53網(wǎng)絡(luò)結(jié)構(gòu)的基礎(chǔ)上,加入了深度殘差網(wǎng)絡(luò)共同提取特征,解決了對(duì)檢測(cè)目標(biāo)精確性差的問(wèn)題。
改進(jìn)后的算法結(jié)構(gòu)如圖2所示。首先輸入像素為416×416、通道數(shù)為3的圖片,然后用Darknet-53網(wǎng)絡(luò)和深度殘差網(wǎng)絡(luò)共同提取特征,再通過(guò)卷積核的方式實(shí)現(xiàn)局部的特征交互,進(jìn)行多尺度的預(yù)測(cè)。其中,DBL模塊表示二維卷積層、Batch Normalization[14]歸一化層和LeakyReLu層的一個(gè)組合,共同構(gòu)成網(wǎng)絡(luò)的最小組件。通過(guò)標(biāo)準(zhǔn)化讓激活函數(shù)分布在線性區(qū)間,讓模型更大膽地進(jìn)行梯度下降,這樣既加快收斂的速度,又更容易跳出局部最小值,在一定程度上緩解了過(guò)擬合。Resn(n=1,2,…)是整個(gè)網(wǎng)絡(luò)的大組件,它借鑒了殘差網(wǎng)絡(luò)的做法,使得網(wǎng)絡(luò)結(jié)構(gòu)可以更深,但是識(shí)別物體位置的精確性仍然較差且召回率低,因此改進(jìn)的網(wǎng)絡(luò)在特征提取部分Darknet-53網(wǎng)絡(luò)結(jié)構(gòu)后再次加入深度殘差網(wǎng)絡(luò),并將這兩個(gè)特征提取模型分別輸出后取均值降維,生成三個(gè)尺度的特征圖。
圖2 YOLO-resnet混合網(wǎng)絡(luò)結(jié)構(gòu)
Darknet-53作為YOLOv3特征提取的主要網(wǎng)絡(luò)結(jié)構(gòu),由一系列3×3和1×1的卷積層構(gòu)成。這些卷積層通過(guò)不斷地訓(xùn)練分析,然后選取其中效果好的卷積層進(jìn)行整合得到,它相比Darknet-19效果好了很多。
雖然YOLOv3采用了多尺度預(yù)測(cè)的方式,很好地解決了小物體的檢測(cè)問(wèn)題,但是該模型在識(shí)別物體位置的精確性上仍然較差且召回率低,因此在Darknet-53網(wǎng)絡(luò)結(jié)構(gòu)的基礎(chǔ)上,融合了深度殘差網(wǎng)絡(luò),改進(jìn)了其特征提取部分,這樣既能更好地對(duì)物體進(jìn)行檢測(cè),又能解決隨著網(wǎng)絡(luò)的加深出現(xiàn)的退化現(xiàn)象。其中,殘差塊的原理如圖3所示。
圖3 殘差塊原理
整個(gè)模塊除了正常的卷積層輸出外,還有一個(gè)分支把輸入直接連接在輸出上,該輸入與卷積的輸出做算數(shù)相加得到最終的輸出,即將原始所需要學(xué)的函數(shù)H(x)轉(zhuǎn)換成F(x)+x??梢宰C明,如果F(x)分支中所有的參數(shù)都是0,那么H(x)就是個(gè)恒等映射。深度殘差網(wǎng)絡(luò)不會(huì)給網(wǎng)絡(luò)增加額外的參量和計(jì)算量,同時(shí)可以大大地提升模型的訓(xùn)練速度,提高模型的訓(xùn)練效果。
將構(gòu)建塊定義為:
y=F(x,{Wi})+x
(4)
式中:x和y為考慮的層的輸入和輸出向量;函數(shù)F(x,Wi)表示要學(xué)習(xí)的殘差映射。
F=W2σ(W1x)
(5)
式中:σ表示非線性函數(shù)ReLU。
而式(4)中的F和x維度需要相同,可以通過(guò)快捷連接執(zhí)行線性投影Ws來(lái)匹配維度,如式(6)所示。
y=F(x,{Wi})+Wsx
(6)
殘差網(wǎng)絡(luò)結(jié)構(gòu)的出現(xiàn),打破了之前神經(jīng)網(wǎng)絡(luò)中前一層的輸出作為下一層輸入的思維,即前一層的輸出可以作為后面任意一層的輸入,很好地解決了隨著網(wǎng)絡(luò)加深而過(guò)度提取特征的現(xiàn)象,為高級(jí)語(yǔ)義特征提取和分類提供了可行性。
基于YOLO和ResNet[15]的混合網(wǎng)絡(luò)利用Darknet-53網(wǎng)絡(luò)和深度殘差網(wǎng)絡(luò)共同來(lái)提取特征,首先,Darknet-53網(wǎng)絡(luò)主要采用3×3和1×1的卷積,并將步長(zhǎng)設(shè)置為2來(lái)降低特征圖維度提取特征。但這種特征提取方式提取的特征不夠完整,識(shí)別物體位置的精確性差且召回率低。因此,引入深度殘差網(wǎng)絡(luò),將網(wǎng)絡(luò)設(shè)置得更深來(lái)提取更多的特征,然后將這兩個(gè)特征提取模型分別輸出后取均值降維,使兩者共同提取特征,最后將特征提取部分的中間層與上采樣后的特征層進(jìn)行張量拼接,生成更明顯的特征圖,再進(jìn)行三個(gè)尺度的預(yù)測(cè)。
本實(shí)驗(yàn)使用的原始數(shù)據(jù)是ImageNet數(shù)據(jù)集中的狗分類數(shù)據(jù)集,共有152種不同種類的狗,且每種狗都選取了150~250幅圖片,分別包含了不同背景、不同視角。采用的是VOC2007數(shù)據(jù)集的格式:首先統(tǒng)計(jì)VOC2007數(shù)據(jù)集中圖片和目標(biāo)的寬和高以及它們的寬高比,然后根據(jù)得出的值篩選ImageNet數(shù)據(jù)集中的圖片。其中:在實(shí)驗(yàn)時(shí)每種狗選取了約30幅圖片,共4 500幅圖片作為訓(xùn)練集;另外每種狗選取了3~4幅圖片,共500幅作為驗(yàn)證集;每種狗再另外選取10幅圖片共1 520幅作為測(cè)試集。
實(shí)驗(yàn)設(shè)備配置如下:顯卡采用GTX1070Ti;操作系統(tǒng)為L(zhǎng)inux;框架為Keras。
學(xué)習(xí)率和batchsize是最影響性能的超參數(shù),它指導(dǎo)著我們?cè)撊绾瓮ㄟ^(guò)損失函數(shù)的梯度調(diào)整網(wǎng)絡(luò)的權(quán)重。由于網(wǎng)絡(luò)具有一定的復(fù)雜性,過(guò)大的學(xué)習(xí)率和batchsize會(huì)導(dǎo)致loss梯度爆炸和顯存的溢出。經(jīng)過(guò)多次調(diào)參發(fā)現(xiàn),能使網(wǎng)絡(luò)正常訓(xùn)練的最大學(xué)習(xí)率和batchsize為0.000 1和8,而當(dāng)學(xué)習(xí)率降低到0.000 01時(shí),loss收斂太慢,因此,將整個(gè)網(wǎng)絡(luò)的學(xué)習(xí)率和batchsize設(shè)為了0.000 1和8。
目標(biāo)檢測(cè)問(wèn)題中的模型的分類和定位都需要進(jìn)行評(píng)估,每幅圖像都可能具有不同類別的不同目標(biāo),因此,在圖像分類問(wèn)題中所使用的標(biāo)準(zhǔn)度量不能直接應(yīng)用于目標(biāo)檢測(cè)問(wèn)題。而單純地用準(zhǔn)確率和召回率都不科學(xué),因此,人們用PR曲線下的面積作為評(píng)價(jià)一個(gè)模型好壞的指標(biāo),即平均精度AP(Average Precision),AP值越高,表示模型越好。
(7)
式中:∑Precisionc表示類別C在每幅圖片上的準(zhǔn)確率的和;N(TotalImages)c表示含有類別C的圖片數(shù)目。
本文將調(diào)參之后的YOLO-resnet網(wǎng)絡(luò)的訓(xùn)練結(jié)果與目前的一些主流的深度學(xué)習(xí)網(wǎng)絡(luò)進(jìn)行了對(duì)比,分別包括Faster R-CNN算法,SSD算法和YOLOv3算法。其中,在對(duì)主流網(wǎng)絡(luò)的訓(xùn)練和測(cè)試中,本文選取了與YOLO-resnet算法相同的訓(xùn)練參數(shù)和數(shù)據(jù)集,以保證實(shí)驗(yàn)的準(zhǔn)確性。對(duì)比結(jié)果如表1所示。
表1 不同模型在相同數(shù)據(jù)集下的AP值和準(zhǔn)確率
實(shí)驗(yàn)結(jié)果表明,F(xiàn)aster R-CNN算法和SSD算法的識(shí)別精度較低,不能對(duì)寵物狗目標(biāo)進(jìn)行實(shí)時(shí)且較為準(zhǔn)確的檢測(cè)。雖然YOLOv3算法在相同數(shù)據(jù)集上的準(zhǔn)確率和AP值明顯優(yōu)于前面兩種算法,分別為98.5%和89.8%,但與本文算法相比,通過(guò)改進(jìn)特征提取后的YOLO-resnet算法對(duì)狗臉的識(shí)別準(zhǔn)確率可以達(dá)到99.2%,滿足了對(duì)狗臉目標(biāo)的高準(zhǔn)確率識(shí)別的要求。
此外,本文還從測(cè)試集中選取了一些小目標(biāo)圖像、狗臉被遮擋的圖像、復(fù)雜環(huán)境下的圖像進(jìn)行了測(cè)試,各種算法的識(shí)別效果如圖4和圖5所示。
(a) Faster R-CNN (b) SSD
(a) Faster R-CNN (b) SSD
如圖4所示,該圖像場(chǎng)景復(fù)雜,目標(biāo)遮擋比較嚴(yán)重,待檢測(cè)目標(biāo)小且不明顯。Faster R-CNN算法和SSD算法均無(wú)法檢測(cè)出目標(biāo);而YOLOv3算法雖然檢測(cè)了目標(biāo),但對(duì)目標(biāo)進(jìn)行了錯(cuò)檢;只有本文算法準(zhǔn)確地將目標(biāo)檢測(cè)了出來(lái)。
如圖5所示,待檢測(cè)的狗臉目標(biāo)被鐵絲網(wǎng)所遮擋,檢測(cè)難度大大增加。Faster R-CNN算法和SSD算法雖然都檢測(cè)出了目標(biāo),但是只檢測(cè)出一個(gè)目標(biāo)且準(zhǔn)確率較低;YOLOv3算法雖然檢測(cè)出了所有的目標(biāo),但是準(zhǔn)確率較低;而本文算法不但將目標(biāo)全部檢測(cè)出,且檢測(cè)結(jié)果明顯高于其他的算法。
近年來(lái),基于深度學(xué)習(xí)的目標(biāo)檢測(cè)方法成為研究的熱點(diǎn),雖然這些算法在目標(biāo)檢測(cè)上取得了很好的效果,但現(xiàn)在需要識(shí)別的目標(biāo)更多且難度更大,在理論和精度上有進(jìn)一步提升的空間。因此,本文利用深度學(xué)習(xí)下的YOLOv3目標(biāo)檢測(cè)算法,在原先使用Darknet-53網(wǎng)絡(luò)結(jié)構(gòu)提取特征的基礎(chǔ)上,融合了殘差網(wǎng)絡(luò),改進(jìn)了其特征提取部分,從而實(shí)現(xiàn)對(duì)目標(biāo)的檢測(cè)。通過(guò)實(shí)驗(yàn)結(jié)果分析發(fā)現(xiàn),此方法的平均準(zhǔn)確率達(dá)到99.2%。相比于傳統(tǒng)的機(jī)器學(xué)習(xí)方法,其準(zhǔn)確率有了大大的提升。但是隨著網(wǎng)絡(luò)的加深,訓(xùn)練所用的時(shí)間也有所增加,下一步將對(duì)該模型采取新的措施,在保證其準(zhǔn)確率不變的情況下,縮短訓(xùn)練時(shí)間。