徐婉晴,王保棟,黃藝美,李金屏*
(1.濟南大學信息科學與工程學院,濟南 250022;2.山東省網絡環(huán)境智能計算技術重點實驗室(濟南大學),濟南 250022;3.山東省“十三五”高校信息處理與認知計算重點實驗室(濟南大學),濟南 250022)
(?通信作者電子郵箱ise_lijp@ujn.edu.cn)
吸煙嚴重危害人類的身體健康,并且在公共場所吸煙存在很多潛在的危害,不少研究者采用不同方法對吸煙行為展開研究[1-4]。目前關于吸煙行為的計算機視覺檢測算法主要是利用深度學習模型對煙頭、煙霧、人臉進行檢測,進而判斷出吸煙行為[1-2]。盡管深度學習對圖像數據特征都有著很好的非線性學習能力,但是需要大量且多樣的數據集進行訓練,并且當人物處于復雜環(huán)境時,識別難度會增加。僅利用目標檢測的方法識別吸煙行為忽略了吸煙行為與吸煙者肢體動作之間的關系。一些學者在研究過程中將目標檢測算法和動作識別算法進行了結合來檢測吸煙行為,例如文獻[3]中針對出租車司機設計了一種采用支持向量機(Support Vector Machine,SVM)對吸煙煙霧特征和抖煙動作特征進行建模和分類來檢測吸煙行為的方法,由于出租車會擋住司機的吸煙動作,所以只能檢測司機的抖煙動作以及飄出窗外的煙霧。文獻[4]中利用幀差法與膚色檢測法首先判斷出人物手部運動軌跡,排除非吸煙行為,然后提取手部區(qū)域圖像,使用顏色特征檢測煙頭。該方法的檢測思路是先篩選出疑似吸煙行為,較大提升了算法的運算效率;但方法對于手部運動軌跡的判斷較為粗糙,難以應對復雜場景中的干擾。
人體動作與骨骼關鍵點之間存在著十分密切的聯(lián)系,并且隨著人體姿態(tài)估計算法的發(fā)展[5-7],人體骨骼關鍵點定位的準確性也越來越高。已有學者利用人體的關鍵點進行吸煙行為的識別,如文獻[8]中提出了一種基于人體關節(jié)點的吸煙行為識別方法,可檢測多人場景中的吸煙行為,然而只能識別符合一定周期性的吸煙過程。
本文結合人體骨骼關鍵點信息與目標檢測算法提出了一種吸煙行為檢測算法,利用左手腕、右手腕、左眼睛、右眼睛、左嘴角、右嘴角共6 個關鍵點,計算出手腕到兩嘴角中點的距離和手腕到同側眼睛的距離,得出這兩個距離的比值——吸煙動作比例(Smoking Action Ratio,SAR)。經過大量實驗發(fā)現,SAR 值呈現出規(guī)律性,當人物存在吸煙動作時,SAR 總是集中在某一范圍內,將人物存在吸煙動作時的SAR 命名為吸煙動作黃金比例(Golden Ratio of Smoking Action,GRSA),即判定為吸煙動作的最佳SAR 比例,與其他動作可以較好地區(qū)分。
本文主要工作是:
1)利用人體骨骼關鍵點(手腕、嘴角、眼睛)的位置關系,提出SAR 的計算方法,設定判別規(guī)則以檢測吸煙行為,即人物的SAR是否處于當前環(huán)境下的GRSA。
2)利用YOLOv4檢測視頻中是否存在煙頭,并結合GRSA和YOLOv4 算法對煙頭的檢測來確定吸煙行為的可能性高低,設定閾值得到吸煙行為的最終判定結果。
3)針對不同場景不同人員的吸煙行為進行檢測,對比了單獨使用YOLOv4、單獨使用GRSA 方法以及將YOLOv4 和GRSA結合的實驗結果,驗證本文算法的有效性和可行性。
本文的算法流程如圖1 所示。首先利用AlphaPose 模型檢測出左右手腕關鍵點,利用RetinaFace 模型檢測出左右眼睛和左右嘴角關鍵點,獲得其坐標值。接著根據關鍵點的坐標可計算出SAR 值,與當前環(huán)境下的GRSA 比較,記錄SAR 屬于GRSA 的持續(xù)時間t,將t與閾值T比較,作出是否屬于GRSA 的判定;同時,利用YOLOv4 模型作出是否存在煙頭的判定。由這兩個判定依據按照設定的規(guī)則得到吸煙行為可能性等級。
圖1 本文算法流程Fig.1 Flowchart of the proposed algorithm
AlphaPose 是一個多人姿態(tài)估計的開源系統(tǒng),在MSCOCO數據集上的平均精度均值(mean Average Precision,mAP)達到61.8%,在MPII 數據集上的mAP 達到76.7%[9]。該系統(tǒng)使用的是區(qū)域多人姿態(tài)估計(Regional Multi-Person Pose Estimation,RMPE)框架,見圖2。RMPE 在原有的單人姿態(tài)估計模塊(Single-Person Pose Estimator,SPPE)上增加了對稱空間變換網絡(Symmetric Space Transformation Network,SSTN)、由姿態(tài)引導的樣本生成器(Pose-Guided Proposals Generator,PGPG)、姿態(tài)非極大值抑制器(Parametric Pose Non-Maximum Suppression,PPNMS)三個模塊。SPPE 是針對單人圖像進行訓練的,而且對定位錯誤十分敏感,因此RMPE 引入SSTN 和平行的SPPE 來增強SPPE 的效果。SSTN 是由空間轉換器網絡(Spatial Transformer Network,STN)和空間去轉換器網絡(Spatial De-Transformer Network,SDTN)組成的,被分別放在SPPE的前、后,由STN獲取人體樣本,由SDTN產生姿態(tài)樣本。Parallel SPPE 在訓練部分作為一個額外的調節(jié)器,以避免局部最小值。最后的PPNMS 是為了消除冗余姿態(tài)估計。PGPG的作用是為了增加現有的訓練樣本。根據文獻[9]在COCO和MPII 數據集上對多種骨骼檢測模型進行的對比結果,本文采用效果較好的AlphaPose檢測視頻中的人體目標,得到人體的各個骨骼關鍵點在該幀圖像中的(x,y)坐標,用到其中的左手腕、右手腕2 個關鍵點。AlphaPose 骨骼關鍵點檢測效果如圖2所示。
圖2 RMPE框架的流程Fig.2 Flowchart of RMPE framework
對現有的人臉檢測算法[10-15]進行研究發(fā)現,RetinaFace 模型可以較好地應用于本文的吸煙檢測問題。RetinaFace 是一種單級人臉檢測算法,利用多任務聯(lián)合額外監(jiān)督學習和自監(jiān)督學習的優(yōu)點,可以對不同尺度的人臉進行像素級定位[15]。該算法是基于特征金字塔設計的,在主干網絡的選擇上使用了輕量級網絡MobileNet,具有獨立的上下文模塊。根據上下文模塊計算多任務損失函數,RetinaFace 可以在單個CPU 上實時運行完成多尺度的人臉檢測、人臉對齊、像素級人臉分析和人臉密集關鍵點三維分析任務,可同時輸出人臉框和5 個人臉關鍵點信息。本文用到其中的4 個關鍵點,分別是:左眼睛、右眼睛、左嘴角、右嘴角。RetinaFace 人臉檢測效果如圖3所示。
圖3 人臉檢測效果Fig.3 Detection effect of face
1.3.1 思路分析
當人物有吸煙行為時,最顯著的特征是手部十分靠近嘴部,而手部靠近嘴部的行為,也可能出現于喝水、撓頭、扶眼鏡時。基于人體骨骼關鍵點信息判定吸煙行為的關鍵就在于如何利用關鍵點之間的位置信息將吸煙行為與其他行為良好地區(qū)分開??紤]到若計算手部到嘴部的距離,當距離較小時,有可能是吸煙行為,但是由于視頻中人物大小不確定導致閾值難以確定;若是在手部和嘴部關鍵點附近設定一個區(qū)域范圍,當兩個區(qū)域有重合時,計算交并比,存在的問題是設定多大的區(qū)域范圍仍然難以確定;因此本文采用比值的方法去除量綱,解決了閾值難以確定的問題。利用(右/左)手腕部到嘴部的距離d1與(右/左)手腕部到(右/左)眼睛的距離d2的比值(如圖4 所示),即SAR。SAR 的分母是手腕到眼睛的距離d2而不用手腕到其他部位的距離,主要是考慮到眼睛和嘴巴總是會處于同一個平面,當人側身面對攝像頭的時候,有一定的魯棒性,并且不同人的手的大小和五官之間的距離相差不會太大,相對于身高更有普遍性。
圖4 吸煙動作比例示意圖Fig.4 Schematic diagram of SAR
1.3.2 數據處理
通過AlphaPose 和RetinaFace 得到6 個關鍵點的坐標,坐標以圖像左上角為原點,如圖5所示。
圖5 以圖像左上角為原點的坐標系Fig.5 Coordinate system with top left corner of image as origin
根據式(1)可計算出手腕到嘴巴的歐氏距離d1和手腕到眼睛的歐氏距離d2,由式(2)得到SAR值,即SAR。若由于關鍵點檢測不準確或手腕與眼睛重合等原因導致d2的值為0,則令d2=1。
對視頻進行逐幀處理,以視頻當前幀數序列為X軸,以SAR 值序列為Y軸,畫出實時曲線圖。如圖6 所示,點線代表的是左手腕的SAR 值,虛線代表的是右手腕的SAR 值,兩條黑色實線之間代表當前環(huán)境下的GRSA 范圍。圖6(b)中標注的框1 對應圖6(a)中的抽煙動作,框2 對應的是圖6(a)中的扶眼鏡動作。由于扶眼鏡動作和抽煙動作之間的間隔動作序列含有的信息量很少,所以沒有展示出來。兩種動作均選取了關鍵幀以展示動作過程,圖7、8 類似。圖7(b)中框3 對應的是圖7(a)中的左臂自然下垂,右臂晃動水杯的動作,框4對應的是圖7(a)中喝水動作的過程,框5對應的是圖7中檢測不到某些關鍵點因而顯示異常值的情況;圖8(b)中框6 對應的是圖8(a)中的撓頭的動作。從實驗中發(fā)現,本文的GRSA 吸煙檢測算法可以較好地區(qū)分吸煙動作和非吸煙動作。
圖6 吸煙動作和扶眼鏡動作及其對應的SAR值Fig.6 Smoking and glasses-holding behaviors and their corresponding SARs
圖7 正常狀態(tài)和喝水動作及其對應的SAR值Fig.7 Normal condition and drinking water behaviors and their corresponding SARs
圖8 撓頭動作及其對應的SARFig.8 Scratching head behavior and its corresponding SAR
YOLOv4 是一個簡單且高效的目標檢測算法,該算法在YOLOv3 的基礎上,從各個方面引入一些優(yōu)化方法[16]。其中訓練時采用Mosaic 數據增強方法、跨小批量標準化CmBN(Cross mini-Batch Normalization)和自對抗訓練SAT(Self-Adversarial-Training),保留了YOLOv3 的 head 部分,CSPDarknet53 作為主干網絡,并使用Mish 激活函數和Dropblock 丟棄方式,同時Neck 結構采用了SPP(Spatial Pyramid Pooling)模塊、FPN+PAN(Feature Pyramid Network+Path Aggregation Network)的方式。輸出層的錨框機制和YOLOv3 相同,主要改進的是訓練時的損失函數,采用CIOU_Loss 回歸方式,以及預測框篩選方式由NMS(Non Maximum Suppression)變?yōu)镈IOU_nms?;赮OLOv3 的改進使得YOLOv4 模型在檢測速度和精度上達到了目前為止的最優(yōu)匹配。本文利用YOLOv4 算法對4 900 張吸煙圖片進行訓練和測試,在GRSA 吸煙檢測算法的基礎上進一步提高吸煙行為檢測的準確率。煙頭檢測效果如圖8 所示,圖中“smoke”表示檢測到煙頭,“smoke”后面的數字“0.97”表示置信率。通過實驗測試發(fā)現,YOLOv4 在檢測煙頭的問題中有較好的效果,其準確率信息在表4中給出。
將視頻中人物的SAR 屬于GRSA 的持續(xù)時間t大于T作為判據一,將YOLOv4 是否檢測到煙頭作為判據二,通過這兩個判據得出吸煙行為可能性高低。本文中,判據一所占的權重設置為60%,判據二所占的權重設置為40%。當SAR 屬于GRSA 的持續(xù)時間t>T,且YOLOv4 檢測到煙頭,則吸煙行為可能性用概率可以表示為100%。依此類推,當滿足判據一不滿足判據二時,吸煙行為可能性用概率表示為60%;當不滿足判據一而滿足判據二時,吸煙行為可能性用概率表示為40%;當判據一和判據二均不滿足時,吸煙行為可能性用概率表示為0%。為了公共場所的安全考慮,吸煙行為可能性若大于等于40%,則判定為存在吸煙行為,見表1。本文進行實驗時,將視頻以20 幀/s 進行提取,當SAR 屬于GRSA 的圖像大于15幀時,認為滿足條件,相當于T取值為0.75 s。
圖9 煙頭檢測效果圖Fig.9 Cigarette butt detection effect diagram
表1 吸煙行為判定方法Tab.1 Method for judging smoking behavior
實驗運行環(huán)境為Python3.7 和Pytorch 1.5,硬件平臺使用的GPU 為2080Ti,內存為32 GB。由于目前沒有公開的關于吸煙視頻的數據集,為了驗證本文所提出算法的合理性與有效性,錄制了300 個視頻片段,每個片段約30 s,其中包含室內、室外不同環(huán)境下不同人物的不同動作,見表2?;旌细鞣N動作的視頻除了包括吸煙、喝水、撓頭的動作,還有其他一些例如揮手、拍手、彎腰等可以明顯區(qū)分于吸煙的動作。視頻可根據攝像頭和人臉的相對高度分為兩類,一類是攝像頭和人臉大致處于同一水平線高度,另一類是攝像頭處于人臉斜上方約45°。YOLOv4 中使用的數據集來源于網絡上的吸煙圖片和非吸煙圖片,其中訓練集包含4 410 張,測試集490 張,數據標注使用的是labelimg圖像標注軟件。
表2 不同視頻類別及數目統(tǒng)計Tab.2 Statistics of different video categories and their numbers
根據本文算法中設定的判定規(guī)則,可知當吸煙行為可能性為中等、較高、高時,判定為吸煙行為;當吸煙行為可能性為低時,判定為非吸煙行為。在本文中,使用查準率P、查全率R兩個指標評估算法的分類效果。查準率和查全率根據式(3)和(4)計算。
其中:a表示判定正確的吸煙行為的樣本數量,b表示非吸煙行為被判定為吸煙行為的樣本數量,c表示吸煙行為被判定為非吸煙行為的樣本數量。
2.3.1 閾值分析
為確定GRSA 的最佳取值,通過拍攝的吸煙視頻測試,得到以下測試結果,如表3(加粗數字表示最佳性能),用標準①~⑥表示實驗中GRSA 所設定的范圍。當人臉和攝像頭大致處于同一水平高度時,標準①的查全率最高,可以應用于對于吸煙把控非常嚴格的場所,但其對應的查準率太低;標準③對應的查準率最高,但其查全率在80%左右,會漏掉很多吸煙行為。相比之下,標準②將[0.6,0.8]設置為GRSA 來判定吸煙行為的效果最好,查準率對應92.8%,查全率對應92.4%。同樣,當攝像頭處于人臉斜上方大約45°的情況時,采用標準⑤將[0.55,0.75]設置為GRSA 來判定吸煙行為的效果最好,查準率對應91.3%,查全率對應93.2%。
表3 GRSA取值標準分析Tab.3 Analysis of GRSA value standard
2.3.2 與目標檢測算法的對比
將利用GRSA 的方法和YOLOv4 算法檢測煙頭的方法進行結合可以有效提升吸煙行為的準確性。例如,當煙頭較小、煙頭的顏色與背景相似、光照強烈等因素導致煙頭難以被檢測到時,僅使用YOLOv4 目標檢測算法檢測到吸煙行為的比例較低。此時,利用GRSA 的方法可以有效檢測到吸煙行為,如圖10(a)和10(b)框2所示。當視頻中人物有短暫的吸煙動作,即持續(xù)時間不超過T時,YOLOv4 若準確檢測到煙頭就可提升一定的準確率,如圖10(b)框1 所示。將本文設計的GRSA與YOLOv4目標檢測算法作對比,見表4(加粗數字表示最佳性能)。當攝像頭處于人臉斜上方時,使用YOLOv4 檢測煙頭的方法稍好一些。由表中數據可知,將YOLOv4與GRSA結合起來對于吸煙行為檢測效果有顯著的提升。
圖10 兩種方法結合效果展示Fig.10 Combination effect of two methods
表4 不同算法效果對比Tab.4 Effect comparison of different algorithms
本文結合姿態(tài)估計算法,通過對手部和臉部關鍵點的坐標信息進行處理,分析出吸煙行為與吸煙者肢體動作的潛在關系,能夠準確檢測到吸煙行為,擴大了吸煙檢測算法的適用范圍。本文提出的吸煙行為檢測算法還有不足之處:
1)受制于人體姿態(tài)估計算法的準確性,因此對于低質量的圖像或視頻效果并不好;
2)算法目前對于檢測人體正面的吸煙行為有較高的準確率,然而當攝像頭處于人體側面不同角度時,準確率會有所下降,因為嘴部極有可能被手部遮擋;并且在嘴部未被遮擋的情況下,GRSA 的范圍需要有所調整。因此GRSA 吸煙檢測算法中閾值的自適應設定將作為下一步的工作。