上一篇博文中講到如何用OpenCV實現物體分類,但是接下來這篇博文將會告訴你圖片中物體的位置具體在哪里。
我們將會知道如何使用OpenCV‘s的dnn模塊去加載一個預訓練的物體檢測網絡,它能使得我們將輸入圖像通過網絡並且獲得每個物體在圖像中的輸出位置。
最后我們將使用MobileNet Single Shot Detector在示例的輸入圖像中查看結果。下面給出具體的教程:
一 結合MobileNets and Single Shot Detectors實現更快更有效的基於物體檢測的深度學習
我們所使用的模型鏈接在github上,地址是:https://github.com/chuanqi305/MobileNet-SSD
我們可以在圖像中檢測20中物體(背景分類另外算一種),包括 airplanes, bicycles, birds, boats, bottles, buses, cars, cats, chairs, cows, dining tables, dogs, horses, motorbikes, people, potted plants, sheep, sofas, trains, and tv monitors.
二 結合OpenCV基於物體檢測的深度學習
在本節中我們將使用MobileNet SSD + deep neural network ( dnn )模塊在OpenCV中來建立我們的物體檢測模型。
打開一個新文件,命名為deep_learning_object_detection.py,並插入下列代碼:

然后我們解析下面的參數:
- --image : The path to the input image.
- --prototxt : The path to the Caffe prototxt file.
- --model : The path to the pre-trained model.
- --confidence : The minimum probability threshold to filter weak detections. The default is 20%.
接着,我們初始化分類標簽以及方框的顏色:
現在,我們需要加載我們的模型:
接下來,我們需要加載我們的圖像和准備我們的blob,我們會把它喂進到我們的網絡當中:
讓我們的物體檢測器循環直到能夠決定物體在圖像中是什么並且在哪里:
最后一步就是把我們的檢測結果顯示出來:
三 OpenCV和深度學習物體檢測結果
首先下載源代碼+預訓練的網絡模型+示例圖像,我等會會給出原文鏈接,直接進行“Downloads”模塊下填上你的郵箱后在郵箱中下載。
下載完成之后,解壓文件后在你的文件路徑下執行下面的命令:
$ python deep_learning_object_detection.py \
到此,你已經完成了你的物體檢測啦。
附上原文鏈接:https://www.pyimagesearch.com/2017/09/11/object-detection-with-deep-learning-and-opencv/
項目地址:https://github.com/wanglaotou/object-detection-deeplearning
版權聲明:
作者:王老頭
出處:http://www.cnblogs.com/wmr95/p/7641631.html
本文版權歸作者和博客園共有,歡迎轉載,但未經作者同意必須保留此段聲明,並在文章頁面明顯位置給出原文鏈接,否則,作者將保留追究法律責任的權利。