蔡木生
(廣州軟件學(xué)院計(jì)算機(jī)系,廣州 510990)
隨著我國(guó)人口老齡化進(jìn)程的加快[1],老人獨(dú)居、空巢等現(xiàn)象越來越普遍,他們的健康監(jiān)護(hù)、情感交流等面臨著不少問題,不在其身邊的子女、親朋或健康監(jiān)護(hù)機(jī)構(gòu)等迫切需要采用信息化手段對(duì)老人的起居生活進(jìn)行監(jiān)測(cè),而又不能給對(duì)方造成心理壓力、侵犯?jìng)€(gè)人隱私。本文提出的居家老人運(yùn)動(dòng)行為監(jiān)測(cè)系統(tǒng)就是這方面的嘗試,它通過智能手機(jī)傳感器獲取老人運(yùn)動(dòng)數(shù)據(jù),再應(yīng)用機(jī)器學(xué)習(xí)算法識(shí)別出其行為狀態(tài)并上傳到云端服務(wù)器中,親友等可通過網(wǎng)絡(luò)實(shí)時(shí)查看老人行為狀態(tài),查詢某一時(shí)段的運(yùn)動(dòng)統(tǒng)計(jì)數(shù)據(jù)等。本文將介紹該系統(tǒng)的設(shè)計(jì)原理、總體框架、使用技術(shù)、主要模塊的功能實(shí)現(xiàn)等內(nèi)容。
筆者根據(jù)前述要求,對(duì)于“如何利用智能手機(jī)傳感器采集人體運(yùn)動(dòng)行為數(shù)據(jù)?”“怎樣獲取數(shù)據(jù)并進(jìn)行分析、處理?”“如何評(píng)價(jià)分類結(jié)果?”等問題進(jìn)行研究,并得到相應(yīng)結(jié)果,詳情請(qǐng)參見文獻(xiàn)[2]。現(xiàn)概述如下。
居家老人的運(yùn)動(dòng)行為主要包括步行、跑步、上樓、下樓、乘電梯上樓、乘電梯下樓和靜止等7種基本動(dòng)作。由于手機(jī)放置在不同位置會(huì)對(duì)傳感器數(shù)據(jù)產(chǎn)生較大影響,再細(xì)分為:在上衣口袋(或腰包)、褲袋、手或臂包中三類。前4種運(yùn)動(dòng)行為與3 種手機(jī)放置位置進(jìn)行組合得到12種類型,加上后3 類運(yùn)動(dòng)行為(可認(rèn)為手機(jī)位置對(duì)它們無影響),共有15類。
上述運(yùn)動(dòng)行為的區(qū)分,主要通過運(yùn)動(dòng)強(qiáng)度、垂直方向運(yùn)動(dòng)兩方面指標(biāo)差異來實(shí)現(xiàn),即通過智能手機(jī)三軸加速度傳感器來獲得x、y、z三個(gè)方向的線性加速度以及合成加速度,其中:合成加速度表示運(yùn)動(dòng)強(qiáng)度,z方向加速度表示垂直方向上運(yùn)動(dòng)變化。文獻(xiàn)[2]以Android 手機(jī)為例,設(shè)計(jì)了APP 程序來收集15 類不同運(yùn)動(dòng)行為對(duì)應(yīng)線性加速度傳感器、加速度傳感器及旋轉(zhuǎn)向量傳感器的數(shù)據(jù),再進(jìn)行適當(dāng)運(yùn)算后得到初始數(shù)據(jù)集。之所以選擇這三類傳感器,主要基于數(shù)據(jù)的坐標(biāo)系因素影響和分類準(zhǔn)確度高低考慮的。傳感器的采樣頻率設(shè)為100 Hz,即采樣間隔為0.01 秒,一次采樣的數(shù)據(jù)項(xiàng)有12 項(xiàng),即采樣時(shí)間(1 項(xiàng))、線性加速度acc 及合成加速度(4 項(xiàng))、acc1 加速度(3 項(xiàng))、acc2 加速度(3 項(xiàng))和分類標(biāo)簽(1項(xiàng))。
從手機(jī)傳感器獲取的是時(shí)序數(shù)據(jù),前后記錄有關(guān)聯(lián),數(shù)據(jù)量巨大且易受噪聲影響,為此,通常采用滑動(dòng)窗口技術(shù)來處理,即將數(shù)據(jù)集的記錄按一定規(guī)則排序,再依次劃分為一個(gè)個(gè)窗口,再以窗口為單位計(jì)算時(shí)域、頻域特征指標(biāo),時(shí)域特征有平均數(shù)、標(biāo)準(zhǔn)差、最大值、最小值等;頻域特征包括經(jīng)傅里葉變換后得到的加速度幅度、頻率、均值等。經(jīng)過上述方式加工處理后,數(shù)據(jù)大為減少,集中趨勢(shì)更加明顯,可提高分類準(zhǔn)確度。文獻(xiàn)[2]以acc、acc1、acc2三類數(shù)據(jù)(10 項(xiàng))為基礎(chǔ),分別計(jì)算它們的均值、標(biāo)準(zhǔn)差指標(biāo),對(duì)acc、acc_z 兩個(gè)重要指標(biāo),還分別計(jì)算它們的最大值、最小值,再選取通過傅里葉變換得到直流分量、全部頻譜之和、主要頻譜指標(biāo)(最多為16 項(xiàng))等頻域特征,特征總數(shù)為60 個(gè)。當(dāng)然,窗口大小、步長(zhǎng)的確定有要求,通常窗口大小不少于采樣頻率2倍,為方便窗口中記錄進(jìn)行傅里葉變換,窗口記錄數(shù)通常設(shè)置為2(kk為自然數(shù))條,步長(zhǎng)值通常為窗口大小的50%。
運(yùn)動(dòng)行為識(shí)別是典型的分類問題,可采用機(jī)器學(xué)習(xí)、深度學(xué)習(xí)算法來實(shí)現(xiàn),評(píng)價(jià)算法優(yōu)劣的主要指標(biāo)有準(zhǔn)確率、計(jì)算用時(shí)等。經(jīng)測(cè)試,傳統(tǒng)機(jī)器學(xué)習(xí)中集成學(xué)習(xí)算法(如RandomForest[3]、XGBoost[4]、LightGBM[5]等)有不俗表現(xiàn),準(zhǔn)確度可達(dá)到95%以上,且用時(shí)少;深度學(xué)習(xí)算法(以Tensorfolow-GPU2.x為工具,采用Kerass構(gòu)建全連接神經(jīng)網(wǎng)絡(luò))表現(xiàn)也不錯(cuò),準(zhǔn)確率可達(dá)到94%左右,不足之處訓(xùn)練時(shí)間較長(zhǎng),但在構(gòu)建特征向量方面有獨(dú)特表現(xiàn),可節(jié)省這方面的開銷。
該系統(tǒng)的工作流程包含數(shù)據(jù)的采集、傳輸、分析與處理,模型的建立、訓(xùn)練、評(píng)價(jià)、應(yīng)用以及分類結(jié)果的保存與發(fā)布等系列流程,可分為三個(gè)部分,即:手機(jī)傳感器數(shù)據(jù)采集與發(fā)送端、云端服務(wù)器、信息查看客戶端,如圖1所示。
圖1 運(yùn)動(dòng)監(jiān)測(cè)系統(tǒng)的組成
三者的執(zhí)行順序、功能不同,現(xiàn)說明如下:
主要功能是:通過老人隨身攜帶的智能手機(jī),采集加速度傳感器等數(shù)據(jù),并發(fā)送到云服務(wù)器,但訓(xùn)練數(shù)據(jù)采集、分類數(shù)據(jù)采集兩者有一些差異:
(1)訓(xùn)練數(shù)據(jù)采集包括智能手機(jī)的線性加速度傳感器、加速度傳感器的x、y、z三個(gè)方向數(shù)據(jù)及旋轉(zhuǎn)向量傳感器的矩陣數(shù)據(jù),再進(jìn)行適當(dāng)運(yùn)算,并加上分類標(biāo)簽,形成初始數(shù)據(jù)集,以文件方式存儲(chǔ)在手機(jī)存儲(chǔ)卡中,之后傳輸?shù)皆贫朔?wù)器,這是老人運(yùn)動(dòng)行為分類模型訓(xùn)練的基礎(chǔ)性數(shù)據(jù);
(2)老人運(yùn)動(dòng)數(shù)據(jù)的采集,通過模型和數(shù)據(jù),可對(duì)運(yùn)動(dòng)行為進(jìn)行分類。采集數(shù)據(jù)的內(nèi)容與(1)類似,不同點(diǎn)是沒有運(yùn)動(dòng)分類標(biāo)簽。為展示系統(tǒng)的強(qiáng)大功能及實(shí)用性,還可劃分為實(shí)時(shí)采集傳輸、采集后以文件方式存儲(chǔ)再批量傳輸兩種模式。
這是系統(tǒng)的核心部分,具備接收數(shù)據(jù)、處理數(shù)據(jù)、訓(xùn)練模型、分類識(shí)別、保存結(jié)果、發(fā)布信息等功能,具體如下:
(1)接收手機(jī)端發(fā)送過來的數(shù)據(jù),包含實(shí)時(shí)傳輸和以文件方式批量傳輸兩種模式;
(2)數(shù)據(jù)處理的基本方法,采用滑動(dòng)窗口技術(shù)來處理時(shí)序數(shù)據(jù),構(gòu)建對(duì)分類結(jié)果有重要支撐作用的時(shí)域指標(biāo)、頻域指標(biāo),即以窗口為單位,對(duì)其中的數(shù)據(jù)分別計(jì)算acc_x、acc_y、acc_z、acc、acc1_x、acc1_y、acc1_z、acc2_x、acc2_y、acc2_z項(xiàng)的均值、標(biāo)準(zhǔn)差指標(biāo),對(duì)acc、acc_z兩個(gè)重要指標(biāo),還要分別計(jì)算它們的最大值、最小值等時(shí)域指標(biāo),并選取各自通過傅里葉變換得到直流分量、全部頻譜之和、主要頻譜指標(biāo)(取前16項(xiàng))等頻域特征,特征總數(shù)達(dá)60個(gè);
(3)根據(jù)步驟(2)所述方法,對(duì)同一測(cè)試者同一運(yùn)動(dòng)行為的大量連續(xù)數(shù)據(jù)采用滑動(dòng)窗口技術(shù)進(jìn)行計(jì)算,得到包含時(shí)域指標(biāo)、頻域指標(biāo)的新樣本,加上分類標(biāo)簽,構(gòu)建3個(gè)集成學(xué)習(xí)分類模型(即Random Forest、XGBoost、LightGBM)并進(jìn)行訓(xùn)練,再將模型參數(shù)以文件方式保存在云服務(wù)器中;
(4)對(duì)老人的運(yùn)動(dòng)行為數(shù)據(jù)按步驟(2)方法進(jìn)行處理,利用步驟(3)訓(xùn)練好的模型劃分類別,將結(jié)果保存到數(shù)據(jù)庫(kù)中??紤]到可能受通信質(zhì)量影響,本系統(tǒng)具有實(shí)時(shí)分類識(shí)別、傳輸文件批量分類識(shí)別兩種模式;
(5)建立Web 服務(wù)器,實(shí)時(shí)發(fā)布老人運(yùn)動(dòng)狀態(tài)及某一時(shí)段內(nèi)運(yùn)動(dòng)行為的統(tǒng)計(jì)信息,方便親友查詢。
老人的親友、健康監(jiān)護(hù)機(jī)構(gòu)等登錄系統(tǒng)后可通過網(wǎng)頁瀏覽器查看老人的運(yùn)動(dòng)行為狀態(tài),包括:
(1)實(shí)時(shí)查看老人運(yùn)動(dòng)狀態(tài);
(2)查詢某一時(shí)段內(nèi)老人運(yùn)動(dòng)行為狀態(tài)、各類運(yùn)動(dòng)統(tǒng)計(jì)信息等。
系統(tǒng)首先要執(zhí)行的操作是采集、發(fā)送、接收傳感器數(shù)據(jù)及運(yùn)動(dòng)標(biāo)簽,再處理、建模并訓(xùn)練,之后依據(jù)數(shù)據(jù)利用訓(xùn)練好的模型對(duì)老人的運(yùn)動(dòng)行為進(jìn)行分類識(shí)別,分為實(shí)時(shí)識(shí)別、文件存儲(chǔ)批量傳輸識(shí)別兩種模式,之所以這樣劃分是基于手機(jī)通信質(zhì)量提出的,信號(hào)好,采用實(shí)時(shí)模式;反之則先將數(shù)據(jù)存儲(chǔ)在存儲(chǔ)卡,后續(xù)再批量傳輸、識(shí)別,兩種模式可根據(jù)實(shí)際需要在手機(jī)操作界面切換。兩種模式主要流程如圖2所示。
圖2 兩種工作模式的主要流程
服務(wù)器是系統(tǒng)的核心組成部分,其配置高低直接影響系統(tǒng)性能和響應(yīng)速度,當(dāng)然也要考慮成本問題。為滿足用戶隨時(shí)隨地上傳數(shù)據(jù)、實(shí)時(shí)查詢信息資料等要求,故選購(gòu)云端服務(wù)器,而非本地服務(wù)器。本系統(tǒng)選購(gòu)的是華為S6 彈性云服務(wù)器,主機(jī)規(guī)格為2核4 GB,帶寬為5 Mbit/s,硬盤為40 GB,包年使用費(fèi)用近700元。
服務(wù)器安裝的軟件有:操作系統(tǒng)為Windows Server 2018 標(biāo)準(zhǔn)版;在數(shù)據(jù)處理和可視化、人工智能等方面,Python 有獨(dú)特優(yōu)勢(shì),故安裝Anaconda 3.5、Python 3.8、scikit-learn 0.20 等開發(fā)工具,數(shù)據(jù)庫(kù)為MySQL 5.1,Web 服務(wù)器則選擇Tomcat9.0。
訓(xùn)練數(shù)據(jù)通過操作智能手機(jī)APP 來實(shí)現(xiàn),因要求較高,先以文件方式存儲(chǔ)在存儲(chǔ)卡,再發(fā)送到服務(wù)器進(jìn)行處理。現(xiàn)以Android 手機(jī)為例進(jìn)行說明:
3.2.1 數(shù)據(jù)采集
訓(xùn)練數(shù)據(jù)項(xiàng)有12 項(xiàng):時(shí)間(精確到ms)、三類加速度數(shù)據(jù)(10 項(xiàng))及分類標(biāo)簽,其中:線性加速度acc1、加速度acc1 的x、y、z三個(gè)方向數(shù)據(jù)可直接得到,合成加速度需要根據(jù)公式(1)計(jì)算得到:
而acc2 則由acc1 與旋轉(zhuǎn)矩陣R_mat相乘得到,計(jì)算公式如(2)~(4)所示:
其中:i表示不同時(shí)點(diǎn)。
分類標(biāo)簽則通過點(diǎn)擊APP 界面中的單選按鈕來對(duì)應(yīng),真實(shí)運(yùn)動(dòng)應(yīng)與標(biāo)識(shí)內(nèi)容相一致,如圖3所示。
圖3 訓(xùn)練數(shù)據(jù)采集操作界面
傳感器的采樣間隔為0.01 秒,每條記錄包含12 個(gè)數(shù)據(jù)項(xiàng),用逗號(hào)分隔開,存放在csv 文件中,文件名以“l(fā)abeled_”開頭、后面是提交的時(shí)間(精確到ms),容易區(qū)分。
3.2.2 手機(jī)端文件發(fā)送
需要與服務(wù)器約定、配合,這里選用Http協(xié)議中的HttpURLConnection 類來實(shí)現(xiàn),傳輸文件的名稱不變,可批量傳輸。需注意兩點(diǎn):①請(qǐng)求方式設(shè)為post,Content-Type 的值設(shè)“multipart/form-data”,并在其中約定好“分界符”;②文件傳送是費(fèi)時(shí)操作,不允許直接在界面上執(zhí)行,解決方法是以多線程方式在后臺(tái)執(zhí)行;本系統(tǒng)采用繼承輕量級(jí)異步類AsyncTask、重寫doIn-Background()和onPreExecute()等方法來實(shí)現(xiàn)。
3.2.3 服務(wù)器端接收文件
由一個(gè)Servlet來實(shí)現(xiàn),即在doPos(t)方法中接收手機(jī)端上傳的多個(gè)文件,可借助apache 的fileupload 組件來完成,文件的存放位置可根據(jù)后續(xù)模型訓(xùn)練、分類識(shí)別的需要來定。
3.2.4 訓(xùn)練數(shù)據(jù)的處理
主要內(nèi)容已在前面提及,現(xiàn)說明兩點(diǎn):
(1)滑動(dòng)窗口大小的確定:根據(jù)奈奎斯特定理,采樣頻率不少于傳感器取樣頻率的2倍,步長(zhǎng)通常為窗口大小50%,還應(yīng)考慮后續(xù)實(shí)時(shí)輸出運(yùn)動(dòng)狀態(tài)的間隔,例如傳感器取樣頻率為100 Hz,則窗口記錄大小可取為256,步長(zhǎng)值為128,即由256 條記錄(時(shí)長(zhǎng)2.56 秒)生成一個(gè)新樣本,前后窗口的距離為128 條記錄(間隔為1.28秒);
(2)為方便計(jì)算,可將數(shù)據(jù)文件加載成Pandas中的DataFrame對(duì)象,通過調(diào)用mean()、std()、max()、min()等函數(shù)來計(jì)算時(shí)域指標(biāo);可引入scipy.fftpack 包進(jìn)行傅里葉變換,得到直流分量、全部頻譜之和、主要頻譜等頻率指標(biāo)。
經(jīng)檢驗(yàn),傳統(tǒng)機(jī)器學(xué)習(xí)中集成學(xué)習(xí)算法的分類準(zhǔn)確度可達(dá)95%以上,且用時(shí)少,故本系統(tǒng)的分類模型選用RandomForest、XGBoost、LightGBM 三類算法。操作流程是:先安裝好相關(guān)庫(kù),再建立模型,之后進(jìn)行訓(xùn)練、測(cè)試。為方便后續(xù)直接使用已訓(xùn)練好的模型,需要調(diào)用joblib.dump()方法以文件方式來保存模型,分類時(shí)先用joblib.load()加載模型,再進(jìn)行分類識(shí)別,以提高工作效率。
本系統(tǒng)的一項(xiàng)重要功能是具備對(duì)老人運(yùn)動(dòng)行為進(jìn)行實(shí)時(shí)識(shí)別功能,操作界面如圖4 所示。實(shí)時(shí)識(shí)別模式包含數(shù)據(jù)的發(fā)送、接收、處理、識(shí)別、保存等一系列操作,具有相當(dāng)復(fù)雜度,前后環(huán)節(jié)需要密切配合才行,現(xiàn)介紹實(shí)現(xiàn)思路。
圖4 運(yùn)動(dòng)數(shù)據(jù)采集 操作界面
(1)手機(jī)端、服務(wù)器端的數(shù)據(jù)傳輸采用TCP協(xié)議來實(shí)現(xiàn)。
以Android 手機(jī)為例,數(shù)據(jù)發(fā)送程序是用Java 語言編寫的,而服務(wù)器端中數(shù)據(jù)處理、分類識(shí)別程序是用Python 語言編寫的,選用TCP協(xié)議可以跨越編程語言不同這一道“坎”。具體做法是:服務(wù)器端先創(chuàng)建socket,并綁定好IP和雙方約定端口,等待手機(jī)端請(qǐng)求;手機(jī)端以服務(wù)器端IP、約定端口為參數(shù)創(chuàng)建socket,發(fā)起連接;服務(wù)器響應(yīng)之后,手機(jī)端連續(xù)發(fā)送運(yùn)動(dòng)數(shù)據(jù),服務(wù)器端則持續(xù)接收數(shù)據(jù)、處理數(shù)據(jù)。
(2)服務(wù)器端中接收數(shù)據(jù)、處理數(shù)據(jù)程序的協(xié)調(diào)問題。
將它們寫成函數(shù),以線程方式運(yùn)行。有時(shí)接收到的數(shù)據(jù)記錄可能不完整,應(yīng)舍去。存儲(chǔ)數(shù)據(jù)的中間容器是一個(gè)指定大?。ㄈ?120)的list對(duì)象(每條記錄包含11 個(gè)數(shù)據(jù)項(xiàng)),數(shù)據(jù)存入容器的位置、讀取容器中數(shù)據(jù)位置分別使用int 型變量“寫指針”“讀指針”來指示,當(dāng)指針指向最后位置的下一個(gè)時(shí),指針通過取模運(yùn)算可復(fù)位到0(即第一個(gè)位置)。還設(shè)置了“寫入記錄總數(shù)”和“讀取記錄總數(shù)”兩個(gè)變量,用來標(biāo)識(shí)已存入、處理的記錄總數(shù)。
可將存入數(shù)據(jù)線程、處理數(shù)據(jù)線程看作是數(shù)據(jù)容器的“生產(chǎn)者”和“消費(fèi)者”,兩者之間存在著資源競(jìng)賽問題:當(dāng)存入數(shù)據(jù)速度太快時(shí),會(huì)出現(xiàn)容器中數(shù)據(jù)未被讀取就被覆蓋的情況;如果處理數(shù)據(jù)速度太快,則會(huì)導(dǎo)致容器中可讀取數(shù)據(jù)的記錄數(shù)不及一個(gè)滑動(dòng)窗口的大小要求,這兩種狀態(tài)都應(yīng)避免,解決辦法是讓運(yùn)行快的線程進(jìn)行適當(dāng)休眼(如0.05秒),如圖5所示。
圖5 接收數(shù)據(jù)、處理數(shù)據(jù)線程示圖
(3)分類操作并將結(jié)果存入數(shù)據(jù)庫(kù)。
為避免分類結(jié)果受隨機(jī)因素的影響,分類時(shí)分別利用已訓(xùn)練好的RandomForest、XGBoost、LightGBM 模型進(jìn)行判別,并用“投票法”來確定結(jié)果,服務(wù)器終端輸出分類結(jié)果如圖6所示(輸出結(jié)果不考慮手機(jī)的放置位置)。
圖6 服務(wù)器終端顯示的分類結(jié)果
可以看出:兩個(gè)狀態(tài)相隔約1.28 秒(步長(zhǎng)值),輸出結(jié)果要比真實(shí)的運(yùn)動(dòng)行為滯后2 秒左右,這是采用滑動(dòng)窗口技術(shù)無法避免的。兩種狀態(tài)切換時(shí)的中間過渡期容易錯(cuò)分。
將分類結(jié)果存入數(shù)據(jù)庫(kù)中,數(shù)據(jù)處理程序、Web 服務(wù)器利用數(shù)據(jù)庫(kù)這一中介來傳遞數(shù)據(jù);當(dāng)數(shù)據(jù)庫(kù)中的類別數(shù)據(jù)有變化時(shí),通過查詢操作能及時(shí)顯現(xiàn)出來,利用數(shù)據(jù)庫(kù)還可以進(jìn)行統(tǒng)計(jì)分析。結(jié)果數(shù)據(jù)表信息如表1所示。
表1 tb_activities表的字段屬性
要讓親友等能夠?qū)崟r(shí)查看、遠(yuǎn)程查詢老人運(yùn)動(dòng)行為狀態(tài)等,可行做法是在云端服務(wù)器中安裝Tomcat 等Web 應(yīng)用服務(wù)器,從數(shù)據(jù)庫(kù)中讀取相關(guān)記錄處理后再發(fā)布,用戶通過電腦、手機(jī)等登錄系統(tǒng)后即可隨時(shí)隨地查看。
本系統(tǒng)采用dao+pojo+servlet 技術(shù)來展示數(shù)據(jù),dao 負(fù)責(zé)數(shù)據(jù)庫(kù)連接、操作等;pojo 包含實(shí)體類Activity 和StateCounter;包含4 個(gè)servlet 程序,分別實(shí)現(xiàn)接收數(shù)據(jù)文件、查詢某一時(shí)段內(nèi)各時(shí)點(diǎn)運(yùn)動(dòng)行為狀態(tài)、統(tǒng)計(jì)某一時(shí)段內(nèi)各種運(yùn)動(dòng)行為的時(shí)間長(zhǎng)度、實(shí)時(shí)查看運(yùn)動(dòng)狀態(tài)等功能,項(xiàng)目結(jié)構(gòu)如圖7 所示,系統(tǒng)主頁面如圖8 所示。圖9~圖11 為查詢、統(tǒng)計(jì)、實(shí)時(shí)查看示圖,其中:運(yùn)動(dòng)行為時(shí)長(zhǎng)=該類運(yùn)動(dòng)行為記錄數(shù)×相鄰窗口間隔時(shí)長(zhǎng)(如1.28 秒),實(shí)時(shí)查看功能則采用定時(shí)(間隔為1秒)來刷新瀏覽器,從數(shù)據(jù)庫(kù)中獲取最新數(shù)據(jù)來達(dá)成。
圖7 Web項(xiàng)目結(jié)構(gòu)
圖8 運(yùn)動(dòng)信息查詢系統(tǒng)主頁面
圖9 某一時(shí)段各時(shí)點(diǎn)運(yùn)動(dòng)行為狀態(tài)查詢
圖10 某一時(shí)段內(nèi)各類運(yùn)動(dòng)行為統(tǒng)計(jì)時(shí)長(zhǎng)
圖11 某一時(shí)段運(yùn)動(dòng)行為狀態(tài)實(shí)時(shí)展示
從上不難看出,通過系統(tǒng)三個(gè)組成部分的分工協(xié)作,親友等能夠通過手機(jī)、電腦等實(shí)時(shí)查看、遠(yuǎn)程查詢老人運(yùn)動(dòng)行為,實(shí)現(xiàn)對(duì)老人的起居生活進(jìn)行監(jiān)測(cè)的目標(biāo)。
本文根據(jù)作者前期對(duì)“基于智能手機(jī)傳感器的人體行為識(shí)別技術(shù)”進(jìn)行研究、實(shí)踐的成果,提出了老人運(yùn)動(dòng)行為監(jiān)測(cè)系統(tǒng)的設(shè)計(jì)方案。這是一個(gè)具有實(shí)用性和中等復(fù)雜程度的應(yīng)用系統(tǒng),由老人手機(jī)端、云端服務(wù)器和客戶端三部分組成,實(shí)現(xiàn)了從數(shù)據(jù)的采集、發(fā)送、接收、處理,到模型的建立與訓(xùn)練、分類識(shí)別及結(jié)果的保存與發(fā)布等一系列功能,涵蓋了移動(dòng)應(yīng)用開發(fā)、數(shù)據(jù)分析與處理、機(jī)器學(xué)習(xí)、數(shù)據(jù)庫(kù)、Web 應(yīng)用開發(fā)等知識(shí)內(nèi)容。開發(fā)難點(diǎn)主要有三個(gè):①平臺(tái)、編程語言的多樣性問題;②數(shù)據(jù)傳輸?shù)目煽啃詥栴};③前后環(huán)節(jié)的協(xié)調(diào)性問題。開發(fā)過程中探索出選用跨語言、平臺(tái)的協(xié)議(如HTTP、TCP)、數(shù)據(jù)庫(kù)(如MySQL)及線程同步等方法來化解,取得較好效果。由于老人攜帶手機(jī)的習(xí)慣、時(shí)長(zhǎng)因人而異,不能保證手機(jī)不離身,這客觀上會(huì)影響系統(tǒng)的使用,后續(xù)改進(jìn)方法可考慮將手機(jī)變換為攜帶方便的手環(huán)等微小設(shè)備,確保數(shù)據(jù)采集、發(fā)送的時(shí)效性和穩(wěn)定性。