# Single Shot MultiBox Detector 論文閱讀 paper: https://arxiv.org/pdf/1512.02325.pdf ## 何謂 One-stage detection, two-stage detection? ### One-stage detection One-stage detection 顧名思義就是物件辨識及偵測一次到位,也就是同一個網路可以同時偵測物件的位置並且辨識物件是甚麼東西。而Google在2015年提出的Single Shot Multibox Detector (SSD)就是屬於One-stage的物件偵測演算法 ### Two-stage detection Two-stage detection是先選出物件(region proposal),再針對選取的物件進行辨識。這種方法會有個問題:假設影像中物件有100個,就會需要進行100次辨識。運算時間相較於One-stage會大幅提升。 ## Introduction SSD在當時不但在inference速度與準確率都是SOTA級別的,並超越Faster RCNN及YOLO。 ### 論文貢獻  * Inference速度超越其他model如Faster RCNN與YOLO達到59FPS,同時又可以保持準確率 (mAP 74.3% on VOC2007 test) * SSD的核心概念為:使用數個經由convolution layer的feature maps,並從中預測默認預測框(default bounding box)的類別及偏移量。 * 以不同尺度feature maps預測。 * 為end-to-end training。 ### 與YOLO的差異 YOLO與SSD雖均為one-stage detection的演算法,但YOLO最後是以FC層做連接且最後輸出為7x7x30的矩陣,因採用不同尺度特徵圖的原因,相比於YOLO,SSD可以有更好的感受視野,且更能適應不同尺度的輸入影像。另外YOLO是Anchor free的演算法,不過在YOLOv2之後就加入了Anchor box的概念。 ## Framework SSD採用VGG16為backbone,並將pool5由size=2x2, stride=2改為size=3x3,stride=1;fc6、fc7分別改為3x3及1x1的卷積層,並在fc6中使用Atrous Algorithm (Dilated convolution);最後移除所有dropout layer及fc8並新增Conv8_2、Conv9_2、Conv10_2、Conv11_2。而目前SSD也被應用在許多知名的backbone上,如MobileNet-SSD等等  ### Multi-scale Feature Maps 在SSD中首度使用到Pyramidal Feature Hierarchy的概念,即在不同大小的feature map中預測物件框的位置  ### Default Box SSD中的default box是參考了Faster RCNN的Anchor box,首先會在每個特徵圖中設置不同長寬比例的的預設框,因此特徵圖中的每個pixel都會有一定數量的預測框(如圖1(b)),在訓練時,預測框會以預設框作為基準進行訓練,可以降低一開始模型訓練的難度。 #### Default box 數量 預設框的數量是由每層feature map的尺度及feature map中的預設框數量所決定的,舉例來說一個38x38大小的feature map中設定3個預設框則這層會得到38x38x3個預設框。  #### 如何選取default box的尺度與長寬比 * 尺度 SSD中利用不同大小的特徵圖來檢測不同尺度的物件,即在高層特徵圖中檢測小物件,在低層特徵圖中檢測大物件,而文中提出的尺度算法如下:  其中$Sk$為第k層特徵圖的尺度,$Smin$與$Smax$分別為最底層特徵圖與最高層特徵圖的尺度,而文中設定$Smin=0.2$、$Smax=0.9$。 * 長寬比 使用不同比例長寬比的default box,即$α_r$。其中每個feature map中的每個pixel都會有6個預設框 (除Conv4_3、Conv10_2、Conv11_2 僅使用4個預設框,excl. $α=3$, $1/3$)。  ### Matching strategy 1. 首先將每個真實框與具有最佳 jaccard 重疊的預設框進行匹配,即每個真實框會匹配到一個與之IOU最小的預設框。 2. 之後再將預設框與任何 jaccard 重疊高於閾值 (0.5) 的真實框進行匹配。 ### Hard negative mining 因為在匹配步驟後大多的預設框都是負樣本,導致正負樣本數量差距太大,會有類似data imbalance的問題。因此文中將負樣本進行抽樣後,再將置信度進行排序,選取最高的一些預設框作為最後的負樣本,使正負樣本的比值最多為 1:3,如此模型優化速度可以提升、訓練過程也更加穩定。 ### Data augmentation * 使用原始影像 * 採樣一patch 使其與物體的最小 jaccard overlap 為 0.1, 0.3, 0.5, 0.7, 0.9 * 隨機採樣patch 採樣的patch大小為原始影像的[0.1, 1]、長寬比為 0.5~2 之間,且如果ground truth中心點在採樣的patch內,則保留與ground truth重疊的區域。訓練影像經過上述方法採樣後,會將每個patch resize 成固定大小,之後再以 0.5 的概率隨機進行水平翻轉。 ### Objective Function #### Total loss 文中所提出的Total Loss是由confidence loss及localization loss組合而得:  其中N為匹配的default box總數(IOU>threshold),而α為調整權重的參數(論文中為1) #### Localization loss Localization loss為預測框l與真實框g head的smooth L1 loss,而其中g head是由g經過以下轉換而得。  #### Confidence loss Confidence loss 則是多類別的cross entropy loss。  ## 實驗結果 ### PASCAL VOC2007 由圖可得知,SSD較Fast RCNN與Faster RCNN佳。  ### PASCAL VOC2012 由圖可得知,SSD在inference速度與準確度都較YOLO即Faster RCNN來的好。  ## Conclusion SSD文中首度提出Pyramidal Feature Hierarchy的概念,並由feature map中預測位置,另外文中也提出許多tricks如default box, atrous, data augmentation等幫助模型訓練,而實驗結果中也顯示SSD在速度方面獲得大幅提升,同時準確率也沒有掉,甚至是超越許多當年SOTA的模型。
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up