徐程遠,游國棟,王一評,趙雙樂
(1.天津科技大學 機械工程學院,天津 300222;2.天津科技大學 電子信息與自動化學院,天津 300222;3.天津科技大學 人工智能學院,天津 300222)
目前市面上的嬰幼兒安全看護設備許多功能欠缺,存在受眾泛化、圖像不清晰、弱光環境下圖像質量差、檢測范圍小等問題,留有一定的技術空缺。本文針對以上問題進行系統的更新,為了降低兒童傷害從父母育兒的角度出發,優化技術配置,為兒童提供安全、健康、舒適的成長環境。
本文設計的嬰幼兒看護機器人,減少了人們對嬰幼兒監護問題的盲區,與此同時可在多場景應用,例如:智慧醫療、視頻保姆、育兒托管等。本文設計的嬰幼兒看護機器人處于仿真階段。
如圖1 所示,Jetson Nano[1]是英偉達公司推出的一款微型電腦主板,價格適中,功耗低,功能強大,備受用戶喜愛。該主板采用直插式內存模塊(SODIMM),支持多種計算機接口,如USB 3.0、USB 2.0、千兆以太網和視頻(支持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 內存,能夠為機器人和工業視覺設備提供充足的AI 計算能力。它能夠提供472 GFLOP,并且支持高分辨率的傳感器,同時也能夠處理多個傳感器流,并且可以在每個傳感器流上運行多個現代神經網絡。Jetson Nano Developer Kit 支持一系列流行的AI 框架和算法,比如TensorFlow、PyTorch、Caffe、Caffe2、Keras、MXNet 等,使得開發人員能夠簡單快速地將AI 模型和框架集成到產品中,輕松實現圖像識別、目標檢測、姿勢估計、語義分割、視頻增強和智能分析等強大功能。此外,Jetson Nano Developer 還支持NVIDIA JetPack 組件包,其中包括用于深度學習、計算機視覺、GPU 計算、多媒體處理等的板級支持包,CUDA,CUDNN 和TensorRT 軟件庫。
USB 高清攝像頭是一種數字攝像頭,它可以直接通過USB 接口連接到計算機上,無需使用視頻捕捉卡。USB 高清攝像頭的主要結構和組件包括鏡頭和圖像傳感器。鏡頭是由幾片透鏡組成的透鏡結構,可以是塑膠透鏡或玻璃透鏡。圖像傳感器可以分為兩類:CCD(電荷耦合器件)和CMOS(互補金屬氧化物半導體)。USB 高清攝像頭可以捕捉高清晰度的影像,并將其傳輸到計算機上進行處理和存儲。由于USB 接口的傳輸速度較快,因此USB 高清攝像頭在市場上越來越受歡迎。
激光雷達是機器人中常用的傳感器之一,可以用于測量機器人周圍環境的距離和形狀。在ROS中,激光雷達的驅動程序和數據處理程序已經被開發出來,可以方便地與ROS 進行集成。通過ROS,可以使用激光雷達來獲取機器人周圍環境的信息,并進行地圖構建、路徑規劃等任務。
舵機二維云臺是一種通過舵機控制的支撐模塊,可以實現左右和上下的轉動。它通常由2 個舵機和1 個固定架組成,其中一個舵機控制左右轉動,另一個舵機控制上下轉動。舵機二維云臺可以與攝像頭等設備配合使用,實現遠程監控、拍照等功能。
YOLO 算法支持人臉關鍵點定位、人臉表情判斷等多項任務,這使得它在處理復雜場景或多種應用需求方面更加靈活和可靠,進一步提高嬰幼兒安全監控的質量和效率。
整個方案實現過程為采集嬰幼兒表情圖片進行處理后建立嬰幼兒表情庫,根據嬰幼兒感應區檢索出數據庫里所有的嬰幼兒面部區域,以此減少其他環境因素對面部識別的干擾。利用YOLO 目標檢測算法,通過建立損失函數、更新參數對模型進行訓練并最后進行模型評估。
3.1.1 數據采集和處理
因國內外關于嬰幼兒面部表情的開源數據集樣本過少,所以建立一個數據集。使用爬蟲技術(Python 的相關庫BeautifulSoup、Scrapy 等)從多個數據源采集到足夠的嬰幼兒表情,如圖2 所示,建立一個嬰幼兒表情庫[2]。再使用精靈標注助手對數據庫里的嬰幼兒圖片感應區進行標記,主要分為積極(POSITIVE)、平靜(PEACE)、消極(PASSIVE)三類[3]。使用矩形框裁剪出數據庫里所有的嬰幼兒面部區域,以此減少其他環境因素對面部識別的干擾。還需對所有數據圖片進行分類,由于嬰幼兒面部表情較為簡單,對所有圖片標注完畢后,將其導出為XML 格式,再轉到YOLO 所用的格式,通過預處理,包括數據增強、數據劃分等。數據增強可以采用隨機裁剪、旋轉、縮放、翻轉等方式,以擴充數據量和增強模型的泛化能力[4]。數據劃分可以將數據集分為訓練集、驗證集和測試集,以便進行模型訓練和評估。

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

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

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

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