1. 程式人生 > >SSD目標檢測原理

SSD目標檢測原理

Preface

這裡寫圖片描述

做目標檢測這塊的多關注哦~

Abstract

這篇文章在既保證速度,又要保證精度的情況下,提出了 SSD 物體檢測模型,與現在流行的檢測模型一樣,將檢測過程整個成一個 single deep neural network。便於訓練與優化,同時提高檢測速度。

SSD 將輸出一系列 離散化(discretization) 的 bounding boxes,這些 bounding boxes 是在 不同層次(layers) 上的 feature maps 上生成的,並且有著不同的 aspect ratio

在 prediction 階段

  • 要計算出每一個 default box 中的物體,其屬於每個類別的可能性,即 score,得分。如對於 PASCAL VOC 資料集,總共有 20 類,那麼得出每一個 bounding box 中物體屬於這 20 個類別的每一種的可能性。

  • 同時,要對這些 bounding boxes 的 shape 進行微調,以使得其符合物體的 外接矩形

  • 還有就是,為了處理相同物體的不同尺寸的情況,SSD 結合了不同解析度的 feature maps 的 predictions。

相對於那些需要 object proposals 的檢測模型,本文的 SSD 方法完全取消了 proposals generation、pixel resampling

 或者 feature resampling 這些階段。這樣使得 SSD 更容易去優化訓練,也更容易地將檢測模型融合進系統之中。

在 PASCAL VOCMS COCOILSVRC 資料集上的實驗顯示,SSD 在保證精度的同時,其速度要比用 region proposals 的方法要快很多。

SSD 相比較於其他單結構模型(YOLO),SSD 取得更高的精度,即是是在輸入影象較小的情況下。如輸入 300×300 大小的 PASCAL VOC 2007 test 影象,在 Titan X 上,SSD 以 58 幀的速率,同時取得了 72.1% 的 mAP。

如果輸入的影象是 500

×500,SSD 則取得了 75.1% 的 mAP,比目前最 state-of-art 的 Faster R-CNN 要好很多。

Introduction

現金流行的 state-of-art 的檢測系統大致都是如下步驟,先生成一些假設的 bounding boxes,然後在這些 bounding boxes 中提取特徵,之後再經過一個分類器,來判斷裡面是不是物體,是什麼物體。

這類 pipeline 自從 IJCV 2013, Selective Search for Object Recognition 開始,到如今在 PASCAL VOCMS COCOILSVRC 資料集上取得領先的基於 Faster R-CNN 的 ResNet 。但這類方法對於嵌入式系統,所需要的計算時間太久了,不足以實時的進行檢測。當然也有很多工作是朝著實時檢測邁進,但目前為止,都是犧牲檢測精度來換取時間。

本文提出的實時檢測方法,消除了中間的 bounding boxes、pixel or feature resampling 的過程。雖然本文不是第一篇這樣做的文章(YOLO),但是本文做了一些提升性的工作,既保證了速度,也保證了檢測精度。

這裡面有一句非常關鍵的話,基本概括了本文的核心思想:

Our improvements include using a small convolutional filter to predict object categories and offsets in bounding box locations, using separate predictors (filters) for different aspect ratio detections, and applying these filters to multiple feature maps from the later stages of a network in order to perform detection at multiple scales.

本文的主要貢獻總結如下:

  • 提出了新的物體檢測方法:SSD,比原先最快的 YOLO: You Only Look Once 方法,還要快,還要精確。保證速度的同時,其結果的mAP 可與使用 region proposals 技術的方法(如 Faster R-CNN)相媲美。

  • SSD 方法的核心就是 predict object(物體),以及其 歸屬類別的 score(得分);同時,在 feature map 上使用小的卷積核,去predict 一系列 bounding boxes 的 box offsets

  • 本文中為了得到高精度的檢測結果,在不同層次的 feature maps 上去 predict objectbox offsets,同時,還得到不同 aspect ratio的 predictions。

  • 本文的這些改進設計,能夠在當輸入解析度較低的影象時,保證檢測的精度。同時,這個整體 end-to-end 的設計,訓練也變得簡單。在檢測速度、檢測精度之間取得較好的 trade-off

  • 本文提出的模型(model)在不同的資料集上,如 PASCAL VOCMS COCOILSVRC, 都進行了測試。在檢測時間(timing)、檢測精度(accuracy)上,均與目前物體檢測領域 state-of-art 的檢測方法進行了比較。

The Single Shot Detector(SSD)

這部分詳細講解了 SSD 物體檢測框架,以及 SSD 的訓練方法。

這裡,先弄清楚下文所說的 default box 以及 feature map cell 是什麼。看下圖:

  • feature map cell 就是將 feature map 切分成 8×8 或者 4×4 之後的一個個 格子

  • 而 default box 就是每一個格子上,一系列固定大小的 box,即圖中虛線所形成的一系列 boxes。

這裡寫圖片描述

Model

SSD 是基於一個前向傳播 CNN 網路,產生一系列 固定大小(fixed-size) 的 bounding boxes,以及每一個 box 中包含物體例項的可能性,即 score。之後,進行一個 非極大值抑制(Non-maximum suppression) 得到最終的 predictions。

SSD 模型的最開始部分,本文稱作 base network,是用於影象分類的標準架構。在 base network 之後,本文添加了額外輔助的網路結構:

  • Multi-scale feature maps for detection 
    在基礎網路結構後,添加了額外的卷積層,這些卷積層的大小是逐層遞減的,可以在多尺度下進行 predictions。

  • Convolutional predictors for detection 
    每一個新增的特徵層(或者在基礎網路結構中的特徵層),可以使用一系列 convolutional filters,去產生一系列固定大小的 predictions,具體見 Fig.2。對於一個大小為 m×n,具有 p 通道的特徵層,使用的 convolutional filters 就是 3×3×p   的 kernels。產生的 predictions,那麼就是歸屬類別的一個得分,要麼就是相對於 default box coordinate 的 shape offsets。 
    在每一個 m×n 的特徵圖位置上,使用上面的 3×3 的 kernel,會產生一個輸出值。bounding box offset 值是輸出的 default box 與此時 feature map location 之間的相對距離(YOLO 架構則是用一個全連線層來代替這裡的卷積層)。

  • Default boxes and aspect ratios 
    每一個 box 相對於與其對應的 feature map cell 的位置是固定的。 在每一個 feature map cell 中,我們要 predict得到的 box 與default box 之間的 offsets,以及每一個 box 中包含物體的 score(每一個類別概率都要計算出)。 
    因此,對於一個位置上的 k 個boxes 中的每一個 box,我們需要計算出 c 個類,每一個類的 score,還有這個 box 相對於 它的預設 box 的 4 個偏移值(offsets)。於是,在 feature map 中的每一個 feature map cell 上,就需要有 (c+4)×k 個 filters。對於一張m×n 大小的 feature map,即會產生 (c+4)×k×m×n 個輸出結果。

這裡的 default box 很類似於 Faster R-CNN 中的 Anchor boxes,關於這裡的 Anchor boxes,詳細的參見原論文。但是又不同於 Faster R-CNN 中的,本文中的 Anchor boxes 用在了不同解析度的 feature maps 上。

這裡寫圖片描述

Training

在訓練時,本文的 SSD 與那些用 region proposals + pooling 方法的區別是,SSD 訓練影象中的 groundtruth 需要賦予到那些固定輸出的 boxes 上。在前面也已經提到了,SSD 輸出的是事先定義好的,一系列固定大小的 bounding boxes。

如下圖中,狗狗的 groundtruth 是紅色的 bounding boxes,但進行 label 標註的時候,要將紅色的 groundtruth box 賦予 圖(c)中一系列固定輸出的 boxes 中的一個,即 圖(c)中的紅色虛線框。 

這裡寫圖片描述

事實上,文章中指出,像這樣定義的 groundtruth boxes 不止在本文中用到。在 YOLO 中,在 Faster R-CNN 中的 region proposal 階段,以及在 MultiBox 中,都用到了。

當這種將訓練影象中的 groundtruth 與固定輸出的 boxes 對應之後,就可以 end-to-end 的進行 loss function 的計算以及 back-propagation 的計算更新了。

訓練中會遇到一些問題:

  • 選擇一系列 default boxes

  • 選擇上文中提到的 scales 的問題

  • hard negative mining

  • 資料增廣的策略

下面會談本文的解決這些問題的方式,分為以下下面的幾個部分。 

Matching strategy

如何將 groundtruth boxes 與 default boxes 進行配對,以組成 label 呢?

在開始的時候,用 MultiBox 中的 best jaccard overlap 來匹配每一個 ground truth box 與 default box,這樣就能保證每一個 groundtruth box 與唯一的一個 default box 對應起來。

但是又不同於 MultiBox ,本文之後又將 default box 與任何的 groundtruth box 配對,只要兩者之間的 jaccard overlap 大於一個閾值,這裡本文的閾值為 0.5。 

Training objective

SSD 訓練的目標函式(training objective)源自於 MultiBox 的目標函式,但是本文將其拓展,使其可以處理多個目標類別。用 xpij=1 表示 第 i 個 default box 與 類別 p 的 第 j 個 ground truth box 相匹配,否則若不匹配的話,則 xpij=0

根據上面的匹配策略,一定有 ixp

相關推薦

SSD目標檢測原理

Preface 做目標檢測這塊的多關注哦~ Abstract 這篇文章在既保證速度,又要保證精度的情況下,提出了 SSD 物體檢測模型,與現在流行的檢測模型一樣,將檢測過程整個成一個 single deep neu

SSD 目標檢測演算法詳細總結分析(one-stage)(深度學習)(ECCV 2016)

論文名稱:《 SSD: Single Shot MultiBox Detector 》 論文下載:https://arxiv.org/pdf/1512.02325.pdf 論文程式碼:https://github.com/weiliu89/caffe/tree/ssd

目標檢測目標檢測原理與實現(五)--基於Cascade分類器的目標檢測

基於Cascade分類器的目標檢測        從今天開始進入基於機器學習的目標檢測,前幾節雖然也接觸了一些機器學習的方法,但它主要是做輔助工作,機器學習的方法和非機器學習的方法結合在一起使用,說到這想起來前幾天看到一位博士師兄發的笑話,說的是百度實驗室:  

SSD目標檢測(1):圖片+視訊內的物體定位(附原始碼)

一、SSD用於圖片物體的定位與檢測 SSD原理介紹這一篇部落格對我的幫助比較大,很詳細的介紹了SSD原理,送給大家做了解 1、下載SSD框架原始碼 1.1

使用SSD目標檢測c++介面編譯問題解決記錄

本來SSD做測試的Python介面用起來也是比較方便的,但是如果部署整合的話,肯定要用c++環境,於是動手鼓搗了一下。 編譯用的cmake,寫的CMakeList.txt,期間碰到一些小問題,簡單記錄一下問題以及解決方法。 當然前提是你本地的caffe環境沒啥問題。各種依賴都安好了。。 1.error: ‘A

SSD目標檢測演算法改進DSSD(反捲積)

轉自: https://blog.csdn.net/u010725283/article/details/79115477 論文:DSSD : Deconvolutional Single Shot Detector DSSD是2017年的CVPR

解讀SSD目標檢測方法

SSD是YOLO之後又一個引人注目的目標檢測結構,它沿用了YOLO中直接回歸 bbox和分類概率的方法,同時又參考了Faster R-CNN,大量使用anchor來提升識別準確度。通過把這兩種結構相結合,SSD保持了很高的識別速度,還能把mAP提升到較高的水平。 一、

DPM 目標檢測原理

DPM(Deformable Parts Model) Reference: Object detection with discriminatively trained partbased models. IEEE Trans. PAMI, 32(9):1627–1

經典網路結構梳理:SSD目標檢測演算法。

SSD全稱:Single Shot MultiBox Detector  是2016年ICCV的一篇論文。是目前為止主要的目標檢測演算法。 演算法的主要優點: 1. 速度比Faster-Rcnn快,精度比YOLO高。(在兼顧速度的同時,精度也很高。在不同的測試集下

SSD目標檢測(2):如何製作自己的資料集(詳細說明附原始碼)

前言:因為要依賴上一章SSD目標檢測(1):圖片+視訊版物體定位(附原始碼)來訓練預測自己的資料集,所以建立自己的資料集是一個複雜且避不開的步驟,以下給出了製作自己的資料集所要經過的簡單步驟,而後也有更詳細的說明奉上。 VOC2007資料集簡介; 規定資料夾

SSD目標檢測論文簡讀

本文簡單綜合性地介紹一下SSD,SSD文章內容資訊較多,若有失誤之處,望能熱心指出,感謝. SSD框架介紹: 演算法的主網路結構是VGG16,將兩個全連線層改成卷積層(Conv6與Conv7)再增加4個卷積層構成網路結構。然後對6個特徵圖使用3*3卷積濾波器(k*

SSD目標檢測(3):使用自己的資料集做預測(詳細說明附原始碼)

前言:上兩章已經詳細介紹了SSD目標檢測(1):圖片+視訊版物體定位(附原始碼),SSD目標檢測(2):如何製作自己的資料集(詳細說明附原始碼)。由於SSD框架是開源的程式碼,自然有很多前輩研究後做了改進。我也不過是站在前輩的肩膀上才能完成這篇部落格,在這裡表示

目標檢測目標檢測原理與實現(一)

轉載:http://blog.csdn.net/marvin521/article/details/9058735 基於閾值影象處理的目標檢測           從今天起開始要寫一些關於目標檢測的文章,涵蓋從簡單的閾值影象處理檢測、霍夫變換(hough transf

為什麼SSD目標檢測演算法對小目標檢測的效果不好

在SSD演算法中,每個feature map的畫素點都會生成prior box,SSD通過prior box進而對feature map進行訓練。 文章中提到,SSD在訓練過程中,prior box與GroundTruth的之間ROI 達到0.5才會放到網路裡面進行訓練。大

ssd目標檢測整理

ssd多目標檢測: https://github.com/ex4sperans/SSD https://github.com/georgesung/ssd_tensorflow_traffic_sign_detection The model was train

製作SSD目標檢測模型需要的訓練資料並訓練SSD目標檢測模型

1構建 資料集 先來看一下我們構建資料集合應該是什麼樣的,假設總資料為1000張。  為了方便,我們將資料放在/home/bingolwang/data 資料夾下。/home/bingolwang/data/VOCdevkit 這個目錄下是VOC2007 VOC200

動手創建 SSD 目標檢測框架

卷積神經網絡 不變 cto not 深度 參考 flat args 進行 參考:單發多框檢測(SSD) 本文代碼被我放置在 Github:https://github.com/XinetAI/CVX/blob/master/app/detection/ssd.py 關於 S

TF專案實戰(基於SSD目標檢測)——人臉檢測1

SSD實戰——人臉檢測 Tensorflow 一 、人臉檢測的困難: 1. 姿態問題  2.不同種族人, 3.光照 遮擋 帶眼睛 4.視角不同 5. 不同尺度 二、 資料集介紹以及轉化VOC: 1. FDDB 2.WIDER Face (本實戰採用) 3.

深度學習之目標檢測常用演算法原理+實踐精講 YOLO / Faster RCNN / SSD / 文字檢測 / 多工網路

深度學習之目標檢測常用演算法原理+實踐精講 YOLO / Faster RCNN / SSD / 文字檢測 / 多工網路 資源獲取連結:點選這裡 第1章 課程介紹 本章節主要介紹課程的主要內容、核心知識點、課程涉及到的應用案例、深度學習演算法設計通用流程、適應人群、學習本門

深度學習之目標檢測常用算法原理+實踐精講 YOLO / Faster RCNN / SSD / 文本檢測 / 多任務網絡

資源 測試 -h 轉換 條件 評價 框架 檢測方法 結果 深度學習之目標檢測常用算法原理+實踐精講 YOLO / Faster RCNN / SSD / 文本檢測 / 多任務網絡 資源獲取鏈接:點擊這裏 第1章 課程介紹 本章節主要介紹課程的主要內容、核心知識點、課程