陳澤,畢美華,周豪, 郭宸,郭祺赟,王裕翔,王琰,方楠
(杭州電子科技大學通信工程學院,浙江杭州,310016)
萬物互聯,智能為先。當前,我國淡水漁業在發展中也呈現出很多問題,例如科學水平相對低下,生態破壞嚴重,人工成本高,養殖需要大量的人力物力等等我國部分水產養殖業仍處于經驗養殖階段,養殖戶對魚塘水質沒有一個明確的檢測值,仍停留在通過經驗和觀察來判斷水質情況階段,導致漁業養殖效率低下,有著很大的進步空間]。此外,國家主席習近平曾向第三屆世界智能大會致信,希望大家深化交流、增進共識、加強合作,推動新一代人工智能健康發展,更好造福世界各國人民。隨著第四次工業革命的到來,各行各業都向著自動化、智能化發展,標志著物體、數據與服務的無縫銜接的進程。在此背景下,,,本文設計了一種基于深度學習和物聯網云平臺的水質監測與魚苗識別系統用于推行水產養殖行業發展。該系統可以進行環境水質的實時監測與云平臺數據的上傳、反饋調節,利用深度學習與目標檢測來識別魚苗,為未來的智慧漁業與智能家居行業提供一種有效的方案。
圖1 為基于深度學習和物聯網云平臺的水質監測與魚苗識別系統的結構圖,如圖2為系統整體實際圖片。該系統主要由四個子系統構成:水質環境監測自動調節系統、物聯網系統、目標檢測系統和設備管理系統。該系統采用了無線Wi-Fi模塊實現各個系統的通信。其中, ESP8266無線Wi-Fi模塊實現了STM32與物聯網云平臺間的數據發送工作。同時樹莓派也可直接通過自帶的Wi-Fi模塊實現無線網絡連接。

圖1 系統整體框架圖

圖2 系統實物圖
在水質環境監測與自動調節系統中,本文選用STM-32F407ZGT6作為主控芯片。該芯片可提供了豐富的GPIO接口,以及相關的內置外設以及144MHz的高速時鐘,以及豐富的庫函數,這在一定程度上便利了系統連接各類傳感器以及系統實現難度。同時,通過溫度傳感器、TDS(溶解性固體總量)傳感器與pH值傳感器等進行交互,獲得魚類生存環境數據的實時監測,并且單片機將這些數據通過串口的形式發送給物聯網模塊。物聯網模塊中的ESP8266將下位機的數據傳輸到云平臺,并通過規則引擎將數據流轉保存至云端的數據庫中,在本地就可以對這些環境數據進行分析。目標檢測模塊對實時視頻流進行魚苗識別,并將實時視頻流上傳至云端,實現用戶對本地系統的實時攝像頭監控。設備管理模塊中,同時可以使用Web端和手機App端遠程查看實時的環境數據,并調節其生長環境。
為了更好地實現水質數據的測量,該系統選用不同的傳感器以實現低成本、高精度。首先,溫度傳感器方面,DS18B20溫度傳感器(見圖3)。DS18B20作為常見溫度傳感器芯片。該芯片具有體積小,封裝多,價格低,精度高,測量范圍大的特點。此外,本設計采用不銹鋼封裝的傳感器封裝,可以有效地長期應用于魚塘水溫測量的場景中。同時,DS18B20芯片采用單線接口,僅需一條線即可與MCU進行實時雙向通信,方便便捷。此外,DS18B20提供9-12位數字數據輸出,更加方便了應用。此傳感器的測量范圍為-57℃-+125℃,精度為0.5℃。廣泛的測量范圍為我們應用提供了豐富的應用。

圖3 DS18B20溫度傳感器
TDS傳感器方面:選用了市面上常見的TDS檢測探針,直接進行TDS值的監測。同時,TDS探針提供了放水針頭,有效地保證了在魚塘場景中傳感器的長期應用,適應了使用場景。同時,探測針頭使用交流信號作為激勵源,有效避免了使用過程中可能出現的探頭極化情況。數據轉化模塊實現DA轉化,且可通過2Pin XH-2.54接頭與TDS探針相連接,直接將TDS探針測得的TDS水質數據轉化為模擬輸出。因此,MCU可以直接通過測量模擬輸出口的電壓值,進行TDS水質數據的測量。提供的TDS探針測量范圍為0~1000ppm,測量精度為±5%F.S.同時,數據轉化模塊的模擬輸出提供了5V,3.3V兩種控制模式。由于MCU的GPIO口提供的ADC接口測量范圍為0-3.3V。為了方便使用,本文選用3.3V的測量模式。
PH酸堿度檢測方面:采用市場上常見的PH值濃度測試電極。由于當前市場上的工業級PH變送器價格昂貴。常見的PH復合電極輸出的是mV級信號,MCU系統無法直接測量識別。因此,本文選購了一款集成化的PH值探測筆模塊,包含了PH復合電極,商家同時提供了數據轉換模塊。PH值濃度測試電極通過BNC接口與數據轉化模塊進行連接,數據轉化模塊對PH復合電極的輸出信號進行適當放大,使MCU系統能夠更好地讀取測量信號值。數據轉化模塊與TDS測量模塊同樣提供了3.3V及5V兩種測量模式,可以通過數據模塊上滑動變阻器進行調節方便了我們使用MCU系統直接進行測量。同時,由于PH值復合電極默認的使用溫度為25℃值,所以數據轉化模塊同時提供了DS18B20溫度測量接口,方便了我們對水溫的測量以及對PH值計算的溫度補償。

圖5 PH值濃度檢測模塊
液位傳感器:選用了市面上現有的液位檢測裝置。由于考慮到漁業養殖階段中,不需要具體的液位數據,僅需要保證魚塘處于一定水位范圍內。因此,本文選用的液位傳感器僅用于測量液位是否超過傳感器水位。在具體實驗中,放置了2個液位傳感器,分別代表了魚塘液位的最高值和最低值。
本系統主要包括了pH傳感器、溫度傳感器、TDS傳感器、液位傳感器、光照傳感器、舵機等部件,以上傳感器的檢測參數主要有:水體pH值、溫度、總溶解固體量(TDS值)、光照強度等。其中,pH值傳感器模塊通過BNC接頭與pH復合電極進行連接,并帶有溫度補償功能,根據能斯特方程,從pH傳感器電極系統中獲得的電壓信號與氫離子的活度具有對應關系,因此可以通過得到的電壓值換算成水體的pH值。溫度模塊使用的是ds18b20,供電電壓范圍為3.0 V至5.5 V,可測量-55℃至+125℃范圍內的溫度,它具有體積小,輸出的數字信號精度高的優點,單片機通過單總線協議可以讀取其輸出的溫度值。TDS傳感器測量范圍為0-1000ppm,精度為±5%,通過0~2.3V模擬信號輸出,具有輸出信號穩定、可通過軟件進行溫度補償的優點。液位傳感器XYC-Y25利用水的感應電容來判斷液位,當液位沒有達到閾值,傳感器對地線存在一定的靜態電容,當液面升高至接近傳感器,液體的寄生電容將耦合至靜態電容,導致傳感器的電容值變大,通過檢測與電容值有關的電信號的改變即可得到液面實時的情況。
當溫度低于設定的最低閾值時,開啟繼電器,加熱電路導通,加熱棒對水體進行加熱,直到水體溫度達到設定的最高閾值時關閉繼電器,加熱棒停止工作。自動恒溫系統可以將水體溫度穩定在提前設定的溫度范圍中,對魚類生長環境起到較好的維護作用。
在魚類養殖過程中,不同的光照條件會引起魚類耗氧量和代謝的不同,導致其攝食和活動受到影響,并且水草的生長也會受到光照條件的影響,因此,在水族箱的燈光設計方面要考慮這些因素的影響,營造更有利于觀賞魚生長的水體環境。為此設計了光照強度調節模塊,使用繼電器和Led燈來調節光照強度,使得光照模塊更加智能化。
基于用于數據收集,處理,可視化和設備管理的開源物聯網平臺Things Board,使用行業標準物聯網協議(MQTT,CoAP和HTTP)實現設備連接,并支持云和本地部署。在設備端使用esp8266 wifi模塊發送curl命令連接至服務器端,將當前的溫濕度,ph值,液位和亮度數據以每隔10分鐘發送一次的速度發送至物聯網平臺。平臺端能夠實時接收并且顯示收到的所有數據,并且通過可定制的最終用戶儀表板上可視化實時和歷史數據。若水質情況出現較大問題,與預設的水質范圍出現偏差,平臺端通過用戶設定的條件進行實時的報警監控,通過郵件方式將報警信息發送給用戶,通知用戶對設備進行調整。在設備斷開連接或不活動事件時也能發出報警,提醒用戶設備異常。圖6為物聯網云平臺整體用戶界面。第一個儀表盤為水體PH值,用戶可以根據儀表盤指針清晰的觀察當前水體的PH值及酸堿度情況。第二個儀表盤為水體TDS質量,TDS值可以清晰的表現出水體中雜質含量,有效的體現水體質量及渾濁物質量。第三個橫向儀表盤為水溫儀表盤。第四個LED形式儀表盤為水位儀表盤,通過LED紅綠燈來表示魚塘液位是否高于預設正常水位值,綠燈為水位正常,紅燈為水位超標。

圖6 物聯網云平臺用戶界面
YOLOv3相比于YOLOv2、Fast R-CNN都有很大的提升,先前的檢測系統利用分類器或定位器來執行檢測。首先生成可能的邊界框,再將模型應用于檢測多個位置和比例的圖像。將檢測到圖像的高概率區域用作結果。YOLOv3使用完全不同的方法。其將單個神經網絡應用于完整圖像。該網絡將圖像劃分為多個區域,并預測每個區域的邊界框和概率。這些邊界框通過預測的概率進行加權平均。與基于分類器的系統相比,YOLOv3具有多個優勢。它在測試時檢測整個圖像,因此其預測結果是由圖像中的全局上下關聯生成的,不像R-CNN這樣的系統需要數千個評估來預測單張圖片,這使其變得非常快,比R-CNN快1000倍以上,比Fast R-CNN快100倍。如圖7是以狗類識別為模型的YOLOv3數據流程圖。

圖7 YOLOv3數據流程圖
在Yolov3模型中,只有卷積層,通過調節卷積步長控制輸出特征圖的尺寸。所以對于輸入圖片尺寸沒有特別限制。流程圖中,輸入圖片以256*256作為樣例。
Yolov3模型的應用借鑒了金字塔特征圖思想,小尺寸特征圖用于檢測大尺寸物體,而大尺寸特征圖檢測小尺寸物體。特征圖的輸出維度為N×N×[3×(4+1+4)] ,N×N為輸出特征圖格點數,一共3個Anchor框,每個框有4維預測框數值 tx,ty,tw,th,1維預測框置信度,4維物體類別數。
Yolov3總共輸出3個特征圖,第一個特征圖下采樣32倍,第二個特征圖下采樣16倍,第三個下采樣8倍。輸入圖像經過Darknet-53(無全連接層),再經過Yoloblock生成的特征圖被當作兩用,第一用為經過3*3卷積層、1*1卷積之后生成特征圖一,第二用為經過1*1卷積層加上采樣層,與Darnet-53網絡的中間層輸出結果進行拼接,產生特征圖二。同樣的循環之后產生特征圖三。

圖8 數據增強—概覽

圖9 數據增強—原圖

圖10 數據增強—翻轉

圖11 數據增強—旋轉
concat操作與加和操作的區別:加和操作來源于ResNet思想,將輸入的特征圖,與輸出特征圖對應維度進行相加;而concat操作源于DenseNet網絡的設計思路,將特征圖按照通道維度直接進行拼接,例如8×8×16的特征圖與8×8×16的特征圖拼接后生成8×8×32的特征圖。
上采樣層(upsample):作用是將小尺寸特征圖通過插值等方法,生成大尺寸圖像。例如使用最近鄰插值算法,將8×8的圖像變換為16×16。上采樣層不改變特征圖的通道數。
使用從百度圖片進行關鍵字爬蟲獲取的四種魚類的圖片作為原始數據集,四種魚類分別為:鯉魚、草魚、鯽魚、鰱魚。原始數據集中包含了130張圖片,每種魚類大概有30多張。之后,按照數據增強的一般方法,將原始圖片進行旋轉、裁切等操作,增多了數據的數量,提高了魯棒性。最后得到的數據集共2800多張圖片。在數據劃分步驟中,以8:2的比例劃分為訓練集和測試集,劃分時采用隨機選擇。
在Ubuntu16.04、python3.6的環境下使用python中自帶的darknet框架進行基于YOLOv3的訓練。由于數據集圖片較少,實驗中將訓練迭代次數控制在千次的量級以防止過擬合問題的出現。

表1 在訓練和驗證過程中采取5折交叉驗證
訓練后保存模型,在測試集上進行測試,得到整體預測框回歸準確率0.786,分類準確率75.6%,較驗證結果來說比較低,推測主要原因仍是訓練數據量太少。
我們使用訓練后模型來進行鯽魚魚苗的捕捉識別測試,效果如圖12所示。

圖12 目標識別代碼實際應用
本系統設計了基于傳感器與機器學習方案實現了智能魚塘水質監測系統及魚類識別方案。通過對市面上可購買的各類傳感器進行分析比對,綜合了成本及傳感器使用精度,選定了合適的傳感器進行水質數據的測量。同時,本文通過自主搭建基于Things Board平臺的物聯網云平臺實現了對水質數據的網絡傳輸以及存儲,并且為用戶提供了便捷直觀的用戶界面,便捷了用戶的使用。同時,本方案借助機器學習及YOLOv3模型對常用魚塘養殖魚類的魚苗進行分析,能夠較為準確的識別常用魚類,方便了用戶對不同的魚類的分辨,實現了對魚類的智能識別功能。