李昊朋王景成黃姣茹
(1.西安工業大學電子信息工程學院 西安 710016)(2.上海交通大學自動化系 上海 200240)
人體行為識別是目前計算機視覺領域中非常熱門和具有挑戰性的內容之一,其研究方法分為人工特征[1~2]表示以及深度學習的特征表示[3]。
文獻[4]提出的視頻監控系統可以把圖像中的人體和背景的分布進行分割,分離出的人體部分可以用建模方式進行檢測,然而由于網絡結構以及數據集的限制,此方法運算的速度和準確度不高。文獻[5]提出的雙流融合3D卷積技術從兩條分支網絡得到彩色和深度行為特征,此方法雖然可以達到目前主流行為識別算法的水平,但是受硬件限制較大,難以部署到輕量化的操作環境。
針對上述準確度不高、計算速度較慢的問題,本文提出了融合了目標檢測和行為檢測的機器視覺檢測方法。從YOLO目標檢測入手,主要面向多人圖像,利用Blaze Pose關鍵點檢測和ST-SVM分類器以及角度識別結合的方法,得到圖像特征信息;之后通過制定決策融合策略,對兩種圖像行為信息進行決策融合,得到最終行為識別結果。
基于機器視覺的工廠人員異常行為檢測包括多人圖像分割、人員行為識別和決策融合等幾個關鍵步驟,系統的具體結構框圖如圖1所示。

圖1 多人行為識別框架圖
本文選擇使用YOLOv5算法將多人圖像分割為單人圖像[10~12]。之后使用Blaze Pose識別單人圖像中的骨骼關鍵點,并對提取出的數據進行處理。利用角度判別的方法,得到圖像行為1。再將關鍵點數據歸一化后,送入分類器中進行預測,得到圖像行為2。最終使用制定的規則對兩種圖像行為決策合并,得到最終的行為信息(怠工、姿態異常等)。
在實際的場景中,一些動作的姿態點有一定的規律,比如當人的雙手舉起來時,大臂與肩膀的矢量角度會大于0°(以右下為坐標軸正方向),當人叉腰的時候,大臂與小臂的角度會大于60°且小于120°等。如果通過Blaze-Pose的坐標得到一些基于關鍵點的矢量信息,就可以通過計算矢量之間的夾角,從而獲得人員的行為信息[15]。基于Blaze-Pose實現的角度判別行為示例如表1所示。
矢量間的角度計算公式如式(1)所示:


以表1給出的四種行為為例,結合正常人員行為,給出的人員站位情況如圖2所示。

表1 基于關鍵點角度的行為判別
圖2(a)為角度識別人員行為的正常人員空間站位,右肩關鍵點3與左肩關鍵點1坐標作差可得矢量S1,左肘關鍵點2與左肩關鍵點1作差可得矢量S2,兩矢量在空間意義上的夾角為θ1,而正常狀態下人員的左臂小臂自然下垂時,θ1<0。同理正常狀態下右臂與水平夾角θ2也小于零。圖2(b)為舉左手的人員空間站位,左臂舉起,則矢量S1與矢量S2之間的夾角θ1大于0,右臂正常,判定為人員舉左手。舉右手則與舉雙手同理。圖2(e)為雙手叉腰狀態的人員空間站立,人員關鍵點1與關鍵點2矢量記為S3,關鍵點2與關鍵點3之間的矢量記為S4,當做叉腰動作時,兩個矢量之間的夾角60°<α3<120°,左臂同理,當兩條手臂的夾角同時滿足叉腰條件,則判定為雙手叉腰[13]。

圖2 人員空間站位圖
目標分類主要用來對提取出的人體關節點數據進行分類,從而判斷出人員當前行為。Blaze Pose關于人體的關鍵點可以檢測出33組,但是本文僅需通過分類器檢測出人員站立、坐下以及躺下三組基本行為。因此,本文采用雙肩、雙髖以及雙膝8組關鍵點的輸出格式,關節拓撲如圖3所示。

圖3 用于分類的人體拓撲圖
通過Blaze Pose獲取到人體關節點坐標后,將歸一化后的坐標作為分類數據,通過SVM分類器進行分類。但是SVM算法本質上是一個二值分類器,不適合用于多分類任務中。因此,需要構造合適的SVM多類分類器,常用來構建SVM多分類器的方法有直接和間接法兩種。本文采用間接法中的基于決策樹的SVM(ST-SVM)對人員行為進行分類,首先將所有類別分為兩個類別,接著再將子類進一步劃分為兩個次級子類。反復循環,直到所有節點都只包含一個單獨的類別為止。
本文選取實驗場景為洛陽中航光電矩形彈簧SMT組裝車間,此車間秉承“質量第一、持續改進和打造精品”的質量方針,無論是對工序還是對員工的生產要求都極高,選取此場景作為實驗場景符合本文涉及課題的要求。
文中融合決策由工廠內分發調查問卷,以及實地考察過后調整得到。在整理的策略中選出具有代表性的四種作為參考,如表2所示。

表2 部分融合行為決策
SMT車間組裝矩形彈簧工位較其他工位略簡單,適合做場景內的人員行為分析,表中規定時間為廠區內的正常上班時間,即8:00-11:00,14:00-20:00,在此時間段內,員工若是在規范工位正常工作,則判定為無異常行為,表現形式為Normal;而若是通過圖像檢測到人員在正常上班時間內,坐下并身子后仰、站立叉腰或者趴在桌子上,則判定為怠工,表現形式分別為LieDown1和LieDown2;若是檢測到人員有趴在桌子上或者躺下的行為,則判定為Abnormal。
針對各異常行為的處理,可以通過異常行為層級來進行。異常行為越嚴重,其異常層級就越高,對此工位人員的處理方式也會越嚴厲。
比如LieDown1可能是工位內人員久坐后無意伸的一個懶腰,此時并不需要將其記錄到異常行為中;而Abnormal行為的情況比較嚴重,有可能是員工在上班時間休息,也有可能是員工在正產工作中摔倒,此時就需要車間的管理人員立即做出處理。異常行為層級可以有效地避免人力資源浪費的問題。
支持向量機的訓練數據集為工位內單人的拍攝視頻,針對分類的行為僅設置了站立、坐下和躺下三種,由于拍攝的視頻為60fps,因此每隔30幀選用一張圖片。其中站立行為選用3000張圖片,坐下行為和躺下行為各選用2500張圖片,并選用不同工位員工,各三種不同的行為作為數據集。并按照一定的比例將數據集隨機劃分為訓練集、交叉驗證集和測試集。
訓練和交叉驗證過程的損失值和準確率如圖8所示。將學習率設置為0.0001,Batch Size(每次訓練抓取訓練樣本數)設置為32,Epoch設為100。

圖4 損失值和準確率
為了方便比較,在使用ST-SVM訓練的同時,同時采用經典SVM分類、隨機森林(RF)和邏輯回歸分類(LR)三種分類方法對現有數據進行識別對比。
本文采用召回率(R)、準確率(A)和F1指數對模型的識別結果進行評價[14]。計算式如下:

ST-SVM的測試數據集有1600張圖片,其中圖片已全部標注,站立行為有600張,坐下和躺下行為各有500張。對測試數據集進行分類,可以得到三種行為的分類數據,如表3、表4和表5所示。

表3 站立行為分類數據

表4 坐下行為分類數據

表5 躺下行為分類數據
為了盡可能增加場景的多樣性,選取兩個工位,各三個視角的監控視頻作為實驗數據。同時為了保證實驗無偏差進行,選用正常和非正常工作時間不同時段的視頻作為實驗數據。而為了保證實驗的正確性,實驗從各個視頻一共截取了1000張圖片作為數據集。
首先使用人工標注的手段,根據表2制定的人員決策規定,將每一張圖片中的人員行為手動標注出來,默認人工標注的行為準確率可達到100%。
將1000張實驗圖片輸入進模型進行檢測,并以人工標注的行為為目標進行擬合。
針對實驗結果,使用精確率、召回率和F1指數對各種行為進行評價,評價指數如表6所示。

表6 定義行為識別精度
由表6可知,正常工作的精確率可達到95%以上,而對于比較復雜的姿態異常,檢測準確度只有91%。
對于標注的1000張圖片的混淆矩陣如圖6所示。縱坐標為真實類別,橫坐標為預測類別,Normal、LieDown1、LieDown2和Abnormal四種行為用0,1,2,3表示。
通過混淆矩陣可以看出,四種決策行為基本上都可以檢測出來,怠工行為1和怠工行為2檢測稍有偏差,有一些誤判;而正常工作和姿態異常偏差和誤判相比之下并沒有那么嚴重。
除了本文的方法,常見的行為識別方法還有HOG特征提取+SVM分類[16]以及3D卷積[5]兩種。
應用本文挑選的1000張圖片作為數據集,對兩種方法進行復現,其識別率和運行速度與本文方法對比數據如表7所示。

表7 各方法平均識別率對比

圖5 測試結果混淆矩陣
本文提出的行為識別類似基于檢測的兩階段方法,雖然精度比HOG高1%,比3D卷積高4%-5%,但是速度遠達不到要求。
使用本文方法的識別結果序列如圖6所示。

圖6 策略融合后的檢測結果
本文針對工廠內人員的異常行為進行分析,首先使用YOLOv5將多人圖像分割為單人圖像,之后使用Blaze Pose獲得人體關鍵點,并用角度識別和分類器識別獲得圖像行為,在制定融合決策之后,可以實現對工廠內多人行為的正常工作、怠工和姿態異常等行為進行識別,但是與3D卷積等一階段的識別方法相比,精度雖然有所提升,可是速度卻達不到要求。因此,如何在繼續保證精度的前提下,提升系統的檢測速度,將是下一步的研究方向。