宋雨璇 趙昱 張晶瑩 郭美瑤 黃少年 陳榮元
關鍵詞:YOLOv5;目標檢測;坐姿監(jiān)測
中圖分類號:TP39 文獻標識碼:A
文章編號:1009-3044(2023)08-0022-04
“坐姿”作為人們生產(chǎn)生活最常用的姿態(tài),與人們身體健康密切相關。坐姿不正確是導致青少年近視率持續(xù)上升的重要原因之一,根據(jù)國家學生體質與健康調(diào)研結果表明,我國各學段學生近視率持續(xù)上升,7~12歲小學生、13~15歲初中生、16~18歲高中生視力不良率分別為45.71%、74.36%、83.28%[1],同時長期不良的坐姿可能會導致成年人脊柱彎曲,經(jīng)受腰肌勞損,頸椎酸痛麻木等疾病折磨。因此,對人體坐姿進行研究及制定合理解決方案,對人們的生產(chǎn)生活具有重要意義。
1 研究現(xiàn)狀
目前在坐姿監(jiān)測方面,隨著人工智能紅外技術發(fā)展愈加成熟,智能檢測已逐步取代了物理監(jiān)測?,F(xiàn)存的坐姿監(jiān)測產(chǎn)品主要分為兩大類:物理機械監(jiān)測和智能監(jiān)測[1-3]。
1.1 第一代的物理機械監(jiān)測
第一代物理機械監(jiān)測屬于依靠機械產(chǎn)品對坐姿進行距離檢測。如:尼德視力保護架等,該類產(chǎn)品主要通過改變支撐桿的尺寸,調(diào)節(jié)桌面到下巴和桌子邊緣到胸口的距離,以使得人體保持正確的頭桌距離,防止駝背。但此類機械式產(chǎn)品含有調(diào)節(jié)煩瑣、體積過大、不易攜帶以及安裝困難等通病。
其他的機械監(jiān)測產(chǎn)品主要借力于各類傳感器以托靠式支撐為主[1],如孫明揚等人發(fā)明的基于壓力傳感器的坐姿矯正器,由矯正主支架、左矯正小支架、右矯正小支架和傳感器構成,包含8個傳感器點。根據(jù)兩眼與書本保持一尺的距離,胸部與書桌保持一拳的距離,握筆的手指離筆頭一寸的距離對人體坐姿進行檢測。
這種檢測方式限制性比較強,不適用所有人群,且調(diào)整方式困難,不利于安裝和攜帶。
1.2 第二代現(xiàn)代智能監(jiān)測
第二代矯正以穿戴式智能檢測產(chǎn)品為主。以比較成熟的背背佳品牌為例,該品牌在2017年推出的背背佳新U+智能矯正帶便具有電子矯姿的功能。當使用者穿戴后如出現(xiàn)坐姿不規(guī)范,它就會通過發(fā)出震動進行提醒,同時,使用者還可以通過手機app來觀察脊柱彎曲的狀況。但是,該產(chǎn)品的角度檢測傳感器都集中在一塊PCB板上,日常使用過于煩瑣,并且面向群體過于單一,只針對青少年。
綜上,第二代產(chǎn)品相較于第一代物理機械產(chǎn)品舒適度有所提高,但依舊存在不適感,且成本較高。
以上兩代坐姿監(jiān)測產(chǎn)品都存在致命缺點:舒適度低、束縛感強,使用不便,均存在一定的局限性。
2 系統(tǒng)設計
本系統(tǒng)由軟硬件結合實現(xiàn),主要包括3個模塊:圖像采集模塊、異常檢測模塊、提醒輸出模塊。如圖1所示:
系統(tǒng)通過攝像頭對人體坐姿實時監(jiān)測。當人體在攝像頭監(jiān)測范圍內(nèi),錯誤姿勢保持超過3s時則發(fā)出語音警報,如寫字時頭部過低,身體扭曲,彎腰駝背等。系統(tǒng)左上角實時顯示識別分類,統(tǒng)計報警次數(shù)。
2.1 圖像采集模塊
數(shù)據(jù)獲取是圖像識別的基礎。本系統(tǒng)的圖像采集方式很簡單,只需要一個普通的攝像頭就可以獲取坐姿圖像信息,實時監(jiān)測坐姿變化。如電腦攝像頭、手機攝像頭和外接攝像頭。
2.2 異常檢測模塊
異常檢測模塊的實現(xiàn):首先制作樣本多樣化的數(shù)據(jù)集,然后對數(shù)據(jù)集進行預處理和訓練,訓練采用YOLOv5算法模型,最后用測試集測試模型后對訓練結果進行分析。
2.2.1 數(shù)據(jù)集制作
本設計以常見的正常及不良坐姿為例,通過按幀截取在不同環(huán)境下拍攝的13名實驗人員的坐姿視頻,獲得正面拍攝、側面拍攝和背面拍攝三個視角下的:坐姿正常、高低肩、距離桌面過近、含胸駝背以及蹺二郎腿五個類別的數(shù)據(jù),共計6839張數(shù)據(jù)。將獲得的數(shù)據(jù)集按8∶1∶1的比例分為train、test和val三個數(shù)據(jù)集,其中train數(shù)據(jù)集用于訓練模型,test數(shù)據(jù)集用于測試模型結果,val數(shù)據(jù)集用于驗證模型。部分數(shù)據(jù)集如圖2所示。
標注工具采用Makesense對圖像數(shù)據(jù)集進行標注,包含5 種標簽:normal(坐姿正常)、abnor?mal_twisted( 高低肩)、abnor?mal_too_close(距離桌面過近)、ab?normal_hunchback(含胸駝背)和leg(蹺二郎腿)。
2.2.2 YOLOv5介紹
YOLO算法基于神經(jīng)網(wǎng)絡直接預測目標的邊界和類別概率,實現(xiàn)端到端的目標監(jiān)測。主要由四個部分組成,分別是輸入端(Input) 、主干網(wǎng)絡(Backbone) 、網(wǎng)絡的頸部(Neck) 和預測輸出端(Prediction) ,YOLO的結構如圖3所示。YOLOv5算法相較于先前的版本,在四個部分分別進行了不同程度的改進,展現(xiàn)出了更精確、更及時、更適用于小目標檢測的特點[4]。
1) Input端的改進體現(xiàn)在數(shù)據(jù)增強和自適應錨框計算。Mosaic數(shù)據(jù)增強將多張圖像中的隨機4張圖像進行隨機的處理,比如裁剪、縮放、旋轉等,合成一張新的圖像傳送給神經(jīng)網(wǎng)絡,這樣的處理可以豐富數(shù)據(jù)集,并減少GPU的處理量;自適應錨框計算通過聚類的方式自適應地計算出當前數(shù)據(jù)集的最佳錨框尺寸,并將其直接嵌入代碼中,增強了算法的健壯性和穩(wěn)健性。
2) 在Backbone部分將切片的思想融入采樣過程,引進了新的結構,主要包括Focus 結構、CSP 結構和SPP結構,F(xiàn)ocus結構通過對圖像進行切片操作并遍歷圖像提取像素值,獲得4張互補的圖像,實現(xiàn)了切片下采樣的功能;CSP結構可以減少特征傳輸過程中的信息損失和計算量;SPP結構通過最大池化可以豐富網(wǎng)絡可以進行處理的圖片類型,使得網(wǎng)絡可以輸入任意比例的圖像。
3) Neck部分在FPN層和最后的輸出端之間添加一個自底向上的特征金字塔結構PAN,可以同時利用低層特征的高分辨率信息和高層特征的高語義信息兼顧不同目標的識別,網(wǎng)絡可以學習和提取到更大范圍的特征信息。
4) Prediction部分主要對損失函數(shù)進行了優(yōu)化并采用了非極大值抑制的思想,采用了GIoU損失函數(shù)計算bounding box的損失,增加了相交尺度的衡量;非極大值抑制可以降低圖像中某些區(qū)域的目標排列密度較大時,冗余邊界框對網(wǎng)絡參數(shù)更新產(chǎn)生的不利影響[2]。
YOLO算法從v1到v5的不停迭代,使得其準確性不斷提高,現(xiàn)已在圖像識別領域得到廣泛使用。
2.2.3 測試結果
模型訓練的環(huán)境為Windows 10系統(tǒng)、顯卡型號為NVIDIA RTX 2060、Python 版本為3.7、PyTorch框架版本為1.7.0、CUDA版本為11.7。數(shù)據(jù)集訓練的過程中設置epochs為300。使用訓練好的YOLO模型對數(shù)據(jù)集進行測試,結果如圖4所示:
3 系統(tǒng)實現(xiàn)
該系統(tǒng)適用范圍廣,可嵌入各類學習助手,如臺燈、鬧鐘等學習用品,幫助學齡兒童培養(yǎng)良好的坐姿習慣。綜上所述,本系統(tǒng)的使用場景非常廣泛,據(jù)不同的產(chǎn)品要求可開發(fā)移動端、PC端[4-5]。針對不同情況,可以選擇不同設備使用。以下以手機端和PC端為例。
3.1 PC 端及手機識別
為便于日常使用,實現(xiàn)“隨時”監(jiān)測的目的,我們設計了在PC端及手機端的系統(tǒng)。
3.1.1 PC 端系統(tǒng)
該系統(tǒng)包括圖片檢測和視頻檢測兩類。其中視頻檢測支持實時監(jiān)測和上傳視頻文件檢測,如圖5所示。當使用者坐姿處于所錄入不良姿態(tài)時,系統(tǒng)發(fā)出語音警報提醒,右側警報畫面內(nèi)警報統(tǒng)計次數(shù)實時更新。
3.1.2 手機端系統(tǒng)
將實驗模型以ONNX作為媒介,通過NCNN框架在Android手機端部署開發(fā)智能App,使用者可實時監(jiān)測自己的坐姿行為[6]。
App分為學生模式和家長模式兩個模式。家長模式便于家長了解并監(jiān)督自己孩子的坐姿情況,進行遠程檢測。學生模式則可以查看自己的坐姿情況,進行學習設置,如坐姿錯誤時的語音提示設置、錯誤坐姿持續(xù)時長的提醒設置等。
3.2 外接設備
3.2.1 硬件設計
若以外接設備進行坐姿監(jiān)測,可采用以樹莓派作為核心芯片,樹莓派具有高集成的特點,廣泛用于工業(yè)與家電領域等。該系統(tǒng)以樹莓派為核心,基于OpenCV 的DNN 模塊,實現(xiàn)YOLOv5s 目標坐姿識別[7-8]。該系統(tǒng)采用ESP32WiFi模塊,實現(xiàn)無線通信及實時檢測采集到的數(shù)據(jù);同時采用SW-180實現(xiàn)警報震動功能。
系統(tǒng)所用攝像頭根據(jù)端口設置連接在樹莓派上,通過攝像頭采集的數(shù)據(jù)送到數(shù)據(jù)庫,利用ESP32芯片構成局域網(wǎng),監(jiān)控樹莓派的檢測數(shù)據(jù)庫。若坐姿錯誤,震動模塊將進行震動提醒,或通過藍牙模塊將信息傳輸?shù)绞謾C端。整體硬件設計如圖6所示。
3.2.2 文件數(shù)據(jù)轉化
YOLOv5是基于PyTorch框架實現(xiàn)的。若要將訓練模型加載到OpenCV 的DNN 模塊中,需先把Py?Torch的訓練模型.pth文件轉化成.onnx文件,再載入到OpenCV的DNN模塊里。
數(shù)據(jù)轉換過程如圖7所示:
文件并進行前向計算。用python編寫目標檢測的功能。再利用OpenCV的DNN模塊進行深度學習,訓練模型。
YOLOv5 目標檢測識別的程序,包含以下兩個部分:
(1) 將PyTorch的訓練模型.pth文件轉換為.onnx文件。.pt文件中既有模型參數(shù),也有網(wǎng)絡結構和參數(shù),先將原始訓練模型中.pt文件里的參數(shù)保存到新的.pth文件中。再編寫YOLOv5.py文件,將yolov5s的網(wǎng)絡結構定義在.py中。由此生成一個OpenCV可以讀取且向前推理的文件。
(2) OpenCV 的DNN 模塊讀取.nnx;完善系統(tǒng)功能;美化系統(tǒng)界面等。
4 結束語
本文以人們長期坐姿不良導致脊柱彎曲影響生命健康和引導人們養(yǎng)成良好坐姿習慣為切口,設計了基于YOLOv5模型的坐姿監(jiān)測系統(tǒng)。首先,該系統(tǒng)通過前端輸入設備對人體坐姿進行圖像采集,用所訓練的權重模型對圖像進行分類識別,在正、側、后多個角度均能對數(shù)據(jù)集中對不同坐姿的檢測均能達到較高準確度且延遲率較低。該方式基本解決了前兩代坐姿矯正產(chǎn)品(傳統(tǒng)物理機械式矯正和佩戴式智能檢測)應用范圍較小、舒適度較差等的問題。該研究具有實用價值,可以為人體坐姿矯正提供有效方法。未來,筆者也將進一步擴充數(shù)據(jù)庫,使坐姿實時監(jiān)測更加精確,同時輕量化模型使其實用性提高。
致謝:在此感謝導師陳榮元教授對我們的指導和幫助以及在設計中被我引用或參考的論著的作者。在此表達衷心的感謝!