行人跌倒检测系统在各个领域的应用都对社会的整体健康、安全和福祉产生积极影响,为人们的生活和工作提供了更加安全和可靠的环境,
本文主要使用YOLOV8深度学习框架自训练了一个“行人跌倒检测模型”,基于此模型使用PYQT5实现了一款界面软件用于功能演示。让您可以更好的了解和学习,该软件支持图片、视频以及摄像头进行跌倒目标检测,本系统所涉及的训练数据及软件源码已打包上传。
软件功能演示
图片检测演示
点击图片图标,选择需要检测的图片,即可得到检测结果,过程如下:
行人跌倒检测图片演示
视频检测演示
点击视频图标,选择需要检测的图片,即可得到检测结果,过程如下:
行人跌倒检测视频演示
摄像头功能
系统还提供了摄像头实时监测功能,可自行尝试!!!
模型训练
关于YOLOV8的数据标注及模型训练更详细的内容,可关注我的另一篇专门记录这部分的文章
【深度学习】YOLOV8数据标注及模型训练方法整体流程介绍及演示
数据集准备及标注
labelimg
通过网络上搜集关于跌倒的各类图片,并使用LabelMe标注工具对每张图片中的跌倒目标边框(Bounding Box)进行标注。一共包含1428张图片,其中训练集包含1142张图片,验证集包含286张图片,部分图像及标注如下图所示。
图片数据的存放格式如下,在项目目录中新建datasets目录,同时将跌倒检测的图片分为训练集与验证集放入FallData目录下。
训练
图片数据的存放格式如下,在项目目录中新建datasets目录,同时将跌倒检测的图片分为训练集与验证集放入FallData目录下。
同时我们需要新建一个data.yaml文件,用于存储训练数据的路径及模型需要进行检测的类别。YOLOv8在进行模型训练时,会读取该文件的信息,用于进行模型的训练与验证。data.yaml的具体内容如下:
注:train与val后面表示需要训练图片的路径,建议直接写自己文件的绝对路径。
数据准备完成后,通过调用train.py文件进行模型训练,epochs参数用于调整训练的轮数,batch参数用于调整训练的批次大小【根据内存大小调整,最小为1】,代码如下:
训练结果评估
关于该系统涉及到的完整源码、UI界面代码、数据集、训练代码、测试图片视频等相关文件,均已打包上传,感兴趣的小伙伴可以通过下载链接自行获取。
通常用损失函数下降的曲线来观察模型训练的情况,yolov8训练时主要包含三个方面的损失:定位损失、分类损失和动态特征损失,训练结束后,在runs/目录下找到训练过程及结果文件:
- 定位损失box_loss:预测框与标定框之间的误差GloU,越小定位越准确
- 分类损失cls_loss:计算锚框与对应标定分类是否正确,越小分类越准确
- 动态特征损失dfl_loss:一种用于回归预测框与目标框之间距离的损失函数,通过计算动态特征损失,可以更准确地调整预测框的位置,提高目标检测的准确性。
本文训练结果如下:
PR曲线体现精确率和召回率的关系,mAP表示Precision和Recall作为两轴作图后围成的面积,m表示平均,@后面的数表示iou为正负样本的阈值,mAP@0.5表示阈值大于0.5的平均mAP,可以看到本文模型1类目标检测的mAP@0.5平均值为0.844,结果还是很不错的。
检测结果识别
模型训练完成后,可以得到一个最佳的训练结果模型best.pt文件,在runs/train/weights/bset.pt,可以使用该文件进行推理检测:
结束语
由于本人能力有限,难免有疏漏之处。
文中源码文件【获取方式】:关注公众号:利哥AI实例探险
给公众号发送 行人跌倒检测 获取下载方式,免费,无套路,只要关注!!!
给公众号发送 行为跌倒检测数据集 获取数据集下载方式。
公众号链接:深度学习】行人跌倒行为检测软件系统