舒 軍,吳 柯
(湖北工業(yè)大學(xué)電氣與電子工程學(xué)院,湖北 武漢 430068)
隨著傳感器技術(shù)、深度學(xué)習(xí)和圖像處理技術(shù)的發(fā)展,航空攝影被廣泛地應(yīng)用于救援追蹤、生態(tài)研究、軍事領(lǐng)域等方面。航空攝影圖像的分辨率大小通常超過4096×2160,而待測(cè)目標(biāo)在其中的像素可小至16×10,在這樣大范圍的超高清分辨率[1]圖像中檢測(cè)識(shí)別出微小像素目標(biāo),特別是實(shí)時(shí)定位這些目標(biāo)對(duì)象,仍然是一項(xiàng)艱巨的挑戰(zhàn)。
目前基于深度學(xué)習(xí)的圖像實(shí)時(shí)檢測(cè)分類算法模型主要使用SSD[2]、YOLO[3]、SqueezeDet[4]等算法框架;其中YOLOv3實(shí)時(shí)檢測(cè)識(shí)別框架[5]由Redmon,Joseph和Farhadi于2018年提出,其識(shí)別速度快,檢測(cè)精準(zhǔn)度高,并能同時(shí)檢測(cè)多尺度分辨率的目標(biāo),適用于同一鏡頭的多目標(biāo)識(shí)別領(lǐng)域。但該方法直接用來檢測(cè)航拍圖像中的小分辨率目標(biāo)時(shí)會(huì)出現(xiàn)遮擋漏檢情況,對(duì)密集群體的檢測(cè)效果亦不甚良好,需要對(duì)YOLOv3算法進(jìn)行改進(jìn)以適應(yīng)航拍圖像中的目標(biāo)檢測(cè)。
YOLO(You Only Look Once)模型是第一個(gè)端到端(End-to-End)的深度學(xué)習(xí)檢測(cè)算法,其借鑒了GoogleNet[6]分類網(wǎng)絡(luò)結(jié)構(gòu),提取特征的過程只需要一次前向運(yùn)算,并同時(shí)進(jìn)行訓(xùn)練和檢測(cè),因此以檢測(cè)速度見長。YOLOv2[7]使用了VGGNet[8]的網(wǎng)絡(luò)結(jié)構(gòu),又稱YOLO9000,能滿足9000多種不同類別目標(biāo)的快速檢測(cè)。YOLOv3借鑒了ResNet殘差網(wǎng)絡(luò)[9]結(jié)構(gòu),并加入了FPN[10](Feature Pyramid Networks)網(wǎng)絡(luò)結(jié)構(gòu),在前兩代的基礎(chǔ)上提升了精準(zhǔn)度,同時(shí)保證了檢測(cè)速度。
YOLOv3模型的骨干框架使用53層卷積的殘差網(wǎng)絡(luò)結(jié)構(gòu),故YOLOv3神經(jīng)網(wǎng)絡(luò)又被稱為DarkNet-53,其由一系列的3×3和1×1的卷積層組成,其中包含23個(gè)殘差模塊和檢測(cè)通道的全連接層。除訓(xùn)練框架外YOLOv3還劃分三種不同柵格大小的特征檢測(cè)通道,包括52×52、26×26、13×13柵格大小的特征圖,分別對(duì)應(yīng)小、中、大尺度特征的圖像檢測(cè),因此網(wǎng)絡(luò)在訓(xùn)練時(shí)保留了小型目標(biāo)的像素特征信息,對(duì)小物體的檢測(cè)效果良好。
本文使用DOTA-v1.0數(shù)據(jù)集[11],其為武漢大學(xué)遙感國重實(shí)驗(yàn)室與華中科技大學(xué)電信學(xué)院聯(lián)合制作的大型遙感開源數(shù)據(jù)集,其內(nèi)包含2806張遙感圖像,分辨率800×800至4000×4000不等,共15種類別,包含了小型汽車、飛機(jī)、足球場(chǎng)等尺度跨越大的目標(biāo)對(duì)象,因此該數(shù)據(jù)集適合作為航拍目標(biāo)識(shí)別的實(shí)驗(yàn)研究對(duì)象。
在使用深度學(xué)習(xí)方法對(duì)傳統(tǒng)目標(biāo)進(jìn)行訓(xùn)練檢測(cè)時(shí),其圖像的分辨率大小通常只有數(shù)百,目標(biāo)在圖像中所占的比例大于10%,且同一副圖像中存在不同種類目標(biāo)的數(shù)量較少;而航拍圖像在進(jìn)行訓(xùn)練檢測(cè)時(shí)區(qū)別較大,需要考慮其以下幾個(gè)特點(diǎn)。
1)超高清分辨率:原始圖像像素分辨率太大,圖像按原始尺寸輸入神經(jīng)網(wǎng)絡(luò)造成內(nèi)存不足,壓縮輸入后又導(dǎo)致圖像中小目標(biāo)像素特征的丟失;
2)旋轉(zhuǎn)不變性:實(shí)際高空拍攝的目標(biāo)包含了各個(gè)方向的朝向,但訓(xùn)練的樣本圖像只包含了某部分的朝向;
3)樣本數(shù)量少:該類圖像樣本數(shù)量相對(duì)少,且一幅圖像中可能同時(shí)包含幾十上百個(gè)待測(cè)目標(biāo)對(duì)象,在訓(xùn)練過程中容易發(fā)生過擬合現(xiàn)象。
在對(duì)航拍數(shù)據(jù)集進(jìn)行訓(xùn)練前,需要考慮以上因素來對(duì)深度學(xué)習(xí)算法進(jìn)行改進(jìn)。
由于航拍圖像數(shù)據(jù)集與傳統(tǒng)的圖像數(shù)據(jù)集差別較大,其包含的小型和中型目標(biāo)多而大型目標(biāo)少,一副樣本圖像包含的范圍大,即使待測(cè)目標(biāo)是一個(gè)足球場(chǎng),相對(duì)整張圖片所占的比例也不超過20%,因此使用原YOLOv3網(wǎng)絡(luò)結(jié)構(gòu)將特征圖大小劃分為52×52、26×26、13×13顯然已經(jīng)不合適。
本研究劃分特征圖大小為104×104、52×52、26×26,加入了劃分更加細(xì)微的特征信息,同時(shí)刪減了大型尺度的特征。改進(jìn)后的網(wǎng)絡(luò)整體結(jié)構(gòu)如圖1,其中共包含24個(gè)殘差模塊,在淺層網(wǎng)絡(luò)中增加了卷積層和殘差連接結(jié)構(gòu)的數(shù)量,這樣可以提升更深層網(wǎng)絡(luò)特征的細(xì)粒度,然后從此后部分更深層的網(wǎng)絡(luò)中,提取三種不同尺度的特征信息分別輸入檢測(cè)通道,深層網(wǎng)絡(luò)的檢測(cè)通道向淺層進(jìn)行上采樣,以豐富淺層的特征信息,來提升小型目標(biāo)的檢測(cè)精準(zhǔn)度。
圖1 改進(jìn)后YOLOv3網(wǎng)絡(luò)的整體結(jié)構(gòu)
本研究在訓(xùn)練DOTA-v1.0數(shù)據(jù)集前,使用K-means++[12]對(duì)DOTA-v1.0樣本圖片進(jìn)行聚類,設(shè)置適合其數(shù)據(jù)集的9個(gè)大小不一的先驗(yàn)框,神經(jīng)網(wǎng)絡(luò)在訓(xùn)練階段會(huì)優(yōu)先使用這9個(gè)先驗(yàn)框去匹配圖像中的目標(biāo),從而快速找到目標(biāo)以提取像素特征信息。因此能夠提升訓(xùn)練速度,縮短達(dá)到擬合的時(shí)間,聚類得到對(duì)應(yīng)尺度的先驗(yàn)框大小見表1。
表1 三種尺度的先驗(yàn)框分辨率大小
由于改進(jìn)YOLOv3使用了104×104、52×52、26×26柵格大小的特征輸入檢測(cè)通道,在訓(xùn)練輸入的圖像分辨率為416×416的情況下,能夠檢測(cè)的目標(biāo)最低分辨率為4×4(圖像尺寸除以柵格大小,即416/104),但對(duì)于DOTA-v1.0數(shù)據(jù)集中4000×4000分辨率的原始圖像,在以416×416分辨率輸入時(shí),因其像素特征縮小10倍,已經(jīng)無法檢測(cè)出原有的小目標(biāo),在訓(xùn)練前使用一種滑窗裁剪策略,在輸入圖像前,將一張?jiān)紙D像滑窗裁剪為多張608×608分辨率的圖像,然后再經(jīng)過416×416壓縮輸入,這種方法使得原始圖像中的像素特征信息得以盡可能地保留。
在滑窗裁剪時(shí)設(shè)置10%的重疊率,防止將其中的目標(biāo)對(duì)象一分為二時(shí)導(dǎo)致像素特征信息被破壞。本實(shí)驗(yàn)從DOTA-v1.0數(shù)據(jù)集中選取1869張帶目標(biāo)標(biāo)簽信息的圖像,裁剪后得到圖片19219張,其中4/5作為訓(xùn)練集參與網(wǎng)絡(luò)訓(xùn)練,1/5作為驗(yàn)證集來分析分類檢測(cè)的效果。
本研究的實(shí)驗(yàn)硬軟件環(huán)境:系統(tǒng)平臺(tái)為Ubuntu16.04,CPU為Intel Core i5-4590 ,GPU為GTX1080Ti,GPU加速為CUDA8.0 cuDNN6.0,編譯環(huán)境為gcc/g++5.0 OpenCV3.4.0,算法框架為改進(jìn)YOLOv3-416。
在進(jìn)行航拍模型訓(xùn)練時(shí),將訓(xùn)練集中的原始圖像按416×416輸入,每批次訓(xùn)練64張圖像,分16組輸入。每次輸入時(shí)生成±1.5倍飽和度和±1.5倍曝光量的樣本,以及±0.1比例色調(diào)的樣本,這些圖像會(huì)首先經(jīng)過骨干訓(xùn)練網(wǎng)絡(luò),然后在多尺度訓(xùn)練網(wǎng)絡(luò)繼續(xù)生成尺寸調(diào)整后的樣本,整體訓(xùn)練流程見圖2。
圖2 模型訓(xùn)練流程圖
對(duì)于訓(xùn)練參數(shù),設(shè)置最優(yōu)化方法動(dòng)量參數(shù)為0.9,權(quán)重衰減正則項(xiàng)為0.000 5,學(xué)習(xí)率0.001,迭代到45 000次時(shí)學(xué)習(xí)率降低10%,迭代到50 000次時(shí)學(xué)習(xí)率再降低10%,訓(xùn)練時(shí)每1000次迭代保存一次模型,超過1000次迭代數(shù)后每10 000次保存一次模型。實(shí)驗(yàn)首先迭代50 000次,后續(xù)在該基礎(chǔ)上繼續(xù)迭代30 000次,共迭代80 000次,總共訓(xùn)練圖片5 120 000張。
訓(xùn)練完畢后,從導(dǎo)出的log日志文件中提取關(guān)鍵詞信息,繪制出loss曲線以及IoU值統(tǒng)計(jì)圖像(圖3)。
(a)模型平均loss值走勢(shì)
(b)模型的IoU統(tǒng)計(jì)值圖3 模型的loss曲線和IoU曲線
從圖3a中可以看到,模型的loss值在前10 000次迭代中迅速降低到3左右,隨后逐漸平滑,穩(wěn)定在2左右;而在迭代50 000次時(shí)loss值有明顯的起伏,這是由于實(shí)驗(yàn)在進(jìn)行到50 000次時(shí)暫停了訓(xùn)練,后續(xù)又將這50 000次迭代模型作為初始權(quán)重模型繼續(xù)迭代了30 000次,故loss出現(xiàn)突然的起伏后迅速回到正常范圍,但后續(xù)的迭代過程loss值已經(jīng)沒有下降的趨勢(shì)。整體來看,訓(xùn)練模型迭代到80 000次時(shí)模型已經(jīng)趨于穩(wěn)定,最終loss值在2左右,表明模型的檢測(cè)性能良好。
從圖3b中可以看到,隨著迭代次數(shù)的增加,IoU的值逐漸達(dá)到0.6以上,并有大量值接近1.0,說明模型預(yù)測(cè)框與對(duì)象實(shí)際框的匹配度較高。
在使用改進(jìn)YOLOv3網(wǎng)絡(luò)與原網(wǎng)絡(luò)進(jìn)行對(duì)比時(shí),都保留了相同的參數(shù)設(shè)置和預(yù)處理操作。在選取模型時(shí),一般選取IoU及mAP值最高的權(quán)重模型作為對(duì)比,但訓(xùn)練到80 000次時(shí),這些指標(biāo)的變化差異已經(jīng)非常小,為了方便直觀地進(jìn)行對(duì)比,都統(tǒng)一選取迭代80 000次的模型來進(jìn)行對(duì)比,具體性能指標(biāo)見表2。
表2 改進(jìn)前后各項(xiàng)類別具體性能對(duì)比
從表2可以看到,兩種模型對(duì)飛機(jī)、船、網(wǎng)球場(chǎng)和港口的檢測(cè)性能較好,原因是這幾個(gè)類別的樣本數(shù)量相對(duì)較多;而小型汽車的樣本數(shù)量較多但檢測(cè)效果一般,原因是小型汽車的分辨率太小,在輸入原始圖像檢測(cè)時(shí),一部分過小目標(biāo)的像素特征變得不明顯,而大型汽車的分辨率稍大,故檢測(cè)效果比小型汽車更好。對(duì)于網(wǎng)球場(chǎng),檢測(cè)性能基本沒有提升,這是由于網(wǎng)球場(chǎng)的分辨率本身就較大,即使將原圖壓縮后輸入訓(xùn)練,提取的特征信息仍然比較完整。
整體來看,改進(jìn)后的網(wǎng)絡(luò)對(duì)15種類別的目標(biāo)都有較大提升,這是由于改進(jìn)后網(wǎng)絡(luò)生成了更少的真實(shí)負(fù)樣本(FP)參與驗(yàn)證,且樣本數(shù)量越多,檢測(cè)的準(zhǔn)確率一般也會(huì)相應(yīng)增加。
表3 改進(jìn)前后綜合指標(biāo)對(duì)比
從表3可以看到,改進(jìn)后模型與改進(jìn)前進(jìn)行對(duì)比時(shí),檢出率由64%提升到79%,提升了15.0%;召回率由66%提升至68%;F1分?jǐn)?shù)提升了0.08;mAP-50從46.5%提升到57.0%,提升了10.5%;FPS由19.8提升至20.4。綜合上述,實(shí)驗(yàn)證明了改進(jìn)YOLOv3網(wǎng)絡(luò)模型對(duì)比原網(wǎng)絡(luò)擁有更好的實(shí)時(shí)檢測(cè)性能。
本文針對(duì)航拍目標(biāo)識(shí)別提出了一種改進(jìn)的YOLOv3算法,該方法加入104×104特征分辨率的檢測(cè)模塊并刪減了13×13特征分辨率的檢測(cè)模塊,同時(shí)增加了淺層網(wǎng)絡(luò)的層數(shù),用于提取更加細(xì)微的像素特征;并針對(duì)DOTA-v1.0數(shù)據(jù)集樣本使用K-means++聚類,得到9個(gè)先驗(yàn)框來參與模型訓(xùn)練。實(shí)驗(yàn)表明,改進(jìn)后的YOLOv3檢測(cè)算法的檢出率提升了15.0%,mAP-50提升了10.5%,對(duì)于航拍圖像目標(biāo)的實(shí)時(shí)檢測(cè)具有一定的參考意義。
由于原始航拍圖像分辨率太大,即使在訓(xùn)練時(shí)保留了分辨率特征信息,但將整張圖片直接壓縮輸入后,難免會(huì)破壞原有分辨率特征,因此平均準(zhǔn)確度不高;未來還應(yīng)在保證實(shí)時(shí)檢測(cè)速度的情況下,對(duì)檢測(cè)時(shí)的圖像輸入模塊進(jìn)行優(yōu)化。