天天看點

【文獻閱讀】YOLT算法實作遙感圖像的多尺度目辨別别(Adam Van Etten,2018,CVPR)一、文章情況介紹二、文章導讀三、文章詳細介紹四、後記

一、文章情況介紹

文章題目:《You Only Look Twice: Rapid Multi-Scale Object Detection In Satellite Imagery》

自己是做遙感圖像的,對遙感圖像的目辨別别比較關注,大概半年前了解到這篇文章,一直沒有抽時間認真解讀,最近開始做這方面的工作,是以就首先來看看這篇經典的文章。

這篇文章投在了CVPR2018會議上,CVPR是計算機視覺領域的三大頂級會議之一,是以非常值得一看。

文章的下載下傳連結:https://arxiv.org/pdf/1805.09512.pdf

項目的實作連結:https://github.com/CosmiQ/yolt

文獻引用格式:Adam Van Etten. "You Only Look Twice: Rapid Multi-Scale Object Detection In Satellite Imagery." IEEE Conference on Computer Vision and Pattern Recognition(CVPR). 2018.

二、文章導讀

先來放一些網上的一些解讀:

[1]YOLT算法筆記

[2]yolt 衛星圖像進行快速目辨別别的新方法

這些解讀對文章的主要内容進行了介紹,我會對其再進行細化。

在早期的深度學習目辨別别算法中,主要陣營大概兩類,一類是RCNN系列(two-stage,也就是對圖像先進行分類後進行回歸處理),另一類是SSD和YOLO系列(one-stage),而YOLT則是在YOLO v2基礎上發展來的。

下面先來看一下文章的摘要部分:

Detection of small objects in large swaths of imagery is one of the primary problems in satellite imagery analytics. While object detection in ground-based imagery has benefited from research into new deep learning approaches, transitioning such technology to overhead imagery is nontrivial. Among the challenges is the sheer number of pixels and geographic extent per image: a single Digital Globe satellite image encompasses > 64 km² and over 250 million pixels. Another challenge is that objects of interest are minuscule (often only ∼ 10 pixels in extent), which complicates traditional computer vision techniques. To address these issues, we propose a pipeline (You Only Look Twice, or YOLT) that evaluates satellite images of arbitrary size at a rate of ≥ 0.5  km²/s. The proposed approach can rapidly detect objects of vastly different scales with relatively little training data over multiple sensors. We evaluate large test images at native resolution, and yield scores of F1 > 0.8 for vehicle localization. We further explore resolution and object size requirements by systematically testing the pipeline at decreasing resolution, and conclude that objects only ∼ 5 pixels insize can still be localized with high confidence. Code is available at https://github.com/CosmiQ/yolt

摘要部分作者簡明的點出了目前用遙感影像做目辨別别的最大的兩個問題:一是資料量大,表現在一張圖像的範圍超過了64km²,像元數量超過了2.5億(之前一直用Landsat,圖像範圍大概是185km²,圖像尺寸大概8000*8000像元);二是目标往往特别小,有時候僅僅隻有10個像元。

針對這兩個問題,作者提出了YOLT算法。優點在于:隻需要少量訓練資料,就可以實作快速目标檢測,檢測速度大概0.5km²/s;另外對影像進行降低分辨率,實驗發現也能獲得較高的置信度,這也就是說模型對小目标具有較好的檢測效果(因為在圖像中僅僅隻有幾個像元)。

三、文章詳細介紹

首先,作者介紹到傳統深度學習算法在做遙感影像的時候會面臨一些問題(前面摘要提到的),是以必須對于以下方面進行改進:

Small spatial extent In satellite imagery objects of interestare offen very small and densely clustered, rather than the large and prominent subjects typical in ImageNet data.In the satellite domain, resolution is typically defined as the ground sample distance (GSD), which describes thephysical size of one image pixel. Commercially available imagery varies from 30 cm GSD for the sharpest Digital Globe imagery, to 3-4 meter GSD for Planet imagery. This means that for small objects such as cars each object will be only ∼ 15 pixels in extent even at the highest resolution. (地面很多目标較小,在圖像中僅僅表現出非常少的像元範圍,例如小汽車就僅僅隻有15個像元)

Complete rotation invariance Objects viewed from overhead can have any orientation (e.g. ships can have any heading between 0 and 360 degrees, whereas trees in ImageNet data are reliably vertical). (垂直投影導緻目标的角度不一,例如船可以有不同方向的朝向)

Training example frequency There is a relative dearth of training data (though efforts such as SpaceNet are attempting to ameliorate this issue) (訓練樣本不足)

Ultra high resolution Input images are enormous (offen hundreds of megapixels), so simply downsampling to the input size required by most algorithms (a few hundredpixels) is not an option (see Figure 1). (輸入圖像巨大,傳統方法下采樣難以實作)

作者舉了一個栗子:

【文獻閱讀】YOLT算法實作遙感圖像的多尺度目辨別别(Adam Van Etten,2018,CVPR)一、文章情況介紹二、文章導讀三、文章詳細介紹四、後記

分辨率為0.5m的圖,可以看到圖中的目标有多小。

首先是對第一個問題的讨論,一些經典的目标檢測算法(RCNN,YOLO,SSD),它們在做降尺度的時候,比如YOLO,是将原圖縮小32倍最後輸出13*13尺寸的層(layer)。YOLO的原圖輸入的是416*416,經過多次降尺度采樣(stide設定為2),達到縮小32倍的效果。試想,如果目标的像元數小于32個,那麼這樣處理之後,這些像元就無法被檢測到,實際上很多目标的像元數量确實是小于32的,是以這裡我們需要進行改進。

【文獻閱讀】YOLT算法實作遙感圖像的多尺度目辨別别(Adam Van Etten,2018,CVPR)一、文章情況介紹二、文章導讀三、文章詳細介紹四、後記

另外就是目标檢測算法對于不同角度的目辨別别泛化能力較差,作者也對這裡進行了改進,改進的思路就是資料旋轉和資料增廣(rotations and augmentation of data)。

【文獻閱讀】YOLT算法實作遙感圖像的多尺度目辨別别(Adam Van Etten,2018,CVPR)一、文章情況介紹二、文章導讀三、文章詳細介紹四、後記

在Figure 3中,左邊是YOLO算法的一些問題,右邊則是作者提出的YOLT算法的解決方案。下面來簡單介紹一下:

(1)目标的多角度問題                             ——————>      資料增廣解決

(2)群組中的小目标檢測問題                  ——————>      新的網絡結構,引入細粒點特征和密集格網(可選)

                                                                   ——————>      上采樣強化目标(可選)

                                                                   ——————>      運用多尺度內建探測子

(3)多次下采樣引起粗糙特征難以識别    ——————>       解決方法同(2)

(4)最大輸入尺寸約為600像素                ——————>       運用多尺度內建探測子

                                                                   ——————>       輸入圖像智能分割和合并

下面來看一下YOLT的模型。作者的基本思路是擴充了DarkNet的結構,并更新地理空間處理的C語言庫,使其可以用于python來構模組化型。

網絡結構一共有22層,累計降尺度因子為16,是以輸入416*416的圖像,最後會輸出26*26的圖像。作者的靈感來自于30層的YOLO模型,為了改善小目标的保真度,作者還引入了passthrough layer(類似于ResNet網絡中的身份映射identity mappings),最後卷積完則會生成52*52的特征圖。另外,在每一層卷積後,都有BN(batch normalized)層和LeakyReLu層,最後一層則用的線性激活函數。

【文獻閱讀】YOLT算法實作遙感圖像的多尺度目辨別别(Adam Van Etten,2018,CVPR)一、文章情況介紹二、文章導讀三、文章詳細介紹四、後記

結構圖中的

【文獻閱讀】YOLT算法實作遙感圖像的多尺度目辨別别(Adam Van Etten,2018,CVPR)一、文章情況介紹二、文章導讀三、文章詳細介紹四、後記

的計算是搜尋框數(boxes)乘以(類别數+5)的積。

這裡還要提到一點就是作者對尺寸非常大的遙感圖像做了切割處理,切割時候需要保證相鄰兩幅圖至少有15%的重疊面積。

【文獻閱讀】YOLT算法實作遙感圖像的多尺度目辨別别(Adam Van Etten,2018,CVPR)一、文章情況介紹二、文章導讀三、文章詳細介紹四、後記

當然這麼做之後肯定還要做後處理的 ,因為很多圖像是切割出來的,而且相鄰圖像會有15%的重疊區域,那麼這個區域中的目标就很有可能被重複檢測,為了減少這一現象,作者使用了非極大抑制算法(non-maximal suppression)。

下面是作者處理的一個示意圖:

【文獻閱讀】YOLT算法實作遙感圖像的多尺度目辨別别(Adam Van Etten,2018,CVPR)一、文章情況介紹二、文章導讀三、文章詳細介紹四、後記

再來介紹下作者所使用的資料集。

【文獻閱讀】YOLT算法實作遙感圖像的多尺度目辨別别(Adam Van Etten,2018,CVPR)一、文章情況介紹二、文章導讀三、文章詳細介紹四、後記

(1)訓練資料部分

所有的資料源為三部分:DigitalGlobe satellites, Planet satellites, and aerial platforms. 對這三部分來源的圖像做切割,保證切割的圖像大小為416*416,相鄰圖像大約有15%的重疊區域。接下來為圖像中的每一個類别做标記,一共選擇了5種類别:airplanes, boats, building footprints, cars, and airports.(飛機,船,建築物,汽車,機場) :

訓練資料介紹

類别 來源 描述
汽車 Cars Overhead with Context(aerial platforms) 分辨率0.15米和0.3米,總計13303個汽車
建築物 SpaceNet data(DigitalGlobe imagery) 四座城市(拉斯維加斯, 巴黎, 上海,  Khartoum)共計221336标記建築物
飛機 eight DigitalGlobe images 230個飛機
three DigitalGlobe images 近海岸的556艘船
機場 37 Planet images 每張圖隻有一個機場,超過1000像素長度的進行降采樣

作者的一些超參數設定為:初始學習率為0.001,權重衰減為0.0005,動量0.9,使用單GPU(NVIDIA TITAN X)訓練2-3天。

(2)測試資料部分

測試資料的介紹如下:

汽車:猶他州(Utah)的19807個汽車

建築物:訓練資料集的75%用作訓練,剩下的25%用作測試,有73778個建築

飛機:四個機場中的74架

船:四張影響共447個船

飛機場:10個飛機場

最後來看下模型結果:

首先作者指出一個問題,如果隻采用單分類器來區分5個類别的話,由于機場的訓練資料非常有限,那麼高速公路和機場的跑道非常容易混淆,造成識别精度很差:

【文獻閱讀】YOLT算法實作遙感圖像的多尺度目辨別别(Adam Van Etten,2018,CVPR)一、文章情況介紹二、文章導讀三、文章詳細介紹四、後記

為了解決這個問題,作者提出了Scale Confusion Mitigation(不知道翻譯為啥比較好,尺度混淆減弱算法???),這裡作者大膽的采用了兩個分類器,一個專門用來做車輛,船,飛機,建築,另一個隻用來找機場。在找機場的那個分類器中,一方面可以采用下采樣的方式來提高運作效率,另一方面通過後處理來删掉不對的目标。

下來看一下這兩個分類器的表現如何。作者将這兩個分類器分别用在了不同尺度的影像上,一個是分辨率為200m的,另一個是分辨率為2500m的,第一種尺度用于尋找小目标,比如車輛,船,飛機等,第二種尺度用來尋找大目标,比如飛機場。将驗證圖像進過裁剪得到chips,然後在chips上運作這兩個分類器。最後再将多個chips和兩個分類器的結果疊加在一張圖上,重疊區域用非極大值抑制的方式處理。最終預測結果的門檻值取0.3或者0.4的時候可以獲得最高的F1得分(就是說預測結果是一個機率,如果這個機率大于0.3或者0.4,那麼就用box把它畫出來,這個門檻值取0.3或者0.4的時候效果最好)。

效果總結:

【文獻閱讀】YOLT算法實作遙感圖像的多尺度目辨別别(Adam Van Etten,2018,CVPR)一、文章情況介紹二、文章導讀三、文章詳細介紹四、後記

文章到這裡核心部分内容就結束了,後面是一些讨論。

(1)不同場景對目辨別别的影響

測試集中大約有20000多汽車包含在9張Utah地區的影像中,而這其中的大部分車輛(大約13000輛)都在鹽湖城(鹽湖城是猶他州的一座城市),對圖像進行切割後,去掉車輛很少的影像,最後隻有23景,平均每景影像中有1130±540輛汽車。識别的效果如下:

【文獻閱讀】YOLT算法實作遙感圖像的多尺度目辨別别(Adam Van Etten,2018,CVPR)一、文章情況介紹二、文章導讀三、文章詳細介紹四、後記

另外,作者還統計了每一景影像關于汽車檢測的F1得分,結果如下:

【文獻閱讀】YOLT算法實作遙感圖像的多尺度目辨別别(Adam Van Etten,2018,CVPR)一、文章情況介紹二、文章導讀三、文章詳細介紹四、後記

并且統計最終的汽車識别正确率高達99.1%。還有一個有趣的現象,看Figure 9上面的表格,幾乎所有影像的F1得分都很高,但是唯有第二張圖的F1得分比較低,隻有0.67,檢查後發現,這景影像拍攝的是一個廢棄的機車廠,而其他影像都是城市影像。

(2)不同分辨率對目辨別别的影響

原本實驗的圖像分辨率是0.15米,作者用高斯核函數,将圖像的分辨率降低,分别降低到[0.30, 0.45, 0.60, 0.75, 0.90, 1.05, 1.20,1.50, 1.80, 2.10, 2.40, 3.00] 米。

這裡作者是先這麼做的,隻用0.15米的影像訓練一個模型,再分别識别不同分辨率的影像,但是發現效果都比較差;後面作者又針對每種分辨率分别訓練模型,一共訓練13個模型,但是這麼做的問題就是不同分辨率影像中的标簽比較難做,做好像下面這樣的标簽後就可以做模型:

【文獻閱讀】YOLT算法實作遙感圖像的多尺度目辨別别(Adam Van Etten,2018,CVPR)一、文章情況介紹二、文章導讀三、文章詳細介紹四、後記

模型的結果也比較有意思:

【文獻閱讀】YOLT算法實作遙感圖像的多尺度目辨別别(Adam Van Etten,2018,CVPR)一、文章情況介紹二、文章導讀三、文章詳細介紹四、後記

汽車的大小約為3米,在0.15米分辨率的圖上約為20像素,F1得分為0.92,在3米分辨率的圖上約為1像素,F1得分為0.27,也就是說錯誤率一下變得非常明顯,但是有意思的是,如果分辨率隻從0.15米變到0.6米,F1得分僅僅隻有5%的波動,是以可以得到一個結論,大于5個像素的目标,F1的得分基本都能大于0.87,這也一定程度上說明模型可以用于多尺度的影像中:

【文獻閱讀】YOLT算法實作遙感圖像的多尺度目辨別别(Adam Van Etten,2018,CVPR)一、文章情況介紹二、文章導讀三、文章詳細介紹四、後記

另外雖然單模型難以識别不同分辨率影像中的目标,但是它卻比多模型的訓練效果更優。

四、後記

這篇模型算是比較經典的一個,有空的話想實作下這個模型。

繼續閱讀