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

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的圖像識別以及視頻實時識別

同樣使用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版本以上。

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


分享到:


相關文章: