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 以及各第三方组件的原始许可和署名要求。