kuldeepsisodiya/Smart-Detection
GitHub: kuldeepsisodiya/Smart-Detection
基于计算机视觉的农作物病害诊断与自动化灌溉管理平台,支持边缘部署、规则引擎联动硬件阀门控制及天气风险预警。
Stars: 0 | Forks: 0
# 农作物病害检测与智能灌溉中控系统
一个智能、自主的农艺系统,能够分析农作物叶片感染情况,并使用可自定义规则动态管理农场水阀。专为在本地边缘控制器(例如 Raspberry Pi 5)和桌面环境中部署而设计。
由 ❤️ 打造,致力于极致的视觉排版美学。
## 🏗️ 系统架构
本项目实现了 **安全的后端代理推理** 模型。为了保护开发者凭证,私有的 Roboflow API Key 完全保留在后端 `.env` 变量中,永远不会暴露给客户端 JavaScript。
### 数据流管道
```
flowchart TD
A[Webcam / Drag-Drop Image] -->|1. Base64 POST| B[Flask API Endpoint]
B -->|2. Reads Secret Key| C{Environment / DB}
C -->|API Key Present| D[Roboflow Inference SDK Client]
C -->|Offline Mode| E[Local Simulated Prediction]
D -->|3. Serverless Inference| F[Roboflow API Server]
F -->|4. Predictions JSON| D
D -->|5. Bounding Box Coordinates| G[Inference Router]
E -->|5. Mock Coordinates| G
G -->|6. SQL Insert| H[(SQLite Database)]
G -->|7. Evaluate Rules| I[Smart Rules Matcher]
I -->|8. Toggle Relay| J[GPIO Valve Controller]
I -->|9. Warning Alert| K[SMTP Email Alerts]
G -->|10. Final JSON Payload| L[Browser Client JS]
L -->|11. Draw Boxes| M[HTML5 Canvas Overlay]
L -->|12. Speak Warning| N[Text-to-Speech Output]
```
## 🌟 核心功能
1. **🔒 安全的后端推理**:所有模型调用均通过本地 Python 环境进行代理。Roboflow API 密钥在管理页面中进行了掩码处理。
2. **🤖 智能规则引擎**:自定义规则引擎允许管理员将特定农作物品种和病害状态与置信度阈值进行匹配,以执行相应操作:
* **启动灌溉**:循环开启阀门 $X$ 秒。
* **停止灌溉**:关闭阀门(这对于防止真菌孢子在潮湿叶面上繁殖至关重要)。
* **仅通知**:向农艺师发送异步 SMTP 邮件警报。
* **不执行操作**:记录指标以进行被动观察。
3. **🌦️ 微气候天气风险顾问**:利用客户端浏览器的地理定位坐标直接查询免费的 Open-Meteo 天气 API,以计算农作物湿度风险预警。
4. **📊 分析仪表盘**:内置 Apache ECharts,用于展示时间轴分布、病害严重程度百分比(🟢 正常,🟡 中度,🔴 严重)以及灌溉日志历史。
5. **📁 批量图像处理器**:拖拽式文件界面,支持顺序上传、异步队列日志、进度跟踪器以及汇总的总结报告。
6. **📜 分页时间线**:交互式诊断历史面板,支持搜索过滤器、原图与检测结果对比滑块、PDF 诊断报告导出器以及 CSV 原始数据下载。
## 🧪 研究得出的农药施用剂量
本系统包含精确的化学防治建议阈值,以协助农民进行补救:
| 农作物类别 | 诊断病害 | 推荐农药 | 精确施用剂量 | 频率 |
| :--- | :--- | :--- | :--- | :--- |
| **番茄 / 马铃薯** | 晚疫病 | Mancozeb (Dithane M-45) | `2.0 - 2.5 克 / 升` | 潮湿天气下每 5-7 天一次 |
| **番茄 / 马铃薯** | 早疫病 | Chlorothalonil (Daconil) | `1.5 - 2.0 毫升 / 升` | 发现斑点后每 7-10 天一次 |
| **玉米** | 普通锈病 | Pyraclostrobin (Headline) | `0.8 - 1.2 毫升 / 升` | 出现脓疱时施用;14天后重复 |
| **苹果** | 苹果锈病 | Myclobutanil (Immunox) | `1.25 毫升 / 升` | 花瓣脱落后,每周一次持续 3 周 |
| **苹果** | 苹果黑星病 | Captan 80 WDG / Sulfur | `2.5 克 / 升` | 绿蕾期,每周一次持续 2 个周期 |
| **所有作物** | 普通锈病 | Copper Octanoate Soap | `1.5 克 / 升` | 每 7-10 天喷洒叶面 |
| **所有作物** | 普通黑星病 | Lime-Sulfur spray | `2.0 毫升 / 升` | 潮湿春季期间每周施用 |
## 🛠️ 本地设置与运行
### 1. 环境要求
* Python 3.9+(完全兼容至 Python 3.14)
* SQLite3
### 2. 安装说明
克隆项目仓库,初始化 Python 虚拟环境并安装依赖项:
```
# 创建并激活虚拟环境
python3 -m venv .venv
source .venv/bin/activate
# 安装依赖 (包含 inference-sdk 和视觉需求)
pip install -r requirements.txt
```
### 3. 环境配置
在根文件夹中创建 `.env` 文件以安全地配置环境变量:
```
ROBOFLOW_API_KEY=your_private_api_key
```
### 4. 运行应用
启动 Flask Web 应用服务器:
```
python3 app.py
```
在浏览器中打开 **`http://localhost:5001/`**。
* **管理员角色**:用户名 `admin` / 密码 `admin`
* **农户角色**:用户名 `farmer` / 密码 `farmer`
## ⚙️ 硬件控制 (Raspberry Pi 5)
当在 Raspberry Pi 5 上运行时,应用程序会尝试使用 `gpiozero` 与 **GPIO Pin 18** 交互,以控制物理灌溉继电器。在非 Pi 环境(如 Mac、Linux 或 Windows PC)中,它会平滑地降级到 **模拟 GPIO 驱动**,将阀门状态更新打印到终端控制台,从而确保完整的产品演示完美运行。
*由 Kuldeep Sisodiya 倾情打造❤️*
标签:Flask, 农作物病害检测, 多包管理, 智慧农业, 智能灌溉, 物联网控制, 自定义脚本, 计算机视觉, 边缘计算, 逆向工具