王 云
(深圳市云海易聯(lián)電子有限公司,廣東 深圳 518000)
隨著水庫開放程度不斷提高,大量人涌向水庫進行游泳[1]。但是,當人們享受游泳帶來的樂趣時,溺水已成為一個問題。溺水的原因是初學者無法在水中自由呼吸,難以保持身體平衡。掌握游泳技能的游泳者在突然抽筋和壓力下也會溺水[2]。目前,當出現(xiàn)溺水人員在水庫發(fā)生危險時,救生員處理緊急情況的能力較弱,且溺水游泳者的救援速度也很慢。受人類生理條件的限制,救生員很難長時間保持高度集中的注意力。長時間看游泳池水面也會使救生員感到頭暈[3]。因此,一些水庫使用攝像頭對水庫內(nèi)部和水下進行監(jiān)控,但是大多數(shù)是手動操作的,不僅耗費人力,而且監(jiān)控效果會受到人們情緒和疲勞等因素的影響,容易漏檢。然而,大多數(shù)研究都是關(guān)于檢測水中游泳者的。該方法對溺水者的檢測精度低,容易引起誤報。此外,在游泳池溺水行為檢測領(lǐng)域?qū)ι疃葘W習方法的研究很少。
因此,本文提出一種基于深度學習算法的水下攝像機游泳運動員行為識別監(jiān)測管理系統(tǒng)。該方法可以通過實時采集水下相關(guān)圖像和數(shù)據(jù),準確識別游泳者的游泳行為和溺水行為,并對溺水行為進行報警。進而提高救生員救援效率,保障游泳人員的生命安全。
本文的試驗數(shù)據(jù)是由某市水庫獲得的。水庫長50m,寬25m,深3m。攝像機數(shù)量為8 臺,2 臺水下攝像機為一組。攝像機對稱安裝在水下2.5m 的長邊池壁上,共有4 組攝像機[4]。每臺攝像機記錄5h 的視頻,其中8 臺共40h。游泳者在水中的手勢行為千差萬別,如果通過游泳者在水中的手勢行為來區(qū)分游泳者,不僅會增加標注工作量,還容易造成行為誤標注。為了減少人為因素對標注的影響,隨機選取2 個攝像機角度下的2000 幀游泳者圖像[5]。根據(jù)泳池中游泳者的分布情況,計算正常游泳者的大致游泳深度范圍。同時,通過攝像機共得到10185 幅圖像,并從這10185 幅圖像中隨機抽取9000 幅作為原始訓練圖像。剩下的1185 幅作為測試圖像[6]。
只利用YOLOv4 算法容易將在水面嬉戲的游泳者檢測為溺水者,將靠近水底的溺水者檢測為游泳者,導致游泳行為檢測誤判率較高。為了提高目標檢測的準確性[7],在游泳者行為識別模塊中開發(fā)了BR-YOLOv4 監(jiān)測管理系統(tǒng),根據(jù)目標與游泳池游泳/溺水區(qū)域的位置信息之間的空間位置關(guān)系來進一步判斷游泳者的行為。
1.2.1 坐標系
根據(jù)不同拍攝角度的泳池圖片,設(shè)定一條紅色符號線。符號線將圖片分為2 個部分[9],如圖1所示。紅色標志線的上部為正常游泳區(qū),下部為溺水區(qū)。為了計算目的,建立一個平面矩形坐標系。坐標原點位于圖像的左上角,坐標值隨著圖像的右邊和垂直向下而增大。此外,坐標(x,y)與圖片的分辨率有關(guān),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 面積重疊指數(shù)
如圖1所示,當游泳者邊界框和標志線重疊時,重疊區(qū)域可以劃分為梯形或三角形進行區(qū)域求解[8]。邊界框和游泳/溺水區(qū)域之間的區(qū)域重疊指數(shù)評估如公式(3)和公式(4)所示。
式中:Dvalue/Svalue為溺水/游泳區(qū)域內(nèi)的部分邊界框與整個邊界框的面積比。Darea/Sarea是指邊界框與溺水/游泳區(qū)重疊的區(qū)域。Stotal是游泳者邊界框的整個面積。
游泳和溺水行為是根據(jù)邊界框與游泳/溺水區(qū)域之間的重疊區(qū)域來識別的。游泳行為識別的具體過程如下。步驟1:攝像機讀取當前幀。使用YOLOv4 檢測模型對當前幀中的游泳者進行檢測,并獲得檢測對象邊界框的位置坐標和類別。步驟2:分析邊界框與水庫標志線之間的空間關(guān)系。如果邊界框與水庫標志線相交,就進行步驟1。如果邊界框與水池標志線不相交,就進入步驟2.1。導出判斷結(jié)果并判斷是否為最后一幀。如果不是,則讀取下一幀,然后返回步驟2.2 繼續(xù)檢測;如果是最后一幀,則停止檢測。步驟2.1:當邊界框與水庫的符號線相交時,根據(jù)公式計算Dvalue/Svalue的面積比。當閾值大于閾值1 時,目標類別正在游動;當Dvalue小于閾值1 且Dvalue 大于閾值2 時,表示目標類別正在溺水。否則,將保留原始的檢測結(jié)果。步驟2.2:當邊界框與水庫標志線不相交時,如果邊界框完全位于游泳區(qū)域,則判斷當前行為為游泳;如果邊界框完全位于溺水區(qū)域,則判斷當前行為為溺水。判別閾值一般應根據(jù)邊界框的屬性和游泳者的行為來確定。此外,這些閾值還會受到水庫深度和攝像機安裝位置的影響。在該試驗中,長水池場景的閾值1=0.52,閾值2 = 0.53。短水池情況下,閾值1=0.54,閾值2=0.56。
溺水預警分析監(jiān)測管理系統(tǒng)基于Windows 10 中的PyTorch(YOLOv5 模型中使用)和Darknet 框架(YOLOv3 和YOLOv4 模型中使用)。訓練參數(shù)如下:類別數(shù)為2608 像素×608 像素。批量大小等于16,訓練迭代次數(shù)為10000,學習率初始為0.001。
在模型的訓練階段,采用精度、查全率、mAP和每秒幀數(shù)(FPS)4 個評價指標對系統(tǒng)進行評價。mAP(平均平均精度)由精確度和查全率確定。以召回率為水平軸,以精度為垂直軸的曲線稱為P-R曲線,以P-R曲線下的面積為精度平均值(AP),所有目標類別的精度平均值的平均值為mAP值,如公式(5)和公式(6)所示。
式中:TP為檢測圖像中的某些行為被正確識別;FP為其他被錯誤識別的行為;FN為被錯誤識別為另一種行為。上述評價指標主要用于訓練后對模型進行評價。為了更準確地評價本文提出的游泳者行為識別框架,選擇了平均精度率(Mp)、平均錯誤率(Mf)和平均誤報率(Mm)作為檢測指標。不僅可以評估該框架的準確性,而且還可以定量分析游泳和溺水行為的報告漏報率和漏報率。
表1 為深度學習YOLOv3、BR-YOLOv4、YOLOv5 三種模型的訓練結(jié)果。在mAP指數(shù)方面,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 算法在識別準確率和識別速度方面都取得了令人滿意的結(jié)果,且該算法有助于提高準確率,集成了所有修改過的模塊,以實現(xiàn)最佳的檢測性能。為了進一步提高游泳者和溺水者的檢測精度,本文選擇深度學習BR-YOLOv4 算法作為游泳者行為識別的溺水預警分析監(jiān)測管理系統(tǒng)。
表1 三種算法的檢測結(jié)果
模型檢測結(jié)果中游泳和溺水行為的精度率(從低到高)為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 行為識別結(jié)果
總的來說,深度學習BR-YOLOv4 算法中溺水行為的平均誤報率和游泳行為的平均錯誤率都較高。其主要原因為BR-YOLOv4 算法無法將全部溺水行為有效識別,并存在檢測水面反射作為游泳行為的情況,從而導致較高的平均錯誤率,進一步表明BR-YOLOv4 算法在檢測過程中是可行和有效的。且YOLOv3 在游泳和溺水類別中的表現(xiàn)最差。YOLOV4 和YOLOV5 算法的Mf、Mm和Mp值非常接近,優(yōu)于YOLOv3,且可以有效降低第一階段留下的背景噪聲,從而提高檢測精度,進一步驗證本文所提出的高精度。同時,BRYOLOv4 算法在短池角度下仍然具有最好的檢測指標。通過分析表2,YOLO 算法與BR-YOLOv4 算法的Mf、Mm和Mp的變化幅度約為1%。由于游泳者的數(shù)量與在不同攝像機角度下的2 種行為存在差異,因此結(jié)果在正常范圍內(nèi)波動。其中,BR-YOLOv4 算法的檢測精度最高。
為了探究游泳者密度對模型準確性的影響,本節(jié)通過檢測兩種不同的游泳者密度來分析模型在不同游泳者密度下的檢測準確性。低游泳者密度的統(tǒng)計結(jié)果見表3。高游泳者密度的統(tǒng)計檢測結(jié)果見表4。
表3 低密度池角的行為識別結(jié)果
表4 高密度池角的行為識別結(jié)果
通過比較YOLOv3、YOLOv4、YOLOv5 和BR-YOLOv4 算法在高密度和低密度游泳者中的檢測效果,發(fā)現(xiàn)低密度游泳者的行為識別準確率明顯高于高密度游泳者。雖然高密度游泳者中的游泳者容易相互遮擋和重疊,導致算法對目標識別的干擾增加,但是BR-YOLOv4 算法對2 種行為識別的檢測效果都很好。從這3 種不同情況的試驗結(jié)果可以看出,BRYOLOv4 算法增加了游泳者行為識別框架,不僅滿足了泳池場景應用中的實時性要求,而且具有更高的檢測精度。
本文所提出的溺水預警分析監(jiān)測管理系統(tǒng)在溺水檢測任務中的結(jié)構(gòu)和性能方面可以推廣到其他領(lǐng)域。檢測過程分為2個階段,旨在實時檢測溺水人員,其精度高且方便。第一階段,提取溺水人員,第二階段,對提取的溺水人員進行游泳狀態(tài)檢測,分析了目標位置信息與游泳池游泳/溺水區(qū)的空間關(guān)系,以進一步確定游泳者的溺水或游泳行為。試驗結(jié)果表明,該監(jiān)測管理系統(tǒng)能夠減少小型、密集分布目標和復雜背景的干擾所造成的錯誤。事實上,與游泳溺水具有相似特征的目標也存在于其他領(lǐng)域。例如,在人權(quán)領(lǐng)域醫(yī)療圖像處理,病變的特征分布密集,其紋理模糊,并浸入復雜的背景。采用本文提出的監(jiān)測管理系統(tǒng)可以提高檢測病變的性能。此外,相應開發(fā)的系統(tǒng)可以直接使用網(wǎng)絡(luò)檢測平臺,使用戶能夠更方便和及時地進行人機交互。同樣,在醫(yī)學影像處理領(lǐng)域,基于網(wǎng)絡(luò)的檢測平臺也能夠使患者和機器之間更及時和方便地溝通。因此,所研制的檢測系統(tǒng)對于在復雜環(huán)境中需要實時、高精度、方便檢測小型、密集分布的目標具有一定的參考價值。
該研究提出1 個游泳運動員行為識別框架BR-YOLOv4,比較了不同檢測方法的檢測精度,分析了長池角和短池角兩種相機角度以及不同游泳密度的檢測效果。試驗結(jié)果表明,BR-YOLOv4 算法在精度、誤碼率和遺漏率方面優(yōu)于其他模型,在不同水下角度下具有較強的泛化能力,在高游泳密度下具有較高的精度。基于深度學習的游泳運動員行為識別框架可以顯著減少水波、表面反射和陰影的影響,并可以準確檢測游泳運動員的游泳和溺水行為。這種方法可以及時報警溺水行為,使救生員快速反應,降低公共游泳池溺水事故的發(fā)生率。