
尺度變化是目標檢測中的關鍵挑戰之一。今天要說的這個技術就特別厲害,在目標檢測領域中,目前是性能最強的一個框架。下面讓我們一起去見證下它的優勢所在。
本次介紹的算法框架:
Scale-Aware Trident Networks for Object Detection
下載地址:https://arxiv.org/abs/1901.01892
在該網絡框架中,首先進行了一個控制實驗,以研究感受野對不同尺度目標檢測的影響。根據勘探實驗的結果,提出了一種新的三分支網絡(Triddnet),該網絡的目標是生成具有均勻代表性的標度特征圖。
等下~今天主角是Trident Network,但是其是借鑒了CVPR一篇文章中的Multi-Scale思想,所以接下來我還是有必要帶大家了解下那片高質量文章及其框架,那就是——SNIP。那我們開始梳理下SNIP是如何目標檢測的。
論文鏈接:https://arxiv.org/abs/1711.08189
這個框架研究點是目標檢測中的小目標的問題。小目標檢測一直是目標檢測中的難題,如果自己實踐過的小伙伴應該都知道,數據集中small類的AP基本都是最低的,主要原因如下:
-
CNN網絡提取的語義化特征和分辨率之間的矛盾;
-
目前的目標檢測都采用了Faster RCNN的Anchor思想,就算小目標在Anchor范圍內,也會因為面積小而導致IoU過低。
從上圖可以看到,COCO數據集中90%的樣本例子的大小都在0.472以下,和ImageNet差別非常大。
-
說明了類似COCO這樣的數據集中存在着大量的小物體;
-
也說明了ImageNet預訓練的模型在遷移到樣本大小差異較大的COCO數據集中,很可能產生一定的domain-shift偏差。
於是,就由生了這樣的動機:
-
現在目標檢測為了提高對小目標的效果,都采用upsample的方法,這個仁者見智吧,那能不能直接用低分辨率的圖像不做upsample來訓練網絡?
-
能不能通過挑選樣本的方式來增加網絡效果的,如upsample調整了大小以后,只用64x64~256x256的Ground Truth來訓練?用所有的GT來訓練真的會更好嗎?
實際上,現在有很多針對小目標的措施和改良,如下:
-
最常見的是Upsample來Rezie網絡輸入圖像的大小;
-
用dilated/strous等這類特殊的卷積來提高檢測器對分辨率的敏感度;
-
用FPN這種把淺層特征和深層特征融合的,或者最后在預測的時候,用淺層特征和深層特征一起預測;
-
有比較直接的在淺層和深層的Feature Map上直接各自獨立做預測的,這個就是我們常說的尺度問題。
主要思路:
在訓練和反向傳播更新參數時,只考慮哪些在指定的尺度范圍內的目標,由此提出了一種特別的多尺度訓練方法,即SNIP(Scale Normalization for Image Pyramids)。
如上圖所示,在訓練時划分了三類尺度,對應三種不同分辨率的圖像。每個分辨率下的RoI都有其指定范圍,如果GT的box大小在這個范圍內,就被標記做valid,否則就被標記為invalid。
在生成Anchor並給Anchor分配label的時候,檢查該Anchor是否和某個invalid GT box的overlap超過0.3,若存在,則該Anchor會被視作invalid Anchor;若不存在,則會被視作valid Anchor。
這些invalie anchor在train的時候都會被無效化,也不會加入到反向傳播的過程中從而對參數產生影響,相當於在每個分辨率上,只對大小合適的目標進行訓練,這就符合了該網絡框架設計的初衷。相應的,在inference時候,如果區域面積在那個分辨率的指定范圍外,也同樣會被拋棄,最后,在進行Rescale和NMS等操作。
仔細閱讀后,你會發現該框架考慮了很多細節元素:
-
用的是Deformable RFCN detector,而不是常見的卷積,根據自己的需要作出一定的改變 ;
-
網絡結構是Dual path networks(DPN)和ResNet-101,由於需要內存很大,為了適應GPU內存,對圖像進行了采樣,具體方法是選取一個1000x1000的包含最多目標的區域作為子圖像,然后重復該步驟直到所有目標都被選取 ;
-
為了提升RPN的效果,嘗試了使用7個尺度,連接conv4和conv5的輸出;
-
從功能上來講,對每一層金字塔圖像,分別檢測不同尺寸的目標,金字塔圖像越大,檢測的目標尺寸越小;
-
從網絡結構上來講,3個分支進行參數共享,故網絡結構完全一致,區別在於目標尺寸的超參數不同。
實驗結果
MS表示multi-scale