1. 引言
日常生活中,我们常遇到这样的场景:下课之后,同学们都没有随手关灯的习惯,于是教室里的灯就这样一直亮着,直到有管理员来才会把教室的灯都关上,这在很大程度上浪费了人力资源和自然资源。对此,已有学者对节能灯控系统进行过研究 [1] ,有基于ZigBee的节能建筑灯控系统,也有基于单片机和光敏传感器用以实现楼道行人通过时灯的亮灭的节能灯控系统,但这些系统在效果和应用上都不是很理想,容易受到环境因素的影响,此外也不能选择性地开启所需区域的灯,不能达到良好的节能效果。因此,我们提出了基于机器视觉的教室节能灯控系统。机器视觉(machine vision) [2] 又称计算机视觉,主要用计算机来模拟人的视觉功能,但并不仅仅是人眼的简单延伸,更重要的是具有人脑的一部分功能——从客观事物的图像中提取信息,进行处理并加以理解,最终用于实际检测、测量和控制等领域。人脸检测属于计算机视觉的范畴,其主要研究方向是人脸识别,随着人脸识别在各个领域应用需求越来越大,人脸检测技术也作为一个单独的研究方向火热发展起来 [3] 。本文的研究思路是借助教室监控系统采集教室人物目标及位置情况通过图像处理算法进行灯控,其中利用人脸识别技术进行人物目标及位置判断是一个创新点。研究目标是灯控系统能有效地实现教室无人,灯自动熄灭,当人走到教室前、中、后等不同区域时对应的灯会自动打开,对节约资源和促进教室智慧化具有重要意义。
2. 智慧教室灯控系统的总体结构
如图1所示,本文的智慧教室节能灯控实验系统由前端视频图像采集、PC机处理、传输系统和树莓派灯控单元几个部分组成。前端USB摄像头负责教室目标图像的采集,PC机作为智慧灯控系统的数据处理中心,融入了图像识别、区域划分,传输协议等算法,完成数据传输、人物识别处理、位置检测及对目标进行实时定位、向灯控端返回处理结果等功能。其中人物识别处理采用的是基于级联分类器的人脸识别算法。树莓派灯控端搭载有Linux系统、无线传输协议等模块,构成控制系统硬件平台,接收来自PC处理端的数据,进而对不同区域内的灯实施控制,所有模块共同完成智慧教室灯控的基本功能。
3. 基于级联分类器的人脸检测
本文实验采用本地PC机作为图像处理中心,核心处理算法为基于级联分类器的人脸识别算法。

Figure 1. Structure diagram of the intelligent classroom lighting control system
图1. 智慧教室灯控系统结构图
3.1. 人脸检测算法分类
人脸检测的算法主要分为两大类,基于知识和基于统计 [4] ,基于知识的人脸检测方法主要包括:模板匹配、人脸特征、形状与边缘、纹理特征,颜色特征。即将人脸看成不同特征的特定组合,通过人脸中眼睛、嘴巴、鼻子、耳朵等特征及其组合关系来检测人脸 [5] ;基于统计的人脸检测方法主要包括:主成分分析与特征脸法、神经网络模型、隐马尔可夫模型、支持向量机,Haar算法等。主要将人脸看成统一的二维像素矩阵,通过大量的样本构建人脸子空间,且利用相似度的大小来判断人脸是否存在。本文实验中的人脸识别用到的是OpenCv官方训练好的基于统计的人脸识别器——Haar级联分类器 [6] [7] 。
3.2. 人脸检测算法实现
Haar级联分类器的主要实现步骤如下:1) 提取Haar特征;2) 利用积分图法对Haar特征提取进行加速;3) 使用Adaboost算法训练强分类器;4) 使用筛选式级联把强的分类器级联在一起,从而提高检测准确度 [8] 。OpenCV-ml模块中包含了很多分类、聚类的算法 [9] ,本实验通过调用Cascade Classifier类的haarcascade_frontalface_alt2.xml文件,将前端摄像头采集到的图像送入PC端利用软件算法实现加载人脸模型进行人脸检测,并将人脸区域用外接矩形框标识出来,如图2所示。

Figure 2. Face detection results display
图2. 人脸检测结果显示
4. 智慧教室灯控系统的硬件设计
4.1. 前端采集及处理模块
前端采集单元采用的是C270c网络摄像头,能够清晰地拍摄场景内的目标信息,用于智慧灯控系统对目标图像的采集。实时采集到的信息存储在处理中心PC机上并由相应的算法进行分析和处理。前端采集流程图如图3所示。

Figure 3. Front-end acquisition flow chart
图3. 前端采集流程图
4.2. 控制模块
灯控模块采用树莓派(3B+e14)作为中央控制单元,搭载Linux系统,通过无线通信协议与PC机进行交互,实现对前端模块信息处理结果的接收和分析,进一步对教室内各个区域灯的亮灭实施控制。
4.3. 无线通信模块
无线通信模块是由树莓派内部电路构成,它使用SOCKET通信和TCP通信技术,完成控制系统和处理器之间的相互连接。前端摄像头采集得到的视频流经PC机处理后,处理得到的信息将通过无线传输协议传输到树莓派控制单元,硬件系统照片图如图4所示。
5. 智慧教室灯控系统软件设计
本系统软件的设计由两部分组成,一部分是在PC机上实现机器视觉处理算法,如图5软件实现流图所示,视觉处理包括对采集到的视频图像流进行预处理、检测人脸、区域划分和分类识别的功能。首先,PC端调用USB摄像头,获取实时画面,对视频的每一帧进行预处理,即图像灰度化,以提高计算机计算性能。然后利用人脸检测算法将视频中的人脸信息提取出来,这里是对视频中间隔一定数量的帧进行人脸识别。最后对一帧视频的像素进行区域划分,将识别到的人脸信息在区域上进行判断,根据判断结果输出不同区域的信号以传输到树莓派控制单元。其中人脸识别部分采用的是级联分类器检测灰度图像中的人脸,在视频的每一帧中检测人脸后,输出人脸区域的外接矩形框,取矩形框的中点坐标来判断人体目标所在教室区域。

Figure 5. Software implementation flow diagram
图5. 软件实现流图
另一部分则是服务器端和客户端的通信。通过传输协议将PC机处理后的数据发送到树莓派控制单元,树莓派作为服务器端创建TCP服务器,创建服务器套接字,将套接字与地址绑定,PC机作为客户端访问服务器。服务器端相应代码处输入客户端IP地址,客户端相应代码处输入服务器端地址,运行服务器端代码,出现等待连接,再运行PC机端的主程序代码,实现服务器端和客户端的通信。
6. 系统测试与分析
6.1. 实验设置
由于条件有限,测试实验使用一寸照片来模拟教室内的人物目标,搭建教室模型(教室内包含不同区域下小灯所在的对应位置)作为实验的测试系统(帧速为50帧每秒),如图6所示。摄像头采集到视频图像信息,传送到本地PC机,通过Python程序代码调用OpenCv人脸模型库,加载人脸模型,通过Haar级联分类人脸检测算法detectMultiScale检测人脸,并用rectangle算法将人脸框出来,输出人脸框的坐标,再找到中心点的坐标判断其所属区域。对于区域的划分,使用智能划分算法,将视频流的一帧取出,输出其像素值,再根据教室模型中小灯所在位置将其进行区域划分(即图片被分割为九个区域:后左、后中、后右、中左、中中、中右、前左、前中、前右)判断出人脸所在区域后输出定义的data数据(分别对应为:“BL”“BC”“BR”“CL”“CC”“CR”“FL”“FC”“FR”)。最后在树莓派端和PC机端进行TCP通信,将PC机端进行图像处理后得到的data数据传输到树莓派控制端,树莓派端对应的GPIO口收到相应的数据信号后点亮LED小灯,直到收到下一个数据信号后再次点亮对应的小灯;当PC端没有检测到人脸时,继续实时对视频流进行检测,但无数据信号发送到树莓派端,此时树莓派端对小灯不作出控制。
6.2. 区域小灯点亮测试
本次实验环境为搭建的模拟教室模型,以一寸照代表进入教室的同学,测试分为三部分,第一部分为无人进入教室时,摄像头检测不到人脸,此时没有数据通过通信协议传输到控制端,控制端没有收到触发小灯点亮的信号,小灯处于关闭状态(如图7所示)。第二部分测试为在“FR”(前右)区域放置一寸照,当摄像头拍摄到照片时,PC机端检测到人脸,此时将通过通信协议输出信号到控制端,控制端收到信号将启动小灯,将其点亮(如图8所示)。第三部分是在上一个实验的基础上,将照片移到“CL”(中左)区域后,上一个小灯熄灭,照片所在区域下对应的小灯点亮(如图9所示),且上一测试区域小灯熄灭,其原理同上一个实验一致。

Figure 7. PC-side processing and front-end acquisition diagram when there is no one
图7. 无人时PC端处理及前端采集图

Figure 8. Experiment 1 experimental phenomenon diagram
图8. 实验一实验现象图

Figure 9. Example 2 experimental phenomenon diagram
图9. 实例二实验现象图
由以上实验现象看出:在没有放入带人脸照片时小灯不会被开启;放入照片后实现了区域小灯在检测到人脸后的自动开启。然后,在一定时间段内,系统再继续通过对视频流的读取进行后续的人脸检测,继续控制下一区域对应灯的开启。有效模拟了自习模式下,单个学生不断进入或离开教室对应区域时,实现智能开灯/关灯控制的情况。
基金项目
贵州大学“SRT计划”项目(贵大SRT 20号);贵州省科技计划项目(黔科合基础[2019] 1099号)。
NOTES
*通讯作者。