肖卓,陶青川,沈建軍
(四川大學(xué)電子信息學(xué)院,成都 610065)
水利相關(guān)部門在河流、湖泊等地建立視頻監(jiān)控系統(tǒng),加速了水利信息化建設(shè)的步伐[5]。其中水標(biāo)尺讀數(shù)的讀取能提供預(yù)測(cè)山洪的有效方法。傳統(tǒng)水位測(cè)量方式主要有安裝水尺目測(cè)讀數(shù)和使用傳感器自動(dòng)采集水位相關(guān)的模擬量再轉(zhuǎn)換為水位量兩種。其中目測(cè)測(cè)量方式效率低、及時(shí)性差以及惡劣情況下無法讀取,而使用傳感器測(cè)量方式成本高、難以維護(hù)、受環(huán)境影響大[1]。通過數(shù)字視頻處理技術(shù)可以實(shí)時(shí)觀測(cè)河道水庫的情況,提供直觀的圖像信息,同時(shí)可以改善測(cè)量工作人員的工作環(huán)境,做到無人值守[2]。水利視頻監(jiān)控采集的視頻圖像信息,利用圖像處理算法對(duì)水利視頻監(jiān)控圖像進(jìn)行水位提取比人工檢測(cè)更直觀,也更節(jié)省人力成本[3]。
在依靠傳統(tǒng)機(jī)器視覺的水尺識(shí)別算法中,普遍通過形態(tài)學(xué)變換提取水尺邊緣、多幀水尺圖像處理得到水尺位置、RGB空間轉(zhuǎn)HSV空間根據(jù)顏色提取水尺位置、人工預(yù)設(shè)感興趣區(qū)域等方法用來定位水尺目標(biāo)等方法[4-7]。然而在實(shí)際應(yīng)用場(chǎng)景中,安防監(jiān)控具有場(chǎng)景復(fù)雜,圖像噪聲多,目標(biāo)不明顯等特點(diǎn)。形態(tài)學(xué)變換提取水尺邊緣和RGB色彩空間轉(zhuǎn)換至HSV色彩空間的方法都會(huì)受到周圍復(fù)雜場(chǎng)景的影響。無論是場(chǎng)景的邊緣和場(chǎng)景的顏色,都會(huì)對(duì)水尺定位造成很大的影響。而多幀水尺圖像處理得到水尺位置的方法是在攝像頭靜止不動(dòng)的前提下。由于當(dāng)前安防攝像頭大部分均由云臺(tái)控制等功能,在攝像頭受到環(huán)境影響產(chǎn)生抖動(dòng)、視角被調(diào)離水尺區(qū)域或云臺(tái)自動(dòng)巡航時(shí),多幀水尺圖像處理得到水尺位置的方法會(huì)直接失效。
本文提出一種基于SSD目標(biāo)檢測(cè)的水尺檢測(cè)算法,通過深度學(xué)習(xí)訓(xùn)練提取水尺特征,能較好地檢測(cè)到水尺位置。多幀判斷綜合確定當(dāng)前水尺的位置,能非常準(zhǔn)確的定位到水尺的具體位置。檢測(cè)到水尺位置后,邊緣檢測(cè)來獲取水尺邊緣信息,形態(tài)學(xué)處理,填充水尺中心;計(jì)算非零像素占比來矯正傾斜的水尺,使水尺垂直于水平面;再重新進(jìn)行x軸的邊緣檢測(cè)獲取水尺中“E”的刻度,并通過形態(tài)學(xué)處理獲得完整的刻度信息。算法流程如圖1所示。
圖1 算法流程圖
SSD(Single Shot Mulitbox Detector)是一種基于卷積神經(jīng)網(wǎng)絡(luò)的目標(biāo)檢測(cè)算法,由Wei Liu在2016年提出,擁有比Fast R-CNN更好的速度及更高的準(zhǔn)確率,是目前主流的深度學(xué)習(xí)目標(biāo)檢測(cè)網(wǎng)絡(luò)之一[8]。SSD目標(biāo)檢測(cè)網(wǎng)絡(luò)結(jié)合YOLO回歸思想以及Faster R-CNN的anchor機(jī)制做到速度與準(zhǔn)確率并存[9]。SSD目標(biāo)檢查網(wǎng)絡(luò)使用VGG-16作為基礎(chǔ)網(wǎng)絡(luò),并增加了新的卷積層來獲取更多的特征圖。由于使用的是全卷積結(jié)構(gòu),相對(duì)于Faster R-CNN包含的全連接層網(wǎng)絡(luò)結(jié)構(gòu),使網(wǎng)絡(luò)計(jì)算量急劇減少,提高了運(yùn)算速度。并使用多尺度特征圖方式,對(duì)各個(gè)尺寸大小的目標(biāo)特征進(jìn)行檢測(cè)。網(wǎng)絡(luò)模型如圖2所示。
在本文中,由于水尺大小在圖片中各不相同,所以需要提取不同尺度的特征圖進(jìn)行預(yù)測(cè),大尺度特征圖用來檢測(cè)小目標(biāo),小尺度特征圖用來檢測(cè)大目標(biāo)。并在特征圖上的每一個(gè)點(diǎn)生成一系列的候選框,每個(gè)框都會(huì)生成自己的回歸和分類。由于水尺目標(biāo)形狀的特殊性,在視頻監(jiān)控場(chǎng)景下,水尺目標(biāo)普遍是長條狀,垂直于水平面。本文去掉橫向的矩形框,使用多個(gè)不同比例的豎條狀矩形框作為候選框。保持原始網(wǎng)絡(luò)中的各尺度特征圖中候選框數(shù)量,并去除橫向矩形框,增加豎向矩形框,能更好地與原始框進(jìn)行匹配,如圖3所示。
本文采用SSD 300通過監(jiān)督學(xué)習(xí),訓(xùn)練樣本,提取網(wǎng)絡(luò)特征的方式,訓(xùn)練模型。在具體算法中,將視頻監(jiān)控輸出圖像下采樣到300×300的分辨率,并根據(jù)網(wǎng)絡(luò)輸出分類及概率,使用多幀判斷輸出結(jié)果,可以有效解決因日照變化和攝像頭抖動(dòng)造成的檢測(cè)失敗等問題。
圖3 SSD候選框示意圖
首先使用將視頻流解碼成單幀RGB格式,然后對(duì)單幀圖像進(jìn)行下采樣,下采樣至分辨率為300×300,將下采樣后的圖像數(shù)據(jù)輸入至SSD300目標(biāo)檢測(cè)網(wǎng)絡(luò)中。輸出檢測(cè)目標(biāo)的分類、概率及目標(biāo)框信息。
由于光照的影響及攝像頭的抖動(dòng)轉(zhuǎn)動(dòng),可能會(huì)影響SSD目標(biāo)檢測(cè)網(wǎng)絡(luò)的結(jié)果。本算法使用多幀結(jié)合判斷,在當(dāng)前幀未檢測(cè)到目標(biāo)框時(shí)有兩種可能,一個(gè)是攝像頭云臺(tái)旋轉(zhuǎn),視角切換到了看不到水標(biāo)尺的位置,一種就是網(wǎng)絡(luò)誤判不存在水尺。在上一幀目標(biāo)框基礎(chǔ)上,對(duì)比當(dāng)前幀與上一幀,求差分,并使用形態(tài)學(xué)腐蝕濾掉由于攝像頭抖動(dòng)造成的邊緣。計(jì)算非零點(diǎn)占比,當(dāng)百分比較大時(shí)確定當(dāng)前幀的視角與之前的視角不一致,則當(dāng)前SSD網(wǎng)絡(luò)輸出的結(jié)果是正確的,否則使用之前的網(wǎng)絡(luò)輸出結(jié)果對(duì)當(dāng)前幀進(jìn)行下一步計(jì)算。檢測(cè)效果如圖4所示。
圖2 SSD網(wǎng)絡(luò)模型圖
由于水尺所持環(huán)境光照的變化,安防監(jiān)控?cái)z像頭獲取到的圖像可能出現(xiàn)曝光過度或者曝光不足的情況,變現(xiàn)在圖像上就是水尺邊緣不清晰,對(duì)于分離出水尺刻度造成非常大的影響。
圖4 SSD網(wǎng)絡(luò)輸出水尺分類矩形框
本文使用三通道直方圖均衡的方式,將圖像進(jìn)行非線性拉伸,使圖像峰值部分對(duì)比度得到增強(qiáng)[10]。單通道直方圖均衡如公式(1)所示,其中Sk表示灰度為k的像素均衡后的像素值。L表示位深度,灰度范圍為[0,L-1],MN分別表示圖像的寬高。nj表示灰度值為j的像素值總數(shù)。
增強(qiáng)后的圖片,圖像邊緣更加清晰,并且圖像的灰度在灰度范圍內(nèi)均衡分布,能較好地提取出水尺的邊緣信息。原圖與增強(qiáng)后的圖如圖5(a)、(b)所示。
圖5 水尺識(shí)別效果圖
對(duì)于增強(qiáng)后的圖像而言,需要進(jìn)一步縮小水尺范圍。去除水尺周邊復(fù)雜的場(chǎng)景邊緣信息對(duì)水尺讀數(shù)造成的影響,并矯正水尺的角度,使水尺垂直于水平面。
如圖5(b)所示,在實(shí)際應(yīng)用場(chǎng)景中,水尺的角度各異,周邊情況不盡相同,SSD模板檢測(cè)網(wǎng)絡(luò)能有效地檢測(cè)到水尺的大致范圍,但對(duì)于復(fù)雜場(chǎng)景中,水尺周邊的邊緣信息復(fù)雜,對(duì)水尺的檢測(cè)會(huì)造成很大的影響,所以必須進(jìn)一步精確提取水尺的位置,并對(duì)偏移的水尺目標(biāo)做矯正,使水尺能夠垂直于圖像水平面。為后續(xù)的水尺刻度讀數(shù)提高精度。
(1)Sobel邊緣提取
Sobel算子主要用來做邊緣檢測(cè)上,是離散型差分算子,用來運(yùn)算圖像亮度函數(shù)的灰度近似值,在圖像任一地方使用此算子,均會(huì)產(chǎn)生灰度矢量或其法矢量,并能很好地抑制圖像中的噪聲,減少噪聲對(duì)實(shí)際邊緣信息造成的干擾[10]。Sobel卷積核如公式(2)所示。
Gx、Gy為兩組3×3的矩陣,分別為橫向和縱向,將之與圖像作平面卷積,即可分別得到橫向與縱向的高度差分近似值。
水尺目標(biāo)中“E”的目標(biāo)相對(duì)于背景有著很明顯的邊緣特征,通過邊緣提取能夠分離出水尺的邊緣,使ROI圖中的E更醒目,由于輸入圖是彩色的,包含更多的信息,使用Sobel算子,對(duì)上一步的結(jié)果圖進(jìn)行邊緣檢測(cè)提取。邊緣提取后效果如圖5(c)所示。
(2)提取水尺
Sobel邊緣提取后,水尺周圍包含很多場(chǎng)景的噪聲及其他物體邊緣的影響,通過中值濾波去除周圍減小的噪聲,平滑獨(dú)立的像素點(diǎn),并通過形態(tài)學(xué)閉操作和膨脹填充水尺中“E”的空隙。如圖5(d)所示,水尺依然是傾斜的,并且水尺周圍存在很多的干擾點(diǎn),直接通過聯(lián)通區(qū)域找到最大外界矩形是不恰當(dāng)?shù)?,?huì)包含很多水尺外的噪聲點(diǎn),所以我們通過旋轉(zhuǎn)圖片,矯正圖片使水尺垂直于水平面。
由于水尺目標(biāo)的特點(diǎn),水尺在圖片中包含了大量的白點(diǎn),其他白點(diǎn)是水尺周圍物體的邊緣。圖6為二值圖中每列像素包含的非0點(diǎn)個(gè)數(shù),可以看出,在40~100中間包含了大量的非0點(diǎn),而40則為水尺左邊界,100為右邊界。通過計(jì)算非0像素在邊界范圍內(nèi)的面積比,找出面積比最大的一個(gè)角度,此時(shí)的水尺接近于垂直水平面。并且可以通過計(jì)算列像素的梯度提取出水尺的左右邊界。獲得傾斜矯正后的水尺圖片后,對(duì)圖片的行像素進(jìn)行同樣的處理,去除噪聲及其他邊界,就此得到水尺原圖。旋轉(zhuǎn)后的二值圖如圖5(e)所示。
圖6 二值圖y軸非0點(diǎn)個(gè)數(shù)
對(duì)增強(qiáng)后的圖片進(jìn)行相同的傾斜矯正和圖片截取。圖片中水尺位置垂直水平面,并通過使用Sobel算子x方向邊緣檢測(cè),由于水尺矯正后,x軸方向梯度變化較大。通過Sobel算子x方向邊緣檢測(cè),能很好地過濾掉y軸的邊緣信息,而保留x軸的邊緣,從而能很好地提取出水尺x方向的邊緣信息。如圖5(f)能看出,雖然能很好地提取出水尺刻度,但仍然有水尺邊緣及水尺上數(shù)字的干擾。通過降噪消燥和形態(tài)學(xué)處理如圖5(g)(h),能很好地保留水尺的刻度信息,再通過尋找連通區(qū)域來確定水尺刻度如圖5(i)。
本文數(shù)據(jù)集分為SSD目標(biāo)檢測(cè)網(wǎng)絡(luò)訓(xùn)練集和算法測(cè)試集。例圖如圖7所示。
SSD目標(biāo)檢測(cè)網(wǎng)絡(luò)訓(xùn)練集包括互聯(lián)網(wǎng)上抓取的水尺圖片和四川大學(xué)校內(nèi)拍攝的水尺圖片,通過對(duì)圖片進(jìn)行截取、旋轉(zhuǎn)、翻轉(zhuǎn)和對(duì)比度調(diào)整等操作,擴(kuò)充水尺圖片數(shù)據(jù)。并根據(jù)數(shù)據(jù)集制作樣本。
算法測(cè)試集采用手機(jī)拍攝視頻,通過晃動(dòng)和移動(dòng)手機(jī)模擬實(shí)際水利場(chǎng)景下的監(jiān)控?cái)z像頭抖動(dòng)及云臺(tái)控制。視頻采集于成都市九眼橋,使用最小刻度為1cm的紅藍(lán)兩種顏色的水尺在不同場(chǎng)景下錄制視頻。
實(shí)驗(yàn)環(huán)境如表1所示。
表1 實(shí)驗(yàn)環(huán)境
實(shí)驗(yàn)使用FFMpeg對(duì)分辨率為1280×720、幀率為30的輸入視頻進(jìn)行解碼、使用SSD300-Caffe版本進(jìn)行水尺目標(biāo)檢測(cè),使用OpenCV3.2對(duì)水尺目標(biāo)區(qū)域圖像進(jìn)行處理識(shí)別水位值。對(duì)紅藍(lán)兩種水尺,兩個(gè)不同場(chǎng)景下共四個(gè)視頻片段進(jìn)行水位檢測(cè)。本文算法能做到單幀目標(biāo)檢測(cè)加識(shí)別在80ms內(nèi),水尺定位實(shí)驗(yàn)結(jié)果如表2所示、水位檢測(cè)部分實(shí)驗(yàn)結(jié)果如圖7所示。
表2 SSD多幀水尺定位實(shí)驗(yàn)結(jié)果表
圖8 水位檢測(cè)效果圖
從表2、圖8可以看出,對(duì)兩個(gè)不同場(chǎng)景下的紅藍(lán)兩種不同顏色的水尺進(jìn)行視頻水位檢測(cè),本文算法能做到水尺目標(biāo)檢測(cè)準(zhǔn)確率在95%以上,水位檢測(cè)誤差在2cm以內(nèi)。并且視頻抖動(dòng)和移動(dòng)都不會(huì)對(duì)算法結(jié)果造成太大的影響。符合當(dāng)前水利視頻監(jiān)控的特征,對(duì)水位檢測(cè)系統(tǒng)有一定的幫助。
本文采用深度學(xué)習(xí)目標(biāo)檢測(cè)網(wǎng)絡(luò)SSD,能準(zhǔn)確定位到安防監(jiān)控中的水尺位置,并結(jié)合傳統(tǒng)機(jī)器視覺算法,計(jì)算最大像素占比來對(duì)水尺圖像進(jìn)行傾斜矯正,再經(jīng)過邊緣檢測(cè),使用連通區(qū)域計(jì)算圖像中的水尺刻度數(shù)。經(jīng)實(shí)驗(yàn)結(jié)果表明,該算法能準(zhǔn)確地定位水尺并識(shí)別水尺刻度,水位誤差低,并能良好地適應(yīng)多種場(chǎng)景下的水尺目標(biāo),在監(jiān)控云臺(tái)旋轉(zhuǎn)時(shí),也能有效定位及識(shí)別。滿足行業(yè)需求?;赟SD目標(biāo)檢測(cè)網(wǎng)絡(luò)的算法可以在增加目標(biāo)分類基礎(chǔ)上進(jìn)行擴(kuò)展,增加諸如漂浮物、人等目標(biāo)分類。并在此基礎(chǔ)上添加越線檢測(cè),漂浮物檢測(cè)等算法。