随着教育信息化水平的不断提高,在高校的日常教学和管理中,监控摄像头得到了越来越多的应用,从而引发了对人数统计方法的大量研究。然而,大多数人数统计方法不仅难以在精度和速度方面取得均衡的结果,而且还不能满足实际场景的应用需求。
本文主要工作是针对教室场景开发出一个基于监控图像的人数统计软件来反映学生的出勤率。由于统计结果会受到监控图像的画质和光线的影响,本文对图像进行了灰度化和亮度增强的预处理操作;另外,监控图像无法完整获取学生人头轮廓信息,本文选择了检测精度较高且方便识别的人脸作为人数统计的检测对象,在人脸特征提取方面采用了Haar特征提取方法,在人脸检测方面使用了目前准确度比较出色的多任务级联卷积神经网络(MTCNN)。但由于检测速度较慢和漏检情况的出现,本文及时的对MTCNN进行了一些优化。
最后通过自行搭建的环境和采集的数据进行实验。实验表明,优化后MTCNN人脸检测算法能够基本解决均衡精度和速度的问题,并在教室人数统计的测试集上最终取得了90%的精确度。
本文为了实现一个实时性较好、准确度较高并且适用于教室场景的人数统计方法,在对比分析各种方法后,采用了容易识别的人脸作为目标检测对象,同时利用深度学习来训练检测模型。在研究过程中,首先对人脸检测的图像进行了预处理操作,然后使用了Haar来提取人脸特征,最后使用MTCNN对人脸特征分类并进行关键点对齐来检测人脸。虽然在准确度和速度上有所提高,但也存在着漏检的情况,需要对检测结果进行优化,并以此设计和开发了一个人数统计的工具软件。通过大量的实验表明,该软件能够基本满足需求。
本文基于深度学习的教室人数统计软件在内容上主要分为四章,具体安排如下:
第1章分别介绍了课题的背景及意义和国内外研究现状,随后给出了该论文的主要内容和组织结构安排。
第2章对图像预处理的常用算法和深度学习的基础理论做了具体的介绍。
第3章对传统的两个人脸检测算法进行简单介绍和分析,然后详细介绍了MTCNN网络的各个模型并对其进行了简要评价。最后针对教室上课场景中学生对象的研究情况,对MTCNN检测网络的进行改进来满足高校教室这一特定场景下的人脸检测需求。
第4章首先对实验的环境、数据的采集和处理进行了详细介绍,其次对以改进后的MTCNN检测网络为核心设计的教室人数统计的软件需求及结构和算法设计进行了简要介绍,最后对其实验结果进行分析。
(1)构建级联分类器,使用训练好的数据检测人脸
var face = new CascadeClassifier("haarcascade_frontalface_alt.xml");
(2)灰度化处理
CvInvoke.CvtColor(img,img2,Emgu.CV.CvEnum.ColorConversion.Bgr2Gray);
(3)亮度增强
CvInvoke.EqualizeHist(img2, img2);
(4)标注人脸框,并将人脸图片截取出来
gm.DrawRectangle(new Pen(Color.Orange, 3), item);
var bmpOut = new Bitmap(item.Width, item.Height, System.Drawing.Imaging.PixelFormat.Format24bppRgb);
g.DrawImage(b, new Rectangle(0, 0, item.Width, item.Height), new Rectangle(item.X, item.Y, item.Width, item.Height), GraphicsUnit.Pixel);
g.Dispose();
string imageurl = Guid.NewGuid().ToString().Replace("-", "");
bmpOut.Dispose();
if ((left + item.Width) > panel1.Width) {
left = 0;top = maxHeight + top;
maxHeight = 0;
}
if (maxHeight <= item.Height) {
maxHeight = item.Height;
}
PictureBox pic = new PictureBox();
pic.Left = left;
pic.Top = top;
pic.Width = item.Width;
pic.Height = item.Height;
panel1.Controls.Add(pic);
left = left + item.Width;
(5)统计所有人脸数量
int count = 0;
var b = img.ToBitmap();
var left = 0;
var top = 0;
var maxHeight = 0;
using (Graphics gm = Graphics.FromImage(img3)) {
foreach (var item in facesDetected) {
count++;
}
}
674




被折叠的 条评论
为什么被折叠?



