基于邊緣計(jì)算和高斯混合模型的公交車司機(jī)
掃描二維碼
隨時(shí)隨地手機(jī)看文章
0引言
在城市化水平越來越高的今天,城市人口逐漸增加,無論是出于經(jīng)濟(jì)還是環(huán)保的考慮,居民往往愿意選擇乘坐公交車出行。這時(shí)候,公交車上的眾多乘客和路上行人的安危都系于公交車司機(jī)一身,司機(jī)的身心健康就變得非常重要。
據(jù)南昌市交通管理局通報(bào),2024年4月8日,南昌市一公交車先后與多名行人發(fā)生碰撞。 經(jīng)調(diào)查,51歲的駕駛員駕駛車輛時(shí)突發(fā)心臟不適失去意識(shí),事故造成3人當(dāng)場(chǎng)死亡、7人受傷送醫(yī)。類似事件時(shí)有發(fā)生,因此搭建公交車司機(jī)的健康管理系統(tǒng),對(duì)司機(jī)的健康狀況進(jìn)行實(shí)時(shí)預(yù)警,對(duì)降低駕駛員在崗異常的風(fēng)險(xiǎn)非常有幫助。
1公交車司機(jī)健康管理系統(tǒng)的獨(dú)特需求
1.1 需要采集的健康參數(shù)
反映司機(jī)健康的常見參數(shù)主要包括體溫、心率、血壓、血氧飽和度這四項(xiàng),同時(shí)體溫、心率、血壓和血氧飽和度等健康參數(shù)通過對(duì)司機(jī)配備成本不高的智能穿戴設(shè)備即可獲取,可實(shí)施性較高[1]。
1.2 司機(jī)健康管理系統(tǒng)對(duì)數(shù)據(jù)算法的需求
公交車司機(jī)有年長的也有年輕的,有男性也有女性,因此簡(jiǎn)單地采用傳統(tǒng)的平均值+正負(fù)偏差的方法來判斷司機(jī)體溫、心率、血壓、血氧飽和度是否正常并不恰當(dāng),也無法針對(duì)個(gè)體提出有效的預(yù)警。這就要求算法能夠針對(duì)公交車司機(jī)個(gè)體獨(dú)特的體溫、心率、血壓、血氧數(shù)據(jù)進(jìn)行統(tǒng)計(jì)分析,從而達(dá)到比較準(zhǔn)確評(píng)估每個(gè)司機(jī)健康狀態(tài)的目的。
司機(jī)在工作時(shí),難免會(huì)遇到緊急情況,這時(shí)可能會(huì)心率加快,血壓升高,這種情況下如何避免健康系統(tǒng)對(duì)司機(jī)狀況的誤判?司機(jī)攜帶手環(huán)時(shí),手部頻繁運(yùn)動(dòng),也有可能造成數(shù)據(jù)異常,這種情況如何識(shí)別?這就要求數(shù)據(jù)算法有相當(dāng)?shù)蔫b別能力,能排除無效數(shù)據(jù)的影響,而且對(duì)短期的數(shù)據(jù)劇烈變化有穩(wěn)妥的處理方式。
公交車運(yùn)行在城市的每個(gè)角落,有網(wǎng)絡(luò)良好的市中心,也有網(wǎng)絡(luò)覆蓋不佳的邊緣地帶,而當(dāng)公交車進(jìn)入隧道、地下建筑時(shí)甚至可能沒有網(wǎng)絡(luò)信號(hào),如何避免數(shù)據(jù)中斷而導(dǎo)致健康系統(tǒng)失效甚至是誤報(bào),這對(duì)數(shù)據(jù)算法也是一個(gè)考驗(yàn)。 當(dāng)然要完全解決這個(gè)問題,數(shù)據(jù)的算法是一方面,另一方面也要有相關(guān)的硬件支持[2]。
2邊緣計(jì)算的優(yōu)勢(shì)
前面提到,在司機(jī)工作中,難免會(huì)遇到信號(hào)不好導(dǎo)致數(shù)據(jù)傳輸不順暢的情況,為了解決這個(gè)問題,本系統(tǒng)采用了邊緣計(jì)算的方式,即:佩戴在司機(jī)身上的智能穿戴設(shè)備通過藍(lán)牙把數(shù)據(jù)傳輸?shù)焦卉嚿系倪吘売?jì)算節(jié)點(diǎn),經(jīng)過邊緣計(jì)算節(jié)點(diǎn)對(duì)數(shù)據(jù)進(jìn)行處理和分析后,再把經(jīng)過處理后的少量關(guān)鍵數(shù)據(jù)和報(bào)警信息傳輸?shù)街醒朐?。這時(shí)候,即使環(huán)境網(wǎng)絡(luò)不好,也并不影響邊緣計(jì)算終端的正常工作,一旦發(fā)現(xiàn)司機(jī)異常情況,即可本地報(bào)警。而計(jì)算出來的關(guān)鍵數(shù)據(jù)和報(bào)警信息會(huì)暫時(shí)存儲(chǔ)在邊緣計(jì)算終端,一旦網(wǎng)絡(luò)信號(hào)恢復(fù),即可自動(dòng)進(jìn)行數(shù)據(jù)續(xù)傳[3]。
中央云接收到報(bào)警信息后,可以立即通過預(yù)設(shè)的電話或短信方式通知值班管理人員;接收到的司機(jī)健康關(guān)鍵信息可以存檔記錄,成為后續(xù)生成司機(jī)月度/季度健康報(bào)表的基礎(chǔ)數(shù)據(jù)。
邊緣計(jì)算架構(gòu)圖如圖1所示。
3 系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)
3.1硬件系統(tǒng)
公交車司機(jī)健康系統(tǒng)的硬件主要由兩部分組成:
1)多功能健康監(jiān)測(cè)手環(huán),采用定制的可同時(shí)測(cè)量體溫、心率、血氧和血壓的支持藍(lán)牙功能的智能手環(huán)。
2)承擔(dān)邊緣計(jì)算功能的高性能工控機(jī),考慮到邊緣計(jì)算終端要長期在灰塵大、振動(dòng)多、噪聲強(qiáng)、高低溫等環(huán)境下工作,以及網(wǎng)絡(luò)通信、未來可擴(kuò)展性等多方面需求,系統(tǒng)采用支持深度定制的J1900工控機(jī)。這款工控機(jī)支持最多16 GB內(nèi)存、1 TB硬盤,可以選配藍(lán)牙和5G模塊,具備4組USB3.0接口及3組RS232接口。整體機(jī)身小巧,采用高強(qiáng)度的鋁合金制造,抗振耐壓防腐蝕,金屬機(jī)身散熱,無風(fēng)扇設(shè)計(jì)減少了振動(dòng)和積灰,特別適合在復(fù)雜環(huán)境下連續(xù)工作。
3.2 軟件系統(tǒng)
軟件系統(tǒng)工作流程如圖2所示。
下面對(duì)軟件系統(tǒng)的工作流程進(jìn)行詳細(xì)說明。
3.2.1數(shù)據(jù)的收集和預(yù)處理
首先設(shè)置定制手環(huán)每1min采集一次體溫、心率、血壓和血氧飽和度數(shù)據(jù),當(dāng)司機(jī)進(jìn)入公交車即進(jìn)入工作狀態(tài),藍(lán)牙自動(dòng)配對(duì)鏈接并開始收集數(shù)據(jù)。接下來對(duì)數(shù)據(jù)進(jìn)行清洗,按照表1的標(biāo)準(zhǔn),剔除明顯的異常值。
3.2.2模型的選擇和訓(xùn)練
公交車司機(jī)在工作中往往會(huì)遇到多種突發(fā)情況,比如交通事故、大塞車或者車上乘客發(fā)生沖突等,這時(shí)難免會(huì)造成司機(jī)的心率、血壓等生命體征參數(shù)波動(dòng);而另外一些時(shí)刻,司機(jī)處于平靜的開車狀態(tài)。這兩種情況下司機(jī)的體溫、心率、血壓、血氧飽和度情況可能會(huì)大相徑庭,因此需要選擇合適的算法,來定義針對(duì)司機(jī)個(gè)性化的身體參數(shù)的正常范圍,這樣才可以更加準(zhǔn)確地對(duì)司機(jī)的健康狀況進(jìn)行預(yù)警。
本方案選擇高斯混合模型來處理收集到的這些數(shù)據(jù)[4]。假設(shè)收集到的參數(shù)(體溫、心率、血壓和血氧飽和度)都符合高斯分布,其概率密度函數(shù)為:
式中:μ為均值;σ2為方差。
一般來說,數(shù)據(jù)會(huì)由多個(gè)高斯分布的加權(quán)組合構(gòu)成,即:
式中:K為高斯分布的個(gè)數(shù),在本系統(tǒng)中K=2,包括司機(jī)的平靜狀態(tài)和激動(dòng)狀態(tài);πk為第k個(gè)高斯分布的權(quán)重, 為第k個(gè)高斯分布的概率密度函數(shù)。
在模型訓(xùn)練的過程中,首先采用k—means聚類對(duì)數(shù)據(jù)進(jìn)行初步分組,確定初始的μk、σ、πk,接下來采用期望最大化(EM)算法迭代優(yōu)化高斯混合模型(GMM)參數(shù),步驟如下:
1)E步(Expectation):計(jì)算每個(gè)數(shù)據(jù)點(diǎn)屬于每個(gè)高斯分布的后驗(yàn)概率。
式中:znk表示第n個(gè)數(shù)據(jù)點(diǎn)是否屬于第k個(gè)高斯分布。
2)M步(Maximization):更新參數(shù)。
3)設(shè)定收斂條件,當(dāng)?shù)螖?shù)達(dá)到預(yù)先設(shè)定的50次或者參數(shù)變化小于10-3時(shí),上述參數(shù)已經(jīng)被認(rèn)為處于穩(wěn)定狀態(tài),此時(shí)迭代停止。
3.2.3各項(xiàng)參數(shù)報(bào)警閾值的確定
經(jīng)過前面的計(jì)算,可以得出個(gè)性化的各項(xiàng)參數(shù)報(bào)警閾值。
1)低風(fēng)險(xiǎn)標(biāo)準(zhǔn)。
對(duì)于每個(gè)高斯分布,定義其95%置信區(qū)間為正常范圍:下限為μk—1.96σk ,上限為μk十1.96σk ,在這個(gè)范圍內(nèi)的司機(jī)健康數(shù)據(jù)符合無風(fēng)險(xiǎn)標(biāo)準(zhǔn),而在這個(gè)范圍之外且加權(quán)概率p(x)<0.05的司機(jī)健康數(shù)據(jù)被判定為符合低風(fēng)險(xiǎn)標(biāo)準(zhǔn)。
2)中風(fēng)險(xiǎn)標(biāo)準(zhǔn)。
對(duì)于符合低風(fēng)險(xiǎn)標(biāo)準(zhǔn)的數(shù)據(jù),進(jìn)一步判斷是否符合中風(fēng)險(xiǎn)標(biāo)準(zhǔn)。計(jì)算數(shù)據(jù)屬于所有高斯分布的加權(quán)概率總和:
如果p(x)≥0.01,意味著這種情況雖然比較罕見,但并不極端,可以依舊歸類為低風(fēng)險(xiǎn);但是如果p(x)<0.01,則意味著這個(gè)數(shù)據(jù)非常罕見,這時(shí)候符合中風(fēng)險(xiǎn)標(biāo)準(zhǔn)。
3)高風(fēng)險(xiǎn)標(biāo)準(zhǔn)。
除了前面提到的低風(fēng)險(xiǎn)和中風(fēng)險(xiǎn)項(xiàng),根據(jù)臨床數(shù)據(jù),當(dāng)心率、血壓和血氧同時(shí)超過一定閾值后,被稱為“三聯(lián)征”,這時(shí),心率>100次/min,收縮壓>160 mmHg,血氧飽和度<93%[5]。本系統(tǒng)在高風(fēng)險(xiǎn)判斷的過程中,沒有采用高斯混合模型優(yōu)化,直接采用滿足標(biāo)準(zhǔn)即報(bào)警的模式,因?yàn)闈M足三聯(lián)征的數(shù)據(jù)極其罕見,且一旦出現(xiàn),臨床上意味著需要盡快進(jìn)行干預(yù),在這種情況下,沒有必要采用高斯混合模型去修正報(bào)警閾值。
當(dāng)出現(xiàn)三聯(lián)征報(bào)警,司機(jī)應(yīng)該立刻停止工作并就醫(yī),而公交管理部門也應(yīng)在第一時(shí)間得到報(bào)警信息并做好應(yīng)急安排。
3.2.4不同風(fēng)險(xiǎn)等級(jí)的報(bào)警策略
當(dāng)司機(jī)被監(jiān)測(cè)到身體處于高風(fēng)險(xiǎn)狀態(tài)時(shí),本地邊緣計(jì)算終端驅(qū)動(dòng)本地聲光報(bào)警,提示司機(jī)盡快回到站場(chǎng)并及時(shí)就醫(yī);同時(shí),中央云收到高風(fēng)險(xiǎn)報(bào)警信息,立刻發(fā)送緊急報(bào)警信息至公交管理部門,調(diào)整該司機(jī)的工作計(jì)劃,安排代班司機(jī)。
當(dāng)司機(jī)被監(jiān)測(cè)到身體處于中風(fēng)險(xiǎn)狀態(tài)時(shí),本地邊緣計(jì)算終端驅(qū)動(dòng)報(bào)警燈閃爍,提示監(jiān)測(cè)到司機(jī)身體狀態(tài)可能出現(xiàn)異常,同時(shí)發(fā)送中風(fēng)險(xiǎn)報(bào)警信息至中央云,中央云在收到報(bào)警信息當(dāng)天把所有報(bào)警司機(jī)信息匯總發(fā)送給公交管理部門,公交管理部門安排相關(guān)司機(jī)在第二天上崗前,在站場(chǎng)使用符合醫(yī)用標(biāo)準(zhǔn)的體溫計(jì)、血壓計(jì)和血氧儀進(jìn)行復(fù)查。如果一周內(nèi)該司機(jī)有兩次以上中風(fēng)險(xiǎn)報(bào)警,則安排該司機(jī)去醫(yī)院體檢。
當(dāng)司機(jī)被監(jiān)測(cè)到身體處于低風(fēng)險(xiǎn)狀態(tài)時(shí),本地不報(bào)警,不干擾司機(jī)的正常工作,但邊緣計(jì)算終端將低風(fēng)險(xiǎn)報(bào)警信息發(fā)送至中央云,中央云對(duì)報(bào)警信息和對(duì)應(yīng)司機(jī)數(shù)據(jù)進(jìn)行匯總記錄,并按月發(fā)送司機(jī)健康報(bào)告。如果司機(jī)每月低風(fēng)險(xiǎn)報(bào)警次數(shù)超過50次,管理部門優(yōu)先安排這些司機(jī)在本季度去醫(yī)院體檢。
4 系統(tǒng)實(shí)現(xiàn)
部署在本地的邊緣計(jì)算終端通過藍(lán)牙接收司機(jī)健康數(shù)據(jù)后,采用基于python的panda5/Numpy庫實(shí)現(xiàn)流式數(shù)據(jù)處理,當(dāng)出現(xiàn)報(bào)警時(shí),驅(qū)動(dòng)集成蜂鳴器和LED指示燈進(jìn)行本地聲光報(bào)警。同時(shí),通過HTTp協(xié)議向云端推送報(bào)警信息和經(jīng)過處理后的司機(jī)健康數(shù)據(jù)。通過Fla5K/Fa5tApI實(shí)現(xiàn)RESTful接口,供云端查詢歷史數(shù)據(jù)。
在中央云端,使用阿里云服務(wù)配置彈性計(jì)算實(shí)例(T5-larGe,2核4GB內(nèi)存)。數(shù)據(jù)庫使用MySQL/po5tGreSQL存儲(chǔ)結(jié)構(gòu)化數(shù)據(jù)。考慮到可能多個(gè)邊緣計(jì)算終端會(huì)在同一時(shí)間內(nèi)報(bào)警,消息隊(duì)列采用kafKa/RabbitMQ處理高并發(fā)報(bào)警信息。云服務(wù)器接收邊緣終端的MQTT消息,解析JSON數(shù)據(jù)并存儲(chǔ)至數(shù)據(jù)庫,同時(shí)通過阿里云短信/電話服務(wù)發(fā)送報(bào)警信息至指定的管理部門。在數(shù)據(jù)視化方面,使用python的Matplotlib/plotly庫生成周報(bào)/月報(bào),包含趨勢(shì)圖、異常事件統(tǒng)計(jì)圖等。前端展示基于vue.j5/React開發(fā)web應(yīng)用,支持?jǐn)?shù)據(jù)篩選和導(dǎo)出。
采用高斯混合模型的本系統(tǒng)可以根據(jù)司機(jī)個(gè)人情況,并綜合考慮其在不同工作狀態(tài)下的健康特征建立動(dòng)態(tài)的報(bào)警閾值,因此報(bào)警的準(zhǔn)確率會(huì)有所提高,跟通過傳統(tǒng)的置信區(qū)間界定風(fēng)險(xiǎn)等級(jí)的方法相比,高斯混合模型可以避免許多無謂的誤報(bào),這大大提升了司機(jī)健康管理系統(tǒng)的準(zhǔn)確性和嚴(yán)肅性,可以有效降低云平臺(tái)的負(fù)荷,同時(shí)也有效降低因?yàn)檎`報(bào)而造成管理部門額外安排司機(jī)體檢的損失。
原始算法和改進(jìn)算法的報(bào)警率比較如表2所示。需要注意的是,三聯(lián)征(高風(fēng)險(xiǎn))報(bào)警因?yàn)榘l(fā)生概率本身已經(jīng)很低了,故沒有采用混合高斯模型進(jìn)行優(yōu)化。
5 結(jié)束語
采用基于邊緣計(jì)算技術(shù)和高斯混合模型算法的公交車司機(jī)健康管理系統(tǒng),可以有效提升數(shù)據(jù)本地處理的速度,避免因?yàn)榫W(wǎng)絡(luò)信號(hào)不佳導(dǎo)致數(shù)據(jù)缺失的情況。同時(shí),針對(duì)司機(jī)的個(gè)體情況和不同工作狀態(tài)給出動(dòng)態(tài)的報(bào)警閾值,大大提升了報(bào)警的準(zhǔn)確度。本系統(tǒng)提升了公交管理部門對(duì)司機(jī)健康的掌握度,為保障市民安全出行提供了有力支撐,有一定的推廣意義。
[參考文獻(xiàn)]
[1]孫二華,胡云冰.基于邊緣云計(jì)算的人體數(shù)據(jù)傳感架構(gòu)[J].西南師范大學(xué)學(xué)報(bào)(自然科學(xué)版),2020,45(7):137-143.
[2] 陳祥,葉鈺斌,徐雨.基于邊緣計(jì)算的EHS管理系統(tǒng)研究[J].信息與電腦(理論版),2022,34(15):135-138.
[3]劉艷.基于云計(jì)算的城市軌道交通信息化平臺(tái)研究[J].設(shè)備管理與維修,2023(7):146-148.
[4]朱壯壯,周治平.高斯混合生成模型檢測(cè)健康數(shù)據(jù)異常[J].計(jì)算機(jī)科學(xué)與探索,2022,16(5):1128-1135.
[5]劉月玲.脈搏血氧飽和度監(jiān)測(cè)在急性心肌梗死患者中的應(yīng)用[J].臨床合理用藥雜志,2012,5(18):113.
《機(jī)電信息》2025年第17期第9篇





