基于改进后深度学习算法模型的暴力行为视频流实时检测系统

目录

项目背景:

项目意义:

项目实现思路:

技术综述:

SENet通道注意力机制:

RTSP视频流检测硬件与软件:

数据采集:

数据标注:

模型参数设置:

SE注意力的添加:

消融实验:

优化前PR曲线展示:

优化后PR曲线展示:

消融实验:

检测效果展示:

GUI可视化界面展示:

总结:


项目背景:

随着城市化进程加速和人口密度提升,公共场所暴力事件频发,对社会秩序和公众安全构成严重威胁。传统安防手段依赖人工监控,存在效率低、实时性差、成本高等问题,难以应对全天候监控与即时预警需求。此外暴力行为形式多样,传统基于规则或手工特征提取的检测方法在复杂场景下易受光照变化、遮挡等因素干扰,导致误检和漏检。近年来计算机视觉与深度学习技术的融合为暴力检测提供了新思路。以YOLO系列为代表的目标检测算法在速度与精度上持续优化,可实现视频流中暴力行为的实时检测。如YOLOv8通过改进网络结构和训练策略,在保持高检测速度的同时,将平均精度提升至90%以上。此外,进一步增强了模型对复杂场景的适应能力。

项目意义:

基于深度学习的暴力检测系统可部署于监控摄像头、无人机等设备,实现24小时实时监测。例如,系统能在检测到打斗行为后自动触发警报并定位事件位置,为警方快速响应争取时间。实验表明,此类系统在校园、地铁站等场景的暴力行为识别准确率可达85%-95%,误报率低于5%,显著优于传统安防手段。暴力检测系统的开发不仅验证了YOLO等算法的工程价值,还促进了多技术融合。例如,结合目标检测与行为识别的混合模型,可分析连续视频帧中的动作序列,区分暴力与非暴力行为。本项目将详细介绍如何挑选模型并对原有模型进行算法优化,并调用监控摄像头的RTSP视频流进行实时的视频流检测。

项目实现思路:

使用YOLOV8模型作为项目的基准模型,使用SENet进行YOLOV8算法的优化,SE块是一种旨在通过使网络能够进行动态通道特征校准来改善网络表征能力的架构单元。广泛的实验表明了SENets的有效性,它们在多个数据集和任务上实现了最先进的性能。并且通过cv2.VideoCapture 逐帧读取RTSP视频流文件,实现视频流实时检测。

技术综述:

SENet通道注意力机制:

如下图所示是SE 模块的网络结构示意图。其给定一个输入 x,其特征通道数为 c_1,通过一系列卷积等一般变换后得到一个特征通道数为 c_2 的特征。与传统的 CNN 不一样的是,接下来通过三个操作来重标定前面得到的特征。

如下图所示,使用 global average pooling 作为 Squeeze 操作。紧接着两个 Fully Connected 层组成一个 Bottleneck 结构去建模通道间的相关性,并输出和输入特征同样数目的权重。我们首先将特征维度降低到输入的 1/16,然后经过 ReLu 激活后再通过一个 Fully Connected 层升回到原来的维度。这样做比直接用一个 Fully Connected 层的好处在于:1)具有更多的非线性,可以更好地拟合通道间复杂的相关性;2)极大地减少了参数量和计算量。然后通过一个 Sigmoid 的门获得 0~1 之间归一化的权重,最后通过一个 Scale 的操作来将归一化后的权重加权到每个通道的特征上。

RTSP视频流检测硬件与软件:

  • 由于项目需要,要在可视化界面查看监控摄像头的实时画面,需要购买支持RTSP协议输出视频流的监控摄像头(这里不做推荐,可自行搜索),监控摄像头拿到手后登录到摄像头管理后台(通过Ip地址访问)形式通常如一下所示:rtsp://username:password@<ipaddress>/<videotype>/ch<number>/<streamtype>具体情况根据自己自己摄像头进行修改。
  • 通过cv2.VideoCapture逐帧读取RTSP流,并在PyQt5的 QLabel中实时显示定义 video_start()方法中实现帧处理逻辑。停止检测时释放资源cap.release(),避免内存泄漏。如下图所示等相关的开发摄像头

数据采集:

本项目需要对不同的暴力行为进行识别和检测,所以在收集数据集、标注数据集的过程里我需要的是不同的暴力行为有关的图片,再将其整理成暴力行为种类图片数据集,整理完成后再见暴力行为种类特征图片进行数据清理,数据标注,数据标注图片的存放等等操作,为后期的训练做好数据集的准备。对于识别所需要的暴力行为类别,一共收集了4类不同暴力行为类型图片。如下图所示,是在各个搜索引擎上面,搜索这些暴力行为的图片,收集完暴力行为的图片后,将其整理在我的图片数据集下方,也就是在fight文件夹下方,随后我将其分成了训练集、验证集。

数据标注:

使用labelimg工具进行数据标注工作。 LabelImg支持在Windows、Linux和macOS等多个平台上运行,提供了广泛的兼容性,而labelimg作为一款开源的图像标注工具,标注出来的标签可用于分类和目标检测,LabelImg支持常见的数据标注格式,如Pascal VOC、YOLO、TFRecord等,使得用户可以根据自己的需求选择合适的标注格式。它允许用户在图像上框选并标注对象,生成相应的标注文件。其标注可以为机器学习和深度学习模型提供有监督学习所需的训练数据。如下图所示使用labelimg进行数据标注工作。

模型参数设置:

超参数的设置对模型性能有着重要影响。以下结合表格中的超参数值进行分析,使用epochs来充分学习数据特征。100个epochs适用于中等规模的数据集,能够在保证模型收敛的同时避免过拟合。较小的batch size有助于提高模型的泛化能力640x640的图像尺寸是一个常见的选择。较大的图像尺寸有助于检测小目标,但会增加计算负担。对于目标检测任务,640x640是一个平衡了精度和效率的尺寸。worker设置为2是数据加载的线程数设置为2,其适用于中等规模的数据集。如下表1所示为超参数设置表格。对优化前后模型都使用相同呃超参数的设置,避免不同的参数对模型的影响。

SE注意力的添加:

        1.首先定义SEAttention.py,如下图所示为SEAttention文件的代码展示。

        2.完成上方的YOLOV8模型主干网络添加SEAttention通道注意力机制模块代码后,然后在ultralytics/nn/tasks.py文件中,导入添加的SEAttention模块。并在对在ultralytics/nn/task.py中的parse_model函数进行修改,其作用是解析模型结构,在解析的地方添加如下图所示代码。

        3.创建SEAtt_yolov8.yaml文件,其作用是用于修改网络结构添加注意力,将SENet注意力添加到主干网络的最后一层中。加入SENet注意力机制再主干网络中。并对骨干网络进行调整,因为层数是从0开始数的,由于此处将SENet添加到了第10层,因此后面层数都发生了变化。10层以后的相关层数都需要加1如下图12所示。

消融实验:

优化前PR曲线展示:

优化后PR曲线展示:

消融实验:

如下表2所示为暴力检测算法模型优化前后参数对比图,如下图所示优化后的YOLOV8+SENet模型比basic YOLOV8模型整体精度高0.1个百分点。通过添加SENets通道注意力机制,使得对于暴力行为的检测的精度更高,其精度得到了提升。

检测效果展示:

如下图所示为暴力行为YOLOV8+SENet检测效果展示。

GUI可视化界面展示:

如下图所示加入RTSP检测按键,点击此按键后跳出RTSP输入框,输入监控摄像头的实时视频流链接即可链接摄像头进行实时的监控摄像头检测。

总结:

此项目针对暴力行为智能管控设计实现对监控摄像头中的暴力行为进行实时的检测并进行通报警报,本项目使用目标检测加RTSP视频流检测结合完成暴力行为的实时检测效果,使用YOLOV8模型作为基础模型,并通过使用SENet通道注意力机制对YOLOV8算法模型进行算法优化,最后是的该改进后的模型在相同数据集,设置相同超参数的情况下训练的模型MAP精度提高了0.1个百分点,最后通过设计GUI用户交互页面集成模型与视频流等功能进行可视化的检测。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值