陳銘軒
關(guān)鍵詞:計(jì)算機(jī)視覺(jué);污水渾濁度;圖像檢測(cè)
0引言
在自來(lái)水廠的污水處理流程中,脫泥裝置是一個(gè)非常重要的組成部分。它可以實(shí)現(xiàn)固液分離,從而產(chǎn)生可處理的污泥,進(jìn)而改善出水質(zhì)量,保護(hù)水體生態(tài),以便后續(xù)的處理[1]。在常規(guī)的自來(lái)水廠中,通常由工程師對(duì)污水池的狀態(tài)進(jìn)行監(jiān)控,進(jìn)而調(diào)整控制系統(tǒng)中的藥水供給、污水流量、沉淀時(shí)間等參數(shù)。如果污水脫泥過(guò)程處理不夠徹底,則會(huì)給后續(xù)的處理步驟帶來(lái)困難,同時(shí)也有可能會(huì)因?yàn)槲鬯欧挪贿_(dá)標(biāo),進(jìn)而造成環(huán)境污染[2]。因此,能夠?qū)ψ詠?lái)水廠的污水脫泥裝置中污水的狀態(tài)進(jìn)行及時(shí)的檢測(cè)與監(jiān)控具有重要意義。
傳統(tǒng)的污水脫泥裝置中的污水狀態(tài)監(jiān)控通常由經(jīng)驗(yàn)豐富的工程師來(lái)完成?,F(xiàn)代的污水檢測(cè)已經(jīng)可以對(duì)PLC中傳感器的數(shù)據(jù)通過(guò)網(wǎng)絡(luò)進(jìn)行監(jiān)測(cè)[3],甚至網(wǎng)絡(luò)監(jiān)控的應(yīng)用使得將污水監(jiān)控從現(xiàn)場(chǎng)搬到監(jiān)控室[4],但污水狀態(tài)監(jiān)控依然依賴于人力。由于脫泥的過(guò)程是一個(gè)7×24小時(shí)的過(guò)程,因此,工程師通常面臨夜班的問(wèn)題。盡管污水狀態(tài)并不需要時(shí)時(shí)刻刻監(jiān)控,但是長(zhǎng)期枯燥的監(jiān)控依然會(huì)使得工程師變得疲憊。
當(dāng)下,計(jì)算機(jī)視覺(jué)在人工智能的幫助下得以飛速發(fā)展,它具有更好的實(shí)時(shí)性以及更優(yōu)的精度[5]。這使得利用計(jì)算機(jī)視覺(jué)的相關(guān)技術(shù)對(duì)自來(lái)水廠的脫泥裝置中污水的渾濁與否進(jìn)行檢測(cè)成為可能?,F(xiàn)階段,已經(jīng)有多種方法可以采集到現(xiàn)場(chǎng)的圖像[6]。通過(guò)調(diào)用API,獲取布置在現(xiàn)場(chǎng)監(jiān)控的圖像,并對(duì)其進(jìn)行預(yù)處理、裁剪、特征提取、機(jī)器學(xué)習(xí),從而完成對(duì)污水狀態(tài)的實(shí)時(shí)檢測(cè),從而極大地提升污水處理的響應(yīng)速度,進(jìn)而提升污水處理的質(zhì)量[7]。
基于此,本文引入計(jì)算機(jī)視覺(jué),對(duì)污水狀態(tài)識(shí)別算法進(jìn)行深入研究,實(shí)現(xiàn)污水狀態(tài)的準(zhǔn)確識(shí)別、快速響應(yīng),為提高污水處理效率與質(zhì)量作出貢獻(xiàn)。
1水廠脫泥罐污水池水面渾濁檢測(cè)算法研究
1.1水廠脫泥罐污水池水面的圖像采集
在進(jìn)行水廠脫泥罐污水池的渾濁檢測(cè)之前,圖像的獲取是第一步。水廠本身已經(jīng)采用第三方的工業(yè)攝像頭進(jìn)行污水監(jiān)控,并可以在PC端及手機(jī)端實(shí)時(shí)進(jìn)行查看。但是對(duì)于機(jī)器學(xué)習(xí)而言,需要有規(guī)律間隔地對(duì)污水池的圖像進(jìn)行采集,因此人工進(jìn)行采集的方法顯然不適用。
基于Python進(jìn)行自動(dòng)化采集的辦法應(yīng)運(yùn)而生。通過(guò)使用第三方廠家提供的網(wǎng)站API,使用OpenCV對(duì)攝像頭的視頻流進(jìn)行讀取,并從中截取一幀作為當(dāng)前的圖像。結(jié)合Python自動(dòng)化的特性,每隔一段設(shè)置的時(shí)間進(jìn)行一次采集。這樣,程序可以在后臺(tái)自動(dòng)地對(duì)污水池的圖像進(jìn)行采集,既解決了機(jī)器學(xué)習(xí)進(jìn)行識(shí)別的數(shù)據(jù)源問(wèn)題,也為之后的自動(dòng)化定時(shí)識(shí)別打下基礎(chǔ)。
1.2水廠脫泥罐污水池監(jiān)控畫面預(yù)處理
1.2.1畫面裁剪
在水廠脫泥罐污水池渾濁檢測(cè)算法中,畫面裁剪是第一步。由于普通的監(jiān)控通常有監(jiān)控的時(shí)間在畫面,同時(shí)對(duì)于脫泥罐而言,污水池上通常會(huì)有攪拌裝置。這些內(nèi)容并不是污水的一部分,它們會(huì)對(duì)污水的識(shí)別造成不良影響,因此需要從畫面中刪去。由于攝像頭的字符位置是固定的,安裝位置也是固定的,因此只需要從實(shí)際的圖片中對(duì)需要的污水區(qū)域進(jìn)行截取即可。
1.2.2畫面的灰度化
由于水廠脫泥設(shè)備是7×24小時(shí)運(yùn)作的,因此晝夜變化會(huì)使得監(jiān)控?cái)z像頭在普通模式與紅外線模式之間進(jìn)行切換。這種切換反映在如果監(jiān)控?cái)z像頭開(kāi)啟了紅外模式,即使采集到的畫面是以RGB形式表現(xiàn)的,但實(shí)際圖像也只是一張灰度圖片。因此為了使得消除環(huán)境影響,需要統(tǒng)一將圖像進(jìn)行灰度化。在這里默認(rèn)使用了OpenCV中的RGB2GRAY函數(shù)。這個(gè)函數(shù)的原理是按照一定比例將RGB三個(gè)通道中[0,255]的值混合,形成一個(gè)新的值,該值即為灰度圖中灰度通道的值[8]。公式如下:
1.3水廠脫泥罐污水池監(jiān)控畫面的特征提取
機(jī)器學(xué)習(xí)的原理實(shí)質(zhì)上是對(duì)畫面的特征進(jìn)行區(qū)分和學(xué)習(xí)。當(dāng)畫面的特征存在明顯差異時(shí),機(jī)器學(xué)習(xí)模型可以有效地進(jìn)行區(qū)分;反之,若畫面特征無(wú)法準(zhǔn)確區(qū)分兩類事物,即使應(yīng)用了機(jī)器學(xué)習(xí),效果可能不盡如人意。因此,確定具有顯著差異的畫面特征至關(guān)重要。
在污水池水面渾濁與否的檢測(cè)中,機(jī)器學(xué)習(xí)模型需要區(qū)分渾濁的污水和清澈的污水兩類情況。在實(shí)際圖像中,由于污水通常富含泥沙而導(dǎo)致水質(zhì)變渾濁。這些泥沙在白天往往呈現(xiàn)為黑色,而在夜晚,在監(jiān)控?cái)z像頭的紅外模式下,則常呈現(xiàn)為亮白的反光點(diǎn)。這種變化導(dǎo)致泥沙區(qū)域與周圍清澈水面之間產(chǎn)生明顯對(duì)比,不論是白天還是黑夜,對(duì)比污水池清澈情況,這些黑色區(qū)域和白色區(qū)域成為畫面的顯著特征。
為了提取這種黑白特征,考慮到水廠現(xiàn)場(chǎng)設(shè)備算力有限,無(wú)法運(yùn)用復(fù)雜的機(jī)器學(xué)習(xí)或神經(jīng)網(wǎng)絡(luò)算法,將圖片的直方圖作為特征選擇是一個(gè)不錯(cuò)的方案。直方圖將統(tǒng)計(jì)圖像中像素點(diǎn)的不同顏色情況,是一種常用的特征描述方法。統(tǒng)計(jì)方法如下:
其中f(c)為像素點(diǎn)值為c的像素點(diǎn)數(shù)量,g(x,y)為圖片在第x行,第y列的灰度值,image為整個(gè)圖片的像素點(diǎn)集合。這種像素點(diǎn)的統(tǒng)計(jì)特征在暗色像素與接近白色的像素?cái)?shù)量在理論上會(huì)多于普通的圖片,即在特定的區(qū)域產(chǎn)生一定的峰值。
圖1中不難發(fā)現(xiàn)在清澈的圖片有大量的像素點(diǎn)值在150~200區(qū)間,而渾濁的圖片則在50~100和200+有較多的像素點(diǎn)。這說(shuō)明了統(tǒng)計(jì)像素點(diǎn)值的數(shù)量這一特征可以確確實(shí)實(shí)區(qū)分開(kāi)水面的渾濁與否。
提取之后的圖片特征將會(huì)以csv的形式存儲(chǔ)在文件中,格式如表1所示。
1.4機(jī)器學(xué)習(xí)模型的選擇與訓(xùn)練策略
將圖片的特征提取出來(lái)以后,接下來(lái)的任務(wù)就是針對(duì)這些提取出來(lái)的特征,來(lái)判斷污水渾濁與否。在Python的sklearn包中有若干的機(jī)器學(xué)習(xí)模型可供選擇。通常來(lái)說(shuō),模型的選擇沒(méi)有一成不變的定式,最終還是需要根據(jù)不同模型的不同測(cè)試結(jié)果來(lái)進(jìn)行選擇。因?yàn)槭菍?duì)圖像中的數(shù)字特征進(jìn)行分類,同時(shí)理論上不同的數(shù)字特征又決定了不同的分類,即清澈與渾濁,因此決策樹就變成了一個(gè)很好的選擇。它的優(yōu)化版本隨機(jī)森林也有可能是一個(gè)很好的選擇。在此基礎(chǔ)上,本文也使用了KNN和Adaboost模型來(lái)進(jìn)行測(cè)試。
由于采集時(shí)間較短,數(shù)據(jù)量有限,因此采用K折交叉驗(yàn)證(KFold)的訓(xùn)練方式來(lái)進(jìn)行訓(xùn)練。KFold通過(guò)把數(shù)據(jù)集劃分成相等的n份,每一次在這n份中取1份作為測(cè)試集,剩下的作為訓(xùn)練集,以此重復(fù)n次。相比較通常的劃分方式,這種方式將有限的數(shù)據(jù)量進(jìn)行了擴(kuò)充,同時(shí)也減少了過(guò)擬合的發(fā)生,有助于提高訓(xùn)練的準(zhǔn)確率[9]。KFold的訓(xùn)練過(guò)程如圖2所示。
2實(shí)驗(yàn)分析
2.1實(shí)驗(yàn)環(huán)境
實(shí)驗(yàn)所使用到的軟件包及版本號(hào)如下:1)Python3.10。2)opencv4.6.0。3)sklearn1.1.1。
共有268張人工挑選的圖片參與本次訓(xùn)練,其中清澈的圖片有101張,標(biāo)注為0;渾濁的圖片有167張,標(biāo)注為1。
2.2不帶有KFold的訓(xùn)練
首先,采用一般的訓(xùn)練方式,即采用sklearn的包,將數(shù)據(jù)集按照7∶3劃分為兩份,7的那份用作訓(xùn)練集,3的那份用作測(cè)試集。由于sklearn對(duì)于數(shù)據(jù)的劃分通常是隨機(jī)的,因此使用sklearn進(jìn)行了一個(gè)10次的循環(huán),并對(duì)不同的模型之間的F1-score進(jìn)行比較。F1-score是一個(gè)對(duì)于模型綜合性能的較好評(píng)判標(biāo)準(zhǔn)[10],其計(jì)算方法為:
由此可見(jiàn),不使用KFold訓(xùn)練方法的模型具有很大的隨機(jī)性。同一個(gè)模型中,例如RandomForest,由于數(shù)據(jù)選取的原因,表現(xiàn)最好的時(shí)候與表現(xiàn)最差的時(shí)候甚至能夠達(dá)到15%左右的差距。同時(shí)觀察1、3、5、6組的數(shù)據(jù),可以發(fā)現(xiàn)對(duì)于不同的數(shù)據(jù)劃分情況,模型的表現(xiàn)也各不相同,但是從整體趨勢(shì)上可以看出,RandomForest模型和AdaBoost模型的表現(xiàn)較好,而KNN的表現(xiàn)較差。
2.3帶有KFold的訓(xùn)練
本文使用KFold的方式,來(lái)對(duì)數(shù)據(jù)集進(jìn)行訓(xùn)練。
取KFold的次數(shù)為5,也就是說(shuō)數(shù)據(jù)選擇器會(huì)將整個(gè)數(shù)據(jù)集劃分為5份,每次用其中的1份作為測(cè)試集,剩下的作為訓(xùn)練集。測(cè)試的F1-score如圖4所示。
由圖4可見(jiàn),RandomForest、AdaBoost、Decision?Tree三個(gè)模型的F1-score都隨著測(cè)試輪數(shù)的增加而增加。而KNN模型則在測(cè)試的后段表現(xiàn)出了明顯的下降,這可能來(lái)自于模型的擬合能力不足。比較各個(gè)模型的F1-Score,可以發(fā)現(xiàn)RandomForest模型無(wú)論是在訓(xùn)練進(jìn)度還是最后的訓(xùn)練結(jié)果都是四個(gè)模型中最好的。而AdaBoost和DecisionTree在訓(xùn)練過(guò)程中不相上下,同時(shí)在訓(xùn)練的結(jié)果中DecisionTree甚至要稍好于AdaBoost。
運(yùn)用了KFold之后,可以發(fā)現(xiàn)模型的性能變得更強(qiáng)了。同時(shí)在多次運(yùn)行訓(xùn)練與測(cè)試期間,模型的訓(xùn)練結(jié)果并沒(méi)有發(fā)生顯著變化,因此該訓(xùn)練方法的穩(wěn)定性也要顯著好于不使用KFold。但是部分模型在測(cè)試后期發(fā)生了F1-score偏高,甚至等于1的情形。這種情況看似模型性能很好,但是依舊有可能產(chǎn)生過(guò)擬合等情況,因此還需要在今后的實(shí)際使用中進(jìn)行驗(yàn)證。
3結(jié)束語(yǔ)
基于計(jì)算機(jī)視覺(jué)的水廠污水自動(dòng)識(shí)別使得污水監(jiān)控流程從半自動(dòng)化到自動(dòng)化,不僅可以節(jié)約人工,提高生產(chǎn)力,還為高質(zhì)量出水,建設(shè)水體生態(tài)提供了良好的保障。本文的研究為水廠脫泥罐中的污水渾濁與否提供了良好的檢測(cè)率,大大提高了污水渾濁的檢出率和及時(shí)性。然而由于現(xiàn)實(shí)中的情況較為復(fù)雜,同時(shí)污水的渾濁與否也沒(méi)有一個(gè)固定的標(biāo)準(zhǔn),即便是工程師也只能根據(jù)實(shí)際情況加以判斷。因此在今后的研究中應(yīng)該推動(dòng)建立污水渾濁的標(biāo)準(zhǔn),或?qū)啙岢潭冗M(jìn)行量化,推動(dòng)算法的標(biāo)準(zhǔn)化與規(guī)范化,為水廠的污水處理提供更加顯著的價(jià)值與貢獻(xiàn)。