黃開(kāi)啟, 劉小榮, 黃茂云
(江西理工大學(xué) 電氣工程與自動(dòng)化學(xué)院,江西 贛州 341000)
小目標(biāo)不僅存在一般圖像中[1],還廣泛存在于無(wú)人機(jī)攝像頭以及一些架設(shè)較高的圖像捕獲裝置所拍攝的圖像中,研究小目標(biāo)檢測(cè)在安防、交通、救援等方面具有重要的應(yīng)用價(jià)值。Lin T Y等人[2]提出的FPN使用采樣的方式融合了細(xì)節(jié)信息較多的底層特征和語(yǔ)義較多的高層特征,增強(qiáng)深度特征對(duì)于小目標(biāo)的表達(dá)能力。Mathe S等人[3]提出使用強(qiáng)化學(xué)習(xí)做目標(biāo)檢測(cè),但該方法的精度與其他方法相差較大。Li J等人[4]使用生成對(duì)抗網(wǎng)絡(luò)(GAN)生成強(qiáng)化小目標(biāo)的特征。Takeki A[5]、Eggert C等人[6]針對(duì)某一應(yīng)用場(chǎng)景對(duì)小目標(biāo)檢測(cè)算法進(jìn)行特定研究,但對(duì)于其他小目標(biāo)和常規(guī)目標(biāo)的檢測(cè)效果往往不如通用的目標(biāo)檢測(cè)方法。國(guó)內(nèi)關(guān)于目標(biāo)檢測(cè)的研究主要集中在SSD[7]算法、YOLO[8]算法以及Faster R-CNN[9]算法。這些方法對(duì)于常規(guī)的目標(biāo)檢測(cè)有較好的結(jié)果,但對(duì)于小目標(biāo)的檢測(cè)問(wèn)題卻不太理想。SSD算法對(duì)過(guò)小的目標(biāo)檢測(cè)時(shí),真實(shí)邊框很難找到相應(yīng)的默認(rèn)邊框與它進(jìn)行匹配,檢測(cè)的效果不好[10]。基于R-CNN[11]的目標(biāo)檢測(cè)算法對(duì)小目標(biāo)檢測(cè)相對(duì)較好,但檢測(cè)速度較慢,而且對(duì)于聚集性比較強(qiáng)的小目標(biāo)檢測(cè)效果較差。與SSD算法相比,YOLOv3[12]擁有更高的檢測(cè)精度以及更快的處理速度;與Faster R-CNN相比,YOLOv3可以實(shí)現(xiàn)端到端的訓(xùn)練,減少了模型訓(xùn)練的復(fù)雜度并且能大幅提升圖像的處理速度。仇男豪等人[13]通過(guò)去除大尺度目標(biāo)檢測(cè)新增小尺度檢測(cè)并通過(guò)引用交并比損失函數(shù)的方式提高無(wú)人機(jī)對(duì)地面小目標(biāo)的檢測(cè)效果。但對(duì)于低空檢測(cè)的效果不佳;任嘉鋒等人[14]新增低層特征圖與高層特征圖融合拼接并加入Maxpool的方式增強(qiáng)特征圖中的細(xì)節(jié)特征。但引入最大池化后可能會(huì)造成欠擬合,導(dǎo)致信息損失的問(wèn)題。魏瑋[15]、王思元[16]等人通過(guò)對(duì)YOLOv3原網(wǎng)絡(luò)結(jié)構(gòu)進(jìn)行改進(jìn),增強(qiáng)對(duì)小目標(biāo)的識(shí)別效果并降低小目標(biāo)的漏檢率。歐陽(yáng)樂(lè)誠(chéng)等人[17]則是通過(guò)增加YOLOv3的多尺度預(yù)測(cè)方式來(lái)提高對(duì)小目標(biāo)的檢測(cè)效果。
為了提高算法在小目標(biāo)檢測(cè)方面的普適性和準(zhǔn)確性,本文在YOLOv3算法的基礎(chǔ)上進(jìn)行改進(jìn),利用優(yōu)化K-means算法對(duì)數(shù)據(jù)集中目標(biāo)框進(jìn)行聚類(lèi)分析,通過(guò)聚類(lèi)選出合適的錨點(diǎn)寬高維度作為改進(jìn)網(wǎng)絡(luò)的初始候選框,從而有效提高目標(biāo)的檢測(cè)精度。
YOLOv3網(wǎng)絡(luò)中第1層到75層為Darknet—53結(jié)構(gòu),這個(gè)網(wǎng)絡(luò)主要由一系列的1×1和3×3的卷積層組成。從76到106層為YOLOv3網(wǎng)絡(luò)的特征交互層,分為三個(gè)尺度分別為13×13,26×26,52×52,每個(gè)尺度內(nèi)通過(guò)卷積核的方式實(shí)現(xiàn)局部的特征交互,作用類(lèi)似于全連接層,但通過(guò)卷積核(1×1和3×3)的方式實(shí)現(xiàn)特征圖之間的局部特征交互。
YOLOv3在輸出的3個(gè)尺度的特征圖中,每組特征圖都對(duì)應(yīng)了通過(guò)K-means聚類(lèi)計(jì)算得到的3個(gè)不同尺度的錨點(diǎn),并通過(guò)預(yù)測(cè)不同錨點(diǎn)對(duì)應(yīng)的偏移量來(lái)實(shí)現(xiàn)目標(biāo)邊界框的回歸。傳統(tǒng)的K-means聚類(lèi)通常采用歐氏距離或曼哈頓距離來(lái)計(jì)算數(shù)據(jù)對(duì)象間的距離,算法的詳細(xì)流程如下:
1)首先確定一個(gè)K值,即希望將數(shù)據(jù)集經(jīng)過(guò)聚類(lèi)得到K個(gè)類(lèi)簇;
2)從數(shù)據(jù)集中隨機(jī)選擇K個(gè)數(shù)據(jù)點(diǎn)作為質(zhì)心;
3)計(jì)算數(shù)據(jù)集中剩余點(diǎn)于每個(gè)質(zhì)心之間的距離(如歐氏距離),將各個(gè)點(diǎn)劃分到距離其較近的質(zhì)心所在類(lèi)簇;
4)重新計(jì)算每個(gè)類(lèi)簇的質(zhì)心;
5)如果新計(jì)算出來(lái)的質(zhì)心和原來(lái)的質(zhì)心之間的距離小于一個(gè)設(shè)置的閾值,則可以認(rèn)為聚類(lèi)已經(jīng)達(dá)到期望的結(jié)果,否則返回至第3步。
在YOLOv3中關(guān)于距離的定義是計(jì)算真實(shí)框與預(yù)測(cè)框之間的IOU,其值與目標(biāo)框尺寸無(wú)關(guān)。所以,使用IOU定義K-means聚類(lèi)損失函數(shù)可以消除大框優(yōu)勢(shì)效應(yīng)。距離公式如下
d(boxj,centriodi)=1-IOU(boxj,centriodi)
(1)
式中boxj為第j個(gè)目標(biāo)框尺寸,j=1,2,...,N;centriodi為第i個(gè)聚類(lèi)中心框尺寸,i=1,2,...,K。d越小,說(shuō)明兩個(gè)box越類(lèi)似。最終聚類(lèi)目標(biāo)函數(shù)為
(2)
YOLOv3網(wǎng)絡(luò)采用三尺度特征圖對(duì)應(yīng)不同大小的錨框。尺度越小,則感受野越大,分辨率越小,對(duì)小目標(biāo)越不敏感。原網(wǎng)絡(luò)主要在8倍降采樣的輸出特征圖上進(jìn)行小目標(biāo)檢測(cè),這意味著在對(duì)于小于8×8的特征圖進(jìn)行檢測(cè)時(shí)會(huì)出現(xiàn)困難,雖然對(duì)16倍以及32倍降采樣的輸出特征圖進(jìn)行上采樣,并與8倍降采樣特征圖進(jìn)行融合以增強(qiáng)8倍降采樣特征圖,但這一操作并不能提供更多小目標(biāo)的特征信息。為提高網(wǎng)絡(luò)對(duì)小目標(biāo)檢測(cè)的普適性,本文在保留原網(wǎng)絡(luò)三層采樣檢測(cè)的前提下,選擇將Darknet—53網(wǎng)絡(luò)的第36層和11層進(jìn)行拼接融合到小目標(biāo)檢測(cè)層,以提高對(duì)小目標(biāo)的檢測(cè)精度。
卷積神經(jīng)網(wǎng)絡(luò)的卷積層數(shù)越深,對(duì)目標(biāo)特征提取有越好的效果。為獲得更高的語(yǔ)義信息,對(duì)Darknet—53網(wǎng)絡(luò)結(jié)構(gòu)進(jìn)行了改進(jìn),在主干網(wǎng)絡(luò)中額外增加2個(gè)1×1和3×3的卷積層。增加卷積層的優(yōu)勢(shì)主要體現(xiàn)在以下幾個(gè)方面:1)增加1×1卷積有利于降低卷積核通道維數(shù)與參數(shù),從而簡(jiǎn)化卷積神經(jīng)網(wǎng)絡(luò);2)增加的1×1和3×3的卷積核,在不損失分辨率的前提下增加非線性激勵(lì),提升表達(dá)能力;3)更好實(shí)現(xiàn)跨通道信息交互。改進(jìn)后的YOLOv3算法結(jié)構(gòu)如圖1所示。
圖1 改進(jìn)YOLOv3網(wǎng)絡(luò)結(jié)構(gòu)
針對(duì)傳統(tǒng)K-means算法初始點(diǎn)的選取隨機(jī)性較大,影響聚類(lèi)精度的問(wèn)題,本文將最大最小距離積法[18,19]用于K-means算法的聚類(lèi)中心初始化過(guò)程,降低初始點(diǎn)對(duì)算法的影響,具體步驟如下:
1)從數(shù)據(jù)集M中任意選取一個(gè)數(shù)據(jù)元素作為首個(gè)初始點(diǎn)z1,將此元素放入集合Z并從集合M中刪除;
2)計(jì)算更新后M中所有元素到z1的距離,選取距離z1最大的元素為z2;
3)將選取的點(diǎn)放入集合Z中并從M刪除;
4)分別求得更新后M中的元素到Z中各個(gè)元素的距離并放入集合T中;
5)找出M中每個(gè)元素對(duì)應(yīng)的集合T中的最大距離和最小距離值,求其乘積,并將最大乘積值對(duì)應(yīng)的元素從M中刪除,存入Z中。若Z中元素個(gè)數(shù)小于k,則轉(zhuǎn)到步驟(3),若Z中元素個(gè)數(shù)大于k,則初始點(diǎn)選取結(jié)束,輸出包含k個(gè)初始點(diǎn)的集合Z,即為求得的初始聚類(lèi)中心。其中,k是規(guī)定的聚類(lèi)個(gè)數(shù);集合Z用來(lái)存儲(chǔ)最大最小距離積方法得到的k個(gè)初始點(diǎn);集合T存儲(chǔ)Z中各元素到M中各個(gè)元素距離的數(shù)組。
從以上步驟可以看出,采用最大最小距離積的方法能夠很好地避免初始點(diǎn)選取的隨機(jī)性,提高聚類(lèi)精度。本文利用優(yōu)化的K-means重新聚類(lèi),精確率達(dá)到78.00 %,設(shè)計(jì)的錨框如表1所示。
表1 數(shù)據(jù)集聚類(lèi)結(jié)果
目標(biāo)檢測(cè)效果有多種評(píng)價(jià)標(biāo)準(zhǔn),其中較為常見(jiàn)的有交并比[20]、召回率(recall)、精確度、平均精確率均值(mAP)[21]、漏檢率等。IOU為兩個(gè)矩形框的交集與并集比值,用于表示矩形框A和B的重疊程度,定義公式如式(3),精確度、召回率以及漏檢率公式如式(4)~式(6)
(3)
(4)
(5)
漏檢率=1-Recall
(6)
式中TP為被正確分類(lèi)的目標(biāo),F(xiàn)N為沒(méi)有被識(shí)別的目標(biāo),F(xiàn)P為被錯(cuò)誤分類(lèi)的目標(biāo)。
本文研究的小目標(biāo)檢測(cè)算法主要應(yīng)用于室外低空(相當(dāng)于地面觀察目標(biāo))航拍救援中,而關(guān)于室外的航拍數(shù)據(jù)集航拍距離地面過(guò)高,空中觀察目標(biāo)與地面觀察目標(biāo)相比存在較大的尺度和形狀變化,而且航拍數(shù)據(jù)集中很少有包括人的檢測(cè)類(lèi)別,這不利于視覺(jué)檢測(cè)訓(xùn)練。所以,本文選取從網(wǎng)絡(luò)中搜集到的關(guān)于室外小目標(biāo)的圖片并使用LabelImg開(kāi)源軟件對(duì)圖像中的目標(biāo)進(jìn)行標(biāo)注,然后與VOC數(shù)據(jù)集一起進(jìn)行訓(xùn)練。選取的數(shù)據(jù)集樣本如圖2所示。
圖2 新增數(shù)據(jù)集示例圖片
本文的實(shí)驗(yàn)環(huán)境配置如下:Intel?CoreTMi7—8700 CPU處理器,操作系統(tǒng)為Ubuntu18.04。使用Darknet源碼作為深度學(xué)習(xí)框架。對(duì)改進(jìn)的算法模型進(jìn)行訓(xùn)練,隨著迭代次數(shù)的不斷增加,平均損失函數(shù)的變化趨勢(shì)如圖3所示。
圖3 平均損失函數(shù)趨勢(shì)
由圖3可以看出,訓(xùn)練開(kāi)始時(shí)的損失函數(shù)值約為937,隨著訓(xùn)練迭代次數(shù)的增加,損失值逐漸減小,趨勢(shì)逐漸平穩(wěn),迭代至50 000次時(shí)的損失值在0.5上下浮動(dòng),即達(dá)到理想效果。調(diào)用訓(xùn)練生成的權(quán)重文件對(duì)圖片進(jìn)行測(cè)試,測(cè)試效果如圖4所示。
圖4 檢測(cè)結(jié)果對(duì)比
對(duì)同一訓(xùn)練集分別使用K-means聚類(lèi)的YOLOv3算法、K-means聚類(lèi)的改進(jìn)YOLOv3、優(yōu)化K-means聚類(lèi)的YOLOv3、優(yōu)化K-means聚類(lèi)的改進(jìn)YOLOv3四種網(wǎng)絡(luò)進(jìn)行對(duì)比實(shí)驗(yàn)。分別使用每輪訓(xùn)練最終生成的權(quán)重文件對(duì)同一圖片進(jìn)行檢測(cè),平均測(cè)試時(shí)間、平均漏檢率和mAP值統(tǒng)計(jì)結(jié)果如表2所示。由表2可見(jiàn),改進(jìn)的YOLOv3網(wǎng)絡(luò)比原YOLOv3網(wǎng)絡(luò)檢測(cè)的平均測(cè)試時(shí)間僅延長(zhǎng)了0.196 s,并不影響算法的檢測(cè)速度,mAP提高了1.8 %;使用優(yōu)化K-means聚類(lèi)的改進(jìn)YOLOv3算法比K-means聚類(lèi)的YOLOv3算法平均漏檢率降低了4.9 %和mAP提高了5.2 %,使用優(yōu)化K-means聚類(lèi)的改進(jìn)YOLOv3效果最優(yōu)。
表2 不同網(wǎng)絡(luò)結(jié)構(gòu)測(cè)試性能對(duì)比
本文提出一種改進(jìn)YOLOv3的小目標(biāo)檢測(cè)方法。首先使用優(yōu)化K-means算法對(duì)錨(anchor)參數(shù)進(jìn)行優(yōu)化,其次通過(guò)改進(jìn)YOLOv3網(wǎng)絡(luò)結(jié)構(gòu)進(jìn)行目標(biāo)特征提取,最后通過(guò)優(yōu)化K-means聚類(lèi)的改進(jìn)YOLOv3網(wǎng)絡(luò)實(shí)現(xiàn)特征拼接進(jìn)而實(shí)現(xiàn)對(duì)小目標(biāo)的優(yōu)化檢測(cè)。得到以下結(jié)論:
1)使用優(yōu)化K-means聚類(lèi)算法替代K-means聚類(lèi)算法,對(duì)YOLOv3算法中的anchor參數(shù)進(jìn)行優(yōu)化。實(shí)驗(yàn)表明,優(yōu)化K-means聚類(lèi)的YOLOv3比未優(yōu)化的網(wǎng)絡(luò)mAP提高了2.6 %,在一定程度上提高了小目標(biāo)檢測(cè)的準(zhǔn)確性。2)針對(duì)原YOLOv3算法中小目標(biāo)檢測(cè)存在漏檢率高的問(wèn)題,提出改進(jìn)YOLOv3網(wǎng)絡(luò)結(jié)構(gòu),改進(jìn)后的YOLOv3和未改進(jìn)前相比較,有效降低了漏檢率,同時(shí)mAP提高了1.8 %。
本文所研究的室外視覺(jué)檢測(cè)效果均是在白天晴朗環(huán)境下的,而對(duì)困于洪澇災(zāi)害的人員的搜救往往是在惡劣的環(huán)境中,所以,尋求適應(yīng)各種環(huán)境下的目標(biāo)檢測(cè)方法是接下來(lái)研究的重點(diǎn)方向。