邸昱卿,張?jiān)苽?/p>
(昆明理工大學(xué) 信息工程與自動化學(xué)院,云南 昆明 650000)
眾所周知,吸煙對人的健康有害。根據(jù)專家學(xué)者的相關(guān)研究,抽煙產(chǎn)生的煙霧中含有將近70 種致癌物[1]。煙草中的尼古丁極易導(dǎo)致人上癮,而尼古丁使心血管系統(tǒng)疾病的危險性大大增加,中風(fēng)、心臟病等疾病的發(fā)作幾率也會增加[2]。普通人群吸二手煙的危害同樣不可小視,專家指出,普通人和抽煙者在一起吸二手煙超過15 min,其受到的對健康的傷害即等于吸一手煙的傷害[3],孕婦吸二手煙還會增加胎兒畸形、早產(chǎn)等風(fēng)險。吸煙不僅對人的健康有害,也是造成火災(zāi)、爆炸等事故發(fā)生的安全隱患之一,對于森林、倉庫、廠房等環(huán)境,吸煙引發(fā)的火災(zāi)會造成不可挽回的生命和財產(chǎn)損失。
鑒于吸煙的危害,世界各地都在采取禁煙措施。我國有關(guān)衛(wèi)生部門發(fā)布了《公共場所控制吸煙條例》,明確規(guī)定,在所有公共場所嚴(yán)禁吸煙[4]?;谟嬎銠C(jī)視覺的吸煙行為識別算法可以充分利用現(xiàn)有的監(jiān)控設(shè)備資源實(shí)現(xiàn)吸煙行為識別,對禁煙控?zé)熣叩耐菩芯哂兄匾饬x。
目前,吸煙行為識別的方法可以分為兩大類,一類是非視覺的方式,另一類是利用計算機(jī)視覺進(jìn)行檢測的方式。其中,非視覺方式包括煙霧探測器、基于WiFi 信號的吸煙識別和基于穿戴設(shè)備的吸煙行為識別;視覺方式包括基于吸煙煙霧的識別和基于煙支目標(biāo)檢測的識別。
煙霧探測器通過檢測吸煙所產(chǎn)生的煙霧來達(dá)到吸煙識別的目的。但使用煙霧探測器檢測吸煙有以下缺點(diǎn):對于空曠場景,煙霧易飄散稀釋,難以被煙霧探測器檢測到,并且空氣中有許多其他粒子,容易引起煙霧探測器的誤判?;诖┐髟O(shè)備上的傳感器的吸煙識別的原理一般為通過個人佩戴的手環(huán)等設(shè)備采集人手部的活動數(shù)據(jù),對人手部的活動數(shù)據(jù)如加速度、移動方向、距離等進(jìn)行分析,判斷人物是否存在抽煙行為,但這種方法難以適用于一般場景下的大眾吸煙行為識別,因?yàn)樵摲椒ㄐ枰伺宕髟O(shè)備才能檢測,所以該方法只適用于實(shí)驗(yàn)室環(huán)境進(jìn)行吸煙行為識別。基于WiFi 信號的吸煙行為識別由于WiFi 信號的不穩(wěn)定性和檢測的不精確性,同樣難以對抽煙行為進(jìn)行有效識別。
隨著計算機(jī)視覺的發(fā)展,傳統(tǒng)的煙霧傳感器檢測逐漸被基于視頻監(jiān)控系統(tǒng)的圖像檢測方法代替,解決煙霧探測器在空曠環(huán)境下檢測煙霧困難的問題。
基于吸煙煙霧特征識別吸煙行為的方法將香煙煙霧視為前景目標(biāo),利用前景分割算法將前景與背景分離,再依據(jù)煙霧的形狀、顏色、紋理等特征進(jìn)行識別。胡春海等使用多特征融合方法,將煙霧的動態(tài)特征和顏色特征組成特征向量,擺脫了單一特征不穩(wěn)定的局限[5]。汪祖云等為了識別出租車司機(jī)的吸煙行為,先基于顏色特征提取煙霧,再采用煙霧質(zhì)心相對角度正弦變化和煙霧變化速率作為特征進(jìn)行識別[6]。劉遠(yuǎn)丁提取吸煙煙霧的紋理特征和HOG 特征進(jìn)行分析,基于特征融合方法識別吸煙時產(chǎn)生的煙霧[7]。對香煙煙霧進(jìn)行檢測的方法存在香煙煙霧易擴(kuò)散、濃度低、邊緣不明顯等問題,而且室內(nèi)的背景大多是白色,與吸煙產(chǎn)生的煙霧顏色相近,不容易區(qū)分,而室外的背景一般比較復(fù)雜,存在較多干擾因素。
本文提出的吸煙識別方法主要由三個模塊組成,分別是人體關(guān)鍵點(diǎn)檢測模塊、吸煙姿態(tài)特征提取模塊以及吸煙行為判別模塊。人體關(guān)鍵點(diǎn)檢測模塊負(fù)責(zé)檢測圖像中的人體關(guān)鍵點(diǎn),吸煙姿態(tài)特征提取模塊負(fù)責(zé)提取用于判別是否存在吸煙姿態(tài)的有效特征,吸煙行為識別模塊根據(jù)提取到的特征對是否存在吸煙行為進(jìn)行判斷。
OpenPose 關(guān)節(jié)點(diǎn)檢測算法可以實(shí)現(xiàn)人體姿態(tài)、手部動作以及面部特征點(diǎn)等的估計,對單目標(biāo)和多目標(biāo)人物均具有較高的實(shí)用性和穩(wěn)定性[11]。
OpenPose 采用自下而上的方法進(jìn)行關(guān)鍵點(diǎn)檢測,該檢測算法由置信度算法以及局部親和算法構(gòu)成,即兩個并行的卷積神經(jīng)網(wǎng)絡(luò)。這兩個網(wǎng)絡(luò)分別負(fù)責(zé)估計人體關(guān)鍵節(jié)點(diǎn)位置和檢測肢體的親和度。OpenPose 識別人體關(guān)鍵點(diǎn)的核心為部分親和場,它可以描述骨架中像素點(diǎn)的走向。圖像經(jīng)過卷積產(chǎn)生人體骨架熱圖,部分親和場可以通過人體骨架熱圖進(jìn)行識別,檢測出人體各個關(guān)鍵點(diǎn)。然后根據(jù)檢測到的人體關(guān)鍵點(diǎn),使用部分親和場對人體關(guān)鍵點(diǎn)之間的連接進(jìn)行檢測。最后,經(jīng)過多次的迭代,可以得到最終檢測的人體骨架。
OpenPose 首先通過VGG 模型提取圖像的基礎(chǔ)特征,提取輸入圖像的特征得到特征圖集F。接著對L(p)與S(p)進(jìn)行回歸分析,L(p)表示部分親和場,用來標(biāo)注特征點(diǎn)在軀體中的方向;S(p)表示關(guān)節(jié)點(diǎn)響應(yīng),即特征點(diǎn)在軀體中的坐標(biāo)。初始化時,使用貪婪算法對關(guān)節(jié)點(diǎn)的置信度與親和度進(jìn)行計算,然后進(jìn)行多次迭代分析,將L、S及原始輸入組合,計算損失并進(jìn)行下一階段訓(xùn)練。在之后的每個階段都融合上一階段的預(yù)測和原始圖像特征圖集F并且進(jìn)行一次損失計算,預(yù)測下階段的置信度與親和度,式(1)展示了迭代流程。
式中:ρ,φ均為模型內(nèi)部參數(shù),可根據(jù)需要進(jìn)行修改,用于調(diào)整親和度迭代效果和置信度。進(jìn)行多階段擬合和修正后,生成多個關(guān)鍵點(diǎn)置信度與親和度,最終骨架關(guān)鍵點(diǎn)提取結(jié)果選取其中親和度最高的點(diǎn)。最后使用匈牙利算法將兩個并行的卷積神經(jīng)網(wǎng)絡(luò)匯總,生成人體關(guān)鍵點(diǎn)和姿態(tài),如圖1 所示為人體骨骼關(guān)鍵點(diǎn)標(biāo)注。
圖1 OpenPose 人體關(guān)鍵點(diǎn)檢測
吸煙作為一個典型人體行為,其姿態(tài)具有代表性,身體各部位會呈現(xiàn)相對有規(guī)律的姿勢。因此,準(zhǔn)確定義吸煙姿態(tài),對于吸煙行為識別具有重要作用。本文定義吸煙者正在抽吸時的姿態(tài)為吸煙姿態(tài),即抽煙者手中拿著煙并把煙送到嘴部的姿態(tài)。
檢測吸煙數(shù)據(jù)集圖片的人體骨架,分析這些坐標(biāo)發(fā)現(xiàn),當(dāng)抽煙者由香煙拿在手中的未抽吸狀態(tài)轉(zhuǎn)換到抽吸姿態(tài)時,抽煙者的手腕與鼻子之間的距離會明顯減小,同時大臂與小臂的夾角也會明顯減小??紤]抽煙者的手腕關(guān)節(jié)點(diǎn)與鼻子關(guān)節(jié)點(diǎn)像素點(diǎn)距離和手臂彎曲角度小于一定閾值時,有可能是吸煙姿態(tài)。但是由于視頻中人物尺度不確定,所以手腕關(guān)節(jié)點(diǎn)與鼻子關(guān)節(jié)點(diǎn)像素點(diǎn)之間的距離閾值難以確定。因此本文根據(jù)人體的比例,采用比值的方法,使閾值難以確定的問題得以解決。
現(xiàn)階段,事業(yè)單位的財務(wù)管理已經(jīng)從以往的記賬核算不斷拓展延伸,更加強(qiáng)調(diào)對事業(yè)單位各項(xiàng)活動尤其是經(jīng)濟(jì)活動的全過程和全方位監(jiān)督管理,這就要求應(yīng)該按照事業(yè)單位財務(wù)管理職能轉(zhuǎn)變的實(shí)際需要,進(jìn)一步調(diào)整優(yōu)化財務(wù)管理工作流程,促進(jìn)提升事業(yè)單位財務(wù)管理工作的效能水平。
如圖1 所示,假設(shè)由OpenPose 算法檢測到的人左右胯部關(guān)鍵點(diǎn)坐標(biāo)分別為(x1,y1)和(x2,y2),左手腕和右手腕關(guān)鍵點(diǎn)的坐標(biāo)分別為(x3,y3)和(x4,y4),鼻子關(guān)鍵點(diǎn)的坐標(biāo)為(x5,y5),記左側(cè)肘部關(guān)鍵點(diǎn)坐標(biāo)為(x6,y6),左側(cè)肩部關(guān)鍵點(diǎn)坐標(biāo)為(x7,y7),右側(cè)肘部關(guān)鍵點(diǎn)坐標(biāo)為(x8,y8),右側(cè)肩部關(guān)鍵點(diǎn)坐標(biāo)為(x9,y9),脖子關(guān)鍵點(diǎn)的坐標(biāo)為(x10,y10)。如圖2 所示,定義左胯到脖子關(guān)鍵點(diǎn)的距離l1和右胯到脖子關(guān)鍵點(diǎn)的距離l2,其計算如式(2)和式(3)所示,定義左手腕到鼻子關(guān)鍵點(diǎn)的距離l3和右手腕到鼻子關(guān)鍵點(diǎn)的距離l4,其計算如式(4)和式(5)。l1與l2的平均值l5計算如式(6)所示,如果由于關(guān)鍵點(diǎn)檢測不準(zhǔn)等原因?qū)е伦罂杌蛴铱桕P(guān)鍵點(diǎn)沒有檢測到,則只取檢測到的單邊胯部關(guān)鍵點(diǎn)來計算l5,即l5=l1或l5=l2。定義r1和r2分別表示判斷人左邊和右邊是否存在吸煙姿態(tài)的比例指標(biāo),其計算如式(7)和式(8)所示。如果由于關(guān)鍵點(diǎn)檢測不準(zhǔn)確等原因?qū)е路帜竘5的值為0,則令l5為1。
圖2 吸煙姿態(tài)特征定義
如圖2 所示,記從左側(cè)肘部到左側(cè)肩部的方向向量為d1=(x7-x6,y7-y6),從左側(cè)肘部到左側(cè)手腕部的方向向量為d2=(x3-x6,y3-y6),從右側(cè)肘部到右側(cè)肩部的方向向量為d3=(x9-x8,y9-y8),從右側(cè)肘部到右側(cè)手腕部的方向向量為d4=(x4-x8,y4-y8)。因此可以通過如下式(9)、式(10)計算出左側(cè)大臂與小臂的夾角α1與右側(cè)大臂與小臂的夾角α2:
當(dāng)一名抽煙者由香煙拿在手中的未抽吸狀態(tài)轉(zhuǎn)換到抽吸姿態(tài)時,分析r和α特征變化情況。當(dāng)抽煙者的狀態(tài)發(fā)生變化時,這兩種特征均會發(fā)生明顯的變化。由未抽吸轉(zhuǎn)化為抽吸狀態(tài)時,由于手距離嘴部更近,所以r會明顯減小,同時大臂與小臂的夾角也會明顯減小,α?xí)黠@減小。因此,在抽煙過程中,通過抽煙者這兩種特征的變化情況,可以較準(zhǔn)確地判斷吸煙者是否處于正在抽吸姿態(tài)。
根據(jù)大量觀察并結(jié)合對人體關(guān)鍵點(diǎn)的檢測結(jié)果可得,未抽煙姿態(tài)在正常狀態(tài)時大臂與小臂的夾角一般大于一定角度或r大于一定值,吸煙姿態(tài)小臂與大臂的夾角小于一定角度且r小于一定值,因此本文定義吸煙姿態(tài)的判別準(zhǔn)則如下:
(1)當(dāng)姿態(tài)檢測器計算出人的小臂與大臂的夾角小于α0度且r小于r0,認(rèn)為處于吸煙姿態(tài);
(2)當(dāng)姿態(tài)檢測器計算出人的小臂與大臂的夾角大于α0度或r大于r0,認(rèn)為處于未吸煙姿態(tài)。
由于目前缺乏吸煙公共數(shù)據(jù)集,因此本文自建吸煙數(shù)據(jù)集,錄制了人物抽煙視頻共32 段,視頻幀率為30 f·s-1,視頻總時長為38′24″。對視頻進(jìn)行篩選并隨機(jī)選取其中的吸煙圖像共100 張,作為本文的驗(yàn)證數(shù)據(jù)集,對吸煙識別準(zhǔn)確率進(jìn)行驗(yàn)證。100張圖像中,每張圖像都包含一個人物,人物雙手都打上了標(biāo)簽。其中一只手和嘴重合為抽吸姿態(tài),標(biāo)記為正樣本,另一只手不是抽煙姿態(tài)的樣本或者手中拿煙但并沒有抽吸的樣本標(biāo)記為負(fù)樣本。最終標(biāo)簽共200 個,其中正樣本85 個,負(fù)樣本115 個。
使用查準(zhǔn)率P和查全率R評估提取視頻中吸煙姿態(tài)幀的準(zhǔn)確率和召回率,如式(11)和式(12)所示:
式中:TP表示吸煙行為檢測正確的樣本數(shù)量,F(xiàn)P表示不是吸煙行為但被檢測為吸煙行為的樣本數(shù)量,F(xiàn)N表示存在吸煙行為但被檢測為不是吸煙行為的樣本數(shù)量。
在Windows10 系統(tǒng)上搭建實(shí)驗(yàn)環(huán)境,CPU 為Intel(R) Core(TM) i5-10400F,GPU 為NVIDIA GeForce RTX 2060,深度學(xué)習(xí)框架為Pytorch。使用MSCOCO 2017 公共數(shù)據(jù)集對OpenPose 人體姿態(tài)檢測模型進(jìn)行訓(xùn)練。
對單人吸煙視頻進(jìn)行分析,每隔10 幀選擇一幀圖片進(jìn)行分析。如圖3 所示的各幀圖像對應(yīng)圖4和圖5 曲線中的橫坐標(biāo)對應(yīng)幀。以x軸表示視頻當(dāng)前幀數(shù),y軸為r值,畫出實(shí)時曲線圖,如圖4 所示,左手的r1和右手的r2用不同曲線表示。此視頻為完整的吸煙過程視頻,其中r1表示左手離嘴部的距離,r2表示右手離嘴部的距離。視頻中,人物左手自然下垂,顯示在圖中即為r1值較大且一直沒有太大變化,右手拿煙并不斷抽吸。當(dāng)抽吸時,r2值比較小,說明右手離嘴部較近,正在把煙支放到嘴部。當(dāng)手拿著煙不吸煙時,右手也是自然下垂的,因此r1和r2接近,且都較大。從實(shí)驗(yàn)過程可以發(fā)現(xiàn),吸煙者共有7 次抽煙動作,與實(shí)際情況一致,曲線尾部左右手的r1和r2基本一致,并且處于居中的大小,是因?yàn)榇藭r吸煙行為已結(jié)束,左右手重疊,正在準(zhǔn)備扔掉煙支。實(shí)驗(yàn)結(jié)果表明,本文的吸煙姿態(tài)判別算法可以較好地區(qū)分吸煙和非吸煙動作。
圖3 吸煙視頻幀示例
圖4 r 值隨幀數(shù)變化曲線
對以上相同視頻進(jìn)行處理,計算大臂與小臂的夾角α值隨幀數(shù)的變化,得到如圖5 所示的結(jié)果。圖5 中,x軸表示視頻的幀數(shù),y軸表示角度。曲線α1表示左手大臂與小臂的夾角,曲線α2表示右手大臂與小臂的夾角??梢钥吹?,由于抽煙者左手未拿煙,處于自然下垂?fàn)顟B(tài),因此,從α1曲線可以得出左手大臂與小臂的夾角很大,穩(wěn)定在160°左右。吸煙者是右手拿煙并進(jìn)行抽吸,因此α2曲線所顯示的右手的大臂與小臂的夾角有很起伏明顯的變化,當(dāng)抽煙者處于拿煙狀態(tài),并且手臂自然下垂并未抽吸時,大臂與小臂的夾角很大;當(dāng)抽煙者往嘴里遞煙時,大臂與小臂的夾角會明顯減??;當(dāng)處于正在抽吸狀態(tài)時,大臂與小臂幾乎重疊。因此,正在抽吸時,大臂與小臂的夾角接近0°。由此可見,利用角度判斷吸煙姿態(tài)的方法同樣具有很高的可靠性,可以明顯區(qū)分正在抽吸的姿態(tài)與未抽吸的姿態(tài)。
圖5 α 值隨幀數(shù)變化曲線
通過驗(yàn)證數(shù)據(jù)集測試r0和α0的范圍的最佳取值,得到表1 的測試結(jié)果。實(shí)驗(yàn)中所設(shè)定的r0的范圍和α0的范圍用標(biāo)準(zhǔn)編號1 ~9 表示。當(dāng)r0或α0增加時,由于對于抽煙行為檢測的標(biāo)準(zhǔn)放寬,使得查準(zhǔn)率下降,查全率上升。其中標(biāo)準(zhǔn)9 的查全率最高,適合應(yīng)用于非常嚴(yán)格把控吸煙的場所,但相應(yīng)地其對應(yīng)的查準(zhǔn)率較低;標(biāo)準(zhǔn)1 的查準(zhǔn)率最高,達(dá)93.0%,但其查全率為77.6%,容易漏掉很多吸煙行為。相比之下,用標(biāo)準(zhǔn)5 來判定吸煙行為的效果最為折中,查準(zhǔn)率為83.0%,查全率為85.9%?,F(xiàn)實(shí)應(yīng)用中,可以根據(jù)實(shí)際需求來確定使用哪個標(biāo)準(zhǔn)來檢測吸煙行為。
表1 參數(shù)對模型的影響
本文提出了一種基于人體關(guān)鍵點(diǎn)的吸煙行為識別方法。通過OpenPose 模型提取人物關(guān)鍵點(diǎn)坐標(biāo),設(shè)定大臂與小臂的夾角和手腕到鼻子的相對距離比值作為特征,并建立了人物吸煙姿態(tài)判別準(zhǔn)則。實(shí)驗(yàn)表明,本文提出的方法可以有效分辨視頻中的吸煙姿態(tài)與未吸煙姿態(tài),所提出的吸煙行為識別方法準(zhǔn)確率可達(dá)83.0%,召回率可達(dá)85.9%。