OpenCV自带dnn的Example研究(3)— object_detection
生活随笔
收集整理的這篇文章主要介紹了
OpenCV自带dnn的Example研究(3)— object_detection
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
這個博客系列,簡單來說,今天我們就是要研究https://docs.opencv.org/master/examples.html下的6個文件,看看在最新的OpenCV中,它們是如何發揮作用的。在配置使用的過程中,需要注意使用較高版本的VS避免編譯器兼容問題;由于DNN程序的運行依賴于訓練成功的模型,因此需要預先下載準備;此外如果出現各種報錯,需要對癥下藥。此外,由于需要使用common.hpp文件,所以需要引入dnn目錄到include中用到的數據集都放在:鏈接:https://pan.baidu.com/s/1WPoXU3VodErPHZo6Yc21xA?提取碼:01no?如果你沒找到,那一定是我忘了。=====================================================================================友善的分割線============================注意,這個例子有官方教程:https://docs.opencv.org/master/da/d9d/tutorial_dnn_yolo.html教程給出了調用方法:
參考這個 方法,修改我們的調用參數
--config=e:/template/yolov3.cfg --model=e:/template/yolov3.weights --classes=e:/template/object_detection_classes_pascal_voc.txt --width=416 --height=416 --scale=0.00392 --input=e:/template/bike.avi --rgb
??所以我們需要先準備的是yolo.weights 和 yolo.cfg,wget https://pjreddie.com/media/files/yolov3.weights
wget https://github.com/pjreddie/darknet/blob/master/cfg/yolov3.cfg?raw=true -O ./yolov3.cfg
wget https://github.com/pjreddie/darknet/blob/master/data/coco.names?raw=true -O ./coco.names
對象識別是CV和DL的經典問題,看看OpenCV自己提供了什么。本來我使用的是OpenCV4,但是例子代碼使用的是最新從網上下載的,開頭直接給報了個錯根據我多年程序設計的經驗(其實是瞎猜),我認為是不是我的OpenCV版本低了,感覺更新到最新版本(這里注意一下,對于vs2015和2017,opencv提供了prebuild版本,比如叫opencv-4.1.0-vc14_vc15.exe這樣的名字,可以從官網直接下載)注意prebuild是64位的,需要注意選擇。然后就可以了,當然由于參數問題,仍然是需要進行修改的。(果然猜對了)因為已經出現了能夠正確運行的命令行,所以這里直接修改即可。將汽車識別成bird肯定是錯誤的,但是object detection和class的區別在于跟蹤,從顯示的結果上來看,就是畫框。
這個地方,就體現出了OpenCV DNN的黑盒特性,就是模型訓練中的東西,可能是效果非常好的,也可能是效果不好的。對這塊的調節,不是OpenCV的工作,而是深度學習系統的工作—不管它是用什么訓練出來的,我們都希望OpenCV能夠提供一個接入現有系統的接口。在深度學習這里,這才是OpenCV的價值。
參考資料:https://blog.csdn.net/haoqimao_hard/article/details/82081285
來自為知筆記(Wiz)
Usage examples
Execute in webcam:
$ example_dnn_object_detection --config=[PATH-TO-DARKNET]/cfg/yolo.cfg --model=[PATH-TO-DARKNET]/yolo.weights --classes=object_detection_classes_pascal_voc.txt --width=416 --height=416 --scale=0.00392 --rgbExecute with image or video file:
$ example_dnn_object_detection --config=[PATH-TO-DARKNET]/cfg/yolo.cfg --model=[PATH-TO-DARKNET]/yolo.weights --classes=object_detection_classes_pascal_voc.txt --width=416 --height=416 --scale=0.00392 --input=[PATH-TO-IMAGE-OR-VIDEO-FILE] --rgb參考這個 方法,修改我們的調用參數
--config=e:/template/yolov3.cfg --model=e:/template/yolov3.weights --classes=e:/template/object_detection_classes_pascal_voc.txt --width=416 --height=416 --scale=0.00392 --input=e:/template/bike.avi --rgb
??所以我們需要先準備的是yolo.weights 和 yolo.cfg,wget https://pjreddie.com/media/files/yolov3.weights
wget https://github.com/pjreddie/darknet/blob/master/cfg/yolov3.cfg?raw=true -O ./yolov3.cfg
wget https://github.com/pjreddie/darknet/blob/master/data/coco.names?raw=true -O ./coco.names
對象識別是CV和DL的經典問題,看看OpenCV自己提供了什么。本來我使用的是OpenCV4,但是例子代碼使用的是最新從網上下載的,開頭直接給報了個錯根據我多年程序設計的經驗(其實是瞎猜),我認為是不是我的OpenCV版本低了,感覺更新到最新版本(這里注意一下,對于vs2015和2017,opencv提供了prebuild版本,比如叫opencv-4.1.0-vc14_vc15.exe這樣的名字,可以從官網直接下載)注意prebuild是64位的,需要注意選擇。然后就可以了,當然由于參數問題,仍然是需要進行修改的。(果然猜對了)因為已經出現了能夠正確運行的命令行,所以這里直接修改即可。將汽車識別成bird肯定是錯誤的,但是object detection和class的區別在于跟蹤,從顯示的結果上來看,就是畫框。
這個地方,就體現出了OpenCV DNN的黑盒特性,就是模型訓練中的東西,可能是效果非常好的,也可能是效果不好的。對這塊的調節,不是OpenCV的工作,而是深度學習系統的工作—不管它是用什么訓練出來的,我們都希望OpenCV能夠提供一個接入現有系統的接口。在深度學習這里,這才是OpenCV的價值。
參考資料:https://blog.csdn.net/haoqimao_hard/article/details/82081285
來自為知筆記(Wiz)
附件列表
?
轉載于:https://www.cnblogs.com/jsxyhelu/p/10792731.html
總結
以上是生活随笔為你收集整理的OpenCV自带dnn的Example研究(3)— object_detection的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: windows系统作为客户端时,linu
- 下一篇: 《GTASA重制版》全秘籍作弊码一览 G