chinese直男口爆体育生外卖, 99久久er热在这里只有精品99, 又色又爽又黄18禁美女裸身无遮挡, gogogo高清免费观看日本电视,私密按摩师高清版在线,人妻视频毛茸茸,91论坛 兴趣闲谈,欧美 亚洲 精品 8区,国产精品久久久久精品免费

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

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

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

完整的Faster R-CNN框架

新機(jī)器視覺 ? 來(lái)源:新機(jī)器視覺 ? 作者:新機(jī)器視覺 ? 2021-03-20 10:37 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

背景

Faster R-CNN 最早在 2015 年的 NIPS 發(fā)布。其在發(fā)布后經(jīng)歷了幾次修改,這在之后博文中會(huì)有討論。Faster-RCNN 是 RCNN 系列論文的第三次迭代,這一系列論文的一作和聯(lián)合作者是 Ross Girshick。

這一切始于 2014 年的一篇論文「Rich feature hierarchies for accurate object detection and semantic segmentation」(R-CNN),其使用了稱為 Selective Search 的算法用來(lái)提取感興趣候選區(qū)域,并用一個(gè)標(biāo)準(zhǔn)的卷積神經(jīng)網(wǎng)絡(luò) (CNN) 去分類和調(diào)整這些區(qū)域。Fast R-CNN 從 R-CNN 演變優(yōu)化而來(lái),F(xiàn)ast R-CNN 發(fā)布于 2015 年上半年,其中一種稱為感興趣區(qū)域池化的技術(shù),使得網(wǎng)絡(luò)可以共享計(jì)算結(jié)果,從而讓模型提速。這一系列算法最終被優(yōu)化為 Faster R-CNN,這是第一個(gè)完全可微分的模型。

框架

Faster R-CNN 的框架由幾個(gè)模塊部件組成,所以其框架有些復(fù)雜。我們將從高層次的概述開始,之后會(huì)介紹不同組成部分的具體細(xì)節(jié)。

從一張圖片開始,我們將會(huì)得到:

一個(gè)邊框列表

每個(gè)邊框會(huì)被分配一個(gè)標(biāo)簽

每對(duì)標(biāo)簽和邊框所對(duì)應(yīng)的概率

完整的 Faster R-CNN 框架

輸入的圖片以長(zhǎng)×寬×高的張量形式表征,之后會(huì)被饋送入預(yù)訓(xùn)練好的卷積神經(jīng)網(wǎng)絡(luò),在中間層得到特征圖。使用該特征圖作為特征提取器并用于下一流程。

上述方法在遷移學(xué)習(xí)中經(jīng)常使用,尤其在為小數(shù)據(jù)集訓(xùn)練分類器時(shí),其通常取用了在另一個(gè)較大數(shù)據(jù)集訓(xùn)練好的權(quán)重。我們?cè)谙乱徽鹿?jié)會(huì)深入了解這個(gè)部分。接著,我們會(huì)使用到區(qū)域建議網(wǎng)絡(luò)(Region Proposal Network,RPN)。使用 CNN 計(jì)算得到的特征,去尋找到預(yù)設(shè)好數(shù)量的可能包含目標(biāo)的區(qū)域 (邊框)。

使用深度學(xué)習(xí)進(jìn)行目標(biāo)檢測(cè)最大的困難可能是生成一個(gè)長(zhǎng)度可變的邊框列表。使用深度神經(jīng)網(wǎng)絡(luò)建模時(shí),模型最后一部分通常是一個(gè)固定尺寸的張量輸出(除了循環(huán)神經(jīng)網(wǎng)絡(luò))。例如,在圖片分類中,輸出是 (N,) 形狀的張量,N 是類別的數(shù)量,其中在第 i 個(gè)位置標(biāo)量含有該圖片屬于類別 i 的概率。

RPN 中長(zhǎng)度可變列表的問(wèn)題可以使用錨點(diǎn)解決:使用固定尺寸的參考邊框在原始圖片上一致地定位。不是直接探測(cè)目標(biāo)在哪,而是把問(wèn)題分兩個(gè)方面建模,對(duì)每個(gè)錨點(diǎn),我們考慮:

這個(gè)錨點(diǎn)包含相關(guān)目標(biāo)嗎?

如何調(diào)整錨點(diǎn)以更好的擬合到相關(guān)目標(biāo)?

可能會(huì)有點(diǎn)困擾,但是沒(méi)關(guān)系,下面會(huì)深入了解。

在取得一系列的相關(guān)目標(biāo)和其在原始圖片上的位置后,目標(biāo)探測(cè)問(wèn)題就可以相對(duì)直觀地解決了。使用 CNN 提取到的特征和相關(guān)目標(biāo)的邊框,我們?cè)谙嚓P(guān)目標(biāo)的特征圖上使用感興趣區(qū)域池化 (RoI Pooling),并將與目標(biāo)相關(guān)的特征信息存入一個(gè)新的張量。之后的流程與 R-CNN 模型一致,利用這些信息:

對(duì)邊框內(nèi)的內(nèi)容分類(或者舍棄它,并用「背景」標(biāo)記邊框內(nèi)容)

調(diào)整邊框的坐標(biāo)(使之更好地包含目標(biāo))

顯然,這樣做會(huì)遺失掉部分信息,但這正是 Faster-RCNN 如何進(jìn)行目標(biāo)探測(cè)的基本思想。下一步,我們會(huì)仔細(xì)討論框架、損失函數(shù)以及訓(xùn)練過(guò)程中各個(gè)組件的具體細(xì)節(jié)。

基礎(chǔ)網(wǎng)絡(luò)

之前提到過(guò),F(xiàn)aster R-CNN 第一步要使用在圖片分類任務(wù) (例如,ImageNet) 上預(yù)訓(xùn)練好的卷積神經(jīng)網(wǎng)絡(luò),使用該網(wǎng)絡(luò)得到的中間層特征的輸出。這對(duì)有深度學(xué)習(xí)背景的人來(lái)說(shuō)很簡(jiǎn)單,但是理解如何使用和為什么這樣做才是關(guān)鍵,同時(shí),可視化中間層的特征輸出也很重要。沒(méi)有一致的意見表明哪個(gè)網(wǎng)絡(luò)框架是最好的。原始的 Faster R-CNN 使用的是在 ImageNet 上預(yù)訓(xùn)練的 ZF 和 VGG,但之后出現(xiàn)了很多不同的網(wǎng)絡(luò),且不同網(wǎng)絡(luò)的參數(shù)數(shù)量變化很大。例如,MobileNet,以速度優(yōu)先的一個(gè)小型的高效框架,大約有 330 萬(wàn)個(gè)參數(shù),而 ResNet-152(152 層),曾經(jīng)的 ImageNet 圖片分類競(jìng)賽優(yōu)勝者,大約有 6000 萬(wàn)個(gè)參數(shù)。最新的網(wǎng)絡(luò)結(jié)構(gòu)如 DenseNet,可以在提高準(zhǔn)確度的同時(shí)縮減參數(shù)數(shù)量。

VGG

在討論網(wǎng)絡(luò)結(jié)構(gòu)孰優(yōu)孰劣之前,讓我們先以 VGG-16 為例來(lái)嘗試?yán)斫?Faster-RCNN 是如何工作的。

VGG 網(wǎng)絡(luò)結(jié)構(gòu)

VGG,其名字來(lái)自于在 ImageNet ILSVRC 2014 競(jìng)賽中使用此網(wǎng)絡(luò)的小組組名,首次發(fā)布于論文」Very Deep Convolutional Networks for Large-Scale Image Recognition」, 作者是 Karen Simonyan 和 Andrew Zisserman。以今天的標(biāo)準(zhǔn)來(lái)看這個(gè)網(wǎng)絡(luò)談不上深度,但是在發(fā)布之際 VGG16 比當(dāng)時(shí)常用的網(wǎng)絡(luò)要多一倍的層數(shù),其推動(dòng)了「深度 → 更強(qiáng)大性能 → 更好結(jié)果」的浪潮(只要訓(xùn)練是可行的)。

當(dāng)使用 VGG 進(jìn)行分類任務(wù)時(shí),其輸入是 224×224×3 的張量 (表示一個(gè) 224×224 像素大小的 RGB 圖片)。在分類任務(wù)中輸入圖片的尺寸是固定的,因?yàn)榫W(wǎng)絡(luò)最后一部分的全連接層需要固定長(zhǎng)度的輸入。在接入全連接層前,通常要將最后一層卷積的輸出展開成一維張量。

因?yàn)橐褂镁矸e網(wǎng)絡(luò)中間層的輸出,所以輸入圖片的尺寸不再有限制。至少,在這個(gè)模塊中不再是問(wèn)題,因?yàn)橹挥芯矸e層參與計(jì)算。讓我們深入了解一下底層的細(xì)節(jié),看看具體要使用哪一層卷積網(wǎng)絡(luò)的輸出。Faster R-CNN 論文中沒(méi)有具體指定使用哪一層;但是在官方的實(shí)現(xiàn)中可以觀察到,作者使用的是 conv5/conv5_1 這一層 (caffe 代碼)。

每一層卷積網(wǎng)絡(luò)都在前一層的信息基礎(chǔ)上提取更加抽象的特征。第一層通常學(xué)習(xí)到簡(jiǎn)單的邊緣,第二層尋找目標(biāo)邊緣的模式,以激活后續(xù)卷積網(wǎng)絡(luò)中更加復(fù)雜的形狀。最終,我們得到一個(gè)在空間維度上比原始圖片小很多,但表征更深的卷積特征圖。特征圖的長(zhǎng)和寬會(huì)隨著卷積層間的池化而縮小,深度會(huì)隨著卷積層濾波器的數(shù)量而增加。

從圖片到卷積特征圖

卷積特征圖將圖片的所有信息編碼到深度的維度上,同時(shí)保留著原始圖片上目標(biāo)物體的相對(duì)位置信息。例如,如果圖片左上角有一個(gè)紅色矩形,經(jīng)過(guò)卷積層的激活,那么紅色矩形的位置信息仍然保留在卷積特征圖的左上角。

VGG vs ResNet

如今,ResNet 已經(jīng)取代大多數(shù) VGG 網(wǎng)絡(luò)作為提取特征的基礎(chǔ)框架。Faster-RCNN 的三位聯(lián)合作者 (Kaiming He, Shaoqing Ren 和 Jian Sun) 也是論文「Deep Residual Learning for Image (https://arxiv.org/abs/1512.03385) Recognition」的作者,這篇論文最初介紹了 ResNets 這一框架。

ResNet 對(duì)比 VGG 的優(yōu)勢(shì)在于它是一個(gè)更深層、大型的網(wǎng)絡(luò),因此有更大的容量去學(xué)習(xí)所需要的信息。這些結(jié)論在圖片分類任務(wù)中可行,在目標(biāo)探測(cè)的問(wèn)題中也應(yīng)該同樣有效。

ResNet 在使用殘差連接和批歸一化的方法后更加易于訓(xùn)練,這些方法在 VGG 發(fā)布的時(shí)候還沒(méi)有出現(xiàn)。

錨點(diǎn)

現(xiàn)在,我們將使用處理過(guò)后的特征圖并建議目標(biāo)區(qū)域,也就是用于分類任務(wù)的感興趣區(qū)域。之前提到過(guò)錨點(diǎn)是解決長(zhǎng)度可變問(wèn)題的一種方法,現(xiàn)在將詳細(xì)介紹。

我們的目標(biāo)是尋找圖片中的邊框。這些邊框是不同尺寸、不同比例的矩形。設(shè)想我們?cè)诮鉀Q問(wèn)題前已知圖片中有兩個(gè)目標(biāo)。那么首先想到的應(yīng)該是訓(xùn)練一個(gè)網(wǎng)絡(luò),這個(gè)網(wǎng)絡(luò)可以返回 8 個(gè)值:包含(xmin, ymin, xmax, ymax)的兩個(gè)元組,每個(gè)元組都用于定義一個(gè)目標(biāo)的邊框坐標(biāo)。這個(gè)方法有著根本問(wèn)題,例如,圖片可能是不同尺寸和比例的,因此訓(xùn)練一個(gè)可以直接準(zhǔn)確預(yù)測(cè)原始坐標(biāo)的模型是很復(fù)雜的。另一個(gè)問(wèn)題是無(wú)效預(yù)測(cè):當(dāng)預(yù)測(cè)(xmin,xmax)和(ymin,ymax)時(shí),應(yīng)該強(qiáng)制設(shè)定 xmin 要小于 xmax,ymin 要小于 ymax。

另一種更加簡(jiǎn)單的方法是去預(yù)測(cè)參考邊框的偏移量。使用參考邊框(xcenter, ycenter, width, height),學(xué)習(xí)預(yù)測(cè)偏移量(Δxcenter,Δycenter,Δwidth,Δheight),因此我們只得到一些小數(shù)值的預(yù)測(cè)結(jié)果并挪動(dòng)參考變量就可以達(dá)到更好的擬合結(jié)果。

錨點(diǎn)是用固定的邊框置于不同尺寸和比例的圖片上,并且在之后目標(biāo)位置的預(yù)測(cè)中用作參考邊框。

我們?cè)谔幚淼木矸e特征圖的尺寸分別是 convwidth×convheight×convdepth,因此在卷積圖的 convwidth×convheight 上每一個(gè)點(diǎn)都生成一組錨點(diǎn)。很重要的一點(diǎn)是即使我們是在特征圖上生成的錨點(diǎn),這些錨點(diǎn)最終是要映射回原始圖片的尺寸。

因?yàn)槲覀冎挥玫搅司矸e和池化層,所以特征圖的最終維度與原始圖片是呈比例的。數(shù)學(xué)上,如果圖片的尺寸是 w×h,那么特征圖最終會(huì)縮小到尺寸為 w/r 和 h/r,其中 r 是次級(jí)采樣率。如果我們?cè)谔卣鲌D上每個(gè)空間位置上都定義一個(gè)錨點(diǎn),那么最終圖片的錨點(diǎn)會(huì)相隔 r 個(gè)像素,在 VGG 中,r=16。

原始圖片的錨點(diǎn)中心

為了選擇一組合適錨點(diǎn),我們通常定義一組固定尺寸 (例如,64px、128px、256px,此處為邊框大小) 和比例 (例如,0.5、1、1.5,此處為邊框長(zhǎng)寬比) 的邊框,使用這些變量的所有可能組合得到候選邊框 (這個(gè)例子中有 1 個(gè)錨點(diǎn)和 9 個(gè)邊框)。

左側(cè):錨點(diǎn)、中心:特征圖空間單一錨點(diǎn)在原圖中的表達(dá),右側(cè):所有錨點(diǎn)在原圖中的表達(dá)

區(qū)域建議網(wǎng)絡(luò)

RPN 采用卷積特征圖并在圖像上生成建議。

像我們之前提到的那樣,RPN 接受所有的參考框(錨點(diǎn))并為目標(biāo)輸出一套好的建議。它通過(guò)為每個(gè)錨點(diǎn)提供兩個(gè)不同的輸出來(lái)完成。

第一個(gè)輸出是錨點(diǎn)作為目標(biāo)的概率。如果你愿意,可以叫做「目標(biāo)性得分」。注意,RPN 不關(guān)心目標(biāo)的類別,只在意它實(shí)際上是不是一個(gè)目標(biāo)(而不是背景)。我們將用這個(gè)目標(biāo)性得分來(lái)過(guò)濾掉不好的預(yù)測(cè),為第二階段做準(zhǔn)備。第二個(gè)輸出是邊框回歸,用于調(diào)整錨點(diǎn)以更好的擬合其預(yù)測(cè)的目標(biāo)。

RPN 是用完全卷積的方式高效實(shí)現(xiàn)的,用基礎(chǔ)網(wǎng)絡(luò)返回的卷積特征圖作為輸入。首先,我們使用一個(gè)有 512 個(gè)通道和 3x3 卷積核大小的卷積層,然后我們有兩個(gè)使用 1x1 卷積核的并行卷積層,其通道數(shù)量取決于每個(gè)點(diǎn)的錨點(diǎn)數(shù)量。

RPN 架構(gòu)的卷積實(shí)現(xiàn),其中 k 是錨點(diǎn)的數(shù)量。

對(duì)于分類層,我們對(duì)每個(gè)錨點(diǎn)輸出兩個(gè)預(yù)測(cè)值:它是背景(不是目標(biāo))的分?jǐn)?shù),和它是前景(實(shí)際的目標(biāo))的分?jǐn)?shù)。

對(duì)于回歸或邊框調(diào)整層,我們輸出四個(gè)預(yù)測(cè)值:Δxcenter、Δycenter、Δwidth、Δheight,我們將會(huì)把這些值用到錨點(diǎn)中來(lái)得到最終的建議。

使用最終的建議坐標(biāo)和它們的目標(biāo)性得分,然后可以得到一套很好的對(duì)于目標(biāo)的建議。

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

RPN 執(zhí)行兩種不同類型的預(yù)測(cè):二進(jìn)制分類和邊框回歸調(diào)整。為了訓(xùn)練,我們把所有的錨點(diǎn)分成兩類。一類是「前景」,它與真實(shí)目標(biāo)重疊并且其 IoU(Intersection of Union)值大于 0.5;另一類是「背景」,它不與任何真實(shí)目標(biāo)重疊或與真實(shí)目標(biāo)的 IoU 值 小于 0.1。

然后,我們對(duì)這些錨點(diǎn)隨機(jī)采樣,構(gòu)成大小為 256 的 mini batch——維持前景錨點(diǎn)和背景錨點(diǎn)之間的平衡比例。

RPN 用所有以 mini batch 篩選出來(lái)的錨點(diǎn)和二進(jìn)制交叉熵(binary cross entropy)來(lái)計(jì)算分類損失。然后它只用那些標(biāo)記為前景的 mini batch 錨點(diǎn)來(lái)計(jì)算回歸損失。為了計(jì)算回歸的目標(biāo),我們使用前景錨點(diǎn)和最接近的真實(shí)目標(biāo),并計(jì)算將錨點(diǎn)轉(zhuǎn)化為目標(biāo)所需的正確 Δ。

論文中建議使用 Smooth L1 loss 來(lái)計(jì)算回歸誤差,而不是用簡(jiǎn)單的 L1 或 L2 loss。Smooth L1 基本上就是 L1,但是當(dāng) L1 的誤差足夠小,由確定的 σ 定義時(shí),可以認(rèn)為誤差幾乎是正確的且損失以更快的速率減小。

使用 dynamic batches 是具有挑戰(zhàn)性的,這里的原因很多。即使我們?cè)噲D維持前景錨點(diǎn)和背景錨點(diǎn)之間的平衡比例,但這并不總是可能的。根據(jù)圖像上的真實(shí)目標(biāo)以及錨點(diǎn)的大小和比例,可能會(huì)得到零前景錨點(diǎn)。在這種情況下,我們轉(zhuǎn)而使用對(duì)于真實(shí)框具有最大 IoU 值的錨點(diǎn)。這遠(yuǎn)非理想情況,但是為了總是有前景樣本和目標(biāo)可以學(xué)習(xí),這還是挺實(shí)用的。

后處理

非極大抑制(Non-maximum suppression):由于錨點(diǎn)經(jīng)常重疊,因此建議最終也會(huì)在同一個(gè)目標(biāo)上重疊。為了解決重復(fù)建議的問(wèn)題,我們使用一個(gè)簡(jiǎn)單的算法,稱為非極大抑制(NMS)。NMS 獲取按照分?jǐn)?shù)排序的建議列表并對(duì)已排序的列表進(jìn)行迭代,丟棄那些 IoU 值大于某個(gè)預(yù)定義閾值的建議,并提出一個(gè)具有更高分?jǐn)?shù)的建議。

雖然這看起來(lái)很簡(jiǎn)單,但對(duì) IoU 的閾值設(shè)定一定要非常小心。太低,你可能會(huì)丟失對(duì)目標(biāo)的建議;太高,你可能會(huì)得到對(duì)同一個(gè)目標(biāo)的很多建議。常用值是 0.6。

建議選擇:應(yīng)用 NMS 后,我們保留評(píng)分最高的 N 個(gè)建議。論文中使用 N=2000,但是將這個(gè)數(shù)字降低到 50 仍然可以得到相當(dāng)好的結(jié)果。

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

RPN 可以獨(dú)立使用,而不需要第二階段的模型。在只有一類對(duì)象的問(wèn)題中,目標(biāo)性概率可以用作最終的類別概率。這是因?yàn)樵谶@種情況下,「前景」=「目標(biāo)類別」以及「背景」=「不是目標(biāo)類別」。

一些從獨(dú)立使用 RPN 中受益的機(jī)器學(xué)習(xí)問(wèn)題的例子包括流行的(但仍然是具有挑戰(zhàn)性的)人臉檢測(cè)和文本檢測(cè)。

僅使用 RPN 的優(yōu)點(diǎn)之一是訓(xùn)練和預(yù)測(cè)的速度都有所提高。由于 RPN 是一個(gè)非常簡(jiǎn)單的僅使用卷積層的網(wǎng)絡(luò),所以預(yù)測(cè)時(shí)間比使用分類基礎(chǔ)網(wǎng)絡(luò)更快。

興趣區(qū)域池化

在 RPN 步驟之后,我們有很多沒(méi)有分配類別的目標(biāo)建議。我們接下來(lái)要解決的問(wèn)題就是如何將這些邊框分類到我們想要的類別中。

最簡(jiǎn)單的方法是采用每個(gè)建議,裁剪出來(lái),然后讓它通過(guò)預(yù)訓(xùn)練的基礎(chǔ)網(wǎng)絡(luò)。然后,我們可以用提取的特征作為基礎(chǔ)圖像分類器的輸入。這種方法的主要問(wèn)題是運(yùn)行所有 2000 個(gè)建議的計(jì)算效率和速度都是非常低的。

Faster R-CNN 試圖通過(guò)復(fù)用現(xiàn)有的卷積特征圖來(lái)解決或至少緩解這個(gè)問(wèn)題。這是通過(guò)用興趣區(qū)域池化為每個(gè)建議提取固定大小的特征圖實(shí)現(xiàn)的。R-CNN 需要固定大小的特征圖,以便將它們分類到固定數(shù)量的類別中。

興趣區(qū)域池化

一種更簡(jiǎn)單的方法(被包括 Luminoth 版本的 Faster R-CNN 在內(nèi)的目標(biāo)檢測(cè)實(shí)現(xiàn)方法所廣泛使用),是用每個(gè)建議來(lái)裁剪卷積特征圖,然后用插值(通常是雙線性的)將每個(gè)裁剪調(diào)整為固定大?。?4×14×convdepth)。裁剪之后,用 2x2 核大小的最大池化來(lái)獲得每個(gè)建議最終的 7×7×convdepth 特征圖。

選擇這些確切形狀的原因與下一模塊(R-CNN)如何使用它有關(guān),這些設(shè)定是根據(jù)第二階段的用途得到的。

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

基于區(qū)域的卷積神經(jīng)網(wǎng)絡(luò)(R-CNN)是 Faster R-CNN 工作流的最后一步。從圖像上獲得卷積特征圖之后,用它通過(guò) RPN 來(lái)獲得目標(biāo)建議并最終為每個(gè)建議提取特征(通過(guò) RoI Pooling),最后我們需要使用這些特征進(jìn)行分類。R-CNN 試圖模仿分類 CNNs 的最后階段,在這個(gè)階段用一個(gè)全連接層為每個(gè)可能的目標(biāo)類輸出一個(gè)分?jǐn)?shù)。

R-CNN 有兩個(gè)不同的目標(biāo):

1. 將建議分到一個(gè)類中,加上一個(gè)背景類(用于刪除不好的建議)。

2. 根據(jù)預(yù)測(cè)的類別更好地調(diào)整建議的邊框。

在最初的 Faster R-CNN 論文中,R-CNN 對(duì)每個(gè)建議采用特征圖,將它平坦化并使用兩個(gè)大小為 4096 的有 ReLU 激活函數(shù)的全連接層。

然后,它對(duì)每個(gè)不同的目標(biāo)使用兩種不同的全連接層:

一個(gè)有 N+1 個(gè)單元的全連接層,其中 N 是類的總數(shù),另外一個(gè)是背景類。

一個(gè)有 4N 個(gè)單元的全連接層。我們希望有一個(gè)回歸預(yù)測(cè),因此對(duì) N 個(gè)類別中的每一個(gè)可能的類別,我們都需要 Δcenterx、Δcentery、Δwidth、Δheight。

R-CNN 架構(gòu)

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

R-CNN 的目標(biāo)與 RPN 的目標(biāo)的計(jì)算方法幾乎相同,但是考慮的是不同的可能類別。我們采用建議和真實(shí)邊框,并計(jì)算它們之間的 IoU。

那些有任何真實(shí)邊框的建議,只要其 IoU 大于 0.5,都被分配給那個(gè)真實(shí)數(shù)據(jù)。那些 IoU 在 0.1 和 0.5 之間的被標(biāo)記為背景。與我們?cè)跒?RPN 分配目標(biāo)時(shí)相反的是,我們忽略了沒(méi)有任何交集的建議。這是因?yàn)樵谶@個(gè)階段,我們假設(shè)已經(jīng)有好的建議并且我們對(duì)解決更困難的情況更有興趣。當(dāng)然,這些所有的值都是可以為了更好的擬合你想找的目標(biāo)類型而做調(diào)整的超參數(shù)。

邊框回歸的目標(biāo)是計(jì)算建議和與其對(duì)應(yīng)的真實(shí)框之間的偏移量,僅針對(duì)那些基于 IoU 閾值分配了類別的建議。

我們隨機(jī)抽樣了一個(gè)尺寸為 64 的 balanced mini batch,其中我們有高達(dá) 25% 的前景建議(有類別)和 75% 的背景。

按照我們對(duì) RPN 損失所做的相同處理方式,現(xiàn)在的分類損失是一個(gè)多類別的交叉熵?fù)p失,使用所有選定的建議和用于與真實(shí)框匹配的 25% 建議的 Smooth L1 loss。由于 R-CNN 邊框回歸的全連接網(wǎng)絡(luò)的輸出對(duì)于每個(gè)類都有一個(gè)預(yù)測(cè),所以當(dāng)我們得到這種損失時(shí)必須小心。在計(jì)算損失時(shí),我們只需要考慮正確的類。

后處理

與 RPN 相似,我們最終得到了很多已經(jīng)分配了類別的目標(biāo),在返回它們之前需要進(jìn)一步處理。

為了實(shí)施邊框調(diào)整,我們必須考慮哪個(gè)類別具有對(duì)該建議的最高概率。我們也需要忽略具有最高概率的背景類的建議。

在得到最終目標(biāo)和忽略被預(yù)測(cè)為背景的目標(biāo)之后,我們應(yīng)用基于類的 NMS。這通過(guò)按類進(jìn)行分組完成,通過(guò)概率對(duì)其排序,然后將 NMS 應(yīng)用于每個(gè)獨(dú)立的組。

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

訓(xùn)練

在最初的論文中,F(xiàn)aster R-CNN 是用多步法訓(xùn)練的,獨(dú)立地訓(xùn)練各部分并且在應(yīng)用最終的全面訓(xùn)練方法之前合并訓(xùn)練的權(quán)重。之后,人們發(fā)現(xiàn)進(jìn)行端到端的聯(lián)合訓(xùn)練會(huì)帶來(lái)更好的結(jié)果。

把完整的模型放在一起后,我們得到 4 個(gè)不同的損失,兩個(gè)用于 RPN,另外兩個(gè)用于 R-CNN。我們?cè)?RPN 和 R-CNN 中有可訓(xùn)練的層,我們也有可以訓(xùn)練(微調(diào))或不能訓(xùn)練的基礎(chǔ)網(wǎng)絡(luò)。

是否訓(xùn)練基礎(chǔ)網(wǎng)絡(luò)的決定取決于我們想要學(xué)習(xí)的目標(biāo)特性和可用的計(jì)算能力。如果我們想檢測(cè)與在原始數(shù)據(jù)集(用于訓(xùn)練基礎(chǔ)網(wǎng)絡(luò))上的數(shù)據(jù)相似的目標(biāo),那么除了嘗試壓縮我們能獲得的所有可能的性能外,其他做法都是沒(méi)有必要的。另一方面,為了擬合完整的梯度,訓(xùn)練基礎(chǔ)網(wǎng)絡(luò)在時(shí)間和必要的硬件上都是昂貴的。

用加權(quán)和將四種不同的損失組合起來(lái)。這是因?yàn)橄鄬?duì)于回歸損失,我們可能希望給分類損失更大的權(quán)重,或者相比于 RPN 可能給 R-CNN 損失更大的權(quán)重。

除了常規(guī)的損失之外,我們也有正則化損失,為了簡(jiǎn)潔起見,我們可以跳過(guò)這部分,但是它們?cè)?RPN 和 R-CNN 中都可以定義。我們用 L2 正則化一些層。根據(jù)正在使用哪個(gè)基礎(chǔ)網(wǎng)絡(luò),以及如果它經(jīng)過(guò)訓(xùn)練,也有可能進(jìn)行正則化。

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

學(xué)習(xí)率從 0.001 開始,然后在 50K 步后下降到 0.0001。這是通常最重要的超參數(shù)之一。當(dāng)用 Luminoth 訓(xùn)練時(shí),我們經(jīng)常從默認(rèn)值開始,并以此開始做調(diào)整。

評(píng)估

在一些特定的 IoU 閾值下,使用標(biāo)準(zhǔn)平均精度均值(mAP)來(lái)完成評(píng)估(例如,mAP@0.5)。mAP 是源于信息檢索的度量標(biāo)準(zhǔn),并且常用于計(jì)算排序問(wèn)題中的誤差和評(píng)估目標(biāo)檢測(cè)問(wèn)題。

我們不會(huì)深入討論細(xì)節(jié),因?yàn)檫@些類型的度量標(biāo)準(zhǔn)值得用一篇完整博客來(lái)總結(jié),但重要的是,當(dāng)你錯(cuò)過(guò)了你應(yīng)該檢測(cè)到的框,以及當(dāng)你發(fā)現(xiàn)一些不存在的東西或多次檢測(cè)到相同的東西時(shí),mAP 會(huì)對(duì)此進(jìn)行懲罰。

結(jié)論

到目前為止,你應(yīng)該清楚 Faster R-CNN 的工作方式、設(shè)計(jì)目的以及如何針對(duì)特定的情況進(jìn)行調(diào)整。如果你想更深入的了解它的工作原理,你應(yīng)該看看 Luminoth 的實(shí)現(xiàn)。

Faster R-CNN 是被證明可以用相同的原理解決復(fù)雜的計(jì)算機(jī)視覺問(wèn)題的模型之一,在這個(gè)新的深度學(xué)習(xí)革命剛開始的時(shí)候,它就展現(xiàn)出如此驚人的結(jié)果。

目前正在建立的新模型不僅用于目標(biāo)檢測(cè),還用于基于這種原始模型的語(yǔ)義分割、3D 目標(biāo)檢測(cè)等等。有的借用 RPN,有的借用 R-CNN,還有的建立在兩者之上。因此,充分了解底層架構(gòu)非常重要,從而可以解決更加廣泛的和復(fù)雜的問(wèn)題。

責(zé)任編輯:lq

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(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)題:詳解 Faster R-CNN目標(biāo)檢測(cè)的實(shí)現(xiàn)過(guò)程

文章出處:【微信號(hào):vision263com,微信公眾號(hào):新機(jī)器視覺】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    ArkUI-X框架LogInterface使用指南

    ArkUI-X框架支持日志攔截能力,Android側(cè)提供原生接口,用于注入LogInterface接口,框架日志及ts日志通過(guò)該接口輸出,本文的核心內(nèi)容是介紹如何在Android平臺(tái)上有效利用
    發(fā)表于 06-15 23:20

    大模型時(shí)代的深度學(xué)習(xí)框架

    作者:算力魔方創(chuàng)始人/英特爾創(chuàng)新大使劉力 在 CNN時(shí)代 ,AI模型的參數(shù)規(guī)模都在百萬(wàn)級(jí)別,僅需在單張消費(fèi)類顯卡上即可完成訓(xùn)練。例如,以業(yè)界知名的CNN模型: ResNet50 為例,模型參數(shù)
    的頭像 發(fā)表于 04-25 11:43 ?268次閱讀
    大模型時(shí)代的深度學(xué)習(xí)<b class='flag-5'>框架</b>

    STM32如何移植Audio框架

    最近在學(xué)習(xí)音頻解碼,想用一下Audio框架。 1、這個(gè)該如何移植到自己創(chuàng)建的BSP并對(duì)接到device框架中?看了官方移植文檔沒(méi)有對(duì)沒(méi)有對(duì)該部分的描述。 2、我只想實(shí)現(xiàn)一個(gè)簡(jiǎn)單的播放功能,只用一個(gè)DAC芯片(比如CS4344)是否就能達(dá)到我的需求?
    發(fā)表于 04-01 08:08

    如何使用命令將更快的R ACCENT-10.onnx模型轉(zhuǎn)換為IR?

    使用命令將更快的R ACCENT-10.onnx 模型轉(zhuǎn)換為 IR:python ./mo_onnx.py --input_model FasterRCNN-10.onnx
    發(fā)表于 03-07 07:43

    執(zhí)行“mask_rcnn_demo.exe”時(shí),無(wú)法找到帶有名稱的Blob:DetectionOutput是怎么回事?

    引用 將 ONNX* Mask R-CNN 模型轉(zhuǎn)換為 OpenVINO?文檔的中間表示。 已下載并轉(zhuǎn)換 mask_rcnn_R_50_FPN_1x 模型到 IR 執(zhí)行命令
    發(fā)表于 03-05 07:10

    RK3588開發(fā)板上部署DeepSeek-R1大模型的完整指南

    開發(fā)板的串口通信需求,R1可以提供完整的C語(yǔ)言示例程序,包括串口初始化、數(shù)據(jù)接收和發(fā)送等功能,幫助用戶實(shí)現(xiàn)串口通信。 上傳視頻封面 ?好的標(biāo)題可以獲得更多的推薦及關(guān)注者
    發(fā)表于 02-27 16:45

    AI開發(fā)框架集成介紹

    隨著AI應(yīng)用的廣泛深入,單一框架往往難以滿足多樣化的需求,因此,AI開發(fā)框架的集成成為了提升開發(fā)效率、促進(jìn)技術(shù)創(chuàng)新的關(guān)鍵路徑。以下,是對(duì)AI開發(fā)框架集成的介紹,由AI部落小編整理。
    的頭像 發(fā)表于 01-07 15:58 ?558次閱讀

    【「具身智能機(jī)器人系統(tǒng)」閱讀體驗(yàn)】2.具身智能機(jī)器人的基礎(chǔ)模塊

    ,還有基于深度神經(jīng)網(wǎng)絡(luò)的Fast R-CNNFaster R-CNN。 語(yǔ)義分割是將圖像劃分為具有不同語(yǔ)義類別的區(qū)域。 立體視覺通過(guò)模擬人類雙眼的視覺系統(tǒng),利用兩天相機(jī)從略微不同的角度同時(shí)拍攝圖像
    發(fā)表于 01-04 19:22

    SSM框架的源碼解析與理解

    SSM框架(Spring + Spring MVC + MyBatis)是一種在Java開發(fā)中常用的輕量級(jí)企業(yè)級(jí)應(yīng)用框架。它通過(guò)整合Spring、Spring MVC和MyBatis三個(gè)框架,實(shí)現(xiàn)了
    的頭像 發(fā)表于 12-17 09:20 ?988次閱讀

    聽懂什么是信號(hào)完整

    2024年12月20日14:00-16:00中星聯(lián)華科技將舉辦“高速信號(hào)完整性分析與測(cè)試”-“碼”上行動(dòng)系列線上講堂線上講堂。本期會(huì)議我們將為大家介紹高速串行總線傳輸基本框架,什么是信號(hào)完整性?高速
    的頭像 發(fā)表于 12-15 23:33 ?692次閱讀
    聽懂什么是信號(hào)<b class='flag-5'>完整</b>性

    大語(yǔ)言模型開發(fā)框架是什么

    大語(yǔ)言模型開發(fā)框架是指用于訓(xùn)練、推理和部署大型語(yǔ)言模型的軟件工具和庫(kù)。下面,AI部落小編為您介紹大語(yǔ)言模型開發(fā)框架。
    的頭像 發(fā)表于 12-06 10:28 ?527次閱讀

    12月20日線上講堂|聽懂什么是信號(hào)完整

    2024年12月20日14:00-16:00中星聯(lián)華科技將舉辦“高速信號(hào)完整性分析與測(cè)試”-“碼”上行動(dòng)系列線上講堂線上講堂。本期會(huì)議我們將為大家介紹高速串行總線傳輸基本框架,什么是信號(hào)完整性?高速
    的頭像 發(fā)表于 12-06 01:06 ?514次閱讀
    12月20日線上講堂|聽懂什么是信號(hào)<b class='flag-5'>完整</b>性

    JavaWeb框架比較

    JavaWeb框架為開發(fā)人員提供了構(gòu)建Web應(yīng)用程序所需的基礎(chǔ)設(shè)施和組件,每種框架都有其獨(dú)特的特點(diǎn)和適用場(chǎng)景。以下是對(duì)幾種主流JavaWeb框架的比較: Spring MVC 優(yōu)點(diǎn)
    的頭像 發(fā)表于 11-25 09:14 ?689次閱讀

    信號(hào)完整性與電源完整性-電源完整性分析

    電子發(fā)燒友網(wǎng)站提供《信號(hào)完整性與電源完整性-電源完整性分析.pdf》資料免費(fèi)下載
    發(fā)表于 08-12 14:31 ?92次下載

    日志框架簡(jiǎn)介-Slf4j+Logback入門實(shí)踐

    結(jié)果不受日志的有無(wú)影響,但沒(méi)有日志的應(yīng)用程序是不完整的,甚至可以說(shuō)是有缺陷的。優(yōu)秀的日志系統(tǒng)可以 記錄操作軌跡 、 監(jiān)控系統(tǒng)運(yùn)行狀態(tài) 和 解決系統(tǒng)故障 。 Java 日志框架進(jìn)化史 早期 Java 日志框架沒(méi)有制定統(tǒng)一的標(biāo)準(zhǔn),使
    的頭像 發(fā)表于 07-30 10:00 ?1527次閱讀
    日志<b class='flag-5'>框架</b>簡(jiǎn)介-Slf4j+Logback入門實(shí)踐