上期文章,我们介绍了YOLOV4对象检测算法的模型以及基本知识,哪里还进行了图片的对象检测,如何使用YOLOV4进行视频检测与实时视频检测呢?毕竟我们绝大多数的需求必然是视频的实时对象检测
YOLOV4视频检测import numpy as np import time import cv2 import os labelsPath = &34; LABELS = None with open(labelsPath, &39;) as f: LABELS = f.read().rstrip(&39;).split(&34;) np.random.seed(42) COLORS = np.random.randint(0, 255, size=(len(LABELS), 3), dtype=&34;) weightsPath = &34; configPath = &34; net = cv2.dnn.readNetFromDarknet(configPath, weightsPath) ln = net.getLayerNames() ln = [ln[i[0] - 1] for i in net.getUnconnectedOutLayers()]首先加载模型在COCO数据集上的对象label,然后定义了随机的颜色,这里主要是为了后期检测到不同的对象时,采用不同的颜色边框进行标注
cv2.dnn.readNetFromDarknet(configPath, weightsPath)来加载YOLOV4的预训练模型,这里需要注意:opencv的版本需要时4.4版本
opencv4.4支持YOLOv4、EfficientDet检测模型,SIFT移至主库!
SIFT
支持谷歌目标检测算法 EfficientDet
EfficientDet检测模型
新增光流算法 FlowNet2 demo:
FlowNet2 demo
增加对OpenVINO 2020.3 LTS / 2020.4 支持
OpenVINO
由于opencv4.4支持了YOLOV4,因此我们可以使用opencv来实现YOLOV4的对象检测
代码截图
截取视频帧进行神经网络检测39;videos/a1.mp4&39;ok&39;ok&34;int&34;{}: {:.4f}&34;Image&34;q&39;&39; if writer is None: 34;MJPG&34;videos/123.avi&39;&39; vs.release() cv2.destroyAllWindows()为什么需要非最大抑制,因为YOLO系列对多个临近的对象检测会出3个以上的对象检测框,这些我们只需要提取边框最大,概率最大的那个对象
无最大抑制检测图形
当没有非最大值抑制时,可以看出,神经网络在同一个对象上会有多个框,每个框都带有分类器的得分,这些并不是我们需要的。
使用非最大值抑制来提取最大的检测边框以及得分,并把边框与分类ID以及置信度实时显示到屏幕上,最后,若想退出程序,可以直接输入字母q
代码截图
视频对象检测保存视频 if writer is None: 34;MJPG&34;videos/123.avi&39;videos/a1.mp4&39;I&39;4&39;2&39;0&39;P&39;I&39;M&39;1&39;X&39;V&39;I&39;D&39;T&39;H&39;E&39;O&39;F&39;L&39;V&39;1')---FLV是FLASH VIDEO的简称,FLV流媒体格式是一种新的视频格式。文件扩展名为.flv。这里需要特别注意,选择的视频编码格式与要保存的视频后缀要保持一致,以上编码格式请参考,小编首次运行时,保存的视频是MP4格式,一直报错,通过搜索资料,才发现是由于保存的视频后缀有问题。参数中的30是视频的帧30FPS。
本站所发布的文字与图片素材为非商业目的改编或整理,版权归原作者所有,如侵权或涉及违法,请联系我们删除
热门信息
阅读 ()
1 注册微信号怎么注册第二个阅读 ()
2 怎么把照片变成卡通头像阅读 ()
3 手机越充越少电怎么解决