一种用于智慧校园的监控管理系统
文献发布时间:2024-04-18 19:55:22
技术领域
本发明涉及智慧校园技术领域,更具体地说,本发明涉及一种用于智慧校园的监控管理系统。
背景技术
智慧校园是指利用先进的信息技术和智能化设备,将学校各方面进行数字化、网络化和智能化的综合管理系统,旨在提升学校的教育教学质量、管理效率和服务水平,为学生、教师和管理人员提供更好的学习、教学和工作环境,在放学后,学校的教室通常是没有人的,但是存在学生放学在教室内玩耍或者学习,未在智能门锁设置的落锁时间离开教室,智能门锁在设置的落锁时间会自动落锁,被关在教室的学生在无人知晓的情况下会存在危险,现有的校园监控系统往往只能够监控各个教室的实时画面,无法判断智能门锁落锁后教室内是否有人,也无法根据教室内是否有人自动调节教室内的灯光,无法识别锁在教室的人员具体情况,无法向学校安保人员、班级教师以及学生家长发送通知,也无法通过算法确保智能门锁在学校安保人员到达现场陪同情况下智能门锁才打开,无法根据算法自动调节学生从教室到学校校门口路段上的灯光亮度,同时也无法通过监控确认班级老师或者学生家长陪护时才打开学校校门的智能门锁,确保学生的安全离开。
为了解决上述问题,现提供一种技术方案。
发明内容
为了克服现有技术的上述缺陷,本发明的实施例提供一种用于智慧校园的监控管理系统,通过校园智能监控管理,识别学生被关在教室里面时的姿态信息和面部信息,并将信息传达给在校安保人员、班级教师以及学生家长,智能调节校园灯光,保障了学生在安保人员、学生家长以及班级教师知晓和陪同的情况下安全离开校园,以解决上述背景技术中提出的问题。
为实现上述目的,本发明提供如下技术方案:
一种用于智慧校园的监控管理系统,包括智能门锁系统、视频监控系统、智能预警通知模块、智能灯光系统以及监控管理系统,智能门锁系统包括安装在教室门上的第一智能门锁以及安装在学校大门上的第二智能门锁,视频监控系统包括位于各个教室室内的第一智能摄像头、位于各个教室室外的第二智能摄像头以及位于学校校门口的第三智能摄像头,第一智能摄像头、第二智能摄像头以及第三智能摄像头均连有人脸识别模块和姿态安全识别模块,视频监控模块连接有监控管理模块,第一智能门锁在设置的落锁时间落锁,关闭教室,第一智能摄像头采集利用YOLO算法监测教室内的人员逗留情况,检测到人员逗留时,将检测目标结果发送至人脸识别模块和姿态安全识别模块,人脸识别模块通过FaceNet对逗留人员进行人脸识别,并将识别的结果发送给监控管理模块,姿态安全识别模块通过OpenPose算法分析逗留人员的人体姿态,并将人体姿态的识别结果发送给监控管理模块,监控管理模块对获取的数据进行分析,根据获取的逗留人员数据定义事件类型,获取事件类型代表值,根据事件类型代表值制定对应的事件响应策略,并将事件类型代表值传输至智能灯光系统和智能预警通知模块,事件类型代表值2对应的响应策略为:
事件类型代表值为2时,智能门锁系统通过人脸识别结果判断是否为学生进行响应,当识别结果为学生时,智能门锁系统预解锁,智能灯光系统打开事件发生教室的照明灯,智能预警通知模块将人脸识别的学生信息传输给学校保安室、学生班级教师以及家长,待第一智能摄像头识别到学生,同时第二智能摄像头识别到学校保安、学生班级教师以及家长的其中至少一个时,第一智能门锁完全打开事件发生教室的门,智能灯光系统打开从发生事件的教室至校门的最短路径上的路灯,第三智能摄像头识别到学生,同时识别到学校保安、学生班级教师以及家长的其中至少一个时打开第三智能门锁,当人脸识别结果为非学生且为学校在录人员时,第一智能门锁自动打开。
作为本发明进一步的方案,监控管理模块定义的一类安全事件如下:
一类安全事件:第一种情况为人脸识别模块在学校在录人员数据集中找到与之匹配的人员,识别结果为学生时,人体姿态识别结果显示为安全活动姿态,第二种情况为识别结果为非学生且为学校在录人员,人体姿态识别结果显示为安全活动状态,将这两种情况的事件定义为一类安全事件,一类安全事件的代表值为2。
作为本发明进一步的方案,监控管理模块定义的非法逗留事件及其响应策略为:
非法逗留事件:人脸识别模块在学校在录人员数据集中无法找到与之匹配的人员,人体姿态结果显示为安全活动状态,将该事件定义为非法逗留事件,非法逗留事件的代表值为1;
非法逗留事件响应策略:事件类型代表值为1时,智能门锁系统锁闭不开,智能灯光系统打开事件发生教室的照明灯,第一智能摄像头在照明灯开启后摄取教室内人员清晰人脸图像,智能预警通知模块将人脸识别的人员信息和清晰人脸图像传输给学校保安室,并在保安室触发声光报警。
作为本发明进一步的方案,监控管理模块定义的二类安全事件及其响应策略为:
二类安全事件:人脸识别模块在学校在录人员数据集中找到与之匹配的人员,人体姿态识别结果为低活动状态、紧急活动状态或者静止状态,将该事件定义为二类安全事件,二类安全事件的代表值为3;
二类安全事件响应策略:事件类型代表值为3时,智能灯光系统打开发生事件教室的照明灯,同时打开发生事件教室至保安室最短路径上的路灯,智能预警通知模块将人脸识别的人员信息传输给学校保安室,待第二智能摄像头识别到保安人脸时,打开第一智能门锁。
作为本发明进一步的方案,监控管理模块中紧急安全事件及其响应策略为:
紧急安全事件:情况一为人脸识别模块在学校在录人员数据集中同时找到与之匹配的人员和无法与之匹配的人员,人体姿态识别结果显示为安全活动状态、低活动状态、紧急活动状态或者静止状态,情况二为人脸识别模块在学校在录人员数据集中未找到与之匹配的人员,人体姿态识别结果显示为低活动状态、紧急活动状态或者静止状态,将这两种情况的事件定义为紧急安全事件,紧急安全事件的代表值为4;
紧急安全事件响应策略:事件类型代表值为4时,智能灯光系统打开发生事件教室的照明灯,同时第一智能摄像头获取清晰的人脸图像,清晰的人脸图像传输给人脸识别模块,人脸识别模块将未识别的清晰人脸图像以及识别出的在校人员信息传输智能预警通知模块,智能预警通知模块将数据传输给学校保安室及校方管理人员,并发出声光报警,同时打开发生事件教室至保安室最短路径上的路灯,直至第二智能摄像头检测到保安和校方管理人员中的其中至少一个时,第一智能门锁打开教室门。
作为本发明进一步的方案,智能门锁系统与视频监控系统相连,视频监控系统与智能灯光系统和智能预警通知模块相连,视频监控系统、智能门锁系统、智能灯光系统和智能预警通知模块用于配合实施监控管理模块制定的事件响应策略。
作为本发明进一步的方案,第一智能摄像头采集利用YOLO算法监测教室内的人员逗留情况的具体过程包括:
数据准备:收集包含学生和其他目标的图像数据集,并进行标注,标注包括目标的边界框和类别标签,对图像进行预处理操作;
模型训练:基于目标检测的需求,使用YOLO算法构建目标检测模型,YOLO算法采用卷积神经网络结构,将输入图像划分为网格,每个网格预测目标的边界框和类别;
模型初始化:使用预训练的权重或从头开始随机初始化模型的权重;
数据加载和训练:将准备好的训练数据输入到模型中,通过反向传播算法进行模型训练,优化模型参数以最小化目标检测的损失函数;
目标检测:将待检测的图像作为输入传递给训练好的YOLO模型,通过卷积层和池化层,提取图像中的特征表示,在不同尺度的特征图上,使用卷积和全连接层进行目标边界框的预测,每个边界框包括位置坐标和对应的目标类别,根据预测的边界框,应用非极大值抑制算法,去除重叠的边界框,只保留最准确的目标检测结果。
输出结果:输出目标检测的边界框和类别信息,以及其置信度。
作为本发明进一步的方案,人脸识别模块通过FaceNet对逗留人员进行人脸识别的过程包括:
数据采集和数据预处理:收集包含学生以及在校人员人脸图像的数据集,并进行标注,标注包括学生以及在校人员的身份信息,对图像进行预处理操作;
模型训练:构建基于卷积神经网络的人脸识别模型FaceNet,将输入的人脸图像映射到高维特征向量空间,并通过计算特征向量之间的距离进行人脸识别,使用预训练的权重随机初始化模型的权重,将准备好的训练数据输入到模型中,通过反向传播算法进行模型训练,优化模型参数以最小化人脸识别任务的损失函数;
学生识别:将待识别的人脸图像作为输入传递给训练好的FaceNet模型,通过卷积层和池化层,提取人脸图像的特征表示,将提取到的特征表示映射到高维特征向量空间,得到表示该人脸的特征向量,通过计算待识别人脸的特征向量与已知学生特征向量之间的余弦相似度,进行人脸比对和识别,根据设定的阈值,判断待识别人脸是否匹配已知学生特征,从而确认学生的身份。
作为本发明进一步的方案,姿态安全识别模块通过OpenPose算法分析逗留人员的人体姿态的具体流程包括:
数据准备:收集包含人体姿态的图像或视频数据集,并进行标注,标注包括各关节点的位置信息,对图像或视频进行预处理操作;
模型训练:构建基于卷积神经网络的人体姿态估计模型OpenPose模型,检测人体关节点的位置和关联关系;
模型初始化:从头开始随机初始化模型的权重,将准备好的训练数据输入到模型中,通过反向传播算法进行模型训练,优化模型参数以最小化人体姿态估计任务的损失函数;
学生人体姿态估计:将待估计的图像或视频作为输入传递给训练好的OpenPose模型,通过卷积层和池化层,提取图像或视频中人员的特征表示,在不同尺度的特征图上,检测人员关节点的位置,每个关节点包括坐标位置和对应的关节类型,根据检测到的关节点位置,建立人体的姿态关系,包括关节点之间的连接和相对位置信息,根据姿态关系和关节点位置,分析学生的姿态情况。
作为本发明进一步的方案,在OpenPose模型中,识别的人体姿态中,识别人体关键点为颈部关节点、双肘关节点、双肩关节点、髋关节点、双膝关节点和双踝关节点,连接人体关节点形成人体姿态简化模型,各个姿态的定义为:
安全活动姿态:颈部关节点竖直坐标值保持在记录站姿下的高度以及坐姿下的高度,变化范围保持在±0.1~±0.5m内,双肘关节点、双肩关节点、髋关节点、双踝关节点及双膝关节点的垂直坐标变化率在±0.1m/s~±0.15m/s内,变化加速度在±0.15~±0.3m/s
低活动状态:颈部关节点竖直坐标值保持在记录站姿下的高度以及坐姿下的高度,变化范围保持在±0.05~±0.1m内,双肘关节点、双肩关节点、髋关节点、双踝关节点及双膝关节点的垂直坐标变化率在±0.05~±0.1m/s内,变化加速度在±0.05~±0.15m/s
紧急活动状态:情况A为颈部关节点竖直坐标值保持在记录站姿下的高度以及坐姿下的高度,变化范围超过±0.5m,情况B为双肘关节点、双肩关节点、髋关节点、双踝关节点及双膝关节点的垂直坐标变化率超过±0.15m/s,变化加速度超过±0.3m/s
静止状态:所有人体关键点的垂直坐标高度保持不变。
本发明一种用于智慧校园的监控管理系统的技术效果和优点:
本发明通过校园智能监控管理,识别学生被关在教室里面时的姿态信息和面部信息,并将信息传达给在校安保人员、班级教师以及学生家长,智能调节校园灯光,保障了学生在安保人员、学生家长以及班级教师知晓和陪同的情况下安全离开校园,能够根据监控信息精准识别教室内被锁人员的面部信息,定量分析被锁人员的姿态,获取被锁人员的姿态状况,从而建立不同的事件响应策略,实现校园安全的智慧监督。
附图说明
图1为本发明一种用于智慧校园的监控管理系统结构框图;
图2为本发明一种用于智慧校园的监控管理系统的事件处理流程图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
实施例1。本发明提出的一种用于智慧校园的监控管理系统,通过校园智能监控管理,识别学生被关在教室里面时的姿态信息和面部信息,并将信息传达给在校安保人员、班级教师以及学生家长,智能调节校园灯光,保障了学生在安保人员、学生家长以及班级教师知晓和陪同的情况下安全离开校园,能够根据监控信息精准识别教室内被锁人员的面部信息,定量分析被锁人员的姿态,获取被锁人员的姿态状况,从而建立不同的事件响应策略,实现校园安全的智慧监督。
图1给出了本发明用于智慧校园的监控管理系统的结构框图,其包括智能门锁系统、视频监控系统、智能预警通知模块、智能灯光系统以及监控管理系统,智能门锁系统包括安装在教室门上的第一智能门锁以及安装在学校大门上的第二智能门锁,视频监控系统包括位于各个教室室内的第一智能摄像头、位于各个教室室外的第二智能摄像头以及位于学校校门口的第三智能摄像头,第一智能摄像头、第二智能摄像头以及第三智能摄像头均连有人脸识别模块和姿态安全识别模块,视频监控模块连接有监控管理模块,第一智能门锁在设置的落锁时间落锁,关闭教室,第一智能摄像头采集利用YOLO算法监测教室内的人员逗留情况,检测到人员逗留时,将检测目标结果发送至人脸识别模块和姿态安全识别模块,人脸识别模块通过FaceNet对逗留人员进行人脸识别,并将识别的结果发送给监控管理模块,姿态安全识别模块通过OpenPose算法分析逗留人员的人体姿态,并将人体姿态的识别结果发送给监控管理模块,监控管理模块对获取的数据进行分析,根据获取的逗留人员数据定义事件类型,获取事件类型代表值,根据事件类型代表值制定对应的事件响应策略,并将事件类型代表值传输至智能灯光系统和智能预警通知模块。
需要说明的是,智能门锁系统与视频监控系统相连,视频监控系统与智能灯光系统和智能预警通知模块相连,视频监控系统、智能门锁系统、智能灯光系统和智能预警通知模块用于配合实施监控管理模块制定的事件响应策略。
进一步地,第一智能摄像头采集利用YOLO算法监测教室内的人员逗留情况的具体过程包括:
数据准备:收集包含学生和其他目标的图像数据集,并进行标注,标注包括目标的边界框和类别标签,对图像进行预处理操作;
模型训练:基于目标检测的需求,使用YOLO算法构建目标检测模型,YOLO算法采用卷积神经网络结构,将输入图像划分为网格,每个网格预测目标的边界框和类别;
模型初始化:使用预训练的权重或从头开始随机初始化模型的权重;
数据加载和训练:将准备好的训练数据输入到模型中,通过反向传播算法进行模型训练,优化模型参数以最小化目标检测的损失函数;
目标检测:将待检测的图像作为输入传递给训练好的YOLO模型,通过卷积层和池化层,提取图像中的特征表示,在不同尺度的特征图上,使用卷积和全连接层进行目标边界框的预测,每个边界框包括位置坐标和对应的目标类别,根据预测的边界框,应用非极大值抑制算法,去除重叠的边界框,只保留最准确的目标检测结果。
输出结果:输出目标检测的边界框和类别信息,以及其置信度。
需要说明的是,第一智能摄像头采集利用YOLO算法监测教室内的人员逗留情况的python代码为:
import cv2
import numpy as np
# 加载YOLO模型
net = cv2.dnn.readNet("yolov3.weights", "yolov3.cfg")
classes = []
with open("coco.names", "r") as f:
classes = [line.strip() for line in f.readlines()]
# 获取输出层信息
layer_names = net.getLayerNames()
output_layers = [layer_names[i[0] - 1]for i innet.getUnconnectedOutLayers()]
# 捕获视频流或打开视频文件
cap = cv2.VideoCapture(0) # 如果要从文件读取视频,请将参数设置为文件路径
while True:
# 读取视频流的帧
ret, frame = cap.read()
# 对帧进行预处理
height, width, channels = frame.shape
blob = cv2.dnn.blobFromImage(frame, 0.00392, (416, 416), (0, 0, 0),True, crop=False)
# 将预处理后的帧输入到YOLO网络中进行检测
net.setInput(blob)
outs = net.forward(output_layers)
# 解析网络的输出结果并进行绘制
class_ids = []
confidences = []
boxes = []
for out in outs:
for detection in out:
scores = detection[5:]
class_id = np.argmax(scores)
confidence = scores[class_id]
if confidence>0.5: # 设置置信度阈值
# 检测到人员
center_x = int(detection[0] * width)
center_y = int(detection[1] * height)
w = int(detection[2] * width)
h = int(detection[3] * height)
# 边界框的坐标
x = int(center_x - w / 2)
y = int(center_y - h / 2)
boxes.append([x, y, w, h])
confidences.append(float(confidence))
class_ids.append(class_id)
# 应用非极大值抑制进行去重
indexes = cv2.dnn.NMSBoxes(boxes, confidences, 0.5, 0.4)
# 绘制边界框和标签
for i in range(len(boxes)):
if i in indexes:
x, y, w, h = boxes[i]
label = str(classes[class_ids[i]])
cv2.rectangle(frame, (x, y), (x + w, y + h), (0, 255, 0), 2)
cv2.putText(frame, label, (x, y - 10), cv2.FONT_HERSHEY_SIMPLEX, 0.5,(0, 255, 0), 2)
# 显示结果帧
cv2.imshow("Classroom Monitoring", frame)
# 按下'q'键退出循环
if cv2.waitKey(1)&0xFF == ord('q'):
break
# 释放资源
cap.release()
cv2.destroyAllWindows()
进一步地,人脸识别模块通过FaceNet对逗留人员进行人脸识别的过程包括:
数据采集和数据预处理:收集包含学生以及在校人员人脸图像的数据集,并进行标注,标注包括学生以及在校人员的身份信息,对图像进行预处理操作;
模型训练:构建基于卷积神经网络的人脸识别模型FaceNet,将输入的人脸图像映射到高维特征向量空间,并通过计算特征向量之间的距离进行人脸识别,使用预训练的权重随机初始化模型的权重,将准备好的训练数据输入到模型中,通过反向传播算法进行模型训练,优化模型参数以最小化人脸识别任务的损失函数;
学生识别:将待识别的人脸图像作为输入传递给训练好的FaceNet模型,通过卷积层和池化层,提取人脸图像的特征表示,将提取到的特征表示映射到高维特征向量空间,得到表示该人脸的特征向量,通过计算待识别人脸的特征向量与已知学生特征向量之间的余弦相似度,进行人脸比对和识别,根据设定的阈值,判断待识别人脸是否匹配已知学生特征,从而确认学生的身份。
需要说明的是,以下是人脸识别模块通过FaceNet对逗留人员进行人脸识别的过程代码如下:
import cv2
import numpy as np
import face_recognition
# 加载已知人脸的编码和标签
known_face_encodings = []
known_face_labels = []
# 添加已知人脸的编码和标签
# 例如:
# known_face_encodings.append(已知人脸的编码)
# known_face_labels.append("人脸标签")
# 捕获视频流或打开视频文件
cap = cv2.VideoCapture(0) # 如果要从文件读取视频,请将参数设置为文件路径
while True:
# 读取视频流的帧
ret, frame = cap.read()
# 将帧转换为RGB颜色空间
rgb_frame = frame[:, :, ::-1]
# 在帧中查找人脸位置
face_locations = face_recognition.face_locations(rgb_frame)
face_encodings = face_recognition.face_encodings(rgb_frame, face_locations)
face_labels = []
for face_encoding in face_encodings:
# 将当前人脸编码与已知人脸进行比较
matches = face_recognition.compare_faces(known_face_encodings, face_encoding)
face_label = "Unknown" # 默认标签为"Unknown"
# 计算与已知人脸编码的欧氏距离
face_distances = face_recognition.face_distance(known_face_encodings,face_encoding)
min_distance_idx = np.argmin(face_distances)
if matches[min_distance_idx]:
# 如果存在匹配的已知人脸,则使用对应的标签
face_label = known_face_labels[min_distance_idx]
face_labels.append(face_label)
# 在帧上绘制人脸边界框和标签
for (top, right, bottom, left), label in zip(face_locations, face_labels):
# 绘制边界框
cv2.rectangle(frame, (left, top), (right, bottom), (0, 0, 255), 2)
# 绘制标签
cv2.rectangle(frame, (left, bottom - 20), (right, bottom), (0, 0,255), cv2.FILLED)
font = cv2.FONT_HERSHEY_DUPLEX
cv2.putText(frame, label, (left + 6, bottom - 6), font, 0.5, (255,255, 255), 1)
# 显示结果帧
cv2.imshow("Face Recognition", frame)
# 按下'q'键退出循环
if cv2.waitKey(1)&0xFF == ord('q'):
break
# 释放资源
cap.release()
cv2.destroyAllWindows()
进一步地,姿态安全识别模块通过OpenPose算法分析逗留人员的人体姿态的具体流程包括:
数据准备:收集包含人体姿态的图像或视频数据集,并进行标注,标注包括各关节点的位置信息,对图像或视频进行预处理操作;
模型训练:构建基于卷积神经网络的人体姿态估计模型OpenPose模型,检测人体关节点的位置和关联关系;
模型初始化:从头开始随机初始化模型的权重,将准备好的训练数据输入到模型中,通过反向传播算法进行模型训练,优化模型参数以最小化人体姿态估计任务的损失函数;
学生人体姿态估计:将待估计的图像或视频作为输入传递给训练好的OpenPose模型,通过卷积层和池化层,提取图像或视频中人员的特征表示,在不同尺度的特征图上,检测人员关节点的位置,每个关节点包括坐标位置和对应的关节类型,根据检测到的关节点位置,建立人体的姿态关系,包括关节点之间的连接和相对位置信息,根据姿态关系和关节点位置,分析学生的姿态情况。
需要说明的是,在OpenPose模型中,识别的人体姿态中,识别人体关键点为颈部关节点、双肘关节点、双肩关节点、髋关节点、双膝关节点和双踝关节点,连接人体关节点形成人体姿态简化模型,各个姿态的定义为:
安全活动姿态:颈部关节点竖直坐标值保持在记录站姿下的高度以及坐姿下的高度,变化范围保持在±0.1~±0.5m内,双肘关节点、双肩关节点、髋关节点、双踝关节点及双膝关节点的垂直坐标变化率在±0.1m/s~±0.15m/s内,变化加速度在±0.15~±0.3m/s
低活动状态:颈部关节点竖直坐标值保持在记录站姿下的高度以及坐姿下的高度,变化范围保持在±0.05~±0.1m内,双肘关节点、双肩关节点、髋关节点、双踝关节点及双膝关节点的垂直坐标变化率在±0.05~±0.1m/s内,变化加速度在±0.05~±0.15m/s
紧急活动状态:情况A为颈部关节点竖直坐标值保持在记录站姿下的高度以及坐姿下的高度,变化范围超过±0.5m,情况B为双肘关节点、双肩关节点、髋关节点、双踝关节点及双膝关节点的垂直坐标变化率超过±0.15m/s,变化加速度超过±0.3m/s
静止状态:所有人体关键点的垂直坐标高度保持不变。
根据以上人体姿态判断依据,姿态安全识别模块通过OpenPose算法分析逗留人员的人体姿态的python代码为:
import cv2
import numpy as np
# 加载OpenPose模型
net = cv2.dnn.readNetFromTensorflow("pose_model.pb")
# 定义人体关键点索引
keypoint_indices = [1, 2, 3, 8, 9, 10] # 颈部、双肩、双肘、双腕、双膝、双踝
# 定义阈值范围
safe_activity_threshold = 0.1 # 安全活动姿态阈值
low_activity_threshold = 0.05 # 低活动状态阈值
emergency_activity_threshold = 0.5 # 紧急活动状态阈值
# 捕获视频流或打开视频文件
cap = cv2.VideoCapture(0) # 如果要从文件读取视频,请将参数设置为文件路径
while True:
# 读取视频流的帧
ret, frame = cap.read()
# 对帧进行预处理
blob = cv2.dnn.blobFromImage(frame, 1.0, (368, 368), (127.5, 127.5,127.5), swapRB=True, crop=False)
# 将预处理后的帧输入到OpenPose网络中进行分析
net.setInput(blob)
output = net.forward()
# 获取人体关键点坐标
keypoint_coords = []
for i in range(len(keypoint_indices)):
prob_map = output[0, keypoint_indices[i], :, :]
_, _, _, max_loc = cv2.minMaxLoc(prob_map)
keypoint_coords.append(max_loc)
# 计算人体姿态参数
neck_y = keypoint_coords[0][1]
elbows_y = [keypoint_coords[2][1], keypoint_coords[3][1]]
shoulders_y = [keypoint_coords[1][1], keypoint_coords[4][1]]
hips_y = [keypoint_coords[8][1], keypoint_coords[11][1]]
knees_y = [keypoint_coords[9][1], keypoint_coords[12][1]]
ankles_y = [keypoint_coords[10][1], keypoint_coords[13][1]]
neck_change_rate = abs(neck_y - neck_prev_y)
elbows_change_rate = max(abs(elbows_y[0] - elbows_prev_y[0]), abs(elbows_y[1] - elbows_prev_y[1]))
shoulders_change_rate=max(abs(shoulders_y[0]-shoulders_prev_y[0]),abs(shoulders_y[1] - shoulders_prev_y[1]))
hips_change_rate=max(abs(hips_y[0]-hips_prev_y[0]), abs(hips_y[1] -hips_prev_y[1]))
knees_change_rate = max(abs(knees_y[0] - knees_prev_y[0]), abs(knees_y[1] - knees_prev_y[1]))
ankles_change_rate = max(abs(ankles_y[0] - ankles_prev_y[0]), abs(ankles_y[1] - ankles_prev_y[1]))
neck_prev_y = neck_y
elbows_prev_y = elbows_y
shoulders_prev_y = shoulders_y
hips_prev_y = hips_y
knees_prev_y = knees_y
ankles_prev_y = ankles_y
# 判断人体姿态
if (abs(neck_y - neck_stand)<= safe_activity_threshold and
all(low_activity_threshold>=abs(joint-stand_joint)>=-low_activity_threshold for joint, stand_joint in
zip(elbows_y + shoulders_y + hips_y + knees_y + ankles_y, elbows_stand + shoulders_stand + hips_stand + knees_stand + ankles_stand)) and
all(low_activity_threshold>=abs(rate)>=-low_activity_threshold forrate in
[neck_change_rate,elbows_change_rate,shoulders_change_rate, hips_change_rate, knees_change_rate, ankles_change_rate])):
posture = "安全活动姿态"
elif (abs(neck_y - neck_stand)<= low_activity_threshold and
all(low_activity_threshold>=abs(joint-stand_joint)>= -low_activity_threshold for joint, stand_joint in
zip(elbows_y + shoulders_y + hips_y + knees_y + ankles_y, elbows_stand + shoulders_stand + hips_stand + knees_stand + ankles_stand)) and
all(low_activity_threshold>=abs(rate)>=-low_activity_threshold forrate in
[neck_change_rate,elbows_change_rate,shoulders_change_rate, hips_change_rate, knees_change_rate, ankles_change_rate])):
posture = "低活动状态"
elif ((abs(neck_y-neck_stand)>emergency_activity_threshold or
any(abs(joint-stand_joint)>emergency_activity_threshold for joint,stand_joint in
zip(elbows_y + shoulders_y + hips_y + knees_y + ankles_y, elbows_stand + shoulders_stand + hips_stand + knees_stand + ankles_stand)) or
any(abs(rate)>emergency_activity_threshold for rate in
[neck_change_rate,elbows_change_rate,shoulders_change_rate, hips_change_rate,knees_change_rate, ankles_change_rate]))):
posture = "紧急活动状态"
else:
posture = "静止状态"
# 在帧上绘制人体关键点
for i in range(len(keypoint_indices)):
coord = keypoint_coords[i]
cv2.circle(frame, coord, 4, (0, 0, 255), -1)
# 在帧上绘制人体姿态标签
cv2.putText(frame,posture,(10,30), cv2.FONT_HERSHEY_SIMPLEX, 0.8, (0,0, 255), 2)
# 显示结果帧
cv2.imshow("Pose Analysis", frame)
# 按下'q'键退出循环
if cv2.waitKey(1)&0xFF == ord('q'):
break
# 释放资源
cap.release()
cv2.destroyAllWindows()
实施例2。本发明实施例2与实施例1的区别在于,本实施例是对一种用于智慧校园的监控管理系统的定义事件类型以及其响应策略进行介绍。
图2给出了本发明用于智慧校园的监控管理系统的事件处理流程图,其包括:
(1)监控管理模块定义的非法逗留事件及其响应策略为:
非法逗留事件:人脸识别模块在学校在录人员数据集中无法找到与之匹配的人员,人体姿态结果显示为安全活动状态,将该事件定义为非法逗留事件,非法逗留事件的代表值为1;
非法逗留事件响应策略:事件类型代表值为1时,智能门锁系统锁闭不开,智能灯光系统打开事件发生教室的照明灯,第一智能摄像头在照明灯开启后摄取教室内人员清晰人脸图像,智能预警通知模块将人脸识别的人员信息和清晰人脸图像传输给学校保安室,并在保安室触发声光报警。
需要说明的是,通过人脸识别模块和人体姿态安全识别模块的结合,能够检测到非法逗留事件,有助于提高学校的安全性,确保只有授权的人员进入教室,一旦发生非法逗留事件,智能门锁系统将锁闭不开,智能灯光系统打开照明灯,并采集教室内人员的清晰人脸图像。这样,学校保安室能够及时收到警报并采取必要的行动,通过智能预警通知模块将人脸识别的人员信息和清晰人脸图像传输给学校保安室,保安人员能够迅速识别非法逗留者并采取适当的行动,例如立即前往现场或与相关人员联系,触发声光报警能够产生强烈的噪音和光线,向非法逗留者传达威慑信号,同时吸引周围人员的注意,增强整体安全防范意识,通过第一智能摄像头摄取教室内人员的清晰人脸图像,有助于收集证据,以供后续调查和追踪,提供有力的支持,帮助学校管理层进行必要的处理和决策。
(2)监控管理模块定义的一类安全事件如下:
一类安全事件:第一种情况为人脸识别模块在学校在录人员数据集中找到与之匹配的人员,识别结果为学生时,人体姿态识别结果显示为安全活动姿态,第二种情况为识别结果为非学生且为学校在录人员,人体姿态识别结果显示为安全活动状态,将这两种情况的事件定义为一类安全事件,一类安全事件的代表值为2。
事件类型代表值2对应的响应策略为:
事件类型代表值为2时,智能门锁系统通过人脸识别结果判断是否为学生进行响应,当识别结果为学生时,智能门锁系统预解锁,智能灯光系统打开事件发生教室的照明灯,智能预警通知模块将人脸识别的学生信息传输给学校保安室、学生班级教师以及家长,待第一智能摄像头识别到学生,同时第二智能摄像头识别到学校保安、学生班级教师以及家长的其中至少一个时,第一智能门锁完全打开事件发生教室的门,智能灯光系统打开从发生事件的教室至校门的最短路径上的路灯,第三智能摄像头识别到学生,同时识别到学校保安、学生班级教师以及家长的其中至少一个时打开第三智能门锁,当人脸识别结果为非学生且为学校在录人员时,第一智能门锁自动打开。
这样设置和定义的优点在于,
(3)监控管理模块定义的二类安全事件及其响应策略为:
二类安全事件:人脸识别模块在学校在录人员数据集中找到与之匹配的人员,人体姿态识别结果为低活动状态、紧急活动状态或者静止状态,将该事件定义为二类安全事件,二类安全事件的代表值为3;
二类安全事件响应策略:事件类型代表值为3时,智能灯光系统打开发生事件教室的照明灯,同时打开发生事件教室至保安室最短路径上的路灯,智能预警通知模块将人脸识别的人员信息传输给学校保安室,待第二智能摄像头识别到保安人脸时,打开第一智能门锁。
需要说明的是,通过人脸识别模块在学校录人员数据集中找到与之匹配的人员,并通过人体姿态识别判断为安全活动姿态,能够确认学生的身份和状态,有助于提高学校的安全性和管理效率,通过智能门锁系统、智能灯光系统和智能摄像头的协同工作,实现了多重验证措施,从学生到教师、保安和家长的识别和验证,确保了安全事件的完整性和可靠性,智能预警通知模块将学生的人脸识别信息传输给学校保安室、学生班级教师和家长,以便他们能够及时得知学生的进出情况,学校保安和教师能够采取必要的行动,例如监督学生、协助教学和提供家长关注的安全信息,通过在学校在录人员数据集中进行人脸识别,能够对学生和非学生且为学校在录人员进行区分和授权管理,只有授权的识别结果才能触发智能门锁系统的预解锁和完全打开事件发生教室的门,确保学生的自由出入,并减少非学生且为学校在录人员的干扰,智能灯光系统能够根据事件发生教室的照明灯,提供足够的照明条件,确保学生和相关人员的安全,智能摄像头的识别功能能够监控学生、保安、教师和家长的存在,确保他们在场时,门锁能够完全打开,并提供了进一步的监控和安全防范。
(4)监控管理模块中紧急安全事件及其响应策略为:
紧急安全事件:情况一为人脸识别模块在学校在录人员数据集中同时找到与之匹配的人员和无法与之匹配的人员,人体姿态识别结果显示为安全活动状态、低活动状态、紧急活动状态或者静止状态,情况二为人脸识别模块在学校在录人员数据集中未找到与之匹配的人员,人体姿态识别结果显示为低活动状态、紧急活动状态或者静止状态,将这两种情况的事件定义为紧急安全事件,紧急安全事件的代表值为4;
紧急安全事件响应策略:事件类型代表值为4时,智能灯光系统打开发生事件教室的照明灯,同时第一智能摄像头获取清晰的人脸图像,清晰的人脸图像传输给人脸识别模块,人脸识别模块将未识别的清晰人脸图像以及识别出的在校人员信息传输智能预警通知模块,智能预警通知模块将数据传输给学校保安室及校方管理人员,并发出声光报警,同时打开发生事件教室至保安室最短路径上的路灯,直至第二智能摄像头检测到保安和校方管理人员中的其中至少一个时,第一智能门锁打开教室门。
紧急安全事件以及其响应策略的设置,优点在于:通过人脸识别模块在学校录人员数据集中同时找到与之匹配的人员和无法与之匹配的人员,或者未找到与之匹配的人员,结合人体姿态识别结果,能够准确判断出紧急安全事件的发生,能够迅速发现和应对异常情况,提高学校的安全性和应急能力,一旦发生紧急安全事件,智能灯光系统会打开事件教室的照明灯,以提供足够的照明条件,同时,第一智能摄像头获取清晰的人脸图像,并传输给人脸识别模块进行进一步识别,如果识别出在校人员,系统会将未识别的清晰人脸图像以及识别出的在校人员信息传输给智能预警通知模块,智能预警通知模块将数据传输给学校保安室和校方管理人员,并触发声光报警,同时,系统还会打开从事件教室至保安室最短路径上的路灯,以确保相关人员能够快速到达现场,一旦第二智能摄像头检测到保安和校方管理人员中的其中至少一个,第一智能门锁将打开教室门,以便他们进入教室进行进一步的处理和调查,通过设定紧急安全事件的响应策略,能够实现快速的应对和处理,系统能够迅速启动警报和通知机制,提供清晰的人脸图像和相关信息,以便保安和校方管理人员能够快速做出决策和采取行动,同时,打开路灯和教室门,能够加快人员到达现场的速度,保障学校的安全和秩序。
以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以所述权利要求的保护范围为准。
最后:以上所述仅为本发明的优选实施例而已,并不用于限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
- 一种智慧校园信息管理系统
- 一种用于监控红外热像仪的监控终端
- 一种基于智慧校园的教室监控管理系统
- 一种基于云平台的智慧校园管理系统的数据监控装置