基于微信小程序的农林业有害生物智能识别系统
2021-09-10金傲梁博天
金傲 梁博天
摘要:本论文主要阐述了农林业有害生物智能识别系统的开发过程,详细讲述了系统的需求、总体结构、程序模块设计及林业有害生物AI识虫系统的测试结果等,并对整个系统进行了总结分析。
关键词:农林害虫;MINA; Django ; yolo-v5 ; pytorch
1.引言
1.1背景
我国是一个林业资源消耗大国,然而原生森林面积小,资源并不丰富。林木生长过程中每年都会遇到害虫的侵害,灾害严重时,甚至会导致树木大面积死亡。害虫防治方法非常多,而化学农药是最为常用的手段之一,害虫种类识别一旦发生错误,就会造成农药的滥用,使环境受到污染、食品安全和生态破坏等问题发生。因此,在害虫防治过程中,最重要的还是害虫的预警和检测。能否准确有效地对昆虫进行分类鉴定和识别也是能否及时展开虫害防治、避免造成巨大资源、经济损失的一个重要前提。
昆虫属于无脊椎动物中的节肢动物,是自然环境中种类和数量最多的动物群体,已发现的昆虫种类就有100多万种。昆虫的形态多变、纹理丰富。这就给昆虫识别鉴定的时候造成很大的难度。传统的昆虫分类鉴定工作主要靠昆虫专家或昆虫分类人员根据专业知识和研究经验或参照文献资料来进行识别鉴定的,但即使有专业的知识和丰富的经验也很难避免种类混淆的情况发生,因此,开发一种针对害虫的快速有效的分类识别系将有助于作物害虫的防治,促进农业发展,减少经济损失。
1.2定位
基于计算机视觉的害虫识别是基于多项高新技术的综合应用,其关键模块涉及视频图像获取、深度学习、机器学习、高性能计算等技术。
作为载体的微信小程序是时下流行的轻量级应用,基于微信的社交场景平台以及为开发者提供的支持,本产品具有小体量以及工具化的特点。
2.林业有害生物智能识别系统特点
2.1 系统使用轻量化载体
前端开发使用微信小程序平台,能实现跨平台,无需针对iOS和Android平台分别开发两套代码。而微信小程序限制2MB以内,并提供云服务和许多接口,用户无需安装下载即可使用。
2.2 功能多样性强
用户可通过小程序对害虫进行拍摄识别,以实时获取所遇到害虫的种类,同时小程序也支持相册图片上传识别,可以对参考资料中或来不及立即检测的昆虫图片进行识别。小程序中包含着害虫的基础资料库,每当识别成功害虫,用户可以通过底部菜单栏的资料功能查看该害虫的基本资料。小程序还包含社区交流功能,当遇到小程序内未收纳的害虫或病害等可在社区对其他用户发起问题咨询。
2.3 基础资料库时效性强
小程序包含的资料库会不定期更新,且管理人员会根据社区内遇到的新害虫或病害不断完善资料库,收纳的资料会根据用户的反馈实时、动态的进行响应。面对新发生的灾害也会及时扩大资料库,方便使用者获取最新消息。
3.系统总体设计
整个识别系统主要由用户终端、传输部分、信息处理和数据返回等几部分组成。
1、用户端:用户端使用手机授权登录微信小程序,可通过手机摄像头(一般为前置摄像头)拍摄照片,或读取手机内存空间,上传照片。
2、传输部分:用户上传的图片由为微信小程序前端传递到云服务器上部署的Django后端。
3、信息处理与数据返回:后端搭载yolo-v5昆虫识别模型,对图片进行处理,读取数据库后,返回昆虫种类、IoU(交并比)、Acc(准确率)等识别信息。
4、前端结果显示:监测到后端返回的信息后,将关键信息在用户端识别页面上进行打印显示。
4.功能模块设计
4.1 用户信息模块
为了平台的安全性以及软件的结构性,用户在进入平台后需要进行登录,主要包含用户基本信息,授权登录的微信账号、发布问题等内容。
4.2昆虫识别处理模块
图片处理模块中有两种模式,单击摄像头拍照按钮,启动照相机进行现场拍摄,处理摄像头当前捕捉的画面。单击从相册上传按钮,选择本地图像文件进行上传到前端。
收集到的图像会被传入后端,后端会将图像进行识别处理。加载yolo-v5识别模型,识别图片,将收集到的标签信息与数据库中的标签信息进行比较,返回识别出的昆虫的名称和相关信息。
4.3 社区模块
这一模块提供社区交流功能,用户可通过用户信息界面在社区发布自己的问题,同时提供评论功能,便于用户间交流信息。
4.4 资料库模块
这一模块通过两层索引,实现按植物类型分类查找病虫害以及对应内容,包括危害特征,发生特点,防治措施。
4.5 运行控制
用户授权登陆后进入首页图像处理模块,可以实现昆虫图像拍摄,图像上传,查看识别信息等功能。在资料库模块,可以通过植物种类和名称查看主要危害昆虫相关资料。在社区模块可以查看他人帖子,并发表评论。在用户信息系可以查看基本信息以及发帖、反馈漏洞。
5.微信小程序前端开发
前端开发是在微信小程序开发者工具平台下开发完成,设计了首页、资料、社区交流、用户信息四个界面。小程序的开发用了官方提供的框架—MINA框架,它由视图层、逻辑层和系统层三个部分构成。[2]MINA框架实现了基于TCP/IP协议的Socket封装,具有良好的封装性灵活扩展性,可高效完成不同计算机进程间的通信[3],让微信小程序用尽可能简单高效的方式完成总体的开发具有原生 APP 体验的服务。
用户在手机端拍照或上传图片后,图片将自动上传至云服务器,经后端接收对比识别后,识别结果再返回至用户微信端。用户也可通过手机微信直接获取云服務器存储的基础资料库,来查找对应作物病虫害的防治手段等。
6.昆虫识别算法实现
昆虫识别基于yolo-v5方法,本算法主要由yolo-v5的目标检测模块,以及后置的SENet分类矫正模块组成。上述算法两部分依次进行,先使用YoloV5得出检测框和分类结果,然后将检测框裁剪出来使用分类网络进一步矫正分类结果,最后通过一个改进的NMS方案得到最终结果。
为避免系统默认python版本的冲突,这里使用anaconda创建了一个python3.7的环境,其下安装一些必要的依赖,并测试了gpu训练加速的效果,由于前期准备不足和硬件的限制,暂时准备使用cpu训练规模比较小的测试数据集进行尝试。
Yolov5方法下,首先将图片处理压缩,使输入尺寸为416*416,然后进入CSPNET特征提取网络,用残差结构经过上采样,DBL特征提取后输出三个13*13特征图,每个特征图对应3种anchor大小不同的负责预测目标。
7.云服务器后端部署
本项目开发采用了前后端分离开发原则,后端基于Django框架进行開发。Django采用MVC模型,即Model View Controller,模型(model)-视图(view)-控制器(controller) [4],使用业务逻辑、数据、界面显示分离的方法组织代码,将业务逻辑聚集到一个部件里面,在版本迭代时不需要重新编写业务逻辑为满足后端保持运行。Django业务逻辑中引入yolov5识别模型,通过get请求获取图片,post回传识别结果。使用web服务,通过云服务器地址传递信息。
根据需求,django后端使用腾讯云服务器搭载,根据微信小程序安全需求,不再使用IP作为目标,采取基于https协议的域名地址。它具有更高的安全性以及传输保障,使得数据传输过程中被窃取的风险大大降低,用户安全性得以提高。
8.软件界面
9.结语
本项目基于微信小程序,针对不同用户对林叶害虫种类识别与林业虫害防治措施的信息需求,实时给予用户害虫种类、虫害预防措施及补救措施等消息的设计方案,运用微信组件、腾讯云基础架构、YOLOv5算法实现林叶害虫智能识别系统的研发。平台可完成害虫种类识别、虫害防治措施信息获取、社区问题交流等功能,且仅需用户具备微信功能即可使用,无需下载安装,实现用完即走的理想模式,使用方便推广简单。本系统可带动林业害虫防治从“信息化”向“智慧化”发展,即使缺乏相关专业知识也能通过本系统便捷的获取相关信息,减轻了林业防治人员的负担,也提高了林业防治的管理效率。
参考文献:
[1]倪红军.微信小程序案例开发[M].北京:清华大学出版社,2020.
[2]马静.基于微信小程序差旅补助系统的设计与实现[J].科技创新与生产力.2020,(08):52-54.
[3]Lee T.,2006.Introduction to MINA(2020-2-25).
[4]ASP.NET MVC.CodePlex(2013-04-13)