



摘要:相比傳統的人工督導學生課堂行為,基于深度學習的智能督導具有巡查效率高、人工成本低等優點。然而,自主設計深度學習模型不但需要專業的算法知識,還會面臨模型設計復雜、訓練成本高昂等諸多困難。為解決這些難點,文章提出了一種基于YOLOv5預訓練模型的遷移學習方案。首先采集和標注本地場景圖像,構建側身、睡覺、看手機等失范行為的訓練數據集,然后對YOLOv5源模型進行微調訓練,得到適用于課堂場景的行為識別模型。評估結果顯示,當置信度閾值設定為80%時,該模型對學生失范行為的平均識別精確率達到了78.5%,在精度和效率方面均滿足智能督導的實際應用需求。
關鍵詞:遷移學習;YOLOv5;目標識別;深度學習;圖像標注;模型微調
中圖分類號:TP183" " " " 文獻標識碼:A
文章編號:1009-3044(2025)12-0034-03
開放科學(資源服務) 標識碼(OSID)
0 引言
在教學督導過程中,學生課堂行為是否規范為重要關注點,督導人員需要及時發現學生低頭、看手機等失范行為并予以糾正。近年來,隨著深度學習算法的發展[1-3],利用深度學習替代人工模式實現智能化督導已成為可能。然而,自主研發深度學習模型需要深厚的專業知識積累,并面臨模型設計復雜和訓練成本高的挑戰。為解決這些問題,本文提出了基于YOLOv5架構的遷移學習方案——通過對YOLOv5預訓練模型進行微調訓練,構建學生課堂行為識別模型。評估結果顯示,當置信度閾值設為80%時,此模型對學生側身、睡覺、看手機等行為的平均識別精確率達到78.5%。此外,該方案具有資源需求少、開發效率高等優點,尤其適合缺乏人工智能專業人才的普通院校推廣應用。
基于上述方案,同步研發了學生行為識別系統,具體內容包括設施建設、圖像采集與標注、可行性分析、源模型微調以及模型評估等步驟。目前,系統已經上線運行,為教學督導提供了智能化支持。
1 設施建設
1) 攝像頭安裝調試。攝像區域盡量覆蓋整個教室,若單個攝像頭無法覆蓋,可以在不同位置安裝多個攝像頭。調整攝像頭分辨率為1 920×1 080像素以確保圖像清晰;調整亮度和對比度以確保圖像色彩均衡;設置每個攝像頭的IP地址和端口以實現遠程訪問。
2) 存儲和算力建設。①存儲設施建設。以山東輕工職業學院為例,學校大約擁有180間教室,每間教室正對學生安裝至少一個攝像頭,所有攝像頭每隔120秒采集一次圖像,每張圖片大小不超過800K,根據課程表估算,每月采集的圖片總量不超過2T。為了存儲足夠的歷史數據,建設了存儲總量為30T的HDFS集群保存海量圖片。②算力設施建設。搭建了2臺強算力服務器,使用負載均衡策略分配圖像處理任務。每臺服務器配置2個AMD EPYC 7H12 64核CPU和512G內存,分別安裝了英偉達RTX 8000顯卡,并部署了YOLOv5運行環境。
2 圖像采集
攝像頭采集課堂圖像可以使用兩種方式:①廠商提供的SDK開發包。②使用RTSP協議。
SDK開發包提供了豐富的功能接口,開發的代碼采集效率高、傳輸速度快,但是靈活性較差,不同廠家的圖像采集代碼無法通用;RTSP是一種實時流媒體傳輸標準協議,幾乎所有主流品牌的攝像頭均支持,借助于OpenCV很容易實現RTSP流的采集,缺點是采集速度稍慢。
假設某攝像頭RTSP地址是10.8.8.8,端口是554,用戶名和密碼分別是admin和888888,OpenCV采集其圖像的核心代碼如下:
rtsp_url='rtsp://admin:888888@10.8.8.8:554/cam/realmonitor?channel=1amp;subtype=0'
cap = cv2.VideoCapture(rtsp_url)" " # 創建VideoCapture對象
ret, frame = cap.read()" " " " " " " # 如果ret為true,則幀圖像frame可以正常使用
cv2.imshow('Camera Frame', frame)" #顯示frame
由于大部分網絡攝像頭只有一個鏡頭,因此channel一般默認為1。subtype=0表示采集高清主碼流。代碼中的frame對象保存采集到的圖像,如果ret為true,則frame可以正常使用。
需要注意的是,讀寫HDFS集群的圖像文件必須使用二進制流模式,OpenCV的imwrite方法不能處理二進制,需要先使用io.BytesIO方法對frame進行格式轉換,然后使用PySpark的binaryFiles方法將字節數組保存到HDFS集群。
同理,從HDFS集群讀取圖像時,先用binaryFiles方法讀入圖像的二進制流,然后通過io.BytesIO方法轉換成OpenCV可以處理的對象。
3 圖像標注
YOLOv5微調屬于有監督學習,因此需要提供大量圖像及其對應的標簽數據。常見的標注軟件有LabelImg和LabelMe,本方案選擇LabelImg進行標注,因為其YOLO模式的標簽格式完全符合YOLOv5的要求。側身、睡覺和看手機等行為的檢測本質上就是圖像的目標檢測。在LabelImg的YOLO模式中,將此3類行為分別標注為sideways,sleep和phone,并將標注信息保存為與圖像同名的文本文件。
4 YOLOv5微調訓練
YOLOv5廣泛應用于目標識別領域,因其高效和準確而備受青睞。其輕量級設計適合實時檢測,廣泛應用于安防監控、工業檢測等領域[4-6]。YOLOv5網絡模型主要由3部分組成:主干網絡Backbone、頸部網絡Neck和頭部網絡Head。Backbone支撐著整個網絡的特征提取能力,是網絡中的核心和支撐結構;Neck連接Backbone和Head,實現了特征的有效融合和傳遞;Head負責預測目標的類別和邊界框位置。
4.1 模型微調的可行性
課堂行為識別算法的研發通常遵循以下流程:采集和標注大量學生課堂場景圖片,設計合理的網絡模型結構,然后將場景圖片輸入模型進行訓練,通過迭代模型的權重和偏置矩陣參數,最終得到理想的網絡模型,并運用此模型對場景圖像進行目標檢測。
4.1.1 基于源模型微調的優勢
1) 豐富多樣的訓練數據源。用于訓練YOLOv5源模型的COCO數據集含有覆蓋各類場景的圖像33萬張,標注對象數量超過200萬,共計80個分類。這些多樣化的海量數據使得YOLOv5預訓練模型已經學習到豐富的特征表示,從而具備較強的泛化能力。在微調階段,通常只需要較少的訓練數據和計算資源,就可以訓練得到新模型。
2) 復雜且合理的模型結構。YOLOv5的預訓練模型包含了卷積、C3模塊、SPPF模塊等復雜結構,含有上百萬個參數,它已經具備了對圖像的邊緣、紋理、形狀等特征的提取和識別能力,可以直接應用到大多數場景[7-8],自然也適用于課堂場景。這就極大簡化了模型開發流程,規避了從零構建模型的復雜設計和參數調優等難題。
3) 多維度的自由選擇。YOLOv5預訓練模型包括yolov5s.pt、yolov5m.pt和yolov5l.pt等多種選擇。模型文件越大,檢測精度越高,但是微調訓練和目標檢測需要的時間和計算資源也越多,用戶可以根據自身需求自由選擇。
4.1.2 模型微調的主要環節
1) 輸出分類調整。預訓練模型輸出的80個分類不符合本地需求,這就需要通過微調訓練以適應本地任務。YOLOv5允許用戶配置自己的yaml文件,根據用戶配置調整輸出層分類以適應本地任務。在本方案中,輸出只有3個分類,分別對應的是:phone,sideways,sleep。
2) 本地訓練。COCO數據集并沒有覆蓋本地課堂場景,因此需要輸入本地場景圖像對模型進行微調訓練,以提高模型在本地化任務中的準確性、魯棒性和泛化能力。
4.2 微調具體步驟
4.2.1 準備本地圖像
建立文件夾(假設是student_train) 保存本地訓練、驗證、測試圖像和對應的標簽,目錄結構如圖1所示。
images下含有train、val和test等子目錄,train保存訓練圖像,val保存訓練過程使用的驗證圖像,test保存測試圖像,在訓練完成后評估新模型性能;labels下含有相同的子目錄結構,分別保存每張圖像對應的txt標簽,標簽文件名必須與圖像名稱完全一致。將本地場景的訓練圖像、驗證圖像和測試圖像分別放入images下的對應子目錄。同理,對應的txt標簽文件放入labels下的對應子目錄。
4.2.2 配置本地數據集文件
默認情況下YOLOv5的train.py使用coco128.yaml作為數據配置文件,為了訓練本地圖像,需要用本地配置文件替換它。假設本地配置文件為student_train/student_train.yaml,按照圖1建立的目錄,設定參數如下。
Path:student_train" " # 指定了本地圖像數據集的根目錄
Train:images/train # 指定了本地訓練圖像的根目錄
Val:" "images/val" " " # 指定了本地驗證圖像的根目錄
Test:images/test" " " # 指定了本地測試圖像的根目錄
nc: 3" " " " " # 指定本地標簽一共有3個分類
names: ['phone','sideways','sleep']" " # 指定本地標簽的3個分類名稱
4.2.3 微調訓練
train.py腳本文件用于模型微調訓練,此文件運行時可以指定諸多參數,常用參數如下。
python" train.py" --data" student_train.yaml" --weights" yolov5s.pt" "--img" 1280" --epochs" 1000" " "--batchsize" 32" --project" d:\student_train" --name" result
data參數指定了數據源配置文件,表示從student_train.yaml中獲取訓練、驗證圖像的路徑、類別標簽等;weights指定了預訓練模型使用yolov5s.pt;img表示訓練時圖像大小調整為1 280×1 280像素;epoch=1 000表示整個數據集將被循環訓練1 000次;batchsize表示訓練時每個批次輸入32張圖像。
在訓練前一共采集了12 000張不同課堂場景的本地圖像,按照13∶1∶1的比例劃分為訓練、驗證和測試集合。訓練時設置迭代次數1 000次,學習率為0.001,使用train.py對源模型yolov5s.pt進行微調訓練,2臺算力服務器累計運行72個小時后,在project和name參數指定目錄下生成best.pt和last.pt兩個微調模型,由于best.pt在驗證集上表現出了更好的性能,所以選擇它作為目標識別模型。
4.3 模型運行與評估
系統每隔120秒采集一次全校課堂圖像,2臺算力服務器根據負載均衡策略定時運行識別腳本:
python" "detect.py" --weights" best.pt" --source" pic_dir" --project" result" --name" runs" --save-conf。
其中,weights指定了使用的識別模型best.pt;source指定待檢測圖像所在目錄;--save-conf設定目標識別的置信度閾值;識別結果以文本文件保存到project和name指定的路徑result/runs。識別結果圖示如圖2所示。
在測試圖像集上使用平均精度(Average Precision,AP)衡量微調模型的性能,AP值越大,表示模型在召回率和精確率兩個維度上的綜合性能越好,微調后的模型評估結果如表1所示。
在實際督導過程中,應將此模型的置信度預設為80%以提高識別精確率,雖然會損失部分召回率,但是為了避免誤判給課堂考核帶來負面影響,采取這樣的策略是合理的。此時的精確率和召回率如表2所示。
在置信度80%的預設條件下,“睡覺”和“側身”行為識別精確率較高,“看手機”行為識別精確率偏低,這是因為“看手機”和“低頭看書”行為相似度很高,容易導致混淆,若要精確區分這兩類行為,需要進一步優化算法。
5 結束語
文章分析了基于YOLOv5預訓練模型的遷移學習方案,該方案基于原生模型的成熟架構和特征提取機制,通過微調訓練構建了本地目標識別模型,規避了復雜的模型架構設計,大幅度降低了開發成本。該方案的遷移學習方法也適用于其他架構模型,如VGG、Faster R-CNN及DeepSeek和通義千問等多模態大模型,為不同場景的模型本地化求解提供了快捷、高效且適配性好的解決思路,具有廣闊的應用前景。
參考文獻:
[1] 蓋榮麗,蔡建榮,王詩宇,等.卷積神經網絡在圖像識別中的應用研究綜述[J].小型微型計算機系統,2021,42(9):1980-1984.
[2] 王韜,路博雅,劉芳瑜,等.基于Faster R-CNN的非機動車識別程序設計[J].信息與電腦(理論版),2022,34(11):147-150.
[3] 張會珍,劉云麟,任偉建,等.人體行為識別特征提取方法綜述[J].吉林大學學報(信息科學版),2020,38(3):360-370.
[4] 林寶華,劉坤,朱一帆,等.基于YOLO v5的工人玩手機行為檢測方法研究[J].南京工程學院學報(自然科學版),2023,21(1):39-44.
[5] 王沛雪,張富春,董晨樂.基于YOLOv7的交通目標檢測算法研究[J].計算機測量與控制,2024,32(4):74-80.
[6] 邵延華,張鐸,楚紅雨,等.基于深度學習的YOLO目標檢測綜述[J].電子與信息學報,2022,44(10):3697-3708.
[7] 曾凱,李響,陳宏君,文繼鋒.引入注意力機制的改進型YOLOv5網絡研究[J].軟件工程,2023,26(1):55-58.
[8] 張紅民,莊旭,鄭敬添,等.優化YOLO網絡的人體異常行為檢測方法[J].計算機工程與應用,2023,59(7):242-249.
【通聯編輯:代影】