5步實現深度學習OpenCV物件檢測:Faster-RCNN圖片識別

AIBigbull2050發表於2019-09-12
  2019-09-12 06:39:48
5步實現深度學習OpenCV物件檢測:Faster-RCNN圖片識別

Faster-RCNN圖片識別

Faster-RCNN物件檢測演算法是R-CNN物件檢測的第三個版本演算法,其前面還有Fast-RCNN與RCNN演算法,由於R-CNN無法實現End-to-End訓練,Fast R-CNN Selective Search耗時比較長等原因,作者在此2版的基礎上,更新到了Faster-RCNN物件檢測演算法。

5步實現深度學習OpenCV物件檢測:Faster-RCNN圖片識別

物件檢測

從下方結構圖可以看出:Faster-RCNN物件檢測演算法將特徵提取、proposal提取、Bounding Box Regression、Classification整合到一個網路中,物件檢測速度不僅有了提示還避免了前2個版本的缺點。

5步實現深度學習OpenCV物件檢測:Faster-RCNN圖片識別

Faster R-CNN

Faster R-CNN物件檢測流程:

1、特徵提取(convolutional layer):Faster R-CNN使用卷積+relu+pooling池化層提取被檢測物件的特徵。

2、區域預測網路(Region Proposal Network):RPN通過softmax函式判斷錨點(anchors)屬於某個特徵,再利用邊界框迴歸(bounding box regression)修正anchors獲得精確的物件檢測值。

3、目標區池化(Roi Pooling):收集輸入的特徵資料和候選目標區域,利用此層資訊提取目標區域特徵資料,然後全連線層識別圖片。

4、分類(Classification):利用目標區域特徵資料計算太識別圖片,同時利用邊界框迴歸獲得物件檢測的精確位置。

5步實現深度學習OpenCV物件檢測:Faster-RCNN圖片識別

Faster R-CNN流程圖

如何來實現Faster R-CNN,以及Faster R-CNN的具體工作是如何實現的,小編也參考了很多網友的原始碼,無奈程式碼量太大(少的也得幾千行),我們前期分享瞭如何使用opencv與MobileNet SSD的影像識別以及視訊實時識別

MobileNet SSD視訊流實時識別

MobileNet SSD影像識別

同樣使用opencv也可以來實現Faster R-CNN的物件檢測演算法,很多程式碼都比較類似,小夥伴們也可以參考往期文章

使用OpenCV進行基於Faster R-CNN 深度學習的物件檢測

Faster R-CNN  prototxt 與Faster R-CNN  model模型已經共享:

回覆:RCNN  即可領取

模型一共2種:

faster_rcnn_inception_v2與faster_rcnn_resnet50,2種模型是在不同的訓練集上訓練的資料,其中faster_rcnn_inception_v2模型較小,速度較快,本期按照此模型來搭建物件檢測,其faster_rcnn_resnet50模型跟faster_rcnn_inception_v2模型的程式碼完全一致,只是修改一下模型的路徑便可

在本節中,我們將使用 OpenCV中的深度神經網路( dnn)模組與Faster R-CNN  prototxt 與Faster R-CNN  model來構建我們的物件檢測器

1、模型以及第三方庫

5步實現深度學習OpenCV物件檢測:Faster-RCNN圖片識別

模型以及第三方庫

首先匯入模型以及模型引數,若使用faster_rcnn_resnet50模型, 12 、13行直接修改為faster_rcnn_resnet50模型的相對地址

2、定義模型識別型別

5步實現深度學習OpenCV物件檢測:Faster-RCNN圖片識別

定義模型識別型別

Faster R-CNN模型相比SSD來說,能夠識別的種類,豐富了很多,大概有100個種類,幾乎包含了生活中所能涉及的種類,當然,若你有強大的資料支撐,也可以來訓練自己的模型(後期分享如何來訓練自己的模型)

3、opencv建立神經網路

5步實現深度學習OpenCV物件檢測:Faster-RCNN圖片識別

opencv建立神經網路

對比51 、52行可以知道,SSD模型是在caffe上訓練的模型,而Faster R-CNN模型是tensorflow上訓練的模型,但是強大的opencv庫使用dnn函式就能很方便的載入預訓練模型,且可以對比看出,其模型與引數檔案前後有區別

4、計算blob,進行神經網路的預測

5步實現深度學習OpenCV物件檢測:Faster-RCNN圖片識別

計算blob,進行神經網路的預測

獲取圖片的長寬引數,重新調整圖片長寬為300*300,來進行圖片blob的計算,然後blob傳入神經網路來進行計算,使用前向傳播來預測圖片

5、遍歷預測值,提取設定閾值的物件

5步實現深度學習OpenCV物件檢測:Faster-RCNN圖片識別

遍歷預測值,提取設定閾值的物件

此部分跟SSD物件檢測程式碼完全一致,小夥伴們可參考往期文章,此模型需要載入在opencv3.4.2版本以上。

關於此程式碼如何利用在視訊檢測上,如何通過多程式來加速神經網路,請參考往期文章

深度學習和OpenCV物件檢測(MobileNet SSD多程式視訊流實時識別)

https://www.toutiao.com/a6734307514646528523/

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69946223/viewspace-2656898/,如需轉載,請註明出處,否則將追究法律責任。

相關文章