文末附完整项目下载链接

1.开发目的

近年来,电动车起火引发的高层建筑火灾事故频发,对公民生命财产及公共安全构成严重威胁。公安部《关于规范电动车停放充电加强火灾防范的通告》明令禁止在建筑公共区域(如共用走道、楼梯间、安全出口)停放电动车或为其充电。然而,受充电难、防盗等现实问题困扰,部分居民仍通过电梯将电动车运入楼内。这种违规行为蕴含着巨大安全隐患:电梯内空间狭小密闭,一旦电动车起火,火势将急速蔓延并产生高浓度有毒烟气,不仅直接威胁轿厢内乘员生命安全,更易引燃整栋建筑,导致灾难性后果。同时,密闭环境阻碍火烟扩散,极大增加了消防救援的复杂性与难度。
为有效保障居民安全、维护电梯运行秩序、规范电动车停放充电管理并提升城市治理效能,必须强化电动车入梯行为的监管措施。直面此监管痛点,本系统创新整合人工智能与计算机视觉技术,研发了一套高精度电动车电梯禁入识别系统。该系统成功克服了传统人工监管在时效性、覆盖范围及人力成本上的不足,实现了对电动车入梯行为的7x24小时全天候、自动化、智能化监测与预警。

2.系统功能简介

该系统主要包含以下功能:
(1)多角色用户注册、登录。
(2)可以对电动车进电梯行为进行识别,并把识别结果返回到前端界面上。
(3)支持通过前端页面对模型识别参数进行调整。
(4)系统支持图片识别、视频识别和摄像头识别。
系统功能效果演示视频如下:

电动车进电梯数据集 yolov8电动车进电梯行为识别系统

3.系统设计

3.1 系统设计流程

系统开发设计主要包含三个步骤:(1)数据集准备(2)模型训练(3)系统开发。首先准备电动车进电梯的图片数据集并利用labelimg标注软件对图片中的电动车进行标注,之后采用YOLO8目标检测网络对图片数据集进行训练,得到训练好的模型权重,最后编写模型推理代码并分别开发前端、后端,最终完成整套系统的开发。
在这里插入图片描述

3.2 数据集

使用的电动车进电梯图片数据集为自制数据集。数据集制作的具体步骤是,实地采集电梯内摄像头图片,共计5118张图片。然后使用labeling标注图片,将图片分为三类:电动车、人、自行车。数据集格式保存为YOLO格式,并按80%、20%的比例划分为训练集和验证集。数据集样张如下图所示。数据集涉及到的数据增强方法主要有以下几种:
(1)对原图做数据增强
①像素级:HSV增强、旋转、缩放、平移、剪切、透视、翻转等
②图片级:MixUp、Cutout、CutMix、Mosaic等
(2)对标签做同样的增强
①变换后的坐标偏移量
②防止标签坐标越界
除了上述最基本的数据增强方法外,还使用了 Mosaic 数据增强方法,其主要思想就是将4张图片进行随机裁剪、缩放后,再随机排列拼接形成一张图片,实现丰富数据集的同时,增加了小样本目标,提升网络的训练速度。在进行归一化操作时会一次性计算4张图片的数据,因此模型对内存的需求降低。
在这里插入图片描述

3.3 YOLO8网络模型简介

在这里插入图片描述
在这里插入图片描述
YOLOv8是Ultralytics团队在2023年提出,值得注意的是2020年发布的yolo5也是ultralytics公司的杰作,因此yolo5与yolo8师出同门,两者差异不是很大,确切的来说,yolo8是在YOLOv5的基础上进行改进的。YOLOv8 的主干网络基本与YOLOv5相同,但比较重要的改进点是yolo8中使用了C2f模块来替换yolo5中原本的C3模块。Yolo8中的C2f模块借鉴了YOLOv7中对于ELAN的处理方式,将C3和ELAN结合形成了C2f模块,使得YOLOv8获得了更丰富的梯度流信息。在主干网络的末尾处,仍然采用了之前的SPPF模块,使特征按照序列通过三个尺寸为5×5的最大池化层,然后将每一层进行串联连接,从而保证了不同尺度对象的准确性。在颈部网络部分,仍然采用PAN与FPN结合的结构作为特征融合的方式,增强了不同尺度特征层信息的融合和利用。颈部中的特征提取模块与主干一样吧,也是替换成了 C2f模块。在检测头网络中,YOLOv8采用了类似于 YOLOX的解耦头,将回归分支和预测分支进行分离,以求达到更快的收敛速度和更高的检测精度。YOLOv8 的结构如图3所示,在COCO数据集上,yolo8的检测精度高于 YOLOv5,但是所使用的 C2f 模块和解耦头结构却增加模型的计算量和参数量。下面从主干网络、颈部网络、检测头分析yolo8网络:
(1)主干网络(Backbone)
YOLO8的主干网络延续了YOLO5系列对轻量化与高效性的追求,继承自YOLOv5的CSPNet和Darknet的残差模块。CSPNet通过将特征图分为两部分(一部分直接传递,另一部分经过残差块),减少了计算量并增强了特征表达能力。采用类似MobileNet的深度可分离卷积或RepVGG的结构,减少参数量和计算量,同时保持精度。例如,使用RepVGG Block(通过可重复卷积将多个卷积合并为一个大卷积,加速推理)。
(2)颈部网络(Neck)
颈部网络负责多尺度特征融合,提升模型对不同大小目标的检测能力。YOLO8采用双向特征金字塔(BiFPN)或路径聚合网络(PANet),通过上采样和下采样融合不同层级的特征图。采用自适应的特征融合策略,根据目标的尺度动态选择合适的特征层级,而非固定融合所有层级。
(3)检测头(Detection Head)
检测头负责将特征图转化为预测结果(边界框、置信度、类别概率)。在多个特征层级(如P3、P4、P5)输出预测,对应不同尺度的目标。YOLOv8完全抛弃锚框,直接预测偏移量。分离边界框、置信度和类别预测分支,使用卷积层直接输出。采用YOLOv7中引入的动态标签分配(Dynamic Label Assignment),通过匹配预测与真实框的IoU动态分配正样本,提升小目标的检测效果。

3.4 模型训练

将标注后的数据集划分为训练集和验证集后,开始对我们搭建的yolo8深度学习网络进行训练。一般为了缩短网络的训练时间,并达到更好的精度,一般加载预训练权重进行网络的训练。而yolov8提供了多个预训练权重,我们可以对应我们不同的需求选择不同版本的预训练权重。预训练权重越大,训练出来的精度就会相对来说越高,但是其检测的速度就会越慢。本次训练自己的数据集用的预训练权重为yolov8s。我们借助ultralytics框架对yolo8模型进行训练,模型训练代码如下:

from ultralytics import YOLO

# Load a model
# model = YOLO('./data/fall.yaml')  # build a new model from YAML
model = YOLO('yolov8s.pt')  # load a pretrained model (recommended for training)
# model = YOLO('./fall.yaml').load('yolov8n.pt')  # build from YAML and transfer weights

# Train the model
if __name__=='__main__':
    model.train(data='./data.yaml', epochs=250, batch=8,workers=0,imgsz=640)

模型训练过程中,为了记录模型训练的情况,比如模型是否收敛、是否训练充分、模型当前精度等,我们会记录一系列的指标,包括loss曲线、map曲线等,如下图所示。
在这里插入图片描述
模型训练好之后,需要用评估指标对训练好的模型效果进行定量评估。一般通过PR曲线即可看出模型的效果。P-R曲线是根据模型的预测结果对样本进行排序,把最有可能是正样本的个体排在前面,而后面的则是模型认为最不可能为正例的样本,再按此顺序逐个把样本作为“正例”进行预测并计算出当前的准确率和召回率得到的曲线。PR曲线中的P代表的是Precision(精准率),R代表的是Recall(召回率),其代表的是精准率与召回率的关系,一般情况下,将recall设置为横坐标,precision设置为纵坐标。PR曲线下围成的面积即AP,所有类别AP平均值即map。如下图所示:
在这里插入图片描述

3.5 系统开发

3.5.1 数据库设计

本系统涉及到数据存储的业务包括用户信息存储,涉及到一个表:user。表中的字段设置如下图所示。
在这里插入图片描述

3.5.2 后端开发

后端使用python语言开发,利用了ultralytics深度学习推理框架和Streamlit框架。

3.5.3 前端开发

前端采用Streamlit框架开发。Streamlit是一个专门为机器学习和数据科学团队设计的应用开发框架,它的主要目标是帮助数据科学家和开发人员更快速地创建和部署交互式数据应用程序,以便将研究成果转化为实际应用。
这个框架的主要优势在于其易用性和高效性。使用Streamlit,开发者只需要几行代码就可以创建出交互式应用,无需编写HTML、CSS或JavaScript。同时,Streamlit支持大量表格、图表、数据表等对象的渲染,并封装了大量互动组件,如滑动条、单选框、复选框等,使得应用界面丰富且用户友好。
Streamlit也支持实时预览,即在编辑代码时,应用会自动重新加载,开发者可以实时查看更改的效果。此外,Streamlit还可以自动调整布局和大小,以适应不同的屏幕和设备,实现栅格化响应式布局。
Streamlit的另一个显著特点是对Python数据科学库的广泛支持,如Pandas、Numpy、Matplotlib、Scikit-Learn等,这使得开发者可以利用这些库的功能,直接在Streamlit应用中实现数据分析和可视化。
Streamlit的应用场景非常广泛,比如可以用于搭建预测模型的Web应用,或者用于自动化处理Excel文件的Web应用等。它可以帮助用户将复杂的机器学习或者深度学习模型或数据处理流程转化为易于理解和使用的Web界面,从而方便非专业人员的使用。
总的来说,Streamlit是一个功能强大且易于使用的应用开发框架,特别适合于机器学习和数据科学领域的快速应用开发。

4.系统主要功能

4.1 注册、登陆

为了方便管理使用该系统的用户,在使用该系统之前,新用户需要注册,注册过的用户需要输入账号、密码进行登录。用户登录进系统之后,才可以使用系统的电动车进电梯识别服务。
在这里插入图片描述

4.2 权限管理

该系统的用户分为管理员用户和普通用户,其中管理员用户中有一个超级管理员账号,由系统开发时设定,不可修改,不可删除。通过登录注册界面注册的用户,默认为普通用户。普通用户登录进系统,可以使用的功能包括图片识别、视频识别、摄像头识别功能。而管理员账号,可以使用系统的全部功能,不仅拥有图片识别、视频识别、摄像头识别功能,还可以对图片识别信息进行搜索、识别结果导出为csv文件。
在这里插入图片描述
在这里插入图片描述

4.3 图片识别

该系统可以对电梯内安装的摄像头拍摄的图片进行检测识别,以检测图片中是否出现电动车,达到电动车进电梯检测的效果。如果检测到电动车,会在图片中框出电动车,同时页面下方显示检测类别、模型检测的置信度与目标坐标,最后将整幅图的识别结果按类别统计。
在这里插入图片描述

4.4 视频识别和摄像头识别

在这里插入图片描述
在这里插入图片描述

5.结语

综上所述,本系统通过视觉识别技术(涵盖静态图片分析、动态视频流解析及前端摄像头实时监控),构建了多维立体的电动车入梯监管体系。系统依托深度学习的YOLO图像识别算法,可精准捕捉电动车特征,对电梯场景中的违规行为实现毫秒级响应与主动预警,有效阻断安全隐患于萌芽状态。这一技术解决方案不仅为破解"电动车入梯"监管难题提供了智能化路径,更通过无接触式监管显著降低了管理成本,推动社区安全治理从被动响应转向主动防控。随着系统的落地应用,将切实筑牢电梯空间安全防线,为智慧安防建设和城市精细化治理提供关键技术支撑。
在这里插入图片描述

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐