基于深度学习的溺水预警分析监测管理系统研究
2024-03-04王云
王 云
(深圳市云海易联电子有限公司,广东 深圳 518000)
随着水库开放程度不断提高,大量人涌向水库进行游泳[1]。但是,当人们享受游泳带来的乐趣时,溺水已成为一个问题。溺水的原因是初学者无法在水中自由呼吸,难以保持身体平衡。掌握游泳技能的游泳者在突然抽筋和压力下也会溺水[2]。目前,当出现溺水人员在水库发生危险时,救生员处理紧急情况的能力较弱,且溺水游泳者的救援速度也很慢。受人类生理条件的限制,救生员很难长时间保持高度集中的注意力。长时间看游泳池水面也会使救生员感到头晕[3]。因此,一些水库使用摄像头对水库内部和水下进行监控,但是大多数是手动操作的,不仅耗费人力,而且监控效果会受到人们情绪和疲劳等因素的影响,容易漏检。然而,大多数研究都是关于检测水中游泳者的。该方法对溺水者的检测精度低,容易引起误报。此外,在游泳池溺水行为检测领域对深度学习方法的研究很少。
因此,本文提出一种基于深度学习算法的水下摄像机游泳运动员行为识别监测管理系统。该方法可以通过实时采集水下相关图像和数据,准确识别游泳者的游泳行为和溺水行为,并对溺水行为进行报警。进而提高救生员救援效率,保障游泳人员的生命安全。
1 深度学习的溺水预警分析监测管理系统
1.1 水库视频采集
本文的试验数据是由某市水库获得的。水库长50m,宽25m,深3m。摄像机数量为8 台,2 台水下摄像机为一组。摄像机对称安装在水下2.5m 的长边池壁上,共有4 组摄像机[4]。每台摄像机记录5h 的视频,其中8 台共40h。游泳者在水中的手势行为千差万别,如果通过游泳者在水中的手势行为来区分游泳者,不仅会增加标注工作量,还容易造成行为误标注。为了减少人为因素对标注的影响,随机选取2 个摄像机角度下的2000 帧游泳者图像[5]。根据泳池中游泳者的分布情况,计算正常游泳者的大致游泳深度范围。同时,通过摄像机共得到10185 幅图像,并从这10185 幅图像中随机抽取9000 幅作为原始训练图像。剩下的1185 幅作为测试图像[6]。
1.2 游泳者行为识别方法
只利用YOLOv4 算法容易将在水面嬉戏的游泳者检测为溺水者,将靠近水底的溺水者检测为游泳者,导致游泳行为检测误判率较高。为了提高目标检测的准确性[7],在游泳者行为识别模块中开发了BR-YOLOv4 监测管理系统,根据目标与游泳池游泳/溺水区域的位置信息之间的空间位置关系来进一步判断游泳者的行为。
1.2.1 坐标系
根据不同拍摄角度的泳池图片,设定一条红色符号线。符号线将图片分为2 个部分[9],如图1所示。红色标志线的上部为正常游泳区,下部为溺水区。为了计算目的,建立一个平面矩形坐标系。坐标原点位于图像的左上角,坐标值随着图像的右边和垂直向下而增大。此外,坐标(x,y)与图片的分辨率有关,x∈[0,1920],y∈[0,1080]。左上角点A(Ax、Ay)、右上角点B(Bx、By)、左下角点C(Cx、Cy)和右下角点D(Dx、Dy)是边界框的4 个顶点。E(Ex、Ey)和F(Fx、Fy)分别表示多段线L与边界框的交点,G(Gx、Gy)表示多段线L的拐点。多段线方程L,如公式(1)和公式(2)所示。
图1 平面坐标系
式中:A1、B1、A2和B2分别为左上角点,右上角点,左下角点,右下角点,同时A1、B1、A2等不等于零。
1.2.2 面积重叠指数
如图1所示,当游泳者边界框和标志线重叠时,重叠区域可以划分为梯形或三角形进行区域求解[8]。边界框和游泳/溺水区域之间的区域重叠指数评估如公式(3)和公式(4)所示。
式中:Dvalue/Svalue为溺水/游泳区域内的部分边界框与整个边界框的面积比。Darea/Sarea是指边界框与溺水/游泳区重叠的区域。Stotal是游泳者边界框的整个面积。
1.3 游泳人员行为分析与统计
游泳和溺水行为是根据边界框与游泳/溺水区域之间的重叠区域来识别的。游泳行为识别的具体过程如下。步骤1:摄像机读取当前帧。使用YOLOv4 检测模型对当前帧中的游泳者进行检测,并获得检测对象边界框的位置坐标和类别。步骤2:分析边界框与水库标志线之间的空间关系。如果边界框与水库标志线相交,就进行步骤1。如果边界框与水池标志线不相交,就进入步骤2.1。导出判断结果并判断是否为最后一帧。如果不是,则读取下一帧,然后返回步骤2.2 继续检测;如果是最后一帧,则停止检测。步骤2.1:当边界框与水库的符号线相交时,根据公式计算Dvalue/Svalue的面积比。当阈值大于阈值1 时,目标类别正在游动;当Dvalue小于阈值1 且Dvalue 大于阈值2 时,表示目标类别正在溺水。否则,将保留原始的检测结果。步骤2.2:当边界框与水库标志线不相交时,如果边界框完全位于游泳区域,则判断当前行为为游泳;如果边界框完全位于溺水区域,则判断当前行为为溺水。判别阈值一般应根据边界框的属性和游泳者的行为来确定。此外,这些阈值还会受到水库深度和摄像机安装位置的影响。在该试验中,长水池场景的阈值1=0.52,阈值2 = 0.53。短水池情况下,阈值1=0.54,阈值2=0.56。
2 结果和讨论
2.1 试验配置
溺水预警分析监测管理系统基于Windows 10 中的PyTorch(YOLOv5 模型中使用)和Darknet 框架(YOLOv3 和YOLOv4 模型中使用)。训练参数如下:类别数为2608 像素×608 像素。批量大小等于16,训练迭代次数为10000,学习率初始为0.001。
2.2 模型评价
在模型的训练阶段,采用精度、查全率、mAP和每秒帧数(FPS)4 个评价指标对系统进行评价。mAP(平均平均精度)由精确度和查全率确定。以召回率为水平轴,以精度为垂直轴的曲线称为P-R曲线,以P-R曲线下的面积为精度平均值(AP),所有目标类别的精度平均值的平均值为mAP值,如公式(5)和公式(6)所示。
式中:TP为检测图像中的某些行为被正确识别;FP为其他被错误识别的行为;FN为被错误识别为另一种行为。上述评价指标主要用于训练后对模型进行评价。为了更准确地评价本文提出的游泳者行为识别框架,选择了平均精度率(Mp)、平均错误率(Mf)和平均误报率(Mm)作为检测指标。不仅可以评估该框架的准确性,而且还可以定量分析游泳和溺水行为的报告漏报率和漏报率。
2.3 检测算法的结果
表1 为深度学习YOLOv3、BR-YOLOv4、YOLOv5 三种模型的训练结果。在mAP指数方面,YOLOv3 的mAP为 84.37%,YOLOv5 为90.32%。BR-YOLOv4 的mAP为92.41%,高于前两者。在精确度和召回率指标方面,YOLOv4 分别为91.33%和92.88%,高于YOLOv3 和YOLOv5。在帧速率方面,BRYOLOv4 算法的检测帧速率为33f/s,YOLOv3 和YOLOv5 算法的检测帧速率分别为37f/s 和46f/s。BR-YOLOv4 比YOLOv3 和YOLOv5 稍慢,但识别准确率更高。因此,BR-YOLOv4 算法在识别准确率和识别速度方面都取得了令人满意的结果,且该算法有助于提高准确率,集成了所有修改过的模块,以实现最佳的检测性能。为了进一步提高游泳者和溺水者的检测精度,本文选择深度学习BR-YOLOv4 算法作为游泳者行为识别的溺水预警分析监测管理系统。
表1 三种算法的检测结果
2.4 不同算法平均精度率检测效果
模型检测结果中游泳和溺水行为的精度率(从低到高)为YOLOv3、YOLOv5、YOLOv4 以及BR-YOLOv4(见表2)。对于溺水行为,BR-YOLOV4 算法的最佳Mf 和平均误报率值分别为0.59%和3.94%,其值比采用其他3 种算法低。与YOLOv3、YOLOv4 和YOLOv5 相比,BR-YOLOV4 的平均精度率分别增加了8.29%、4.45%和5.18%。对于游泳行为,YOLOv4 算法的平均错误率值和平均误报率值分别为9.36%和3.36%。YOLOv5算法的平均错误率和平均误报率分别为15.27%和4.13%。BR-YOLOv4 算法的平均错误率和平均误报率分别为1.48%和3.04%。与YOLOv4 和YOLOv5 算法相比,BRYOLOv4 算法具有最低的平均错误率、平均误报率,最高的平均精度率。
表2 行为识别结果
总的来说,深度学习BR-YOLOv4 算法中溺水行为的平均误报率和游泳行为的平均错误率都较高。其主要原因为BR-YOLOv4 算法无法将全部溺水行为有效识别,并存在检测水面反射作为游泳行为的情况,从而导致较高的平均错误率,进一步表明BR-YOLOv4 算法在检测过程中是可行和有效的。且YOLOv3 在游泳和溺水类别中的表现最差。YOLOV4 和YOLOV5 算法的Mf、Mm和Mp值非常接近,优于YOLOv3,且可以有效降低第一阶段留下的背景噪声,从而提高检测精度,进一步验证本文所提出的高精度。同时,BRYOLOv4 算法在短池角度下仍然具有最好的检测指标。通过分析表2,YOLO 算法与BR-YOLOv4 算法的Mf、Mm和Mp的变化幅度约为1%。由于游泳者的数量与在不同摄像机角度下的2 种行为存在差异,因此结果在正常范围内波动。其中,BR-YOLOv4 算法的检测精度最高。
2.5 不同游泳者密度的检测结果
为了探究游泳者密度对模型准确性的影响,本节通过检测两种不同的游泳者密度来分析模型在不同游泳者密度下的检测准确性。低游泳者密度的统计结果见表3。高游泳者密度的统计检测结果见表4。
表3 低密度池角的行为识别结果
表4 高密度池角的行为识别结果
通过比较YOLOv3、YOLOv4、YOLOv5 和BR-YOLOv4 算法在高密度和低密度游泳者中的检测效果,发现低密度游泳者的行为识别准确率明显高于高密度游泳者。虽然高密度游泳者中的游泳者容易相互遮挡和重叠,导致算法对目标识别的干扰增加,但是BR-YOLOv4 算法对2 种行为识别的检测效果都很好。从这3 种不同情况的试验结果可以看出,BRYOLOv4 算法增加了游泳者行为识别框架,不仅满足了泳池场景应用中的实时性要求,而且具有更高的检测精度。
2.6 讨论
本文所提出的溺水预警分析监测管理系统在溺水检测任务中的结构和性能方面可以推广到其他领域。检测过程分为2个阶段,旨在实时检测溺水人员,其精度高且方便。第一阶段,提取溺水人员,第二阶段,对提取的溺水人员进行游泳状态检测,分析了目标位置信息与游泳池游泳/溺水区的空间关系,以进一步确定游泳者的溺水或游泳行为。试验结果表明,该监测管理系统能够减少小型、密集分布目标和复杂背景的干扰所造成的错误。事实上,与游泳溺水具有相似特征的目标也存在于其他领域。例如,在人权领域医疗图像处理,病变的特征分布密集,其纹理模糊,并浸入复杂的背景。采用本文提出的监测管理系统可以提高检测病变的性能。此外,相应开发的系统可以直接使用网络检测平台,使用户能够更方便和及时地进行人机交互。同样,在医学影像处理领域,基于网络的检测平台也能够使患者和机器之间更及时和方便地沟通。因此,所研制的检测系统对于在复杂环境中需要实时、高精度、方便检测小型、密集分布的目标具有一定的参考价值。
3 结论
该研究提出1 个游泳运动员行为识别框架BR-YOLOv4,比较了不同检测方法的检测精度,分析了长池角和短池角两种相机角度以及不同游泳密度的检测效果。试验结果表明,BR-YOLOv4 算法在精度、误码率和遗漏率方面优于其他模型,在不同水下角度下具有较强的泛化能力,在高游泳密度下具有较高的精度。基于深度学习的游泳运动员行为识别框架可以显著减少水波、表面反射和阴影的影响,并可以准确检测游泳运动员的游泳和溺水行为。这种方法可以及时报警溺水行为,使救生员快速反应,降低公共游泳池溺水事故的发生率。