基于密度圖的航空物體檢測(cè):理論與代碼實(shí)現(xiàn)
點(diǎn)擊上方“小白學(xué)視覺”,選擇加"星標(biāo)"或“置頂”
重磅干貨,第一時(shí)間送達(dá)

本文來(lái)談一下基于深度學(xué)習(xí)的航空物體場(chǎng)景下的物體檢測(cè)。航空物體這類場(chǎng)景一般由無(wú)人機(jī)空拍來(lái)收集數(shù)據(jù),然后進(jìn)行后處理來(lái)滿足特定的任務(wù)場(chǎng)景,有些情況下要求實(shí)現(xiàn)實(shí)時(shí)反饋,甚至多任務(wù)。
這里討論的航空物體檢測(cè)是其中的一個(gè)分支,這類論題最近兩年漸漸火起來(lái)。具體來(lái)說(shuō),從2017年開始,屬于這類任務(wù)相關(guān),且有較大影響的論文在CVPR,ICCV,ECCV等國(guó)際計(jì)算機(jī)視覺頂級(jí)期刊中出鏡率越來(lái)越高,涉及相關(guān)題目的競(jìng)賽也越來(lái)越多。
和通用物體檢測(cè)一樣,航空物體檢測(cè)也經(jīng)歷了從無(wú)到有的過(guò)程。乍一看,這兩類任務(wù)都屬于物體檢測(cè)(object detection)的范疇,而當(dāng)前通用物體檢測(cè)器已經(jīng)非常的多,不論是雙階段的fast rcnn系列還是單階段的yolo系列,貌似方法是可以拿來(lái)直接套用的。然而,航空物體檢測(cè)由于其特殊性,附帶有下列挑戰(zhàn):
數(shù)據(jù)收集的過(guò)程由無(wú)人機(jī)拍攝執(zhí)行。由于是高空拍攝,收集到的物體相比較于一般物體尺度更小,整體分布稀疏。相機(jī)隨著焦距變換,導(dǎo)致數(shù)據(jù)會(huì)有一定程度的扭曲效應(yīng),具體表現(xiàn)為前后圖片尺度不一
收集的數(shù)據(jù)受光照,地理位置及地形,氣候等自然因素影響,像素分布復(fù)雜,導(dǎo)致數(shù)據(jù)集物體檢測(cè)難度顯著上升
受到拍攝角度的影響,密集物體場(chǎng)景下物體會(huì)有遮擋或堵塞的情況,這些物體的真值不全,不利于模型訓(xùn)練
自然場(chǎng)景下無(wú)法保證每一類物體均衡出現(xiàn)于數(shù)據(jù)集中,因而數(shù)據(jù)集類分布不均衡
為了讀者更好地理解上述挑戰(zhàn),下面的一組圖對(duì)比了自然物體與航空物體的應(yīng)用場(chǎng)景。

自然物體(左圖) VS 航空物體(右圖)
這些問(wèn)題疊加在一起對(duì)航空?qǐng)鼍跋碌奈矬w檢測(cè)提出了較高的要求。為了能很好的解決這個(gè)問(wèn)題,最近幾年的主會(huì)和workshop都提出了解決方案。
主會(huì)中比如2019年ICCV的ClusDet?“Clustered Object Detection in Aerial Images”提出使用聚類方式做圖像切分,盡可能地通過(guò)聚類合并前景像素來(lái)生成高質(zhì)量的切塊,以避免檢測(cè)器浪費(fèi)過(guò)多時(shí)間在背景上。同時(shí)為了矯正生成的切塊的尺度,追加了scalenet來(lái)平衡。
再比如強(qiáng)調(diào)用檢測(cè)器來(lái)發(fā)現(xiàn)檢測(cè)弱點(diǎn),進(jìn)一步學(xué)習(xí)并重新檢測(cè),希望基于困難區(qū)域檢測(cè)(DREN)的網(wǎng)絡(luò)“How to fully exploit the abilities of aerial image detectors”這些方案都是非常有啟發(fā)性的,也取得了較好的精度。
然而這些方案的精度還是不夠令人滿意。此外除了檢測(cè)網(wǎng)絡(luò),額外追加了兩個(gè)子網(wǎng)絡(luò)來(lái)幫助提升精度, 導(dǎo)致整體速度被拉慢。
為了提出更進(jìn)一步的解決方案,這里筆者介紹一篇來(lái)自CVPR2020 workshop的論文"Density map guided object detection in aerial images",該論文使用密度圖的方法來(lái)解決航空物體檢測(cè)的問(wèn)題。
相比較于上述方案,使用了更少的子網(wǎng)絡(luò),取得了更進(jìn)一步的精度和更快的檢測(cè)速度。論文代碼已開源。下面一張圖簡(jiǎn)單展示了基于密度圖的方法是如何切分出前景的。

密度圖方法切分出前景(foreground)
相比于之前的方法,使用密度圖去做航空?qǐng)D像檢測(cè)可以更快的檢測(cè)航空?qǐng)D像中的物體。密度圖的方法來(lái)源于一個(gè)相近領(lǐng)域的應(yīng)用,也就是人流計(jì)數(shù)(crowd counting)。人流計(jì)數(shù)中物體高度密集,分布集中,單個(gè)物體的尺度小,和航空物體數(shù)據(jù)集在這方面高度相似。
在人流計(jì)數(shù)中一個(gè)主流的應(yīng)用是使用密度圖。密度圖也可以視為熱力圖,可以和很好的反應(yīng)物體在單個(gè)圖片中的分布,而背景對(duì)密度圖沒有貢獻(xiàn),所以這種方法其實(shí)可以很好的區(qū)分前景和背景。這也是這篇論文想到把密度圖引入航空物體檢測(cè)的一個(gè)原因。
基于密度圖的航空物體檢測(cè)(以下簡(jiǎn)稱DMNet)分為三個(gè)大的部分
密度圖估計(jì)
基于密度圖分割輸入航空?qǐng)D像并生成前景
使用生成的前景進(jìn)行物體檢測(cè)

DMNet的網(wǎng)絡(luò)框架
密度圖估計(jì)
密度圖(density map)估計(jì)和人流計(jì)數(shù)中的密度圖估計(jì)相近。給定輸入航空?qǐng)D像,我們希望估測(cè)并針對(duì)每一類物體的尺度,指導(dǎo)深度學(xué)習(xí)模型學(xué)習(xí)其對(duì)應(yīng)的密度,以便在測(cè)試數(shù)據(jù)上生成
相對(duì)應(yīng)的密度圖。常見的人流技術(shù)框架(比如MCNN, CSRNet)使用高斯核卷積來(lái)生成密度圖,根據(jù)原理不同,有進(jìn)一步分成動(dòng)態(tài)核和靜態(tài)核兩種。由于人流計(jì)數(shù)中使用動(dòng)態(tài)核需要滿足一定的假設(shè),而航空?qǐng)D像中不滿足(比如假設(shè)物體尺寸和其相鄰物體間距離成比例), DMNet使用的是靜態(tài)核(fix kernel)來(lái)生成密度圖。靜態(tài)核的sigma值取全部訓(xùn)練數(shù)據(jù)集的平均值。
然而,使用靜態(tài)核方法并沒有完全考慮到各個(gè)類之間物體的差異性。比如某些物體(公交車, 汽車)的尺度比較大,而某些較?。ū热缧腥耍?。使用同一個(gè)sigma無(wú)法貼切的刻畫這種差異性。
所以DMNet進(jìn)一步提出基于類別的靜態(tài)核方法。使用這種方法可以更加細(xì)致的區(qū)分同一類的前景和背景。下圖可以看到這種方法的優(yōu)勢(shì)。

基于類別的靜態(tài)核方法
在DMNet中,作者使用MCNN來(lái)生成密度圖。MCNN是非常經(jīng)典的人流計(jì)數(shù)框架,使用了三種不同尺度的卷積來(lái)盡可能捕捉特征。使用已有框架直接生成密度圖,雖然很直觀,但是仍舊有一個(gè)問(wèn)題要討論。
MCNN中有兩層池化層,所以直接使用MCNN會(huì)導(dǎo)致生成的特征圖縮水。一種解決方案是直接把特征圖插值回原尺度,另外則是加兩層升采樣層處理。
針對(duì)這個(gè)問(wèn)題, 作者做了實(shí)驗(yàn),實(shí)驗(yàn)結(jié)果發(fā)現(xiàn),以MAE為評(píng)價(jià)指標(biāo),兩種解決方案表現(xiàn)差的不大,考慮到升采樣會(huì)吃更多gpu內(nèi)存,最后DMNet采用了第一種方案。
基于密度圖分割輸入航空?qǐng)D像并生成前景
在生成了對(duì)應(yīng)的密度圖后,我們需要使用他們來(lái)生成前景。由于密度圖本身可以通過(guò)密度值的高低來(lái)間接表示某一像素上有物體的概率,我們?nèi)藶槎艘粋€(gè)閾值。我們希望通過(guò)調(diào)節(jié)這個(gè)閾值來(lái)盡可能的過(guò)濾背景像素,并保持現(xiàn)有像素的完整性。
具體的做法是,設(shè)置一個(gè)滑動(dòng)窗口對(duì)密度圖進(jìn)行滑動(dòng),每次滑動(dòng)不重疊?;瑒?dòng)的時(shí)候會(huì)對(duì)當(dāng)前區(qū)域下的像素加和,如果加和大于閾值,我們保留這個(gè)區(qū)域,也就是存下這個(gè)窗口對(duì)應(yīng)的坐標(biāo)值。否則我們直接丟棄(也就是將其視為背景)。我們反復(fù)多次加和,直到滑動(dòng)窗口覆蓋所有特征圖。
下面是上述過(guò)程的一個(gè)例子。

使用滑動(dòng)窗口生成density mask
在我們完成一次滑動(dòng)后,我們會(huì)得到多個(gè)離散的小區(qū)域。為了將這些區(qū)域全部連起來(lái),我們使用八連通域算法來(lái)進(jìn)行連接。如果最終生成的區(qū)域不規(guī)則,我們?nèi)∵@些區(qū)域的最左上右下位置,整個(gè)連起來(lái)。
物體檢測(cè)
在生成密度切塊(density crop)后,我們把這些圖放到物體檢測(cè)模型中進(jìn)行訓(xùn)練。訓(xùn)練時(shí)原圖也參與其中,因?yàn)檫M(jìn)行切塊可能會(huì)傷到大物體,所以將原圖加入來(lái)確保大物體的精度。DMNet使用了faster-rcnn rpn來(lái)訓(xùn)練物體檢測(cè)。需要指出的是,任何物體檢測(cè)方法都可以用在這一步,并不僅限于faster rcnn檢測(cè)器。
在評(píng)估(evaluation)階段,原圖和切好的密度圖會(huì)被分別送入我們之前訓(xùn)練的檢測(cè)器中進(jìn)行評(píng)估。最終的結(jié)果會(huì)被統(tǒng)一合并在原圖對(duì)應(yīng)的結(jié)果文件上。DMNet使用NMS算法對(duì)檢測(cè)結(jié)果進(jìn)行后處理。
DMnet和論文發(fā)表時(shí)的sota模型間的對(duì)比如下圖。作者將自己的算法和兩個(gè)非常常見的航空?qǐng)D像數(shù)據(jù)集進(jìn)行對(duì)比,使用的數(shù)據(jù)集分別是Visiondrone數(shù)據(jù)集和UAVDT數(shù)據(jù)集。

DMNet在Visiondrone 2018評(píng)估(evaluation)集上的表現(xiàn)

DMNet在UAVDT數(shù)據(jù)集上的表現(xiàn)
綜合來(lái)看,DMNet能進(jìn)一步提升大概1-1.5AP,取決于backbone的選擇。尤其在小物體檢測(cè)上面,DMnet表現(xiàn)不凡,在Visiondrone數(shù)據(jù)集上提升了近4AP。
作者針對(duì)于模型如何效果好,進(jìn)行了多個(gè)方面的分析。
1.生成密度圖時(shí)閾值的選擇
閾值選擇在生成密度圖時(shí)有很大的影響。閾值過(guò)低,基本無(wú)法過(guò)濾背景像素;而閾值過(guò)高,基本不會(huì)生成密度切塊,或者切塊過(guò)小反而干擾學(xué)習(xí)過(guò)程。作者對(duì)此做了實(shí)驗(yàn)。

閾值選擇對(duì)生成密度圖的影響
從實(shí)驗(yàn)結(jié)果來(lái)看,施加非常小的閾值,模型表現(xiàn)很差,近乎于直接使用原圖檢測(cè)。所以通過(guò)不同的手段(比如交叉驗(yàn)證或可視化)選擇合理的閾值是很重要的。
2.使用密度圖切分和均勻切分相比是否有優(yōu)勢(shì)
作者對(duì)比了密度圖切分和更加細(xì)致的4*3均勻切分(“密度圖方法切分出前景”一圖中包含了這種方法)方法。從實(shí)驗(yàn)結(jié)果來(lái)看,密度圖更勝一籌。原因是因?yàn)槊芏葓D是根據(jù)密度來(lái)判斷切分邊界,使用了更加可靠的情景信息。
3.使用密度圖切分的貢獻(xiàn)
使用密度圖切分提升了小物體和中型物體的檢測(cè)精度,進(jìn)而整體拉高了全體的檢測(cè)進(jìn)度,這也是DMNet表現(xiàn)出色的一個(gè)原因。

結(jié)果展示
這篇文章簡(jiǎn)單總結(jié)了DMNet(Density map guided object detection in aerial images)的原理和工作方法,希望能對(duì)各位看官有幫助。DMNet的相關(guān)代碼已開源,對(duì)這篇文章有任何的疑問(wèn)和指教,歡迎發(fā)郵件到[email protected]討論或者在github上提issues。
論文:https://arxiv.org/abs/2004.05520
代碼:https://github.com/Cli98/DMNet
END
交流群
歡迎加入公眾號(hào)讀者群一起和同行交流,目前有SLAM、三維視覺、傳感器、自動(dòng)駕駛、計(jì)算攝影、檢測(cè)、分割、識(shí)別、醫(yī)學(xué)影像、GAN、算法競(jìng)賽等微信群(以后會(huì)逐漸細(xì)分),請(qǐng)掃描下面微信號(hào)加群,備注:”昵稱+學(xué)校/公司+研究方向“,例如:”張三?+?上海交大?+?視覺SLAM“。請(qǐng)按照格式備注,否則不予通過(guò)。添加成功后會(huì)根據(jù)研究方向邀請(qǐng)進(jìn)入相關(guān)微信群。請(qǐng)勿在群內(nèi)發(fā)送廣告,否則會(huì)請(qǐng)出群,謝謝理解~

