翁 正,陈 明,池 涛,刘亚蕊
(1上海海洋大学信息学院,上海 201306;2 农业农村部渔业信息重点实验室,上海 201306)
2019年全国水产养殖产值共达9 761.89亿元[1],水产品总产量逐年上升。加强水产养殖的信息化建设,建立水产养殖监测、预警和管理的综合体系显得十分重要[2-3]。水质的安全关乎水产养殖的产量和质量[4]。在养殖过程中,对水质实现动态的监测和预警[5],能提升养殖过程的稳健性。传统的水质监测系统,存在系统精度低,系统控制延迟高,不能进行预测和提前预警等不足。江先亮等[6]设计了基于自动无人船的水产养殖水质动态监测系统,提升了监测效率。Fang等[7]设计了具有较好性能的环境监测系统,降低了系统的延迟。刘雨青等[8]开发了基于物联网3层体系架构的螃蟹养殖基地监控系统,但这3项研究都不能预测数据和提前预警。Ren等[9]采用变分模式分解(VMD)方法对数据去噪,基于深度信念网络实现溶氧含量的预测。Heddam等[10]使用最小二乘支持向量机、多元自适应回归样条和M5模型树成功估算溶氧的质量浓度。溶氧是水质的关键指标,通常是监测和分析工作的主要目标[11-12],其含量过低过高都会影响鱼类的生长发育[13]。
综合以上研究的优缺点,提出了一种基于溶氧预测的低延迟水产养殖监测系统。本系统中内嵌了WT-LSTM溶氧预测模型,实现了对水产养殖水质的实时监测和溶氧的实时预测,预测精度不亚于文献[9-10]和当前溶氧主流预测方法中的精度。
系统架构包括数据采集模块、传输模块、控制模块和应用模块。控制模块主要由python上位机、MySQL和云服务组成,应用模块包括Web服务、App客户端、用户服务3部分[14],用户可通过网页客户端查看实时水质数据[15]。系统整体架构如图1所示。
图1 系统架构图Fig.1 System architecture diagram
数据采集模块实现水质数据采集和处理的功能,采样周期为1 min。采集系统电路连接多种传感器获取模拟信号,经过MCU识别和计算后将结果值保存到本地寄存器。采集节点的MCU选用具有超低功耗、快速苏醒、低电压特点的MSP430F149作为控制芯片[16],MSP430F149芯片选用来自高频时钟源XT2(8 MHz)的MCLK信号作为时钟源,时钟周期为125 ns。采集节点的原理实物图如图2所示。
图2 采集节点原理实物图Fig.2 Schematic and physical diagram of acquisition node
传感器电极端直接与水溶液接触产生电势差,信号通过缓冲和放大后送入模数转换模块,温度补偿信号同时送入该模块。MCU对不同传感器的信号进行滤波处理,综合温补计算出结果值,保存到本地寄存器。系统通过SX1268 LoRa射频芯片,与上位机进行数据通信。系统中有PC-101品诚pH、pt100温度、博取仪器DOG-209FYA溶氧、任氏Jenco3020M电导率和LENSHER氨氮5种传感器,性能如表1所示。
表1 传感器性能Tab.1 Performance of sensors
采集终端连接SX1268 LoRa芯片,与上位机端的LoRa射频终端实现无线传输,实现系统的边缘组网。上位机作为主机,发送查询指令[17]给一台或多台从机,与各个采集终端进行点对点通信或广播通信[18],采集终端作为从机,接收信号后将寄存器中的数据返回给上位机。系统采用modbus协议RTU模式进行通讯[19],4个采集设备的地址码,按照01至04的顺序编号。每个终端节点分别用2个寄存器存储不同传感器的数据。终端应答指令中,传感器数据占4个字节,CRC16校验码在最后两个字节。
本研究中,基于SX1268射频芯片,针对不同距离进行了数据通信延迟测试。接收信号强度指示(RSSI)的计算如公式(1)所示。为确保通信延迟和RSSI的准确性,数据通信进行了多次记录,结果取平均值,如公式(2)、(3)所示。
(1)
(2)
(3)
式中:r、ri为分别表示单次和第i次通信的RSSI,dBm;Rp为单包的信号强度,dBm;ti为第i次通信时间,s;tm为平均通信时间,s;Rm为平均通信的RSSI,dBm。
基于速率和有效通讯距离的考虑[20],本试验中,LoRa空中速率设定为2.4 kbps,分包包长为32 B。传输方式为透明传输,通信频率为433.125 MHz。按照不同的距离进行分段测试,最长通信距离为1 000 m[21],选取6种不同字节长度的数据进行双向通信,通信延迟结果图3所示。
图3 LoRa通信延迟Fig.3 LoRa communication latency
丢包测试发现,1 000 m距离的通信出现了丢包的情况,丢包率在1.2%左右。基于图3、4发现,数据通信延迟与距离和RSSI存在正向关联,地理环境对延迟也有一定的影响。1 000 m的通信距离上,地势较开阔,使得延迟相对之前降低了,总体来看,单次通信延迟最低在1 s左右。该测试可为降低系统通信整体延迟提供参考。
图4 LoRa的RSSIFig.4 The RSSI for LoRa
上位机与汇聚芯片通过RS232转USB数据线相连,控制中心代码基于python3编码实现,通过串口实现传输功能。上位机收到终端节点的数据后,识别数据地址码,提取传感器数据值,对CRC16校验码进行计算和对比,确认CRC16无误后,将数据保存本地数据库并上传到云服务器。系统对数据中的溶氧进行判断,若出现异常,则开启增氧机。上位机的主要功能有下发查询指令、接收检验应答数据、计算CRC16校验码、数据保存和上传、数据预测与溶氧预警6大功能。其工作流程图如图5所示。
图5 上位机工作流程Fig.5 Workflow of upper computer
应用边缘计算[22-23]的方法,将云服务器的计算和控制任务卸载到上位机,来降低系统控制延迟。上位机系统实现数据预测的功能,当数据预测或采集数据中出现预警值时,上位机及时向增氧机[24]发出增氧的指令,防范水中出现低氧的情况。上位机系统配置有预测进程和数据收发进程,两个进程并行计算。数据预测流程如图6所示。
图6 数据预测流程Fig.6 Data prediction process
系统通过线性插值或取平均值的方法,对异常数据进行替换,再通过小波变换(WT)的分解和重构消除噪声[25]。对数据进行归一化处理并进行训练,生成参数模型,对溶氧数据进行预测,保存到本地数据库并上传云服务器。
长短期记忆网络(LSTM)是一种递归神经网络,使用时间反向传播进行训练,可以解决梯度消失的问题。LSTM模型单元有遗忘门、输入门和输出门,来保护和控制单元状态[26],如图7所示。LSTM模型的关键是单元状态,即贯穿图表顶部的水平线。每个单元就像一个微型状态机,单元三个门的权重在训练过程中学习得到。遗忘门是主要由σ层组成,σ层根据ht-1和xt的输入,通过sigmoid激活函数计算信息的丢弃情况,生成一个0到1之间的结果ft,0表示全部丢弃,1表示全部保留。ft用于与Ct-1输入矩阵做点乘运算[27],如公式(4)所示。输入门会生成新的信息存储到单元状态中,主要由σ层和tanh层决定,如公式(5),(6)所示。通过公式(7)的运算,单元状态从Ct-1更新为Ct。输出门决定输出的结果,由σ层、tanh层和更新后的单元状态Ct共同决定,如公式8,9所示。
图7 LSTM单元状态图Fig.7 LSTM cell state diagram
ft=σ(Wf·[ht-1,xt]+bf)
(4)
it=σ(Wi·[ht-1,xt]+bi)
(5)
(6)
(7)
ot=σ(Wo[ht-1,xt]+bo)
(8)
ht=ot*tanh(Ct)
(9)
溶氧预警是基于数据监测和溶氧预测来完成。实时监测的溶氧值或1 h内的溶氧预测值,超出正常值范围,系统启动溶氧预警机制,及时告知用户,控制增氧机。当溶氧值回归正常范围十分钟后,系统确认增氧机状态,关闭增氧机。
Web服务包括水质数据监测、数据库管理、溶氧预警、增氧机控制和系统设置5个模块。水质数据监测用于显示01至04号监测点的水质状态和溶氧预测数据。数据库管理可查询历史水质数据,溶氧预警模块监测实时的溶氧值和溶氧预测值,智能化控制增氧机。增氧机控制模块可直接打开或关闭增氧机。
本研究在上海海洋大学内搭建监测平台进行测试,共设置4个终端监测节点,一个汇聚节点,4个节点与汇聚节点的距离分别为118、104、479、917 m,通信区域中间包括树木和教学楼等建筑物,如图8所示。
图8 测试节点设置Fig.8 Test node setup
2021年3月13日15时21分,4个采集节点的数据如表2所示,经过与测量的标准值比较,pH、温度、溶氧、电导率和氨氮的相对误差分别小于1.4%、0.7%、0.2%、12%、5%。本次试验中,4个节点分别采集了2021年3月9日至3月17日13 160个数据,采用周期为1 min,01号节点溶氧的数据如图9所示。
图9 01号监测点溶氧数据Fig.9 Dissolved oxygen data at No.01
表2 各监测点平均相对误差(MRE)Tab.2 Mean relative error (MRE) of each monitoring point
针对01号节点采集的13 160份数据中,将80%的采集数据分配到训练集,用于训练模型,20%的数据作为测试集,用于测试模型效果。LSTM网络中,time_step长度为80,每个数据包含pH、温度、溶氧和氨氮4个参数,输入层输入的样本尺寸为80×4。由于电导率对溶氧预测基本无影响[28],经过实际验证,本试验未考虑电导率。网络中隐藏层神经元个数1 000个,输出层以1 h的溶氧预测值作为输出,输出维度为60×1。LSTM模型是基于keras框架下的模型来构建[29-30]。模型训练时,迭代次数为50次,batch_size为100。生成LSTM模型参数后,用测试集的数据进行预测,预测结果能较好地显示溶氧的变化过程,如图10所示。
图10 测试集预测结果Fig.10 Test set prediction results
LSTM方法对长距离数据依赖关系具有较强的建模能力,与其他预测模型比较,具有记忆性,更适合处理时序数据。本试验中将监测数据设置为经过小波变换前后的2种数据,基于LSTM、RNN和GRU 3种预测方法,产生6种预测结果。本研究选择均方根误差(RMSE)、纳什系数(NSE)、平均绝对误差(MAE)和相关系数(R2)对结果进行评测分析[31],如表3所示,预测结果如图11所示。
表3 模型性能对比分析Tab.3 Comparative analysis of model performance
从图11可看出,对pH、温度、溶氧和氨氮四种参数的数据经过小波变换后,其中的噪声被去除,监测数据变得相对缓和,这更加符合实际情况。
图11 溶氧预测对比Fig.11 Comparison of DO prediction
监测数据去除噪声后,对比预测结果可知,WT-LSTM模型相比LSTM模型的结果,RMSE降低了21.27%,NSE提高了0.3%,MAE降低了21.91%,R2升高了0.1%,预测性能得到全面提升。WT-GRU与GRU结果比较、WT-RNN与RNN结果比较,情况也与之类似。总体来看,经过小波变换除噪后,采用LSTM进行溶氧预测的结果,在RMSE、NSE、MAE、R24种评测系数上表现最佳,因此本研究采用该方法进行数据处理与预测,这一情况在图11的预测结果中也可比较得出。溶氧的预测结果,能较好地解决增氧机控制滞后的问题,这为现代化淡水渔业养殖提供了便利。
带有溶氧预测、低延迟的淡水养殖监测系统实现了对水质的实时监测,pH、温度、溶氧、电导率和氨氮监测数据的相对误差分别小于1.4%、0.7%、0.2%、12%、5%。采用小波变换对采集数据去噪后,利用LSTM预测模型能够较为准确地预测1 h内的溶氧含量,预测结果的RMSE为0.074,NSE为0.993,MAE为0.057,R2为0.997。基于上位机实现溶氧预测和控制任务,降低了系统控制延迟。本研究实现了大面积养殖区域的多点实时监测和溶氧数据的预测,可提前做好溶氧预警防范工作,解决了增氧机控制滞后的问题。由于训练数据集有限,当气温短时间出现较大的变化或开启增氧机后一段时间,系统溶氧预测的准确度会下降。
□