李子意,于洋,郭椿可,李澤萱,邢世琦
(天津師范大學(xué)計(jì)算機(jī)與信息工程學(xué)院,天津 300387)
根據(jù)2018年青少年近視率與用眼習(xí)慣報(bào)告顯示,我國(guó)現(xiàn)有盲人500多萬人,低視力者有上千萬,尤其是兒童及青少年,近視率高[1-2]。更令人震驚的是,有份調(diào)查報(bào)告稱,國(guó)內(nèi)因高度近視致盲者已達(dá)30多萬人。實(shí)際上,我國(guó)青少年的整體視力情況不容樂觀,有數(shù)據(jù)顯示,目前中國(guó)近視患者人數(shù)多達(dá)6億,幾乎占到中國(guó)總?cè)丝诘?0%。青少年近視率已經(jīng)居世界第一[1-2]。因此,保護(hù)視力,刻不容緩!相關(guān)研究報(bào)告指出,錯(cuò)誤的用眼習(xí)慣、不正確的坐姿、閱讀環(huán)境光線強(qiáng)度的不適宜都是導(dǎo)致近視的主要原因。若能糾正用戶的錯(cuò)誤用眼習(xí)慣,形成正確的閱讀姿勢(shì),調(diào)整適宜的光線強(qiáng)度,將會(huì)大大降低近視率。
系統(tǒng)從近視的成因出發(fā),針對(duì)光線太弱(太強(qiáng))、閱讀時(shí)間太長(zhǎng)、閱讀距離太近等不良眼習(xí)慣,設(shè)計(jì)了一套可在用戶辦公或?qū)W習(xí)過程中使用的系統(tǒng)。全自動(dòng)護(hù)眼系統(tǒng),實(shí)時(shí)檢測(cè)用戶表情,分析用戶閱讀狀態(tài),提醒用戶坐姿,并能自動(dòng)調(diào)整最佳閱讀距離。
視力保護(hù)系統(tǒng)硬件主要由光敏電阻模塊、壓力傳感器、紅外測(cè)距模塊、蜂鳴器報(bào)警模塊、攝像頭、STM32F103ZET6單片機(jī)和測(cè)控電路組成[3]。在軟件方面,用C語言編寫上位機(jī)的硬件程序,用Python語言編寫深度學(xué)習(xí)模型和算法。使用Android Studio設(shè)計(jì)一個(gè)設(shè)計(jì)良好的交互界面。
系統(tǒng)以STM32F103ZET6單片機(jī)為核心,通過連接多個(gè)傳感器模塊,實(shí)現(xiàn)了數(shù)據(jù)采集和判斷。當(dāng)檢測(cè)到讀取環(huán)境的光強(qiáng)度不在適當(dāng)范圍內(nèi)時(shí),通過調(diào)整處理將光強(qiáng)度檢測(cè)模塊的電壓值轉(zhuǎn)換為相應(yīng)的光強(qiáng)度,然后利用方波周期的長(zhǎng)度來改變控制臺(tái)燈的模擬電壓,從而調(diào)整燈光強(qiáng)度和亮度[3-4]。當(dāng)紅外測(cè)距模塊檢測(cè)到椅背與桌子的距離不在正確范圍內(nèi)時(shí),單片機(jī)驅(qū)動(dòng)電機(jī)調(diào)整椅背的角度。攝像機(jī)實(shí)時(shí)采集圖像,分析檢測(cè)主機(jī)中視頻流數(shù)據(jù)的讀取狀態(tài)。當(dāng)用戶的閱讀時(shí)間過長(zhǎng)時(shí),分析檢測(cè)到用戶的閱讀狀態(tài)是疲勞的,單片機(jī)驅(qū)動(dòng)蜂鳴器報(bào)警模塊進(jìn)行報(bào)警提示。
光敏電阻采集的數(shù)據(jù)通過經(jīng)驗(yàn)公式完成電阻值的轉(zhuǎn)化。
計(jì)算公式為:
若光照過強(qiáng)或者過弱,單片機(jī)控制蜂鳴器發(fā)出警告;繼電器模塊控制臺(tái)燈調(diào)節(jié)亮度。圖1為光強(qiáng)檢測(cè)電路。
圖1 光強(qiáng)檢測(cè)電路
紅外線測(cè)距模塊是用來檢測(cè)椅背距桌面的距離。如圖2所示,模塊包括紅外線發(fā)生與接收電路。紅外線的發(fā)生電路發(fā)射出連續(xù)的紅外射線,再照射到物體后形成一個(gè)反射過程以供紅外接收電路接收。接收電路的輸出端根據(jù)其接收的紅外光線而變化。經(jīng)單片機(jī)處理后計(jì)算出距離[5]。
圖2 紅外測(cè)距電路
所使用的蜂鳴器工作頻率是2000 Hz,驅(qū)動(dòng)信號(hào)的波形周期是500μs,占空比為1/2 duty的方波,只需要每250μs進(jìn)行一次電平翻轉(zhuǎn),就可以得到驅(qū)動(dòng)蜂鳴器的方波信號(hào)[6]。如圖3所示當(dāng)用戶閱讀時(shí)出現(xiàn)不正確的閱讀狀態(tài),單片機(jī)通過I/O口輸入,導(dǎo)通三極管驅(qū)動(dòng)蜂鳴器鳴叫。
圖3 蜂鳴器報(bào)警電路
3.1.1 Tensorflow
Tensorflow是一個(gè)基于數(shù)據(jù)流編程(dataflow programming)的符號(hào)數(shù)學(xué)系統(tǒng),被廣泛應(yīng)用于各類機(jī)器學(xué)習(xí)(machine learning)算法的編程實(shí)現(xiàn),其前身是谷歌的神經(jīng)網(wǎng)絡(luò)算法庫(kù)DistBelief。擁有多層級(jí)結(jié)構(gòu),可部署于各類服務(wù)器、PC終端和網(wǎng)頁(yè)并支持GPU和TPU高性能數(shù)值計(jì)算,被廣泛應(yīng)用于谷歌內(nèi)部的產(chǎn)品開發(fā)和各領(lǐng)域的科學(xué)研究[7]。
TensorFlow由谷歌人工智能團(tuán)隊(duì)谷歌大腦(Google Brain)開發(fā)和維護(hù),擁有包括TensorFlow Hub、TensorFlow Lite、TensorFlow Research Cloud在內(nèi)的多個(gè)項(xiàng)目以及各類應(yīng)用程序接口(Applica?tion Programming Interface,API)[8]。提供Python語言下的四個(gè)不同版本:CPU版本、GPU版本以及它們的每日編譯版本(tf-nightly、tf-nightly-gpu)。
3.1.2 網(wǎng)絡(luò)結(jié)構(gòu)
系統(tǒng)采用的深度學(xué)習(xí)算法是YOLOv3算法。如圖4所示,是YOLOv3的特征提取網(wǎng)絡(luò)Darknet 53。YOLOv3的輸入一般是416×416×3的原始圖片矩陣、n個(gè)坐標(biāo)標(biāo)簽和n個(gè)分類標(biāo)簽,其中n代表每幅圖中目標(biāo)物體的個(gè)數(shù)[9]。在經(jīng)過特征提取網(wǎng)絡(luò)后,會(huì)得到三種不同尺寸的特征圖:13×13×255、26×26×255、52×52×255。
圖4 特征提取網(wǎng)絡(luò)Darknet 53
YOLOv3網(wǎng)絡(luò)在三個(gè)特征圖中分別通過(4+1+c)×k個(gè)大小為1×1的卷積核進(jìn)行卷積預(yù)測(cè),k為預(yù)設(shè)邊界框(bounding box prior)的個(gè)數(shù)(k默認(rèn)取3),c為預(yù)測(cè)目標(biāo)的類別數(shù)(在本系統(tǒng)中為2類),其中4k個(gè)參數(shù)負(fù)責(zé)預(yù)測(cè)目標(biāo)邊界框的偏移量,k個(gè)參數(shù)負(fù)責(zé)預(yù)測(cè)目標(biāo)邊界框內(nèi)包含目標(biāo)的概率,ck個(gè)參數(shù)負(fù)責(zé)預(yù)測(cè)這k個(gè)預(yù)設(shè)邊界框?qū)?yīng)c個(gè)目標(biāo)類別的概率。目標(biāo)邊界框的預(yù)測(cè)過程如圖5所示。
圖5 預(yù)測(cè)過程
圖中虛線矩形框?yàn)轭A(yù)設(shè)邊界框,實(shí)線矩形框?yàn)橥ㄟ^網(wǎng)絡(luò)預(yù)測(cè)的偏移量計(jì)算得到的預(yù)測(cè)邊界框。其中(cx,cy)為預(yù)設(shè)邊界框在特征圖上的中心坐標(biāo),(pw,ph)為預(yù)設(shè)邊界框在特征圖上的寬和高,(tx,ty,tw,th)分別為網(wǎng)絡(luò)預(yù)測(cè)的邊界框中心偏移量以及寬高縮放比,(bx,by,bw,bh)為最終預(yù)測(cè)的目標(biāo)邊界框,從預(yù)設(shè)邊界框到最終預(yù)測(cè)邊界框的轉(zhuǎn)換過程如圖右側(cè)公式所示,其中σ(x)函數(shù)是sigmoid函數(shù)其目的是將預(yù)測(cè)偏移量縮放到0到1之間[10]。
3.1.3 訓(xùn)練
本系統(tǒng)在訓(xùn)練時(shí)采用的是在配置了1080Ti的服務(wù)器上進(jìn)行GPU訓(xùn)練,通過訓(xùn)練自己的數(shù)據(jù)集并進(jìn)行參數(shù)的微調(diào)得到了適用于視力保護(hù)系統(tǒng)的深度學(xué)習(xí)模型。最終將得到的模型加載至上位機(jī)進(jìn)行分析預(yù)測(cè)。
本系統(tǒng)利用Android Studio開發(fā)出了交互界面良好的APP,具有主頁(yè)內(nèi)容、數(shù)據(jù)顯示、網(wǎng)絡(luò)咨詢和個(gè)人中心四個(gè)部分。用戶通過APP可查詢自己的用眼時(shí)長(zhǎng),坐姿是否正確;同時(shí),APP也會(huì)定期推送相關(guān)護(hù)眼知識(shí)給用戶。
在將模型加載到上位機(jī)后,連接硬件對(duì)整個(gè)視力保護(hù)系統(tǒng)進(jìn)行測(cè)試,實(shí)驗(yàn)結(jié)果顯示,本套系統(tǒng)能將閱讀環(huán)境的光照度控制在700~1000 lx范圍內(nèi),當(dāng)室內(nèi)的環(huán)境光照度發(fā)生改變時(shí)且超出預(yù)設(shè)的光照度范圍時(shí),實(shí)現(xiàn)亮度的自動(dòng)調(diào)整:光照度小于700 lx時(shí),臺(tái)燈亮度自動(dòng)變亮;當(dāng)光照度大于1000 lx時(shí)臺(tái)燈亮度自動(dòng)變暗,在700~1000 lx之間時(shí),臺(tái)燈亮度維持不變,能夠提供適于人眼的閱讀光照度。本實(shí)驗(yàn)通過利用刻度尺測(cè)量人體與書桌之間的距離,與紅外傳感器通過lcd屏顯示的數(shù)值進(jìn)行比較,計(jì)算相對(duì)誤差,得到的實(shí)驗(yàn)數(shù)據(jù)如表1所示。當(dāng)距離小于15 cm時(shí)系統(tǒng)發(fā)出外部中斷信號(hào),蜂鳴器發(fā)出警報(bào),步進(jìn)電機(jī)驅(qū)動(dòng)椅背實(shí)現(xiàn)傾角調(diào)整,總體誤差小于1.5%。
表1 距離相對(duì)誤差統(tǒng)計(jì)表
模型能分析預(yù)測(cè)出疲勞和專注兩種閱讀狀態(tài),分析檢測(cè)的結(jié)果如圖6所示,硬件部分收集并處理過后的數(shù)據(jù)都會(huì)實(shí)時(shí)的在APP中展現(xiàn),效果如圖7所示。
圖6 檢測(cè)效果圖
圖7 軟件效果圖
用戶可以在APP中查看自己的用眼時(shí)長(zhǎng),坐姿是否正確,以及一些護(hù)眼知識(shí)。
大多視力保護(hù)系統(tǒng)只從某個(gè)方面來對(duì)用戶的視力進(jìn)行保護(hù),相比之下,本視力保護(hù)系統(tǒng)將深度學(xué)習(xí)、傳感器、單片機(jī)結(jié)合起來,可以從導(dǎo)致用戶近視的原因出發(fā)幫助用戶,有效的防治了近視,達(dá)到了保護(hù)視力的目的。