据说,现在很多小区都上线了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章,介绍神经网络与深度神经网络的基本原理与编程实战,并提供了不同深度学习模型的部署示例代码。

本书基本聚焦于机器学习在计算机视觉领域的应用,不要求读者具有相应的知识背景,在必要时书中会介绍相关的基本概念。因此,本书既可以作为相关专业学生的实验教材,也可以作为研究人员或工程技术人员的参考资料。

▊ 福利时间

在文末留言区¹推荐一篇近期你认为不错的计算机视
觉相关论文,包含论文题目及地址,例如
题目:PP-YOLOv2: A Practical Object Detector地址:https://arxiv.org/abs/2104.10419
²再谈谈你自己的机器学习的学习方法及经验,5 月
4 月 29 日 17 点前,CV君将从中选择 5 位(由CV君确定)留言最走心,为大家提供帮
助、指点迷津的粉丝赠送正版图书 1 本(在其他公众号已获赠本书者重复参加无效)。未中奖的读者,也可以进入小程序购买 :

YOLOv4 | 用C++ 和OpenCV 实现视频目标检测相关推荐

  1. 用C++ 和OpenCV 实现视频目标检测(YOLOv4模型)

    点击上方"视学算法",选择加"星标"或"置顶" 重磅干货,第一时间送达 据说,现在很多小区都上线了AI抓拍高空抛物的黑科技,可以自动分析抛物 ...

  2. OpenCV+yolov2-tiny实现目标检测(C++)

    OpenCV+yolov2-tiny实现目标检测(C++) 目标检测算法主要分为两类:一类是基于Region Proposal(候选区域)的算法,如R-CNN系算法(R-CNN,Fast R-CNN, ...

  3. Google又放大招:高效实时实现视频目标检测 | 技术头条

    点击上方↑↑↑蓝字关注我们~ 「2019 Python开发者日」,购票请扫码咨询 ↑↑↑ 作者 | 陈泰红,算法工程师,研究方向为机器学习.图像处理 来源 | 极市平台(ID:extrememart) ...

  4. 融合视频目标检测与单目标、多目标跟踪,港中文开源一体化视频感知平台 MMTracking...

    点击上方"3D视觉工坊",选择"星标" 干货第一时间送达 编辑丨机器之心 魔王 香港中文大学多媒体实验室(MMLab)OpenMMLab 开源一体化视频目标感知 ...

  5. 视频目标检测跟踪--Detect to Track and Track to Detect

    Detect to Track and Track to Detect ICCV2017 https://github.com/feichtenhofer/detect-track ​​​​ 本文针对 ...

  6. 【北大微软】用于视频目标检测的记忆增强的全局-局部聚合

    关注上方"深度学习技术前沿",选择"星标公众号", 资源干货,第一时间送达! 北大&MSRA,入选 CVPR 2020,ImageNet VID SOT ...

  7. DL之Yolov3:基于深度学习Yolov3算法实现视频目标检测之对《我要打篮球》视频段进行实时目标检测

    DL之Yolov3:基于深度学习Yolov3算法实现视频目标检测之对<我要打篮球>视频段进行实时目标检测 目录 输出结果 设计思路 核心代码 相关文章 成功解决AttributeError ...

  8. DL之Yolov3:基于深度学习Yolov3算法实现视频目标检测之对《俄罗斯总统普京对沙特王储摊的“友好摊手”瞬间—东道主俄罗斯5-0完胜沙特》视频段实时检测

    DL之Yolov3:基于深度学习Yolov3算法实现视频目标检测之对<俄罗斯总统普京对沙特王储摊的"友好摊手"瞬间-东道主俄罗斯5-0完胜沙特>视频段实时检测 导读   ...

  9. python简单目标检测代码_Python Opencv实现单目标检测的示例代码

    一 简介 目标检测即为在图像中找到自己感兴趣的部分,将其分割出来进行下一步操作,可避免背景的干扰.以下介绍几种基于opencv的单目标检测算法,算法总体思想先尽量将目标区域的像素值全置为1,背景区域全 ...

最新文章

  1. Request header field token is not allowed by Access-Control-Allow-Headers in
  2. 图像识别落地机会最多 腾讯全面输出视觉AI
  3. Oracle 用数据泵导入导出数据
  4. Serverless:为我们到底带来了什么
  5. Java 求一批数的绝对值
  6. 【风控系统】风控中心—京东基于Spark的风控系统架构实践和技术细节
  7. python decorator ssh_Python库现后门 可窃取用户SSH信息
  8. vmware workstation虚拟机开机一直黑屏解决方案
  9. INV标准报表+INVARAAS.rdf -- ABC分配报表
  10. java url 本地文件是否存在_我的应用程序知道URL中是否存在文件会一直停止[重复]...
  11. 基于 IOCP 的通用异步 Windows Socket TCP 高性能服务端组件的设计与实现
  12. swagger 扫描java文档_使用Javadocs生成Swagger文档
  13. SpringMVC的Model、Model Map、ModelAndView
  14. C++ 把引用作为函数参数
  15. gitblit如何迁移入gitlab合并迁移_最新gitlab备份迁移方案
  16. appleId登录java
  17. 数据库实验八 触发器实验
  18. built a JNCIS LAB系列:Chapter 2 OSPF v1.0
  19. 1. 从WordPress搬家到网易博客!
  20. javascript根据单元格内容动态合并相同内容单元格

热门文章

  1. Hibernate框架 配置文件基本架构
  2. CV之Haar特征描述算子-人脸检测
  3. 高精度加法(A+BProblemII)
  4. 分解质因数(优中再优化)
  5. 小程序【笔记002】逻辑层简介
  6. 为什么虚拟机上一运行就显示程序停止_五分钟学Java:如何学习Java面试必考的JVM虚拟机...
  7. php 非侵入式,Tideways和xhgui打造PHP非侵入式监控平台
  8. eclips图片为什么显示不了_为什么要定制工业平板电脑?定制工业平板电脑的七大理由...
  9. 对pca降维后的手写体数字图片数据分类_知识干货-机器学习-TSNE数据降维
  10. put多文件上传linux,linux 上传lftp 服务器