大尺寸衛星圖像目標檢測:yoloT


大尺寸衛星圖像目標檢測:yoloT

1. 前言

YOLT論文全稱You Only Look Twice: Rapid Multi-Scale Object Detection In Satellite Imagery」,是專為衛星圖像目標檢測而設計的一個檢測器,是在YOLOV2的基礎上進行改進的。

論文原文:https://arxiv.org/abs/1805.09512?context=cs.CV

代碼實現:https://github.com/CosmiQ/yolt

2. 介紹

大范圍圖像中的小目標檢測是衛星圖像分析的主要問題之一。雖然地面圖像中的目標檢測得益於對新的深度學習方法的研究,但將這種技術過渡到頭頂圖像並非易事。挑戰之一是每幅圖像的像素數量和地理范圍:一幅DigitalGlobe衛星圖像的面積超過64平方公里,像素超過2.5億。另一個挑戰是,感興趣的物體很小(通常只有10像素),這使傳統的計算機視覺技術復雜化。為了解決這些問題,我們提出了一個管道(你只看兩次,或者說YOLT),它可以以大於0.5 km2/s的速度評估任意大小的衛星圖像。該方法可以在多個傳感器上用相對較少的訓練數據快速檢測出不同尺度的物體。我們評估了原始分辨率下的大型測試圖像,得到了F1>0.8的車輛定位分數。通過系統地測試管道在降低分辨率時的分辨率和目標大小要求,我們進一步探索了分辨率和目標大小的要求,並得出結論:只有~5像素大小的目標仍然可以高置信度地定位。

3. YOLT核心理論

由於各種原因,深度學習方法在傳統目標檢測管道中的應用是不平凡的,由於衛星圖像的獨特性,需要采用多分辨率算法來解決與前景目標的空間范圍、完全旋轉不變性和大尺度搜索空間相關的挑戰。排除實現細節,算法必須調整:感興趣的衛星圖像對象中的小空間范圍通常非常小且密集,而不是像網數據中典型的大而突出的對象。在衛星領域,分辨率通常定義為地面采樣距離(GSD),它描述一個圖像像素的物理尺寸。商用圖像從最清晰的數字地球圖像的30厘米GSD到行星圖像的3-4米GSD不等。這意味着,對於小型物體,如汽車座椅,即使在最高分辨率下,物體的范圍也只有15像素。從頭頂觀察的完全旋轉不變性對象可以具有任何方向(例如,船舶可以具有0到360度之間的任何航向,其中圖像網數據中的樹是可靠垂直的)。訓練示例頻率有一個相對地球的訓練數據(盡管像SpaceNet這樣的努力有可能改善這個問題)超高分辨率的輸入圖像是巨大的(通常是數億像素),所以簡單地降低采樣到大多數算法所需的輸入大小(幾百像素)不是一個選項(見圖1)。

 

 衛星圖像目標檢測的主要幾個難點以及YOLT的解決方案

我們來描述一下這幾個難點和解決方案:

第一,衛星圖目標的「尺寸,方向多樣」。衛星圖是從空中拍攝的,因此角度不固定,像船、汽車的方向都可能和常規目標檢測算法中的差別較大,因此檢測難度大。針對這一點的解決方案是對數據做「尺度變換,旋轉等數據增強操作」

第二,「小目標的檢測難度大」。針對這一點解決方案有下面三點。

1、修改網絡結構,使得YOLOV2的stride變成,而不是原始的,這樣有利於檢測出大小在。

2、沿用YOLOV2中的passthrough layer,融合不同尺度的特征(和大小的特征),這種特征融合做法在目前大部分通用目標檢測算法中被用來提升對小目標的檢測效果。

3、不同尺度的檢測模型融合,即Ensemble,原因是例如飛機和機場的尺度差異很大,因此采用不同尺度的輸入訓練檢測模型,然后再融合檢測結果得到最終輸出。

第三,「衛星圖像尺寸太大」。解決方案有將原始圖像切塊,然后分別輸入模型進行檢測以及將不同尺度的檢測模型進行融合。

YOLT的網絡結構如Table1所示:

 

 YOLT的網絡結構

可以看到網絡結構相對於YOLOV2最大的修改就是最后輸出特征尺寸只到了,這樣就能有效的提高對小目標的檢測效果。

4. 一些觀察

Figure2展示了使用兩種不同類型的圖像作為輸入時模型(原始的YOLOv2)的預測結果對比,左邊是直接把衛星圖像原圖resize到大小,可有看到結果是一輛車都檢測不出來。右邊則是從原圖中裁剪出大小的區域然后作為模型的輸入,可以看到部分車被檢測出來了,但是效果一般。從這個實驗可以發現,如果直接將原圖resize到網絡輸入大小是不靠譜的,所以YOLT采用了裁剪方式進行訓練和測試圖片。

將原圖resize到網絡輸入大小是不合理的,還是得使用裁剪方式

Figure4則展示了在測試模型時如何對輸入圖像進行處理。

 

 YOLT在測試模型時如何對輸入圖像進行處理

上半部分表示的是原始的衛星圖片,因為圖片分辨率太大,所以采用了划窗方式裁剪指定尺寸如的圖像作為模型的輸入,論文將裁剪后的區域稱為chip,並且相鄰的chip會有15%的重疊,這樣做的目的是為了保證每個區域都能被完整檢測到,雖然這帶來了一些重復檢測,但可以通過NMS算法濾掉。通過這種操作,一張衛星圖像會被裁剪出數百/千張指定尺寸的圖像,這些圖像被檢測之后將檢測結果合並經過NMS處理后就可以獲得最終的檢測結果了。

Figure5展示了訓練數據的整體情況,一共有個類別,包括飛機,船,建築物,汽車,機場等。對訓練數據的處理和測試數據是類似的,也是從原圖裁剪多個chip喂給網絡。

訓練數據的整體情況,一共5個類別,注意有兩張圖像都是車

這篇論文的一個核心操作就是:

針對「機場目標」「其它目標」分別訓練了一個檢測模型,這兩個檢測模型的輸入圖像尺度也不一樣,測試圖像時同理,最后將不同檢測模型、不同chip的檢測結果合並在一起就得到最終一張衛星圖像的輸出。也即是說這篇文章的核心操作就是這個「不同尺度的模型融合」以及「針對機場單獨訓練一個模型」,這樣確實是從數據出發能夠很好的解決實際場景(衛星圖像)中機場目標數據太少帶來的問題。

5. 實驗結果

Figure7展示了一張對於汽車目標的檢測結果,可以看到效果還是不錯的,並且在內能獲得結果,同時F1值達到0.95。

 

 YOLT對汽車目標的檢測結果可視化

接下來作者還對不同輸入分辨率做了實驗,Figure10代表對原始分辨率(左上角的0.15m表示GSD是0.15m)進行不同程度的放大之后獲得的低分辨率圖像,這些圖像都被用來訓練模型,

不同分辨率的衛星圖像

然后Figure13將不同分辨率輸入下檢測模型的F1值進行了圖表量化,其中橫坐標代表目標的像素尺寸。可以看到,隨着分辨率的降低,圖像中目標的像素尺寸也越來越小,檢測效果(F1值)也越來越低。

我們還可以發現即便目標只有個像素點,依然有很好的檢測效果,但需要注意的是這里的個像素點指的是在原圖上,你crop之后目標的相對於網絡輸入的大小肯定是大於個像素點的,至少讓YOLT網絡能夠檢測出來。

 

 不同分辨率輸入下檢測模型的F1值可視化

其中不同的場景有不同顏色的線代表,不過這不重要,重要的已經講過了。

Figure12則可視化了不同分辨率圖像的檢測效果,左邊是15cm GSD的結果,右邊則表示了90cm GSD的效果,直觀來說,左邊的效果是比右邊好的。

 

 不同分辨率圖像的檢測效果

Table3展示了YOLT算法對於不同目標的測試精度以及速度情況。

 

 YOLT算法對於不同目標的測試精度以及速度情況

6. 結論

ImageNet風格的數據集中,目標檢測算法在目標定位方面取得了很大的進展。然而,這種算法很少能很好地適應衛星圖像中的目標大小或方向,也沒有設計出數以億計像素的處理圖像。為了解決這些限制,本文實現了一個完全卷積的神經網絡工作管道(YOLT),以快速定位衛星圖像中的車輛、建築物和機場。注意到,由於大小特征(如高速公路和跑道)之間的混淆,組合分類器的結果很差。在不同規模上訓練雙分類器(一個用於建築物/車輛,一個用於基礎設施),取得了更好的效果。根據類別,此管道產生的目標檢測F1分數約為0.6~-0.9。雖然F1的分數可能不在許多讀者從ImageNet比賽中習慣的水平,但衛星圖像中的目標檢測仍然是相對新生的領域,有着獨特的挑戰。此外,對於監督學習方法,針對大多數類別的訓練數據集都相對較小,並且F1分數可能會隨着檢測的進一步后處理而提高。本文還演示了在一個傳感器(如數字地球儀)上進行訓練的能力,並將我們的模型應用於另一個傳感器(如行星儀)。實驗表明,至少對於從頭頂觀看的汽車,大於5像素的物體大小產生的物體檢測分數F1>0.85。探測管道能夠以自然分辨率評估任意輸入尺寸的衛星和航空圖像,以≈30km2的速率處理車輛和建築物,以≈6000km2的速率處理機場。在這種推理速度下,16GPU集群可以對數字地球觀3衛星進行實時推理。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM