張珺儀,郭 楠
(合肥工業(yè)大學(xué) 電氣與自動(dòng)化工程學(xué)院,安徽 合肥 230009)
目前,直接使用YOLOv5官方權(quán)重進(jìn)行無(wú)人機(jī)航拍目標(biāo)檢測(cè)時(shí),效果并不理想。無(wú)人機(jī)遙感場(chǎng)景下進(jìn)行旋轉(zhuǎn)目標(biāo)檢測(cè)數(shù)據(jù)規(guī)模小,大中小目標(biāo)分布不均,背景復(fù)雜,目標(biāo)尺度變化劇烈,小目標(biāo)采樣易丟失,類間極度不平衡,導(dǎo)致其檢測(cè)概率小,精確度很低。同時(shí),小目標(biāo)(32×32)一直是目標(biāo)檢測(cè)中的難題,例如檢測(cè)器在COCO上的小目標(biāo)檢測(cè)平均準(zhǔn)確率(Average Precision,AP)通常要低20個(gè)點(diǎn)[1-6]。本文將針對(duì)這類問(wèn)題利用現(xiàn)有資源進(jìn)行改進(jìn),選取新的DOTA數(shù)據(jù)集——DOTA-v2.0,并利用改進(jìn)的YOLOv5算法對(duì)DOTA-v2.0數(shù)據(jù)集進(jìn)行訓(xùn)練,最終完成航拍目標(biāo)的檢測(cè)。
在一般對(duì)象數(shù)據(jù)集上,ImageNet和MSCOCO以圖像數(shù)量多、類別多、注釋詳細(xì)等特點(diǎn)受到研究人員的青睞。ImageNet在所有對(duì)象檢測(cè)數(shù)據(jù)集中擁有最多的圖像,然而,每張圖像的平均實(shí)例數(shù)遠(yuǎn)小于MSCOCO和DOTA數(shù)據(jù)集。DOTA數(shù)據(jù)集中的圖像包含大量的對(duì)象實(shí)例,其中一些實(shí)例超過(guò)1 000個(gè)。與其他數(shù)據(jù)集比較,DOTA數(shù)據(jù)集擁有較大的平均示例數(shù),如表1所示,相較于2018年發(fā)布的更龐大的DIOR數(shù)據(jù)集,更具備本文研究的包含小目標(biāo)的航拍、遙感圖像特征,即在同一區(qū)域擁有較多的小目標(biāo)對(duì)象。DOTA數(shù)據(jù)集與其他數(shù)據(jù)集的對(duì)比如表1所示[7]。
表1 DOTA數(shù)據(jù)集與其他數(shù)據(jù)集的對(duì)比
DOTA-v2.0作為最新的DOTA數(shù)據(jù)集,比DOTA-v1.0增加了航拍視角(Aerial)圖像。圖1是DOTA-v2.0和DOTA-v1.0的對(duì)比[8]。
圖1 DOTA數(shù)據(jù)集
由圖1可見(jiàn),在圖均檢測(cè)邊框數(shù)上,DOTA-v2.0更加平均,且整體數(shù)目有所增加。綜上所述,本文選擇DOTA-v2.0為數(shù)據(jù)集。
在航拍圖像中,所使用的傳感器的分辨率和種類是產(chǎn)生數(shù)據(jù)集偏差的因素。為了消除偏差,數(shù)據(jù)集中的圖像是從多個(gè)傳感器和平臺(tái)(如谷歌地球)以多種分辨率收集的。為了增加數(shù)據(jù)的多樣性,本文收集了在多個(gè)城市拍攝的圖像。這些圖像由航空?qǐng)D像解釋專家精心挑選。對(duì)于這些圖像,記錄每張圖片的位置和拍攝時(shí)間的準(zhǔn)確地理坐標(biāo),以確保沒(méi)有重復(fù)的圖片。
DOTA-v2.0數(shù)據(jù)集共標(biāo)注了18個(gè)類別,包括飛機(jī)、船舶、儲(chǔ)罐、棒球場(chǎng)、網(wǎng)球場(chǎng)、籃球場(chǎng)、地面田徑場(chǎng)、港口、橋梁、大型車輛、小型車輛、直升機(jī)、環(huán)形交叉路口、足球場(chǎng)、游泳池、集裝箱起重機(jī)、直升機(jī)停機(jī)坪以及機(jī)場(chǎng)[9]。
DOTA數(shù)據(jù)集的標(biāo)注文件分為有向目標(biāo)邊框(OBB)與水平目標(biāo)邊框(HBB)兩個(gè)版本,其區(qū)別如圖2所示。HBB為無(wú)方向性的標(biāo)注框,在小目標(biāo)檢測(cè)時(shí)很容易造成邊框重疊,并且由于框內(nèi)物體實(shí)際擁有朝向方向,容易增加檢測(cè)難度;而OBB選定了朝向方向,定向框更好地貼合了物體走向、形狀,減輕了計(jì)算量。根據(jù)本文關(guān)注的航拍、遙感小目標(biāo)的密集性特點(diǎn),本文選取OBB為標(biāo)注方式。OBB標(biāo)注的數(shù)據(jù)格式如表2所示。
表2 OBB標(biāo)注格式
圖2 HBB標(biāo)注與OBB標(biāo)注的對(duì)比
處理數(shù)據(jù)時(shí),本文在傳統(tǒng)增強(qiáng)方法的基礎(chǔ)上增加了馬賽克拼接法,即將多個(gè)待檢測(cè)圖像截取一部分合成為一張圖片進(jìn)行整體檢測(cè)。這種方式能夠同時(shí)有效提升微小擾動(dòng)和大量擾動(dòng)條件下模型的檢測(cè)準(zhǔn)確性。
遙感圖像由于分辨率過(guò)高,在訓(xùn)練或預(yù)測(cè)過(guò)程中單張圖片運(yùn)算時(shí)要求的顯存較高,成本要求高。對(duì)此,通常有以下兩種解決辦法。
(1)直接降低圖像的分辨率。將大于YOLOv5網(wǎng)絡(luò)標(biāo)準(zhǔn)圖片大小的圖像,直接調(diào)整圖像大小,例如將20 000×20 000大小的圖像直接調(diào)整至1 000×1 000,則大部分GPU都能滿足運(yùn)算要求,但是很容易損失圖像信息,尤其對(duì)于DOTA-v1.5版本中新增加的許多小于10像素的示例極不友好,其尺寸會(huì)進(jìn)一步縮小,進(jìn)而可能致使其特征在深層網(wǎng)絡(luò)逐層提取中消失。
(2)切割單張圖像為多張圖像。即將大于YOLOv5網(wǎng)絡(luò)標(biāo)準(zhǔn)圖片大小的圖像,在送入程序前先進(jìn)行分割處理,使其滿足要求。如將20 000×20 000的圖像裁剪成20×20=400張1 000×1 000大小的圖片,對(duì)切割的圖片進(jìn)行多次預(yù)測(cè),再將預(yù)測(cè)的結(jié)果進(jìn)行拼接,同樣可以獲得原圖的預(yù)測(cè)結(jié)果。代價(jià)就是原本只需進(jìn)行一次前向傳播,切割后需要進(jìn)行100次前向傳播才能獲得預(yù)測(cè)結(jié)果,時(shí)間成本大幅增加。由于切割時(shí)常會(huì)導(dǎo)致處于切割后圖像邊緣部分的目標(biāo)信息缺失,因此需要設(shè)置一定的重疊區(qū)域(gap)。由于DOTA-v2.0中的最大圖像大小超過(guò)20 000×20 000,為保證圖像中小目標(biāo)的識(shí)別精度,取gap為切割圖像的50%。
本文選用第二種方法,并預(yù)先編寫(xiě)分割圖像的函數(shù),對(duì)圖像進(jìn)行預(yù)處理。
將分割后的label文本文件DOTA數(shù)據(jù)格式poly轉(zhuǎn)為YOLO數(shù)據(jù)格式xywh。
為了提升模型的檢測(cè)效果,使其更好地適用于應(yīng)用場(chǎng)景,同時(shí)增加訓(xùn)練的數(shù)據(jù)量,提高模型的泛化能力,本文采用了圖像增強(qiáng)處理,即對(duì)數(shù)據(jù)集的數(shù)據(jù)增強(qiáng)。本節(jié)對(duì)數(shù)據(jù)集進(jìn)行鏡像處理、隨機(jī)角度旋轉(zhuǎn)以及圖像平移等處理[10]。
經(jīng)過(guò)垂直鏡像、水平鏡像、隨機(jī)角度旋轉(zhuǎn)處理后的結(jié)果示例如圖3所示。
圖3 數(shù)據(jù)增強(qiáng)處理結(jié)果
由圖3可見(jiàn),經(jīng)過(guò)垂直鏡像、水平鏡像、隨機(jī)角度旋轉(zhuǎn)處理后,圖像的方位、角度更具有隨機(jī)性,模型多樣性也得以提升。
利用被分割圖像檢測(cè)出的目標(biāo)位置信息和圖像名稱中的裁剪位置信息,還原目標(biāo)在原始未分割圖像中的位置。程序中考慮到由于裁剪圖像之間重疊區(qū)域的存在,圖像組合后會(huì)有一個(gè)目標(biāo)被多個(gè)bbox標(biāo)記,因此還在合并(merge)之后添加了一個(gè)poly_NMS。表3為分割前后的數(shù)據(jù)格式。
表3 分割前后的數(shù)據(jù)格式
通過(guò)訓(xùn)練,模型在DOTA-V2.0數(shù)據(jù)集上的檢測(cè)結(jié)果如圖4所示,在DIOR數(shù)據(jù)集上的檢測(cè)結(jié)果如圖5所示。
由圖4和圖5可見(jiàn),本文通過(guò)訓(xùn)練得到的模型在DOTA-v2.0數(shù)據(jù)集和DIOR數(shù)據(jù)集上的檢測(cè)結(jié)果都很理想,說(shuō)明了本模型具有普適性。
圖4 在DOTA-v2.0數(shù)據(jù)集上的檢測(cè)結(jié)果
圖5 在DIOR數(shù)據(jù)集上檢測(cè)結(jié)果
由于數(shù)據(jù)集較大,因此本文中數(shù)據(jù)集采用線上GPU,型號(hào)為NVIDIA GeForce RTX 3090,epoch選為150,batchsize為4。數(shù)據(jù)集訓(xùn)練過(guò)程截圖如圖6所示。
圖6 訓(xùn)練過(guò)程截圖
數(shù)據(jù)集測(cè)試中,weights代表訓(xùn)練的權(quán)重,source代表測(cè)試數(shù)據(jù),可以是圖片/視頻路徑,也可以是‘0’(電腦自帶攝像頭),也可以是rtsp等視頻流;output代表網(wǎng)絡(luò)預(yù)測(cè)之后的圖片/視頻的保存路徑,img-size代表網(wǎng)絡(luò)輸入圖片大小,conf-thres代表置信度閾值,iou-thres代表做nms的iou閾值,device代表設(shè)置設(shè)備,view-img代表是否展示預(yù)測(cè)之后的圖片/視頻,默認(rèn)False;save-txt代表是否將預(yù)測(cè)的框坐標(biāo)以txt文件形式保存,默認(rèn)False;classes代表設(shè)置只保留某一部分類別,例如設(shè)為class0或者class023;agnostic-nms代表進(jìn)行nms是否將所有類別框一視同仁,默認(rèn)為False;augment代表推理的時(shí)候進(jìn)行多尺度、翻轉(zhuǎn)等操作(TTA)推理;update代表如果為T(mén)rue,則對(duì)所有模型進(jìn)行strip_optimizer操作,去除pt文件中的優(yōu)化器等信息,默認(rèn)為False。
測(cè)試過(guò)程的部分程序如下所示。
經(jīng)過(guò)程序運(yùn)行,最終得到的測(cè)試結(jié)果有3 933張圖,截取其中1張,如圖7所示。
圖7 測(cè)試結(jié)果
對(duì)比原圖gt_poly和原圖detection_poly,求得各個(gè)類別的AP以及mAP,得出圖片包含類型、圖片名等,以評(píng)估模型性能。用detoutput表示detect.py函數(shù)的結(jié)果存放輸出路徑,imageset表示DOTA原圖數(shù)據(jù)集圖像路徑,annopath表示原始測(cè)試集的DOTAlabels路徑,classnames表示測(cè)試集中的目標(biāo)種類部。評(píng)估結(jié)果如表2所示。
表2 檢測(cè)各類目標(biāo)的平均準(zhǔn)確率
由表2可見(jiàn),用本文模型檢測(cè)目標(biāo)的平均準(zhǔn)確率能夠達(dá)到68%,部分類別的平均準(zhǔn)確率可以達(dá)到90%??梢?jiàn),該改進(jìn)模型能滿足航拍目標(biāo)的檢測(cè)精度要求,比原始訓(xùn)練模型的精度有一定提高。
本文應(yīng)用改進(jìn)的YOLOv5算法對(duì)無(wú)人機(jī)航拍目標(biāo)進(jìn)行檢測(cè),建立了基于YOLOv5算法的目標(biāo)檢測(cè)模型,通過(guò)應(yīng)用網(wǎng)絡(luò)改進(jìn)、數(shù)據(jù)增強(qiáng)等技術(shù),提高了模型檢測(cè)效能,完成了對(duì)航拍小目標(biāo)的檢測(cè),獲得了較高的檢測(cè)精度。