尧图网络 高端网站定制 · 原创设计
免费咨询热线
400-888-6620
免费获取方案
我用 ASP.NET Core 做了个水稻病虫害检查系统
上传一张叶片照片AI 告诉你它得了什么病大家好我是码农刚子。前阵子回了趟老家正赶上水稻抽穗发现一件挺头疼的事。村里谁家田里叶子出了斑点第一反应不是找农技员——镇上的农技站本来就没几个人下一趟田得排好几天。大家习惯找村里种了一辈子地的老农民给看看。但老农民的经验有两个问题。一是不一定叫得准稻瘟和纹枯早期症状像同一个村几个老人看法能不一样二是人不在跟前就没辙年轻人在外打工视频里说不清照片发过去老人也看不清。病虫害这东西早一天识别和晚一天产量差出去一大截。等农技员排到、等老人有空来看可能就过了最佳防治期。我就想能不能搞个东西手机拍张照当场就知道是什么病、该打什么药不用求人、不用等。说干就干用我最熟的.NET 技术栈搭了一套。做完之后效果比预想的好准确率能到 94.78%。这篇把整个过程拆给你看。01 先把痛点想清楚水稻病虫害的诊断传统路子有两个绕不开的问题。一是靠老农民经验。经验靠谱但不总能用上——老人不一定在跟前不同人判断还可能打架。年轻人没那份积累对着病叶干瞪眼。二是靠书靠农技员。病虫害图谱翻起来费劲症状描述又专业对着照片对不上号农技站人手少排队下田等不起。所以这个系统的目标很明确拍照 → 识别 → 给防治建议三步搞定不需要任何专业背景。02 技术栈怎么选既然是毕业设计我没选 PythonFlask 那条最常见的路而是全栈用 .NET。理由很简单一个语言贯穿前后端调试起来省事。核心技术栈是这样的后端ASP.NET Core 8 MVC C# 12数据Entity Framework Core 8 SQLiteCode FirstAI 推理ML.NET ONNXDenseNet1216 类水稻病害前端Razor Bootstrap 5 ECharts认证ASP.NET Core Identity管理员 / 普通用户双角色这里面最有意思的是 ML.NET。很多人以为 .NET 搞 AI 只能调 Python 接口其实 ML.NET 能直接加载 ONNX 模型在进程内推理不用起 Python 服务部署就一个进程。03 模型从哪来自己从零训练一个模型不现实标注数据就是个大坑。我找了 HuggingFace 上一个开源的水稻病害预训练模型架构是 DenseNet121在 Rice_Leaf_AUG 数据集上微调过。六类输出刚好覆盖水稻最常见的叶片病害白叶枯病、褐斑病、健康、稻瘟病、叶枯病、纹枯病下载下来是 PyTorch 的 .pth 权重我用 timm 重建模型结构再导出成 ONNX。整个过程在 CPU 上跑没用到显卡。导出的 ONNX 模型输入 224×224输出 6 维 logits。验证集准确率94.78%做毕业设计够用了。04 推理管道怎么跑图片进来之后MLPredictionService 干这么几件事加载图片ML.NET 的 LoadImages 转换读取本地图片预处理Resize 到 224×224ExtractPixels 提取像素并归一化推理ApplyOnnxModel 加载 ONNX 模型输出 6 维 logits后处理Softmax 归一化取置信度最高的类别匹配知识库根据类别名查 Pest 表返回症状和防治方法有个细节 worth 一提。模型文件可能不存在比如部署时忘了放我做了个降级策略检测到模型加载失败自动切到模拟预测模式基于图片路径生成稳定结果。这样系统永远能跑不会因为缺个模型文件就崩了。05 功能长什么样系统一共六大模块我把核心的几个过一遍。图像检测拖拽或点击上传图片几秒后返回病虫害名称、置信度以及从知识库里匹配出来的防治建议。界面上还能看到各类别的概率分布。病虫害知识库内置了 9 种常见水稻病虫害的详细信息包括症状、危害、防治方法。支持按类别筛选和关键词搜索。管理员可以新增和编辑。数据统计用 ECharts 画了近 30 天检测趋势折线图和病虫害分布饼图一眼能看出最近哪种病高发。权限管理基于 Identity 做的双角色。普通用户能检测、看记录管理员额外有用户管理、知识库维护、操作日志查看权限。06 踩过的坑开发过程中踩了几个印象比较深的坑写出来供参考。ONNX 输出维度。一开始用的是 ImageNet 预训练的 MobileNetV2输出 1000 维得自己映射到水稻病害标签。后来换成专门训练的 DenseNet121输出就是 6 维直接对得上标签省了好多事。InMemory 数据库测试。单元测试用 EF Core 的 InMemory 提供程序自增 ID 的行为跟真实数据库不一样硬编码 ID 会挂。改成取实际返回记录的 ID 就好了。前端静态资源。Bootstrap 和 jQuery 的 CDN 偶尔加载失败换成了本地文件兜底确保断网也能跑。最后跑了一遍单元测试26 个用例全过核心服务层的逻辑基本覆盖到了。07 写在最后说实话做这个项目最大的收获不是技术本身而是把一个真实场景的问题用自己熟悉的工具链从零到一地解决掉。以前总觉得 AI 推理是 Python 的地盘做完才发现 .NET 这边生态也挺成熟。ML.NET ONNX 的组合让一个普通的 ASP.NET Core Web 应用也能跑深度学习模型而且部署特别干净。当然这个系统还有不少可以完善的地方。目前只覆盖了 6 类叶片病害虫害稻飞虱、二化螟这些还没纳入移动端适配也只是基础响应式没有专门做小程序。但作为一个毕业设计的完整项目该有的都有了。 想拿到完整源码 ONNX 模型 论文草稿见我的博客原文我用 ASP.NET Core 做了个水稻病虫害检查系统 - 码录集
RELATED

相关推荐

计算机小白必看:大模型时代,如何升级你的开发能力?

计算机小白必看:大模型时代,如何升级你的开发能力?

随着大模型技术的迅猛发展,计算机专业学生的就业方向正在发生变化。文章指出,企业现在更需要能够利用AI解决实际问题的程序员,而不仅仅是会写代码的人。对于计算机学生来说,AI应用开发是一个全新的方向,它要求学生具备…

📅 2026/10/9 5:32:26
Claude Code 接上 MCP:从代码工具到 AI 创作工作台

Claude Code 接上 MCP:从代码工具到 AI 创作工作台

如果你对 Claude Code 的印象还停留在“一个自动写代码的命令行 Agent”,那我建议你先放下这个刻板印象。最近我把 Claude Code 和 Ace Data Cloud 的 MCP 服务接了起来,原本只想解决“写作时想查一点历史素材,结果资料散落在各个表格和云盘里…

📅 2026/10/9 5:32:26
MASTG iOS 非生产资源详解:如何识别并从生产构建中剔除调试日志、测试端点与开发凭据

MASTG iOS 非生产资源详解:如何识别并从生产构建中剔除调试日志、测试端点与开发凭据

文档教程网络安全 【免费下载链接】mastg The OWASP Mobile Application Security Testing Guide (MASTG) is a comprehensive manual for mobile app security testing and reverse engineering. It describes technical processes for verifying the OWASP Mobile Security W…

📅 2026/10/9 5:27:26
MORE NEWS

更多资讯

📰

微信小程序点餐系统开发实战:从登录、支付到后厨订单流转

1. 项目背景与需求拆解聊一个我最近完整落地的小程序项目:咖啡店点餐系统。做这项目的初衷很直接——店里人工收银排队时间太长,顾客到柜台后还要抬头看菜单、反复确认冷热/糖度/杯型,高峰期很容易乱。用微信小程序做点餐,本质就是…

📰

SQL注入之ORDER BY注入:Less-48无回显场景的报错与盲注实战

打sqli-labs打到第48关的人,多半已经对报错注入、布尔盲注这些基础操作很熟了。但Less-48有个特点,它不像前面那些关卡给你一个明显的“注入点”,而是一个藏在sort参数里的数字型ORDER BY注入,而且页面照常渲染数据,可…

📰

服务器防御怎么选?DDoS/CC攻击与多层防护实战指南

1. 先说结论:服务器防御到底在防什么做运维和网站业务的这些年,我见过太多人一上来就问“服务器防御怎么选”,但真聊下去才发现,他们其实并不知道自己要防的是什么。这个问题特别关键——因为选防御方案不是挑一个最贵的套餐就完事…

📰

Java会议管理系统源码实战:从环境搭建到二次开发避坑

简介:面向Java学习者和轻量级会议管理场景,这份基于JDK12与MySQL8.0构建的会议管理系统源码包,围绕会议创建、修改、删除、参会人员管理、日程安排等核心流程展开,适合作为高校课程设计或Java技术栈入门项目的参考。压缩包共41个文…

📰

Hadoop中MapReduce之Job提交与切片信息详解:从TaoToken统一Key通道看任务初始化链路

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

📰

root配置指令全解:从Linux系统到数据库的安全管理

最近一段时间,我被问到最多的一个问题,就是“配置指令-root”。有人要给 MariaDB 的 root 设置密码,有人 Ubuntu 切 root 切不过去,还有人 CentOS 7 把 root 密码忘了急得团团转。仔细一看,大家问的其实是同一件事&…

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

读完文章,想聊聊您的网站?

告诉我们您的行业与需求,资深顾问一对一梳理方案与报价,全程免费。

📞 💬