0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
电子发烧友
开通电子发烧友VIP会员 尊享10大特权
海量资料免费下载
精品直播免费看
优质内容免费畅学
课程9折专享价
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

介紹目標(biāo)檢測(cè)工具Faster R-CNN,包括它的構(gòu)造及實(shí)現(xiàn)原理

zhKF_jqr_AI ? 2018-01-27 11:49 ? 次閱讀

編者按:tryo.labs是一家專(zhuān)注于機(jī)器學(xué)習(xí)和自然語(yǔ)言處理的技術(shù)支持公司,在本篇文章中,公司的研究人員介紹了他們?cè)谘芯窟^(guò)程中所使用的先進(jìn)目標(biāo)檢測(cè)工具Faster R-CNN,包括它的構(gòu)造及實(shí)現(xiàn)原理。

之前,我們介紹了目標(biāo)物體檢測(cè)(object detection)是什么以及它是如何用于深度學(xué)習(xí)的。去年,我們決定研究Faster R-CNN。通過(guò)閱讀原論文以及相關(guān)的參考文獻(xiàn),我們對(duì)其工作原理及如何部署已經(jīng)有了清晰的了解。

最終,我們將Faster R-CNN安裝到Luminoth上,Luminoth是基于TensorFlow計(jì)算機(jī)視覺(jué)工具包,我們?cè)诠_(kāi)數(shù)據(jù)科學(xué)大會(huì)(ODSC)的歐洲和西部會(huì)場(chǎng)上分享了這一成果,并收到了很多關(guān)注。

基于我們研發(fā)Luminoth中的收獲以及分享成果,我們認(rèn)為應(yīng)當(dāng)把研究所得記錄到博客中,以饗讀者。

背景

Faster R-CNN最初是在NIPS 2015上發(fā)表的,后來(lái)又經(jīng)過(guò)多次修改。Faster R-CNN是Ross Girshick團(tuán)隊(duì)推出的R-CNN的第三次迭代版本。

2014年,在第一篇R-CNN的論文Rich feature hierarchies for accurate object detection and semantic segmentation中,研究人員利用一種名為選擇性搜索(selective search)的算法提出一種可能的感興趣區(qū)域(RoI)和一個(gè)標(biāo)準(zhǔn)的卷積神經(jīng)網(wǎng)絡(luò)來(lái)區(qū)分和調(diào)整它們。2015年初,R-CNN進(jìn)化成為Fast R-CNN,其中一種名為興趣區(qū)域池化(RoI Pooling)的技術(shù)能夠共享耗能巨大的計(jì)算力,并且讓模型變得更快。最后他們提出了Faster R-CNN,是第一個(gè)完全可微分的模型。

結(jié)構(gòu)

Faster R-CNN的結(jié)構(gòu)十分復(fù)雜,因?yàn)樗泻脦讉€(gè)移動(dòng)部分。我們首先對(duì)Faster R-CNN做大致介紹,然后對(duì)每個(gè)組成部分進(jìn)行詳細(xì)解讀。

問(wèn)題是圍繞一幅圖像,從中我們想要得到:

邊界框的列表

每個(gè)邊界框的標(biāo)簽

每個(gè)標(biāo)簽和邊界框的概率

介紹目標(biāo)檢測(cè)工具Faster R-CNN,包括它的構(gòu)造及實(shí)現(xiàn)原理

Faster R-CNN完整示意圖

輸入的圖像用高度×寬度×深度的張量(多維數(shù)組)表示,在傳輸?shù)街虚g層之前,先經(jīng)過(guò)一個(gè)預(yù)訓(xùn)練的CNN,最終生成卷積特征映射。我們將這一映射作為下一部分的特征提取器。

這一技術(shù)在遷移學(xué)習(xí)中還是很常見(jiàn)的,尤其是利用在大規(guī)模數(shù)據(jù)庫(kù)上訓(xùn)練的網(wǎng)絡(luò)權(quán)重,來(lái)訓(xùn)練小規(guī)模數(shù)據(jù)庫(kù)上的分類(lèi)器。

接著,我們得到了Region Proposal Network(RPN),利用CNN計(jì)算出的特征,使用RPN找到既定數(shù)量的區(qū)域(邊框線),其中可能包含目標(biāo)對(duì)象。

也許用深度學(xué)習(xí)做目標(biāo)檢測(cè)最難的部分就是生成一個(gè)長(zhǎng)度可變的邊界框列表。對(duì)深度神經(jīng)網(wǎng)絡(luò)進(jìn)行建模時(shí),最后一個(gè)block通常是一個(gè)固定大小的張量輸出(除使用循環(huán)神經(jīng)網(wǎng)絡(luò)以外)。例如,在圖像分類(lèi)中,輸出的是一個(gè)(N,)的張量,N代表類(lèi)別的數(shù)量,其中的位置i處的每個(gè)標(biāo)量包含該圖像被標(biāo)位labeli的概率。

在RPN中可以使用anchors解決可變長(zhǎng)度的問(wèn)題:在原始圖像中統(tǒng)一放置固定大小的參考邊界框,與直接檢測(cè)物體的位置不同,我們將問(wèn)題分為兩部分。對(duì)每個(gè)anchor,我們會(huì)想:

這個(gè)anchor是否含有相關(guān)目標(biāo)對(duì)象?

如何調(diào)整這個(gè)anchor才能讓它更好地適應(yīng)相關(guān)對(duì)象?

聽(tīng)起來(lái)可能有點(diǎn)迷惑,接下來(lái)我們將深入探討這個(gè)問(wèn)題。

在原始圖像中得到可能的相關(guān)對(duì)象及其位置的列表后,問(wèn)題就更直接了。利用CNN提取的特征和包含相關(guān)對(duì)象的邊界框,應(yīng)用RoI pooling,將與相關(guān)對(duì)象對(duì)應(yīng)的特征提取出一個(gè)新的向量。

最后是R-CNN模塊,它利用這些信息來(lái):

將邊界框里的內(nèi)容分類(lèi)(或標(biāo)記成“背景”標(biāo)簽丟棄它)

調(diào)整邊界框的坐標(biāo),使其更適合目標(biāo)對(duì)象

雖然描述得比較粗略,但這基本上是Faster R-CNN的工作流程。接下來(lái),我們將詳細(xì)介紹每一部分的架構(gòu)、損失函數(shù)以及訓(xùn)練過(guò)程。

基本網(wǎng)絡(luò)(Base Network)

就像我們之前提到的,第一步是利用一個(gè)為分類(lèi)任務(wù)預(yù)先訓(xùn)練過(guò)的CNN(比如ImageNet)和中間層的輸出。對(duì)于有機(jī)器學(xué)習(xí)背景的人來(lái)說(shuō),這聽(tīng)上去挺簡(jiǎn)單的。但是關(guān)鍵一點(diǎn)是要理解它是如何工作的,以及為什么會(huì)這樣工作。同時(shí)還要讓中間層的輸出可視化。

目前沒(méi)有公認(rèn)的最好的網(wǎng)絡(luò)架構(gòu)。最早的R-CNN使用了在ImageNet上預(yù)訓(xùn)練的ZF和VGG,但從那以后,有許多權(quán)重不同的網(wǎng)絡(luò)。例如,MobileNet是一種小型網(wǎng)絡(luò),優(yōu)化后高效的網(wǎng)絡(luò)體系結(jié)構(gòu)能加快運(yùn)行速度,它有將近3.3M的參數(shù),而152層的ResNet(對(duì),你沒(méi)看錯(cuò)就是152層)有大約60M參數(shù)。最近,像DenseNet這樣的新架構(gòu)既改善了結(jié)果,又減少了參數(shù)數(shù)量。

VGG

在比較孰優(yōu)孰劣之前,讓我們先用標(biāo)準(zhǔn)的VGG-16為例來(lái)理解他們都是怎樣工作的。

介紹目標(biāo)檢測(cè)工具Faster R-CNN,包括它的構(gòu)造及實(shí)現(xiàn)原理

VGG架構(gòu)

VGG這個(gè)名字來(lái)源于2014年ImageNet ILSVRC比賽中的一組選手,其中的Karen Simonyan和Andrew Zisserman發(fā)表了一篇名為Very Deep Convolutional Networks for Large-Scale Image Recognition的論文。若以現(xiàn)在的標(biāo)準(zhǔn)來(lái)看,這已經(jīng)不是“very deep”的網(wǎng)絡(luò)了,但在當(dāng)時(shí),它比通常使用的網(wǎng)絡(luò)層數(shù)增加了一倍多,并且開(kāi)始了“deeper→more capacity→better”的波動(dòng)(當(dāng)可以訓(xùn)練的時(shí)候)。

使用VGG分類(lèi)時(shí),輸入的是224×224×3的張量(即224×224像素的RGB圖像)。由于網(wǎng)絡(luò)的最后一個(gè)模塊使用完全連接層(FC)而不是卷積,這需要一個(gè)固定長(zhǎng)度的輸入。通常將最后一個(gè)卷積層的輸出平坦化,在使用FC層之前得到第一次命中的張量。

由于我們要使用中間卷積層的輸出,所以輸入的大小不用特別考慮。至少,在這個(gè)模塊中不用擔(dān)心,因?yàn)橹皇褂昧司矸e層。讓我們繼續(xù)詳細(xì)介紹,決定到底要使用哪個(gè)卷積層。論文中并未指明要使用的圖層,但在實(shí)際安裝過(guò)程中,你可以看到它們用了conv5/conv5_1的輸出。

每個(gè)卷積層都會(huì)從之前的信息中生成抽象的東西。第一層圖層通常學(xué)習(xí)圖像中的邊緣線,第二層找出邊緣內(nèi)的圖形,以學(xué)習(xí)更復(fù)雜的形狀等。最終我們得到了卷積特征向量,它的空間維度比原始圖像小得多,但是更深。特征映射的寬度和高度由于卷積層之間的池化而降低,同時(shí)由于卷積層學(xué)習(xí)的過(guò)濾器數(shù)量增多導(dǎo)致映射的深度增加。

圖像到卷積特征映射

在深度上,卷積特征映射已經(jīng)對(duì)圖像的所有信息進(jìn)行編碼,同時(shí)保持其相對(duì)于原始圖像編碼的“物體”的位置。例如,如果圖像的左上角有一個(gè)紅色正方形,并且卷積層激活了它,那么該紅色正方形的信息仍然位于卷積特征映射的左上角。

VGG vs ResNet

目前,ResNet架構(gòu)大多已經(jīng)取代了VGG作為特征提取的基礎(chǔ)網(wǎng)絡(luò),F(xiàn)aster R-CNN的三位合作者(Kaiming He,Shaoqing Ren和Jian Sun)也是ResNet原始論文Deep Residual Learning for Image Recognition的共同作者。

相對(duì)于VGG,ResNet的明顯優(yōu)勢(shì)在與它更大,因此它有更大能力去了解需要什么。這對(duì)分類(lèi)任務(wù)來(lái)說(shuō)是正確的,同時(shí)對(duì)目標(biāo)物體檢測(cè)也是如此。

此外,ResNet讓使用殘差網(wǎng)絡(luò)和批量歸一化來(lái)訓(xùn)練深度模型變得簡(jiǎn)單,這在VGG發(fā)布之初并未出現(xiàn)。

Anchors

既然我們有了處理過(guò)的圖像,則需要找到proposals,即用于分類(lèi)的興趣區(qū)域(RoI)。上文中提到,anchors是解決可變長(zhǎng)度問(wèn)題的方法,但是沒(méi)有詳細(xì)講解。

我們的目標(biāo)是在圖像中找到邊界框,它們呈矩形,有不同的尺寸和長(zhǎng)寬比。想像一下,我們事先知道圖像中有兩個(gè)對(duì)象,若要解決的話,第一個(gè)立即想到的方案是訓(xùn)練一個(gè)返回八個(gè)值的網(wǎng)絡(luò):xmin、ymin、xmax、ymax元組各兩個(gè),以確定每個(gè)目標(biāo)物體的邊界框位置。這種方法有一些非?;A(chǔ)的問(wèn)題。例如,圖像的尺寸和長(zhǎng)寬比可能不同,訓(xùn)練預(yù)測(cè)原始坐標(biāo)的良好模型可能會(huì)變得非常復(fù)雜。另外,模型可能會(huì)生成無(wú)效的預(yù)測(cè):當(dāng)預(yù)測(cè)xmin和xmax的值時(shí),我們需要保證xmin<xmax。

最終,事實(shí)證明通過(guò)學(xué)習(xí)預(yù)測(cè)參考框的偏移量,可以更簡(jiǎn)單地預(yù)測(cè)邊界框的位置。我們?nèi)center,ycenter,寬度,高度,學(xué)習(xí)預(yù)測(cè)Δxcenter、Δycenter、Δwidth、Δheight,這些值可以將參考框調(diào)整得符合我們的需要。

Anchors是固定的邊界框,它們遍布整個(gè)圖像,具有不同的大小和比例,這些尺寸在第一次預(yù)測(cè)目標(biāo)對(duì)象位置的時(shí)候用作參考。

由于我們是用的是尺寸為convwidth×convheight×convdepth的卷積特征映射,于是可以在convwidth×convheight中的每個(gè)點(diǎn)創(chuàng)造一組anchors。即使anchors是基于卷積特征映射,理解這一點(diǎn)也是非常重要的,最終的anchors可以顯示原始圖像。

由于我們只有卷積層和池化層,特征映射的維度在原始圖像中是成比例的。用數(shù)學(xué)方法表示,即如果圖像是w×h,特征映射就是w/r×h/r,這里的r被稱(chēng)為subsampling ratio。如果我們把特征映射的每個(gè)空間位置定義一個(gè)anchor,那么最終的圖像將會(huì)是由分散的r像素組成的一群anchors。在VGG中,r=16.

原始圖像的anchor中心

為了更好的選擇anchors,我們通常會(huì)定義一組尺寸(例如64px,128px,256px)和一組邊框的寬高比(例如0.5,1,1.5),并且將所有可能的尺寸和比例加以組合。

介紹目標(biāo)檢測(cè)工具Faster R-CNN,包括它的構(gòu)造及實(shí)現(xiàn)原理

左:anchors,中:?jiǎn)吸c(diǎn)的anchor,右:所有anchors

Region Proposal Network

介紹目標(biāo)檢測(cè)工具Faster R-CNN,包括它的構(gòu)造及實(shí)現(xiàn)原理

輸入卷積特征映射,RPN在圖像上生成proposals

正如之前所提到的,將所有參考框(anchors)輸入RPN中,輸出一組目標(biāo)的proposals,每個(gè)anchors會(huì)有兩個(gè)不同的輸出。

第一個(gè)輸出是anchor中是目標(biāo)對(duì)象的概率,可稱(chēng)為“目標(biāo)性分?jǐn)?shù)”(objectness score)。注意,RPN不關(guān)心目標(biāo)物體的類(lèi)別,它只能分辨目標(biāo)與背景。我們將用這個(gè)分?jǐn)?shù)過(guò)濾掉不佳的預(yù)測(cè),為第二階段做準(zhǔn)備。第二個(gè)輸出是邊界框回歸,它的作用是調(diào)整anchors,讓它們更好地圈住目標(biāo)物體。

在完全卷積的環(huán)境中,RPN的安裝十分高效,利用基礎(chǔ)網(wǎng)絡(luò)返回的卷積特征映射作為輸入。首先,我們有一個(gè)擁有512個(gè)通道和3×3大小的核的卷積層,然后利用1×1的核及一個(gè)帶有兩平行通道的卷積層,其中它的通道數(shù)量取決于每個(gè)點(diǎn)的anchors數(shù)量。

介紹目標(biāo)檢測(cè)工具Faster R-CNN,包括它的構(gòu)造及實(shí)現(xiàn)原理

RPN中卷積的安裝,k是anchors的數(shù)量

對(duì)于分類(lèi)層,每個(gè)anchor輸出兩個(gè)預(yù)測(cè):它為背景的分?jǐn)?shù)(不是目標(biāo)物)以及它為前景的分?jǐn)?shù)(實(shí)際的目標(biāo)物)。

對(duì)于回歸函數(shù),或者邊界框的調(diào)整層,我們輸出四個(gè)預(yù)測(cè)值:Δxcenter、Δycenter、Δwidth、Δheight,這些會(huì)應(yīng)用到anchors上生成最終的proposals。

利用最終的proposals坐標(biāo)和它們的“目標(biāo)性分?jǐn)?shù)”,就能得到目標(biāo)物體最佳的proposals。

訓(xùn)練,目標(biāo)和損失函數(shù)

RPN能做出兩種預(yù)測(cè):二元分類(lèi)問(wèn)題和邊界框回歸調(diào)整。

在訓(xùn)練時(shí),我們將所有的anchors分成兩類(lèi)。其中交并比(Intersection over Union,IoU)的值大于0.5、與標(biāo)準(zhǔn)目標(biāo)物體重合的anchors被認(rèn)為是“前景”(foreground),那些不與目標(biāo)物體重合、或者IoU的值小于0.1的被認(rèn)為是“背景”(background)。

然后,我們對(duì)anchors隨機(jī)采樣256個(gè)樣本,同時(shí)保證前景和背景anchors的比例不變。

接著,RPN用上述樣本進(jìn)行計(jì)算,利用二元交叉熵計(jì)算出分類(lèi)器的損失函數(shù)。然后用樣本中的前景anchors計(jì)算回歸函數(shù)。在計(jì)算回歸函數(shù)的目標(biāo)時(shí),我們用前景的anchor和最近的目標(biāo)物體計(jì)算能將anchor變?yōu)槟繕?biāo)物體的正確的Δ。

除了用簡(jiǎn)單的L1或者L2損失函數(shù)糾正回歸函數(shù)的錯(cuò)誤,論文中還建議用Smooth L1損失函數(shù)。Smooth L1與L1基本相同,但是當(dāng)L1的錯(cuò)誤足夠?。ㄓ靡淮_定的值σ表示),它就被認(rèn)為是接近正確的,損失就會(huì)以更快的速度消失。

但是用動(dòng)態(tài)群組(dynamic batches)會(huì)有一些困難。即使我們嘗試保持兩種anchors之間比例的平衡,也無(wú)法完美地做到這一點(diǎn)。根據(jù)圖像中真實(shí)目標(biāo)物體的位置以及anchors的尺寸和比例,有可能最終沒(méi)有位于前景的anchors。在這種情況下,我們轉(zhuǎn)而使用IoU值最大的anchors來(lái)確定正確邊框的位置。這與理想情況相差較遠(yuǎn)。

后處理

非極大抑制

由于anchors經(jīng)常重合,因此proposals最終也會(huì)在同意目標(biāo)物體上重疊。為了解決這一問(wèn)題,我們用簡(jiǎn)單的“非極大抑制”(NMS)算法。NMS通過(guò)分?jǐn)?shù)和迭代篩選邊界框并生成一個(gè)proposals的列表,放棄IoU大于某個(gè)特定閾值的proposals,保留分?jǐn)?shù)較高的proposals。

雖然看起來(lái)簡(jiǎn)單,但要謹(jǐn)慎制定IoU的閾值。定的太低,最終可能會(huì)找不到正確的proposals;定的太高,最后可能會(huì)留下太多proposals。該值常用的數(shù)字是0.6。

Proposal選擇

應(yīng)用了NMS后,我們留下了前N個(gè)proposals。在論文中,N=2000,但是即使把數(shù)字換成50也有可能得到相當(dāng)不錯(cuò)的結(jié)果。

獨(dú)立應(yīng)用程序(Standalone application)

RPN可以單獨(dú)使用,無(wú)需第二個(gè)階段的模型。在只有一類(lèi)對(duì)象的問(wèn)題中,目標(biāo)物體的概率可用作最終的類(lèi)別概率。這是因?yàn)樵谶@種情況下,“前景”=“單一類(lèi)別”,“背景”=“多種類(lèi)別”。

在機(jī)器學(xué)習(xí)問(wèn)題中,人臉檢測(cè)和文本檢測(cè)這種可以從RPN獨(dú)立應(yīng)用程序中受益的案例是非常流行的,但目前仍存在很多挑戰(zhàn)。

僅使用RPN的優(yōu)點(diǎn)之一是在訓(xùn)練和預(yù)測(cè)中的速度都有所提高。由于RPN是一個(gè)非常簡(jiǎn)單、并且只是用卷積層的網(wǎng)絡(luò),預(yù)測(cè)時(shí)間要比其他分類(lèi)網(wǎng)絡(luò)更快。

興趣區(qū)域池化(RoI Pooling)

RPN階段之后,我們得到一堆沒(méi)有分類(lèi)的proposals。接下來(lái)要解決的問(wèn)題是,如何將這些邊界框分到正確的類(lèi)別中去。

最簡(jiǎn)單的方法是將每個(gè)proposals裁剪,然后通過(guò)預(yù)訓(xùn)練的基礎(chǔ)網(wǎng)絡(luò)。接著,使用提取出的特征輸入到一般的分類(lèi)其中。但是想要處理2000個(gè)proposals,這樣的效率未免太低了。

這時(shí),F(xiàn)aster R-CNN可以通過(guò)重新使用現(xiàn)有的卷及特征映射解決或者緩解這一問(wèn)題。這是利用RoI池化對(duì)每個(gè)proposals進(jìn)行固定大小的特征提取完成的。R-CNN需要固定尺寸的特征映射,以便將它們分成固定數(shù)量的類(lèi)別。

介紹目標(biāo)檢測(cè)工具Faster R-CNN,包括它的構(gòu)造及實(shí)現(xiàn)原理

ROI池化

另外一種更簡(jiǎn)單的方法,包括Luminoth的Faster R-CNN也在用的,是用每個(gè)proposals來(lái)裁剪卷積特征映射,然后用雙線性插值將裁剪后的映射調(diào)整為14×14×convdepth的固定大小。裁剪之后,用2×2的最大池得到最終7×7×convdepth的特征映射。

基于區(qū)域的卷積神經(jīng)網(wǎng)絡(luò)(R-CNN)

R-CNN是達(dá)到Faster R-CNN的最后一個(gè)階段。在從圖像中獲取卷積特征映射后,利用它來(lái)獲得目標(biāo)物體的proposals,并最終通過(guò)RoI池化為每個(gè)proposals提取特征,最后我們需要對(duì)這些特征進(jìn)行分類(lèi)。R-CNN要模仿CNN分類(lèi)的最后階段,其中一個(gè)完全連接層輸出每個(gè)對(duì)象可能的類(lèi)別的分?jǐn)?shù)。

R-CNN有兩個(gè)不同的目的:

將proposals分到其中一類(lèi),另外還有一個(gè)“背景類(lèi)”,用于刪除錯(cuò)誤的proposals

根據(jù)預(yù)測(cè)的類(lèi)別更好地調(diào)整proposals的邊界框

在最初的Faster R-CNN論文中,R-CNN將特征映射應(yīng)用于每個(gè)proposal,“壓平”(flatten)后使用ReLU和兩個(gè)4096大小的完全連接層將其激活。

然后,它為每個(gè)不同的目標(biāo)物體使用兩個(gè)不同的完全連接層:

擁有N+1個(gè)單位的完全連接層,整理N是類(lèi)別的總數(shù),多出來(lái)的1表示背景

擁有4N個(gè)單位的完全連接層。想進(jìn)行回歸預(yù)測(cè),所以需要對(duì)N個(gè)可能的類(lèi)別進(jìn)行Δxcenter、Δycenter、Δwidth、Δheight四個(gè)值的預(yù)測(cè)

介紹目標(biāo)檢測(cè)工具Faster R-CNN,包括它的構(gòu)造及實(shí)現(xiàn)原理

R-CNN的結(jié)構(gòu)

訓(xùn)練和目標(biāo)

R-CNN的目標(biāo)與RPN的目標(biāo)幾乎相同,但考慮到不同類(lèi)別,我們計(jì)算了proposals和標(biāo)準(zhǔn)邊界框之間的IoU。

那些大于0.5的proposals被認(rèn)為是正確的邊框,而分?jǐn)?shù)在0.1和0.5之間的proposals被標(biāo)記為“背景”。與我們?cè)跒镽PN組裝目標(biāo)時(shí)所做的相反,我們忽略了沒(méi)有交集的proposals。這是因?yàn)樵谶@個(gè)階段,我們假設(shè)這里的proposals很好,而且想要解決更難的案例。當(dāng)然,所有這些可以調(diào)整的超參數(shù)可以更好地適合目標(biāo)物的種類(lèi)。

邊界框回歸的目標(biāo)試計(jì)算proposals與其相應(yīng)的標(biāo)準(zhǔn)框架之間的偏移量,而且這里僅針對(duì)那些基于IoU閾值分配了類(lèi)別的proposals。

我們隨機(jī)抽樣了一個(gè)尺寸為64的迷你群組,其中有高達(dá)25%的前景proposals,75%的背景。

按照我們對(duì)RPNs損失做的那樣,對(duì)于全部所選出的proposals,分類(lèi)器的損失現(xiàn)在是一個(gè)多類(lèi)交叉熵?fù)p失;對(duì)于那25%的前景proposals,用Smooth L1損失。由于為了邊框回歸的R-CNN完全連接網(wǎng)絡(luò)的輸出對(duì)每種類(lèi)別只有一個(gè)預(yù)測(cè),所以在獲得這種損失時(shí)不需小心。在計(jì)算損失時(shí),我們只要考慮正確的類(lèi)別即可。

后處理

與RPN相似,我們最終又得到了一堆已分類(lèi)的目標(biāo)對(duì)象,在返回他們之前需要進(jìn)行進(jìn)一步處理。

為了調(diào)整邊框,我們需要考慮哪類(lèi)是proposals最可能屬于的邊框。同時(shí)要忽略那些最有可能是背景的proposals。

在得到最終的目標(biāo)物體之后,我們用基于分類(lèi)的NMS刪除北京。這是通過(guò)將目標(biāo)對(duì)象按類(lèi)別進(jìn)行分組,然后按概率對(duì)其進(jìn)行排序,然后再將NMS應(yīng)用于每個(gè)獨(dú)立組。

對(duì)于最后的目標(biāo)物體列表,我們也可以為每個(gè)類(lèi)別設(shè)置一個(gè)概率閾值和對(duì)象數(shù)量的限制。

訓(xùn)練

在原論文中,F(xiàn)aster R-CNN的訓(xùn)練經(jīng)歷了多個(gè)步驟,每個(gè)步驟都是獨(dú)立的,在最終進(jìn)行全面訓(xùn)練之前合并了所有訓(xùn)練的權(quán)重。從那時(shí)起,人們發(fā)現(xiàn)進(jìn)行端到端的聯(lián)合訓(xùn)練結(jié)果更好。

把模型結(jié)合后,我們可以得到四個(gè)不同的損失,兩個(gè)用于RPN,兩個(gè)用于R-CNN。在RPN和R-CNN上游客訓(xùn)練的圖層,我們也有可以訓(xùn)練(微調(diào))或不能訓(xùn)練的基礎(chǔ)網(wǎng)絡(luò)。

基礎(chǔ)網(wǎng)絡(luò)的訓(xùn)練取決于我們想要學(xué)習(xí)的對(duì)象的性質(zhì)和可用的計(jì)算能力。如果我們想要檢測(cè)與原始數(shù)據(jù)集相似的目標(biāo)對(duì)象,那么除了將所有方法都試一遍,也沒(méi)什么好方法了。另一方面,訓(xùn)練基礎(chǔ)網(wǎng)絡(luò)是很費(fèi)時(shí)費(fèi)力的,因?yàn)橐m應(yīng)全部的梯度。

四種不同的損失用加權(quán)進(jìn)行組合,這是因?yàn)槲覀兛赡芟窠o分類(lèi)器比回歸更多的損失,或者給R-CNN比RPN更多的權(quán)重。

除了正則損失外,我么也有歸一化損失。對(duì)一些層使用L2正則化,這取決于正在使用的基礎(chǔ)網(wǎng)絡(luò)以及是否經(jīng)過(guò)訓(xùn)練。

我們用隨機(jī)梯度下降的動(dòng)量進(jìn)行訓(xùn)練,動(dòng)量設(shè)置為0.9。你可以輕松地訓(xùn)練更快的R-CNN和其他優(yōu)化,不會(huì)遇到任何大問(wèn)題。

學(xué)習(xí)速度開(kāi)始為0.001,后來(lái)經(jīng)過(guò)5萬(wàn)次迭代后降到0.0001。這通常是最重要的超參數(shù)之一。當(dāng)我們用Luminoth進(jìn)行訓(xùn)練時(shí),通常用默認(rèn)值開(kāi)始訓(xùn)練,然后再慢慢調(diào)整。

評(píng)估

評(píng)估過(guò)程使用標(biāo)準(zhǔn)的平均精度均值進(jìn)行判斷(mAP),并將IoU的值設(shè)定在特定范圍。mAP是源于信息檢索的一種標(biāo)準(zhǔn),經(jīng)常用于計(jì)算排名和目標(biāo)檢測(cè)問(wèn)題中的錯(cuò)誤。當(dāng)你漏了某一邊界框、檢測(cè)到不存在或者多次檢測(cè)到同一物體時(shí),mAP就會(huì)進(jìn)行懲罰。

結(jié)論

現(xiàn)在你應(yīng)該了解R-CNN的工作原理了吧,如果還想深入了解,可以探究一下Luminoth的實(shí)現(xiàn)。

Faster R-CNN證明了,在新的深度學(xué)習(xí)革命開(kāi)始的時(shí)候,可以用同樣的原理來(lái)解決復(fù)雜的計(jì)算機(jī)視覺(jué)問(wèn)題。目前正在建立的新模型不僅能用于目標(biāo)物體檢測(cè),還能用于語(yǔ)義分割、3D物體檢測(cè)等等。有的借鑒了RPN,有的借鑒了R-CNN,有的二者皆有。這就是為什么我們要搞清楚他們的工作原理,以解決未來(lái)將面對(duì)的難題。

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 目標(biāo)檢測(cè)
    +關(guān)注

    關(guān)注

    0

    文章

    218

    瀏覽量

    15810
  • vgg
    vgg
    +關(guān)注

    關(guān)注

    1

    文章

    11

    瀏覽量

    5272

原文標(biāo)題:目標(biāo)檢測(cè)技術(shù)之Faster R-CNN詳解

文章出處:【微信號(hào):jqr_AI,微信公眾號(hào):論智】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 0人收藏

    評(píng)論

    相關(guān)推薦

    基于深度學(xué)習(xí)的目標(biāo)檢測(cè)算法解析

    本節(jié)主要將近年來(lái)基于候選區(qū)域的目標(biāo)檢測(cè)算法分為五個(gè)部分進(jìn)行綜述,首先介紹Faster R-CNN[14]框架的發(fā)展歷程,然后綜述了對(duì)
    發(fā)表于 01-09 10:52 ?1334次閱讀

    手把手教你使用LabVIEW實(shí)現(xiàn)Mask R-CNN圖像實(shí)例分割(含源碼)

    使用LabVIEW實(shí)現(xiàn)Mask R-CNN圖像實(shí)例分割
    的頭像 發(fā)表于 03-21 13:39 ?2799次閱讀
    手把手教你使用LabVIEW<b class='flag-5'>實(shí)現(xiàn)</b>Mask <b class='flag-5'>R-CNN</b>圖像實(shí)例分割(含源碼)

    基于YOLOX目標(biāo)檢測(cè)算法的改進(jìn)

    ,基于 RCNN 改進(jìn)的 Fast R-CNN、Faster R-CNN 等在檢 測(cè)速度和精度上獲得進(jìn)一步提升,逐漸成為了目標(biāo)檢測(cè)的首選方法
    發(fā)表于 03-06 13:55

    深度卷積神經(jīng)網(wǎng)絡(luò)在目標(biāo)檢測(cè)中的進(jìn)展

    深度卷積神經(jīng)網(wǎng)絡(luò)(DCNN)在圖像分類(lèi)和識(shí)別上取得了很顯著的提高。回顧從2014到2016這兩年多的時(shí)間,先后涌現(xiàn)出了R-CNN,F(xiàn)ast R-CNN, Faster R-CNN, I
    發(fā)表于 11-16 01:41 ?5309次閱讀
    深度卷積神經(jīng)網(wǎng)絡(luò)在<b class='flag-5'>目標(biāo)</b><b class='flag-5'>檢測(cè)</b>中的進(jìn)展

    Mask R-CNN:自動(dòng)從視頻中制作目標(biāo)物體的GIF動(dòng)圖

    用深度學(xué)習(xí)模型——Mask R-CNN,自動(dòng)從視頻中制作目標(biāo)物體的GIF動(dòng)圖。
    的頭像 發(fā)表于 02-03 14:19 ?1.2w次閱讀

    什么是Mask R-CNN?Mask R-CNN的工作原理

    的概念很簡(jiǎn)單:對(duì)于每個(gè)目標(biāo)對(duì)象,Faster R-CNN都有兩個(gè)輸出,一是分類(lèi)標(biāo)簽,二是候選窗口;為了分割目標(biāo)像素,我們可以在前兩個(gè)輸出的
    的頭像 發(fā)表于 07-20 08:53 ?6.8w次閱讀

    手把手教你操作Faster R-CNN和Mask R-CNN

    R-CNN又承繼于R-CNN,因此,為了能讓大家更好的理解基于CNN目標(biāo)檢測(cè)方法,我們從R-CNN
    的頭像 發(fā)表于 04-04 16:32 ?1.3w次閱讀

    一種新的帶有不確定性的邊界框回歸損失,可用于學(xué)習(xí)更準(zhǔn)確的目標(biāo)定位

    目標(biāo)檢測(cè)是一種多任務(wù)學(xué)習(xí)問(wèn)題,包含目標(biāo)定位和目標(biāo)分類(lèi)。當(dāng)前最佳的目標(biāo)檢測(cè)器(比如
    的頭像 發(fā)表于 04-23 16:38 ?6627次閱讀
    一種新的帶有不確定性的邊界框回歸損失,可用于學(xué)習(xí)更準(zhǔn)確的<b class='flag-5'>目標(biāo)</b>定位

    基于改進(jìn)Faster R-CNN目標(biāo)檢測(cè)方法

    為提高小尺度行人檢測(cè)的準(zhǔn)確性,提出一種基于改進(jìn) Faster r-CNN目標(biāo)檢測(cè)方法。通過(guò)引入基于雙線性插值的對(duì)齊池化層,避免感興趣區(qū)域池
    發(fā)表于 03-23 14:52 ?3次下載
    基于改進(jìn)<b class='flag-5'>Faster</b> <b class='flag-5'>R-CNN</b>的<b class='flag-5'>目標(biāo)</b><b class='flag-5'>檢測(cè)</b>方法

    迅速了解目標(biāo)檢測(cè)的基本方法并嘗試?yán)斫饷總€(gè)模型的技術(shù)細(xì)節(jié)

    本文將討論目標(biāo)檢測(cè)的基本方法(窮盡搜索、R-CNN、Fast R-CNNFaster R-CNN
    的頭像 發(fā)表于 08-26 15:08 ?3214次閱讀

    用于實(shí)例分割的Mask R-CNN框架

    是應(yīng)用于每個(gè) RoI 的小型 FCN,以像素到像素的方式預(yù)測(cè)分割掩碼。鑒于 Faster R-CNN 框架,Mask R-CNN 易于實(shí)現(xiàn)和訓(xùn)練,這有助于廣泛的靈活架構(gòu)設(shè)計(jì)。此外,掩碼
    的頭像 發(fā)表于 04-13 10:40 ?2850次閱讀

    深入了解目標(biāo)檢測(cè)深度學(xué)習(xí)算法的技術(shù)細(xì)節(jié)

    本文將討論目標(biāo)檢測(cè)的基本方法(窮盡搜索、R-CNN、Fast R-CNNFaster R-CNN
    發(fā)表于 01-05 16:27 ?518次閱讀

    PyTorch教程14.8之基于區(qū)域的CNN(R-CNN)

    電子發(fā)燒友網(wǎng)站提供《PyTorch教程14.8之基于區(qū)域的CNN(R-CNN).pdf》資料免費(fèi)下載
    發(fā)表于 06-05 11:09 ?0次下載
    PyTorch教程14.8之基于區(qū)域的<b class='flag-5'>CNN</b>(<b class='flag-5'>R-CNN</b>)

    PyTorch教程-14.8。基于區(qū)域的 CNN (R-CNN)

    應(yīng)用于對(duì)象檢測(cè)的許多開(kāi)創(chuàng)性方法之一 (Girshick等人,2014 年)。在本節(jié)中,我們將介紹 R-CNN 及其一系列改進(jìn):fast R-CNN ( Girshick, 201
    的頭像 發(fā)表于 06-05 15:44 ?790次閱讀
    PyTorch教程-14.8?;趨^(qū)域的 <b class='flag-5'>CNN</b> (<b class='flag-5'>R-CNN</b>)

    無(wú)Anchor的目標(biāo)檢測(cè)算法邊框回歸策略

    R-CNN的邊框回歸策略。? 寫(xiě)在前面 目標(biāo)檢測(cè)包括目標(biāo)分類(lèi)和目標(biāo)定位2個(gè)任務(wù),
    的頭像 發(fā)表于 07-17 11:17 ?1257次閱讀
    無(wú)Anchor的<b class='flag-5'>目標(biāo)</b><b class='flag-5'>檢測(cè)</b>算法邊框回歸策略

    電子發(fā)燒友

    中國(guó)電子工程師最喜歡的網(wǎng)站

    • 2931785位工程師會(huì)員交流學(xué)習(xí)
    • 獲取您個(gè)性化的科技前沿技術(shù)信息
    • 參加活動(dòng)獲取豐厚的禮品