APP下载

基于YOLOv7 的摄像机检测追踪系统设计与应用

2023-11-05周洪萍王金风徐周昰段永良

电视技术 2023年9期
关键词:摄像机目标算法

周洪萍,王金风,徐周昰,段永良

(1.南京传媒学院,江苏 南京 211172;2.西安交通大学,陕西 西安 710049)

0 引 言

摄像机是演播室或录影棚中的重要设备。对摄像机的位置进行有效的监测,可以更加方便有效地管理和调度现场的设备,保护录制现场的安全,提高工作效率,进而缩短拍摄与制作周期,降低节目制作的成本。然而,录影棚中的摄像机数量众多,人为进行检测追踪,需要大量的时间和精力。对此,本文设计一种摄像机检测追踪系统,能够对现场摄像机进行自动识别和追踪。工作过程中,摄像机往往会不断地调整位置、角度和焦距等参数,同时,灯光、阴影、反光等因素影响,对检测和识别算法提出了更高的要求。人工智能技术的发展为摄像机的检测提供了新的思路和技术手段,更有利于智能、高效地定位摄像机的位置,可以实现在演播室、录影棚、转播车甚至户外环境中都能实时监控检测摄像机的存在和移动,并跟踪摄像机的运动轨迹。实现人工智能在广播电视领域更高效的自动化应用,对广播电视领域有着特殊的意义和实用价值,对广播电视行业有着深远的影响。

1 目标检测相关技术

1.1 深度学习

深度学习(Deep Learning,DL)是机器学习(Machine Learning,ML)的一种,是利用深度神经网络来进行自动分类、预测和学习的技术,是人工智能技术的重要组成部分,也是人工智能的基础。DL 可以从海量的数据中自动学习,寻找数据中的特征。DL 模型主要基于反向传播算法进行训练,学习的是隐含在输入数据中的概率分布,并利用其来进行分类、回归、聚类等任务。由于神经网络中的神经元在结构上具有相互连接的特性,因此可以把神经网络看作是一个近似线性模型。为了降低参数调整和优化的难度,一般采用批处理学习方式进行训练,即将数据按照一定规则分成N个小块,将每一块数据作为输入,根据数据的特点选择一个或多个隐藏层进行学习。在图像处理领域,DL 算法将复杂的图像分解成各种特征,从中提取出所需要的信息,匹配相应的特征,将复杂的图像识别问题转换成简单的数学问题。因此,可以用DL 算法对复杂场景进行目标检测。

1.2 目标检测

基于DL 的目标检测能自动从图像或视频中识别出所需要检测的对象。这种技术需要训练一个深度神经网络来识别不同的目标,通常需要对数据进行充分的预处理和计算,以进行训练和优化。DL 模型的性能受许多因素的影响,包括数据集的大小、训练算法的选择等等。因此,在实际应用中,需要根据具体情况选择合适的方法,以达到最佳的性能。

基于DL 的目标检测方法通过深度神经网络自动从图像中学习目标的特征表示和目标类别的分类器,算法通常包括两个主要步骤。第一,算法会在输入图像中检测出一些可能包含目标的区域,这些区域被称为候选框;第二,分类器对这些候选框进行分类,判断它们是否包含特定的目标。常见的基于DL 的目标检测方法有YOLO(You Only Look Once,YOLO)、Faster R-CNN、SSD(Single Shot MultiBoxDetector,SSD)、RetinaNet 等。它们在检测任务中取得了很好的性能,能够自动学习目标的特征表示和分类器,具有更好的适应性,逐渐成为人们用来进行实验研究的重要技术[1]。

2 YOLO 模型

本实验使用YOLOv7 的目标检测算法来检测识别图片或视频中的摄像机。YOLO 是一种实时目标检测方法,在2015 年被提出,并不断进行改进和更新,先后分别有YOLOv1、YOLOv2、YOLOv3、YOLOv4、YOLOv5、YOLOv6、YOLOv7 及YOLOv8等版本。

YOLOv7 采用了一系列新的技术和策略,以提高目标检测的性能。YOLOv7 使用了更深的网络结构和更多的特征金字塔层,从而能够提供更高的检测精度,尤其是对于小目标的检测效果有了很大的改观。YOLOv7 使用了新的数据增强策略,包括马赛克(Mosaic)数据增强等方法,从而增强了模型的适应性,并且在训练速度方面也做了优化。通过改进的模型结构和训练策略,YOLOv7 能够在保持较高检测精度的同时加快训练速度,提高生产环境下的实时性。YOLOv7 具有很强的通用性,可以应用于多种目标检测场景,适用于各种不同规模和复杂度的数据集。

YOLOv7 的主要结构是REP,即repvgg_block模块。REP 模块分两部分,一部分是训练,另一部分是推理。训练模块分为3 个部分。最顶端的枝干是3×3 卷积,用来抽取特征;中间的支路是一个1×1 的卷积,用来对特征进行光滑处理;最终的分支是一个Identity,没有进行任何的卷积运算,而是直接移动过去,把它与上面的部分相加。推理模块由3×3 卷积、stride 组成[2]。

YOLOv7 中的Backbone 主要使用E-ELAN 网络,可任意对最短至最长之渐变路径进行控制,使较深层网络具有较高的学习效率与收敛性。E-ELAN 在ELAN 的基础上,通过expand、shuffle 等方式来实现功能,不会破坏原来的渐变路径。

YOLOv7 相对于其他目标检测算法的优势体现在检测速度快,可以实现在视频中实时、高精度地检测出目标,每秒钟可以处理数百帧图像。因此,用YOLOv7 进行检测系统的设计优势突出,有着极大的稳定性和广阔的应用场景。

3 数据集预处理

好的数据集可以提供多样化、真实、丰富的数据样本,包含不同的场景、光照、角度、尺寸及姿态的样本,能够使模型更加有利于实验。

数据集应该有准确的标注信息,且标注信息应该清晰、准确、全面,包含目标的位置、大小、形状等信息,可以让模型更好地学习和理解目标。此外,数据集中的样本数量越多,且足够多样,模型的训练效果就越好,泛化能力也越强。

一个优秀的数据集对于模型的提升效果是非常重要的,不仅可以提高模型的准确性和健壮性,而且可以提高模型的泛化能力,为实际应用提供更好的支持。本实验选取的数据是由网络上采集和实际拍摄的图片构成的,验证数据是现场拍摄和从网络获取的视频数据。样本数据集如图1 所示。使用LabelImg 工具对数据集进行标注[3]。

图1 样本数据集示例

YOLOv7 目标检测算法采用单阶段检测器的方式进行物体识别。其训练过程可以分为两个步骤。第一步,数据准备。需要收集好训练数据,包括训练图片和标注文件,其中标注文件采用标记图形文件的格式。在这个步骤中,将数据集按照9 ∶1 的比例划分为训练集和验证集。第二步,对模型进行选择和配置。本实验选择YOLOv7.pt 作为预训练模型,根据硬件环境选择合适的参数设置。设置batch_size 为12,img_size 选择640。数据集的num_classes 为1,将名称设置为camera。训练集如图2 所示。

图2 训练集示例

实验开始,使用训练集对模型进行训练,更新模型的参数。每次训练结束后,要对模型进行评估,进而调整模型参数,使其形成最好的数据模型。最后对选择好的模型进行保存和测试。训练完成后,可以将模型保存为.pt 文件,用验证集对数据进行测试,评估模型的各项性能。验证集如图3 所示。

4 马赛克数据增强

为了增加数据样本量、提高模型泛化能力,需要对训练数据进行增强,用来提升数据训练的效率。本实验采用Mosaic 数据增强方法。

Mosaic 数据增强是一种常用的高效处理数据的方法,基本思想是将多张不同的图片合并成一张大图,并随机裁剪出多个小图来进行训练,使形成的每张小图都覆盖大图的1/4 区域。在裁剪过程中,大图中的不同部分可能会组合成新的图像,从而丰富了训练数据,使得模型的效果越来越好。合成的Mosaic 图像通常包含多个目标、背景和目标之间的遮挡关系,能够使模型更好地学习复杂场景中的目标检测。Mosaic 数据增强还可以减少过拟合现象的发生,使模型的性能变得更好。Mosaic 数据增强的效果如图4 所示。

5 实验环境配置

本实验使用PyTorch 框架搭建YOLOv7 网络架构。PyTorch 的编程接口比较易于使用,能与Python编程语言很好地集成。它有一个简单直观的应用程序编程接口(Application Programming Interface,API),能够快速进行实验。配置CUDA、CUDNN、OpenCV 和Git 库,CUDA 库用来进行图形处理器(Graphics Processing Unit,GPU)加速,CUDNN 库用来加速深度神经网络训练和推理,OpenCV 库用于图像和视频处理,Git 库用来克隆存储库。

PyCharm 是一种集成开发环境,带有一整套可以帮助用户在使用Python 语言开发时提高效率的工具,如调试、语法高亮、项目管理、代码跳转、智能提示、自动完成、单元测试及版本控制等。使用Pycharm 工具编写Python 代码时,一般使用本地的Python 解释器。因此,需要下载、安装解释器,配置解释器后才能进行操作。

6 实验结果分析

通过YOLOv7 训练出的检测模型在实际拍摄的应用场景构建的数据集下精确率(Precision,P)、召回率(Recall,R)均超过0.95。这两个评价指标的计算公式为

式中:TP表示在识别出的目标中,样本的真实类别是正例,且模型预测的结果也是正例,预测正确;FP表示样本的真实类别是负例,但模型却将它预测成正例,预测出错;FN表示样本的真实类别是正例,但模型将它预测成负例,预测错误,代表漏检目标数量。Recall 指标从真实结果角度出发,描述了测试集中的真实正例有多少被二分类器召回[4]。

本实验为摄像机单类物体检测,因此Classification 分类损失均值、val Classification 验证集分类loss 均值都为0。实验的其他评价指标结果数据如图5 所示。图5(a)~图5(d)的纵坐标分别为Box loss 函数的均值、Objectness 目标检测loss 函数均值、val Box 验证集bounding box 的损失函数均值、val Objectness 验证集目标检测loss均值。这4 个函数值都是随着训练轮数的增加,取值越小越准确;图5(e)中纵坐标Precision 为精确率,即找对的正类占所有找到的正类的比例,本实验数据显示精确率为0.95,说明误检的情况少;图5(f)中纵坐标Recall 为召回率,即正样本有多少被召回来了,数据显示召回率为0.95,说明漏检的情况少;图5(g)、图5(h)中,纵坐标表示平均精度(mean Average Precision,mAP),是用Precision和Recall 两个指标作为两轴作图后围成的面积,即每个Recall 区间内只取这个区间内Precision 的最大值与这个区间长度做乘积,体现出来就是一系列矩形的面积,@后面的数字0.5 表示阈值大于0.5 的平均值,@0.5:0.95 表示阈值取0.5:0.05:0.95(0.5、0.55、0.6、0.65、0.7、0.75、0.8、0.85、0.9、0.95)上的均值,阈值越大,精度越低。从图5(g)、图5(h)可以看出,mAP@0.5 和mAP@0.5:0.95 波形波动不是很大,且数值接近于1,说明模型训练效果较好,结果检测精准,基本不会出现错检漏检的情况。

对视频中某一帧图片检测的结果如图6 所示。图6 中两台摄像机被检测出来且标注为camera,精度分别为0.95 和0.90。

图6 结果分析

实验结果表明,基于YOLOv7 的摄像机检测系统可以准确地识别出视频中摄像机的位置并标记出来,精确率和召回率都达到0.95,mAP@0.5 和mAP@0.5:0.95数值接近1,说明检测能力强,效果好。多次实验表明,如果想要实现更高精度的识别检测,可以将阈值设定得高一些,略过与摄像机相似的物体。如果背景比较杂乱并且和摄像机没有太大的区分度,可以将阈值调低些,这样视频中只要出现摄像机,基本都能将之识别并检测出来。此外,如果检测视频里的环境复杂,摄像机与背景有时候会出现融合交汇的情况,会导致视频中的摄像机检测不出来,或者会出现断断续续的被检测出的情况[5]。

7 结 语

本实验将YOLOv7 模型应用于摄像机检测,通过Mosaic 数据增强后训练出来的YOLOv7 模型的精确率和召回率达到0.95。系统适用于演播室或者录影棚等场景下的摄像机检测与管理,能更好地服务广播电视制播系统,提高了工作效率,还可以迁移到其他领域,如在视频监控、智能家居、自动驾驶等场景中使用,为各领域的目标检测技术发展提供参考。

猜你喜欢

摄像机目标算法
基于MapReduce的改进Eclat算法
Travellng thg World Full—time for Rree
进位加法的两种算法
摄像机低照成像的前世今生
新安讯士Q6155-E PTZ摄像机
一种改进的整周模糊度去相关算法
如何消除和缓解“摄像机恐惧症”
高清新阵营
新目标七年级(下)Unit 3练习(一)
新目标七年级(下)Unit 4练习(一)