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