王 磊 ,陳明恩 ,孟凱凱 ,溫進化 ,周鵬程
(1. 浙江省水資源管理中心,浙江 杭州 310007;2. 杭州定川信息技術(shù)有限公司,浙江 杭州 310020;3. 杭州朗澈科技有限公司,浙江 杭州 311100;4. 浙江省水利河口研究院,浙江 杭州 310020)
水位是河流湖庫的基本水文要素之一,也是國家水資源監(jiān)控能力灌區(qū)農(nóng)業(yè)在線計量監(jiān)測點建設(shè)需要采集的關(guān)鍵數(shù)據(jù),因此穩(wěn)定可靠的水位監(jiān)測數(shù)據(jù)對于流域水資源管理具有重要意義。當前,水位自動監(jiān)測方法主要有浮子式、壓力式、超聲波式和雷達式自動水位計等,以及傳統(tǒng)的圖像識別方法。這些方法存在自動化程度低、建設(shè)運維成本高、易受現(xiàn)場環(huán)境影響、適應性較差等問題。
2012 年,Krizhevsky 等人基于深度學習理論搭建的 AlexNet[1]在圖像分類比賽 ILSVRC[2]中贏得冠軍,不管是分類效果還是速度都表現(xiàn)出絕對的優(yōu)勢。深度學習理論在計算機視覺領(lǐng)域迅速發(fā)展,獲得 ILSVRC 大賽冠軍的 ZFNet[3],VGG-Net[4],GoogleNet[5]和 ResNet[6]均是基于深度學習的圖像分類算法,這些算法分類正確率越來越高,訓練速度也越來越快。另外,基于深度學習的對象檢測算法也日趨成熟,多階段方式的 R-CNN[7]是第 1 個將深度學習理論有效應用于對象檢測任務的算法,隨后發(fā)展出許多單階段和多階段方式的優(yōu)秀算法[8-13],這些算法不僅在精度上大幅提升,而且在推理速度上不斷加快。目前,基于深度學習的計算機視覺技術(shù)已成功應用于安防監(jiān)控、電子醫(yī)療、無人駕駛、智能支付等領(lǐng)域。
為解決現(xiàn)有水位監(jiān)測方法存在的問題,本研究提出了一種基于深度學習算法的實時水位識別方法,并初步應用于國家水資源監(jiān)控能力項目運行中。
監(jiān)控視頻獲取的水尺圖像千差萬別,水尺往往只占整張圖像的很小一部分,直接識別圖像刻度信息誤差較大。為了提高識別方法適用性和準確性,算法按 2 個步驟識別圖像水位信息:1)基于對象檢測算法,檢測出圖像中水尺的位置,并裁剪出水尺圖像;2)基于深度學習的圖像識別算法識別圖像中出現(xiàn)的水尺刻度線數(shù)量,并根據(jù)水尺總長及刻度線表示的長度,計算出當前水位,流程如圖 1 所示。
本方法主要由水尺對象檢測和刻度識別算法組成。為滿足實際場景中水位識別的準確性和實時性,分別選擇 YOLO-v3[14]和 ResNet 網(wǎng)絡算法檢測水尺對象和識別水尺刻度。
圖 1 算法流程
2.2.1 水尺對象檢測算法
水尺對象檢測算法選用 YOLO-v3 的 105 層版本模型。該模型的骨干網(wǎng)絡是 darknet-53 的特征提取網(wǎng)絡,除去最后的全連接層,共有 52 個卷積層,由大量的殘差模塊組成。
該模型采用多尺寸融合的方式做檢測。在darknet-53 網(wǎng)絡后分別連接 3 個不同的分支,每個分支輸出的特征圖的大小不一樣,而應用在每一個特征圖上的候選框的大小也不一樣,這樣極大地提升了模型對于不同尺寸的目標的檢測能力。
該模型由原來的單標簽分類提升為多標簽分類,即在一些復雜場景中,1 個對象可能屬于多個類別,且準確率不會下降。
經(jīng)驗證,YOLO-v3 的 105 層版本仍然可以達到 51 幀/s 的識別速度,可以滿足水尺檢測對實時性的要求;識別精度高,在 MS COCO(Microsoft Common Objects in Context)測試數(shù)據(jù)集[15]上可以達到 33 mAP(平均精度均值)。
2.2.2 水尺刻度識別算法
在水尺刻度識別模塊,本研究選擇 ResNet 網(wǎng)絡的 34 層版本。ResNet 網(wǎng)絡引入了跳層連接,在每一個殘差塊里使用跳層連接,由卷積操作、層層堆疊的殘差塊加上最后的全連接層等組成 ResNet 網(wǎng)絡。ResNet 網(wǎng)絡解決了隨著網(wǎng)絡層數(shù)的增加,網(wǎng)絡學習退化的問題,同時也解決了由網(wǎng)絡深度引起的梯度彌散問題。
ResNet 網(wǎng)絡輸出結(jié)果為水尺水面上的刻度線數(shù)量 N,根據(jù)實際水尺刻度表示的長度,以及水尺總長 Z,得出當前的水位高度 L:
式中:N % 3 為 N 對 3 求余數(shù)。
訓練數(shù)據(jù)均來自國家水資源監(jiān)控能力農(nóng)業(yè)灌區(qū)計量監(jiān)測點所拍攝的現(xiàn)場圖片,圖片分辨率為 1280×960。模型對采集圖片要求:圖片分辨率不能小于 800×700,圖片中水尺寬度不能小于 30 像素,水面上高度至少有 2 點刻度。水尺刻度清晰可人工讀取,不能有樹葉或泥巴等遮擋,不能曝光過度或者光線過暗。然后對滿足要求的圖片進行人工標注,標注圖片中的水尺位置及水面上水尺刻度線的數(shù)量。
在對象檢測階段,訓練集、驗證集和測試集分別有標注圖片 60 000,10 000 和 10 000 張。每張圖片標簽為圖中水尺的位置,在數(shù)據(jù)預處理階段對圖片進行了隨機翻轉(zhuǎn)、小區(qū)域隨機裁剪,以及亮度、對比度、透明度隨機調(diào)整等操作,提高算法的泛化能力。并將圖片的分辨率統(tǒng)一調(diào)整為 352×352。
在水尺刻度識別階段,訓練集、驗證集和測試集分別有 80 000,8 000 和 8 000 張圖片,在對算法進行訓練之前對圖片進行隨機翻轉(zhuǎn)、小區(qū)域隨機裁剪,以及亮度、對比度、透明度隨機調(diào)整等操作,并將圖片的分辨率統(tǒng)一調(diào)整為 100×350。
3.2.1 對象檢測階段
在對象檢測階段,首先基于 ImageNet 數(shù)據(jù)集預訓練模型,然后基于該預訓練模型在對象檢測標注數(shù)據(jù)集上進行訓練。
優(yōu)化算法選擇 Adam 梯度優(yōu)化算法[16]。和傳統(tǒng)的隨機梯度下降不同的是,Adam 梯度優(yōu)化算法通過計算梯度的一階和二階矩估計為不同的參數(shù)設(shè)計獨立的自適應性學習率,而傳統(tǒng)的隨機梯度下降保持單一的學習率更新所有的參數(shù)。步長因子 alpha、一階矩的和二階矩的指數(shù)衰減率 beta1 和 beta2 分別設(shè)置為默認值:0.001,0.900 和 0.999。
學習率設(shè)置分別采用指數(shù)衰減法和自定義模式,開始訓練的學習率設(shè)置較大,使模型迅速逼近最優(yōu)解,之后逐漸降低學習率使模型收斂??紤]到對象檢測模型是基于 ImageNet 數(shù)據(jù)集預訓練模型的基礎(chǔ)上訓練的,所以初始學習率設(shè)置較小,為0.001。自定義學習率設(shè)置多組,如表 1 所示。
表 1 對象檢測算法學習率設(shè)置表
考慮到內(nèi)存需求和學習率等,訓練 batch size 設(shè)置為 32。
3.2.2 水尺刻度識別階段
在水尺刻度識別階段,同上階段優(yōu)化算法選擇Adam 梯度優(yōu)化算法。
學習率設(shè)置分別采用指數(shù)衰減法和自定義模式??紤]到訓練任務及避免梯度爆炸,初始學習率設(shè)置為 0.1。自定義學習率設(shè)置多組,如表 2 所示,訓練 batch size 設(shè)置為 64。
表 2 水尺刻度識別算法學習率設(shè)置表
以上 2 個算法訓練均在配置有 NVIDIA GTX 1080Ti 顯卡的服務器上完成。
1)每秒幀數(shù)(FPS,F(xiàn)rame Per Second)。為滿足本研究方法在實際應用時的速度要求,使用 FPS測量對象檢測模塊的速度。FPS,即每秒可以處理的圖片數(shù)量,越大表明算法檢測對象速度越快。
2)交并比(IoU,Intersection over Union)。IoU 表示算法檢測的候選框 C 與真實標注的候選框 G 的重疊程度,值越大,表明重疊程度越高,為 1時表示完全重合:
3)召回率(R,Recall Rate)。召回率表示,測試集中所有正樣本被預測為正樣本的比例。在本對象檢測算法中表示,所有真實標注框被預測為候選框的比例。如果預測候選框與真實框的 IoU 大于等于 0.7,即為預測正確。
4)準確率(Acc,Accuracy)。在水尺刻度預測階段,使用準確率評估水尺刻度預測的效果。水尺刻度預測結(jié)果與標注結(jié)果相差小于等于 2 cm,即為預測正確。
3.4.1 對象檢測階段
基于 60 000 個訓練樣本,分別使用學習率的指數(shù)衰減法和自定義模式訓練模型,損失函數(shù)值隨著訓練 Epoch 增加,變化規(guī)律如圖 2 所示。經(jīng)過 170 個Epoch,隨著訓練迭代次數(shù)的增加,損失函數(shù)值無限接近于 0,基本不再變化,可判斷模型收斂。
圖 2 訓練過程中不同學習率下?lián)p失函數(shù)值變化趨勢圖
由圖 2 可以看出,在自定義學習率組 1 模式下,模型收斂時損失函數(shù)值最小,該模型學習效果最好。在自定義學習率組 1 模式下,驗證集召回率變化如圖 3 所示。模型收斂后,在 10 000 個驗證樣本上進行驗證,平均驗證召回率為 94.3%。在 10 000 張測試集上測試召回率為 93.2%,F(xiàn)PS 為 35。
圖 3 訓練過程中驗證集召回率隨 Epoch 變化趨勢圖
3.4.2 水尺刻度識別階段
基于 80 000 個訓練樣本,分別使用學習率的指數(shù)衰減法和自定義模式訓練模型,損失函數(shù)值隨著訓練 Epoch 增加,變化規(guī)律如圖 4 所示。經(jīng)過 210 個Epoch,隨著訓練迭代次數(shù)的增加,損失函數(shù)值無限接近于 0,基本不再變化,可判斷模型收斂。
由圖 4 可以看出,在自定義學習率組 1 模式下,模型收斂時損失函數(shù)值最小,該模型學習效果最好。在自定義學習率組 1 模式下,驗證集召回率變化如圖 5 所示。在 10 000 個驗證樣本上進行驗證,模型收斂后平均驗證召回率為 96.1%。在 8 000 個測試樣本上進行測試,測試準確率為 95.7%。
圖 4 訓練過程中不同學習率下?lián)p失函數(shù)值變化趨勢圖
圖 5 訓練過程中驗證集準確率隨 Epoch 變化趨勢圖
文中所有算法均基于谷歌 DistBelief 研發(fā)的第 2 代人工智能學習系統(tǒng) Tensorflow 框架并使用 Python 實現(xiàn)。訓練好算法的圖信息和參數(shù)值以 Tensorflow的二進制格式保存在磁盤中,再使用 Tensorflow 的 Java 接口將預訓練的模型封裝在智能識別系統(tǒng)中,最后系統(tǒng)以后臺獨立運行的程序?qū)ν馓峁┳R別服務。整個系統(tǒng)采用前后端分離架構(gòu),從而使得后臺接口既可以向前端提供,也可以獨立出來向第三方系統(tǒng)提供,提高應用靈活性。水資源監(jiān)控信息平臺只需調(diào)用系統(tǒng)的網(wǎng)絡接口,向接口傳遞要預測的水尺圖片,接口經(jīng)過后臺推理計算后,將結(jié)果返回平臺,從而實現(xiàn)水位自動識別。
為了更有效地服務于國家水資源監(jiān)控能力灌區(qū)計量監(jiān)測點運行管理,水資源監(jiān)控信息平臺開發(fā)了水位自動識別功能模塊,具備歷史預測結(jié)果展示、水尺基礎(chǔ)信息配置和數(shù)據(jù)庫服務配置等功能,實現(xiàn)了雷達式水位計上報數(shù)據(jù)與同步圖片水位識別數(shù)據(jù)的自動比對,達到了定期自動對雷達式水位計運行情況進行監(jiān)控校核的預期目標。以 2019 年 4 月為例,共自動識別水尺圖片 6 500 張,識別正確率為 95.3%。
服務配置即數(shù)據(jù)庫配置,需用戶提供用戶的及用于保存用戶信息的 MySQL 數(shù)據(jù)庫的相關(guān)信息,MySQL 服務器配置需要提供數(shù)據(jù)庫地址、端口號、數(shù)據(jù)庫名稱、用戶名和密碼等信息,同時可以設(shè)置異常圖片存儲路徑,用于保存識別為異常的圖片。
完成數(shù)據(jù)庫配置后會出現(xiàn)已有站點列表,需要根據(jù)每個點位配置該點位水尺的總長度,智能識別系統(tǒng)將根據(jù)水尺總長配置和智能識別的刻度計算得出實際水位值。
歷史預測結(jié)果展示即展示歷史預測結(jié)果的詳細信息,此設(shè)計出于系統(tǒng)可追溯性和可靠性的考慮,后臺將每次預測的結(jié)果和原圖片數(shù)據(jù)統(tǒng)一保存在系統(tǒng)本地數(shù)據(jù)庫中,方便用戶查看歷史預測數(shù)據(jù)和后期系統(tǒng)優(yōu)化。歷史預測結(jié)果展示可以展示站點編號、該數(shù)據(jù)識別的圖片、圖片采集時間、攝像頭編號、水位預測值和預測的水尺狀態(tài)等信息。
本研究創(chuàng)造性地將深度學習相關(guān)算法應用于水尺水位識別,并在國家水資源監(jiān)控能力灌區(qū)監(jiān)測點運行管理中得到了初步應用。該識別方法具有準確率高、泛化能力強、識別速度快、環(huán)境適應能力強等特點,測試識別準確率達 95.7%,實際運行準確率達 95.3%,每張圖片識別速度為 200 ms 左右。該識別方法可封裝成智能識別系統(tǒng),利用 Java 接口提供第三方服務,部署應用靈活,適應能力強。
該識別算法具有迭代升級的能力,隨著訓練樣本量的持續(xù)增加,預測精度將繼續(xù)提高,在特定應用場景可直接替代雷達水位計等傳統(tǒng)監(jiān)測手段。同時,可以深度挖掘圖像信息,將現(xiàn)場監(jiān)測干擾因素作為識別目標,實現(xiàn)檢測環(huán)境異常自動預警,提高計量監(jiān)測運行維護效率。