1. 程式人生 > >深度學習物體檢測(七)——SSD

深度學習物體檢測(七)——SSD

YOLO 模型每個網格只預測一個物體,容易造成漏檢;對於物體的尺度相對比較敏感,對於尺度變化較大的物體泛化能力較差。

針對 YOLO 中的不足,提出的 SSD (Single Shot MultiBox Detector)方法同時兼顧了 mAP 和實時性的要求。對於輸入影象大小為 300*300 在 VOC2007 測試集上能夠達到 58 幀每秒( Titan X 的 GPU ),72.1% 的 mAP。輸入影象大小為 500 *500 , mAP 能夠達到 75.1%。

SSD的主要思路就是Faster R-CNN + YOLO,利用YOLO的思路 和 Faster R-CNN的anchor box的思想。

SSD的網路結構

採用 VGG16 的基礎網路結構,使用前面的前 5 層,然後利用 astrous 演算法將 fc6 和 fc7 層轉化成兩個卷積層。再增加了 3 個卷積層,和一個 pool層。不同層次的 feature map 分別用於 default box 的偏移以及不同類別得分的預測,最後通過 nms得到最終的檢測結果。

這些增加的卷積層的 feature map 的大小變化比較大,允許能夠檢測出不同尺度下的物體: 在低層的feature map,感受野比較小,高層的感受野比較大,在不同的feature map進行卷積,可以達到多尺度的目的。

觀察YOLO,後面存在兩個全連線層,全連線層以後,每一個輸出都會觀察到整幅影象,並不是很合理。

SSD去掉了全連線層,每一個輸出只會感受到目標周圍的資訊,包括上下文。這樣來做就增加了合理性。並且不同的feature map,預測不同寬高比的影象,這樣比YOLO增加了預測更多的比例的box。

多尺度feature map

多尺度feature map得到 default boxs及其 4個位置偏移和21個類別置信度

對於不同尺度feature map 的上的所有特徵點:

1、 按照不同的 scale 和 ratio 生成,k 個 default boxes,這種結構有點類似於 Faster R-CNN 中的 Anchor。

2、 新增加的每個卷積層的 feature map 都會通過一些小的卷積核操作,得到每一個 default boxes 關於物體類別的21個置信度 ( 20個類別和1個背景) 和4偏移 。

假如feature map 的size 為 m*n, 通道數為 p,使用的卷積核大小為 3*3*p。每個 feature map 上的每個特徵點對應 k 個 default boxes,物體的類別數為 c,那麼一個feature map就需要使用 k(c+4)個這樣的卷積濾波器,最後有 (m*n) *k* (c+4)個輸出。

相關推薦

深度學習物體檢測——SSD

YOLO 模型每個網格只預測一個物體,容易造成漏檢;對於物體的尺度相對比較敏感,對於尺度變化較大的物體泛化能力較差。 針對 YOLO 中的不足,提出的 SSD (Single Shot MultiB

深度學習物體檢測——YOLO2

神經網路學習過程本質就是為了學習資料分佈,一旦訓練資料與測試資料的分佈不同,那麼網路的泛化能力也大大降低;另外一方面,一旦每批訓練資料的分佈各不相同(batch 梯度下降),那麼網路就要在每次迭代都去

深度學習物體檢測——物件檢測YOLO系列總結

YOLO ->SSD  -> YOLO2路線是基於迴歸檢測進化路線, 一句話來描述 來描述進化過程: YOLO:RCNN系列物件檢測太慢了,能快點嗎? SSD :YOLO速度是上來

深度學習基礎系列| Dropout VS Batch Normalization? 是時候放棄Dropout了 深度學習基礎系列| Batch Normalization

  Dropout是過去幾年非常流行的正則化技術,可有效防止過擬合的發生。但從深度學習的發展趨勢看,Batch Normalizaton(簡稱BN)正在逐步取代Dropout技術,特別是在卷積層。本文將首先引入Dropout的原理和實現,然後觀察現代深度模型Dropout的使用情況,並與BN進行實驗比對,從原

AI聖經-深度學習-讀書筆記-深度學習中的正則化

深度學習中的正則化 0 簡介 機器學習中的一個核心問題是設計不僅在訓練資料上表現好,而且能在新輸入上泛化好的演算法。採用顯式減少測試誤差(可能會增加訓練誤差)的策略稱為正則化。 在深度學習的背景下,大多數正則化策略都會對估計進行正則化(以偏差的增加換取方差

深度學習基礎系列| Batch Normalization

  Batch Normalization(批量標準化,簡稱BN)是近些年來深度學習優化中一個重要的手段。BN能帶來如下優點: 加速訓練過程; 可以使用較大的學習率; 允許在深層網路中使用sigmoid這種易導致梯度消失的啟用函式; 具有輕微地正則化效果,以此可以降低dropout的使用。   但為什麼B

基於PyTorch的深度學習入門教程——PyTorch重點綜合實踐

前言 PyTorch提供了兩個主要特性: (1) 一個n維的Tensor,與numpy相似但是支援GPU運算。 (2) 搭建和訓練神經網路的自動微分功能。 我們將會使用一個全連線的ReLU網路作為例項。該網路有一個隱含層,使用梯度下降來訓練,目標是最小化

深度學習物體檢測R-CNN

作者Rgb 在這之前大部分物體檢測演算法都是基於傳統的影象處理方法,這是第一篇將深度學習用到物體檢測上的文章,直接影響是2012年ALEXNET在比賽中的重大成功。 簡單來說,RCNN使用以下四步實現目標檢測: a. 在影象中用slective search 方法 確定

深度學習實戰教程1--手機上跑目標檢測模型YOLO,從DarkNet到Caffe再到NCNN完整打通

https://github.com/lwplw 這篇打算就直入主題了,YOLO是什麼、DarkNet是什麼、Caffe是什麼、NCNN又是什麼…等等這一系列的基礎科普這裡就完全不說了,牽扯實在太多,通過其他帖子有一定的積累後,看這篇就相對容易了。 本文核心:把一個目標檢測模型跑

Hibernate學習之路

oid bject 需要 .com build action logs 結果 gin hql:hibernate query language hibernate查詢語言 1、單屬性查詢 1 public void testQuery1(){ 2

深度學習之tensorflow

spa 計算 put range mst reduce logs 分析 pen 一、TensorFlow簡介 1.TensorFlow定義: tensor :張量,N維數組 Flow : 流,基於數據流圖的計算 TensorFlow : 張量從圖像

Hive學習之路 Hive中文亂碼

min sta keys Coding ava eight img 字符集 步驟 Hive註釋中文亂碼 創建表的時候,comment說明字段包含中文,表成功創建成功之後,中文說明顯示亂碼 create external table movie( userID in

深度學習之 TensorFlow:卷積神經網絡

padding valid 叠代 val 分析 此外 nbsp drop BE 基礎概念:   卷積神經網絡(CNN):屬於人工神經網絡的一種,它的權值共享的網絡結構顯著降低了模型的復雜度,減少了權值的數量。卷積神經網絡不像傳統的識別算法一樣,需要對數據進行特征提取和數據重

【c#】RabbitMQ學習文檔C# API

[] 檢索 並發 IT 重載 線上 request 基本屬性 and 今天這篇博文是我翻譯的RabbitMQ的最後一篇文章了,介紹一下RabbitMQ的C#開發的接口。好了,言歸正傳吧。 Net/C# 客戶端 API簡介 主要的命名空間,接口和類

JAVA基礎學習之路對象數組的定義及使用

get system turn book code null 實例 urn TE 兩種定義方式: 動態初始化: 定義並開辟數組:類名稱 對象數組名[] = new 類名稱[長度] 分布按成:類名稱 對象數組名[] = null; 對象數組名 = new 類名稱[長度]

Docker學習與實踐

dockers compose 七、Docker Compose 1.簡介 使用一個 Dockerfile 模板文件,可以讓用戶很方便的定義一個單獨的應用容器。然而,在日常工作中,經常會碰到需要多個容器相互配合來完成某項任務的情況。例如要實現一個 Web 項目,除了 Web 服務容器本身,往往還需要

深度學習基礎系列| 常見的Top-1和Top-5有什麽區別?

ack [1] 隨機 排名 array gen spa imp 概率分布   在深度學習過程中,會經常看見各成熟網絡模型在ImageNet上的Top-1準確率和Top-5準確率的介紹,如下圖所示:   那Top-1 Accuracy和Top-5 Accuracy是指什

深度學習基礎系列| 權重初始化的選擇

初始化 附近 ace back width variable 目的 backend 概率分布   深層網絡需要一個優良的權重初始化方案,目的是降低發生梯度爆炸和梯度消失的風險。先解釋下梯度爆炸和梯度消失的原因,假設我們有如下前向傳播路徑:   a1 = w1x + b1  

TensorFlow-實戰Google深度學習框架 筆記

當我 日誌 不一定 rain 如何 validate .config 存儲 構建 TensorFlow TensorFlow 是一種采用數據流圖(data flow graphs),用於數值計算的開源軟件庫。在 Tensorflow 中,所有不同的變量和運算都是儲存在計算圖

深度學習分割:1資料彙總

時間關係,備份一些深度學習分割演算法相關的部落格和介紹文章。 分割演算法綜述 介紹了幾個比較經典且非常重要的深度學習分割演算法。 原作地址:https://blog.csdn.net/weixin_41923961/article/details/80946586 更加全面的一篇