劉洋
[摘 ? ?要] 航拍圖像目標(biāo)形態(tài)受顏色變化、長(zhǎng)寬比變化以及復(fù)雜背景的影響大,待檢測(cè)的目標(biāo)相對(duì)于圖片背景來(lái)說(shuō)屬于相對(duì)的小目標(biāo),特征提取不易。傳統(tǒng)的圖像處理方法檢測(cè)效果差,通過(guò)采用深度學(xué)習(xí)的方法可以實(shí)現(xiàn)對(duì)航拍圖像的準(zhǔn)確檢測(cè)。文章采用RetinaNet (Resnet + FPN + FCN)的方法成功解決這一難題題,實(shí)現(xiàn)了對(duì)于航拍圖片的精準(zhǔn)識(shí)別。RetinaNet中采用Focal loss損失函數(shù),通過(guò)在原有的CE loss上乘以使易檢測(cè)目標(biāo)對(duì)模型訓(xùn)練貢獻(xiàn)削弱的指數(shù)式,從而成功地解決了在目標(biāo)檢測(cè)時(shí)正負(fù)樣本區(qū)域極不平衡而目標(biāo)檢測(cè)loss易被大批量負(fù)樣本所左右的問(wèn)題。
[關(guān)鍵詞] 航拍圖像;目標(biāo)檢測(cè);深度學(xué)習(xí);特征提取;損失函數(shù)
doi : 10 . 3969 / j . issn . 1673 - 0194 . 2019. 19. 064
[中圖分類號(hào)] TP311 ? ?[文獻(xiàn)標(biāo)識(shí)碼] ?A ? ? ?[文章編號(hào)] ?1673 - 0194(2019)19- 0149- 03
1 ? ? ?國(guó)內(nèi)外航拍目標(biāo)檢測(cè)現(xiàn)狀
目前,航拍目標(biāo)檢測(cè)所采用的方法與技術(shù)多繼承自經(jīng)典目標(biāo)檢測(cè)算法,object detection的算法主要可以分為兩大類:two-stage detector和one-stage detector。前者是指類似Faster RCNN、RFCN這樣需要region proposal的檢測(cè)算法,這類算法可以達(dá)到很高的準(zhǔn)確率,但是速度較慢。雖然可以通過(guò)減少proposal的數(shù)量或降低輸入圖像的分辨率等方式達(dá)到提速,但是速度并沒(méi)有質(zhì)的提升。后者是指類似YOLO、SSD這樣不需要region proposal,直接回歸的檢測(cè)算法,這類算法速度很快,但是它當(dāng)前的檢測(cè)準(zhǔn)確度已經(jīng)落后于兩階段檢測(cè)器了。
對(duì)于two-stage的檢測(cè)器而言,通常分為兩個(gè)步驟,第一個(gè)步驟即產(chǎn)生合適的候選區(qū)域,而這些候選區(qū)域經(jīng)過(guò)篩選,一般控制一個(gè)比例(比如正負(fù)樣本1∶3),另外還通過(guò)hard negative mining(OHEM),控制難分樣本占據(jù)的比例,以解決樣本類別不均衡的問(wèn)題。但是對(duì)于one-stage的檢測(cè)器來(lái)說(shuō),盡管可以采用同樣的策略(OHEM)控制正負(fù)樣本,但是還是有缺陷。
2016年何愷明博士提出圖像識(shí)別中的深度殘差學(xué)習(xí)(Deep Residual Learning for Image Recognition),就是舉世聞名的152層深度殘差網(wǎng)絡(luò) ResNet-152。2017他又提出Focal Loss for Dense Object Detection,利用焦點(diǎn)損失提升物體檢測(cè)效果,這使得one-stage 目標(biāo)檢測(cè)器,首次達(dá)到了更復(fù)雜的 two-stage 檢測(cè)器所能實(shí)現(xiàn)的最高 COCO 平均精度。他們?cè)O(shè)計(jì)了一個(gè)one-stage目標(biāo)檢測(cè)器RetinaNet,在COCO test-dev 上取得了 39.1 AP 的成績(jī),超過(guò)目前公開(kāi)的單一模型在 one-stage 和 two-stage 檢測(cè)器上取得的最好成績(jī)。
為解決two-stage detector檢測(cè)算法精度高但是速度慢,one-stage detector檢測(cè)速度高但是精度相對(duì)較差的問(wèn)題,本文介紹使用改進(jìn)的RetinaNet來(lái)實(shí)現(xiàn)快速精確的航拍目標(biāo)檢測(cè)。
2 ? ? ?RetinaNet與航拍圖像檢測(cè)
2.1 ? RetinaNet概述
Retinanet的模型結(jié)構(gòu)如圖1所示。該模型采用Resnet50/Resnet101作為基礎(chǔ)網(wǎng)絡(luò)提取特征。之后用FPN(特征空間金字塔)進(jìn)行多尺寸地預(yù)測(cè)。共輸出三種尺寸的輸出,每種輸出為兩路進(jìn)行分類和box框的回歸,輸出時(shí)采用9個(gè)anchor(yolo v3 每個(gè)輸出采用3個(gè))。
首先多尺度上目標(biāo)識(shí)別是計(jì)算機(jī)視覺(jué)領(lǐng)域的一個(gè)基本挑戰(zhàn),解決這一挑戰(zhàn)的基本方法就是“基于圖像金字塔的特征金字塔(簡(jiǎn)稱為特征圖像金字塔)”,這些金字塔具有尺度不變性,可以通過(guò)掃描位置和金字塔層來(lái)檢測(cè)大范圍上的尺度。將圖像金字塔各層提取特征的主要好處就在于產(chǎn)生了一個(gè)多尺度特征表示,這個(gè)表示的所有層語(yǔ)義很強(qiáng),包括高精度的層。盡管這樣,然而對(duì)每層進(jìn)行特征提取有很明顯的限制,Inference time將急劇上升,在圖像金字塔上進(jìn)行end-to-end的訓(xùn)練內(nèi)存上也不可行,最多只能在測(cè)試的時(shí)候?qū)⒕陀靡幌?。Fast and Faster R-CNN也盡量避免采用這種方法。
Retinanet的主網(wǎng)絡(luò)部分采用的是FPN結(jié)構(gòu),兩個(gè)不同任務(wù)的子網(wǎng)絡(luò),一個(gè)是分類網(wǎng)絡(luò),一個(gè)是位置回歸網(wǎng)絡(luò),如圖1所示。
Retinanet的主網(wǎng)絡(luò)部分結(jié)構(gòu)并不與FPN中提到的結(jié)構(gòu)完全一致,Retinanet使用特征金字塔層P3,P4,P5,P6,P7,其中,P3,P4,P5與FPN中的產(chǎn)生方式一樣,通過(guò)上采樣和橫向連接從C3,C4,C5中產(chǎn)生,P6是在C5的基礎(chǔ)上通過(guò)3×3的卷積核,步長(zhǎng)為2的卷積得到的,P7在P6的基礎(chǔ)上加了個(gè)RELU再通過(guò)3×3的卷積核,步長(zhǎng)為2的卷積得到的。在P3-P7層上選用的anchors擁有的像素區(qū)域大小從32×32到512×512,每層之間的長(zhǎng)度是兩倍的關(guān)系。每個(gè)金字塔層有三種長(zhǎng)寬比例[1∶2 ,1∶1 ,2∶1],有三種尺寸大小[2^0,2^(1/3), 2^(2/3))??偣脖闶敲繉?個(gè)anchors。大小從32像素到813像素。其中32=(32x2^0)813=(512x2^(2/3))
分類子網(wǎng)絡(luò)和回歸子網(wǎng)絡(luò)的參數(shù)是分開(kāi)的,但結(jié)構(gòu)卻相似。都是用小型FCN網(wǎng)絡(luò),將金字塔層作為輸入,接著連接4個(gè)3x3的卷積層,fliter為金字塔層的通道數(shù)(論文中是256),每個(gè)卷積層后都有RELU激活函數(shù),這之后連接的是fliter為KA(K是目標(biāo)種類數(shù),A是每層的anchors數(shù),論文中是9)的3×3的卷積層,激活函數(shù)是sigmoid。另外Retinanet的主要亮點(diǎn)是損失函數(shù)(loss = focal loss(分類) + smooth L1 loss),下面重點(diǎn)講一下Focal Loss。
2.2 ?Focal Loss分析
直接應(yīng)用Retinanet引出一個(gè)問(wèn)題:在目標(biāo)檢測(cè)中,one stage效果較差于two stage的主要原因是one stage在訓(xùn)練時(shí)樣本比例不均衡(比如yolo v3等,在訓(xùn)練時(shí)要生成3×13×13 + 3×26×26 + 3×52×52 = 10 647個(gè)box,但這些box中真正有物體的也就幾個(gè),其他都是背景,這樣導(dǎo)致背景太多物體太少嚴(yán)重失衡;而two stage的faster-cnn通過(guò)RPN可以過(guò)濾掉大量的box,保留2 000個(gè),雖然也不均衡,但相對(duì)于one stage好的多)。目前常見(jiàn)的解決方法是:在訓(xùn)練的時(shí)候用不同的采樣頻率;給予不同的權(quán)重。而提出的focal loss不需要這些步驟。
新的損失函數(shù) Focal Loss主要思路是降低分類效果好(網(wǎng)絡(luò)預(yù)測(cè)的置信度confidence高)的樣本的loss值,讓模型聚焦在難學(xué)習(xí)的樣本中。這個(gè)損失函數(shù)在標(biāo)準(zhǔn)的交叉熵標(biāo)準(zhǔn)上添加了一個(gè)因子 (1- pt) γ 。設(shè)定 γ > 0 可以減小分類清晰的樣本的相對(duì)損失(pt >.5),使模型更加集中于困難的錯(cuò)誤分類的樣本。
圖2顯示了交叉熵loss和focal loss的關(guān)系,橫軸表示網(wǎng)絡(luò)預(yù)測(cè)該類物體的置信度。當(dāng)r=0時(shí),cross entropy = focal loss,不同的r代表了不同的懲罰力度,作者使用r=2效果最好。在confidence高時(shí),用cross entropy 時(shí)loss的值相對(duì)于focal loss大,如果使用cross entropy loss, 它使得模型傾向于這些樣本的訓(xùn)練(由于預(yù)測(cè)的置信度已經(jīng)很高了,無(wú)須再多關(guān)注這個(gè)樣本),使用focal減小了這種傾向,使模型不過(guò)于關(guān)注效果好的樣本。在confidenct很低時(shí),很有可能預(yù)測(cè)錯(cuò)誤,此時(shí)focal loss和交叉熵loss十分接近,二者但作用接近。
試驗(yàn)證明,在存在大量簡(jiǎn)單背景樣本(background example)的情況下Focal Loss 函數(shù)可以訓(xùn)練出準(zhǔn)確度很高的密集對(duì)象檢測(cè)器。
2.3 ? 殘差神經(jīng)網(wǎng)絡(luò)ResNet
ResNet最初的靈感出自這個(gè)問(wèn)題:在不斷增加神經(jīng)網(wǎng)絡(luò)的深度時(shí),會(huì)出現(xiàn)一個(gè)Degradation(退化)的問(wèn)題,即準(zhǔn)確率會(huì)先上升然后達(dá)到飽和,再持續(xù)增加深度則會(huì)導(dǎo)致準(zhǔn)確率下降。這并不是過(guò)擬合的問(wèn)題,因?yàn)椴还庠跍y(cè)試集上誤差增大,訓(xùn)練集本身誤差也會(huì)增大。
假設(shè)有一個(gè)比較淺的網(wǎng)絡(luò)達(dá)到了飽和的準(zhǔn)確率,那么后面再加上幾個(gè)y=x的全等映射層,起碼誤差不會(huì)增加,即更深的網(wǎng)絡(luò)不應(yīng)該帶來(lái)訓(xùn)練集上誤差上升。而這里提到的使用全等映射直接將前一層輸出傳到后面的思想,就是ResNet的基礎(chǔ)。假定某段神經(jīng)網(wǎng)絡(luò)的輸入是x,期望輸出是H(x),如果直接把輸入x傳到輸出作為初始結(jié)果,那么此時(shí)需要學(xué)習(xí)的目標(biāo)就是F(x)=H(x)-x。如圖3所示,這就是一個(gè)ResNet的殘差學(xué)習(xí)單元。
可以看到x是這一層殘差塊的輸入,也稱作F(x)為殘差,x為輸入值,F(xiàn)(X)是經(jīng)過(guò)第一層線性變化并激活后的輸出,該圖表示在殘差網(wǎng)絡(luò)中,第二層進(jìn)行線性變化之后激活之前,F(xiàn)(x)加入了這一層輸入值x,然后再進(jìn)行激活后輸出。在第二層輸出值激活前加入x,這條路徑稱作shortcut連接。
假設(shè)該層是冗余的,在引入ResNet之前,想讓該層學(xué)習(xí)到的參數(shù)能夠滿足h(x)=x,即輸入是x,經(jīng)過(guò)該冗余層后,輸出仍然為x。但是可以看見(jiàn),要想學(xué)習(xí)h(x)=x恒等映射時(shí)的這層參數(shù)時(shí)比較困難的。ResNet想到避免去學(xué)習(xí)該層恒等映射的參數(shù),使用了如上圖的結(jié)構(gòu),讓h(x)=F(x)+x;這里的F(x)稱作殘差項(xiàng)。要想讓該冗余層能夠恒等映射,只需要學(xué)習(xí)F(x)=0。學(xué)習(xí)F(x)=0比學(xué)習(xí)h(x)=x要簡(jiǎn)單,因?yàn)橐话忝繉泳W(wǎng)絡(luò)中的參數(shù)初始化偏向于0,這樣在相比于更新該網(wǎng)絡(luò)層的參數(shù)來(lái)學(xué)習(xí)h(x)=x,該冗余層學(xué)習(xí)F(x)=0的更新參數(shù)能夠更快收斂。
普通直連的卷積神經(jīng)網(wǎng)絡(luò)和ResNet的最大區(qū)別在于,ResNet有很多旁路的支線將輸入直接連到后面的層,使得后面的層直接學(xué)習(xí)殘差,這種結(jié)構(gòu)也被稱為shortcut或skip connections。
傳統(tǒng)的卷積層或全連接層在信息傳遞時(shí),或多或少會(huì)存在信息丟失、損耗等問(wèn)題。ResNet在某種程度上解決了這個(gè)問(wèn)題,通過(guò)直接將輸入信息繞道傳到輸出,保護(hù)信息的完整性,整個(gè)網(wǎng)絡(luò)則只需要學(xué)習(xí)輸入、輸出差別的那一部分,簡(jiǎn)化學(xué)習(xí)目標(biāo)和難度。
3 ? ? ?基于RetinaNet的航拍影像目標(biāo)檢測(cè)
處理好模型需要的數(shù)據(jù)集后,可以將數(shù)據(jù)集分為訓(xùn)練集和測(cè)試集,使用訓(xùn)練集去進(jìn)行訓(xùn)練,測(cè)試集驗(yàn)證模型的錯(cuò)誤率。
訓(xùn)練開(kāi)始前需要設(shè)置模型訓(xùn)練參數(shù),包括image-min-side,image-max-side模型圖片的輸入尺寸,batch-size每步訓(xùn)練使用圖片數(shù)量,epochs訓(xùn)練總共進(jìn)行輪次,steps每個(gè)epoch訓(xùn)練步數(shù),設(shè)置完成后,可以開(kāi)始進(jìn)行訓(xùn)練,在訓(xùn)練完成后將得到多個(gè)模型權(quán)重文件。
通過(guò)前面的操作得到了相對(duì)來(lái)說(shuō)較好的模型權(quán)重文件,但是這個(gè)模型文件是不能直接用于檢測(cè)的,需要進(jìn)行轉(zhuǎn)化才可以使用。選取一個(gè)模型文件進(jìn)行轉(zhuǎn)化,得到推斷預(yù)測(cè)模型,使用這個(gè)模型進(jìn)行目標(biāo)檢測(cè)。
圖4為實(shí)際使用推斷模型對(duì)航拍圖片進(jìn)行目標(biāo)檢測(cè)的結(jié)果展示。
4 ? ? ?結(jié) ? ?語(yǔ)
航拍目標(biāo)檢測(cè)作為目標(biāo)檢測(cè)的子方向,是計(jì)算機(jī)視覺(jué)領(lǐng)域的重要研究?jī)?nèi)容。航拍目標(biāo)檢測(cè)在軍事目標(biāo)智能識(shí)別,遙感影像解析以及民用航空等領(lǐng)域具備廣闊的應(yīng)用前景。但是,航拍圖像中的目標(biāo)受顏色,長(zhǎng)寬比變化以及復(fù)雜背景以及旋轉(zhuǎn)的影響很大。本文提出使用Resnet殘差網(wǎng)絡(luò)和損失函數(shù)Focal Loss來(lái)對(duì)航拍目標(biāo)進(jìn)行檢測(cè)。在保證檢測(cè)速度的前提下,提高了目標(biāo)檢測(cè)精度,目標(biāo)檢測(cè)準(zhǔn)確度達(dá)到了90%以上。同時(shí)通過(guò)對(duì)數(shù)據(jù)集的增強(qiáng)處理,提高了模型預(yù)測(cè)的準(zhǔn)確度。
在深度學(xué)習(xí)網(wǎng)絡(luò)方面,本文只采用了101層Resnet和50層的Resnet殘差網(wǎng)絡(luò)進(jìn)行了測(cè)試學(xué)習(xí),沒(méi)有進(jìn)行更多種類的嘗試。本文只對(duì)航拍中比較清晰的高分辨率圖像進(jìn)行了一定的嘗試,而對(duì)低分辨率的圖像有待驗(yàn)證。在數(shù)據(jù)增強(qiáng)中,后面會(huì)考慮使用條件型生成對(duì)抗網(wǎng)絡(luò),使用CycleGAN進(jìn)行更多的數(shù)據(jù)增強(qiáng)擴(kuò)張,這部分工作會(huì)繼續(xù)進(jìn)行下去。
主要參考文獻(xiàn)
[1]Tsung-Yi Lin, Priya Goyal, Ross Girshick, et al.Focal Loss for Dense Object Detection[C]//IEEE Transactions on Pattern Analysis and Machine Intelligence,2017.
[2]Kaiming He,Xiangyu Zhang,Shaoqing Ren,et al.Deep Residual Learning for Image Recognition[C]//IEEE Conference on Computer Vision and Pattern Recognition,2016.
[3]蔡強(qiáng),劉亞?wèn)|,曹建,等.圖像目標(biāo)類別檢測(cè)綜述[J] .計(jì)算機(jī)科學(xué)與探索,2015(3):257-265.
[4]G Montufar,R Pascanu,K Cho,et al. On the Number of Linear Regions of Deep Neural Networks[C]//Proceedings of the 27th International Conference on Neural Information Proceeding Sytems-2,2014.
[5]高常鑫.基于深度學(xué)習(xí)的高分辨率遙感影像目標(biāo)檢測(cè)[D] .武漢:華中科技大學(xué),2014.
[6]豐曉霞.基于深度學(xué)習(xí)的圖像識(shí)別算法研究[D] .太原:太原理工大學(xué),2015:29-32.