SpringBoot+Vue+深度学习:农作物害虫智能检测系统架构与核心模块设计

📅 2026/7/29 16:33:47 👁️ 阅读次数 📝 编程学习
SpringBoot+Vue+深度学习:农作物害虫智能检测系统架构与核心模块设计

在农业病虫害管理场景中,真正困难的并不是“上传一张图片并返回一个名称”,而是怎样把图像识别、监测预警、防治建议、知识服务和后台管理串成一套可持续运行的业务系统。

本文以一个农作物害虫智能检测项目为例,拆解 Spring Boot、Vue 与深度学习模型的组合方式。系统面向农户、农技人员、区域农业管理人员和平台管理员,覆盖 15 类常见害虫识别,并把单次识别结果继续用于区域监测和防治决策。

本文侧重系统设计与工程实现思路,不展开模型训练数据和论文原文。后续文章将继续拆解数据库、接口、异步识别与可视化模块。

一、为什么不能只做一个“识别接口”

一个能演示的识别接口,通常只包含三步:

  1. 上传图片;
  2. 调用模型;
  3. 返回类别和置信度。

但生产系统还需要解决以下问题:

  • 谁上传了图片,来自哪块农田;
  • 识别任务是否排队、失败或超时;
  • 相同区域的害虫密度是否超过阈值;
  • 天气变化会不会加剧虫害;
  • 不同作物、生长期和危害程度应该采用什么防治方案;
  • 农技人员如何修正错误结果;
  • 管理人员如何查看区域趋势和预警记录。

因此,这个项目没有把 AI 模型直接暴露给前端,而是把它放在完整业务链路中的“智能引擎层”。

二、总体技术架构

系统采用前后端分离设计,可以划分为五层:

层级主要职责推荐技术
访问层PC 管理端、移动端、小程序Vue 3、TypeScript、Element Plus
应用层用户、识别、预警、防治、知识库等业务服务Spring Boot、RESTful API
AI 引擎层图片预处理、模型推理、结果后处理Python 推理服务或独立模型服务
数据层业务数据、图片地址、识别结果、知识库MySQL、对象存储、Redis
基础设施层日志、监控、消息、部署与安全Nginx、Docker、消息队列

应用层进一步拆为七类服务:

  • 图像采集服务;
  • 智能识别服务;
  • 监测预警服务;
  • 防治决策服务;
  • 数据管理服务;
  • 专家服务;
  • 系统管理服务。

这样拆分的好处是:模型可以独立升级,业务规则也可以单独调整,不会因为重新训练模型而影响用户、权限和后台管理功能。

三、核心业务流程

一次完整识别流程可以设计为:

用户上传图片 ↓ Spring Boot 校验文件与用户权限 ↓ 保存原图并创建识别任务 ↓ 异步调用深度学习推理服务 ↓ 写入害虫类别、置信度和候选结果 ↓ 关联作物、地块、时间和天气数据 ↓ 执行预警规则并生成防治建议 ↓ 前端展示结果,必要时由农技人员复核

这里建议采用异步任务,而不是让浏览器一直等待模型推理。创建任务后立即返回taskId,前端轮询任务状态,或者通过 WebSocket 接收完成通知。

任务状态至少包括:

publicenumRecognitionStatus{PENDING,PROCESSING,SUCCESS,FAILED,MANUAL_REVIEW}

当置信度低于业务阈值时,不应直接给出确定结论,而应把任务转入MANUAL_REVIEW,交由农技人员复核。

四、数据库如何建模

核心数据可以拆成六组:

  • sys_user:用户、角色和区域信息;
  • recognition_task:识别任务、图片地址和处理状态;
  • recognition_result:害虫类别、置信度和模型版本;
  • pest_knowledge:害虫特征、危害作物和防治知识;
  • warning_record:预警等级、触发规则和覆盖区域;
  • prevention_record:实际采取的防治措施及效果反馈。

识别任务表的简化结构如下:

CREATETABLErecognition_task(idBIGINTPRIMARYKEY,user_idBIGINTNOTNULL,farmland_idBIGINT,image_urlVARCHAR(500)NOTNULL,statusVARCHAR(32)NOTNULL,model_versionVARCHAR(64),error_messageVARCHAR(500),created_atDATETIMENOTNULL,finished_atDATETIME,INDEXidx_user_created(user_id,created_at),INDEXidx_status_created(status,created_at));

识别结果不要只保存最终类别,还应保存模型版本和原始置信度。模型升级后,才能准确比较不同版本的效果,并对历史图片进行重新识别。

五、预警与防治决策

预警规则不能只依赖一次识别结果。更可靠的做法是综合:

  • 单位时间内同一区域的识别次数;
  • 害虫密度或阳性样本比例;
  • 温度、湿度、降雨等天气因素;
  • 作物类型和生长阶段;
  • 历史虫害发生趋势。

可以先实现可配置的规则引擎:

publicWarningLevelcalculateWarning(BigDecimaldensity,WeatherSnapshotweather,CropStagecropStage){if(density.compareTo(highThreshold)>=0&&weather.isSuitableForPestSpread()){returnWarningLevel.RED;}if(density.compareTo(mediumThreshold)>=0){returnWarningLevel.ORANGE;}returnWarningLevel.NORMAL;}

防治建议则根据“害虫种类 + 危害程度 + 作物 + 生长期 + 气候条件”组合生成。建议内容应明确标注来源、适用条件和更新时间,避免把过期方案长期展示给用户。

六、Vue 管理端的页面设计

PC 管理端可用 Vue 3、TypeScript 和 Element Plus 实现,主要页面包括:

  • 识别任务列表与详情;
  • 害虫知识库维护;
  • 区域监测地图;
  • 预警记录和处理闭环;
  • 防治方案维护;
  • 用户、角色和权限管理;
  • 数据大屏与趋势分析。

数据大屏可以使用 ECharts 展示害虫类别分布、区域趋势、识别成功率和预警处理率。图表只负责展示,聚合计算应放在后端,避免一次向浏览器传输大量明细数据。

七、工程落地时最容易忽略的四件事

1. 图片安全

对上传文件校验 MIME 类型、后缀、大小和真实文件头;图片使用随机文件名,并与 Web 应用目录隔离。

2. 模型版本管理

每条结果都记录模型版本、推理时间和阈值。新模型上线时采用灰度切换,便于快速回退。

3. 失败重试与幂等

模型服务暂时不可用时,任务可以有限次数重试。使用任务 ID 保证幂等,避免同一图片生成多条重复结果。

4. 低置信度人工复核

AI 输出不是最终事实。系统需要允许专家修正,并把复核结果沉淀为后续模型优化的数据。

八、目前的局限与改进方向

该类系统通常面临两个实际限制:一是新害虫和相似类别覆盖不足;二是外部天气接口异常会影响联动预警。

后续可以从三方面改进:

  1. 建立持续补充和标注样本的闭环;
  2. 为天气数据增加本地缓存与降级策略;
  3. 引入模型监控,持续观察置信度分布和人工纠错率。

总结

Spring Boot + Vue + 深度学习的价值,不只是把三个技术名词放在一起,而是用 Spring Boot 管理稳定的业务流程,用 Vue 提供清晰的交互体验,再让模型成为可升级、可监控、可复核的智能能力。

如果你正在做 Java 课程设计、毕业设计或农业数字化项目,可以先按照本文的五层架构搭起主流程,再逐步完善模型、预警规则和数据大屏。后续我会继续拆解这套系统的接口设计、数据库关系和异步任务实现。