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

据说,现在很多小区都上线了 AI 抓拍高空抛物的黑科技,可以自动分析抛物轨迹,用来协助检查很多不文明行为。
你想不想知道,这类检测视频中目标物的黑科技是怎么实现的呢?
虽然不同场景下的目标检测模型训练不同,但底层技术都是一样的。
这里就一步步来教一下大家如何用 C++ 和 OpenCV 实现视频目标检测(YOLOv4 模型)。
1. 实现思路
读取视频流,载入模型,执行推理,找出所有目标及其位置,最后绘制检测结果。
2. 实现步骤
读取摄像头视频流或本地视频文件:

载入模型:

执行推理:

找出所有目标及其位置:

绘制检测结果:


(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 章,介绍神经网络与深度神经网络的基本原理与编程实战,并提供了不同深度学习模型的部署示例代码。
本书基本聚焦于机器学习在计算机视觉领域的应用,不要求读者具有相应的知识背景,在必要时书中会介绍相关的基本概念。因此,本书既可以作为相关专业学生的实验教材,也可以作为研究人员或工程技术人员的参考资料。
评论