一个基于PaddlePaddle深度学习框架的口罩佩戴图像识别模型

2022-07-07 06:46谢美英
现代信息科技 2022年4期
关键词:卷积准确率神经网络

摘  要:后疫情时代的到来,口罩佩戴已经成为学校、商场、食堂等各公共场所的常规防控手段。为提高防控效率和准确率,研究搭建一个基于百度飞浆深度学习平台的口罩佩戴图像识别模型。该文先收集口罩佩戴人像图片样本,采用卷积神经网络VGG算法训练模型,实现判断该静态人像是否规范佩戴口罩的检测功能,并对判断结果的准确性进行了评估。实验结果表明,VGG卷积神经网络对判断人像是否佩戴口罩,具有比较快速、准确的识别能力,具备广泛应用的价值。

关键词:PaddlePaddle;卷积神经网络;VGG;口罩佩戴

中图分类号:TP391.4         文献标识码:A文章编号:2096-4706(2022)04-0111-04

A Mask Wearing Image Recognition Model Based on PaddlePaddle

Deep Learning Framework

XIE Meiying

(School of Software, Hunan College of Information, Changsha  410100, China)

Abstract: With the advent of the post epidemic era, mask wearing has become a routine means of prevention and control in schools, shopping malls, canteens and other public places. In order to improve the efficiency and accuracy of prevention and control, a mask wearing image recognition model based on Baidu flying slurry deep learning platform is studied and built. Firstly, this paper collects the picture samples of the mask wearing portrait, uses the convolutional neural network VGG algorithm to train the model, realizes the detection function of judging whether the static portrait wears the mask normally, and evaluates the accuracy of the judgment results. The experimental results show that VGG convolutional neural network has a relatively fast and accurate recognition ability to judge whether the portrait wears a mask, and has the value of wide application.

Keywords: PaddlePaddle; convolutional neural network; VGG; mask wearing

0  引  言

新冠肺炎疫情形勢仍然复杂多变,国内疫情多点散发、局部暴发。正确佩戴口罩是有效降低传播风险、防止疫情扩散蔓延、保障身体健康最简单有效的措施。但仍然有些人员抱有侥幸心理和从众心理,出入商场超市、农贸市场、酒店宾馆、交通场站、景区等各类公共场所,不愿意或忘记佩戴口罩。因此,将深度学习技术结合具体场景进行应用开发,搭建更简便准确的模型,对疫情防控具有十分重要的意义。实验中结合PaddlePaddle应用平台,设计VGG卷积神经网络模型,堆叠卷积池,实现是否佩戴口罩的判断功能。

1  PaddlePaddle深度学习框架

目前,Github上流行的深度学习框架包括,Google公司的TensorFlow和keras,Facebook公司的PyTorch,国内主要是百度的PaddlePaddle框架。PaddlePaddle以百度多年的深度学习技术研究和业务应用为基础,是中国首个开源开放、技术领先的产业级深度学习平台,集深度学习核心训练和推理框架、基础模型库、端到端开发套件和丰富的工具组件于一体。

本文在飞浆AI Studio上安装paddlepaddle-gpu.post版本,构建基于VGG卷积神经网络模型,实现小型公众场合口罩佩戴识别模型,体验PaddlePaddle深度学习框架的高速性能。

2  深度学习卷积神经网络VGG

2.1  VGG模型介绍

传统的卷积神经网络一般采用5×5,7×7等较大的卷积核,VGG卷积层的最大改进是,用多个小尺寸(3×3)卷积层的堆叠来替代大的卷积核(5×5或者7×7)。这样可以比单个卷积层拥有更强的非线性映射能力,能更好地理解图片,做更复杂的图像分类任务,而且参数数量更少,网络更加轻便。VGG的结构非常简洁,整个网络都使用同样大小的卷积核和最大池化尺寸(2×2),方便开发人员调试处理。采用堆积的小卷积核优于采用大的卷积核,可以增加网络深度来保证学习更复杂的模式,而且代价比较小。VGG网络模型如图1所示。

2.2  VGG卷积神经网络结构分析

本实验中卷积神经网络结构为:5个卷积池,3个全联接层,中间加上2个dropout层。卷积层,是一种可行的计算方法,用于从输入图像数据中提取有效特征。卷积层最重要在于设计卷积核,本实验采用3×3大小核,超参数包括卷积核大小,步长和填充,它们共同决定了卷积层输出特征图的大小。因为样本存在局部相关的特性,“不全连接,参数共享”的特点大大降低了网络参数,保证了网络的稀疏性,可以防止过拟合,卷积运算过程如图2所示。

激活层,对特征进行非线性变换,赋予神经网络深度的意义。不同的激活函数特性不同。sigmoid函数输出在(0,1),符合概率,导数范围在[0,0.25]会出现梯度消失,输出为非0均值,破坏数据分布。tanh函数输出值在(-1,1),数据符合0均值,导数范围在[0,1],网络层数多的情况下,易出现梯度消失。relu函数线性运算,效率极高,最常用,也是本实验中所使用的激活函数。不同激活函数如图3所示。

池化层,对特征图进行压缩的一种方式,有MaxPool和AveragePool等。其中本实验使用MaxPool,步长为2,核数为2,可以减小卷积核的尺寸,同时又可以保留相应特征,主要用来降维。最大池化原理如图4所示。

全连接层,在全连接的过程中丢失位置信息,降低了学习过程中的参数敏感度,很多分类问题需要通过softmax层进行输出,进行非线性变换等等。

2.3  基于PaddlePaddle的VGG实现

2.3.1  环境导入

加载实验中需要用到的基础库、第三方库和深度学习框架。主要代码有:

from __future__ import print_function

import paddle.fluid as fluid # paddle中的tensor

import numpy as np # 科学计算包

import sys # 提供Python运行环境的变量和函数

import json # 序列化与反序列化

import random # 随机数

from PIL import Image # 图像处理

from work.utils import * # 导入工具类

2.3.2  数据预处理

首先,解压用于口罩识别的图片数据,获取所有数据图片的地址并保存到指定位置,代码如下:

!unzip -oq /home/aistudio/data/data97078/maskDetect.zip

然后,制作数据读取器,通过数据读取器可以读取训练或验证所需要的图片数据。参数若设置为True,则当最后一个batch不等于batch_size时,抛弃最后一部分数据。若為False则不抛弃。代码如下:

train_reader = paddle.batch( custom_reader(train_list_path),batch_size=batch_size,drop_last=True)

eval_reader = paddle.batch( custom_reader(eval_list_path),batch_size=batch_size,drop_last=True)

2.3.3  模型构建

需要定义VGG模型,堆叠卷积池,参数分别代表的意义:第1,2个参数表示输入、 输出的通道,接着是卷积核尺寸,池化核数量,池化层步长,该卷积池含有多少层卷积 。act是激活函数,采用relu激活函数。同时,已经封装的参数有:stride步长,pool_type='max'表示池化层用最大池化,conv_padding参数是在卷积时对边缘填充的数量,padding=1表示预先给图片边缘填充0后再卷积,填充的目的是维持输入尺寸和输出尺寸的倍率关系。 比如:卷积核尺寸kernel_size=3,padding=1,stride=1,output_size = (input_size - kernel_size - 2*padding) / stride + 1 。 当input_size=128时,output_size = (128 - 3 + 2) / 1 + 1 = 128,即可保持输入输出通道数相同。全连接层激活函数采用了relu和softmax两个,softmax用于多分类神经网络输出。主要代码如下:

self._cp = ConvPool(input_channels,output_channels,filter_size,pools,pool_stride,num,conv_padding=1,act=’relu’)

self._fc = fluid.dygraph.Linear(input_dim,output_dim,act=’relu’)

2.3.4  模型训练

模型构建以后开始训练,训练参数可以优化设置,通过不断调参来观察对训练效果的影响。定义优化器,学习率,优化的参数为vgg的全部参数。从训练数据读取器中获取数据,其中data[0]是图片数据,data[1]是标签。图片在计算机中以矩阵形式展现,数据类型转为浮点型。部分代码如下:

optimizer = fluid.optimizer.AdamOptimizer(

learning_rate=train_parameters[‘learning_strategy’][‘lr’],parameter_list=vgg.parameters())

模型训练结束后,需要对模型的准确率进行评测和验证。为了更准确地了解模型,可以在实验中打印出来每次的误差,再取平均值。

3  训练结果分析

准确率是衡量图像分类是否有效正确的重要指标,本实验中,未佩戴口罩的图片数量为2 288张,佩戴口罩的图片数量为2 028,在保证正负样本数量大致均匀的前提下,准确率可以用来检测口罩佩戴识别的模型效果。准确率的计算公式为:准确率=分类正确的样本数量/样本总数量。实验绘制的损失值和准确率图像如图5所示。

本实验中经过5次训练轮次,大约5~6分钟,每次60轮左右的训练,随着轮次的增加,准确率逐步提高,并且基本都达到了平稳状态。平均准确率为:0.970 982 13。

通过模型训练结果可以看出,使用PaddlePaddle构建的口罩佩戴图像识别模型,具有较高的准确性,展示了图片预测值和真实值较好的拟合。模型检测的正确样例图片展示如图6所示。

4  结  论

首先,针对采集的静态人像口罩佩戴问题,将深度学习算法应用于疫情防控的各个场景,基于PaddlePaddle框架和利用VGG算法,对医用口罩佩戴进行了识别检测。通过图像组成的数据集进行训练和评估,实验验证了该模型的有效性和准确度,有助于各应用场景的疫情防控。

其次,图像识别算法的研究具有很大的提升空间。实验并未结合界面,实现类似摄像头动态截取人像功能。下一步的研究目标,可以结合Python界面功能,继续使用卷积神经网络VGG算法和理论知识,深入结合学校、公司、小区等具体作业场景进行开发。

参考文献:

[1] GÉRON A. Scikit-Learn与TensorFlow机器学习实用指南 [M].南京:东南大学出版社,2017.

[2] 邱锡鹏.神经网络与深度学习 [M].北京:机械工业出版社,2020.

[3] 娄茹珍,徐丽,蒋正乾,等.基于卷积神经网络的眼疾识别算法 [J].无线电工程,2021,51(11):1202-1207.

[4] 李亚可,玉振明.级联的卷积神经网络人脸检测方法 [J].计算机工程与应用,2019,55(24):184-189.

[5] 魏明珠,郑荣,杨竞雄.基于深度学习的图像检索研究进展 [J].情报科学,2021,39(5):184-192.

[6] 郑耀东,李旭峰.基于Paddlepaddle的新冠疫情期间文本情感分析模型 [J].信息与电脑(理论版),2021,33(7):189-191.

作者简介:谢美英(1984—),女,汉族,湖南涟源人,讲师,硕士研究生,研究方向:软件技术、数据挖掘、人工智能。

猜你喜欢
卷积准确率神经网络
基于全卷积神经网络的猪背膘厚快速准确测定
基于人工智能LSTM循环神经网络的学习成绩预测
基于图像处理与卷积神经网络的零件识别
MIV-PSO-BP神经网络用户热负荷预测
乳腺超声检查诊断乳腺肿瘤的特异度及准确率分析
多层螺旋CT技术诊断急性阑尾炎的效果及准确率分析
不同序列磁共振成像诊断脊柱损伤的临床准确率比较探讨
颈椎病患者使用X线平片和CT影像诊断的临床准确率比照观察
基于深度卷积网络与空洞卷积融合的人群计数
三次样条和二次删除相辅助的WASD神经网络与日本人口预测