您好,登錄后才能下訂單哦!
本篇文章給大家分享的是有關(guān)如何實(shí)現(xiàn)深度學(xué)習(xí)OpenCV對(duì)象檢測(cè)中的Faster-RCNN圖片識(shí)別,小編覺(jué)得挺實(shí)用的,因此分享給大家學(xué)習(xí),希望大家閱讀完這篇文章后可以有所收獲,話不多說(shuō),跟著小編一起來(lái)看看吧。
Faster-RCNN圖片識(shí)別
Faster-RCNN對(duì)象檢測(cè)算法是R-CNN對(duì)象檢測(cè)的第三個(gè)版本算法,其前面還有Fast-RCNN與RCNN算法,由于R-CNN無(wú)法實(shí)現(xiàn)End-to-End訓(xùn)練,F(xiàn)ast R-CNN Selective Search耗時(shí)比較長(zhǎng)等原因,作者在此2版的基礎(chǔ)上,更新到了Faster-RCNN對(duì)象檢測(cè)算法。
對(duì)象檢測(cè)
從下方結(jié)構(gòu)圖可以看出:Faster-RCNN對(duì)象檢測(cè)算法將特征提取、proposal提取、Bounding Box Regression、Classification整合到一個(gè)網(wǎng)絡(luò)中,對(duì)象檢測(cè)速度不僅有了提示還避免了前2個(gè)版本的缺點(diǎn)。
Faster R-CNN
1、特征提取(convolutional layer):Faster R-CNN使用卷積+relu+pooling池化層提取被檢測(cè)對(duì)象的特征。
2、區(qū)域預(yù)測(cè)網(wǎng)絡(luò)(Region Proposal Network):RPN通過(guò)softmax函數(shù)判斷錨點(diǎn)(anchors)屬于某個(gè)特征,再利用邊界框回歸(bounding box regression)修正anchors獲得精確的對(duì)象檢測(cè)值。
3、目標(biāo)區(qū)池化(Roi Pooling):收集輸入的特征數(shù)據(jù)和候選目標(biāo)區(qū)域,利用此層信息提取目標(biāo)區(qū)域特征數(shù)據(jù),然后全連接層識(shí)別圖片。
4、分類(Classification):利用目標(biāo)區(qū)域特征數(shù)據(jù)計(jì)算太識(shí)別圖片,同時(shí)利用邊界框回歸獲得對(duì)象檢測(cè)的精確位置。
Faster R-CNN流程圖
如何來(lái)實(shí)現(xiàn)Faster R-CNN,以及Faster R-CNN的具體工作是如何實(shí)現(xiàn)的,小編也參考了很多網(wǎng)友的源碼,無(wú)奈代碼量太大(少的也得幾千行),我們前期分享了如何使用opencv與MobileNet SSD的圖像識(shí)別以及視頻實(shí)時(shí)識(shí)別
MobileNet SSD視頻流實(shí)時(shí)識(shí)別
MobileNet SSD圖像識(shí)別
同樣使用opencv也可以來(lái)實(shí)現(xiàn)Faster R-CNN的對(duì)象檢測(cè)算法,很多代碼都比較類似,小伙伴們也可以參考往期文章
Faster R-CNN prototxt 與Faster R-CNN model模型已經(jīng)共享:
回復(fù):RCNN 即可領(lǐng)取
模型一共2種:
faster_rcnn_inception_v2與faster_rcnn_resnet50,2種模型是在不同的訓(xùn)練集上訓(xùn)練的數(shù)據(jù),其中faster_rcnn_inception_v2模型較小,速度較快,本期按照此模型來(lái)搭建對(duì)象檢測(cè),其faster_rcnn_resnet50模型跟faster_rcnn_inception_v2模型的代碼完全一致,只是修改一下模型的路徑便可
在本節(jié)中,我們將使用 OpenCV中的深度神經(jīng)網(wǎng)絡(luò)( dnn)模塊與Faster R-CNN prototxt 與Faster R-CNN model來(lái)構(gòu)建我們的對(duì)象檢測(cè)器
1、模型以及第三方庫(kù)
模型以及第三方庫(kù)
首先導(dǎo)入模型以及模型參數(shù),若使用faster_rcnn_resnet50模型, 12 、13行直接修改為faster_rcnn_resnet50模型的相對(duì)地址
2、定義模型識(shí)別類型
定義模型識(shí)別類型
Faster R-CNN模型相比SSD來(lái)說(shuō),能夠識(shí)別的種類,豐富了很多,大概有100個(gè)種類,幾乎包含了生活中所能涉及的種類,當(dāng)然,若你有強(qiáng)大的數(shù)據(jù)支撐,也可以來(lái)訓(xùn)練自己的模型(后期分享如何來(lái)訓(xùn)練自己的模型)
3、opencv建立神經(jīng)網(wǎng)絡(luò)
opencv建立神經(jīng)網(wǎng)絡(luò)
對(duì)比51 、52行可以知道,SSD模型是在caffe上訓(xùn)練的模型,而Faster R-CNN模型是tensorflow上訓(xùn)練的模型,但是強(qiáng)大的opencv庫(kù)使用dnn函數(shù)就能很方便的加載預(yù)訓(xùn)練模型,且可以對(duì)比看出,其模型與參數(shù)文件前后有區(qū)別
4、計(jì)算blob,進(jìn)行神經(jīng)網(wǎng)絡(luò)的預(yù)測(cè)
計(jì)算blob,進(jìn)行神經(jīng)網(wǎng)絡(luò)的預(yù)測(cè)
獲取圖片的長(zhǎng)寬參數(shù),重新調(diào)整圖片長(zhǎng)寬為300*300,來(lái)進(jìn)行圖片blob的計(jì)算,然后blob傳入神經(jīng)網(wǎng)絡(luò)來(lái)進(jìn)行計(jì)算,使用前向傳播來(lái)預(yù)測(cè)圖片
5、遍歷預(yù)測(cè)值,提取設(shè)置閾值的對(duì)象
遍歷預(yù)測(cè)值,提取設(shè)置閾值的對(duì)象
以上就是如何實(shí)現(xiàn)深度學(xué)習(xí)OpenCV對(duì)象檢測(cè)中的Faster-RCNN圖片識(shí)別,小編相信有部分知識(shí)點(diǎn)可能是我們?nèi)粘9ぷ鲿?huì)見(jiàn)到或用到的。希望你能通過(guò)這篇文章學(xué)到更多知識(shí)。更多詳情敬請(qǐng)關(guān)注億速云行業(yè)資訊頻道。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。