国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于深度學習的佩戴口罩檢測方法研究

2023-12-22 09:29:58林開司
集寧師范學院學報 2023年5期
關鍵詞:掩膜示例人臉

田 勇 林開司

(銅陵職業(yè)技術學院 電氣工程系,安徽 銅陵 244000)

佩戴口罩是在應對傳染性公共衛(wèi)生疾病時所采取的簡單而重要的防護措施。在要求佩戴口罩的場合下,通常以遠程視頻監(jiān)控和現(xiàn)場人工巡檢等方式來完成對人群口罩佩戴的監(jiān)測。但是,人工巡檢會增大工作人員的感染風險,查看監(jiān)控視頻則需工作人員長時間、精神高度集中地觀看屏幕,增加了工作人員的勞動負荷和精神壓力,也增加了漏判的幾率。使用經(jīng)過訓練的深度神經(jīng)網(wǎng)絡來輔助人工進行實時口罩佩戴檢測,可以大大減小人員的工作強度,具有一定的實用價值。

在早期的目標檢測技術實踐中,通常需要進行手工特征設計和提取,這種方式過分地依賴操作人員的經(jīng)驗,存在檢測精度低和泛化能力差的問題。而在深度學習中,得益于卷積神經(jīng)網(wǎng)絡的特性,提取圖像特征時無需人工設計特征。因此,基于深度學習的目標檢測算法成為了當前的主流算法。根據(jù)卷積神經(jīng)網(wǎng)絡的使用方式,目標檢測可分為兩大類:一類是基于回歸的卷積神經(jīng)網(wǎng)絡目標檢測,另一類是基于分類的卷積神經(jīng)網(wǎng)絡目標檢測。

基于回歸的卷積神經(jīng)網(wǎng)絡是將網(wǎng)絡作為回歸器,把整幅待檢測圖像看成一個候選區(qū),在網(wǎng)絡中直接輸入回歸目標在待檢測圖像中的位置信息。Yolo 算法和SSD 算法是代表性算法。Yolo 最早由Redmon 等于2015 年提出其v1 版本[1]。在2018 年,Redmon 等又將其發(fā)展到Yolo v3 版本,檢測速率進一步提高,在視頻檢測上達到了45fps。目前,已有一些基于該算法的應用研究[2,3]。

基于分類的卷積神經(jīng)網(wǎng)絡利用網(wǎng)絡本身具有特征提取、特征選擇和特征分類的功能,用卷積神經(jīng)網(wǎng)絡對每個滑動窗口產(chǎn)生的候選區(qū)進行二分類,判斷其是否為待檢測目標。最早的代表性算法是由Girshick 等人于2014 年提出的R-CNN,這一算法在VOC2007 數(shù)據(jù)集上獲得了遠超之前所有算法的mAP 成績,由此掀起了此類研究的熱潮。由于此算法速度偏慢,在隨后出現(xiàn)的Fast R-CNN 中,對待檢測圖像進行了一次特征提取,并引入RoI Pooling 層對特征尺度進行統(tǒng)一化,同時使用歸一化指數(shù)函數(shù)代替了支持向量機,使得算法在速度和檢測的準確率上有了進一步提升。Faster R-CNN[4]是對Fast R-CNN 的又一次改進,它引入了區(qū)域建議網(wǎng)絡在特征圖上生成不同尺寸的錨點框,再一次提升了算法的速度和精度。

這些算法能夠較好地實現(xiàn)目標檢測,卻缺少對圖片中所關心目標的語義分割功能。Mask R-CNN是何凱明等人在Faster R-CNN 基礎上提出的帶有實例分割功能的算法[5],這個算法在前面算法的基礎上添加了一個分支,使用現(xiàn)有的檢測對目標進行并行地分割掩膜預測。在結果展示時,除了產(chǎn)生目標候選框,還會對目標添加像素級的語義分割掩膜,所關心的目標結果顯示更加直觀,實現(xiàn)了目標檢測與實例分割技術的結合應用。

用于檢測人臉是否佩戴口罩的相關研究自2020 年開始逐漸興起,鄧黃瀟通過使用遷移學習與RetinaNet 網(wǎng)絡來實現(xiàn)對人類是否佩戴口罩的檢測[6]。謝征宇等人介紹了基于視頻的乘客口罩佩戴檢測的相關技術及現(xiàn)狀,特別提到了適用于軌道交通應用場景的可行方案[7]。牛作東等人對RetinaFace算法進行了改進,提出了一種自然場景下人臉口罩佩戴檢測方法[8]。張修寶等人將基于特征融合和分割監(jiān)督的人臉檢測技術和口罩佩戴識別技術進行了組合,提出了一種結合注意力學習對人臉戴口罩區(qū)域進行判別的口罩佩戴識別技術方案[9]。

本文采用了基于Mask R-CNN 的目標檢測算法,采用深度殘差網(wǎng)絡作為網(wǎng)絡結構,使用公開的口罩遮擋人臉識別數(shù)據(jù)集,通過訓練實現(xiàn)了對佩戴口罩的目標檢測與實例分割。

1 目標檢測算法

1.1 算法流程

本文算法的檢測流程可以分為兩個階段,第一階段掃描圖像并生成目標區(qū)域建議,第二階段對前一階段生成的建議進行分類,并生成目標框和分割掩膜。最終結果由目標分類、目標檢測框和分割掩膜三部分組成。

算法的流程如圖1 所示。首先將輸入的圖像擴展到設定的尺寸,通過特征金字塔網(wǎng)絡(FPN)為全圖提取特征,得到圖像的特征圖(Feature maps),再將特征圖輸入到區(qū)域建議網(wǎng)絡(RPN),生成一系列感興趣的區(qū)域(RoI)。在這個過程中,RPN 用一個在特征圖上滑移的窗口,為每個位置生成9種提前預設的不同長寬比的目標框(anchor),判斷每個目標框是否覆蓋檢測目標,若目標框與訓練集中給定的目標框面積的交并比(IoU)超過0.5 則判斷為前景,否則判斷為背景。隨后對判斷為前景的目標框進行一次坐標修正。再將生成的建議識別區(qū)域與源圖像的特征圖一起送入RoI Align 模塊,將建議識別區(qū)域進一步對齊到原圖。

圖1 本文算法流程示意圖

在RoI Align 操作之后,再把結果送入兩個并行的網(wǎng)絡進行最終結果預測,一個是全連接層,用于進行目標分類和目標框位置回歸;另一個是全卷積層,用于生成目標的分割掩膜。最后將這些結果合并顯示。

1.2 算法的多任務損失函數(shù)

由于最終結果由目標分類、目標檢測框和分割掩膜三部分組成,在模型訓練中,采用多任務損失函數(shù),可以描述為:

公式(1)中,Lcls表示分類誤差,Lbox表示檢測誤差,Lmask表示目標分割誤差。在進行目標分割時,系統(tǒng)定義了一個k×m2維度的矩陣來表示K 個不同的分類所對應的m×m的區(qū)域,對每一個像素均使用sigmod 函數(shù)求相對熵,Lmask表示的是最終的平均二值交叉熵。使用每個像素所屬類別的交叉熵作為誤差值進行計算,可以將分割預測和分類預測很好的解耦。

其表達形式如公式1 所示,其中,yij為m×m區(qū)域像素點(i,j)的標簽值,y?ijk表示像素點第k 類的預測值。

1.3 檢測算法中的RoI Align 層

RoI(Region of Interest,RoI) Align 是Mask R-CNN 算法對Faster R-CNN 中RoI Pooling 方法的一個改進。RoI Align 層實現(xiàn)了對目標建議區(qū)域的池化,它將不同輸入尺寸的特征圖池化后輸出為固定的尺寸大小。

在RoI Pooling 方法中,它會按照算法所設定的超參數(shù)為H、W 的值,將任意輸入的尺寸為h×w的特征圖分割為尺寸為H×W大小的子窗口,這樣每個子窗口的大小約為(h/H)×(w/W),再對每個子窗口進行最大池化操作,得到固定輸出大小的特征圖。在這一過程中,子窗口的大小值可能不是整數(shù),RoI Pooling 直接對數(shù)值進行了四舍五入的取整操作,這樣做的誤差值雖然看似不大,但是已經(jīng)造成了特征圖與原圖不對準的情況。當從特征圖重新映射到原圖時,就會產(chǎn)生比較大的誤差。這一誤差對于分類和目標檢測來說不會有太大影響,但是如果用于實例分割,就會造成較大的偏差,體現(xiàn)在輸出結果上就是分割掩膜與實際目標之間存在較大移位。

為了減小RoI Pooling 方法在特征點定位時進行取整操作在進行實例分割時所帶來的誤差,Mask R-CNN 的RoI Align 層在操作上取消了量化過程,使用雙線性插值算法獲得了坐標為浮點數(shù)的像素點上的圖像數(shù)值,避免了取整帶來的誤差,大大地減小了原圖像素與特征圖像素之間的誤差。雙線性插值算法的公式如下:

首先在x方向上進行線性插值運算,得到:

然后在y方向上進行線性插值運算,得到:

其中,f(P)為所求點的值,f(Q11)、f(Q12)、f(Q21)、f(Q22)為已知的4 個采樣點的值。f(R1)、f(R2)表示x方向上進行插值運算所得到的值。

2 實驗與結果分析

2.1 數(shù)據(jù)集使用與標注

本文使用COCO 數(shù)據(jù)集的預訓練權重[10]進行訓練參數(shù)的泛化,訓練及驗證數(shù)據(jù)集使用了最新公開的口罩遮擋人臉識別數(shù)據(jù)集(Real-World Masked Face Dataset)。本文選擇了數(shù)據(jù)集中500 張圖片用于訓練,200 張用于驗證。對于實際的人臉狀態(tài)來說,可能存在頭部傾斜、被遮擋等狀態(tài),因此在組合訓練集的過程中,應充分考慮各類可能出現(xiàn)的情況,盡量多地挑選出各種不同的人物頭部姿態(tài)的圖片。于此同時,本文還額外挑選了部分圖片進行了旋轉(zhuǎn)操作來模擬人頭部傾斜狀態(tài)并作為新的樣本加入到訓練集。使用開源軟件via 對訓練集與測試集樣本進行標注,最后生成json 格式的樣本標注記錄。在樣本標注中需要注意的是:佩戴口罩的人群除了正常的佩戴口罩外,還可能存在一些特殊的動作或穿戴而影響面部情況,如:a)面部被其他人遮擋;b)用手、手機等遮擋了部分面部;c)帽子或圍巾遮擋了頭部或部分面部;d)佩戴非常規(guī)口罩、佩戴有色或無色眼鏡等。如圖2 所示為一些佩戴口罩的特殊情況示例。

圖2 一些佩戴口罩的特殊情況示例

對于佩戴口罩的判斷應基于口罩是否戴在面部。因此,在進行樣本標注時,應將戴口罩的人的面部作為一個整體進行標注,要保留眼睛、額頭的特征(如圖3-a 所示),并且排除面部的阻擋物(如手、手機、帽子等,如圖3-b 所示)。否則,在檢測時就可能會出現(xiàn)將口罩和剩余的面部區(qū)分檢測的情況,造成檢測結果錯誤。單個樣本的標注數(shù)據(jù)格式示例如圖4 所示。

圖3 數(shù)據(jù)集樣本標注區(qū)域示例

圖4 樣本標注數(shù)據(jù)格式示例

2.2 實驗結果

實驗程序基于python3.6 編寫,為加速訓練和檢測,把GPU 版本的Tensorflow-1.9.0 開源深度學習庫作為構建基礎,所用顯卡為GTX1080,顯存為8G,同時需要安裝顯卡運算平臺CUDA 來完成運算。由檢測結果示例圖5 可知,本文所用算法所生成結果除了檢測框之外,還為目標添加了分割掩膜。分割掩膜可以直觀方便地展示人們關心的檢測結果。本文中將已佩戴口罩的分割掩膜設置為藍色,將未佩戴口罩的分割掩膜設置為紅色。

圖5 本文算法檢測結果示例

2.3 評價指標

利用驗證集,對佩戴口罩和未戴口罩兩類均使用目標檢測領域常用的精確率(Precision)、召回率(Recall)進行評價, 同時使用準確率(Accuracy)指標對兩者綜合性能進行評價。其中,精確率又被稱為查準率,表示檢測到的所有樣本中該類正確樣本數(shù)量的占比;召回率也被稱為查全率,表示檢測的所有樣本中該類正確樣本數(shù)量占集合中所有該類樣本數(shù)量的比例;準確率表示檢測的所有類別中各自正確樣本數(shù)量之和占所有樣本數(shù)量的比例。精確率、召回率和準確率的計算公式如下:

其中,TP表示佩戴口罩的樣本被正確檢測為戴口罩類別的數(shù)量;FP表示不佩戴口罩被錯誤地檢測為戴口罩的類別的數(shù)量;FN表示佩戴口罩的樣本被錯誤檢測為不戴口罩的類別的數(shù)量;TN表示不佩戴口罩的樣本被正確檢測為不佩戴口罩的類別的數(shù)量。

2.4 結果分析

表1 所示為本文算法在驗證集下的檢測結果,可以看出,該算法有較好的檢測效果,精確率較高,說明檢出結果的可信度較高;召回率較高,說明對檢測目標的漏檢概率較小。

表1 驗證集下的佩戴口罩檢測結果

圖6 所示為本文算法的部分誤檢和漏檢示例。詳細分析出現(xiàn)誤檢和漏檢的圖片,出現(xiàn)漏檢的情況,大部分是由于人的臉部被他人、頭發(fā)、飾物等遮擋面積較大,或人臉處在特別的角度下,造成無法判斷是否為人臉;誤檢的情況中,有很多是由于周圍環(huán)境物的干擾,比如廣告牌上的假人、宣傳畫中出現(xiàn)的類似人臉的圖片、所帶的飾物與人臉佩戴口罩的特征類似等。因此,在后續(xù)的研究和使用中需要進一步地挑選和組合訓練樣本,增加樣本的規(guī)模,盡量考慮到各種可能存在的情況,尤其是增加各類側(cè)方位人臉、小角度和遮擋嚴重但仍可明確辨認是否佩戴口罩的樣本,以及因照片焦距問題導致背景人物虛化但同樣可以明確辨認是否佩戴口罩的樣本數(shù)量。

圖6 本文算法的部分誤檢和漏檢示例

3 結束語

使用深度學習算法來輔助人工進行佩戴口罩識別,可以大大減少工作人員的工作強度和精神壓力。本文所采用的基于Mask R-CNN 算法的佩戴口罩檢測方法,檢測結果具有較高準確性,在結果顯示時除了檢測目標框之外,還添加了目標分割掩膜,可分辨性高。在輔助人工進行口罩佩戴實時檢測的場合下,可以起到一定的作用。

猜你喜歡
掩膜示例人臉
大還是小
利用掩膜和單應矩陣提高LK光流追蹤效果
一種結合圖像分割掩膜邊緣優(yōu)化的B-PointRend網(wǎng)絡方法
有特點的人臉
2019年高考上海卷作文示例
常見單位符號大小寫混淆示例
山東冶金(2019年5期)2019-11-16 09:09:22
“全等三角形”錯解示例
三國漫——人臉解鎖
動漫星空(2018年9期)2018-10-26 01:17:14
光纖激光掩膜微細電解復合加工裝置研發(fā)
多層陰影掩膜結構及其制造和使用方法
科技資訊(2016年21期)2016-05-30 18:49:07
台江县| 尼木县| 华池县| 外汇| 奉节县| 宝丰县| 疏附县| 将乐县| 仲巴县| 瑞昌市| 太康县| 博乐市| 达拉特旗| 肥城市| 天峨县| 茶陵县| 凌云县| 普安县| 太和县| 大同市| 阜新市| 大石桥市| 德惠市| 平遥县| 安塞县| 色达县| 靖安县| 鸡泽县| 资源县| 秦皇岛市| 鱼台县| 红原县| 政和县| 凯里市| 故城县| 天台县| 濮阳市| 甘孜县| 峨眉山市| 苍溪县| 富民县|