陈泽,毕美华,周豪, 郭宸,郭祺赟,王裕翔,王琰,方楠
(杭州电子科技大学通信工程学院,浙江杭州,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模型对常用鱼塘养殖鱼类的鱼苗进行分析,能够较为准确的识别常用鱼类,方便了用户对不同的鱼类的分辨,实现了对鱼类的智能识别功能。