目標檢測算法之Fast R-CNN算法詳解

在介紹Fast R-CNN之前我們先介紹一下SPP Net

一、SPP Net

SPP:Spatial Pyramid Pooling(空間金字塔池化)

眾所周知,CNN一般都含有卷積部分和全連接部分,其中,卷積層不需要固定尺寸的圖像,而全連接層是需要固定大小的輸入。

所以當全連接層面對各種尺寸的輸入數據時,就需要對輸入數據進行crop(crop就是從一個大圖扣出網絡輸入大小的patch,比如227×227),或warp(把一個邊界框bounding box的內容resize成227×227)等一系列操作以統一圖片的尺寸大小,比如224*224(ImageNet)、32*32(LenNet)、96*96等。

所以,在R-CNN中,才會將每個Region Proposal縮放成(wrap)成統一的227x227并輸入到CNN。

但warp/crop這種預處理,導致問題要么被拉伸變形,要么物體不全,限制了識別精確度。換句話說,一張16:9的圖片硬是被resize成1:1,你說圖片失真不?

二、SPP Net的特點

1. SPP不在限制輸入圖像的尺度,在最后一個卷積層,接入了金字塔池化,保證傳到下一層全連接層的輸入固定。

簡言之,CNN原本只能固定輸入,固定輸出,CNN加上SPP之后,便能任意輸入、固定輸出。

ROI池化層一般跟在卷積層后面,此時網絡的輸入可以是任意尺度的,在SPP layer中每一個pooling的filter會根據輸入調整大小,而SPP的輸出是固定維數的向量,然后給到全連接FC層。

2. 只對原圖提取一次卷積特征,得到整張圖的卷積特征feature map,然后找到每個候選框在feature map上的映射patch,將次patch作為每個候選框的卷積特征輸入到SPP layer和之后的層,完成特征提取工作。節省了大量的時間,比R-CNN有100倍左右的提速

三、Fast R-CNN

Fast R-CNN就是在R-CNN的基礎上采納了SPP Net的方法,使得性能進一步提高。

與R-CNN相比,Fast R-CNN主要有兩點不同:一是最后一個卷積層加入了ROI pooling layer,二是損失函數使用了多任務損失函數(multi-task loss),將邊框回歸Bounding Box Regression直接加入到CNN網絡中訓練

(1)ROI pooling layer實際上是SPP Net的一個精簡版,SPP Net對每個proposal使用了不同大小的金字塔映射,而ROI pooling layer只需要采樣到一個7x7的特征圖。對于VGG16網絡conv5_3有512個特征圖,這樣所有region proposal對應了一個7*7*512維度的特征向量作為全連接層的輸入。也就是說,它可以把不同大小的輸入映射到一個固定尺度的特征向量。

(2)R-CNN訓練過程分為了三個階段,而Fast R-CNN直接使用了softmax替代SVM分類,同時利用多任務損失函數邊框回歸也加入到網絡中,整個訓練過程就是端到端的(region proposal提取除外)

也就是說,R-CNN的處理流程是先提proposal,然后CNN提取特征,之后用SVM分類器,最后再做box regression。而在Fast R-CNN中,把box regression與region分類合并成multi-task模型,實際實驗也證明,這兩個任務能夠共享卷積特征,并相互促進。

原來的方法:許多候選框(比如2k個)-->CNN-->得到每個候選框的特征-->分類 + 回歸

現在的方法:一張完整的圖片-->CNN-->得到每個候選框的特征-->分類 + 回歸

容易看出,提速的原因在于,不像R-CNN把每個候選區域給深度網絡提特征,而是整張圖提一次特征,再把候選框映射到conv5上,而SPP只需要計算一次特征,剩下的只需要在conv5層上操作就可以了。

性能上的提升也是明顯的:

參考地址:

https://cloud.tencent.com/developer/news/281788

?

轉載于:https://www.cnblogs.com/gezhuangzhuang/p/10460999.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/280015.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/280015.shtml
英文地址,請注明出處:http://en.pswp.cn/news/280015.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

RGB-D(深度圖像) 圖像深度

RGB-D(深度圖像) 深度圖像 普通的RGB三通道彩色圖像 Depth Map 在3D計算機圖形中,Depth Map(深度圖)是包含與視點的場景對象的表面的距離有關的信息的圖像或圖像通道。其中,Depth Map 類似于灰度圖像&…

WPF-21 基于MVVM員工管理-01

接下來我們通過兩節課程使用MVVM來開發一個簡單的Demo,首先我們創建一個項目名稱WPF-22-MVVM-Demo,目錄結構如下:我們在Models文件下創建Employee類并讓該類實現INotifyPropertyChanged接口,該類中定義編號、姓名和角色三個基本屬…

qt 蘋果應用程序_什么是蘋果的電視應用程序,您應該使用它嗎?

qt 蘋果應用程序Apple’s TV app, which recently appeared on iOS devices and Apple TV, is meant to help users discover and watch shows across an increasingly expanding lineup of television channels, as well as iTunes movies and shows, in one central app. App…

細說flush、ob_flush的區別

ob_flush/flush在手冊中的描述, 都是刷新輸出緩沖區, 并且還需要配套使用, 所以會導致很多人迷惑… 其實, 他們倆的操作對象不同, 有些情況下, flush根本不做什么事情.. ob_*系列函數, 是操作PHP本身的輸出緩沖區. 所以, ob_flush是刷新PHP自身的緩沖區. 而flush, 嚴格來講, 這…

關于jHipster框架在構建中的出現的error修復

jhipster The JDL object and the database type are both mandatory.這個錯誤應該是在構建基于jHipster的spring-cloud項目中經常遇到的,因為這個在這個過程中會讀取.yo-rc文件,之后生成相關的.json文件,再之后生成相關的.java文件&#xff…

protobuf編碼

proto2Protocol Buffers 是一種輕便高效的結構化數據存儲格式,可以用于結構化數據序列化,適合做數據存儲或 RPC 數據交換格式。可用于通訊協議、數據存儲等領域的語言無關、平臺無關、可擴展的序列化結構數據格式。 字段規則 required: 字段必須存在opti…

定制.NET 6.0的Middleware中間件

大家好,我是張飛洪,感謝您的閱讀,我會不定期和你分享學習心得,希望我的文章能成為你成長路上的墊腳石,讓我們一起精進。在本文中,我們將學習中間件,以及如何使用它進一步定制應用程序。我們將快…

Python-循環控制--個人課堂筆記

Python中的兩種循環方式(目前學到):for循環和while循環 for循環和while循環的區別: for循環一般用于控制循環的次數,while循環則是條件循環。 操作實例-猜數字小游戲(3次猜錯提示游戲結束)&…

刪除microsoft_如何從您的Microsoft帳戶中刪除設備

刪除microsoftWhen you sign into Windows 8 or 10 using your Microsoft account (and other Microsoft devices, like an Xbox), those devices become associated with your account. If you want to remove an old device you’ve gotten rid of, you’ll have to pay a vi…

線程的語法 (event,重要)

Python threading模塊 2種調用方式 直接調用 12345678910111213141516171819import threadingimport timedef sayhi(num): #定義每個線程要運行的函數print("running on number:%s" %num)time.sleep(3)if __name__ __main__:t1 threading.Thread(targetsayhi,args(…

求最大值和下標值

本題要求編寫程序&#xff0c;找出給定的n個數中的最大值及其對應的最小下標&#xff08;下標從0開始&#xff09;。 輸入格式: 輸入在第一行中給出一個正整數n&#xff08;1<n≤10&#xff09;。第二行輸入n個整數&#xff0c;用空格分開。 輸出格式: 在一行中輸出最大值及…

windows應用商店修復_如何修復Windows應用商店中的卡死下載

windows應用商店修復Though it’s had its share of flaky behavior since being introduced in Windows 8, the Windows Store has gotten more reliable over time. It still has the occasional problems, though. One of the more irritating issues is when an app update…

OpenWrt:Linux下生成banner

Linux下有三個小工具可以生成banner&#xff1a;1、banner使用#生成banner&#xff1b;2、figlet使用一些普通字符生成banner&#xff1b;3、toilet使用一些復雜的彩色特殊字符生成banner。使用apt-get安裝的時候需要輸入以下命令&#xff1a; $ sudo apt-get install sysvbann…

新冠病毒中招 | 第二天

今天跟大家分享我個人感染奧密克戎毒株第二天的經歷和感受。早上7點多自然醒來&#xff0c;已經沒有四肢乏力的感覺&#xff0c;但是身體的本能還是告訴我不愿意動彈。由于第一天躺著睡了一天&#xff0c;確實是躺得腰酸背疼的。起床量了一下體溫36.4正常&#xff0c;決定今天不…

輸出到Excel

HSSFWorkbook oBook new HSSFWorkbook(); NPOI.SS.UserModel.ISheet oSheet oBook.CreateSheet(); #region 輸出到Excel MemoryStream ms new MemoryStream(); oBook.Write(ms);string sExportPath ""; using (SaveFileDialog saveFileDialog1 new SaveFileDial…

JavaScript 精粹 基礎 進階(5)數組

轉載請注明出處 原文連接 blog.huanghanlian.com/article/5b6… 數組是值的有序集合。每個值叫做元素&#xff0c;每個元素在數組中都有數字位置編號&#xff0c;也就是索引。JS中的數組是弱類型的&#xff0c;數組中可以含有不同類型的元素。數組元素甚至可以是對象或其它數組…

icloud 購買存儲空間_如何釋放iCloud存儲空間

icloud 購買存儲空間Apple offers 5 GB of free iCloud space to everyone, but you’ll run up against that storage limit sooner than you’d think. Device backups, photos, documents, iCloud email, and other bits of data all share that space. Apple為每個人提供5 …

基于LAMP實現web日志管理查看

前言&#xff1a;日志是一個重要的信息庫&#xff0c;如何高效便捷的查看系統中的日志信息&#xff0c;是系統管理員管理系統的必備的技術。實現方式&#xff1a;1、將日志存儲于數據庫。2、采用LAMP架構&#xff0c;搭建PHP應用&#xff0c;通過web服務訪問數據庫&#xff0c;…

WPF效果第二百零七篇之EditableSlider

前面簡單玩耍一下快速黑白灰效果; 今天又玩了一下ZoomBlurEffect,來看看最終實現的效果:1、ps和cs文件都在Shazzam中,咱們自己隨意玩耍;今天主角是下面這位:2、來看看自定義控件布局(TextBox、Slider、ToggleButton)&#xff1a;3、點擊編輯按鈕,我就直接偷懶了:private void E…

閑話高并發的那些神話,看京東架構師如何把它拉下神壇

轉載:閑話高并發的那些神話&#xff0c;看京東架構師如何把它拉下神壇 高并發也算是這幾年的熱門詞匯了&#xff0c;尤其在互聯網圈&#xff0c;開口不聊個高并發問題&#xff0c;都不好意思出門。高并發有那么邪乎嗎&#xff1f;動不動就千萬并發、億級流量&#xff0c;聽上去…