宋倩,黃德攢,覃秀美
(河池學院大數據與計算機學院,廣西 河池 546300)
隨著中國人口老齡化趨勢顯著,跌倒是老年人和殘障人士面臨的主要風險之一。因此,跌倒檢測系統的研究和開發意義非凡。經研究發現,部分地區醫療保障體系不健全、老年人就醫意識不強,又由于環境、住宅安全(光線昏暗、地板濕滑、不平、房屋老舊)以及身體激素的變化,老年人尤其是女性群體意外骨折概率高,還有長期臥床老人,這些群體需要格外注意跌倒。因此,跌倒檢測在醫療保健和健康監測領域具有實用價值。
近年來,隨著深度學習技術的發展,計算機視覺領域也取得了很大進展。當下流行的跌倒檢測系統大致分為三大類:一類是穿戴傳感器類的跌倒檢測[1],另一類是計算機視覺類的跌倒檢測[2-3],最后一類是基于視頻分析類的跌倒檢測[4-5]。現有穿戴傳感器類的跌倒檢測存在存儲資源受限的弊端,而基于視頻分析類的跌倒檢測普遍資源消耗大且精度不高,故而本文提出一種基于PaddleDetection 的跌倒檢測系統,該系統能夠準確地檢測出跌倒事件并及時自動推送消息,有助于提高老年人和殘障人士的安全保障。
PaddleDetection是一個基于飛槳框架的目標檢測工具箱,其具有高度靈活性和可擴展性,能夠滿足不同應用場景的需求。本文使用PaddleDetection來構建跌倒檢測系統,系統流程見圖1。

圖1 基于PaddleDetection的老人跌倒預警系統流程圖
為了訓練模型,需要收集跌倒和正常行走的視頻數據。跌倒視頻可以通過模擬跌倒事件或在現實場景中拍攝得到。正常行走視頻可以在公共場所或室內環境中拍攝。由于視頻數據比較龐大,故而使用數據增強技術來擴充數據集,如旋轉、縮放和翻轉等。
因涉及目標檢測,所以需要選擇帶有標注信息的數據集,常見的目標檢測數據集格式有VOC 格式和COCO 格式,VOC 格式只有一個邊界框來標記每個目標物體,而COCO 格式允許多個邊界框標記一個目標物體,可以更準確地描述物體。COCO 格式的數據集不僅適用于物體檢測和圖像分類,還適用于目標分割和關鍵點檢測等更復雜的任務。筆者將使用COCO格式的數據集進行模型訓練。COCO數據集的標注方式是JSON 文件[6],在實際應用中,需要根據任務的不同選擇不同的數據集以達到最佳效果。
圖像預處理通過消除圖像中無關的信息,進而提取或恢復有用的真實信息,增強與任務有關信息的檢測性。不僅能精簡數據,還能提高改進特征抽取、圖像分割、匹配和識別的可靠性。一般地,圖像處理流程如圖2所示。

圖2 圖像處理流程圖
1)灰度化處理
把彩色圖像轉換為灰度圖像(圖像呈現灰色的一種形態)的過程。在RGB模型中,若RGB的各個值相等,也就是R()=G()=B(),即是一種灰度顏色,此時R=G=B 的值稱為灰度值,也被稱為強度值或者亮度值。例如,RGB(125,125,125),該值就是一種灰度值。常見的彩色圖像灰度化方法有分量法、最大值法、平均值法和加權平均法。
2)圖像空間變換
將圖像經過平移、轉置、鏡像、旋轉、縮放等變換之后,然后進行處理,用于糾正圖像采集系統的誤差和設備位置(拍攝時的角度、人為無意間的倒放,甚至是拍攝的設備自身問題)的隨機誤差。此外,還可以根據任務需要,使用一種名為灰度插值的算法,如果按照這種變換關系進行計算,輸出圖像的像素可能會被映射到輸入圖像的非整數坐標上。通常在幾何變換任務中采用的插值方法有最近鄰插值、雙線性插值以及雙三次插值。
3)圖像增強
該技術既可以是一種失真的過程,也可以是一種增強顯示的過程,其目的是改變圖像的視覺效果。根據給定圖像的應用場景,強調圖像的整體或局部特性,使原來不清晰的圖像變得清晰(也被稱為圖像銳化),強調某些有效的特征,放大圖像與不同物體特征之間的差異,抑制或去除無用的特征,換言之提高圖像質量、放大有用的信息量、強化圖像解讀和識別效果,以滿足任務的需要。
PP-YOLOE+是PP-YOLOE 的升級版本,從大規模的obj365目標檢測預訓練模型入手,在大幅提升收斂速度的同時,提升了模型在COCO 數據集上的速度。同時,PP-YOLOE+大幅提升了包括數據預處理在內的端到端的預測速度[7]。
在本項目中,鑒于原PP-YOLOE+模型使用大規模數據集進行訓練,綜合考慮數據集數量,選用PPYOLOE+_m-預訓練模型在數據集上再次訓練。在backbone 中block 分支中增加alpha 參數,并且模型優化了端到端推理速度,提升訓練收斂速度。
模型訓練使用的平臺為百度AI Studio,該平臺為在線云服務平臺,支持云計算,采用開源的深度學習框架PaddlePaddle。在線Notebook環境分為經典版和BMLcode 版本,其中BMLcode 版本支持更多功能,所以選用BMLcode 進行環境搭建。在新建Notebook 文件后可使用命令克隆PaddleDetection或者在側邊欄進行一鍵下載解壓。環境硬件配置信息如下:
4 Cores CPU,32GB RAM,32GB Video Mem,Tesla V100 GPU,100GB Disk,Python 版本為3.7,PaddlePaddle 版本為2.3.2,PaddleDetection 版本為2.5 開發版分支,Cuda compilation tools, release 11.2, V11.2.152,cuDNN7.6。
根據選擇的模型,修改如下目錄的配置文件/configs/ppyoloe/ppyoloe_plus_crn_m_80e_coco.yml 進行參數的設置,通常情況下修改的參數有以下幾個:將待檢測的類別數num_classes 設置為1,由于數據量小,將訓練迭代數epoch 設置為30,學習率base_lr 設置為0.001。除此之外數據集路徑的配置也是相當重要,如果數據集路徑配置不當或者沒有配置數據集路徑將會導致整個項目無法運行。
在所有準備工作做好后,即可開始執行訓練命令,在訓練的同時,控制臺會同步輸出即時訓練信息,同時,也可以對命令加入指令--eval--use_vdl=True --vdl_log_dir="(此處填寫訓練日志輸出的文件夾)"進行數據輸出可視化監控。
訓練完成后,需要對模型進行評估以檢驗其性能。使用平均精度(Average Precision,AP)和平均召回率(Average Recall,AR)以及交并比(Intersection over Union,IoU)作為評價指標。
以下為部分指標的計算公式:
在訓練30 個循環之后,筆者所訓練的PP-YOLOE+_m模型效果見表1。

表1 PP-YOLOE+_m模型相關數據效果
選用測試集中的某張圖片來進行推理,當最小置信度設置0.5時,輸出效果見圖3、圖4。

圖3 對單張圖片進行檢測

圖4 對視頻進行檢測
在評估完成后,可以將模型部署到實際場景中進行應用。使用攝像頭來獲取視頻流,并在跌倒檢測系統中實時監測視頻流中是否出現跌倒事件。當出現相應事件后將數據返回到服務器,并通過云服務進行消息推送。
在實際應用中,將模型部署到一臺微型計算機或者智能監控攝像頭上,并實時監測跌倒事件。當檢測到跌倒事件時,系統會立即報警并通知相關人員。經過實際應用,發現該系統能夠準確地檢測出跌倒事件,并及時報警,有助于提高老年人和殘障人士的安全保障。
下面將使用NVIDIA 推出的Jetson 邊緣計算套件進行流程示例見圖5。

圖5 使用NVIDIA的Jetson邊緣計算套件的流程圖
但是在實際應用中,由于Jetson硬件過于昂貴,只有在特定場合下適用[8],所以通常是將模型部署到智能攝像頭上進行跌倒檢測。
使用PaddleDetection 框架來搭建跌倒檢測系統,并使用自制數據集進行訓練和測試。在訓練集上,使用大約1 500張行人跌倒的圖片。在測試集上使用約200 張圖片作為測試集。經過訓練和測試,對比原模型,得出如表2所示的結果。

表2 本模型對比PP-YOLOE+其他模型
建立一種基于PaddleDetection的老人跌倒檢測系統,該系統能準確地檢測出跌倒事件并及時報警,有助于提高老年人和殘障人士的安全保障。使用了PP-YOLOE+作為跌倒檢測模型,并使用PaddleDetection 框架進行模型訓練和部署。通過實驗結果證明了,該系統在自制數據集上和實際場景中都具有較高的準確性和實用性。未來,可以進一步改進模型網絡,更換更大的數據集,提高跌倒檢測的準確性和實時性,同時結合其他傳感器數據,如加速度計和壓力傳感器等來進一步提高系統的可靠性和精度。