← 返回叶护卫 项目价值

🌿 叶护卫 · AI 作物叶片病害诊断

拍一张叶片,10 秒知道是什么病、该怎么做。面向田间真实使用场景设计的移动端诊断系统。

DINOv2 ViT-S/14 迁移微调 关键区域热力图(遮挡敏感性) 知识库约束方案 PWA 离线可用 移动端优先

一、硬指标(田间实测,可复算)

76.5%田间 Top-1
94.9%田间 Top-3
90.1%高置信样本准确率
451田间实测样本(张)
39识别类别
14覆盖作物

实测性能(生产环境,CPU):识别端到端 0.35 秒(含上传 / 预处理 / ONNX 推理 / 知识库方案生成);关键区域热力图按需生成,3×3 首次 3.5 秒、同图缓存 0.34 秒、5×5 精细模式首次 8.8 秒;Top-3 置信度按四位小数输出(如 99.998% / 0.001%),模型不确定时会给出「可能不在覆盖范围内」的提示。
指标口径:以上为 PlantDoc 真实田间照片 451 张的评测结果(含水平翻转 TTA),可逐条复算复核;不是实验室干净背景数据集的成绩。类别构成:39 个识别类别 = 26 种病害 + 12 种作物健康 + 1 种无叶片背景。
我们更看重另一组数字:模型给出 ≥80% 置信度时准确率达 90.1%(223 条样本)—— 它大体知道什么时候不该硬答。配合「低置信度建议复拍」的引导,这对农户比一个虚高的总体准确率更有用。
数据来源:训练用公开数据集 PlantVillage;田间评测用 PlantDoc。混淆矩阵见 交互式混淆矩阵(当前线上模型 · 336 输入 · 逐类可查);静态 PNG 为早期蒸馏版(@288)留档,仅作新旧对比;训练曲线原始数据见 training_history.json。
模型演进全过程:6 代迭代可视化(实验室 94% → 田间 11% → 救回 10 倍,每代可复算)→

二、技术架构

2.1 模型与推理链路

输入 336×336×3(等比缩放 + 中心裁剪)
   │
   ▼
Patch Embedding:Conv 14×14/14(336→24×24)→ 384 维嵌入(ViT-S/14 自监督预训练)
   │
   ▼
Transformer Encoder × 12 层(ViT-S 规模:384 宽 / 6 头 / 577 token)
   · Multi-Head Self-Attention(384 → 6 头,每头 64 维)
   · MLP 隐层 4× 升维 → GELU
   · Pre-Norm + 残差连接 Add(实测 LayerNorm ×25、残差 Add ×85)
   · cls token 取序列首位置作全局表征
   │
   ▼
LayerNorm → 384 维特征
   │
   ├─▶ Linear 384→39 + Softmax ──▶ 病名 + Top-3 置信度
   ├─▶ 遮挡敏感性热力图(逐块遮挡看置信度下降)─▶ 模型关注区域
   └─▶ HSV 病斑分割 ──▶ 严重度:轻 / 中 / 重(病斑占叶比)

2.2 系统分层

层实现说明
前端零依赖原生 JS + PWA首屏 < 40 KB(gzip),可安装到桌面、离线打开
接口FastAPI(REST + SSE 流式)/api/predict 识别、/api/stats/* 统计、/api/atlas/* 图鉴
推理ONNX RuntimeCPU 单张推理,模型权重 42 MB
数据PostgreSQL诊断记录、用户、反馈、历史
部署Nginx + systemd + 定时备份/审计HTTPS、gzip、强缓存、fail2ban

三、创新点

四、功能清单

模块能力
识别拍照 / 相册 / 文字描述三种入口;Top-3 + 热力图 + 严重度 + 防治方案;一键重拍
图鉴39 个类别(26 种病害 + 12 健康 + 1 背景),按作物筛选,含症状描述与防治要点
看板累计诊断、今日诊断、病种分布、作物分布、严重度结构、近 30 天趋势
答题看图识病训练,成绩记录,用于农技培训与自查
报告一键生成可打印/另存 PDF 的诊断报告;生成分享卡片图片
无障碍深色模式、特大字(适老)、键盘焦点可见、对比度达标

五、复现与部署

# 1) 训练(GPU 可选,10 epoch 即可收敛)
python train.py --data ./data --epochs 10

# 2) 评测(Top-1/Top-3、每类 P/R/F1、混淆矩阵)
python eval.py --weights weights/best_model.pth

# 3) 导出 ONNX
python export_onnx.py --weights weights/best_model.pth

# 4) 启动服务
uvicorn server.main:app --host 0.0.0.0 --port 8000

# 5) 前端(静态即用)
#    将前端目录挂到 Nginx 站点,按需配置 HTTPS / gzip / 缓存

训练细节、增量数据与消融实验见仓库 docs/;模型权重已随仓库提供(weights/*.onnx)。

六、边界与声明

叶护卫 · 作物叶片病害诊断系统 · 本站自建部署(FastAPI + ONNX + PostgreSQL)

🧠 AI 网关管理

运维入口:挂载 / 切换 / 测活大模型上游。农技员等模块会自动优先使用健康上游, 上游全部不可用时降级为「确定性知识库兜底」,功能不中断。

进入管理 →