日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

R-CNN算法原理

發(fā)布時間:2023/12/20 编程问答 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 R-CNN算法原理 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

R-CNN算法原理

對于一張圖片當中多個目標,多個類別的時候。前面的輸出結(jié)果是不定的,有可能是以下有四個類別輸出這種情況。或者N個結(jié)果,這樣的話,網(wǎng)絡(luò)模型輸出結(jié)構(gòu)不定

所以需要一些他的方法解決目標檢測(多個目標)的問題,試圖將一個檢測問題簡化成分類問題

①:目標檢測-Overfeat模型

滑動窗口
目標檢測的暴力方法是從左到右、從上到下滑動窗口,利用分類識別目標。為了在不同觀察距離處檢測不同的目標類型,我們使用不同大小和寬高比的窗口。如下圖所示:

這樣就變成每張子圖片輸出類別以及位置,變成分類問題。但是滑動窗口需要初始設(shè)定一個固定大小的窗口,這就遇到了一個問題,有些物體適應(yīng)的框不一樣,所以需要提前設(shè)定K個窗口,每個窗口滑動提取M個,總共K x M 個圖片,通常會直接將圖像變形轉(zhuǎn)換成固定大小的圖像,變形圖像塊被輸入 CNN 分類器中,提取特征后,我們使用一些分類器識別類別和該邊界框的另一個線性回歸器。

那這種方法是怎么去利用數(shù)據(jù)訓練的?

首先我們會準備所需要的訓練集數(shù)據(jù),每張圖片的若干個子圖片以及每張圖片的類別位置,如下我們從某張圖片中滑動出的若干的圖片。

這種方法類似一種暴力窮舉的方式,會消耗大量的計算力量,并且由于窗口大小問題可能會造成效果不準確
但是提供了一種解決目標檢測問題的思路

在CVPR 2014年中Ross Girshick提出R-CNN。

不使用暴力方法,而是用候選區(qū)域方法(region proposal method),創(chuàng)建目標檢測的區(qū)域改變了圖像領(lǐng)域?qū)崿F(xiàn)物體檢測的模型思路,R-CNN是以深度神經(jīng)網(wǎng)絡(luò)為基礎(chǔ)的物體檢測的模型 ,R-CNN在當時以優(yōu)異的性能令世人矚目,以R-CNN為基點,后續(xù)的SPPNet、Fast R-CNN、Faster R-CNN模型都是照著這個物體檢測思路。

步驟(以AlexNet網(wǎng)絡(luò)為基準) 1.找出圖片中可能存在目標的侯選區(qū)域region proposal 2.進行圖片大小調(diào)整為了適應(yīng)AlexNet網(wǎng)絡(luò)的輸入圖像的大小227×227,通過CNN對候選區(qū)域提取特征向量,2000個建議框的CNN特征組合成2000×4096維矩陣 3.將2000×4096維特征與20個SVM組成的權(quán)值矩陣4096×20相乘(20種分類,SVM是二分類器,則有20個SVM),獲得2000×20維矩陣 4.分別對2000×20維矩陣中每一列即每一類進行非極大值抑制(NMS:non-maximum suppression)剔除重疊建議框,得到該列即該類中得分最高的一些建議框 5.修正bbox,對bbox做回歸微調(diào)

選擇性搜索(SelectiveSearch,SS)中,首先將每個像素作為一組。然后,計算每一組的紋理,并將兩個最接近的組結(jié)合起來。但是為了避免單個區(qū)域吞噬其他區(qū)域,我們首先對較小的組進行分組。我們繼續(xù)合并區(qū)域,直到所有區(qū)域都結(jié)合在一起。下圖第一行展示了如何使區(qū)域增長,第二行中的藍色矩形代表合并過程中所有可能的 ROI。

SelectiveSearch在一張圖片上提取出來約2000個侯選區(qū)域,需要注意的是這些候選區(qū)域的長寬不固定。而使用CNN提取候選區(qū)域的特征向量,需要接受固定長度的輸入,所以需要對候選區(qū)域做一些尺寸上的修改。

傳統(tǒng)的CNN限制了輸入必須固定大小,所以在實際使用中往往需要對原圖片進行crop或者warp的操作

crop:截取原圖片的一個固定大小的patch
warp:將原圖片的ROI縮放到一個固定大小的patch
無論是crop還是warp,都無法保證在不失真的情況下將圖片傳入到CNN當中。會使用一些方法盡量讓圖片保持最小的變形。

1.各向異性縮放:即直接縮放到指定大小,這可能會造成不必要的圖像失真

2.各向同性縮放:在原圖上出裁剪侯選區(qū)域, (采用侯選區(qū)域的像素顏色均值)填充到指定大小在邊界用固定的背景顏色

③ CNN網(wǎng)絡(luò)提取特征

在侯選區(qū)域的基礎(chǔ)上提取出更高級、更抽象的特征,這些高級特征是作為下一步的分類器、回歸的輸入數(shù)據(jù)

提取的這些特征將會保存在磁盤當中(這些提取的特征才是真正的要訓練的數(shù)據(jù))

④ 特征向量訓練分類器SVM

假設(shè)一張圖片的2000個侯選區(qū)域,那么提取出來的就是2000 x 4096這樣的特征向量(R-CNN當中默認CNN層輸出4096特征向量)。 那么最后需要對這些特征進行分類,R-CNN選用SVM進行二分類。 假設(shè)檢測N個類別,那么會提供20個不同類別的SVM分類器,每個分類器都會對2000個候選區(qū)域的特征向量分別判斷一次, 這樣得出[2000, 20]的得分矩陣,如下圖所示:

每個SVM分類器做的事情
判斷2000個候選區(qū)域是某類別,還是背景

⑤ 非最大抑制(NMS)

目的
篩選候選區(qū)域,得到最終候選區(qū)域結(jié)果
迭代過程
對于所有的2000個候選區(qū)域得分進行概率篩選
然后對剩余的候選框,每個類別進行IoU(交并比)>= 0.5 篩選

假設(shè)現(xiàn)在滑動窗口有:A、B、C、D、E 5個候選框,第一輪:假設(shè)B是得分最高的,與B的IoU>0.5刪除。現(xiàn)在與B計算IoU,DE結(jié)果>0.5,剔除DE,B作為一個預(yù)測結(jié)果 第二輪:AC中,A的得分最高,與A計算IoU,C的結(jié)果>0.5,剔除C,A作為一個結(jié)果 最終結(jié)果為在這個5個中檢測出了兩個目標為A和B

⑥修正候選區(qū)域

那么通過非最大一直篩選出來的候選框不一定就非常準確怎么辦?R-CNN提供了這樣的方法,建立一個bbox regressor回歸用于修正篩選后的候選區(qū)域,使之回歸于ground-truth,默認認為這兩個框之間是線性關(guān)系,因為在最后篩選出來的候選區(qū)域和ground-truth很接近了修正過程(線性回歸)

給定:anchor A=(A_{x}, A_{y}, A_{w}, A_{h}) 和 GT=[G_{x}, G_{y}, G_{w}, G_{h}] 尋找一種變換F,使得:F(A_{x}, A_{y}, A_{w}, A_{h})=(G_{x}^{'}, G_{y}^{'}, G_{w}^{'}, G_{h}^{'}), 其中(G_{x}^{'}, G_{y}^{'}, G_{w}^{'}, G_{h}^{'})≈(G_{x}, G_{y}, G_{w}, G_{h})

R-CNN的訓練過程這些部分,正負樣本準備+預(yù)訓練+微調(diào)網(wǎng)絡(luò)+訓練SVM+訓練邊框回歸器

⑦正負樣本準備

對于訓練集中的所有圖像,采用selective search方式來獲取,最后每個圖像得到2000個region proposal。但是每個圖像不是所有的候選區(qū)域都會拿去訓練。保證正負樣本比例1:3

這樣得出若干個候選區(qū)域以及對應(yīng)的標記結(jié)果。

⑧預(yù)訓練(pre-training)

CNN模型層數(shù)多,模型的容量大,通常會采用2012年的著名網(wǎng)絡(luò)AlexNet來學習特征,包含5個卷積層和2個全連接層, 利用大數(shù)據(jù)集訓練一個分類器,比如著名的ImageNet比賽的數(shù)據(jù)集,來訓練AlexNet,保存其中的模型參數(shù)。

⑨ 微調(diào)(fine-tuning)

AlexNet是針對ImageNet訓練出來的模型,卷積部分可以作為一個好的特征提取器,后面的全連接層可以理解為 一個好的分類器。R-CNN需要在現(xiàn)有的模型上微調(diào)卷積參數(shù)。將第一步中得到的樣本進行尺寸變換,使得大小一致,然后作為預(yù)訓練好的網(wǎng)絡(luò)的輸入,繼續(xù)訓練網(wǎng)絡(luò)(遷移學習)

SVM分類器:

針對每個類別訓練一個SVM的二分類器。舉例:貓的SVM分類器,輸入維度是2000 4096,目標還是之前第一步標記是否屬于該類別貓,訓練結(jié)果是得到SVM的權(quán)重矩陣W,W的維度是409620。

bbox回歸器訓練:

只對那些跟ground truth的IoU超過某個閾值且IOU最大的region proposal回歸,其余的region proposal不參與

R-CNN測試過程

輸入一張圖像,利用selective search得到2000個region proposal。對所有region proposal變換到固定尺寸并作為已訓練好的CNN網(wǎng)絡(luò)的輸入,每個候選框得到的4096維特征采用已訓練好的每個類別的svm分類器對提取到的特征打分,所以SVM的weight matrix是4096 N,N是類別數(shù),這里一共有20個SVM, 得分矩陣是200020采用non-maximun suppression(NMS)去掉候選框第上一步得到region proposal進行回歸。

R-CNN流程總結(jié)

表現(xiàn)
在VOC2007數(shù)據(jù)集上的平均精確度達到66%

瓶頸:
1、訓練階段多:步驟繁瑣: 微調(diào)網(wǎng)絡(luò)+訓練SVM+訓練邊框回歸器。

2、訓練耗時:占用磁盤空間大:5000張圖像產(chǎn)生幾百G的特征文件。(VOC數(shù)據(jù)集的檢測結(jié)果,因為SVM的存在)

3、處理速度慢: 使用GPU, VGG16模型處理一張圖像需要47s。

4、圖片形狀變化:候選區(qū)域要經(jīng)過crop/warp進行固定大小,無法保證圖片不變形

總結(jié)

以上是生活随笔為你收集整理的R-CNN算法原理的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。