用C++ 和OpenCV 实现视频目标检测(YOLOv4模型)
点击上方“视学算法”,选择加"星标"或“置顶”
重磅干货,第一时间送达
据说,现在很多小区都上线了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) {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);
绘制检测结果:
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章,介绍神经网络与深度神经网络的基本原理与编程实战,并提供了不同深度学习模型的部署示例代码。
本书基本聚焦于机器学习在计算机视觉领域的应用,不要求读者具有相应的知识背景,在必要时书中会介绍相关的基本概念。因此,本书既可以作为相关专业学生的实验教材,也可以作为研究人员或工程技术人员的参考资料。
(扫码了解本书详情)
如果喜欢本文
欢迎 在看丨留言丨分享至朋友圈 三连
点个在看 paper不断!
用C++ 和OpenCV 实现视频目标检测(YOLOv4模型)相关推荐
- YOLOv4 | 用C++ 和OpenCV 实现视频目标检测
据说,现在很多小区都上线了AI抓拍高空抛物的黑科技,可以自动分析抛物轨迹,用来协助检查很多不文明行为. 你想不想知道,这类检测视频中目标物的黑科技是怎么实现的呢? 虽然不同场景下的目标检测模型训练不同 ...
- OpenCV+yolov2-tiny实现目标检测(C++)
OpenCV+yolov2-tiny实现目标检测(C++) 目标检测算法主要分为两类:一类是基于Region Proposal(候选区域)的算法,如R-CNN系算法(R-CNN,Fast R-CNN, ...
- Google又放大招:高效实时实现视频目标检测 | 技术头条
点击上方↑↑↑蓝字关注我们~ 「2019 Python开发者日」,购票请扫码咨询 ↑↑↑ 作者 | 陈泰红,算法工程师,研究方向为机器学习.图像处理 来源 | 极市平台(ID:extrememart) ...
- 融合视频目标检测与单目标、多目标跟踪,港中文开源一体化视频感知平台 MMTracking...
点击上方"3D视觉工坊",选择"星标" 干货第一时间送达 编辑丨机器之心 魔王 香港中文大学多媒体实验室(MMLab)OpenMMLab 开源一体化视频目标感知 ...
- 视频目标检测跟踪--Detect to Track and Track to Detect
Detect to Track and Track to Detect ICCV2017 https://github.com/feichtenhofer/detect-track 本文针对 ...
- 【北大微软】用于视频目标检测的记忆增强的全局-局部聚合
关注上方"深度学习技术前沿",选择"星标公众号", 资源干货,第一时间送达! 北大&MSRA,入选 CVPR 2020,ImageNet VID SOT ...
- DL之Yolov3:基于深度学习Yolov3算法实现视频目标检测之对《我要打篮球》视频段进行实时目标检测
DL之Yolov3:基于深度学习Yolov3算法实现视频目标检测之对<我要打篮球>视频段进行实时目标检测 目录 输出结果 设计思路 核心代码 相关文章 成功解决AttributeError ...
- DL之Yolov3:基于深度学习Yolov3算法实现视频目标检测之对《俄罗斯总统普京对沙特王储摊的“友好摊手”瞬间—东道主俄罗斯5-0完胜沙特》视频段实时检测
DL之Yolov3:基于深度学习Yolov3算法实现视频目标检测之对<俄罗斯总统普京对沙特王储摊的"友好摊手"瞬间-东道主俄罗斯5-0完胜沙特>视频段实时检测 导读 ...
- python简单目标检测代码_Python Opencv实现单目标检测的示例代码
一 简介 目标检测即为在图像中找到自己感兴趣的部分,将其分割出来进行下一步操作,可避免背景的干扰.以下介绍几种基于opencv的单目标检测算法,算法总体思想先尽量将目标区域的像素值全置为1,背景区域全 ...
最新文章
- ubuntu 用命令行设置chrome的proxy
- 小议Linux staging tree
- 如何使用HttpModule来实现我们日常的应用:
- MPEG(mpeg1,mpeg2,mpeg4) 与H264 QP值间 关系
- OpenShift 4 - 定制 RHCOS Linux的Kernal参数
- 图像算法三:【图像增强--空间域】图像平滑、中值滤波、图像锐化
- Matlab 学习笔记
- Tomcat异常:The Tomcat server configuration at\Servers\Tomcat v9.0 Server at localhost-c
- html如何根据tr自动换行,css实现表格td 自动换行样式
- 打开前端网页,使用npm run dev报错npm ERR! code ELIFECYCLE npm ERR! errno 1 npm ERR! gmall-admin@1.0.0 dev
- 2021年危险化学品经营单位主要负责人考试报名及危险化学品经营单位主要负责人新版试题
- 如何在PLSQL上使用Oracle
- 肝了一夜,用90行代码打造最强PDF转换器,word、PPT、excel、markdown、html一键转换...
- Wincc使用.net控件将锐浪报表Grid++Report6嵌入
- html入门圣思园视频,Java Web学习历程-(基于圣思园视频教程)
- ASO学习笔记整理——关键字优化步骤
- Google guava学习
- iOS逆向-支付宝基金之统计实时收益
- POI实现EXCEL单元格合并及边框样式
- 《数据结构C语言版》-栈的概念和栈的实现