草地过度放牧 AI 监测系统 — 完整技术架构、算法流程与参数配置说明。
开始 ↓ 用户上传无人机航拍图像(JPG/PNG/TIFF,最大 50MB) ↓ EXIF GPS 元数据解析(自动提取经纬度、海拔、拍摄时间) ↓ SAHI 切片推理:大图 → 640×640 切片(20% 重叠) ↓ YOLO 双模型并行检测 ├── cow_weight_v1.pt → 牛检测(ICAERUS 无人机专用模型) └── yolov8m_sheep.pt → 羊检测(YOLOv8m 预训练) ↓ VARI 植被指数计算 VARI = (Green - Red) / (Green + Red - Blue) 阈值 > -0.05 判定为植被覆盖区 ↓ 按 GeoJSON 分区统计(每个管理区域独立计算) ├── 牲畜数量(牛 × 5 + 羊) ├── 植被覆盖面积(m²) └── 载畜量 = 牲畜数 / (植被面积 × 牧草利用率) ↓ 载畜量超标判定(标准:NY/T 635-2015) 载畜量 > 超载阈值(默认 1.2 羊单位/亩/天)→ 触发告警 ↓ 生成分析报告 + 标注图 + 牧草热力图 + 微信通知 ↓ 结束
| 字段 | 说明 |
|---|---|
| 功能名称 | 草地过度放牧 AI 监测系统 — Grassland Overgrazing Detection |
| 适用场景 | 草原牧场无人机巡检,自动识别牛羊数量、评估植被覆盖、计算载畜量、判定是否过度放牧 |
| 开发语言 | Python 3.12+(后端 Flask)+ HTML5/CSS3/JavaScript(前端) |
| 核心依赖 | flask ultralytics opencv-python-headless Pillow shapely exifread numpy |
| AI 模型 | YOLO 双模型:cow_weight_v1.pt(ICAERUS 牛专用)+ yolov8m_sheep.pt(羊检测),配合 SAHI 切片推理 |
| GIS 引擎 | Leaflet.js + Leaflet Draw + GeoJSON,支持在线/离线底图、多边形分区绘制与编辑 |
| 数据存储 | SQLite(grassland.db),分区 GeoJSON + 分析历史记录持久化 |
| 通知方式 | 企业微信 Webhook 推送超载告警 |
| 载畜量标准 | NY/T 635-2015 天然草地载畜量计算标准 |
1. 项目目录结构
grassland/ ├── backend/ │ ├── app.py ← Flask 应用工厂(create_app 模式) │ ├── config.py ← 全局配置(模型路径、阈值、载畜量参数) │ ├── routes/ │ │ ├── upload.py ← POST /api/upload(上传 + EXIF 解析) │ │ ├── analysis.py ← POST /api/analyze(YOLO + SAHI + 载畜量) │ │ ├── zones.py ← CRUD /api/zones(GeoJSON 分区管理) │ │ └── history.py ← GET /api/history(分析历史) │ ├── services/ │ │ ├── zone_manager.py ← SQLite 分区 CRUD + 初始化 │ │ └── exif_parser.py ← EXIF GPS 元数据提取 │ ├── models/ │ │ └── detector.py ← LivestockDetector(SAHI + YOLO 双模型) │ ├── templates/ │ │ ├── index.html ← 主监测页面 │ │ └── report.html ← 分析报告页 │ ├── static/weights/ │ │ ├── cow_weight_v1.pt ← ICAERUS 牛检测模型 │ │ └── yolov8m_sheep.pt ← 羊检测模型 │ └── data/ │ ├── grassland.db ← SQLite 数据库 │ ├── uploads/ ← 上传航拍图 │ └── results/ ← 分析结果(标注图 + 热力图) └── frontend/ ├── index.html ← 前端备用 └── static/ ├── css/app.css ← 主样式 └── js/ ← upload.js / map.js / results.js / history.js
2. SAHI 切片推理引擎
针对无人机高分辨率航拍图(4000×3000px 以上),直接送入 YOLO 会导致小目标漏检。系统采用 SAHI(Slicing Aided Hyper Inference) 切片策略:大图切分为 640×640 切片(20% 重叠),每片独立推理后 NMS 合并。参数:SAHI_SLICE_SIZE=640,SAHI_OVERLAP_RATIO=0.2。
3. YOLO 双模型协同检测(LivestockDetector)
牛检测:cow_weight_v1.pt(ICAERUS 无人机专用模型),针对高空俯拍视角优化。
羊检测:yolov8m_sheep.pt(YOLOv8m 预训练 + 羊类微调),m 系列平衡精度与速度。
推理参数:conf=0.50, iou=0.45,双模型独立推理后合并检测结果。
Lazy Load:首次 detect() 调用时才加载模型,减少启动时间。
4. VARI 植被指数计算
使用 VARI(Visible Atmospheric Resistant Index) 评估植被覆盖:VARI = (G - R) / (G + R - B)。阈值 > VARI_VEGETATION_THRESHOLD(默认 -0.05)判定为植被区。相比 NDVI,VARI 仅需 RGB 三通道,无需近红外波段,适配消费级无人机 RGB 相机。
5. 载畜量计算与超载判定
基于 NY/T 635-2015 标准:
羊单位换算:1 头牛 = 5 个羊单位
日食量:1 羊单位 = 1.8 kg/天(干草)
载畜量 = 总羊单位 / (植被面积 × 牧草利用率 × 生物量系数 / 日食量 / 放牧天数)
超载判定:载畜量 > OVERLOAD_THRESHOLD(默认 1.2 倍)→ 触发告警 + 微信通知
6. GeoJSON 分区管理(SQLite 持久化)
前端 Leaflet Draw 绘制多边形 → GeoJSON → POST /api/zones → SQLite 存储。支持 CRUD 操作、JSON 导入/导出。每个分区独立统计牲畜数量和载畜量,支持按分区生成逐区分析报告。
app.py (Flask 应用工厂) ├── config.py ──────────────────── 全局参数(模型路径、阈值、载畜量标准) ├── routes/upload.py (Blueprint) │ └── services/exif_parser.py ── EXIF GPS 元数据提取 ├── routes/analysis.py (Blueprint) │ ├── models/detector.py ─────── LivestockDetector(SAHI + YOLO 双模型) │ ├── VARI 计算 ──────────────── 植被指数分析 │ └── 载畜量公式 ──────────────── NY/T 635-2015 标准 ├── routes/zones.py (Blueprint) │ └── services/zone_manager.py ── SQLite CRUD + GeoJSON 序列化 ├── routes/history.py (Blueprint) │ └── grassland.db ────────────── 分析历史记录查询 ├── static/weights/ │ ├── cow_weight_v1.pt ───────── ICAERUS 牛检测模型 │ └── yolov8m_sheep.pt ───────── 羊检测模型 └── data/ ───────────────────────── uploads/ + results/ + grassland.db
| 方法 | 路径 | 说明 |
|---|---|---|
| POST | /api/upload | 上传航拍图像 + EXIF GPS 解析 |
| POST | /api/analyze | 执行分析:YOLO 检测 + VARI + 载畜量计算 |
| GET | /api/zones | 获取所有管理分区(GeoJSON) |
| POST | /api/zones | 创建新分区 |
| PUT | /api/zones/<id> | 更新分区名称/GeoJSON/颜色 |
| DELETE | /api/zones/<id> | 删除分区 |
| GET | /api/history | 查询分析历史记录 |
| GET | /api/health | 健康检查 |
| GET | /static/results/<file> | 查看分析结果图片 |
本文系统引用以下学术成果与技术标准。
SAHI: Slicing Aided Hyper Inference for Small Object Detection. IEEE ICIP 2022. 本项目大图切片推理的方法论基础。
Ultralytics YOLOv8: State-of-the-Art Object Detection. 牛羊检测核心框架,YOLOv8m 羊模型。
EU Horizon ICAERUS Project: UAV-based Livestock Detection. 无人机专用牛检测模型来源。
VARI: Visible Atmospherically Resistant Index. Geophysical Research Letters. RGB 植被指数算法。
天然草地载畜量计算标准。中华人民共和国农业行业标准。载畜量公式与参数依据。
Open-Source JavaScript Library for Interactive Maps. 前端地图引擎与 GeoJSON 交互。