NB-IoT 架构下的农场虫害监测预警系统
2020-11-25仇国华陶威宇黄裕泉张发全
仇国华, 陶威宇, 黄裕泉, 张发全
(福建技术师范学院a. 电子与信息工程学院;b. 现代设施农业福建省高校工程研究中心,福建福清 350300 )
随着物联网的高速发展和普及, 物联网技术已成为新一代信息技术的重要组成部分. 与此同时, 随着农业生产管理的不断革新, 现代农业管理技术水平正大步迈入智能化时代[1-2]. 例如在文献[3-6]中分别介绍的基于WiFi、ZigBee、4G 路由器等联网式农业生产管理, 但是存在着成本高、功耗高, 或者仅适用于小区域的局限性. 在2019 年的中央一号文件中明确提出加快突破农业关键核心技术, 推动智慧农业创新的发展要求[2], 更加促进了农业物联网应用技术的发展. 近几年, 窄带物联网(NB-IoT) 作为物联网领域新兴的技术, 凭借其低功耗、高速率、广域网等特性迅速成为应用的研究热点[7]. 当前我国农业逐步进入广域性大面积种植的农场模式,在这种粗放型、广域性种植模式下, 农作物虫害等问题造成的经济损失超出原先小户种植范围. 因此充分运用现代化技术能促进新农业发展,提高经济效益,实现农业生产的转型升级.目前基于NB-IoT 物联网技术对广域农作物生产的监测和预警等方面的研究还不够深入.
文章所述NB-IoT 架构下的广域农场虫害监测预警系统的研究主要关注两个方面:一是基于NB-IoT 物联网架构实现了对广域虫害的监测和预警功能, 系统有效地实现了负载均衡,通过实验验证了可靠性;二是通过对底层获取的图像提取LBP 特征, 建立图像对应的统计直方图, 进而实现与样本库的有效比对, 建议了合理的比对样本数, 并且对于不匹配虫类实现了图片上传功能.
1 系统设计
系统主要由吸虫灯、太阳能充电供电系统、ARM 核控制器、NB-IoT 模块、检测模块、OV7725 图像处理模块、电机及电机驱动模块、病虫收纳箱等模块组成. 基于广域农作物虫害监测和预警的应用特性, 系统供电方式采用太阳能系统, 避免了长距离的输电消耗. 系统的运行流程主要分为感知层、传输层、服务层和应用层[8], 如图1 所示.
在感知层, 系统前端利用吸虫灯、性诱剂等进行诱虫, 当有虫掉落时, 检测装置中的红外对管被触发, 立即启动电击模块,将虫电晕置于传送带上, 传送带将虫传送到图像处理指定区域获取图像. 基于ARM Cortex-M7 处理器的STM32F765 芯片作为底层主控芯片, 通过SCCB 接口控制OV 摄像头提取LBP 特征与样本图像进行对比, 当识别为益虫时, 启动推板装置, 将虫扫到本装置外, 当识别为害虫时则继续传送到吸虫收纳箱. 系统感知层的硬件设计架构见图2.
在传输层, 图像处理的数据与多路传感器采集的数据共同打包, 通过串口通信发送给NB-IoT 模块,NB-IoT 模块通过SIM 卡驻网, 利用CoAP 协议进行数据透传, 通过天线建立与NB 基站的通信,NB 基站作为中转,继续将数据打包发送给CoAP 服务器[9]. 后台服务器通过MQTT 协 议 与WebSocket 协 议, 获得CoAP 服务器的数据包, 这样就完成了一次数据传输.
图1 系统运行流程图
图2 系统感知层硬件架构图
在服务层, 采用基于Spring Cloud 的分布式微服务架构[10], 搭建好数据处理微服务, 采用轻量级的FastDFS 分布式文件系统, 协议层中通过MQTT 协议与WebSocket 协议与CoAP服务器实时地交互数据. 获得数据包后, 一方面对数据进行集中处理, 利用Mycat 分布式集群高可用的特性处理对应数据后, 存储到对应MySQL 数据库表中. 另一方面提供后台RestFul API 接口. 当面对高并发的访问量与请求量时, 采用RabbitMQ 消息队列及Redis 的分布式缓存, 实现接口的负载均衡[11-12], 在服务器中搭建基于LVS+Nginx 的代理负载均衡. 前端通过发起异步的Ajax 请求与后台交互数据,将请求到的JSON 数据解析得到所需数据. 通过异步的Ajax 请求从后台的响应中取得所需数据在页面中展现, 对于新品种虫害系统提供图片上传功能, 底层嵌入式芯片无法识别的害虫可以上传到网站, 供专家分析和预警.
在应用层, 展示底层解析后所传上来的数据, 主要由PC 端网页、移动端微信小程序、安卓App 组成, 通过请求Servlet 接口可以获得相应数据. 另外, 系统服务器提供了二次开发API 接口, 用户可通过TCP/IP、WebSocket 等方式建立与服务器的通信取得相应数据包进行自定义开发.
系统采用基于ARM Cortex-M7 内核的嵌入式芯片进行图像处理, 系统初始化后, 判断是否有虫进入触发( 虫害信息触发发送), 或者是否进入对应时间节点( 环境参数定时发送). 如果满足其一, 则进行一次图像或环境数据采集, 最后图像信息及环境参数可视化到前端. 当检测到异常图像信息时发出预警, 向后台及用户提请审核.
2 系统网络构建
2.1 分布式微服务(Web 后端)
系统后端采用基于Spring Cloud 的分布式微服务架构[10]. 面对高并发的请求量, 采用RabbitMQ 的消息队列进行并发处理. 数据库持久层方面, 采用Mybatis 及JPA, 不仅可以灵活地改变SQL 语句, 更可以轻松地自动建表,利用Mycat 对数据库表进行读写分离、分库分表. 在后台利用MQTT+Websocket 协议对物联网服务器推送消息, 进行订阅取得数据, 获得数据在后台集中处理封装后, 提供数据服务接口供前台调用. 另外核心数据存储于数据库持久层, 临时数据则利用Redis 缓存进行存储.
2.2 PC 端和移动端(Web 前端)
Web 前端通过异步的Ajax 请求向后台的RestFUL API 接口发起一次异步请求, 解析取得的JSON 数据得到所需虫害监测数据, 并在前台门户网站的相应界面展示, 提示用户做出相应防治措施. 用户可根据实际虫害数量的情况以及网站给出的建议措施进行相应的预防. 移动端平台包括微信小程序和安卓APP,用户可以随时随地查看数据监测中心的数据.
2.3 云服务器ECS
云服务器ECS (Elastic Compute Service) 是一种弹性可伸缩的计算服务[13], 在ESC 云服务中,实现了基于LVS (Linux 操作系统下)+Nginx( 反向代理) 的软负载均衡. 利用Nginx 拦截下所有http80 端口的请求, 并由Nginx 服务反向代理服务器上门户网站、后台管理等其他端口, 用户登陆门户网站即可访问到系统信息中心平台,查看相应的虫害预测数据.
2.4 分布式架构
考虑到实际应用时的大范围部署情况, 收集的虫害数据可能面临超大量, 考虑到单机服务无法承受大数据的情况, 因此系统中搭建多个集群(cluster) 实现分布式系统. 分布式架构主要由RabbitMQ 分布式消息队列、Mycat 分布式数据库中间件、Redis 分布式缓存、FastDFS分布式文件系统组成.
3 图像处理分析
LBP 特征提取图像处理算法流程见图3. 图中的训练样本集流程可以方便用户录入新发现的虫类品种, 完善系统的样本库.
图3 图像处理算法流程图
3.1 图像灰度化
灰度图像的每个像素颜色值称为灰度, 一般从0 到255, 黑色为0, 白色为255. 灰度直方图是对一幅数字图像中每一个灰度值对应的像素数的图示[14]. 大部分的彩色图像都是采用RGB 颜色模式, 而RGB 并不能反映图像的形态特征, 只是从光学的原理上进行颜色的调配[15].在形态特征辨别中处理图像的时候, 要分别对RGB 三种分量进行处理, 此处依据人眼对绿色和蓝色敏感度的不同, 将RGB 三个分量以不同的权值, 进行加权平均可得(1) 式.
设置OV7725 摄像头从RGB565 模式切换为输出灰度图模式, 并且设置为QQVGA 模式,输出虫子的灰度图像见图4. 利用灰度图的二值化直观性, 可以直接获得色彩阈值, 在Lab色彩模式下可以体现RGB 和CMYK 两种色彩模式的不足. 进一步从色度信息中将亮度信息分离了出来, 选择采用YUV 色彩模型, 并且在处理中对同一帧图像的色度和亮度采用不一样的采样率, 最后统计得到灰度色彩空间直方图、LAB 色彩空间直方图、YUV 色彩空间直方图分别见图5-7.
图4 害虫图像灰度图
图5 灰度色彩空间直方图
图6 LAB 色彩空间直方图
图7 YUV 色彩空间直方图
3.2 LBP 特征提取
LBP(Local Binary Pattern, 局部二值模式)是一种用来描述图像局部纹理特征的算子, 适用于纹理特征提取. 该算子具备的显著优点是旋转不变性和灰度不变性, 在1994 年由T.Ojala等人提出[16]. 为了更有效地消除光照对图像的影响,LBP 算子利用该像素点与周围像素点的关系进行量化. 只要图像光照的差异没有改变两个点像素值的大小关系, 那么LBP 算子的值就不会发生改变, 因此基于LBP 的识别算法屏蔽了图像的光照差异[17].
设中心像素点外的像素点数为p,(Xc,Yc)中心像素亮度是Ic,Ip是相邻像素的亮度,LBP 可以被定义为(2) 式. 其中S(x)是一个符号函数,表达式如(3) 式所示.
LBP 原始的算子定义在3×3 的窗口, 选取窗口中心像素值为阈值, 窗口周边的8 个像素的灰度值与之对比, 若其像素值大于阈值,则该位置被标记为1, 否则标记为0. 如此可以得到一个8 位二进制数, 将这个值作为窗口中心像素点的LBP 值, 以此来表示这个3×3 窗口的纹理信息[16,18].LBP 领域像素矩阵具体变换过程见图8.
图8 原始LBP 算子变换
按顺时针方向取值可得LBP 特征值为(11001001), 该二进制数转化为十进制数得201,即这一点的LBP 值为201. 将一幅图像划分为若干同等大小的子区域, 在每个子区域中都参考上述方法对像素点提取LBP 特征, 这样每个子区域都可以建立LBP 特征直方图, 由此每个子区域都对应一个统计直方图来描述, 这若干个统计直方图就组成了整个图片. 处理器提取当前图像的LBP 特征与样本LBP 特征进行比对. 通过与不同害虫图像进行辨比, 获得当前图像LBP 特征与样本图像LBP 特征的差异度,特征差异越小则认为被检测图像与样本图像越匹配.
4 实验与分析
实验测试选取三类虫(蝗虫、二化螟、稻飞虱)作为样本, 选择不同数量的样本图像数据进行对比, 检测LBP 特征提取的成功率. 实验中录入不同样本图片各测试300 次, 取得的不同次数匹配成功率及数学期望见表1. 由测试结果可知, 并不是样本数量越多识别成功率越高. 通过不断的测试验证发现, 随着样本数量增多的同时误判的概率也在不断增多, 因此系统制定合理的样本数量才能达到最佳的识别效果. 文章所介绍图像识别成功率没有达到满意值, 除了采用的LBP 特征提取算法的局限性之外, 系统基于OV7725 的640×480 像素基础采集图像也是一个限制因素, 建议实际应用中选择更高像素的摄像头来获取图像资料.
NB-IoT 是物联网领域的新兴技术, 目前此技术的应用主要在远程的路灯管理、水电表抄录、井盖防失等领域. 系统在实现类似的数据监测之外, 还尝试实现了负载均衡, 并且在NB-IoT 有限的180 kHz 带宽中实现对新品种虫害图片的上传功能, 在这一点上相较于以上方案更是提高了应用价值.
5 结论
文章描述了基于NB-IoT 架构下的虫害监测预警系统, 依托部署在感知层的摄像头等传感器, 获取农作物的生长环境和虫类图像等信息. 通过提取虫类图像的LBP 特征进而区分虫的类别, 合并环境数据上传到服务器. 系统基于Spring Cloud 分布式微服务架构, 实现广域农作物种植的生态信息联网和远程诊断决策等智能管理目标. 系统方案经过验证能够较好地实现预期目标, 为助力广域农作物虫害监测预警和生产管理提供有力的支撑, 能够促进农作物管理由广域粗放型向广域智慧精准模式演变.
表 1 样本图片匹配成功率