1. 引言
图像识别技术广阔应用于水文、安防、医疗、交通等领域,孙英豪等 [1] 研究了基于图像识别的无标尺水位测量技术,为河道和水库的水位实时测量提供了技术支持,杨宇等 [2] 引入目标追踪算法,实现了对特定动态目标的准确识别与追踪的功能。在本论文中,主要研究图像识别技术运用在水位测量中的运用。水位测量对于农田灌区和河流河道十分重要,它既能辅助实现水资源集约化,又能为防汛抗旱、水利工程的管理提供水情信息。
市面上已经陆续出现了以图像识别为核心的监测技术,成功实现了水位的自动读数,其工作原理主要是利用前端摄像头拍摄水尺照片,再将图像数据传回数据中心,但是,这个过程极其消耗数据流量。如果水位数据提前在前端就处理完毕,直接得到水位结果,就能极大地提升工作效率。
本论文研究的基于YOLOv5算法的水位智能监测系统,能弥补当前水位测量的缺陷。并且,在水位监测领域中,利用机器学习辅助预报水位的运用,已经有了诸多成功案例,张帆等 [3] 提出一种结合移动激光和视频图像处理技术的方法,去避免在测量中由于杂物和水渍的干扰问题,取得了不错的效果。李涛等 [4] 研究了人工智能技术在水利工程中的运用,并详细分析了人工智能技术的具体细节。
傅启凡等 [5] 提出了基于语义分割的视频水位监测方法,相对于传统监测方法,效果更佳。
YOLO算法是基于单阶段检测的目标检测算法之一,它把目标检测等价转换为一个回归问题。首先,将需要检测的图片调整为448 × 448大小,整体输送到CNN网络中,仅仅经过一个神经网络,该图片被划分成7 × 7的网格。它不同于RCNN模型,RCNN网络模型也就是通过SVM [6] 来进行分类操作。RCNN模型需要生成候选区域并对该区域进行分类,它直接将边界框所属类别和位置直接在输出层输出,输出结果是7 × 7 × 30的张量(tensor),30代表维度,从结果中可以知道对象的可能位置和置信度,最后采用NMS算法 [7] 选择出最可能的结果。基于以上原理,YOLO算法检测速度比传统算法更快,准确率也更高。
2. 目标识别算法
2.1. 目标对象分析
水位识别需要较高的精确度,所以,在采集水位测量图片时,考虑了不同时间段、距离、角度、环境等因素,采集不同场景的图片,保证数据多样性、真实性和严谨性。
![](//html.hanspub.org/file/8-1542911x7_hanspub.png?20230627091359970)
Figure 1. Real data acquisition and identification renderings
图1. 实景采集数据和识别效果图
本论文本次采集图片5000余张,如图1即为实景采集部分图片,取样水域、取样距离、取样角度、取样时间和取样光线均不同,数据集庞大,本论文研究仅选取图部分代表性图片。
2.2. 算法简介
传统方法有adaboost + harr、HOG + SVM等,虽然性能稳定,但是检测准确率相对较低,传统机器学习算法Two-stage,主要是Faster R-CNN和Mask R-CNN [8] ,它们对于小目标检测效果不佳,深度学习方法one-stage,主要是YOLO算法,YOLO算法从YOLOv1到YOLOv5,不断克服以前算法的不足,检测速度和精度不断提升,YOLOv5算法相对于YOLOv4算法,检测平均精度并没有提升,但是YOLOv5算法用户友好,均值权重文件更小,代码易读,模型训练和推理时间更快速。
2.3. 水位智能监测系统中YOLOv5算法的特点
2.3.1. 网络摄像头
网络摄像头连接树莓派单片机,树莓派单片机连接储能电池,储能电池连接太阳能电板,网络摄像头直接拍摄监测水尺。
2.3.2. 前端数据处理
利用单片机在前端集成将获取与处理数据合并,实现实时监测,确保了数据的真实性与可靠性。
2.3.3. 采用新型图像处理算法
采用YOLO识别算法,依靠大量素材进行机器学习与算法训练,以高效率得到准确的水位数据。
2.3.4. 信息转化
将图像信息转化为低数据量的文本,水位数据传输在水位监测技术中尤为重要,但传统的图像数据在通讯条件较差的农村地区有着巨大的局限性,项目将水位数据转变为低数据量的文本,具有更卓越的实际效果。
2.4. 水位智能监测系统介绍
如图2所示,水位智能监测系统的各个部件从编号1到编号9开始,编号1为风速风向测定仪,它与单片机相连接,用于实时风速监测拟合真实水位数据。编号2为太阳能电池板,用于全套设备的发电。编号3为智能网络摄像头,用于水位图像采集与网络传输。编号4为不锈钢杆件,用于支撑整体结构,固定并搭载太阳能电板、摄像头等设备,其表面进行热镀锌处理,防止受潮老化。编号5为树莓派单片机,作为处理图像数据,转化数据格式,软件控制的信息终端。编号6为大容量电池,储存太阳能,维持设备24小时正常工作。编号7为高强度发光器,用于夜间灯光照明。编号8为连通器挡板,用于减小由于波浪影响导致的水位偏差,保证水面稳定,其表面布满渗水孔,维持与外界水位一致。编号9为普通水,是被观测对象,其精度为1 cm。其实景模型图如图3所示。
水位智能监测系统的工作模式分为拍摄阶段、数据处理阶段和维护阶段。
在拍摄阶段中,智能网络摄像头2与集成单片机5相连,终端控制系统利用无线传输模块远程打开设备电源,智能网络摄像头2与集成单片机5开始工作,集成单片机5控制智能网络摄像头2连续拍摄普通水尺9得到多张水位图像数据图片。
在处理阶段中,集成单片机5利用嵌入的YOLO算法得到相应的图像模型,而后利用数据转换算法得到对应水位数据,并转化为文本数据封存。文本数据利用无线传输模块再次返回终端得到显示结果,无线传输模块设置在集成单片机顶部,且电脑终端与集成控制器之间通过无线传输模块利用中国移动传输。
在维护阶段中,主要是从电能储备、风向监控、光照保障、防止水波和设备固定等方面去处理。电能储备:设备初始时蓄电池6已由太阳能电池板2发电充满,且电能足以支持装置日常使用,蓄电池6和集成单片机5设置在电子装置盒内,蓄电池6为可充电电池,太阳能电池板2设置在不锈钢杆件4左边且与蓄电池6连接。风向监控:风速风向测定仪1装配于智能网络摄像头2顶部,用以监测实时风速拟合真实水位数据。光照保障:高强度发光器7集成于智能网络摄像头2中,用于夜间或灯光照明不良时刻的水尺拍摄。防止水波:普通水尺9在防浪板8中,防止水面起伏导致测量数据出现严重偏差。设备固定:智能网络摄像头2嵌套在不锈钢杆件4上,并与集成单片机5相连,实时拍摄普通水尺9水位高度并传输至集成单片机5中。
2.5. YOLOv5算法在水位智能监测系统中的运用步骤
2.4小节已经对水位智能监测系统进行了流程化的描述,具体YOLOv5算法在该系统中的技术方案将在以下环节进行展开,本实施细仅为了说明细节,不是为了限制本论文的保护范围。研究步骤包括水尺图片采集、图像前端处理、水位测算、文本数据转换等。发明内容:提供基于YOLO算法的图像识别方法,通过对摄像头采集到的水尺图片进行图像处理。
2.5.1. 水尺图片采集
智能网络摄像头2与集成单片机5相连,终端控制系统利用无线传输模块远程打开设备电源,智能网络摄像头2与集成单片机5开始工作,集成单片机5控制智能网络摄像头2连续拍摄普通水尺9得到多张水位图像数据图片。
2.5.2. 图像前端处理
人工识别若干水尺单位刻度rect,水尺与水面基线交界处rect-max并进行图像标注。将图像标注的训练集与验证集导入yolov5s.yaml进行机器学习,得到初始算法模型,然后,集成单片机5利用嵌入的YOLO算法得到相应的图像模型。
2.5.3. 水位测算
得到相应的图像模型之后,利用数据转换算法得到对应水位数据,并转化为文本数据封存。无线传输模块设置在集成单片机顶部,且电脑终端与集成控制器13之间通过无线传输模块利用中国移动传输,文本数据利用无线传输模块再次返回终端得到显示结果。
2.5.4. 文本数据转换
正常水尺识别分析。由摄像头距离水尺距离计算固定视距比例J,然后计算图上“E”的固定长度L0,由rect-max长度计算水位数据L。
水尺结垢,遮挡条件下识别分析。由算法训练模型可得到水尺单个“E”图像长度Li (
),“E”个数n,以及水尺露出水面图像长度Lall,舍去最大值与最小值,计算图像平均长度,
,计算图像长度与实际长度比例关系J:J = L0/5,据比例关系计算水尺露出水面实际长度L:
。A为风速经验系数,B为视距经验系数,C为温度经验系数。
2.6. YOLO损失函数
在公式中代表的含义是:预测对象的x轴与y轴的直角坐标内的数值;
在公式中代表的含义是:x, y在直角坐标系中的实际坐标数值;
在公式中代表的含义是:预测对象的宽度值和高度值;
在公式中代表的含义是:实际对象的宽度值和高度值;
为预测对象的类别,
为实际对象的类别;
公式第四、五排分别预测项目背景置信度和对象类别。
为预测对象的置信度,
为实际对象的置信度;
和
是权值系数,目的是平衡各项的Loss比重。取值分别为5和0.5。
B和S分别表示单个矩形边界框和单个网格单元,obj和noobj分别代表存在和不存在目标对象。
2.7. 模型的训练和调整
数据集内有520张水位图像,5112种测量实况。其中380张用来训练和验证模型的数量分别为380,140,约为3:1。
2.7.1. 试验运行平台
本文中所有测试和训练都在微型电脑树莓派上进行,8 GB内存,配置linux系统,同时安装配置了anaconada [9] 环境。训练好的算法模型加载进入树莓派,项目所有程序由python语言编写,Pytorch [10] 框架,使用树莓派定时控制摄像头拍照,然后识别图像数据直接得到水位文本数据,最后通过无线网络模块传回数据终端。
在CPU和GPU [11] 上都需要进行模型的测试,训练时权值每更新一轮,就将BN进行正则化 [12] ,每一层都加入丢弃层,丢弃比值1:2,动量0.95,权值衰减为0.0005,起始学习率为0.1%,迭代5千次后,衰减为原来的0.1,并且在一开始设置burn_in参数,保证模型稳定性,其值为1 000,实际计算如下:
。
2.7.2. 数据集预处理
用矩形框对图像进行人工标注之后,然后用目标对象的实际数据分别比上图像的宽度值、高度值,得出一组0~1范围分布的结果,方便更快更好地读取不同类型的图像,这组数据为:类别序列index,目标中心坐标x和y,宽度高度w, h,边框右下角坐标x1, y1,左上角坐标x2, y2。
在训练前,需要数据增强,微调色调、曝光和色量的变化范围,最终生成61,200张图片对象供训练使用。还需计算出锚点的预训练数值。
2.7.3. 模型的测试与评估
最终模型训练训练图像61,200张,耗时4 h,Loss变化图如图4所示。可以看出,随着迭代次数的增加,box_loss和obj_loss的值无限趋于0.02,cls_loss无限趋于0,准确率在不断提高。
![](//html.hanspub.org/file/8-1542911x26_hanspub.png?20230627091359970)
Figure 4. Diagram of the results file
图4. Results文件图表
在本论文中使用召回率recall [9] ,准确率precision [13] ,IOU和mAP [14] 来评估训练好的模型。
TP:真正样本量;
FP:假正样本量;
FN:假负样本量;
C:类别数量;
N:引用阈值的量;
K:阈值;
P(k):准确率;
R(k):召回率。
通过mAP值找出性能最优的模型。然后调整阈值、召回率、准确率和IOU等值,使之满足监测需求。
3. 模型试验结果分析
用mAP值去评估训练好的模型整体性能,在mAP值最大的模型中,比较不同阈值下召回率、准确率和IOU [15] 的改变量,确定最优阈值,然后对不同环境下的水位进行检测,并与其他算法进行横向对比。
3.1. 最优模型的寻找
从众多模型中找出mAP最大的模型,由图4可知,稳定后的metrics/mAP_0.5高达0.96,metrics/mAP_0.5:0.95。如图5所示,PR_curve [16] 曲线很稳定,波动幅度很小,进一步说明此次训练的效果很好。
3.2. 类别阈值的选择
阀值取0.5,结合准确率、召回率、IOU和F1指标。
F1是衡量指标,可以看到all classes 0.97 at 0.707,也就是说,所有类别的判断精度大约在0.97左右。rect的性能略优于rect-max,但是两者结果无限逼近,rect代表人工识别若干水尺单位刻度,rect-max代表水尺与水面基线交界处。
图6即为F1结果图,此时准确率和召回率均大于0.97,F1值也表现优异,模型检验结果良好。
3.3. 实际效果的检验
3.3.1. 不同测量地点的对比试验
![](Images/Table_Tmp.jpg)
Table 1. Experimental results of four algorithms at different measurement sites
表1. 四种算法对不同测量地点的实验结果
3.3.2. 不同光照角度的对比试验
![](Images/Table_Tmp.jpg)
Table 2. Experimental results of the four algorithms under different lighting conditions
表2. 四种算法对不同光照条件下的实验结果
3.3.3. 不同测量时间的对比试验
![](Images/Table_Tmp.jpg)
Table 3. Experimental results of four algorithms for different measurement times
表3. 四种算法对不同测量时间的实验结果
3.3.4. 不同天气状况的对比试验
![](Images/Table_Tmp.jpg)
Table 4. Experimental results of four algorithms on different weather conditions
表4. 四种算法对不同天气状况的实验结果
表1~4,分别展示了YOLOv4 [17] 、YOLOv5 [18] 、hog + svm [19] 和Faster RCNN [20] 算法在不同工况下的表现,数据显示,在所有工况条件下,YOLOv5算法和YOLOv4算法效果甚好,Faster RCNN算法整体表现名列前茅,HOG + SVM算法准确率最低,YOLOv5算法平均精度略低于YOLOv4,但是YOLOv5算法推理时间更短,YOLOv5算法检测100幅图像,模型在GPU和CPU下分别花费了1.5 s和12.5 s,平均每幅图像检测时间为15.00 ms和125.00 ms。由于水位在一定时间内,处于稳定的高度,变化频率不大,所以能够满足实际要求。
4. 总结
当前水位图像识别技术,利用前端摄像头拍摄照片,再传回数据中心进行处理,这个过程比较费时间和流量,本文论述了基于YOLOv5算法的水位智能监测系统,提供了在前端识别处理水位数据,并将水位数据转化为文本进行传输,极大的降低了传输成本。
本论文使用了YOLOv5算法,其依靠大量素材进行机器学习与算法训练之后才得到,除此之外之外,还创造性地升级了实验设备。网络摄像头连接树莓派单片机,就可以直接拍摄监测水尺。单片机的特点是,体型小巧,功能强大,数据处理能力强。单片机将获取与处理数据进行合并,确保了数据的真实性。在信息转化方面,将图像信息转化为低数据量的文本,降低了传输成本,具有更卓越的实际效果。
为了证明YOLOv5算法在水位测量中的准确性,在实验环节,分别使用了YOLOv4、hog + svm和Faster RCNN三种算法进行结果对比,YOLOv5算法的mAP值和准确率等指标均表现优异,F1值高于Faster RCNN将近4%,高于HOG + SVM将近12%,在GPU和CPU环境下,单张图片检测时间分别为15 ms、125 ms。
通过四种算法在该项目中的量化表现,可以得出,YOLOv5算法在水位智能监测系统中的准确性能满足实际需求,且运算速度最优,具有高识别率和鲁棒性。