The VisDrone2019 挑戰賽
如今,配備攝像頭的無人機或通用無人機已經廣泛地應用在農業、航空攝影、快速交付、監視等多個領域。
挑戰賽官網地址:http://aiskyeye.com/
VisDrone2019 資料集由天津大學機器學習與資料探勘實驗室 AISKYEYE 隊伍負責收集,全部基準資料集由無人機捕獲,包括 288 個影片片段,總共包括 261908 幀和 10209 個靜態影像。
這些幀由 260 多萬個常用目標(如行人、汽車、腳踏車和三輪車)的手動標註框組成。為了讓參賽隊伍能夠更有效地利用資料,資料集還提供了場景可見性、物件類別和遮擋等重要屬性。
本屆挑戰賽包含四個任務:
任務 1:影像中的目標檢測。任務旨在從無人機拍攝的單個影像中檢測預定義類別的物件(例如,汽車和行人);
任務 2:影片中的目標檢測。該任務與任務 1 相似,不同之處在於需要從影片中檢測物件;
任務 3:單目標跟蹤挑戰。任務旨在估計後續影片幀中第一個幀中指示的目標狀態;
任務 4:多目標跟蹤挑戰。該任務旨在恢復每個影片幀中物件的軌跡。
資料集下載連結:https://github.com/VisDrone/VisDrone-Dataset
這次比賽的難點主要有:
1. 大量的檢測物體
與常規檢測資料集不同的是,每張圖片包含上百個待檢測物體,資料集總共含有 260 萬個標註框,如果使用佔用視訊記憶體較大的模型,可能會出現資源不夠的情況。同時面對一些重疊的結果時,我們需要選擇合適的閾值去過濾出最好的結果。
2. 部分目標過小
因為資料集是由無人機拍攝而來,行人和遠景的物體的標註框就非常小,這對模型產生 anchor 的能力形成了一定的挑戰,高解析度的空間資訊和高質量的 proposal 在本次賽題中就顯得尤為重要。
3. 不同的資料分佈
常用的資料集如:COCO 資料集、OBJ365 都是廣泛應用的資料集,所以大家經常用它們的預訓練來 fine-tune 其他資料集。而這一次的資料集由於拍攝角度問題,預訓練所帶來的效果不如預期。
評測指標
為了進行綜合評估並反映每個物件類別的效能,本次測評採用類似於 MS COCO 資料集的評估方案,使用 AP, APIOU=0.50, APIOU=0.75, ARmax=1, ARmax=10, ARmax=100, 和 ARmax=500,且這些指標是基於 10 個物件類別計算出來的。
最終,來自電子科技大學的李宏亮團隊獲得了 Task1「影像中的目標檢測」的冠軍;中科院資訊工程研究所的葛仕明團隊獲得了 Task3「單目標跟蹤挑戰」的冠軍;來自深蘭科技北京 AI 研發中心的 DeepBlueAI 團隊獲得了 Task2「影片目標檢測」和 Task4「多目標追蹤」兩項冠軍。以下是 DeepBlueAI 團隊分享的解決方案
任務 2:影片中的目標檢測
檢測器:Cascade RCNN + DCN + FPN + DH
團隊基於現有資料集,並結合以往檢測經驗,打造了一個強大的目標檢測器。
1. Cascade RCNN
用低 IoU 閾值進⾏訓練會導致效果不好,因為會產⽣很多噪聲框;所以我們希望閾值儘量⾼,但 IoU 閥值設過⾼時,訓練出的 detector 效果卻會呈現下降趨勢。Cascade RCNN 將多個閾值越來越⾼的 detector 串聯,得到了更好的效果。
⾸先,在每次 detector 計算後,IoU⾼的 bbox 的分佈都會提升,使得下⼀階段更⾼閾值下正樣本的數量得到保證;其次,每經過⼀次 detector 計算,bbox 都會變得更準確,更⾼的閾值可保證下⼀次迴歸效果更好。
2. DCN(Deformable Convolution Network)
deformable convolution network 提出了「deformable convolution」和「deformable RoI pooling」兩種網路結構單元,deformable convolution 和 deformable RoI pooling 都是基於透過學習一個額外的偏移(offset),使卷積核對輸入 feature map 的取樣產生偏移,集中於感興趣的目標區域, 從而產生更好的感受野。
3. Double Heads
透過對比實驗可發現:用 fc-head 去做分類,同時用 conv-head 去做迴歸,可以實現最好的效果。因為分類更多的需要語義資訊,而回歸座標框需要更多的空間資訊,這種方法採用「分而治之」的思想,針對不同的需求設計 head 結構,當然這種方法增加了計算量,在平衡速度和準確率的情況下,最後選擇了 3 殘差、2non-local,共 5 個模組。
實驗細節:
1. 我們將 Faster rcnn + DCN + FPN 作為我們的 baseline,因為這兩個模組總是能在不同的資料集上起到效果。
2. 將原有 head 改為 Double head
3. 採用級聯檢測 (Cascade rcnn)
4. 將 ResNeXt101 作為 backbone
5. 使用 cascade rcnn COCO-Pretrained weight
6. 多尺度訓練+Testing tricks
實驗結果 (驗證集)
任務 4 : 多目標跟蹤
跟蹤演算法:IOU tracker + KCF + tracklet vote
根據賽題描述與資料集分析結果,我們可以知道,如果圖中有大量目標且大部分都為小目標,在這種情況下仍然使用 reid 相關跟蹤演算法的話,不僅最終效果不理想,而且也會在匹配排序的過程中耗費大量的資源,所以我們最終決定使用 iou-tracker。
原因:
使用不需要圖片資訊,僅根據檢測結果的相鄰幀的 iou 進行計算;
iou-tracker 對檢測結果有著較高的要求,我們對自己的檢測結果有信心;
執行速度極快,不涉及到神經網路,節省時間和 GPU 資源。
MOT Pipeline:
難點:使用 iou tracker 之後,還是會不可避免地遇到斷幀 (一條軌跡無法全部預測,被預測為多個子段) 的問題,這樣會大大降低最後的得分,所以我們使用 KCF 對現有結果進行一個更新。
KCF 的原理極為複雜,但 KCF 作用就是根據現有結果使用傳統演算法,去預測之後幾幀的結果,這相當於對一些丟失的資訊進行補充的操作。
得到新的軌跡之後再使用 IOU 相關投票融合方法,將更新後的結果融合,融合過程如圖所示:
KCF 更新軌跡之後,正常情況下軌跡之間就會有相互重疊的地方,我們使用一個基於 IOU 的投票方法,如果軌跡之間重疊部分的投票結果大於某個閾值,就將這兩個軌跡進行融合。
實驗細節:
1. 我們將任務二中的檢測結果當做輸入,先使用 GOG 方法作為我們的 baseline
2. 將方法改為 IOU tracker
3. 調整閾值,以及一些測試技巧
4.+KCF +tracklet voting
5. 得到更好的檢測結果
實驗結果 (驗證集)
實驗資料。
下一步工作
在檢測方面,在網路結構上有一些其他可以使用的模組,例如「PAFPN--FPN 的改進版」,可以在特徵提取之後更好地處理各層級之間的資訊;以及「GCnet」,一種結合了兩個不錯的 attention 機制所得到的網路,等等。
由於時間的限制,在更新原有跟蹤結果的時候,我們使用的是比較傳統的 KCF 演算法,這類演算法比較節省時間,但同時也有很大的侷限性。如果有機會,以後想嘗試一些更好的、基於神經網路的方法進行更新。
參考文獻
[1]Lin T Y , Dollár, Piotr, Girshick R , et al. Feature Pyramid Networks for Object Detection[J]. 2016.
[2]Dai J, Qi H, Xiong Y, et al. Deformable Convolutional Networks[J]. 2017.
[3]Cai Z , Vasconcelos N . Cascade R-CNN: Delving into High Quality Object Detection[J]. 2017.
[4]Xie S , Girshick R , Dollar P , et al. Aggregated Residual Transformations for Deep Neural Networks[C]// 2017 IEEE Conference on Computer Vision and Pattern Recognition (CVPR). IEEE Computer Society, 2017.
[5]Bochinski E , Eiselein V , Sikora T . High-Speed tracking-by-detection without using image information[C]// 2017 14th IEEE International Conference on Advanced Video and Signal Based Surveillance (AVSS). IEEE, 2017.
[6]Henriques J F , Caseiro R , Martins P , et al. High-Speed Tracking with Kernelized Correlation Filters[J]. IEEE Transactions on Pattern Analysis and Machine Intelligence, 2015, 37(3):583-596.