03 / 2026 / 已结题

基于跨结构蒸馏的水稻叶部病害轻量识别模型

国家级大学生创新创业训练计划项目,面向边缘设备上的农业病害识别,研究跨结构知识蒸馏、渐进式剪枝与重参数化。

基于跨结构蒸馏的水稻叶部病害轻量识别模型

问题

如何在保持识别能力的同时降低农业视觉模型的复杂度,使其更适合资源受限设备部署?

角色

负责人;负责总体方案设计、数据预处理、模型构建与训练、蒸馏/剪枝策略、消融与对比实验、项目结题。

方法

构建教师—学生跨结构知识蒸馏框架,结合模型压缩、渐进式剪枝与重参数化,围绕边缘部署需求降低模型复杂度。

结果

项目级别为国家级,项目主持人刘金润,结题时间为 2026-06-18,验收等级为合格。关联成果包括水稻病害检测相关第一发明人专利。

水稻病虫害与成熟度检测网站

基于 Flask、PyTorch 与定制 Ultralytics YOLO 的农业视觉检测平台,支持图片上传、多模型切换、检测结果可视化和推理耗时展示。

Flask · PyTorch · YOLO · Computer Vision · DashScope

真实运行效果

水稻检测网站真实运行页面

使用本项目 Flask 服务和本地模型实际运行得到的页面截图,非设计稿或合成图。

项目简介

本项目将目标检测模型封装为 Web 应用。用户可上传或拖放农作物图片,选择不同权重完成推理,页面会展示标注结果、检测摘要以及预处理、推理和后处理耗时。

核心流程:

浏览器上传图片
      ↓
Flask /predict 接口
      ↓
按名称加载并缓存 YOLO 模型
      ↓
目标检测与结果图生成
      ↓
JSON 返回检测摘要、图片地址和耗时

功能

  • 水稻病虫害与成熟度图片检测
  • 图片选择、拖放上传与结果预览
  • 多个本地 YOLO 权重在线切换
  • 检测框可视化与推理耗时统计
  • 模型实例缓存,避免重复加载
  • 简单的注册、登录与 API 密钥演示页面
  • 可选的 DashScope AI 知识问答

内置模型

界面选项 用途
starNetCCFF 默认水稻检测模型
wheat 小麦检测模型
apple_best 苹果检测模型
banana_best 香蕉检测模型
orange_best 柑橘检测模型
strawberry_best 草莓检测模型
tomato_best 番茄检测模型

static/weights/ 中还保留了 yolov11.pt 与 yolov12.pt 检查点,可按需要接入界面。

已验证环境

本项目已在以下本机环境完成启动验证:

项目 版本/结果
Python 3.9.23
PyTorch 2.7.1
Flask 3.1.0
OpenCV 4.12.0
首页 HTTP 200
默认模型 starNetCCFF.pt 加载成功

不建议使用 Python 3.9.0:它与较新的 aiohttp 类型声明存在兼容问题。请使用 Python 3.9 的较新补丁版本,本项目验证的是 3.9.23。

快速开始

1. 创建环境

conda create -n rice-web python=3.9.23 -y
conda activate rice-web
pip install -r requirements.txt

2. 配置本地登录

PowerShell 示例:

$env:FLASK_SECRET_KEY = "请替换为一段足够长的随机字符串"
$env:DEMO_USERNAME = "admin"
$env:DEMO_PASSWORD = "请替换为强密码"

也可以不设置演示账号,启动后通过注册页面创建仅在当前进程内有效的用户。

3. 启动网站

请从仓库根目录运行:

python -B -m flask --app app run --host 127.0.0.1 --port 5000

浏览器访问:http://127.0.0.1:5000

可选:启用 AI 问答

pip install -r requirements-chat.txt
$env:DASHSCOPE_APP_ID = "你的应用 ID"
$env:DASHSCOPE_API_KEY = "你的 API Key"

未安装或未配置 DashScope 时,/chat 会返回 HTTP 503,但图片检测等核心功能仍可正常使用。

主要接口

图片检测

POST /predict,表单字段:

  • image:待检测图片
  • model:模型名称,默认 starNetCCFF

响应包含结果图片路径、检测摘要以及三个阶段的耗时。

项目结构

.
├── app.py                    # Flask 应用与推理接口
├── assets/
│   └── website-home.png      # 真实运行截图
├── templates/                # 页面模板
├── static/
│   ├── css/                  # 页面样式
│   ├── js/                   # 前端交互
│   ├── file/                 # 页面素材
│   └── weights/              # 模型权重
├── ultralytics/              # 定制 YOLO / StarNet 实现
├── requirements.txt          # 核心依赖
├── requirements-chat.txt     # 可选 AI 问答依赖
└── .env.example              # 环境变量示例

安全与限制

  • 不要在源码或 Git 历史中提交 Flask 密钥、账号密码或 DashScope API Key。
  • API 密钥生成页面目前是前端演示,并非可用于生产环境的身份认证系统。
  • 用户数据保存在进程内存中,重启服务后会清空。
  • 上传文件和推理结果使用共享目录,不适合多用户高并发部署。
  • 检测结果仅供学习、研究和项目展示,不替代专业农作物病害诊断。

许可证与第三方说明

仓库包含基于 Ultralytics 8.3.23 修改的代码,其上游采用 GNU AGPL-3.0。相关代码与本项目的公开分发应遵循 LICENSE 以及各第三方组件的原始许可和署名要求。