姜曉鳳,王保棟,夏英杰,李金屏
(濟南大學 信息科學與工程學院,山東 濟南 250022;山東省網絡環(huán)境智能計算技術重點實驗室(濟南大學), 山東 濟南 250022;山東省“十三五”高校信息處理與認知計算重點實驗室(濟南大學),山東 濟南 250022)
吸煙對自己和他人的身體健康會造成很大危害,同時吸煙也會污染環(huán)境,稍有不慎還會引發(fā)火災。因此,吸煙行為檢測得到學者越來越多的重視。公共場所吸煙行為檢測的方法主要分為基于傳感器和基于視覺的吸煙行為檢測。基于傳感器的吸煙行為檢測方法主要通過煙霧傳感器、可穿戴傳感器[1]等。但是,由于香煙煙霧易擴散,容易受到環(huán)境的干擾,煙霧傳感器很難適用于公共場所吸煙行為檢測,而可穿戴傳感器一般只適用于主動戒煙人群。因此,基于計算機視覺的吸煙行為檢測得到越來越多的關注,主要方法分為基于傳統(tǒng)算法和基于深度學習的吸煙行為檢測。
傳統(tǒng)算法的吸煙行為檢測主要從香煙煙霧方面考慮,利用煙霧的顏色特征和變化特征進行分析,如汪祖云等利用香煙煙霧在HSV顏色空間下特有的顏色特征實現(xiàn)對疑似煙霧區(qū)域的定位,分析煙霧的面積變化速率特征和質心相對角度正弦變化特征,對煙霧進行檢測[2]。但在實際場景中,顏色很容易受到環(huán)境的影響,此方法只能針對特定場景下的吸煙行為檢測。
近年來,深度學習已經廣泛應用到各學科領域[3-5],因此部分學者利用深度學習來檢測人體吸煙行為。一些學者發(fā)現(xiàn)吸煙行為從點燃煙到吸入煙再到呼出煙的過程中,手部到嘴部的距離是有節(jié)奏、有規(guī)律的,一段時間內的這種過程可以認定為一個吸煙周期,將人體吸煙行為檢測轉化為基于深度學習的人體姿態(tài)估計問題來解決。劉婧等利用人體關節(jié)點信息,關注關節(jié)點的運動軌跡,檢測運動軌跡是否符合周期性規(guī)律進行吸煙動作識別[6]。由于吸煙行為和其他行為(如吃飯、打電話)存在一定的相似性,因此當圖像中的手部動作不清晰或不完整時,很難準確地檢測出吸煙行為。也有一些學者將吸煙行為檢測轉化為基于深度學習的煙頭目標檢測問題來解決。其中,一類方法是首先找到圖片中人臉區(qū)域,在人臉區(qū)域找到煙頭,判斷是否存在吸煙行為,如李倩等將檢測到的人臉圖片作為煙支檢測區(qū)域,利用Faster R-CNN算法對初步判斷可能存在煙支的圖像進行煙支目標檢測并判斷是否存在吸煙行為[7-8];另一類方法是直接目標定位嘴部,檢測嘴部區(qū)域是否存在香煙煙頭,判斷是否存在吸煙行為,如馬曉菲通過神經網絡算法和回歸樹方法快速定位嘴部區(qū)域,采用殘差網絡對感興趣區(qū)(region of interest,ROI)內目標進行檢測和狀態(tài)識別進而判斷出吸煙行為[9]。但是,目標檢測算法檢測煙頭極易識別出錯,并不能很好地檢測出吸煙行為,如圖1所示,圖中手持為粉筆錯誤檢測為香煙。
圖1 目標檢測煙頭誤報示例
因此,本文提出了一種基于人體關鍵點和YOLOv4的吸煙行為檢測方法,在利用深度學習對煙頭進行目標檢測的基礎上,加入人體關鍵點檢測,通過計算距離、角度、時間周期判斷吸煙動作是否發(fā)生。
由于煙頭目標較小,用目標檢測算法檢測香煙識別準確率不高。通過對吸煙行為的大量觀察,發(fā)現(xiàn)人在吸煙時,手部運動軌跡存在一定的周期性,因此本文在利用深度學習對煙頭進行目標檢測的基礎上,加入人體動作信息綜合判斷是否存在吸煙行為。
本文方法首先獲取視頻每幀圖像中的人體和人臉關鍵點;其次基于每個人的關鍵點位置找到手部的位置,計算出手部到嘴部的距離、手-肘-肩膀之間的角度、吸煙的時間周期,建立吸煙行為檢測判別模型,判斷是否有吸煙動作;然后利用YOLOv4檢測圖像中是否存在香煙煙頭;最后結合以上兩方面,當人們的行為滿足吸煙動作規(guī)則和圖像中存在香煙煙頭時,判斷人們存在吸煙行為。本文方法流程圖如圖2所示。
圖2 吸煙檢測整體流程圖
人體的日常行為通常以人體某個點為基礎帶動動作發(fā)生,因此找到人體各個部位的關鍵點是檢測吸煙動作的前提。通過對現(xiàn)有姿態(tài)估計方法的研究發(fā)現(xiàn),在人體關鍵點檢測方面,AlphaPose采用自頂向下的方法能及時準確地檢測到人體關鍵點;在人臉關鍵點檢測方面,RetinaFace采用MobilenetV1-0.25和Resnet兩種網絡作為主干特征提取網絡,其中MobilenetV1-0.25可以在CPU上實現(xiàn)實時檢測,Resnet可以實現(xiàn)更高的精度?;谏鲜龇治觯疚睦肁lphaPose獲得14個人體關鍵點的位置信息,主要利用的關鍵點有右(左)手腕、右(左)手肘、右(左)腳、右(左)肩膀,如圖3a所示。由于手與手腕、肘的斜率相同,調查發(fā)現(xiàn)吸煙時手彎曲的長度占胳膊長度的0.4,按照0.4的比例計算得到右(左)手坐標值。利用RetinaFace檢測出圖像中人臉5個關鍵點,分別是左眼、右眼、鼻子、左嘴角、右嘴角,如圖3b所示。將AlphaPose和RetinaFace兩個模型進行結合,得到每一幀圖像中人體人臉關鍵點,如圖3c所示。
圖3 關鍵點顯示
通過日常對吸煙行為的大量觀察發(fā)現(xiàn),吸煙動作存在一定規(guī)律。在一個人吸煙行為的開始階段,其手部慢慢靠近嘴部,手部與嘴部的距離越來越近;在吸煙行為的過程階段,其手部會在嘴部停留片刻,手部與嘴部的距離保持不變;在吸煙行為的結束階段,其手部慢慢遠離嘴部,手部與嘴部的距離越來越遠。在吸煙過程中,吸煙動作反復呈現(xiàn)上述規(guī)律直到停止吸煙,因此選擇手部與嘴部的距離作為吸煙行為的基本特征之一。
利用AlphaPose和RetinaFace獲得人體關鍵點的位置信息,通過手部與嘴部位置坐標,計算手部與嘴部中心之間的距離,即
(1)
式中:(x1,y1)表示手部位置坐標;(x2,y2)表示嘴部位置坐標。
由于不同人的行為習慣不同,拿香煙的慣用手選擇也會不同,故并行判斷左(右)手與嘴部的位置關系。
在不同場景中,整個人體在圖像中的大小不同,手部與嘴部之間的距離會隨著人體在圖像中的大小而有所不同,因此對手部與嘴部之間的距離d用比值的方法進行歸一化處理,
(2)
式中:e表示手部與嘴部之間的距離歸一化后的數(shù)值;d表示手部與嘴部之間的距離;h表示人體的高度。
此外,吸煙動作在角度特征上也存在一定的規(guī)律性。在一個人吸煙行為的開始階段,其手部慢慢靠近嘴部,手-肘-肩膀之間的角度會越來越??;在吸煙行為的過程階段,其手部會在嘴部停留片刻,手-肘-肩膀之間的角度保持不變;在吸煙行為的結束階段,其手部慢慢遠離嘴部,手-肘-肩膀之間的角度越來越大。在吸煙過程中,吸煙動作反復呈現(xiàn)上述規(guī)律直到停止吸煙,因此選擇手-肘-肩膀之間的角度作為吸煙行為的基本特征之一。
手-肘-肩膀的角度示意圖如圖4所示,根據(jù)獲得的手、肘、肩膀的位置坐標信息計算手-肘-肩膀之間的角度,即
圖4 角度示意圖
(3)
式中:θ表示手-肘-肩膀之間的角度;a表示肘與肩膀之間的距離;b表示手與肩膀之間的距離;c表示手與肘之間的距離。考慮到吸煙者的慣用手不同,故并行判斷 左(右)手、左(右)肘與左(右)肩膀的位置關系。
利用提取的距離與角度信息,建立分類模型來判斷是否存在吸煙行為。通過對數(shù)據(jù)集的大量觀察,設置條件:e<0.26;θ<60°。當滿足上述條件時,記錄此時的時間t;當上述條件不滿足時,t為0。若滿足條件持續(xù)的時間f≥3 s且1 min內次數(shù)s≥3次時,認為手部存在吸煙動作。
YOLOv4算法在YOLOv3的基礎上,從數(shù)據(jù)處理、主干網絡、激活函數(shù)、損失函數(shù)等方面進行優(yōu)化,使得模型在檢測精度和速度上有了進一步提升。YOLOv4將CSPDarknet53作為骨干網絡,將SPP和PANet結構作為加強特征提取網絡,使用CLOU作為回歸LOSS,使用Mish作為激活函數(shù),用來提取目標特征。此外,YOLOv4在結構上具有多尺度的特點,通過上采樣把高層特征的語義信息傳播到低層網絡然后與底層特征的高分辨率信息相融合,提高了對小目標檢測物體的檢測效果。結合YOLOv4檢測精度高、速度快且適用于小目標物體檢測等特點,本文采用YOLOv4模型對視頻中每一幀圖像進行香煙煙頭檢測,來判斷視頻中是否存在香煙。
首先,利用網絡爬蟲創(chuàng)建香煙煙頭檢測數(shù)據(jù)集,共包含5 000張圖像;然后,利用labelimg對3 000張圖像進行標注,標注時將香煙用矩形框標出,并設置標簽為smoke;最后,使用YOLOv4算法進行訓練,設置學習率為0.001,批量大小為8,訓練60輪,最終得到煙頭檢測模型。
為了驗證本文方法的有效性,在Inter Xeon W-2133 CPU,RTX2080Ti GPU,16 GiB RAM,CUDA 10.1的計算機上進行實驗;在室內室外多種場景下錄制近距離單人全身視頻300個。視頻分為2類:一類是吸煙視頻200個;另一類是其他行為如喝水、打電話等視頻100個。YOLOv4檢測香煙煙頭的測試集由采集的300個視頻和香煙煙頭檢測數(shù)據(jù)集中隨機選擇的2 000張圖像構成。
對本文自制的數(shù)據(jù)集從距離、角度、時間周期進行觀察分析,對每一類出現(xiàn)的規(guī)律隨機選用一個視頻的效果圖展示。
2.1.1 距離分析
從手部與嘴部之間的距離分析吸煙行為,實驗結果如圖5所示。
圖5 吸煙與非吸煙者手部與嘴部的距離歸一化對比
圖5a為吸煙者手部與嘴部的距離變化過程,圖5b為非吸煙者手部與嘴部的距離變化過程。可以發(fā)現(xiàn),吸煙時人的手部與嘴部之間的距離呈現(xiàn)一定的周期性。當吸煙行為正在發(fā)生時,手部與嘴部之間的距離最近,吸煙需持續(xù)一段時間,即圖中波谷狀態(tài),e≈0.245;一次吸煙行為結束呼出煙霧的過程中,手部逐漸遠離嘴部直至最遠,即圖中波峰狀態(tài),e≈0.285;如此反復,直至吸煙結束。在吸煙的過程中,會出現(xiàn)手部的抖動等現(xiàn)象,故圖中波谷處會有上下波動。
2.1.2 角度分析
從手-肘-肩膀之間的角度分析吸煙行為,實驗結果如圖6所示。圖6a為吸煙者手-肘-肩膀之間的角度變化過程,圖6b為非吸煙者手-肘-肩膀之間的角度變化過程??梢园l(fā)現(xiàn),吸煙時人的手-肘-肩膀之間的角度呈現(xiàn)一定的周期性。當吸煙行為正在發(fā)生時,手-肘-肩膀之間構成的角度最小,即圖中波谷處,θ≈40°;吸煙行為結束呼出煙霧的過程中,手慢慢遠離嘴部,手-肘-肩膀之間構成的角度逐漸變大至最大即圖中波峰處,θ≈140°;如此反復,直至吸煙結束。
圖6 吸煙與非吸煙者手-肘-肩膀之間的角度對比
2.1.3 時間周期分析
分析吸煙行為時,從手部與嘴部之間的距離和手-肘-肩膀之間的角度出發(fā)進行多個視頻測試,發(fā)現(xiàn)人在吸煙時,e≈0.26,θ≈60°。因此,設置閾值:當e<0.26,θ<60°時,認為人可能有吸煙動作,記錄此時的時間;當不滿足條件時,設置此時的時間為0。實驗結果如圖7所示,圖7a為吸煙者時間變化曲線,圖7b為非吸煙者時間變化曲線??梢园l(fā)現(xiàn),吸煙者的吸煙時間呈現(xiàn)一定的規(guī)律性。
圖7 吸煙與非吸煙者時間對比
調查發(fā)現(xiàn),不同人雖然吸煙時的習慣不同,但是吸一次煙的時間一般在20 s左右,因此若每次吸煙的時間t≥3 s且一分鐘內次數(shù)s≥3次時,認為有吸煙動作,并畫出人體的ROI區(qū)域,如圖8a所示;若沒有吸煙行為,則不畫,如圖8b所示。
圖8 吸煙行為檢測
為了驗證基于人體關鍵點的吸煙行為檢測方法的準確性,本文采用準確率Ac、召回率Rc指標對該方法進行評價。
(4)
(5)
式中:TP表示檢測到吸煙者吸煙,實際上存在吸煙者吸煙;TN表示未檢測到吸煙者吸煙,實際不存在吸煙者吸煙;FP檢測到吸煙者吸煙,實際上不存在吸煙者吸煙;FN表示未檢測到吸煙者吸煙,實際上存在吸煙者吸煙。通過計算,Ac=90.1%,Rc=91.2%。
利用創(chuàng)建的測試集測試煙頭檢測模型,測試效果如圖9所示。對于存在煙頭的圖像(如圖9a所示),使用了紅色方框進行標注,添加smoke字樣,并給出置信度數(shù)值。對于未檢測到煙頭的圖像(如圖9b所示),沒有任何的顯示。對于完全露出的香煙,本模型給出了正確的檢測結果;但對于被遮擋的香煙,本模型的識別能力較弱。最終得出,Ac=91.8%,Rc=92.3%。
圖9 香煙煙頭檢測結果
本文方法將基于人體關鍵點的吸煙行為檢測方法與基于YOLOv4的煙頭檢測方法相結合。當行為檢測判定人體存在吸煙動作且YOLOv4檢測出煙頭時,認定人體一定存在吸煙行為;當行為檢測判定人體不存在吸煙動作但YOLOv4檢測出煙頭時,認定人體較大可能存在吸煙行為;當行為檢測判定人體存在吸煙動作但YOLOv4為檢測出煙頭時,認定人體可能存在吸煙行為;當行為檢測判定人體不存在吸煙動作且YOLOv4未檢測出煙頭時,認定人體一定不存在吸煙行為。實驗結果見圖10。通過計算,本文方法的Ac=95.0%,Rc=94.1%。
圖10 實驗結果
在本文自建的數(shù)據(jù)集上,使用基于人體關鍵點的吸煙行為檢測方法、基于YOLOv4檢測香煙方法以及本文算法進行了實驗??梢钥吹?,本文提出檢測方法的準確率和召回率要高于其他方法(如表1所示),表明本文方法優(yōu)于之前只從吸煙動作或香煙方面檢測吸煙行為的方法[10-17]。
表1 不同方法在本文數(shù)據(jù)集上的檢測結果
為了檢測本文算法的普適性和實用性,將本文方法分別與其他吸煙行為檢測方法進行對比:基于深度學習的實時吸煙檢測算法[1],即使用卷積神經網絡對攝像頭所拍攝的視頻進行處理,經過圖像特征提取、特征融合、目標分類以及目標定位等過程,定位煙頭的位置,進而判斷出吸煙行為;基于人體關節(jié)點的多人吸煙動作識別算法[6],即利用人體關節(jié)點信息,檢測關節(jié)點的運動軌跡是否符合周期性規(guī)律從而實現(xiàn)吸煙動作識別。比較結果如表2所示,基于深度學習的實時吸煙檢測算法[1]與基于人體關節(jié)點的多人吸煙動作識別算法[6]的準確率相對較低。由于香煙目標較小,所以基于深度學習的實時吸煙檢測算法[1]檢測煙頭時,易識別出錯,并不能很好地檢測出吸煙行為;基于人體關節(jié)點的多人吸煙動作識別算法[6]只是從吸煙行為的周期性進行判斷,不能很好地區(qū)分一些類似行為如喝水、打電話等,具有一定的片面性。對比結果顯示,本文方法的準確率較高,具有較好的效果。
表2 不同方法檢測吸煙行為的結果對比
針對僅使用目標檢測檢測公共場所下的吸煙行為準確率不高的問題,本文提出了一種基于人體關鍵點和YOLOv4的吸煙行為檢測方法。首先,在傳入視頻的每一幀圖像中獲得人體和人臉的關鍵點,將這些關鍵點進行個人匹配;其次,基于每個人的關鍵點位置找到手部的位置,計算出手部到嘴部的距離、手-肘-肩膀之間的角度、吸煙的時間周期,設置吸煙行為規(guī)則,判斷是否有吸煙動作;然后,檢測圖像中是否存在香煙煙頭;最后,結合以上兩方面,當滿足吸煙動作規(guī)則且圖像中存在煙頭時,判斷人們存在吸煙行為。實驗結果表明,在自采集的吸煙數(shù)據(jù)中,該方法能夠及時有效地檢測出吸煙行為。
但是,本文提出的方法還存在一定的局限性。例如,當人們距離監(jiān)控較遠時,圖像不清晰無法檢測到人體關鍵點或將物體誤測成人體。不同場景下人的姿勢也不同,人之間會出現(xiàn)遮擋問題,不能得出很好的檢測結果。本文提出的方法主要針對單人吸煙行為進行檢測,檢測多人吸煙行為仍需進一步探究。