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