1. 程式人生 > >深度學習經典目標檢測例項分割語義分割網路的理解之三 FAST-RCNN

深度學習經典目標檢測例項分割語義分割網路的理解之三 FAST-RCNN

再次感謝@shenxiaolu1984 ,寫了一系列關於目標檢測深度學習模型的優秀博文,本文主要參考fast-rcnn這篇(大部分照搬過來了,區域性加入自己的理解和補充)。

繼續上一篇RCNN之後,繼續介紹FAST-RCNN, 因為RCNN雖然實現了bbox的預測,但是非常緩慢,存在大量的重複運算。

fast-rcnn就是在rcnn基礎上進行的改進。

改進:Fast RCNN方法解決了RCNN方法三個問題:

問題一:測試慢
RCNN一張影象內候選框之間大量重疊,提取特徵操作冗餘。 
本文將整張影象歸一化後直接送入深度網路。在鄰接時,才加入候選框資訊,在末尾的少數幾層處理每個候選框。

問題二:訓練慢
原因同上。 
在訓練時,本文先將一張影象送入網路,緊接著送入從這幅影象上提取出的候選區域。這些候選區域的前幾層特徵不需要再重複計算。

問題三:訓練所需空間大
RCNN中獨立的分類器和迴歸器需要大量特徵作為訓練樣本。 
本文把類別判斷和位置精調統一用深度網路實現,不再需要額外儲存。

以下按次序介紹三個問題對應的解決方法。

特徵提取網路

基本結構

這裡寫圖片描述

roi : reginal of interest

前五階段是基礎的conv+relu+pooling形式,做roi polling時,再輸入P個候選區域(影象序號×1+幾何位置×4,序號用於訓練)。然後得到的feature map 就是(6*6*256*P)大小的conv map。

注:文中給出了大中小三種網路,此處示出最大的一種。三種網路基本結構相似,僅conv+relu層數有差別,或者增刪了norm層

roi_pool層的測試(forward)

調整大小參照SPP polling 的方法,在roi區域內max pooling或者average polling。將特徵圖上大小不一的候選區域轉變為大小統一的資料,送入下一層。 

這裡寫圖片描述

roi_pool層的訓練(backward)

首先考慮普通max pooling層。設xixi為輸入層的節點,yjyj為輸出層的節點。 

∂L∂xi={0∂L∂yjδ(i,j)=falseδ(i,j)=true

其中判決函式δ(i,j)表示i節點是否被j節點選為最大值輸出。不被選中有兩種可能:xi不在yj範圍內,或者xi不是最大值。

對於roi max pooling,一個輸入節點可能和多個輸出節點相連。設xi為輸入層的節點,yrj為第r個候選區域的第j個輸出節點。 

這裡寫圖片描述 

∂L∂xi=Σr,jδ(i,r,j)∂L∂yrj

判決函式δ(i,r,j)表示i節點是否被候選區域r的第j個節點選為最大值輸出。代價對於xi的梯度等於所有相關的後一層梯度之和。

網路引數訓練

引數初始化(遷移學習)

網路除去末尾部分如下圖,在ImageNet上訓練1000類分類器。結果引數作為相應層的初始化引數。 
這裡寫圖片描述 

其餘引數隨機初始化。

分層資料

在調優訓練時,每一個mini-batch中首先加入N張完整圖片,而後加入從N張圖片中選取的R個候選框。這R個候選框可以複用N張圖片前5個階段的網路特徵。 

實際選擇N=2, R=128。

訓練資料構成

N張完整圖片以50%概率水平翻轉。 
R個候選框的構成方式如下:

類別 比例 方式
前景 25% 與某個真值重疊在[0.5,1]的候選框
背景 75% 與真值重疊的最大值在[0.1,0.5)的候選框

分類與位置調整

資料結構

第五階段的特徵輸入到兩個並行的全連層中(稱為multi-task)。 
這裡寫圖片描述
cls_score層用於分類,輸出K+1維陣列p,表示屬於K類和背景的概率。 
bbox_prdict層用於調整候選區域位置,輸出4*K維陣列t

代價函式

loss_cls

層評估分類代價由真實分類u對應的概率決定:(這部分我也比較疑惑,為何式子這麼簡單)

所以補充一下上圖中的SoftmaxWithLoss:

Softmax計算公式(正則化到數值[0, 1]區間)

再用上式計算loss: 根據Cross-Entropy的定義有,

反向傳導時,計算偏導 (也因為偏導數很簡單,所以計算會很快,大家喜歡用):

loss_bbox

loss_bbox評估檢測框定位代價。比較真實分類對應的預測引數tu和真實平移縮放參數為v的差別:

g為Smooth L1誤差,對outlier(離群點)不敏感: 

總代價為兩者加權和,如果分類為背景則不考慮定位代價: 

原始碼中bbox_loss_weights用於標記每一個bbox是否屬於某一個類

同年作者團隊又推出了Faster RCNN,進一步把檢測速度提高到準實時,可以參看@shenxiaolu1984 的這篇部落格

我也會在 @shenxiaolu1984的部落格基礎上繼續寫下一篇Faster-rcnn的剖析。

關於RCNN, Fast RCNN, Faster RCNN這一系列目標檢測演算法,可以進一步參考作者在15年ICCV上的講座Training R-CNNs of various velocities

相關推薦

深度學習經典目標檢測例項分割語義分割網路理解之一 CNN

這一系列的深度學習網路還是放在一起學習會比較深刻。CNN, 只分類RCNN, 分類加標框FAST-RCNN, 快速分類加標框FASTER-RCNN, 更快地分類加標框MASK-RCNN 分類標框加上畫素級別分割另外網上已經有很多這系列的博文了,幫了我不少忙,但有些不乏沒有說清

深度學習經典目標檢測例項分割語義分割網路理解五 MASK-RCNN

我不生產博文,我是CSDN的搬運工。本文參考了下面這幾篇部落格:基於最早的 Faster RCNN 框架,出現不少改進,主要有三篇需要看:1)作者推薦的這篇     Speed/accuracy trade-offs for modern convolutional obje

深度學習經典目標檢測例項分割語義分割網路理解 FAST-RCNN

再次感謝@shenxiaolu1984 ,寫了一系列關於目標檢測深度學習模型的優秀博文,本文主要參考fast-rcnn這篇(大部分照搬過來了,區域性加入自己的理解和補充)。 繼續上一篇RCNN之後,繼續介紹FAST-RCNN, 因為RCNN雖然實現了bbox的預測,但是

深度學習經典目標檢測例項分割語義分割網路理解RCNN

本篇主要剖析R-CNN網路架構,參考了幾篇優秀的博文!特別是@shenxiaolu1984 的目標檢測系列博文。流程:RCNN演算法分為4個步驟 - 一張影象生成1K~2K個候選區域- 對每個候選區域,使用深度網路提取特徵- 特徵送入每一類的SVM 分類器,判別是否屬於該類 

基於深度學習目標檢測演算法綜述(一)(截止20180821)

參考:https://zhuanlan.zhihu.com/p/40047760 目標檢測(Object Detection)是計算機視覺領域的基本任務之一,學術界已有將近二十年的研究歷史。近些年隨著深度學習技術的火熱發展,目標檢測演算法也從基於手工特徵的傳統演算法轉向了基於深度神經網路的檢測技

基於深度學習目標檢測演算法綜述()(截止20180821)

參考:https://zhuanlan.zhihu.com/p/40102001 基於深度學習的目標檢測演算法綜述分為三部分: 1. Two/One stage演算法改進。這部分將主要總結在two/one stage經典網路上改進的系列論文,包括Faster R-CNN、YOLO、SSD等經

基於深度學習目標檢測演算法綜述(二)(截止20180821)

參考:https://zhuanlan.zhihu.com/p/40020809 基於深度學習的目標檢測演算法綜述分為三部分: 1. Two/One stage演算法改進。這部分將主要總結在two/one stage經典網路上改進的系列論文,包括Faster R-CNN、YOLO、SSD等經

學習筆記——基於深度學習目標檢測演算法

        國慶假期閒來無事~又正好打算入門基於深度學習的視覺檢測領域,就利用這個時間來寫一份學習的博文~本博文主要是本人的學習筆記與調研報告(不涉及商業用途),博文的部分來自我團隊的幾位成員的調研報告(由於隱私關係,不公告他們的名字了哈~),同時結合

珍藏 | 基於深度學習目標檢測全面梳理總結(下)

關於作者:@李家丞 同濟大學數學系本科在讀,現為格靈深瞳演算法部實習生。 作者個人主頁:李家丞 | 個人主頁 | 關於我 導言:目標檢測的任務表述   如何從影象中解析出可供計算機理解的資訊,是機器視覺的中心問題。深度學習模型由於其強大的表示能力,加之資料量的積累和

珍藏 | 基於深度學習目標檢測全面梳理總結(上)

關於作者:@李家丞 同濟大學數學系本科在讀,現為格靈深瞳演算法部實習生。 作者個人主頁:李家丞|個人主頁|關於我 導言:目標檢測的任務表述   如何從影象中解析出可供計算機理解的資訊,是機器視覺的中心問題。深度學習模型由於其強大的表示能力,加之資料量的積累和計算力的

深度學習目標檢測

該部分內容出自書《21個專案玩轉深度學習:基於TensorFlow的實踐詳解》,有需要的同志可以關注我的公眾號,加入下發的群,在群公告中有附網盤,可以自取(僅供學習使用)。如果失效可以聯絡或者在公眾號留言!!!** 深度學習中目標檢測的原理 R-CNN 的全稱是 Region-CNN

基於深度學習目標檢測演算法綜述:演算法改進

想了解深度學習的小夥伴們,看一下! 以後自己學深度學習了,再來看此貼! 只能發一個連結了: https://mp.weixin.qq.com/s?__biz=MzU4Nzc0NDI1NA==&mid=2247483731&idx=1&sn=37667093807751

人工智慧初學- 1.4 基於深度學習目標檢測技術

目標檢測 顧名思義,就是需要確定兩個特徵: 1,目標的位置 2,目標的類別   即這個目標的具體位置是在哪裡,它是個什麼樣的東西。 從影象識別的任務說起 這裡有一個影象任務: 既要把圖中的物體識別出來,又要用方框框出它的位置。 &n

基於深度學習目標檢測演算法綜述(一)

前言 目標檢測(Object Detection)是計算機視覺領域的基本任務之一,學術界已有將近二十年的研究歷史。近些年隨著深度學習技術的火熱發展,目標檢測演算法也從基於手工特徵的傳統演算法轉向了基於深度神經網路的檢測技術。從最初2013年提出的R-CNN、OverFeat

基於深度學習目標檢測演算法綜述(二)

前言 基於深度學習的目標檢測演算法綜述分為三部分: 1. Two/One stage演算法改進。這部分將主要總結在two/one stage經典網路上改進的系列論文,包括Faster R-CNN、YOLO、SSD等經典論文的升級版本。 2. 解決方案。這部分論文對物體檢

基於深度學習目標檢測技術演進:R-CNN、Fast R-CNN、Faster R-CNN

object detection我的理解,就是在給定的圖片中精確找到物體所在位置,並標註出物體的類別。object detection要解決的問題就是物體在哪裡,是什麼這整個流程的問題。然而,這個問題可不是那麼容易解決的,物體的尺寸變化範圍很大,擺放物體的角度,姿態不定,而且可以出現在圖片的任何地方,更何況物

DLYolo系列:深度學習實現目標檢測Yolo系列的論文簡介、概念理解、思路配圖等詳細攻略

DL之Yolo系列:深度學習實現目標檢測之Yolo系列的論文簡介、概念理解、思路配圖等詳細攻略     Yolo系列的論文簡介 1、Yolo V1簡介   2、Yolo V2簡介   3、Yolo V3簡介   &

深度學習(9)——無監督語義分割全卷積域適應網路(譯文)

無監督語義分割之全卷積域適應網路 摘要 深度神經網路的最新進展令人信服地證明了在大型資料集上學習視覺模型的高能力。然而,收集專家標記的資料集尤其是畫素級註釋是一個非常昂貴的過程。一個吸引人的選擇是渲染合成數據(例如,計算機遊戲)並自動生成基礎事實。然而,簡單地

深度學習目標檢測演算法 RCNNFast RCNN、Faster RCNN 的基本思想

前言 影象分類,檢測及分割是計算機視覺領域的三大任務。即影象理解的三個層次: 分類(Classification),即是將影象結構化為某一類別的資訊,用事先確定好的類別(string)或例項ID來描述圖片。這一任務是最簡單、最基礎的影象理解任務,也是深度學習模型最先取得突

使用caffe訓練的深度學習目標檢測(車輛檢測)

#include "opencv2/core/core.hpp" #include "opencv2/imgproc/imgproc.hpp" #include "opencv2/highgui/highgui.hpp" #include "opencv2/dnn/dnn.