沈軍宇, 李林燕, 戴永良, 王 軍, 胡伏原
(1.蘇州科技大學 電子與信息工程學院,江蘇 蘇州215009;2.蘇州經(jīng)貿(mào)職業(yè)技術(shù)學院 信息技術(shù)學院,江蘇 蘇州215009;3.昆山市農(nóng)業(yè)信息中心,江蘇 蘇州215300)
實時高效的水下魚群探測對于海洋和湖泊中魚群活動規(guī)律的監(jiān)測具有明顯的實際意義。 近年來,魚群檢測問題引起了世界范圍內(nèi)學者的關(guān)注并取得了較大的發(fā)展。 ALIYU 等人[1]提出利用Chain Code 和Corners-Harris Stephen 算法分別提取出魚苗的形狀與區(qū)域位置,用于檢測單條魚或互相遮擋的魚群。 Le 等人[2]提出一種基于骨骼端點的骨骼提取算法,利用優(yōu)化Otsu 算法提高分割出魚群精度。Spampinato 等人[3]在連續(xù)的視頻幀中使用幀差法, 利用動態(tài)背景更新算法和自適應(yīng)高斯混合模型提升實時視頻中魚群的檢測精度。筆者也基于深度學習目標檢測算法[4],利用YOLO[5]算法進行端到端訓練,直接回歸得到目標位置和類別信息,極大地提升了實時視頻中魚群檢測的精度和速度。
顧婭娣等人[6]利用信息管理系統(tǒng)與WEB-GIS 技術(shù)結(jié)合,建設(shè)合肥市旅游管理信息化平臺,促進旅游企業(yè)與公眾信息資源的快速獲取。余惠強等人[7]基于Web 軟件開發(fā)技術(shù)搭建的青藏鐵路職工健康監(jiān)護系統(tǒng),對高原病起到較好的預(yù)防與救治效果。 楊雪勇[8]針對報社人事特點,利用JAVA 語言開發(fā)出一套人事信息管理系統(tǒng),極大地提高人事管理的效率。 奚雪峰等人[9]以核電企業(yè)焊接工作流為應(yīng)用背景,基于UML 面向?qū)ο蠹夹g(shù)實現(xiàn)工作流管理系統(tǒng)的建模,包括用例模型、靜態(tài)模型和動態(tài)模型,并在實際生產(chǎn)中產(chǎn)生極大的經(jīng)濟效益。張志敏等人[10]以及邵志文等人[11]設(shè)計的檢測管理系統(tǒng),可以極大地提高數(shù)據(jù)的獲取與處理的時效性,輔助系統(tǒng)使用者做出更加合理的決策。
為了能夠?qū)崟r探測魚群的生活習性、尋求魚群的活動規(guī)律,首先,利用YOLO 檢測算法對實時采集的水下監(jiān)控圖像做魚群檢測,相比傳統(tǒng)的魚群檢測算法,檢測精度可以提升20%以上,并且可以實現(xiàn)實時的魚群檢測;然后,結(jié)合C# 編程語言與.Net Framework 框架,將檢測結(jié)果在數(shù)據(jù)庫中存儲,方便軟件使用人員對視頻和圖像的檢測結(jié)果進行查看;最后,根據(jù)歷史數(shù)據(jù)實現(xiàn)可視化圖表展示,并且根據(jù)水域覆蓋面積估算魚群分布密度。 因此,利用水下監(jiān)控與YOLO 算法構(gòu)建的實時魚群檢測系統(tǒng),為漁業(yè)部門實時監(jiān)管與信息化結(jié)合提供強有力的依據(jù)。
系統(tǒng)分數(shù)據(jù)采集與控制、深度學習圖像處理以及軟件系統(tǒng)三個模塊,如圖1 所示。 數(shù)據(jù)采集與控制模塊利用水下高清監(jiān)控攝像頭、補光燈、聲吶和云臺等硬件設(shè)備,采集監(jiān)控視頻數(shù)據(jù)并調(diào)整監(jiān)控補光與拍攝角度等參數(shù),通過網(wǎng)絡(luò)通信與后臺管理功能模塊進行數(shù)據(jù)交互。 深度學習圖像處理模塊利用訓練好的YOLO 模型,對采集的監(jiān)控視頻進行逐幀檢測并合成含檢測結(jié)果的新視頻,從而為軟件系統(tǒng)提供監(jiān)控預(yù)覽功能接口。后臺管理功能模塊包含監(jiān)控視頻預(yù)覽回放與監(jiān)控截圖記錄存儲,是整個系統(tǒng)數(shù)據(jù)存儲與應(yīng)用的核心,可以根據(jù)存儲記錄方便地進行數(shù)據(jù)的查看與統(tǒng)計等操作。
魚群檢測系統(tǒng)包含硬件設(shè)備控制功能、視頻預(yù)覽功能、視頻回放功能、數(shù)據(jù)查看功能、數(shù)據(jù)統(tǒng)計功能以及信息報告生成功能。 可以實現(xiàn)云臺轉(zhuǎn)動方向和速度控制、補光強弱控制、聲吶強度大小控制等操作需求;實時監(jiān)控預(yù)覽以及歷史監(jiān)控視頻回放等視頻操作;抓圖時間信息查詢、抓圖詳細圖片展示、信息實時展示、當前月份數(shù)據(jù)統(tǒng)計、當年數(shù)據(jù)統(tǒng)計以及歷年數(shù)據(jù)統(tǒng)計等管理需求。 具體業(yè)務(wù)流程如圖2 所示。
圖1 系統(tǒng)架構(gòu)
圖2 監(jiān)控視頻處理流程
系統(tǒng)采用B/S 和C/S 混合開發(fā)模式。 服務(wù)器操作系統(tǒng)為Windows Server 2008,IIS7.5 服務(wù)和SQL Server 2008R2 數(shù)據(jù)庫;客戶端包含支持IE8.0 以上瀏覽器的任何操作系統(tǒng)。目標檢測模型采用Python 語言開發(fā),使用tensorflow 框架。Web 端與通信應(yīng)用程序采用C#語言開發(fā),使用.Net Framework 框架,使用VS2015 作為系統(tǒng)軟件開發(fā)工具。
水下部分包括:攝像云臺、高清網(wǎng)絡(luò)攝像機、綠色LED 補光燈和聲吶傳感器等組成。
高清網(wǎng)絡(luò)攝像機負責區(qū)域攝像,畫面清晰度滿足1080 P 高清標準,攝像距離滿足60 m,焦距采取6 mm 到30 mm 可變焦距;綠色LED 補光燈功率60 W,水下補光范圍60 m;攝像云臺滿足2 軸可運動,方位360°,俯仰-45°~45°;聲吶傳感器滿足探測距離60 m,負責識別探測范圍內(nèi)的活動魚群。 其他控制設(shè)備與攝像頭安裝在同一固定裝置上,通過電纜從水下與附近發(fā)電機相連接,同時通過光纜與水上數(shù)據(jù)傳輸模塊進行視頻的實時傳輸。
數(shù)據(jù)傳輸模塊使用4G 網(wǎng)絡(luò)將水下視頻轉(zhuǎn)發(fā)到服務(wù)器, 此時監(jiān)控中心可以通過訪問服務(wù)器實時預(yù)覽水下視頻,并且可以通過4G 網(wǎng)絡(luò)將控制中心發(fā)送的控制指令傳輸?shù)较鄳?yīng)的傳感器設(shè)備。
根據(jù)筆者以前的實驗結(jié)果,基于YOLO 的魚群檢測可以達到90%以上的檢測精度,并保持30FPS 的檢測速度,比傳統(tǒng)魚群檢測方法有更好的檢測效果。
該系統(tǒng)采用基于YOLO 的魚群圖像檢測模型,實時處理由數(shù)據(jù)采集模塊傳輸?shù)囊曨l,如圖3 所示。 基于水下魚群圖像訓練YOLO 模型,將輸入的每一幀圖像輸入到訓練好的模型, 輸出檢測結(jié)果以及目標數(shù)量。此時,獲取數(shù)據(jù)庫中存儲的每分鐘魚群數(shù)量閾值,判斷是否保存該幀圖像。圖像保存在服務(wù)器本地文件夾,并在數(shù)據(jù)庫中生成一條記錄。
圖3 魚群檢測原理圖
3.1.1 表設(shè)計
數(shù)據(jù)庫表按照多個屬性分開管理監(jiān)控信息,包括監(jiān)控硬件及其他相關(guān)設(shè)備信息、監(jiān)控回放參數(shù)、監(jiān)控截圖存儲以及信息報告等數(shù)據(jù)表。具體表格字段設(shè)計如下:
監(jiān)控信息表:包含監(jiān)控設(shè)備涉及的各類基礎(chǔ)屬性信息,見表1。
表1 監(jiān)控信息表
視頻截圖數(shù)據(jù)表: 根據(jù)視頻內(nèi)檢測到的目標數(shù)量,結(jié)合預(yù)設(shè)的閾值參數(shù),觸發(fā)截圖程序,采用ffmpeg開源軟件對回放視頻進行某個符合條件的時刻進行截圖,保存的數(shù)據(jù)結(jié)構(gòu)見表2。
表2 截圖數(shù)據(jù)表
視頻回放數(shù)據(jù)表:用于存儲視頻回放參數(shù),包括視頻回放地址以及回放時間點,可以按照時間條件對數(shù)據(jù)查找與篩選,數(shù)據(jù)結(jié)構(gòu)同表2 類似。
信息報告數(shù)據(jù)表: 根據(jù)數(shù)據(jù)庫保存的數(shù)據(jù)信息,自動生成報表,并可以有選擇的填寫報告人(水產(chǎn)專家)的分析意見,報告的具體數(shù)據(jù)字段以及數(shù)據(jù)結(jié)構(gòu)見表3。
表3 信息報告數(shù)據(jù)表
3.1.2 表關(guān)系
各個表之間的關(guān)聯(lián)信息如圖4 所示,根據(jù)監(jiān)控的基礎(chǔ)信息進而查找到相關(guān)聯(lián)的數(shù)據(jù)信息,然后可以按照當日、月份、年份、年度進行統(tǒng)計分析。
圖4 數(shù)據(jù)庫關(guān)系圖
根據(jù)系統(tǒng)的功能需求與設(shè)計原理圖,魚群探測系統(tǒng)網(wǎng)頁端主要包含如圖5 所示的三大功能模塊。利用深度學習框架實時檢測水下視頻,當某一幀目標數(shù)量大于設(shè)置的閾值時候,從該節(jié)點保存視頻,利用ffmpeg 截取圖片存到服務(wù)器中, 并在數(shù)據(jù)庫相應(yīng)表格中產(chǎn)生一條記錄。 此時,網(wǎng)頁端可以查看歷史存儲記錄以及數(shù)據(jù)統(tǒng)計,系統(tǒng)使用人員也可以根據(jù)數(shù)據(jù)生成相應(yīng)的報告。
3.2.1 實時預(yù)覽與視頻回放
通過調(diào)用第三方平臺接口獲取播放參數(shù),利用video.js 直接在網(wǎng)頁中實現(xiàn)實時預(yù)覽,并且可以隨時修改監(jiān)控參數(shù),來調(diào)整實時視頻的顯示結(jié)果,包括攝像頭焦距、補光以及曝光等;通過調(diào)整云臺轉(zhuǎn)速調(diào)整監(jiān)控視角;通過設(shè)置每分鐘或者每10 分鐘魚群數(shù)量閾值可以動態(tài)調(diào)整截取圖片和保存監(jiān)控視頻的條件。 具體如圖6 所示。
圖5 網(wǎng)頁功能結(jié)構(gòu)圖
圖6 實時預(yù)覽和監(jiān)控參數(shù)設(shè)置
通過查詢數(shù)據(jù)庫獲取回放視頻節(jié)點列表,可以支持查詢選定時間段數(shù)據(jù), 并且顯示對應(yīng)時間段截圖,如圖7 所示。
圖7 視頻回放和截圖輪播
3.2.2 數(shù)據(jù)查詢統(tǒng)計
通過第三方接口取得的實時監(jiān)控視頻,在基于深度學習的目標檢測框架下,較為準確的檢測出每一幀圖像中目標個數(shù),通過預(yù)先設(shè)置的閾值,觸發(fā)保存監(jiān)控視頻和截圖的操作。 此時,圖片存儲到本地服務(wù)器上且在數(shù)據(jù)庫中生成一條記錄。 實時查看功能通過列表展示當日截取的所有圖片數(shù)據(jù)并支持按照條件檢索;月度數(shù)據(jù)默認柱狀圖顯示當前月度截圖的所有數(shù)據(jù),支持按照月度進行查看并切換到表格查看每條數(shù)據(jù)的詳細信息,如圖8 所示;年度數(shù)據(jù)默認柱狀圖顯示當年所有數(shù)據(jù),并可切換到表格詳情;歷年數(shù)據(jù)則默認柱狀圖顯示所有年份的數(shù)據(jù)統(tǒng)計結(jié)果。 所有數(shù)據(jù)均支持數(shù)據(jù)的導出功能。
3.2.3 信息報告生成
信息報告功能顯示以往生成的所有報告,并按照報告的時間排序,包含報告的新增、編輯、查看詳情以及刪除等功能。 新增一個信息報告的時候,按照選定的信息報告類型和年份,自動統(tǒng)計當年的數(shù)據(jù)并更新到頁面上,然后根據(jù)用戶填寫的數(shù)據(jù)生成一條記錄存到數(shù)據(jù)庫中,如圖9所示。
圖8 月度數(shù)據(jù)信息查詢
基于深度學習框架,構(gòu)建了一個實時的水下魚群檢測系統(tǒng)。 通過第三方平臺接口獲取水下監(jiān)控視頻,并結(jié)合深度學習目標檢測方法,快速檢測實時視頻中目標的數(shù)量,根據(jù)預(yù)先設(shè)置的閾值觸發(fā)截圖與保存視頻功能,并通過網(wǎng)頁編程技術(shù)實現(xiàn)數(shù)據(jù)的展示與應(yīng)用,從而實現(xiàn)魚群高效地檢測與跟蹤,為漁業(yè)部門實時監(jiān)管與信息化結(jié)合提供強有力的依據(jù)。在淀山湖水下魚群檢測應(yīng)用中,系統(tǒng)魯棒性強,對數(shù)據(jù)處理與存儲效率較高。