






摘? 要:后疫情時代的到來,口罩佩戴已經成為學校、商場、食堂等各公共場所的常規防控手段。為提高防控效率和準確率,研究搭建一個基于百度飛漿深度學習平臺的口罩佩戴圖像識別模型。該文先收集口罩佩戴人像圖片樣本,采用卷積神經網絡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—),女,漢族,湖南漣源人,講師,碩士研究生,研究方向:軟件技術、數據挖掘、人工智能。