據說,現在很多小區都上線了AI抓拍高空抛物的黑科技,可以自動分析抛物軌迹,用來協助檢查很多不文明行為。
你想不想知道,這類檢測視訊中目标物的黑科技是怎麼實作的呢?
雖然不同場景下的目标檢測模型訓練不同,但底層技術都是一樣的。
這裡就一步步來教一下大家如何用C++ 和OpenCV 實作視訊目标檢測(YOLOv4模型)。
1. 實作思路
讀取視訊流,載入模型,執行推理,找出所有目标及其位置,最後繪制檢測結果。
2. 實作步驟
讀取攝像頭視訊流或本地視訊檔案:
cv::VideoCapture cap;cap.open(0); //打開攝像頭//cap.open("TH1.mp4"); //讀取視訊檔案
載入模型:
cv::dnn::Net net = cv::dnn::readNet(config, model, framework);net.setPreferableTarget(cv::dnn::DNN_TARGET_CUDA);
執行推理:
net.forward(outs, outNames); //前向傳播
找出所有目标及其位置:
for (size_t i = 0; i < outs.size(); ++i) {float*)outs[i].data;for (int j = 0; j < outs[i].rows; ++j, data += outs[i].cols) {5, outs[i].cols);0, &confidence, 0, &classIdPoint);
繪制檢測結果:
void drawPred( cv::Mat &frame,vector<cv::Rect> &boxes,vector<int> &classIds,vector<int> &indices,vector<string> &classNamesVec)
(a)測試圖1YOLOv4
(b)測試圖1YOLOv4-tiny
(c)測試圖2YOLOv4
(d)測試圖2YOLOv4-tiny
圖 YOLOv4與YOLOv4-tiny模型的檢測結果
3. 總結
YOLOv4的檢測精度優于YOLOv4-tiny。經GPU 加速後,模型推理速度明顯提升,YOLOv4 的推理速度提高了約10倍,YOLOv4-tiny的推理速度提高了約4.8倍。
▼
若想了解更多關于視訊檢測或文本檢測的内容,可以閱讀《OpenCV 4機器學習算法原理與程式設計實戰》一書。
▊《OpenCV 4機器學習算法原理與程式設計實戰》
朱斌 著
- 注重理論結合實戰
- 兼顧經典與前沿算法
- 應用案例翔實
-
學習路線清晰
本書主要面向OpenCV領域的研究與開發人員,采用原理結合實戰的方式,介紹OpenCV 4的機器學習算法子產品與深度神經網絡子產品中的核心算法原理與C++程式設計實戰。全書共10章, 第1~3章, 介紹OpenCV 4的基礎知識、基本圖像操作和機器學習基礎知識;第4~8章,介紹K-means、KNN、決策樹、随機森林、Boosting算法和支援向量機等機器學習算法與程式設計實戰;第9~10章,介紹神經網絡與深度神經網絡的基本原理與程式設計實戰,并提供了不同深度學習模型的部署示例代碼。