口罩检测算法研究现状

简介: 近年来,随着人工智能的快速发展,基于深度学习的目标检测算法有着越来越广泛的应用,由于深度学习算法在真实环境中的鲁棒性远超过传统视觉算法,更适合应对现实环境中的各种复杂情况。

     作为目标检测任务,几乎所有的通用目标检测算法都可以用于口罩检测,不过由于各类算法的模型复杂度以及检测精度之间存在巨大差异,导致它们在检测过程中可能会面临检测速度过低或者检测精度不足等问题。

E7L[VJAGV%O(0(NL`2CJ0IS.png

     R-CNN 算法是 Girshick 等人于 2015 年提出的两阶段通用目标检测算法,是早期目标检测领域的代表作之一。R-CNN 算法首先在区域提议阶段生成 2000个左右的候选区域,并将每个候选区域缩放至227 × 227的固定尺寸之后输入CNN 模型进行特征提取,然后将输出的特征向量使用支持向量机(Support Vector Machine,SVM)进行分类,最后使用边界框回归生成的预测参数对原始候选区域进行校正,以获取最终的预测框。R-CNN 算法的步骤相当繁琐,模型训练耗时极为严重而且中间步骤会生成大量的临时文件,尤其占用磁盘空间,最后的检测速度也相当不理想,在常规 GPU 上面预测单张图片的耗时高达几十秒。鉴于R-CNN 算法的上述缺点,Girshick 又对其进行了部分改进并提出了 Fast R-CNN算法,Fast R-CNN 在区域提议阶段的处理类似 R-CNN 算法,但之后直接将归一化处理的输入图像送入 CNN 模型进行特征提取,并建立候选区域与最后一个卷积层的输出特征图之间的映射关系,然后使用新增的 ROI 池化层生成固定尺寸的特征向量,最后使用多任务联合损失函数对 CNN 模型进行训练。R-CNN 算法生成的多个候选区域之间存在大量的重叠部分,而使用 CNN 模型逐一对候选区域提取特征必然会造成大量的冗余计算,Fast R-CNN 则将输入图像归一化后直接输入 CNN 模型,并建立候选区域与输出特征图之间的映射关系以实现特征值的共享,节省了大量的时间、空间资源。而 ROI 池化层的增加则不再需要对输入图像进行缩放操作,避免了尺度缩放带来的信息丢失问题。Ren 等人在 Fast R-CNN 算法的基础上进一步改进并提出了 Faster R-CNN 算法,Faster R-CNN 使用区域提议网络(Region Proposal Networks,RPN)生成多个目标先验框,并使用逻辑回归对先验框进行二分类(前景,背景),然后进行边界框回归以校正其位置信息,得到数量更少且更加准确的候选框,最后同样通过多任务联合损失进行 CNN 模型的训练。Faster R-CNN 算法使用 CNN 生成候选区域,使候选区域的数量由原来的 1000~2000 个降低至大约 300 个,大幅提升了算法效率,在检测精度和检测速度上实现了对 Fast R-CNN 算法的双向超越。不过需要注意的是,两阶段检测算法由于本身检测策略的局限性,执行步骤繁琐、网络结构复杂的缺点难以规避,将 Faster R-CNN 等两阶段检测算法应用于口罩检测任务,几乎不可能满足该任务的实时性要求。

     不同于 Faster R-CNN 等两阶段检测算法,SSD算法仅使用单个深度 CNN模型对输入图像进行目标检测,在训练阶段,将边界框的输出空间离散化为一系列不同尺度、长宽比的候选框;在测试阶段,生成每一个候选框的类别得分与位置调整参数。除此之外,SSD 还使用不同尺度的特征图来预测多种尺寸的目标,提高了对浅层网络的细节信息的利用率,增强了算法对小尺寸目标的鲁棒性。SSD 算法在 PASCAL VOC数据集(VOC2007+VOC2012)和 COCO 数据集上以512 × 512的输入尺寸分别获得了 74.95 和 46.4%的 mAP,比 Faster R-CNN 算法分别提高了 4.5%和 3.7%,并且在检测速度上实现了对 Faster R-CNN 算法的大幅超越。

      YOLOv2 算法是 Redmon 等人在前作 YOLO的基础上改进而来的单阶段目标检测算法,它使用了包含“跳跃”结构的全新骨干网络 Darknet19,并且引入了先验框(anchor box)、多尺度特征层、批量归一化 (Batch Normalization)和多尺度联合训练等概念或训练策略,在 VOC 2007 数据集上取得了比 YOLO、SSD 和 Faster R-CNN 等当时的主流算法更优的检测效果。

      Retinaface算法是 Deng 等人提出的单阶段像素级人脸检测算法,作者在WIDER FACE人脸检测数据集中添加了 5 个额外标注点以引入用于人脸对齐的额外监督损失函数,并新增了预测 3D 人脸信息的自监督解码分支,然后结合特征金字塔网络(Feature Pyramid Networks,FPN)实现多尺度特征的融合以增强算法对小尺寸目标的感知能力,最终在 WIDER FACE 数据集上取得了非常优秀的检测效果。作为专门的人脸检测算法,RetinaFace 对人脸目标有着极强的感知能力,但是由于口罩目标缺失了很多人脸面部信息,尤其是关键的口、鼻部分的细节信息基本被口罩遮挡严实,所以 RetinaFace 对口罩目标的表达能力非常一般,将其直接用于口罩检测任务很难满足该任务的检测精度要求。牛作东等人在 RetinaFace 算法的基础上加入了口罩目标类别并对分类损失函数进行了改进,然后在 RetinaFace 的特征金字塔模块中引入注意力机制以提高特征层对目标信息的表征能力并减少无用信息的干扰,算法在口罩目标上的检测精度为 84.7%,相比于 RetinaFace 提高了 8.2%,低于人脸目标的检测精度 90.6%,不过 RetinaFace本身复杂的网络结构以及注意力机制的添加也导致了算法的实时检测速度并不理想。      

     YOLOv3算法是目标检测领域里具有里程碑意义的巨作,之后的YOLOv3-tiny、YOLOv4 和 YOLOv4-tiny 等常见算法均由 YOLOv3 发展而来。相比之前的YOLO 系列算法,YOLOv3 算法采用了全新的骨干网络 Darknet53(一共包含 53 个卷积层),Darknet53 最重要的特点是引入了 ResNet 的残差思想,通过多个残差块的堆叠缓解深度卷积神经网络中的梯度消失或梯度爆炸问题,让神经网络的优化变得更加容易。YOLOv3 算法骨干网络 Darknet53由大量的残差块堆叠而来,自上而下依次包含了 1、2、8、8、4 个不同尺寸的残差块,这也是 YOLOv3 算法模型参数量巨大的重要原因。YOLOv3 算法使用 FPN作为特征增强网络,对不同尺度的特征层进行上采样之后加以堆叠以达到特征融合的目的,最后输出三个不同尺度的预测特征层用于目标检测框的解码工作。作为通用目标检测算法,YOLOv3 可以应用于口罩检测任务,其检测速度略优于改进的RetinaFace 算法,但仍旧不够理想,在 GTX 1050Ti GPU 上的测试结果低于 18 FPS,复杂的网络结构仍然是 YOLOv3 算法检测速度提升过程中的阻碍。王艺皓等人 在 YOLOv3 算法的基础上引入了 CSPNet 结构]对 YOLOv3 的骨干网络 Darknet53 进行改造以降低网络的参数量,在改造的骨干网络之后加入了改进的空间金字塔结构,并对多尺度特征预测网络进行优化以实现特征增强,然后用于口罩检测任务,相比 YOLOv3 算法实现了检测精度和检测速度的小幅度提升,不过作者也提到了算法采用的数据集的背景相对单一(均来自理想光照情况),难以扩展到复杂的多场景口罩检测任务中去,应用场景比较受限。

     YOLOv4算法由Bochkovskiy等人对YOLOv3算法进行一系列改进而来,包括了网络结构的优化(骨干网络由 Darknet53 变为 CSPDarknet53、空间金字塔结构的引入等)以及众多训练策略(Mosaic 数据增强方法、CIoU 损失函数、Mish 激活函数等)的引入,在 COCO 数据集上的 mAP 达到了 65.7%,相比YOLOv3 有 7.8%的大幅提升。不过 YOLOv4 算法整体上并没有对 YOLOv3 进行大刀阔斧的改动,两种算法的网络结构比较类似,网络参数量上面 YOLOv4 算法甚至要略大一点,这导致了它的实时检测速度依旧不理想,在同样的 GPU(GTX 1050Ti GPU)上的测试结果比 YOLOv3 降低了 3~6 FPS。

      YOLOv3-tiny 算法是 YOLOv3 算法的简化版本,它对 YOLOv3 算法的骨干网络 Darknet53 进行了大幅改动,预测特征层由三个减少为两个,并使用了更为朴素的特征融合策略。YOLOv3-tiny 算法的网络结构如图 1.3 所示,可以看到,它的骨干网络几乎不再具有 Darknet53 的影子:不再使用残差网络结构,仅由简单的卷积层和池化层堆叠而成。YOLOv3-tiny 算法结构一共包含了 13 个卷积层,6 池化层和 2 个预测特征层,相比 YOLOv3 算法大幅简化,甚至过于简化,这为其带来了非常优秀的检测速度(YOLOv3 的 5~6 倍),但遗憾的是 YOLOv3-tiny算法的检测精度非常一般,即使应用于类别较少的检测任务也难以得到令人满意的效果。正如 YOLOv3-tiny 算法是由 YOLOv3 算法简化而来,YOLOv4-tiny 算法则是由 YOLOv4 算法简化而来的。不过相比 YOLOv3-tiny 算法简单粗暴、大刀阔斧式的简化,YOLOv4-tiny 算法采用的模型尺度缩放策略更加有效,在减少YOLOv4 算法的骨干网络 CSPDarknet53 中的残差块的个数以及堆叠次数的同时保留了网络的残差结构以及 CSPNet 结构,这让 YOLOv4-tiny 算法在检测精度和检测速度之间上达到了比 YOLOv3-tiny 算法更好的平衡。

相关实践学习
基于阿里云DeepGPU实例,用AI画唯美国风少女
本实验基于阿里云DeepGPU实例,使用aiacctorch加速stable-diffusion-webui,用AI画唯美国风少女,可提升性能至高至原性能的2.6倍。
相关文章
|
17天前
|
算法 JavaScript 前端开发
在JavaScript中实现基本的碰撞检测算法,我们通常会用到矩形碰撞检测,也就是AABB(Axis-Aligned Bounding Box)碰撞检测
【6月更文挑战第16天】JavaScript中的基本碰撞检测涉及AABB(轴对齐边界框)方法,常用于2D游戏。`Rectangle`类定义了矩形的属性,并包含一个`collidesWith`方法,通过比较边界来检测碰撞。若两矩形无重叠部分,四个条件(关于边界相对位置)均需满足。此基础算法适用于简单场景,复杂情况可能需采用更高级的检测技术或物理引擎库。
49 6
|
15天前
|
机器学习/深度学习 数据采集 搜索推荐
机器学习在智能推荐系统中的个性化算法研究
机器学习在智能推荐系统中的个性化算法研究
|
16天前
|
机器学习/深度学习 人工智能 自然语言处理
深度学习中的自适应学习算法研究与应用
在深度学习领域,传统的静态模型在处理动态环境和非平稳数据时面临挑战。本文探讨了自适应学习算法在深度学习中的重要性及其应用。通过分析自适应学习算法在模型参数、损失函数和数据分布上的应用,展示了其在提升模型鲁棒性和泛化能力方面的潜力。具体讨论了几种代表性的自适应学习方法,并探索了它们在现实世界中的应用案例,从而展示了其在处理复杂问题和动态数据中的效果。
32 0
|
26天前
|
算法 计算机视觉
图像处理之角点检测算法(Harris Corner Detection)
图像处理之角点检测算法(Harris Corner Detection)
18 3
|
8天前
|
算法 C++ 计算机视觉
详细解读Canny检测算法与实现
详细解读Canny检测算法与实现
10 0
|
13天前
|
机器学习/深度学习 算法 语音技术
基于语音信号MFCC特征提取和GRNN神经网络的人员身份检测算法matlab仿真
**语音识别算法概览** MATLAB2022a中实现,结合MFCC与GRNN技术进行说话人身份检测。MFCC利用人耳感知特性提取语音频谱特征,GRNN作为非线性映射工具,擅长序列学习,确保高效识别。预加重、分帧、加窗、FFT、滤波器组、IDCT构成MFCC步骤,GRNN以其快速学习与鲁棒性处理不稳定数据。适用于多种领域。
|
14天前
|
机器学习/深度学习 算法 计算机视觉
基于ADAS的车道线检测算法matlab仿真
**摘要:** 基于ADAS的车道线检测算法利用Hough变换和边缘检测在视频中识别车道线,判断车道弯曲情况,提供行驶方向信息,并高亮显示。在MATLAB2022a中实现,系统包括图像预处理(灰度化、滤波、边缘检测)、车道线特征提取(霍夫变换、曲线拟合)和车道线跟踪,确保在实时场景中的准确性和稳定性。预处理通过灰度转换减少光照影响,滤波去除噪声,Canny算法检测边缘。霍夫变换用于直线检测,曲线拟合适应弯道,跟踪则增强连续帧的车道线检测。
|
21天前
|
机器学习/深度学习 监控 算法
基于yolov2深度学习网络的昆虫检测算法matlab仿真,并输出昆虫数量和大小判决
YOLOv2算法应用于昆虫检测,提供实时高效的方法识别和定位图像中的昆虫,提升检测精度。核心是统一检测网络,预测边界框和类别概率。通过预测框尺寸估算昆虫大小,适用于农业监控、生态研究等领域。在matlab2022A上运行,经过关键升级,如采用更优网络结构和损失函数,保证速度与精度。持续优化可增强对不同昆虫的检测能力。![image.png](https://ucc.alicdn.com/pic/developer-ecology/3tnl7rfrqv6tw_e760ff6682a3420cb4e24d1e48b10a2e.png)
|
26天前
|
算法 计算机视觉
图像处理之霍夫变换圆检测算法
图像处理之霍夫变换圆检测算法
14 0
|
4天前
|
算法 安全 数据库
基于结点电压法的配电网状态估计算法matlab仿真
**摘要** 该程序实现了基于结点电压法的配电网状态估计算法,旨在提升数据的准确性和可靠性。在MATLAB2022a中运行,显示了状态估计过程中的电压和相位估计值,以及误差随迭代变化的图表。算法通过迭代计算雅可比矩阵,结合基尔霍夫定律解决线性方程组,估算网络节点电压。状态估计过程中应用了高斯-牛顿或莱文贝格-马夸尔特法,处理量测数据并考虑约束条件,以提高估计精度。程序结果以图形形式展示电压幅值和角度估计的比较,以及估计误差的演变,体现了算法在处理配电网状态估计问题的有效性。