小目標因為其解析度和資訊的限制,對其進行檢測是比較有挑戰性的任務。當下很多對小目標的檢測方法都是以犧牲精度作為代價的。作者在ssd中進行了多層特徵的融合以引入context資訊,特徵融合的細節上,作者設計了兩種模型,分別是:concatenation module 和 element-sum module,這兩種模型的不同點在於引入context資訊方式的差異。實驗結果顯示這兩種模型的檢測精度都超過了ssd,檢測的速度也比dssd更快。
當下的許多已經被證明相當有效的方法都是通過採用引入上下文資訊的方式來改進對小目標的檢測。如圖一所示,在不將海考慮在內的時候,帆船的識別是非常困難的。當下的很多網路r-cnn系列,使用區域提名的方式,檢測速率太低,而dssd網路將residual-101作為基礎網路來提高小目標的檢測精度,但是犧牲了檢測的速率。
由於上下文資訊的使用會引入雜訊。細節上,concatenation module使用了1x1的卷積層來學習目標資訊的融合權重和contextual資訊,它能夠減少無用的背景的干擾。element-sum module手動設定相同的權重,並且強制融合了多層級的特徵。它能夠增強有用的context資訊的有效性。實驗證明,兩種module不但精度比ssd更高,小目標類的精度也高出了2-3個百分點。
由於淺層適用於檢測小目標,深層特徵圖則檢測大目標,為了檢測速度,作者不考慮融合高層的特徵。為了考慮融合哪些層的特徵,將特徵層的有效的receptive fields作為指標。比如在最靠近人的小船的檢測中,圖層con4-3是最合適的,而conv5-3和fc6則有跟大的effective receptive fields。
為了在缺乏語義資訊的conv4-3中引入contextual資訊,作者使用了這兩總module。
如圖四所示為concatenation fusion module,在conv5-3之後跟乙個降卷積層以便於將卷積層5-3的特徵圖size變得和conv-4-3一樣,這個降卷積層通過雙線性上取樣bilinear upsample初始化。在conv4-3和5-3新增3x3大小的卷積層以便於更好的提取特徵用於融合。在將它們沿著通道軸進行融合之前,分別使用不同尺度的批量歸一化bn層,如10,20.最後用1x1的卷積層生成最終的融合特徵圖用於降維和特徵重結合。
第二種方法和第一種在融合階段有所不同,這兩種包含不同層次特徵的特徵圖以相同的權重進行點對點的整合,實際操作中,由於之前新增的卷積層以便於提取特徵進行更好的融合,導致這個操作效果很好,這也是收到了dssd的啟發。
第一種方法使用1x1卷積層學習到的權重來融合特徵,第二種方法則手動設定權重,由於這樣的差異,第一種方法能消除無用的背景雜訊的影響,而第二種方法能加大語義資訊的重要性。
總結:作者提出的方法對小目標具有較高的檢測精度和檢測速率,於現在最好的對小目標檢測的方法相比,作者提出的方法在實現相當的精度的同時提高了檢測的速度。作者在不同方面展示了這兩種方法的優勢,由於對於小目標來說,context資訊並不總是有用的,因此下一步的的研究工作是控制資訊的傳送。
pytorch目標檢測ssd二 ssd的整體框架
這是ssd的第二篇部落格,主要是介紹ssd的整體框架,不會涉及 這篇部落格,我會分析一下整體框架。1 輸入 輸入的大小要被設定成300x300的,所以不是300x300的,輸入之前需要resize一下 2 特徵提取網路 深度神經網路可以進行特徵提取,我們的ssd採用的就是vgg深度神經網路。但是ss...
GBDT LR特徵融合的例子
import pandas as pd from sklearn.linear model import logisticregression from sklearn.ensemble import gradientboostingclassifier from sklearn.preproces...
如何理解目標檢測中的SSD
好記性不如爛筆頭。下面的第乙個4表示的是4個default box 與faster r cnn 和yolo不同,這裡是中心座標加上寬高 其中 classifer是通過3 3 4 classes 4 的卷積實現的,得到結果即是檢測的結果,然後將不同feature map的檢測結果放在一起。先過濾掉co...