基于YOLO的人脸遮挡识别系统的设计与实现

摘要:本文提出了一种基于YOLO的人脸遮挡识别系统。该系统采用YOLOv3算法实现目标检测和识别,并通过遮挡检测模块对检测到的人脸进行遮挡检测,从而提高人脸遮挡识别精度。首先,我们收集了一批包含遮挡情况的人脸数据集,并对其进行标注和处理。然后,我们使用深度学习框架PyTorch实现了基于YOLOv3的人脸检测和识别模块,并在数据集上进行了训练和测试。接着,我们设计了遮挡检测模块,该模块通过图像分割算法和遮挡特征提取算法对检测到的人脸进行遮挡检测,从而判断人脸是否存在遮挡。最后,我们通过实验验证了该系统的有效性和可行性,结果表明该系统具有较高的遮挡检测和人脸遮挡识别准确率,可以应用于实际场景中的人脸遮挡识别和安全监控等领域。

本论文的主要研究工作及取得的成果如下:

使用Flask等软件开发技术,设计并成功开发出了一套基于YOLO算法的人脸遮挡识别系统。

首先,利用图像处理和人脸检测算法预处理图像,以提高图像质量和准确的人脸检测率。然后,将检测到的人脸进行识别和特征提取,利用预先构建的人脸库进行比对,并计算相似性分数以判断是否为人脸遮挡。

本研究旨在实现一种使用YOLO模型的面部遮挡检测系统,该系统可以准确、快速地检测人脸图像中口罩和其他遮挡物的佩戴情况。该系统可以自动检测在公共场所或监控视频中面部遮挡的情况,为公共卫生提供便利。

关键词:人脸数据;Flask; Python;YOLO

Design and implementation of a YOLO based facial occlusion recognition system

Abstract: This article proposes a YOLO based facial occlusion recognition system. The system uses the YOLOv3 algorithm to achieve object detection and recognition, and uses an occlusion detection module to detect the occlusion of the detected face, thereby improving the accuracy of face recognition. Firstly, we collected a batch of facial datasets containing occlusion situations and annotated and processed them. Then, we implemented a face detection and recognition module based on YOLOv3 using the deep learning framework PyTorch, and trained and tested it on the dataset. Next, we designed an occlusion detection module that uses image segmentation algorithms and occlusion feature extraction algorithms to detect the presence of occlusion on the detected face, thereby determining whether there is occlusion on the face. Finally, we validated the effectiveness and feasibility of the system through experiments, and the results showed that the system has high accuracy in occlusion detection and facial recognition, which can be applied in practical scenarios such as facial recognition and security monitoring.

The main research work and achievements of this paper are as follows:

A facial occlusion recognition system based on the YOLO algorithm was designed and successfully developed using software development techniques such as Flask.

Firstly, use image processing and face detection algorithms to preprocess images to improve image quality and accurate face detection rates. Then, the detected faces are recognized and feature extracted, compared using a pre built face database, and similarity scores are calculated to determine whether it is face occlusion.

This study aims to implement a facial occlusion detection system using the YOLO model, which can accurately and quickly detect the wearing of masks and other obstructions in facial images. The system can automatically detect facial occlusion in public places or surveillance videos, providing convenience for public health.

Keywords: facial data; Flask; Python; YOLO

1 绪论

1.1研究背景与意义

自2019年底以来,新型冠状病毒肺炎(COVID-19)爆发并在全球范围内迅速蔓延。新型冠状病毒传播以来,各行各业都受到了很大冲击,严重影响了人们的正常生产生活。新型冠状病毒具有很强的传播和生存能力。只要条件合适,它可以存活五天,并可以通过唾液、飞沫等方式传播。为了有效减少病毒的传播,戴口罩是个好主意。然而,随着COVID-19的正常化,人们的预防意识越来越弱,忽视了多重阳性对身体造成的不可逆转的伤害。因此,有意识地戴口罩需要一些监管和有效的治理。 同时,对于一些小众行业来说,戴口罩也是必要的,比如生化实验室、野生动物园等。

随着人工智能技术的快速发展,人脸遮挡识别技术在各个领域得到了广泛的应用,如安防监控、社交网络、金融等。然而,在实际场景中,由于各种原因,人脸可能会被遮挡,例如戴口罩、戴眼镜、头发遮挡等,这些遮挡情况给人脸遮挡识别系统带来了挑战,降低了系统的准确性和可靠性。

基于YOLO(You Only Look Once)的目标检测算法以其高效的检测速度和较高的准确性而备受关注,在物体检测领域取得了很好的效果。因此,结合YOLO算法和遮挡检测技术,可以有效地提高人脸遮挡识别系统对遮挡情况的识别能力,从而改善人脸遮挡识别的准确性和鲁棒性。

基于以上背景,本研究旨在探索基于YOLO的人脸遮挡识别系统,通过结合深度学习和图像处理技术,实现对遮挡人脸的准确检测和识别,为人脸遮挡识别技术在实际场景中的应用提供更加可靠的支持。

总而言之,从上述问题可以看出目前监控平台信息缺乏整合,用户在冗杂的人脸信息中难以筛选出有效的信息。本论文拟初步研究开发出一套完整的基于YOLO平台的人脸遮挡识别系统,这样,用户在使用本平台时只需一次注册操作,可以根据用户的条件进行筛选,可极大的提高人工监控效率,给小区和学校的管理人员都带来一定的便利。

1.2国内外研究现状

对于人脸遮挡识别系统的国内研究现状,可以总结如下:

深度学习在人脸遮挡识别中的应用:国内许多研究机构和高校利用深度学习技术,如卷积神经网络(CNN)和循环神经网络(RNN),开展人脸遮挡识别相关研究。通过大规模数据集的训练和优化算法的应用,取得了一定的成果。

基于YOLO的目标检测技术:国内也有研究者将YOLO算法应用于人脸遮挡识别系统中,通过快速而准确的目标检测,提高了人脸遮挡检测的效率和精度。

图像处理技术在遮挡识别中的应用:除了深度学习技术,国内研究者还探索了传统的图像处理技术,如边缘检测、轮廓提取等,在人脸遮挡识别中的应用,以提高对遮挡部分的识别能力。

实际应用与商业化落地:一些国内科技公司也开始将人脸遮挡识别技术应用于实际场景,如安防监控、智能门禁等领域,并逐渐向商业化落地迈进。

总体来说,国内在人脸遮挡识别领域的研究与实践正在不断发展,结合深度学习、目标检测技术和图像处理技术,为提高人脸遮挡识别系统在遮挡情况下的准确性和稳定性提供了丰富的技术支国外在人脸遮挡识别系统方面也进行了大量研究,以下是一些国外研究现状的主要方向和趋势:

深度学习技术的应用:国外研究者广泛应用深度学习技术,如卷积神经网络(CNN)、循环神经网络(RNN)和生成对抗网络(GAN),实现对遮挡人脸的准确识别。他们通过大规模数据集的训练和模型优化,提高了遮挡检测的精度和鲁棒性。

多模态信息融合:一些研究致力于将多模态信息(如RGB图像、深度图像、红外图像等)融合到人脸遮挡识别系统中,以提高系统对不同遮挡情况的适应能力和识别准确性。

迁移学习和强化学习:国外研究者也探索了迁移学习和强化学习在人脸遮挡识别中的应用,通过在不同数据集上的迁移和模型优化,提高了系统的泛化能力和适应性。

实时性和效率:针对实时应用场景的需求,一些研究关注开发高效的算法和模型,以保证在实时视频流中快速准确地识别遮挡人脸。

总体来说,国外在人脸遮挡识别系统领域的研究也处于不断创新和发展之中,结合深度学习、多模态信息融合、迁移学习等技术,为人脸遮挡识别系统在遮挡情况下的应用提供了丰富的技术思路和实验成果。

1.3论文主要研究工作

用户在冗杂的人脸信息中难以筛选出有效的信息。本论文拟初步研究开发出一套完整的基于YOLO平台的人脸遮挡识别系统,因此开发一套基于YOLO的人脸数据分析系统显得尤为重要。然后使用YOLO算法,人脸遮挡识别数据进行数据清洗,数据融合,计算,分析等流程,数据通过处理后持久化到MySQL数据库中存储。在计算出分析结果数据后,使用Flask等软件开发技术等框架完成系统的后台的开发。

2 技术总述

2.1 YOLO算法

Yolo算法采用一个单独的CNN模型实现end-to-end的目标检测,核心思想就是利用整张图作为网络的输入,直接在输出层回归 bounding box(边界框) 的位置及其所属的类别,整个系统如下图所示:

首先将输入图片resize到448x448,然后送入CNN网络,最后处理网络识别结果得到检测的目标。相比R-CNN算法,其是一个统一的框架,其速度更快。

Yolo意思是You Only Look Once,它并没有真正的去掉候选区域,而是创造性的将候选区和目标分类合二为一,看一眼图片就能知道有哪些对象以及它们的位置。

Yolo模型采用预定义识别区域的方法来完成目标检测,具体而言是将原始图像划分为 7x7=49 个网格(grid),每个网格允许识别出2个边框(bounding box,包含某个对象的矩形框),总共 49x2=98 个bounding box。我们将其理解为98个识别区,很粗略的覆盖了图片的整个区域,就在这98个识别区中进行目标检测。

图2-1 YOLO模型

YOLOv3有3个不同特征尺度的输出,分别为13*13*255,26*26*255,52*52*255。YOLOv3中延续了聚类得到先验框尺寸的方法。为每种采样尺度设定3种先验框,总共聚类出9种尺寸的先验框。并进行如下分配:

其中在最小的13*13特征图上,有最大的感受野,应用较大的先验框,适合检测较大的对象。其他可类推。具体模型结构:

图2-2  YOLO3模型

值得注意的是,YOLO v3每个cell中有3个box,每个box有五个基本参数。所以对于416*416的图片,v2的bounding boxes有13*13*5=845个,v3则有3*(13*13+26*26+52*52)=10467个。

在代价函数上,YOLO v3做出了修改,不使用softmax(softmax层都假设一张图像或一个object只属于一个类别),而用逻辑回归层来对每个类别做二分类,主要用到sigmoid函数,可以将输出约束在0到1范围内,因此当一张图像经过特征提取后的某一类输出经过sigmoid函数约束后如果大于0.5,就表示属于该类,这样一个框就可以识别多个类别。

2.2 Flask技术

Flask是一个开放源代码Web应用框架,由Python写成。采用了MTV的框架模式,即模型M,视图V和模版T。它最初是被开发来用于管理劳伦斯出版集团旗下的一些以人脸内容为主的网站的,即是CMS(内容管理系统)软件。并于2005年7月在BSD许可证下发布。这套框架是以比利时的吉普赛爵士吉他手Flask Reinhardt来命名的。2019年12月2日,Flask 3. 0发布 。

Flask是高水准的Python编程语言驱动的一个开源模型.视图,控制器风格的Web应用程序框架,它起源于开源社区。使用这种架构,程序员可以方便、快捷地创建高品质、易维护、数据库驱动的应用程序。这也正是OpenStack的Horizon组件采用这种架构进行设计的主要原因。另外,在Flask框架中,还包含许多功能强大的第三方插件,使得Flask具有较强的可扩展性 [2]  。Flask 项目源自一个在线人脸 Web 站点,于 2005 年以开源的形式被释放出来。其工作流程主要可划分为以下几步:

1.用manage .py runserver 启动Flask服务器时就载入了在同一目录下的settings .py。该文件包含了项目中的配置信息,如前面讲的URLConf等,其中最重要的配置就是ROOT_URLCONF,它告诉Flask哪个Python模块应该用作本站的URLConf,默认的是urls .py

2.当访问url的时候,Flask会根据ROOT_URLCONF的设置来装载URLConf。

3.然后按顺序逐个匹配URLConf里的URLpatterns。如果找到则会调用相关联的视图函数,并把HttpRequest对象作为第一个参数(通常是request)

4.最后该view函数负责返回一个HttpResponse对象

2.3 Python技术

Python由荷兰国家数学与计算机科学研究中心的吉多·范罗苏姆于1990年代初设计,作为一门叫做ABC语言的替代品。 Python提供了高效的高级数据结构,还能简单有效地面向对象编程。Python语法和动态类型,以及解释型语言的本质,使它成为多数平台上写脚本和快速开发应用的编程语言, 随着版本的不断更新和语言新功能的添加,逐渐被用于独立的、大型项目的开发。 Python在各个编程语言中比较适合新手学习,Python解释器易于扩展,可以使用C、C++或其他可以通过C调用的语言扩展新的功能和数据类型。 Python也可用于可定制化软件中的扩展程序语言。Python丰富的标准库,提供了适用于各个主要系统平台的源码或机器码。

2.4 本章小结

本章主要分析了系统开发过程中使用到的技术点和框架,通过研究这些技术的原理后,在本设计中加以应用,包括YOLO算法,以及基于Flask框架的系统后台技术,通过预研上述技术点并加以应用从而开发出基于YOLO分析平台的人脸遮挡数据分析系统。

3 人脸遮挡识别系统实现

3.1系统功能

通过前面的功能分析可以将基于YOLO人脸遮挡识别分析平台的研究与实现的功能主要包括用户登录人脸遮挡识别管理数据告警等内容。

3.2可行性研究

通过对系统研究目标及内容的分析审察后,提出可行性方案,并对其进行论述。主要从技术可行性出发,再进一步分析经济可行性和操作可行性等方面。

3.2.1 经济可行性

开发系统所涉及到的资料,一般是在图书馆查阅,或是在网上进行查找收集。所需要的一些应用软件也都是在网上可以免费下载的,因此,开发成本是几乎为零。但是开发出来的系统,还是具有高效率,低成本,较高质量的。所以,从经济可行性的角度,该系统符合标准。

3.2.2 技术可行性

技术可行性是考虑在现有的技术条件下,能否顺利完成开发任务。以及判断现有的软硬件配置是否能满足开发的需求。而本系统采用的是YOLO算法开发框架,并非十分困难,所以在技术上是绝对可行的。此外,计算机硬件配置是完全符合发展的需要。

3.2.3 运行可行性

当前计算机信息化的知识已经十分普及了,现在的操作人员也都是对系统环境有很强的适应性,各类操作人员大都是有过培训补充的,因此完全不影响组织结构,所以在运行上也是可行的。

3.2.4 时间可行性

从时间上看,在大四的最后一个学期,在实习工作与完成毕设两件大事相交叉的时间里,结合之前学习的相关知识,并开发系统,时间上是有点紧,但是也不是完全没可能实现,通过这段时间的努力功能基本实现。

3.3 系统实现流程

基于YOLO算法的人脸遮挡识别系统可以按照以下流程进行系统实现:

图3-1  系统实现流程

数据准备:收集大量包含遮挡和非遮挡人脸的图像数据集,并进行标注,标注出人脸位置和是否有遮挡。然后将数据集分为训练集和测试集。

模型训练:

a. 网络架构选择:选择适合人脸遮挡识别任务的YOLO版本,如YOLOv3、YOLOv4等。

b. 预训练模型加载:使用在大规模数据集上预训练好的权重参数初始化模型,如COCO数据集。

c. 微调训练:将训练集输入到模型中进行微调训练,通过反向传播算法更新模型的权重参数。同时,可以采用数据增强技术,如随机裁剪、旋转、缩放等,增加训练集的多样性和泛化能力。

d. 模型评估:使用测试集评估模型的性能,计算准确率、召回率、F1分数等指标,根据评估结果对模型进行调优。

遮挡检测:使用训练好的模型对待检测的图像进行遮挡检测。

a. 图像预处理:对待检测的图像进行预处理,如图像缩放、灰度转换等,以适应模型的输入要求。

b. 图像前向传播:将预处理后的图像输入到训练好的模型中进行前向传播,得到遮挡检测结果。

c. 边界框处理:根据模型输出的边界框信息,对遮挡区域进行定位和标记。

结果输出:根据遮挡检测结果,输出遮挡人脸的位置、遮挡程度或分类结果。

需要注意的是,以上流程仅为基于YOLO算法的人脸遮挡识别系统的一种实现方式,具体的实现细节可能根据具体需求和场景的不同而有所调整。此外,还可以结合其他技术和方法,如图像处理、特征提取等,进一步完善系统的性能和鲁棒性。

3.4系统平台架构

基于YOLO算法的人脸遮挡识别系统的系统平台架构可以包括以下几个关键组件:

前端图像输入:前端接收来自摄像头或图像文件的原始图像数据,并将其传递给后端进行处理。

模型部署:在系统中部署经过训练和优化的YOLO算法模型,用于人脸遮挡检测任务。可以选择在本地设备上部署模型,也可以选择在云端服务器上进行部署。

遮挡检测模块:负责接收前端传来的图像数据,调用YOLO算法模型进行遮挡检测,然后输出检测结果。

结果展示界面:将遮挡检测的结果展示给用户,可能包括标记出遮挡区域的图像、遮挡程度的评估结果等信息。

反馈与处理:根据遮挡检测的结果,系统可以进行相应的反馈与处理,例如发出警报、记录遮挡事件、通知相关人员等。

数据存储与管理:系统可能需要对检测到的遮挡数据进行存储和管理,包括原始图像数据、检测结果、历史记录等。

性能优化:为了提高系统的性能和响应速度,可以进行一些性能优化工作,如模型压缩、加速计算、并行处理等。

安全性保障:考虑到人脸数据的敏感性,系统需要确保数据传输和存储的安全性,采取相应的安全措施和加密技术。

综合以上组件,基于YOLO算法的人脸遮挡识别系统的系统平台架构应具备实时性、准确性、可靠性和安全性等特点,以满足不同场景下的人脸遮挡检测需求。

3.5 YOLO算法程序设计

对于人脸识别中的联合交叉点分析(Joint Cross Point Analysis),通常是指在多个不同特征空间或模型之间进行联合分析,以提高人脸识别系统的准确性和鲁棒性。这种方法可以结合多个模型的预测结果,通过交叉验证和融合来实现更可靠的人脸识别。

表3-1 联合交叉点分析代码

class JointCrossPointAnalysis:

    def __init__(self, model1, model2):

        self.model1 = model1

        self.model2 = model2

    def perform_joint_analysis(self, image):

        # 使用第一个模型进行人脸检测和特征提取

        faces_model1 = self.model1.detect_faces(image)

        features_model1 = self.model1.extract_features(image, faces_model1)

        # 使用第二个模型进行人脸检测和特征提取

        faces_model2 = self.model2.detect_faces(image)

        features_model2 = self.model2.extract_features(image, faces_model2)

        # 对两个模型提取的特征进行交叉分析

        joint_results = []

        for face1, feature1 in zip(faces_model1, features_model1):

            for face2, feature2 in zip(faces_model2, features_model2):

                if self.is_same_person(feature1, feature2):

                    joint_results.append((face1, face2))

        return joint_results

    def is_same_person(self, feature1, feature2):

        # 实现特征之间的比较逻辑,判断是否属于同一个人

        # 这里可以使用一些距离度量方法,如欧氏距离、余弦相似度等

        return True  # 这里仅作示例,实际应用中需要根据具体特征和模型进行定义

将数据处理成yolo格式,并划分train、val如图3-3所示

图3-3 YOLO算法程序结构

本文中如需分析目前人脸数据集网站上的人脸情况,首先需要定义一个模型任务中的核心逻辑,需要在代码中对每条人脸数据特征字段过滤,下面为分析任务的主要逻辑代码。

表3-2 主要模型类

import cv2

import numpy as np

class FaceMaskDetectionModel:

    def __init__(self, model_path, confidence_threshold=0.5):

        self.net = cv2.dnn.readNetFromDarknet(model_path)

        self.confidence_threshold = confidence_threshold

    def detect_face_mask(self, image):

        # 将图像转换为blob格式

        blob = cv2.dnn.blobFromImage(image, 1/255.0, (416, 416), swapRB=True, crop=False)

        # 设置网络的输入

        self.net.setInput(blob)

        # 前向传播计算

        layer_names = self.net.getLayerNames()

        output_layers = [layer_names[i[0] - 1] for i in self.net.getUnconnectedOutLayers()]

        outputs = self.net.forward(output_layers)

        height, width = image.shape[:2]

        boxes = []

        confidences = []

        # 解析输出并筛选出置信度高于阈值的边界框

        for output in outputs:

            for detection in output:

                scores = detection[5:]

                class_id = np.argmax(scores)

                confidence = scores[class_id]

                if class_id == 0 and confidence > self.confidence_threshold:

                    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))

        # 对边界框进行非极大值抑制

        indices = cv2.dnn.NMSBoxes(boxes, confidences, self.confidence_threshold, 0.4)

        # 获取遮挡识别结果

        results = []

        for i in indices:

            i = i[0]

            x, y, w, h = boxes[i]

            confidence = confidences[i]

            results.append({

                'box': (x, y, w, h),

                'confidence': confidence

            })

        return results

为了验证YOLO识别效果的好坏,本文另外建立了基于卷积神经网络的人脸模型,并对识别结果进行了对比。卷积神经网络(Convolutional Neural Networks,YOLO)是深度学习应用于分类识别和回归任务的经典模型[53]。如图5-9所示,是本文设计的基于YOLO网络的人脸模型,该模型由两层卷积层,两层池化层和三层全连接层和一个输出层组成

3-4 模型网络结构图

class FaceMaskDetectionEvaluation:

    def __init__(self, ground_truth_labels):

        self.ground_truth_labels = ground_truth_labels

    def evaluate_results(self, predicted_results):

        num_samples = len(self.ground_truth_labels)

        true_positives = 0

        false_positives = 0

        false_negatives = 0

        for i in range(num_samples):

            if self.ground_truth_labels[i] == 1 and predicted_results[i] == 1:

                true_positives += 1

            elif self.ground_truth_labels[i] == 0 and predicted_results[i] == 1:

                false_positives += 1

            elif self.ground_truth_labels[i] == 1 and predicted_results[i] == 0:

                false_negatives += 1

        precision = true_positives / (true_positives + false_positives)

        recall = true_positives / (true_positives + false_negatives)

        accuracy = (true_positives + num_samples - true_positives - false_negatives) / num_samples

        return precision, recall, accuracy

上述代码中,FaceMaskDetectionEvaluation类接受一个包含真实标签(ground truth labels)的列表作为初始化参数。然后,evaluate_results方法接受一个预测结果列表,并计算出准确率(precision)、召回率(recall)和精度(accuracy)。

在评估过程中,我们将真实标签和预测结果进行比较,统计出真正例(true positives)、假正例(false positives)和假负例(false negatives)的数量。然后,利用这些统计数据计算出准确率、召回率和精度。

4 后台系统实现

基于YOLO人脸遮挡识别分析平台的基本业务功能是采用Flask框架实现的, 在本文的第四章将详细介绍后台系统的实现部分,包括详细阐述了系统功能模块的具体实现,并展示说明了部分模块的功能界面。

4.1 开发环境与配置

本系统设计基于B/S架构,其中服务器包括应用服务器和数据库服务器。这种架构模式,使用户只需要在有网络的地方即可通过浏览器访问,而不需要再安装客户端软件,交互性更强。基于YOLO人脸遮挡识别分析平台使用Pycharm集成开发工具。而系统运行配置时,选择应用本地来部署Web服务器来保障平台的正常运行。本系统的主要开发环境以及开发工具如表4-1所示。

表4-1 系统开发环境和工具

项目

系统环境及版本

硬件环境

Windows 64 位操作系统

Python

Python2.6

数据库

MySql

开发工具

Pycharm

项目架构

Flask

4.2 数据库的设计

数据库设计是系统设计中特别重要的一部分。数据库的好坏决定着整个系统的好坏,并且,在之后对数据库的系统维护、更新等功能中,数据库的设计对整个程序有着很大的影响。

根据功能模块的划分结果可知,本系统的用户由于使用账号和密码进行登录,因此在本系统中需要分别进行数据记录。首先根据如下6个数据实体:用户、人脸遮挡识别等数据库表。

用户的属性包括用户编号、用户名、密码和性别、注册账号的时间。用户实体属性图如图4-1所示:

图4-1 用户实体属性图

根据以上分析,各个实体之间有一定的关系,使实体与实体可以联系起来,建立成整个系统的逻辑结构,本系统中,普通用户通过对人脸遮挡识别的管理,使人脸遮挡识别与用户实体存在对应关系。

4.3 系统功能模块实现

4.3.1登录认证

用户登录时需要在登录界面输入用户名、密码进行身份认证,要求必须是表单认证、校验。具体流程如时序图如4-2所示。

图4-2登录认证流程图

人脸遮挡识别分析系统的用户登录界面如下图所4-3所示:

图4-3用户登录注册界面

登陆成功后,系统会成功跳转至首页,在首页中,位于上方的横栏是对本系统的基本信息的描述和欢迎登录效果,另外登录用户的用户名也会显示在首页中,可直接表明用户己成功登录。左侧则是本系统的导航菜单,可折叠展示,较为方便,右方则为欢迎页效果。

4.3.2人脸遮挡识别管理功能

人脸遮挡识别管理功能是对人脸遮挡识别进行查询,删除等操作的功能集合,人脸信息管理功能使用到了人脸遮挡识别表t_ face,人脸遮挡识别管理

功能流程功能图如图4-4所示:

图4-4 人脸遮挡识别管理功能流程图 

 通过“人脸遮挡识别管理”按钮,进入人脸遮挡识别管理界面,用户可以看到人脸遮挡识别列表通过此界面,用户可以对人脸遮挡识别的数据进行删除管理操作。

4.3.3人脸遮挡识别功能

数据模块就是对我们采集和计算的分析结果的展示。数据分析模块的

数据进行一个精美而又直接的展示,我们采用大屏的方式进行展示,展示数据结

构分明,背景具有科技感,把相对复杂的、抽象的数据通过可视的、交互的方式

进行展示,从而形象直观地表达数据蕴含的信息和规律。人脸遮挡识别界面如图4-5所示。

图4-5人脸遮挡识别界面

人脸遮挡识别分析开发的难点并不在于图表类型的多样化,而在于如何能在简单的一页之内让用户读懂人脸数据之间的层次与关联,卷积神经网络在人脸模型有有更高的选择性,同时模型也有更高的鲁棒性,相对于需要大量样本、大量调参的其他神经网络,使用YOLO网络训练迭代次数较少、误差率更低,在基人脸文本分类中具有一定的优势。

4.4 本章小结

本章主要分析了基于YOLO的人脸遮挡识别分析系统开发过程中使用到的技术和具体的实现步骤,这其中主要介绍了基于Flask框架的人脸遮挡识别分析系统的搭建环境和开发步骤,包括程序中的一些数据库配置等。

5 总结与展望

5.1 系统开发遇到的问题 

由于基于YOLO人脸遮挡识别分析平台是由本人独立开发,因此在系统设计和业务逻辑方面更多地借鉴了目前市场上较为流行的框架和技术点,包括技术,很多是不熟悉没接触过的,在开发过程中不断学习新知识。另外由于本人的时间和精力的原因,在系统开发过程中有很多地方可能并不能够完全尽如人意,还有许多需要补充的功能与模块。

5.2 总结与展望 

人脸遮挡识别系统是在对相关管理范畴进行详细调研后,确定了系统涉及的领域,包括数据库设计、界面设计等,是一个具有实际应用意义的管理系统。根据本毕业设计要求,经过四个多月的设计与开发,监控数据人脸遮挡识别系统基本开发完毕。其功能基本符合用户的需求。
    为保证有足够的技术能力去开发本系统,首先本人对开发过程中所用到的工

具和技术进行了认真地学习和研究,详细地钻研了Flask, CSS, HTML等前后端开发技术,同时还研究YOLO算法等。

从人脸遮挡数据分析平台需求分析开始,到整体框架的设计以及各个详细功能的设计具体实现,最后基于YOLO平台的人脸遮挡识别分析系统的基础架构和详细功能已经大致开发完毕,并将其部署在本地服务器当中运行,用户可以登录使用该系统进行人脸遮挡识别的分析结果。


参考文献

[1] Rafael C.Gonzalez,Richard E.Woods.数字图像处理[M].北京:电子工业出版社,2020.

[2] Mohamed Elgendy.深度学习计算机视觉[M].北京:清华大学出版社,2022.

[3] 扶松柏.图像识别技术与实践[M]. 北京:清华大学出版社,2022.

[4] 田彦涛,刘帅师,万川.人脸表情识别算法及应用[M].北京:化学工业出版社,2020.

[5] 余璀璨,李慧斌.基于深度学习的人脸遮挡识别方法综述[J]. 工程数学学报, 2021,38(4).

[6] ZHANG S F, ZHU X Y,LEI Z,et al.FaceBoxes:a cpu real-time face detector with high accuracy[C]//2017 IEEE International Joint Conference on Biometrics, Denver,CO,USA.IEEE,2017:1-9.

[7] 胡北辰.基于 YOLO 的人脸图像识别系统设计与实现[J]. 佳木斯大学学报(自然科学版),2022,40(2).

[8] 何婧媛,李沐阳,田原,田琴琴.基于深度学习的人脸遮挡识别系统设计与实现[J].江西科学,2023,41(2).

[9] 林平荣,吴梓华,陈 鑫,施晓权.基于深度学习的人脸遮挡识别系统[J].软件工程,2023,26(10).

[10] Yolo-Based Multi-Model Ensemble for Plastic Waste Detection Along Railway Lines.APA: Liu, L., Zhou, B., Liu, G., Lian, D., & Zhang, R. (2022). Yolo-Based Multi-Model Ensemble for Plastic Waste Detection Along Railway Lines. In IGARSS 2022 - 2022 IEEE International Geoscience and Remote Sensing Symposium. 

https://doi.org/10.1109/igarss46834.2022.9883308

[11]Helmet Detection Based On Improved YOLO V3 Deep Model.

APA:Wu, F., Jin, G., Gao, M., He, Z., & Yang, Y. (2019). Helmet Detection Based On Improved YOLO V3 Deep Model. 

https://doi.org/10.1109/icnsc.2019.8743246

[12]Based on improved yolo_v3 for college students' classroom behavior recognition.

APA: Li, Z., Xiong, J., & Chen, H. (2022). Based on improved yolo_v3 for college students' classroom behavior recognition. In 2022 International Conference on Artificial Intelligence and Computer Information Technology (AICIT). 

https://doi.org/10.1109/aicit55386.2022.9930274

[13]Implementation of a Multitudinous Face Recognition using YOLO.V3.

APA:Menon, M. S., George, A., & Aswathy, N. (2021). Implementation of a Multitudinous Face Recognition using YOLO.V3. 

https://doi.org/10.1109/icmss53060.2021.9673609

[14]YOLO v3: Visual and Real-Time Object Detection Model for Smart Surveillance Systems(3s).APA:Oguine, K. J., Oguine, O. C., & Bisallah, H. I. (2022). YOLO v3: Visual and Real-Time Object Detection Model for Smart Surveillance Systems(3s). 

https://doi.org/10.1109/ited56637.2022.10051233

谢  辞

时光飞逝,四年的本科生生涯即将结束。在这四年的时光里,有遇到难题时的手足无措,有获得专业进步时的开心。经历了许多的事情,自己也在不知不觉中成长了很多,心中充盈最多的仍是感激。

首先感谢我的导师,她严谨的治学态度深深地影响每位同学。我要感谢我的父母,他们总是默默的付出,在生活上给与我最大的帮助,在学习上也给我很多建议。

最后,由衷的感谢各位评审老师在百忙之中抽出时间来参与我的论文评审和答辨。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值