徐程遠,游國棟,王一評,趙雙樂
(1.天津科技大學(xué) 機械工程學(xué)院,天津 300222;2.天津科技大學(xué) 電子信息與自動化學(xué)院,天津 300222;3.天津科技大學(xué) 人工智能學(xué)院,天津 300222)
目前市面上的嬰幼兒安全看護設(shè)備許多功能欠缺,存在受眾泛化、圖像不清晰、弱光環(huán)境下圖像質(zhì)量差、檢測范圍小等問題,留有一定的技術(shù)空缺。本文針對以上問題進行系統(tǒng)的更新,為了降低兒童傷害從父母育兒的角度出發(fā),優(yōu)化技術(shù)配置,為兒童提供安全、健康、舒適的成長環(huán)境。
本文設(shè)計的嬰幼兒看護機器人,減少了人們對嬰幼兒監(jiān)護問題的盲區(qū),與此同時可在多場景應(yīng)用,例如:智慧醫(yī)療、視頻保姆、育兒托管等。本文設(shè)計的嬰幼兒看護機器人處于仿真階段。
如圖1 所示,Jetson Nano[1]是英偉達公司推出的一款微型電腦主板,價格適中,功耗低,功能強大,備受用戶喜愛。該主板采用直插式內(nèi)存模塊(SODIMM),支持多種計算機接口,如USB 3.0、USB 2.0、千兆以太網(wǎng)和視頻(支持4 k 60 fps)。此外,Jetson Nano 還有一套40 引腳擴展引腳,與Raspberry Pi上的引腳非常相似,同時也支持Pi 的攝像頭。

圖1 Jetson Nano B01 主板Fig.1 Motherboard of Jetson Nano B01
Jetson Nano 的性能超越了樹莓派。它搭載了四核Cortex-A57 處理器、128 核Maxwell GPU 和4 GB LPDDR 內(nèi)存,能夠為機器人和工業(yè)視覺設(shè)備提供充足的AI 計算能力。它能夠提供472 GFLOP,并且支持高分辨率的傳感器,同時也能夠處理多個傳感器流,并且可以在每個傳感器流上運行多個現(xiàn)代神經(jīng)網(wǎng)絡(luò)。Jetson Nano Developer Kit 支持一系列流行的AI 框架和算法,比如TensorFlow、PyTorch、Caffe、Caffe2、Keras、MXNet 等,使得開發(fā)人員能夠簡單快速地將AI 模型和框架集成到產(chǎn)品中,輕松實現(xiàn)圖像識別、目標檢測、姿勢估計、語義分割、視頻增強和智能分析等強大功能。此外,Jetson Nano Developer 還支持NVIDIA JetPack 組件包,其中包括用于深度學(xué)習(xí)、計算機視覺、GPU 計算、多媒體處理等的板級支持包,CUDA,CUDNN 和TensorRT 軟件庫。
USB 高清攝像頭是一種數(shù)字攝像頭,它可以直接通過USB 接口連接到計算機上,無需使用視頻捕捉卡。USB 高清攝像頭的主要結(jié)構(gòu)和組件包括鏡頭和圖像傳感器。鏡頭是由幾片透鏡組成的透鏡結(jié)構(gòu),可以是塑膠透鏡或玻璃透鏡。圖像傳感器可以分為兩類:CCD(電荷耦合器件)和CMOS(互補金屬氧化物半導(dǎo)體)。USB 高清攝像頭可以捕捉高清晰度的影像,并將其傳輸?shù)接嬎銠C上進行處理和存儲。由于USB 接口的傳輸速度較快,因此USB 高清攝像頭在市場上越來越受歡迎。
激光雷達是機器人中常用的傳感器之一,可以用于測量機器人周圍環(huán)境的距離和形狀。在ROS中,激光雷達的驅(qū)動程序和數(shù)據(jù)處理程序已經(jīng)被開發(fā)出來,可以方便地與ROS 進行集成。通過ROS,可以使用激光雷達來獲取機器人周圍環(huán)境的信息,并進行地圖構(gòu)建、路徑規(guī)劃等任務(wù)。
舵機二維云臺是一種通過舵機控制的支撐模塊,可以實現(xiàn)左右和上下的轉(zhuǎn)動。它通常由2 個舵機和1 個固定架組成,其中一個舵機控制左右轉(zhuǎn)動,另一個舵機控制上下轉(zhuǎn)動。舵機二維云臺可以與攝像頭等設(shè)備配合使用,實現(xiàn)遠程監(jiān)控、拍照等功能。
YOLO 算法支持人臉關(guān)鍵點定位、人臉表情判斷等多項任務(wù),這使得它在處理復(fù)雜場景或多種應(yīng)用需求方面更加靈活和可靠,進一步提高嬰幼兒安全監(jiān)控的質(zhì)量和效率。
整個方案實現(xiàn)過程為采集嬰幼兒表情圖片進行處理后建立嬰幼兒表情庫,根據(jù)嬰幼兒感應(yīng)區(qū)檢索出數(shù)據(jù)庫里所有的嬰幼兒面部區(qū)域,以此減少其他環(huán)境因素對面部識別的干擾。利用YOLO 目標檢測算法,通過建立損失函數(shù)、更新參數(shù)對模型進行訓(xùn)練并最后進行模型評估。
3.1.1 數(shù)據(jù)采集和處理
因國內(nèi)外關(guān)于嬰幼兒面部表情的開源數(shù)據(jù)集樣本過少,所以建立一個數(shù)據(jù)集。使用爬蟲技術(shù)(Python 的相關(guān)庫BeautifulSoup、Scrapy 等)從多個數(shù)據(jù)源采集到足夠的嬰幼兒表情,如圖2 所示,建立一個嬰幼兒表情庫[2]。再使用精靈標注助手對數(shù)據(jù)庫里的嬰幼兒圖片感應(yīng)區(qū)進行標記,主要分為積極(POSITIVE)、平靜(PEACE)、消極(PASSIVE)三類[3]。使用矩形框裁剪出數(shù)據(jù)庫里所有的嬰幼兒面部區(qū)域,以此減少其他環(huán)境因素對面部識別的干擾。還需對所有數(shù)據(jù)圖片進行分類,由于嬰幼兒面部表情較為簡單,對所有圖片標注完畢后,將其導(dǎo)出為XML 格式,再轉(zhuǎn)到Y(jié)OLO 所用的格式,通過預(yù)處理,包括數(shù)據(jù)增強、數(shù)據(jù)劃分等。數(shù)據(jù)增強可以采用隨機裁剪、旋轉(zhuǎn)、縮放、翻轉(zhuǎn)等方式,以擴充數(shù)據(jù)量和增強模型的泛化能力[4]。數(shù)據(jù)劃分可以將數(shù)據(jù)集分為訓(xùn)練集、驗證集和測試集,以便進行模型訓(xùn)練和評估。

圖2 數(shù)據(jù)集爬取過程Fig.2 Dataset crawling process
3.1.2 損失函數(shù)
損失函數(shù)的作用為度量神經(jīng)網(wǎng)絡(luò)預(yù)測信息與期望信息(標簽)的距離,預(yù)測信息越接近期望信息,損失函數(shù)值越小。由上述每個格子的預(yù)測信息可知,訓(xùn)練時主要包含3 個方面的損失:邊界框損失(loss_box)、置信度損失(loss_obj)、分類損失(loss_clc)。因此YOLOV5 網(wǎng)絡(luò)的損失函數(shù)定義為
3.1.3 模型訓(xùn)練
利用YOLOV5 進行模型訓(xùn)練。用YOLO 算法庫,在收集到足夠數(shù)量和質(zhì)量的數(shù)據(jù)后,將其輸入到模型中利用深度神經(jīng)網(wǎng)絡(luò)、CNN(卷積神經(jīng)網(wǎng)絡(luò))、數(shù)據(jù)增強、優(yōu)化器以及GPU 加速等多項技術(shù)進行訓(xùn)練,構(gòu)建成一個具備良好泛化性能的人臉識別模型。在模型訓(xùn)練后,可以將其應(yīng)用于實時視頻流中,通過分析嬰幼兒的面部表情來判斷他們是處于積極、消極還是平靜的情感狀態(tài)。部分訓(xùn)練效果圖如圖3 所示。

圖3 部分訓(xùn)練效果Fig.3 Partial training effect
3.1.4 模型評估
在目標檢測中,評估模型性能的2 個重要指標是召回率(Recall)和平均精度(mAP)[5]。
精確度(Precision):
召回率(Recall):
式中:TP 是正類判定為正類;FP 是負類判定為正類;FN 是正類判定為負類;TN 是負類判定為負類。召回率越高,說明模型越能夠正確檢測到目標。
對于每個類別,計算出不同閾值下的精確度(Precision)和召回率(Recall),并繪制出Precision-Recall 曲線。在Precision-Recall 曲線基礎(chǔ)上,通過計算每個Recall 值對應(yīng)的Precision 值的平均,可以獲得一個數(shù)組形式的評估:
式中:r1,r2,…,rn是按升序排列的Precison 插值段第一個插值處對應(yīng)的Recall 值。
所有類別的AP 為mAP:
從圖4 可以看出,平均精度越高,說明模型在不同類別下的檢測效果越好。

圖4 評估指標曲線圖Fig.4 Evaluation indicator curve diagram
通過對攝像頭傳來的視頻流處理獲得人物的相關(guān)信息并鎖定,使用Mean Shift 算法,在后續(xù)對圖像的處理中,可提取出用戶特征值,避免跟隨目標混亂。將監(jiān)測系統(tǒng)與Jeson Nano 小車進行結(jié)合,使家長可以遠程操縱小車進行全方位多角度的監(jiān)測,與傳統(tǒng)固定機位相比,靈活性顯著提高,不需要布置多個機位,且減少了固定機位所具有的監(jiān)控死角。
Mean Shift(均值漂移)平均偏移是一種基于核密度的非參數(shù)聚類算法,該算法假設(shè)不同聚類的數(shù)據(jù)集遵循不同的概率密度分布,找到任意局部點的密度增長最快方向(即均值偏移),并找到與分布最大值相對應(yīng)的樣本密度高的區(qū)域。該算法中最常用的核函數(shù)是高斯核,它在數(shù)據(jù)集上的每個采樣點設(shè)置核函數(shù),并將所有核函數(shù)相加以獲得數(shù)據(jù)集的核密度估計值。最終,該算法通過將收斂到與同一聚類的成員收斂到相同最大值的點來實現(xiàn)聚類。
該算法需要指定帶寬、漂移平均收斂閾值和集群合并閾值(Center_Distance)的參數(shù)。此外,還可以通過帶有核函數(shù)的Mean Shift 聚類來進一步優(yōu)化聚類效果。
假設(shè)有大小為n 的d 維數(shù)據(jù)集:{xi}
由數(shù)據(jù)集的核密度估計:
上式的梯度為
上式的第一項為實數(shù)值,因此第二項的向量方向與梯度方向一致,第二項的表達式為
由上式推導(dǎo)可知:均值漂移向量所指的方向是密度增加最大的方向。因此,Mean Shift 算法流程為
(1)計算每個樣本的均值漂移向量mh(x)。
(2)對每個樣本點以mh(x)進行平移,即:
(3)重復(fù)(1)(2),直到樣本點收斂:
(4)收斂到相同點的樣本被認為是同一簇類的成員。
在使用Flask 前,需要先安裝虛擬環(huán)境和Flask。虛擬環(huán)境可以提供一個干凈的Python 環(huán)境,使得不同的應(yīng)用程序可以在不同的環(huán)境中穩(wěn)定運行,使用虛擬環(huán)境工具Anaconda 來創(chuàng)建虛擬環(huán)境。
使用Flask 創(chuàng)建一個簡單的應(yīng)用程序,同時在Flask 中渲染HTML 頁面需要使用的模板,使用Jinja2模板引擎。創(chuàng)建一個名為“index.html”的文件,在其中添加一些HTML 代碼(如一個簡單的輸入框和提交按鈕),并將其保存在模板目錄中,到這里可以實現(xiàn)HTML 頁面的準確渲染。
在前后端交互的過程中,F(xiàn)lask 可以使用Jinja2模板引擎來渲染動態(tài)數(shù)據(jù),并使用Flask-WTF 庫來處理Web 表單。在渲染頁面時,可以將服務(wù)器端的數(shù)據(jù)傳給前端,然后前端通過發(fā)送HTTP 請求的方式,將數(shù)據(jù)發(fā)送給服務(wù)器進行處理。
在前端HTML 代碼中,通過表單提交的方式將數(shù)據(jù)發(fā)送給后端。在Flask 應(yīng)用程序中定義一個與前端表單參數(shù)對應(yīng)的函數(shù),并在該函數(shù)中編寫后臺邏輯代碼,用于對表單的數(shù)據(jù)進行處理,然后將處理好的數(shù)據(jù)返回給前端,此時前端頁面實時顯示后端處理好的嬰幼兒監(jiān)測機器人拍攝的信息流,嬰幼兒監(jiān)測系統(tǒng)界面如圖5 所示。

圖5 嬰幼兒監(jiān)測系統(tǒng)界面Fig.5 Infant monitoring system interface
本文設(shè)計的嬰幼兒監(jiān)測系統(tǒng)基于HTML、CSS和原生JS 技術(shù)設(shè)計了前端界面,使用Flask 進行前后端連接,與后端Python 代碼協(xié)同工作,整體開發(fā)框架如圖6 所示。看護機器人可實時跟進嬰幼兒,通過攝像頭傳來的視頻流獲取嬰幼兒的相關(guān)信息,將信息流傳給后端進行處理,具備嬰幼兒面部手部追蹤、夜間增光效果、嬰幼兒面部表情識別等功能。處理好的信息流返回前端,可方便查看嬰幼兒生活動向。
嬰幼兒看護機器人的產(chǎn)品定位,主要是為父母提供一個安全、可靠的監(jiān)測系統(tǒng),幫助他們更好地監(jiān)護嬰幼兒的健康和安全。嬰幼兒看護機器人的核心功能是實時監(jiān)測嬰幼兒的情況,這些傳感器不斷收集和傳輸嬰幼兒的生理數(shù)據(jù),通過手機應(yīng)用或電腦軟件實時呈現(xiàn)給父母,父母可以通過表情隨時了解嬰幼兒的健康狀況[6-7],及時發(fā)現(xiàn)和解決問題。嬰幼兒看護機器人還可以通過記錄嬰幼兒的睡眠、喂養(yǎng)時間和頻率等數(shù)據(jù),幫助父母更好地掌握嬰幼兒的生活習(xí)慣,這些額外功能可以幫助父母更好地管理嬰幼兒的日常生活,提高嬰幼兒的生活品質(zhì)。