又又又送書(shū)啦!用C++ 和OpenCV 實(shí)現(xiàn)視頻目標(biāo)檢測(cè)(YOLOv4模型)

據(jù)說(shuō),現(xiàn)在很多小區(qū)都上線了AI抓拍高空拋物的黑科技,可以自動(dòng)分析拋物軌跡,用來(lái)協(xié)助檢查很多不文明行為。
你想不想知道,這類檢測(cè)視頻中目標(biāo)物的黑科技是怎么實(shí)現(xiàn)的呢?
雖然不同場(chǎng)景下的目標(biāo)檢測(cè)模型訓(xùn)練不同,但底層技術(shù)都是一樣的。
這里就一步步來(lái)教一下大家如何用C++ 和OpenCV 實(shí)現(xiàn)視頻目標(biāo)檢測(cè)(YOLOv4模型)。
1. 實(shí)現(xiàn)思路
讀取視頻流,載入模型,執(zhí)行推理,找出所有目標(biāo)及其位置,最后繪制檢測(cè)結(jié)果。
2. 實(shí)現(xiàn)步驟
讀取攝像頭視頻流或本地視頻文件:
cv::VideoCapture cap;cap.open(0); //打開(kāi)攝像頭//cap.open("TH1.mp4"); //讀取視頻文件
載入模型:
cv::dnn::Net net = cv::dnn::readNet(config, model, framework);net.setPreferableTarget(cv::dnn::DNN_TARGET_CUDA);
執(zhí)行推理:
net.forward(outs, outNames); //前向傳播找出所有目標(biāo)及其位置:
for (size_t i = 0; i < outs.size(); ++i) {data = (float*)outs[i].data;for (int j = 0; j < outs[i].rows; ++j, data += outs[i].cols){scores = outs[i].row(j).colRange(5, outs[i].cols);cv::minMaxLoc(scores, 0, &confidence, 0, &classIdPoint);
繪制檢測(cè)結(jié)果:
void drawPred(cv::Mat &frame,vector<cv::Rect> &boxes,vector<int> &classIds,vector<int> &indices,vector<string> &classNamesVec)

(a)測(cè)試圖1YOLOv4

(b)測(cè)試圖1YOLOv4-tiny

(c)測(cè)試圖2YOLOv4

(d)測(cè)試圖2YOLOv4-tiny
圖 YOLOv4與YOLOv4-tiny模型的檢測(cè)結(jié)果
3. 總結(jié)
YOLOv4的檢測(cè)精度優(yōu)于YOLOv4-tiny。經(jīng)GPU 加速后,模型推理速度明顯提升,YOLOv4 的推理速度提高了約10倍,YOLOv4-tiny的推理速度提高了約4.8倍。
若想了解更多關(guān)于視頻檢測(cè)或文本檢測(cè)的內(nèi)容,可以閱讀《OpenCV 4機(jī)器學(xué)習(xí)算法原理與編程實(shí)戰(zhàn)》一書(shū)。


▊《OpenCV 4機(jī)器學(xué)習(xí)算法原理與編程實(shí)戰(zhàn)》
朱斌 著
注重理論結(jié)合實(shí)戰(zhàn)
兼顧經(jīng)典與前沿算法
應(yīng)用案例翔實(shí)
學(xué)習(xí)路線清晰
本書(shū)主要面向OpenCV領(lǐng)域的研究與開(kāi)發(fā)人員,采用原理結(jié)合實(shí)戰(zhàn)的方式,介紹OpenCV 4的機(jī)器學(xué)習(xí)算法模塊與深度神經(jīng)網(wǎng)絡(luò)模塊中的核心算法原理與C++編程實(shí)戰(zhàn)。全書(shū)共10章, 第1~3章, 介紹OpenCV 4的基礎(chǔ)知識(shí)、基本圖像操作和機(jī)器學(xué)習(xí)基礎(chǔ)知識(shí);第4~8章,介紹K-means、KNN、決策樹(shù)、隨機(jī)森林、Boosting算法和支持向量機(jī)等機(jī)器學(xué)習(xí)算法與編程實(shí)戰(zhàn);第9~10章,介紹神經(jīng)網(wǎng)絡(luò)與深度神經(jīng)網(wǎng)絡(luò)的基本原理與編程實(shí)戰(zhàn),并提供了不同深度學(xué)習(xí)模型的部署示例代碼。
本書(shū)基本聚焦于機(jī)器學(xué)習(xí)在計(jì)算機(jī)視覺(jué)領(lǐng)域的應(yīng)用,不要求讀者具有相應(yīng)的知識(shí)背景,在必要時(shí)書(shū)中會(huì)介紹相關(guān)的基本概念。因此,本書(shū)既可以作為相關(guān)專業(yè)學(xué)生的實(shí)驗(yàn)教材,也可以作為研究人員或工程技術(shù)人員的參考資料。
(掃碼了解本書(shū)詳情)
如果你對(duì)OpenCV領(lǐng)域感興趣
快在留言區(qū)大聲告訴我們
截止5月5日晚八點(diǎn)
留言獲贊數(shù)最高的五位同學(xué)各贈(zèng)一本
《OpenCV 4機(jī)器學(xué)習(xí)算法原理與編程實(shí)戰(zhàn)》
沒(méi)有抽中的粉絲不要?dú)怵H,掃描下方二維碼,快快來(lái)?yè)屬?gòu)吧。
▼點(diǎn)擊閱讀原文,獲取本書(shū)詳情~


