复杂场景下的跌倒行为检测系统

简介: 跌倒是生活中较为常见的危险行为,随着人工智能技术的发展,研究人员尝试利用更先进的技术对跌倒行为进行检测,减少人力成本并尽可能减轻跌倒带来的危害。由于摄像头等监控设备的普及,使用计算机视觉的方法对跌倒行为进行分析和检测具有重要的研究价值和意义。然而传统的基于视觉的跌倒检测大多基于简单场景,面对多人或更复杂的场景时检测效果就会大大折扣。

1.  需求分析


    近些年由于跌倒事件频繁发生,造成的危害较大,对跌倒行为进行检测逐渐得到社会的重视,随着计算机技术和人工智能技术的发展,涌现了很多相关的研究和算法。但是目前大部分的研究和算法受限于简单实验室场景,做具体实验时不可能达到绝对的真实摔倒,因此模型的训练和测试也比较受限,实际生活中诸如光照、遮挡等因素的干扰对跌倒检测也是一个很大的挑战。本文立足于复杂场景下的跌倒行为检测,对复杂场景中可能出现的问题进行了具体的分析,采用了目前较为流行的算法,对于复杂场景的跌倒行为有较优的检测效果。基于复杂场景跌倒行为检测模型,设计了复杂场景下的跌倒行为检测系统,以便将算法模型应用于实际的复杂场景之中。      

     该系统实现的主要功能需求如下:

(1)数据采集与预处理:        

    本系统需要实现对复杂场景中的行人跌倒视频进行采集,数据来源有两部分,一部分是使用系统摄像机进行实时录像和检测,还有一部分是用户上传视频,然后对离线视频进行跌倒识别。获取视频流并进行相应处理之后,将视频流输入 YOLOv5+Deep Sort 特征提取网络,并提取人体行为特征,整理为时序数据,然后送入下一步的跌倒检测模型。

(2)跌倒检测:      

     本模块的主要将上一步得到的时序数据和检测框信息相结合,送入双向 LSTM 跌倒检测模块进行训练,并对其结果进行判断,考虑到实时性要求,模型不能太过复杂。

(3)结果展示:      

     检测到跌倒之后,系统将出现提示发生了跌倒,与此同时视频中跌倒的人也将被标注出跌倒的状态。

2. 系统架构

     目前很多的系统应用都可以基于 Java 平台开发网站项目,相比于以前的系统设计,在展示效果和操作便利性上有了很大的提升,因此本系统也选用了基于 Java 平台的网站项目进行开发,其中前端部分采用较为简单的 Bootstrap 框架,后端部分使用了目前最为流行的 Spring Boot 框架,数据库使用 mysql。        

     下图为本文在复杂场景下设计的跌倒检测系统架构图,系统实现的主要功能有实时跌倒检测和离线跌倒检测,点击实时跌倒检测之后将调用系统摄像头,对摄像头所拍摄的场景进行跌倒行为的检测,将视频中的人标出,并且将跌倒的人标注出来,并打上跌倒的标签;离线跌倒检测从数据库中取出用户上传的视频,并对视频进行跌倒检测分析,同样也会显示视频中的人并标注出是否发生了跌倒行为,最后给出视频的跌倒检测结果。

(B$JXXENAVLWKL2N5$%J7`R.png

3. 系统整体设计

      本系统的后端的主体结构是 Spring Boot。Spring Boot 是 Spring 框架的扩展。作为 2013 年被提出的开源框架,主要作用是解决企业级应用开发,使用基本的 JavaBean,核心是控制反转(IOC)和面向切面(AOP)。控制反转是通过IOC 容器实现的,作用是降低对象之间的耦合,增加系统开发的灵活性,使得维护更加方便。Spring 通过控制反转的方法使用 IOC 容器管理对象的创建,解决了对象之间的依赖问题,最主流的实现方式为依赖注入(DI),而面向切面则是将公用的业务逻辑如日志、权限控制、事务管理等从业务流程中剥离出来单独封装,方法是使用动态代理,在特定的切点做了增强,降低了耦合。而Spring Boot 是对 Spring 框架的扩展和简化,不需要繁琐的 XML 配置,开箱即用,能非常迅速地新建一个 Spring 项目,通过导入 Boot 所谓的“starter”模块,可以将许多的依赖添加到工程之中。本系统并不复杂,因此就直接采用了Spring Boot 进行了系统的设计,这样可以直接在网站中对在线或者离线的视频进行分析和检测,较为方便快捷。

     本系统前端使用了 Bootstrap 框架,是由 Twitter 公司设计的基于 HTML、CSS、JavaScript 简洁而强悍的前端开发框架,它使用了统一的命名规则,页面风格也较为一致,画面较为和谐,因此也诞生了很多基于 Bootstrap 的前端框架。因为本系统的功能需求较为简单,因此就直接采取了 Bootstrap 进行简单的前端界面设计。主要设计登录页、主页、实时跌倒检测页、离线跌倒检测页四个页面。

     基于 Spring Boot 的后台部分体系架构可以分为数据库层、数据持久层、数据模型层、业务逻辑层、控制器层。接下来将分别介绍具体的设计过程。

(1)数据库层       数据库使用了 Mysql 5.7,Mysql 是一种开源的关系型数据库,通过键值对保存信息,它支持跨平台,运行速度很快,功能强大,是目前开源平台上最主流的数据库。本系统数据库的主要作用就是保存摄像头录下的视频并保存到云端,以便跌倒检测的时候进行存取。数据库层包括用户表 User、菜单表Menu、本地跌倒检测数据表 Local_Fall_Data、在线跌倒检测数据表Alive_Fall_Data 的设计。其中 User 表的作用是控制用户的登录和登出,并对权限和密码进行设置;Menu 表的作用是根据 Menu_ID 构建最终的显示菜单;Local_Fall_Data 表的作用是将上传的视频存储在本地,并且对视频进行跌倒检测分析后,将跌倒状态存储在表中,并根据跌倒的时间设置是否报警;Alive_Fall_Data 表的作用是将摄像头传来的实时视频进行分割,根据设定好的时长对在线视频进行存储,并将分割好的视频送入跌倒检测模型中,判断跌倒状态,并根据跌倒的时间设置是否报警。

(2)数据持久层       本系统数据持久层使用了 MyBatis 框架对数据库进行操作,MyBatis 框架的主要作用是将繁琐的 JDBC 操作封装起来,并使得 Java 类和 SQL 语句直接可以相互转换和调用。在相关的配置文件中设置好 MyBatis 的访问路径和相关语句,然后进行业务逻辑层的具体实现,这里主要完成的功能就是通过 sql 语句对离线或者在线的视频进行存储、提取、分析和查询。

(3)数据模型        本系统的数据模型即为实体类别,每类对应一张数据表,并将表中字段进行抽象。系统中一共有四个类,即 User 类、Menu 类、Local_Video_Data 类、Alive_Video_Data 类,通过对这四个类使用 getter 和 setter 方法,从而调用每个变量的值。

(4)业务逻辑层       本系统的业务逻辑层链接数据持久层和控制器层,一般来说是对控制器层的具体实现,通过注解可以使用依赖注入的功能,将具体的参数值注入到模型中,并通过代码对数据库访问代码进行控制。

(5)控制器层       控制器层是通过调用业务逻辑层的部分,进行具体的功能设计和实现,然后将得到的数据返回前端页面,在这个部分需要添加本文提出的跌倒检测模型的代码,从而调用算法对具体的视频进行分析和检测。本部分实现的功能主要有用户登录验证、离线视频处理、在线视频处理、视频跌倒检测分析、图表展示和查询,分别设置对应的函数和处理代码。      

     具体的业务流程是用户登录平台之后,可以在界面中选择实时跌倒检测或离线跌倒检测,选择完毕之后,如果是实时跌倒检测将打开系统摄像头,在录制的同时对当前镜头下的场景进行跌倒检测识别,并弹出相应的视频检测结果以供观看,结束后给出检测的结果;如果是离线跌倒检测,将从本地上传视频,选择视频之后,弹出显示框显示视频内容以及跌倒检测的结果。

4. 系统展示

      下图为跌倒行为检测系统中关于实时跌倒检测的界面展示,首先点击开始录像,打开系统摄像头,摄像头中的画面进行录制和存储,同时按钮变为结束录像,然后点击实时检测,启动本文的提出的复杂场景跌倒行为检测模型对视频中的人体进行跌倒的持续性实时检测,当检测完成后,点击结束录像,并将本次的检测结果存入数据库,在界面的图表中进行展示。

29NZ_1]{TUJ3}T0L})EK4DX.png

相关文章
|
3月前
|
算法
疲劳检测-闭眼检测(详细代码教程)
疲劳检测-闭眼检测(详细代码教程)
227 1
|
3月前
|
监控 安全 自动驾驶
基于python的室内老人实时摔倒智能监测系统-跌倒检测系统(康复训练检测+代码)
基于python的室内老人实时摔倒智能监测系统-跌倒检测系统(康复训练检测+代码)
193 1
|
2月前
|
数据挖掘 数据库
检测未知成分一般用到那些仪器丨技术分析
未知成分检测是确定物质化学组成的过程,涉及样品收集、前处理、选择分析方法(如光谱法、色谱法、质谱法、能谱法等)、样品分析、数据分析解释、验证确认及报告编写。此过程需要专业知识,可寻求专业服务支持。
|
12月前
|
传感器 安全 前端开发
井下空气质量检测预警系统学习
随着现代化煤矿深入开采,井下空气质量监测已成为重要的安全问题。煤矿通常有大量地瓦斯、煤尘等气体,如果空气质量不良,无疑会给矿工的健康和安全带来极大的威胁。因此,煤矿必须配备有效的井下空气质量检测预警系统,用来监测空气质量,预警可能的问题,为矿工提供更安全的工作环境。
井下空气质量检测预警系统学习
|
监控 安全 异构计算
头盔佩戴检测(行人跟踪技术检测)
头盔佩戴检测(行人跟踪技术检测)
269 0
头盔佩戴检测(行人跟踪技术检测)
|
机器学习/深度学习 算法 数据可视化
项目实践 | 行人跟踪与摔倒检测报警(文末获取完整源码)
项目实践 | 行人跟踪与摔倒检测报警(文末获取完整源码)
169 0
|
智慧交通
智慧交通day02-车流量检测实现14:代码汇总+问题修正
智慧交通day02-车流量检测实现14:代码汇总+问题修正
98 0
|
算法 数据格式
DeepSORT算法实现车辆和行人跟踪计数和是否道路违规检测(毕业设计)
DeepSORT算法实现车辆和行人跟踪计数和是否道路违规检测(毕业设计)
161 0
【超简单】之基于PaddleX的2022“兴智杯”齿轮瑕疵检测预测部分
【超简单】之基于PaddleX的2022“兴智杯”齿轮瑕疵检测预测部分
132 0
【超简单】之基于PaddleX的2022“兴智杯”齿轮瑕疵检测预测部分
|
监控 算法 安全
Study-路面裂缝检测识别系统设计
Study-路面裂缝检测识别系统设计
312 0
Study-路面裂缝检测识别系统设计