首頁>技術>

本文來談一下基於深度學習的航空物體場景下的物體檢測。航空物體這類場景一般由無人機空拍來收集資料,然後進行後處理來滿足特定的任務場景,有些情況下要求實現實時反饋,甚至多工。

和通用物體檢測一樣,航空物體檢測也經歷了從無到有的過程。乍一看,這兩類任務都屬於物體檢測(object detection)的範疇,而當前通用物體檢測器已經非常的多,不論是雙階段的fast rcnn系列還是單階段的yolo系列,貌似方法是可以拿來直接套用的。然而,航空物體檢測由於其特殊性,附帶有下列挑戰:

資料收集的過程由無人機拍攝執行。由於是高空拍攝,收集到的物體相比較於一般物體尺度更小,整體分佈稀疏。相機隨著焦距變換,導致資料會有一定程度的扭曲效應,具體表現為前後圖片尺度不一收集的資料受光照,地理位置及地形,氣候等自然因素影響,畫素分佈複雜,導致資料集物體檢測難度顯著上升受到拍攝角度的影響,密集物體場景下物體會有遮擋或堵塞的情況,這些物體的真值不全,不利於模型訓練自然場景下無法保證每一類物體均衡出現於資料集中,因而資料集類分佈不均衡

為了讀者更好地理解上述挑戰,下面的一組圖對比了自然物體與航空物體的應用場景。

自然物體(左圖) VS 航空物體(右圖)

這些問題疊加在一起對航空場景下的物體檢測提出了較高的要求。為了能很好的解決這個問題,最近幾年的主會和workshop都提出瞭解決方案。

主會中比如2019年ICCV的ClusDet “Clustered Object Detection in Aerial Images”提出使用聚類方式做影象切分,儘可能地透過聚類合併前景畫素來生成高質量的切塊,以避免檢測器浪費過多時間在背景上。同時為了矯正生成的切塊的尺度,追加了scalenet來平衡。

再比如強呼叫檢測器來發現檢測弱點,進一步學習並重新檢測,希望基於困難區域檢測(DREN)的網路“How to fully exploit the abilities of aerial image detectors”這些方案都是非常有啟發性的,也取得了較好的精度。

然而這些方案的精度還是不夠令人滿意。此外除了檢測網路,額外追加了兩個子網路來幫助提升精度, 導致整體速度被拉慢。

為了提出更進一步的解決方案,這裡筆者介紹一篇來自CVPR2020 workshop的論文"Density map guided object detection in aerial images",該論文使用密度圖的方法來解決航空物體檢測的問題。

相比較於上述方案,使用了更少的子網路,取得了更進一步的精度和更快的檢測速度。論文程式碼已開源。下面一張圖簡單展示了基於密度圖的方法是如何切分出前景的。

密度圖方法切分出前景(foreground)

在人流計數中一個主流的應用是使用密度圖。密度圖也可以視為熱力圖,可以和很好的反應物體在單個圖片中的分佈,而背景對密度圖沒有貢獻,所以這種方法其實可以很好的區分前景和背景。這也是這篇論文想到把密度圖引入航空物體檢測的一個原因。

基於密度圖的航空物體檢測(以下簡稱DMNet)分為三個大的部分

密度圖估計基於密度圖分割輸入航空影象並生成前景使用生成的前景進行物體檢測

DMNet的網路框架

以下是對三個部分的詳細介紹

密度圖估計

密度圖(density map)估計和人流計數中的密度圖估計相近。給定輸入航空影象,我們希望估測並針對每一類物體的尺度,指導深度學習模型學習其對應的密度,以便在測試資料上生成

相對應的密度圖。常見的人流技術框架(比如MCNN, CSRNet)使用高斯核卷積來生成密度圖,根據原理不同,有進一步分成動態核和靜態核兩種。由於人流計數中使用動態核需要滿足一定的假設,而航空影象中不滿足(比如假設物體尺寸和其相鄰物體間距離成比例), DMNet使用的是靜態核(fix kernel)來生成密度圖。靜態核的sigma值取全部訓練資料集的平均值。

然而,使用靜態核方法並沒有完全考慮到各個類之間物體的差異性。比如某些物體(公交車, 汽車)的尺度比較大,而某些較小(比如行人)。使用同一個sigma無法貼切的刻畫這種差異性。

所以DMNet進一步提出基於類別的靜態核方法。使用這種方法可以更加細緻的區分同一類的前景和背景。下圖可以看到這種方法的優勢。

基於類別的靜態核方法

MCNN中有兩層池化層,所以直接使用MCNN會導致生成的特徵圖縮水。一種解決方案是直接把特徵圖插值回原尺度,另外則是加兩層升取樣層處理。

針對這個問題, 作者做了實驗,實驗結果發現,以MAE為評價指標,兩種解決方案表現差的不大,考慮到升取樣會吃更多gpu記憶體,最後DMNet採用了第一種方案。

基於密度圖分割輸入航空影象並生成前景

在生成了對應的密度圖後,我們需要使用他們來生成前景。由於密度圖本身可以透過密度值得高低來間接表示某一畫素上有物體的機率,我們人為定了一個閾值。我們希望透過調節這個閾值來儘可能的過濾背景畫素,並保持現有畫素的完整性。

具體的做法是,設定一個滑動視窗對密度圖進行滑動,每次滑動不重疊。滑動的時候會對當前區域下的畫素加和,如果加和大於閾值,我們保留這個區域,也就是存下這個視窗對應的座標值。否則我們直接丟棄(也就是將其視為背景)。我們反覆多次加和,直到滑動視窗覆蓋所有特徵圖。

下面是上述過程的一個例子。

使用滑動視窗生成density mask

在我們完成一次滑動後,我們會得到多個離散的小區域。為了將這些區域全部連起來,我們使用八連通域演算法來進行連線。如果最終生成的區域不規則,我們取這些區域的最左上右下位置,整個連起來。

物體檢測

在生成密度切塊(density crop)後,我們把這些圖放到物體檢測模型中進行訓練。訓練時原圖也參與其中,因為進行切塊可能會傷到大物體,所以將原圖加入來確保大物體的精度。DMNet使用了faster-rcnn rpn來訓練物體檢測。需要指出的是,任何物體檢測方法都可以用在這一步,並不僅限於faster rcnn檢測器。

在評估(evaluation)階段,原圖和切好的密度圖會被分別送入我們之前訓練的檢測器中進行評估。最終的結果會被統一合併在原圖對應的結果檔案上。DMNet使用NMS演算法對檢測結果進行後處理。

DMNet 模型表現

DMnet和論文發表時的sota模型間的對比如下圖。作者將自己的演算法和兩個非常常見的航空影象資料集進行對比,使用的資料集分別是Visiondrone資料集和UAVDT資料集。

DMNet在Visiondrone 2018評估(evaluation)集上的表現

DMNet在UAVDT資料集上的表現

綜合來看,DMNet能進一步提升大概1-1.5AP,取決於backbone的選擇。尤其在小物體檢測上面,DMnet表現不凡,在Visiondrone資料集上提升了近4AP。

模型研究 (Ablation study)

作者針對於模型如何效果好,進行了多個方面的分析。

1.生成密度圖時閾值的選擇

閾值選擇在生成密度圖時有很大的影響。閾值過低,基本無法過濾背景畫素;而閾值過高,基本不會生成密度切塊,或者切塊過小反而干擾學習過程。作者對此做了實驗。

閾值選擇對生成密度圖的影響

從實驗結果來看,施加非常小的閾值,模型表現很差,近乎於直接使用原圖檢測。所以透過不同的手段(比如交叉驗證或視覺化)選擇合理的閾值是很重要的。

2.使用密度圖切分和均勻切分相比是否有優勢

作者對比了密度圖切分和更加細緻的4*3均勻切分(“密度圖方法切分出前景”一圖中包含了這種方法)方法。從實驗結果來看,密度圖更勝一籌。原因是因為密度圖是根據密度來判斷切分邊界,使用了更加可靠的情景資訊。

3.使用密度圖切分的貢獻

使用密度圖切分提升了小物體和中型物體的檢測精度,進而整體拉高了全體的檢測進度,這也是DMNet表現出色的一個原因。

結果展示

總結

論文:https://arxiv.org/abs/2004.05520

程式碼:https://github.com/Cli98/DMNet

22
  • BSA-TRITC(10mg/ml) TRITC-BSA 牛血清白蛋白改性標記羅丹明
  • Redis原始碼剖析之字典(dict)