1. 实验环境
实验环境是基于硬件信息为Intel(R) Core(TM) i5-7500 CPU @ 3.40GHz(3401 MHz),内存为 8 个 G,系统为 Microsoft Windows 10 专业教育版(64 位),显卡为 NVIDIA GeForce RTX 2060 SUPER (8192MB),使用 pytorch+cuda+cudnn 进行模型的训练和预测。
2. 行人目标检测
跌倒检测的第一步,目标检测作用是从复杂场景中检测出人,检测精度也对后续的跌倒判别有着很大的影响。 本文使用的 YOLOv5 模型的网络结构是 YOLOv5s,虽然精度不是很高,但是训练速度很快。YOLOv5 初始训练的数据集为 COCO 数据集,COCO 数据集是一个大型的物体检测、分割和字幕数据集,也是目前最广泛公开的目标检测数据库。数据集总共有超过 33 万张图片,其中 20 万张有标注,个体的数目超过 150 万个。该数据集主要从复杂的日常场景中截取,提供的类别有 80 类,其中 person 是 COCO 数据集中的一个类。使用 YOLOv5 在 COCO 数据集上训练得到的初始训练权重,在COCO128 数据集上进行了实验,最终模型的性能在 COCO128 数据集上达到了0.76 mAP@0.5 IOU。而对自建数据集进行测试的时候,YOLOv5 的检测性能为 0.48mAP@0.50 IOU,精度下降了很多,主要原因本文也提过, COCO数据集中包含人体的图片较少,尤其是躺着的人或者有遮挡的人样本较少,在使用 YOLOv5 模型对 COCO 数据集进行训练的时候,模型能较好的识别图像中的站立的人体,但是在检测躺着的人的时候,容易出现检测丢失,在之后的目标跟踪中也会因为人体目标丢失导致精度下降。这是比较致命的问题,因此不能直接 YOLOv5 在 COCO 数据集上的预训练权重,而是需要收集包含更多人体姿态的数据集,并调整相应的训练参数,从而获得更好的检测效果。
使用了自建数据集,从网上搜集了共 800 张复杂场景下的人体姿态,并使用标注工具 LabelImg 对其中的人体进行人工标注,然后按照 COCO 数据集的格式将图片和标准依次放到代码里,并利用 COCO 已经训练好的权重进行初始化,依然是使用 YOLOv5s 的网络结构进行训练,最终模型的性能上升到了 0.67 mAP@0.50 IOU,对于之前难以检测到的躺在地上的人体,也能进行很好的识别。