王嵩,張雨飛,霍梅梅
(1.浙大城市學(xué)院,計(jì)算機(jī)與計(jì)算科學(xué)學(xué)院,杭州310000;2.浙大城市學(xué)院,浙大城市學(xué)院懷卡托大學(xué)聯(lián)合學(xué)院,杭州310000)
本系統(tǒng)采用前后端分離模式,手機(jī)端有數(shù)據(jù)采集模塊、數(shù)據(jù)管理模塊;服務(wù)端有任務(wù)調(diào)度模塊、任務(wù)處理模塊、數(shù)據(jù)管理模塊。服務(wù)器上算法使用Python,用Flask框架搭建服務(wù)器,后臺(tái)接口使用Java,用Spring Boot+MyBatis-Plus搭建服務(wù)器,數(shù)據(jù)庫(kù)采用5.7版本的MySQL云數(shù)據(jù)庫(kù)??蛻舳藬?shù)據(jù)管理模塊流程圖,將數(shù)據(jù)打包成JSON格式,采用HTTP 1.1協(xié)議上次服務(wù)器,服務(wù)器進(jìn)行處理、調(diào)用算法服務(wù),將結(jié)果返回客戶端。
目前監(jiān)測(cè)運(yùn)動(dòng)數(shù)據(jù)的主要方式為兩種,一種是通過(guò)視頻、圖像等視覺方式獲取,一種是通過(guò)加速度傳感器獲取[1]。基于視覺的方式主要是在運(yùn)動(dòng)狀態(tài)識(shí)別上,對(duì)于運(yùn)動(dòng)數(shù)據(jù)的獲取比較困難,如速度、計(jì)數(shù)等,另外也存在布置難度大、對(duì)環(huán)境光要求高、建設(shè)成本高等問題。
近些年來(lái),智能手機(jī)和智能手表越來(lái)越普及,基于其內(nèi)置的傳感器來(lái)進(jìn)行人體行為識(shí)別的研究越來(lái)越多。加速度傳感器、慣性導(dǎo)航系統(tǒng)[2]被越來(lái)越多運(yùn)用到運(yùn)動(dòng)健康等方面。文獻(xiàn)[3]利用加速度傳感器實(shí)現(xiàn)游泳監(jiān)測(cè)系統(tǒng)。文獻(xiàn)[4]把LPMS-B應(yīng)用于機(jī)器人末端姿態(tài)測(cè)試。文獻(xiàn)[5]采用陀螺儀、加速度計(jì)和磁強(qiáng)計(jì)組合的方法確定姿態(tài)。文獻(xiàn)[6]設(shè)計(jì)了無(wú)線人體傳感器網(wǎng)絡(luò)的數(shù)據(jù)采集系統(tǒng),
在運(yùn)動(dòng)識(shí)別領(lǐng)域,基于IMU的可穿戴傳感系統(tǒng)[7],用于游泳泳姿識(shí)別和運(yùn)動(dòng)分析,重點(diǎn)研究下肢運(yùn)動(dòng)。文獻(xiàn)[8]利用一個(gè)單一的防水無(wú)線運(yùn)動(dòng)傳感器連接在游泳運(yùn)動(dòng)員的身體中心(背部)。文獻(xiàn)[9]提出了一種基于HMM的動(dòng)作識(shí)別方法。
在運(yùn)動(dòng)狀態(tài)識(shí)別上,已經(jīng)有研究者提出了多種分類的模型,文獻(xiàn)[10]介紹了常見的用于運(yùn)動(dòng)數(shù)據(jù)采集的傳感器和相應(yīng)方法。文獻(xiàn)[11]準(zhǔn)確識(shí)別跑步姿勢(shì),幫助跑步者減少或避免因跑步姿勢(shì)不當(dāng)而帶來(lái)的運(yùn)動(dòng)損傷。文獻(xiàn)[12]提出一種優(yōu)化的姿勢(shì)識(shí)別算法。文獻(xiàn)[13]提出一種深度圖像骨骼跟蹤的游泳運(yùn)動(dòng)員姿勢(shì)識(shí)別校正方法。
目前國(guó)內(nèi)主流的關(guān)于運(yùn)動(dòng)識(shí)別的研究主要集中在走路、跑步、摔倒檢測(cè)[14]、康復(fù)醫(yī)療[15]等日常人體行為上。基于加速度傳感器的游泳運(yùn)動(dòng)監(jiān)測(cè)的技術(shù)研究及應(yīng)用[16]主要集中在國(guó)外,國(guó)內(nèi)現(xiàn)有的相關(guān)研究成果較少。而且大部分研究以使用移動(dòng)設(shè)備自帶的傳感器獲取數(shù)據(jù),通過(guò)采集多個(gè)部位或者腰部的數(shù)據(jù)來(lái)實(shí)現(xiàn),在實(shí)際運(yùn)用中不符合用戶日常習(xí)慣,所以本課題采用LPMS-B2九軸傳感器(傳感器),它大小適中,適合佩戴在手部,與常用的手環(huán)類似,符合用戶日常佩戴習(xí)慣,易于推廣。
LPMS-B2是日本LP-RESEARCH公司與廣州阿路比電子科技有限公司共同研發(fā)生產(chǎn)的一款高性能微型無(wú)線傳輸型姿態(tài)傳感器,利用藍(lán)牙技術(shù),可以輕松地與個(gè)人電腦、智能手機(jī)等設(shè)備通信,適用于機(jī)器人和人類動(dòng)作的測(cè)量。
1.2.1 RNA-seq數(shù)據(jù)獲取 人結(jié)腸癌細(xì)胞株SW1116瞬轉(zhuǎn)miR-1254模擬體后24 h,通過(guò)TRIzol?提取細(xì)胞全RNA,干冰保存送檢北京貝瑞和康公司測(cè)序。
目前采集數(shù)據(jù)的設(shè)備主要以姿態(tài)傳感器為主,本文選用的LPMS-B2九軸傳感器功能強(qiáng)大,帶有三軸加速度計(jì)、三軸陀螺儀、三軸磁力計(jì)以及氣壓與濕度傳感器,體積小,方便用戶佩戴,通過(guò)藍(lán)牙通訊方便使用App連接。
游泳是一項(xiàng)涉及到許多部分的運(yùn)動(dòng),早期研究會(huì)通過(guò)將多個(gè)傳感器固定在人體多個(gè)部位,獲取各個(gè)部分的加速度速度,來(lái)獲得完整運(yùn)動(dòng)信息。這方法確實(shí)會(huì)提高識(shí)別率,可過(guò)多的設(shè)備對(duì)于佩戴者來(lái)說(shuō)非常不適,且會(huì)影響到運(yùn)動(dòng),實(shí)驗(yàn)成本也很高,因此本文通過(guò)一個(gè)傳感器來(lái)獲取加速度數(shù)據(jù)。
單個(gè)傳感器采集的部位不同對(duì)結(jié)果也會(huì)產(chǎn)生很大影響。對(duì)于游泳運(yùn)動(dòng),不同的泳姿,手和腳的運(yùn)動(dòng)特性較為明顯,從日常使用角度看,手上佩戴傳感器更符合人們的習(xí)慣,所以本文將傳感器佩戴在手腕部來(lái)獲取數(shù)據(jù)。
由于實(shí)際中,獲取到的數(shù)據(jù)不是理想情況,會(huì)產(chǎn)生許多噪聲信號(hào),對(duì)此我們采用濾波對(duì)數(shù)據(jù)進(jìn)行預(yù)處理工作,平滑加速度信號(hào)曲線,自定義一個(gè)濾波器類,設(shè)置歸一化截止頻率,返回一個(gè)低通濾波,利用該濾波進(jìn)行平滑降噪,核心代碼如下:
預(yù)處理過(guò)后的數(shù)據(jù)比之前更加平滑,如圖1所示,可以提高計(jì)算的準(zhǔn)確率。
圖1某一段加速度數(shù)據(jù)比較
對(duì)于泳姿識(shí)別,以及其他數(shù)據(jù)計(jì)算主要通過(guò)滑動(dòng)窗口來(lái)計(jì)算數(shù)據(jù)。
定義一個(gè)窗口幀數(shù)大小,通過(guò)滑動(dòng)窗口,當(dāng)窗口內(nèi)數(shù)據(jù)的最大值與最小值之差超過(guò)閾值,找到最大值對(duì)于時(shí)間點(diǎn),并且超過(guò)另一閾值,將時(shí)間點(diǎn)保存,窗口從下一個(gè)小于閾值的時(shí)間點(diǎn)開始;不超過(guò)閾值,則將窗口隨時(shí)間點(diǎn)移動(dòng)固定值。保存下來(lái)的時(shí)間點(diǎn)即游泳劃臂一次的時(shí)間點(diǎn),基于這些時(shí)間點(diǎn),計(jì)算劃臂次數(shù)、時(shí)間等數(shù)據(jù),泳姿則通過(guò)閾值大小、最高與最小的差值、最大值的是否超過(guò)該泳姿的閾值來(lái)判斷。將算法通過(guò)Flask[17],這個(gè)微型的Python開發(fā)的Web框架,將服務(wù)部署在服務(wù)器上。
系統(tǒng)除算法以外的后臺(tái)服務(wù)使用Java的Spring Boot+MyBatis-Plus+MySQL部署在服務(wù)器。后臺(tái)包含用戶登錄、用戶注冊(cè)、文件上傳、歷史記錄查詢、數(shù)據(jù)分析等接口,前后端使用HTTP協(xié)議通訊,數(shù)據(jù)傳輸使用JSON格式。在上傳文件后會(huì)調(diào)用Python后臺(tái)的計(jì)算接口,傳入文件在服務(wù)器上的路徑,通過(guò)Python計(jì)算出結(jié)果保存數(shù)據(jù)庫(kù)。
由于需要連接硬件,且應(yīng)用場(chǎng)景一般不方便攜帶PC設(shè)備,所以本課題的展示采用Android原生開發(fā),通過(guò)android.bluetooth下的各類包掃描、連接藍(lán)牙,使用LPMS-B2的工具包,對(duì)傳感器進(jìn)行操作,獲取傳感器數(shù)據(jù),再通過(guò)HTTP協(xié)議將文件上傳服務(wù)器。
App頁(yè)面布局使用LinearLayout、RelativeLayout等布局格式。首頁(yè)使用FixedViewPager、Common?TabLayout實(shí)現(xiàn)底部tab導(dǎo)航欄。通過(guò)Fragment,設(shè)置首頁(yè)、歷史、我的3個(gè)頁(yè)面。首頁(yè)中通過(guò)Horizon?talScrollView實(shí)現(xiàn)橫行滾動(dòng)來(lái)選擇不來(lái)同的模式,游泳知識(shí)則是通過(guò)Lottie來(lái)將JSON文件生成一個(gè)動(dòng)畫;歷史頁(yè)面通過(guò)HTTP請(qǐng)求獲取歷史記錄列表,展示模式與對(duì)應(yīng)圖標(biāo)、傳感器記錄時(shí)長(zhǎng);我的頁(yè)面讀取登錄時(shí)緩存在activity上的信息渲染頁(yè)面,如圖2所示。
首頁(yè)選擇模式后跳轉(zhuǎn)到藍(lán)牙掃描頁(yè)面,如圖3所示,可以選擇傳統(tǒng)藍(lán)牙掃描和低電耗藍(lán)牙掃描,選中LPMS-B2的藍(lán)牙點(diǎn)擊連接,獲取藍(lán)牙信息并傳參跳轉(zhuǎn)到操作頁(yè)面,通過(guò)LPMS-B2的工具包中的service進(jìn)行配對(duì)和連接。
圖2
圖3 藍(lán)牙掃描頁(yè)面
在操作頁(yè)面可以設(shè)置傳感器的參數(shù)、實(shí)時(shí)顯示傳感器的數(shù)據(jù)、動(dòng)畫展示傳感器正在進(jìn)行的動(dòng)作、離線緩存等函數(shù)操作。通過(guò)函數(shù)控制,將傳感器中的數(shù)據(jù)讀出并以csv格式存儲(chǔ)在本地文件夾下,通過(guò)接口將文件上傳到服務(wù)器,并計(jì)算該文件的數(shù)據(jù),將結(jié)果保存到數(shù)據(jù)庫(kù)。
歷史記錄選中某一條目時(shí)跳轉(zhuǎn)到記錄詳情頁(yè)面,如圖4所示,展示該次游泳的泳姿、距離、時(shí)間、劃臂、頻率、配速、卡路里等一系列數(shù)據(jù)。
圖4 歷史記錄詳情頁(yè)面
用戶可以通過(guò)查看數(shù)據(jù)的方法對(duì)比自己的游泳數(shù)據(jù),能夠清晰直接地了解到自己的游泳是在進(jìn)步還是落后,可以讓用戶能進(jìn)行更加針對(duì)性的訓(xùn)練來(lái)提高某項(xiàng)數(shù)據(jù)。
Apple新技術(shù)SwiftUI,提供了用于聲明應(yīng)用程序用戶界面的視圖、控件和布局結(jié)構(gòu)。該框架提供事件處理程序,用于向應(yīng)用程序傳遞敲擊、手勢(shì)和其他類型的輸入,并提供工具來(lái)管理從應(yīng)用程序模型到用戶將看到并與之交互的視圖和控件的數(shù)據(jù)流。使用App協(xié)議定義應(yīng)用結(jié)構(gòu),并用包含構(gòu)成應(yīng)用程序用戶界面的視圖的場(chǎng)景填充該結(jié)構(gòu)。創(chuàng)建符合View協(xié)議的自定義視圖,并將它們與SwiftUI視圖組合在一起,以使用堆棧、列表等顯示文本、圖像和自定義形狀。將強(qiáng)大的修改器應(yīng)用于內(nèi)置視圖和自己的視圖,以自定義其渲染和交互性。在多個(gè)平臺(tái)上的應(yīng)用程序之間共享代碼,并根據(jù)其上下文和表示方式調(diào)整視圖和控件。
CoreBluetooth,核心藍(lán)牙框架提供了應(yīng)用程序與配備藍(lán)牙的低能耗(LE)和基本速率/增強(qiáng)數(shù)據(jù)速率(BR/EDR)無(wú)線技術(shù)進(jìn)行通信所需的類。
進(jìn)入主頁(yè),如圖5所示,點(diǎn)擊右上方用戶按鈕進(jìn)行登錄注冊(cè),登錄后右上方按鈕會(huì)轉(zhuǎn)變?yōu)橛脩纛^像,點(diǎn)擊頭像可以3D的方式顯示出游泳能力,修改信息按鈕以及退出登錄按鈕,點(diǎn)擊修改信息可對(duì)用戶的個(gè)人信息進(jìn)行修改,點(diǎn)擊退出登錄用戶即可退出登錄。用戶可通過(guò)橫向HStack拖移選擇3種不同的游泳模式,進(jìn)入后通過(guò)App連接藍(lán)牙設(shè)備LPMS-B2傳感器。用戶可將數(shù)據(jù)以藍(lán)牙的形式傳輸?shù)紸pp,再由App發(fā)送請(qǐng)求到服務(wù)器處理,并獲取反饋。此外,用戶還可在主頁(yè)學(xué)習(xí)一些游泳知識(shí),該知識(shí)會(huì)每天定時(shí)更新,點(diǎn)擊能進(jìn)行交互。在歷史記錄頁(yè)面,用戶能查看自己的游泳歷史記錄,點(diǎn)擊打開記錄,查看詳細(xì)數(shù)據(jù),以及改進(jìn)建議。
圖5 iOS首頁(yè)頁(yè)面
本文設(shè)計(jì)了基于單個(gè)LPMS-B2九軸傳感器的游泳數(shù)據(jù)記錄分析系統(tǒng),用戶佩戴LPMS-B2傳感器在手腕,采集游泳時(shí)的加速度等數(shù)據(jù),上傳到移動(dòng)端App,再上傳服務(wù)器,計(jì)算出泳姿、劃臂、時(shí)間、距離等數(shù)據(jù),展示在移動(dòng)端上。最后實(shí)驗(yàn)結(jié)果證明,系統(tǒng)識(shí)別準(zhǔn)確率能夠滿足實(shí)際需求,該系統(tǒng)具有更低的開發(fā)周期與開發(fā)成本,具有一定應(yīng)用價(jià)值。
文中不足之處在于對(duì)于泳姿識(shí)別率還可以進(jìn)一步提高,還可以加大實(shí)驗(yàn)樣本、優(yōu)化算法和前端頁(yè)面。