M2Det目标检测
tags: 單階段;多尺度特征金字塔
代碼: https://github.com/qijiezhao/M2Det
地址:https://arxiv.org/abs/1811.04533
前言
FPN現在已經是目標檢測的標配,其利用自底向上的特征金字塔搭建成自頂向下的特征,從而利用這些特征進行預測,在一定程度上解決了不同尺度目標的檢測。然而,卷積層的金字塔形式最原始的設計是用來解決分類問題,與檢測問題有所區別。
本文嘗試搭建更為有效的用于檢測的特征金字塔:
提出緣由
現有的基礎網絡的目標都是針對圖像分類而言的,因此對于檢測任務并不是十分友好。而且現有的金字塔基本上都是從礎框架中的某一特征層建立的,缺乏足夠信息。深層次的特征對于分類而言,更具有說服力;而淺層次的特征對于目標的位置更友好。而且,淺層特征對于描述目標的簡單特征更有力,深層特征對于描述目標的復雜特征更有力。然而,對于比如遠處的人和近處的交通標志而言,其在某個特征層可能具有同樣大小,但其特征復雜性卻完全不同。所以,對于單層特征來說,要么對簡單特征有很好的表達能力,要么對復雜特征有很好的表達能力,兩者之間是不能同時滿足的。因此如何解決這個問題就是本文算法的思路。
M2Det
M2Det整體框架網絡同樣是密集采樣的形式,一共包含三個模塊:
從上圖中可以看到,FFMv1將主干網絡中的語義特征進行了融合,得到了基礎特征(base feature);TUM和FFMv2模塊交替 ,前者從基礎特征中提取多尺度特征,后者將基礎特征與TUM產生的特征進行融合,最終將這些多尺度特征送入SFAM模塊中,構建了基于不同尺度特征的金字塔,并進行了多層次的劃分。
以VGG為例,具體如下:
第一個TUM只接受基礎特征作為輸入,后面TUM接受的是FFMv2的處理結果,而FFMv2要將基礎特征和第一個TUM的處理結果相融合。
該結構中,conv5_3經過conv之后變為20x20x512,上采樣之后變為40x40x512;conv4_3經過conv之后,變為40x40x256,然后將這兩個結果特征圖進行拼接,最終產生的維度為768x40x40,也就是基礎特征圖
FFMv2結構768x40x40大小的基礎特征經過conv之后,變為40x40x128,與TUM產生的128x40x40特征進行拼接后,變為256x40x40
TUM結構TUM接收FFMv2的結果作為輸入,經過內部的一個類似U型的編碼-解碼操作,產生了不同尺度的分支,這些分支用來預測不同大小的目標。上面的TUM負責預測小目標,中間的為中等目標,下面的為大目標。
SFAM結構該層是為了將前面各個TUM模塊的結果進行匯合,從而產生多尺度,多層次的特征金字塔。聚合的過程如上圖:因為前面的每個金字塔都有6中不同大小的尺度,分別為1x1,3x3,5x5,10x10,20x20,40x40,那么在該層中,通過將三種TUM模塊中尺度對應的特征圖進行拼接,這樣就形成了6種拼接之后的特征圖,其大小不變,厚度卻增加了。然而,僅僅通過增加厚度還不夠理想,所以通過了一個SE模塊,使金字塔各層更關注于與自己更適應的目標尺度。
訓練問題
太耗時!太耗內存!
實驗結果
數據集coco
總結
本文提出了新的構建特征金字塔的方式,比FPN使用的基礎層少,而且效果還不錯。雖然整體框架看著很復雜,但是不難理解,佩服作者的腦洞。等硬件資源充足了,可以試試!
總結
- 上一篇: 学习matlab(十八)——小波分析
- 下一篇: Eclipse的版本、下载网址和安装