APP下载

基于计算机视觉的水厂污水浑浊度检测算法的设计与实现

2024-07-09陈铭轩

电脑知识与技术 2024年15期
关键词:计算机视觉

陈铭轩

关键词:计算机视觉;污水浑浊度;图像检测

0引言

在自来水厂的污水处理流程中,脱泥装置是一个非常重要的组成部分。它可以实现固液分离,从而产生可处理的污泥,进而改善出水质量,保护水体生态,以便后续的处理[1]。在常规的自来水厂中,通常由工程师对污水池的状态进行监控,进而调整控制系统中的药水供给、污水流量、沉淀时间等参数。如果污水脱泥过程处理不够彻底,则会给后续的处理步骤带来困难,同时也有可能会因为污水排放不达标,进而造成环境污染[2]。因此,能够对自来水厂的污水脱泥装置中污水的状态进行及时的检测与监控具有重要意义。

传统的污水脱泥装置中的污水状态监控通常由经验丰富的工程师来完成。现代的污水检测已经可以对PLC中传感器的数据通过网络进行监测[3],甚至网络监控的应用使得将污水监控从现场搬到监控室[4],但污水状态监控依然依赖于人力。由于脱泥的过程是一个7×24小时的过程,因此,工程师通常面临夜班的问题。尽管污水状态并不需要时时刻刻监控,但是长期枯燥的监控依然会使得工程师变得疲惫。

当下,计算机视觉在人工智能的帮助下得以飞速发展,它具有更好的实时性以及更优的精度[5]。这使得利用计算机视觉的相关技术对自来水厂的脱泥装置中污水的浑浊与否进行检测成为可能。现阶段,已经有多种方法可以采集到现场的图像[6]。通过调用API,获取布置在现场监控的图像,并对其进行预处理、裁剪、特征提取、机器学习,从而完成对污水状态的实时检测,从而极大地提升污水处理的响应速度,进而提升污水处理的质量[7]。

基于此,本文引入计算机视觉,对污水状态识别算法进行深入研究,实现污水状态的准确识别、快速响应,为提高污水处理效率与质量作出贡献。

1水厂脱泥罐污水池水面浑浊检测算法研究

1.1水厂脱泥罐污水池水面的图像采集

在进行水厂脱泥罐污水池的浑浊检测之前,图像的获取是第一步。水厂本身已经采用第三方的工业摄像头进行污水监控,并可以在PC端及手机端实时进行查看。但是对于机器学习而言,需要有规律间隔地对污水池的图像进行采集,因此人工进行采集的方法显然不适用。

基于Python进行自动化采集的办法应运而生。通过使用第三方厂家提供的网站API,使用OpenCV对摄像头的视频流进行读取,并从中截取一帧作为当前的图像。结合Python自动化的特性,每隔一段设置的时间进行一次采集。这样,程序可以在后台自动地对污水池的图像进行采集,既解决了机器学习进行识别的数据源问题,也为之后的自动化定时识别打下基础。

1.2水厂脱泥罐污水池监控画面预处理

1.2.1画面裁剪

在水厂脱泥罐污水池浑浊检测算法中,画面裁剪是第一步。由于普通的监控通常有监控的时间在画面,同时对于脱泥罐而言,污水池上通常会有搅拌装置。这些内容并不是污水的一部分,它们会对污水的识别造成不良影响,因此需要从画面中删去。由于摄像头的字符位置是固定的,安装位置也是固定的,因此只需要从实际的图片中对需要的污水区域进行截取即可。

1.2.2画面的灰度化

由于水厂脱泥设备是7×24小时运作的,因此昼夜变化会使得监控摄像头在普通模式与红外线模式之间进行切换。这种切换反映在如果监控摄像头开启了红外模式,即使采集到的画面是以RGB形式表现的,但实际图像也只是一张灰度图片。因此为了使得消除环境影响,需要统一将图像进行灰度化。在这里默认使用了OpenCV中的RGB2GRAY函数。这个函数的原理是按照一定比例将RGB三个通道中[0,255]的值混合,形成一个新的值,该值即为灰度图中灰度通道的值[8]。公式如下:

1.3水厂脱泥罐污水池监控画面的特征提取

机器学习的原理实质上是对画面的特征进行区分和学习。当画面的特征存在明显差异时,机器学习模型可以有效地进行区分;反之,若画面特征无法准确区分两类事物,即使应用了机器学习,效果可能不尽如人意。因此,确定具有显著差异的画面特征至关重要。

在污水池水面浑浊与否的检测中,机器学习模型需要区分浑浊的污水和清澈的污水两类情况。在实际图像中,由于污水通常富含泥沙而导致水质变浑浊。这些泥沙在白天往往呈现为黑色,而在夜晚,在监控摄像头的红外模式下,则常呈现为亮白的反光点。这种变化导致泥沙区域与周围清澈水面之间产生明显对比,不论是白天还是黑夜,对比污水池清澈情况,这些黑色区域和白色区域成为画面的显著特征。

为了提取这种黑白特征,考虑到水厂现场设备算力有限,无法运用复杂的机器学习或神经网络算法,将图片的直方图作为特征选择是一个不错的方案。直方图将统计图像中像素点的不同颜色情况,是一种常用的特征描述方法。统计方法如下:

其中f(c)为像素点值为c的像素点数量,g(x,y)为图片在第x行,第y列的灰度值,image为整个图片的像素点集合。这种像素点的统计特征在暗色像素与接近白色的像素数量在理论上会多于普通的图片,即在特定的区域产生一定的峰值。

图1中不难发现在清澈的图片有大量的像素点值在150~200区间,而浑浊的图片则在50~100和200+有较多的像素点。这说明了统计像素点值的数量这一特征可以确确实实区分开水面的浑浊与否。

提取之后的图片特征将会以csv的形式存储在文件中,格式如表1所示。

1.4机器学习模型的选择与训练策略

将图片的特征提取出来以后,接下来的任务就是针对这些提取出来的特征,来判断污水浑浊与否。在Python的sklearn包中有若干的机器学习模型可供选择。通常来说,模型的选择没有一成不变的定式,最终还是需要根据不同模型的不同测试结果来进行选择。因为是对图像中的数字特征进行分类,同时理论上不同的数字特征又决定了不同的分类,即清澈与浑浊,因此决策树就变成了一个很好的选择。它的优化版本随机森林也有可能是一个很好的选择。在此基础上,本文也使用了KNN和Adaboost模型来进行测试。

由于采集时间较短,数据量有限,因此采用K折交叉验证(KFold)的训练方式来进行训练。KFold通过把数据集划分成相等的n份,每一次在这n份中取1份作为测试集,剩下的作为训练集,以此重复n次。相比较通常的划分方式,这种方式将有限的数据量进行了扩充,同时也减少了过拟合的发生,有助于提高训练的准确率[9]。KFold的训练过程如图2所示。

2实验分析

2.1实验环境

实验所使用到的软件包及版本号如下:1)Python3.10。2)opencv4.6.0。3)sklearn1.1.1。

共有268张人工挑选的图片参与本次训练,其中清澈的图片有101张,标注为0;浑浊的图片有167张,标注为1。

2.2不带有KFold的训练

首先,采用一般的训练方式,即采用sklearn的包,将数据集按照7∶3划分为两份,7的那份用作训练集,3的那份用作测试集。由于sklearn对于数据的划分通常是随机的,因此使用sklearn进行了一个10次的循环,并对不同的模型之间的F1-score进行比较。F1-score是一个对于模型综合性能的较好评判标准[10],其计算方法为:

由此可见,不使用KFold训练方法的模型具有很大的随机性。同一个模型中,例如RandomForest,由于数据选取的原因,表现最好的时候与表现最差的时候甚至能够达到15%左右的差距。同时观察1、3、5、6组的数据,可以发现对于不同的数据划分情况,模型的表现也各不相同,但是从整体趋势上可以看出,RandomForest模型和AdaBoost模型的表现较好,而KNN的表现较差。

2.3带有KFold的训练

本文使用KFold的方式,来对数据集进行训练。

取KFold的次数为5,也就是说数据选择器会将整个数据集划分为5份,每次用其中的1份作为测试集,剩下的作为训练集。测试的F1-score如图4所示。

由图4可见,RandomForest、AdaBoost、Decision?Tree三个模型的F1-score都随着测试轮数的增加而增加。而KNN模型则在测试的后段表现出了明显的下降,这可能来自于模型的拟合能力不足。比较各个模型的F1-Score,可以发现RandomForest模型无论是在训练进度还是最后的训练结果都是四个模型中最好的。而AdaBoost和DecisionTree在训练过程中不相上下,同时在训练的结果中DecisionTree甚至要稍好于AdaBoost。

运用了KFold之后,可以发现模型的性能变得更强了。同时在多次运行训练与测试期间,模型的训练结果并没有发生显著变化,因此该训练方法的稳定性也要显著好于不使用KFold。但是部分模型在测试后期发生了F1-score偏高,甚至等于1的情形。这种情况看似模型性能很好,但是依旧有可能产生过拟合等情况,因此还需要在今后的实际使用中进行验证。

3结束语

基于计算机视觉的水厂污水自动识别使得污水监控流程从半自动化到自动化,不仅可以节约人工,提高生产力,还为高质量出水,建设水体生态提供了良好的保障。本文的研究为水厂脱泥罐中的污水浑浊与否提供了良好的检测率,大大提高了污水浑浊的检出率和及时性。然而由于现实中的情况较为复杂,同时污水的浑浊与否也没有一个固定的标准,即便是工程师也只能根据实际情况加以判断。因此在今后的研究中应该推动建立污水浑浊的标准,或将浑浊程度进行量化,推动算法的标准化与规范化,为水厂的污水处理提供更加显著的价值与贡献。

猜你喜欢

计算机视觉
基于光流技术的障碍物检测方法
无人驾驶小车定点追踪系统的设计与实现
基于深度卷积神经网络的物体识别算法
双目摄像头在识别物体大小方面的应用
机器视觉技术发展及其工业应用
危险气体罐车液位计算机视觉监控识别报警系统设计
基于计算机视觉的细小颗粒团重量测量的研究
对于计算机视觉商业化方向的研究
基于Matlab的人脸检测实验设计
现代目标识别算法综述