蔡博深, 趙 玲*, 周 容, 孫岳麓, 駱思宏, 盧 仲, 馮 帥, 崔茹云, 馬國洋, 姬星宇, 田利隆, 王朋珍
(1.東北石油大學計算機與信息技術(shù)學院黑龍江大慶 163318;2.大慶油田設計院有限公司信息技術(shù)中心黑龍江大慶 163712)
在教學過程中, 課堂教學是很重要的一個環(huán)節(jié)。學生在課堂上的表現(xiàn)以及學生的聽課狀態(tài)都是衡量課堂教學效果的重要方式。課堂中的行為是評價聽課效果的重要指標。因此, 無論是授課教師還是管理層, 對學生課堂的不規(guī)范行為都極為關注。然而在傳統(tǒng)的課堂教學中, 學生的聽課狀態(tài)及不規(guī)范行為主要依靠授課教師的觀察, 當發(fā)現(xiàn)不規(guī)范行為時, 只能做到口頭提醒。該方法不僅影響了教師授課環(huán)節(jié)的流暢性, 同時由于教師是在授課過程中觀察的, 對學生的評價難以做到全面準確。因此, 通過計算機視覺的方式對學生課堂不規(guī)范行為進行檢測逐漸受到關注。
隨著視頻監(jiān)控的普及, 許多多媒體教室都安裝有視頻監(jiān)控, 但是視頻監(jiān)控功能多用來進行視頻回放或人工查閱。人工查閱不能夠及時地反饋信息, 且需要耗費大量的人力。隨著計算機視覺技術(shù)的發(fā)展, 人體行為檢測技術(shù)得到廣泛關注。文獻[1]使用紅外視頻進行人體行為識別, 與可見光圖像進行融合判斷。文獻[2]針對課堂環(huán)境的行為識別, 使用隱馬爾科夫模型(SCHMM)實現(xiàn)人體形態(tài)特征識別。文獻[3-4]針對逐幀的識別失去幀間的連續(xù)性, 使用時序網(wǎng)絡對視頻場景下連續(xù)性信息進行識別。文獻[5-6]使用骨骼信息作為學生課堂行為的表征, 使用Kinect傳感器套件完成骨骼坐標提取, 并使用圖卷積網(wǎng)絡進行行為識別。文獻[7]使用Open Pose和改進的VGG16、SSD算法完成課堂行為識別, 文獻[8]提出了基于Open Pose的異常行為檢測系統(tǒng), 該模型可以對考場中多名考生同時進行骨骼關鍵點檢測, 根據(jù)關鍵點信息提取有用的特征向量進行訓練, 可較好地檢測出探頭、伸手、站立3種異常行為, 文獻[9-10]針對真實課堂環(huán)境易受遮擋問題, 對比了Alpha Pose和Open Pose算法, 結(jié)果表明Alpha Pose算法在教室這類有遮擋物場景下的關鍵點估計比Open Pose算法準確率高出2.54%。文獻[11]提出了將ST-GCN用于人體行為識別, 提高了識別效率和準確率
關于行為識別的方法很多, 但將人體行為識別方法應用在課堂環(huán)境, 實現(xiàn)對學生課堂的規(guī)范行為識別不多, 而且實時性差, 因此本文提出了一種基于圖卷積神經(jīng)網(wǎng)絡的學生課堂不規(guī)范行為實時檢測方法。首先采集學生課堂圖像, 然后對視頻監(jiān)控的學生使用YOLOv5進行定位, 對其骨架進行提取, 最后利用圖卷積網(wǎng)絡分類識別。算法流程如圖1所示。
圖1 算法流程圖Fig.1 Algorithm flow chart
因為課堂環(huán)境背景復雜, 所以為了減少不必要的檢測和提高效能, 需要對學生進行定位, 減少后續(xù)骨骼提取和行為識別帶來的計算量。本文使用YOLOv5網(wǎng)絡作為學生的定位基礎模型。其針對輸入端, 使用了自適應錨框計算等操作, 使得對于教室監(jiān)控中的學生這種小型目標的檢測具有非常好的效果。預測框來自初始錨框的輸出, 與真實框進行比對, 計算差距, 反向更新迭代, 使得效果更加穩(wěn)定;它融合了其他算法中的一 些 結(jié) 構(gòu), 如Focus和CSP(Cross Stage Partial Network)等;增加了FPN(Feature Pyramid Network)和PAN(Path Aggregation Network)的結(jié)構(gòu), 修改損失函數(shù)為GIOU_Loss, 非極大值抑制采用DIOU_nms。
Alpha Pose姿態(tài)估計算法采用自上而下的策略進行人體骨骼識別。其主要采用仿射變換調(diào)整檢測框, 附加單人姿態(tài)估計(Single-Person Post Estimator, SPPE)用于訓練擬合, 以及采用參數(shù)化非極大值抑制解決冗余問題。
由于卷積神經(jīng)網(wǎng)絡并不具備標度不變性和旋轉(zhuǎn)不變性, 只有最大池化才具有不變性。越大的池化層, 感受野就越大, 所允許的平移就會越大。本文采用對稱空間變換網(wǎng)絡(Symmetric Spatial Transformer Network, SSTN), 通過仿射變換, 實現(xiàn)了映射轉(zhuǎn)換功能, 其給每一種變化都提供了2個參數(shù), 最后使用6個參數(shù)用于表征對原圖的變化。SSTN由空間變換網(wǎng)絡(Spatial Transformer Network, STN)和空間反變換網(wǎng)絡(Spatial Detransformer Transformer Network, SDTN)2個部分組成, STN的結(jié)構(gòu)主要分為參數(shù)預測、坐標映射、像素點采集。
本文使用STN和SDTN自動選取ROI, 使用STN去提取一個高質(zhì)量的人體區(qū)域框, 如式(1)所示:
其中,θ1,θ2和θ3都是二維空間的向量,xi和yi分別表示某一點的x和y坐標,t表示變換前的坐標,s表示變換后的坐標。
在經(jīng)過單人姿態(tài)識別之后, 使用SDTN將估計的人體姿態(tài)反射回原圖坐標中, 如式(2)所示:
其中γ1,γ2和γ3為反向轉(zhuǎn)換需要的參數(shù)。
STN和SDTN的結(jié)構(gòu)為反向結(jié)構(gòu), 有以下關系:
因此STN和SDTN是被同時更新參數(shù)的。
相較于傳統(tǒng)的兩步法, 本文采用新的姿態(tài)距離函數(shù)Dpose來比較姿態(tài)之間的相似程度, 從而消除冗余的識別結(jié)果。非極大值抑制, 即抑制不是極大值的元素, 在本文上一步的檢測中, 會產(chǎn)生非常多的目標檢測結(jié)果框, 其中有很多重復的框都定位到同一位學生中, 需要去除這些重復的框, 獲得真正的目標框。
值得注意的是, 即使使用較小的閾值Nt, 附近的檢測框也會受到較多的抑制, 因此有很高的錯失率, 而使用大的Nt, 將會增加假正的情況。當目標個數(shù)遠小于ROI個數(shù)時, 假正的增加將會大于真陽的增加, 因此高的NMS不是最優(yōu)的。
本文使用距離函數(shù)Dpose來判定姿態(tài)距離。如式(4)所示:
其中Β(kni)表示部位i的區(qū)域位置,knj表示第j個部位的坐標位置,cni表示第j個部位的置信度分數(shù), tanh函數(shù)可以過濾掉置信度低的姿態(tài), 當2個姿態(tài)的置信度都比較高的時候, 上述函數(shù)輸出接近1。這個距離表示姿態(tài)之間不同部位的匹配數(shù)。
因此最終可定義為
本文采用時空圖卷積網(wǎng)絡[14]分析學生課堂骨架數(shù)據(jù)中的行為。時空圖卷積網(wǎng)絡(Spatial Temporal Graph Convolutional Networks, ST-GCN), 是基于圖卷積神經(jīng)網(wǎng)絡加強時空聯(lián)系的一類模型, 使得人體行為識別方法得到了極大的改進。其中輸入來自Alpha Pose提取的骨架關鍵點, 在骨架序列中構(gòu)造時空圖, 利用分區(qū)和跨時間連接等方式, 再聯(lián)合利用幀序列控件信息來提取骨架信息, 從信息中提取高級別的特征來聚合圖像。
ST-GCN最后使用softmax函數(shù)完成分類操作。
來自Alpha Pose的學生骨架序列由骨骼關鍵點的二維坐標表示。在此使用時空圖G=(V,E)表示關節(jié)點之間的時間與空間之間的連接關系。V表示骨架序列中的所有節(jié)點, 對于來自Alpha Pose的數(shù)據(jù)為13個關鍵點。E包括2種連接, 分別為不同時間之間的連接和同一時間不同關節(jié)點之間的連接。
在圖像中, 采樣函數(shù)是相對于中心位置的近鄰像素, 也就是圍繞中心位置的卷積核大小的一塊區(qū)域。在圖卷積中, 可以類似地定義為對于節(jié)點vti其鄰近節(jié)點集合B(vti)={vtj|d(vtj,vti)≤D}上的采樣函數(shù), 其中d(vtj,vti)表示從vtj到vti的最小長度(最小跳數(shù))。因此采樣函數(shù)p:B(vti)→V可以被寫作
本文選取D=1, 也就是最近鄰。
在二維卷積中, 相鄰像素的空間順序是固定的, 因此權(quán)重函數(shù)可以按照空間順序建立索引, 按元素乘法計算。而對于圖卻沒有這樣的排列順序, 所以本文認為鄰近節(jié)點的空間順序由根節(jié)點周圍鄰居圖中的圖標記過程定義, 通過劃分某一關節(jié)點vti的鄰居集B(Vti)到固定數(shù)量的K個自己來簡化這一過程, 其中每個子集共用一個標簽。因此映射為
lti:B(vti)→{0, …,K-1}, 權(quán)重函數(shù)為
本文實驗執(zhí)行環(huán)境為:Intel i5-9300H 2.4GHz CPU、NVIDIA GTX 1660ti GPU, 操作系統(tǒng)為Windows 10 20H2, 編程語言為Python3.9, 使用PyTorch進行訓練。
本文以學生課堂作弊視頻為數(shù)據(jù)集, 包括玩手機、打瞌睡、走神等17種行為。
學生定位選擇YOLOv5框架, 使用上述的自制數(shù)據(jù)集, 其中包括33669個訓練視頻和5611個驗證視頻, 將圖像歸一化到528x528像素, 使用Adam優(yōu)化器, 置信度閾值為0.7, 非極大值抑制閾值為0.4, 學習率為10-4。隨機抽取訓練樣本進行1400次迭代, 每次迭代樣本數(shù)為2個。
本文以精確度(P)和平均精度(mAP)來衡量模型, 計算公式如式(8)所示:
其中,TP(true positive)表示被正確分類的正例;FP(false positive)表示本來是負例, 被錯分為正例。
在測試集上, YOLOv5的檢測精度為98.9%, 平均幀率可以達到18幀/秒。檢測效果如圖2所示。
圖2 學生檢測結(jié)果Fig.2 Results of students detection
經(jīng)過課堂學生定位分析得出學生邊框過于緊湊, 可能存在信息損失, 本文實驗中, 無視長寬比統(tǒng)一尺寸。本文分別采用Open Pose[12]、DSTA-net[13]和Apha Pose進行人體骨架提取。實驗結(jié)果如表1所示, Alpha Pose和DSTA-net的效果如圖3所示。
圖3 Alpha Pose(左)和DSTA-net(右)識別結(jié)果Fig.3 Result of alpha Pose(left)and DSTA-net(right)
表1 單人關鍵點提取結(jié)果Tab.2 Result of single persion key point extraction
根據(jù)實驗結(jié)果, 可以看到Apha Pose的效果比較突出, 且性能也比較優(yōu)秀。按照上述流程, 本文在不同場景下對人物不同行為的骨骼數(shù)據(jù)進行分析和檢測, 結(jié)果顯示, 測試準確率為94.9%, 其中影響識別結(jié)果的原因是人體關節(jié)的部分遮擋、不常見行為和非學生的誤識別。因此又對樣本中的困難樣本進行了剔除, 保留了完整的人體信息, 去除了舞臺跳舞等動作, 測試準確率為97.0%。
圖卷積神經(jīng)網(wǎng)絡是深度學習神經(jīng)網(wǎng)絡, 原則上也可以基于圖像進行識別, 但是由于沒有在圖像中標識出骨骼姿態(tài), 因此識別精度并不高, 識別效率也會降低, 影響實時性, 而ST-GCN是用于識別骨骼關鍵點信息的網(wǎng)絡[15], 該網(wǎng)絡設計的輸入和輸出均為骨骼姿態(tài), 輸入骨骼姿態(tài)可以達到較好的精度和效果。
根據(jù)模型詳細設計流程, 為了測試圖卷積神經(jīng)網(wǎng)絡對于骨骼數(shù)據(jù)的分類效果, 本文選擇了骨骼提取效果進行識別, 并與標注的結(jié)果進行對比, 通過實驗結(jié)果可以看出, ST-GCN可以很好地學習人體骨架數(shù)據(jù)所包含的動作信息, 很好地用于人體行為識別中。
本次訓練所使用的數(shù)據(jù)集中, 訓練集有33669個骨架, 驗證集有5611個骨架。本次訓練每次隨機采樣10個, 迭代2000次, 學習率為0.0001, 使用Adam優(yōu)化器和交叉熵損失函數(shù)。最終的圖卷積模型在訓練集上的分類準確率為100.0%, 在驗證集上的分類準確率為96.0%。行為識別結(jié)果如圖4所示。
圖4 行為識別結(jié)果Fig.4 Result of behavior detection
本文針對現(xiàn)有方法在學生課堂環(huán)境下的行為檢測不能實時準確地識別學生行為的問題, 提出了一種基于Alphap Pose和ST-GCN的學生課堂行為檢測模型。首先對課堂攝像視頻進行切割, 降低計算量, 然后使用Alpha Pose提取人體骨架, 最后使用圖卷積神經(jīng)網(wǎng)絡進行學生行為識別。
實驗表明, 該方法在真實課堂場景下檢測速率可達20幀/秒, 行為識別準確率可達94.9%, 能夠及時發(fā)現(xiàn)學生課堂的不規(guī)范行為。但是, 該模型對于動作幅度較大的行為依舊存在著識別錯誤的情況。因此, 在今后將針對特殊動作情況下行為識別存在的失誤進行研究。