无人机+AI:精准农业的"降维打击"实践
一、为什么"无人机+AI"正在重塑农业
1.1 传统农业的三座大山
- 信息不对称:田间真实情况靠人眼判断,误差大、滞后长。
- 资源浪费:农药、化肥平均过量施用 20 %--40 %。
- 规模瓶颈:人工巡田一天 < 800 亩,难以支撑规模种植。
1.2 "无人机+AI"带来的指数级改进
维度 | 人工/传统农机 | 无人机+AI | 提升倍数 |
---|---|---|---|
巡田效率 | 800 亩/天 | 10 000 亩/天 | 12.5× |
变量施肥精度 | 地块级(>1 ha) | 株级(~10 cm) | 100× |
植保用药量 | 100 % | 70 %--80 % | 节省 20 %--30 % |
二、系统架构:一张图看懂数据流
markdown
┌─────────────┐ ┌──────────────┐ ┌──────────────┐
│ 无人机 │───→│ 边缘计算盒 │───→│ 云端AI平台 │
│ 多光谱相机 │ ←──│ RTK/4G/5G │ ←──│ 农事决策引擎 │
└─────────────┘ └──────────────┘ └──────────────┘
│ │
│ NDVI、RGB、热红外 │处方图、预警
▼ ▼
┌────────────────────────────────────────────────────────┐
│ 农场数字孪生(Digital Twin) │
│ - 土壤养分 3D 网格 │
│ - 作物长势时序预测 │
│ - 病虫害概率热力图 │
└────────────────────────────────────────────────────────┘
三、硬件清单与选型思路
组件 | 推荐型号 | 关键参数 | 选型理由 |
---|---|---|---|
无人机 | DJI M350 RTK | 55 min 续航、IP55、PSDK 开放 | 载重与可靠性兼顾 |
多光谱相机 | MicaSense RedEdge-P | 5 波段+RGB、12 bit、全局快门 | 农学级光谱精度 |
边缘计算 | NVIDIA Jetson Orin Nano | 40 TOPS、20 W | 实时推理无延迟 |
地面基站 | LoRaWAN+4G 双链路 | 10 km 覆盖、断网续传 | 田间网络无死角 |
提示:如果预算有限,可先用 DJI Mini 4 Pro+开源光谱仪组合,把 MVP(最小可行产品)跑通再升级。
四、代码实战:从原始图像到变量处方图
本示例基于 Python 3.10 + OpenCV + PyTorch,全部代码可复现。
4.1 环境准备
bash
conda create -n agri python=3.10
conda activate agri
pip install opencv-python rasterio geopandas pytorch-lightning albumentations
4.2 数据预处理:对齐多光谱与RGB
python
import rasterio
from rasterio.enums import Resampling
def align_band(src_path, ref_path, dst_path):
"""把5个波段全部对齐到RGB空间分辨率(如3 cm/px)"""
with rasterio.open(ref_path) as ref:
ref_transform = ref.transform
ref_shape = ref.shape
with rasterio.open(src_path) as src:
band = src.read(
out_shape=ref_shape,
resampling=Resampling.nearest
)
meta = src.meta.copy()
meta.update({
'height': ref_shape[0],
'width': ref_shape[1],
'transform': ref_transform
})
with rasterio.open(dst_path, 'w', **meta) as dst:
dst.write(band)
4.3 计算 NDVI + 作物健康掩膜
python
import numpy as np
def compute_ndvi(red_path, nir_path, th=0.4):
red = rasterio.open(red_path).read(1).astype(np.float32)
nir = rasterio.open(nir_path).read(1).astype(np.float32)
np.seterr(divide='ignore', invalid='ignore')
ndvi = np.where((nir+red)==0., 0, (nir-red)/(nir+red))
mask = ndvi > th # 健康作物区域
return ndvi, mask
4.4 深度学习:病虫害检测(YOLOv8s-seg 微调)
4.4.1 数据集构建
- 采集 2 000 张无人机 RGB 原图(分辨率 4000×3000)。
- 使用 Labelme 标注"锈病"、"蚜虫"、"健康"三类实例分割。
- 按 8:1:1 切分 train/val/test。
4.4.2 训练脚本(单卡 3080 1h 收敛)
python
from ultralytics import YOLO
model = YOLO('yolov8s-seg.pt')
model.train(
data='agri.yaml',
epochs=50,
imgsz=640,
batch=16,
lr0=1e-3,
augment=True,
project='runs/agri_pest_seg'
)
4.4.3 推理并生成热力图
python
from ultralytics import YOLO
import cv2
import numpy as np
model = YOLO('runs/agri_pest_seg/weights/best.pt')
img = cv2.imread('DJI_001.jpg')
results = model.predict(img, conf=0.3)
# 生成像素级病害概率
prob_map = np.zeros(img.shape[:2], dtype=np.float32)
for mask, score in zip(results[0].masks.data, results[0].boxes.conf):
if results[0].names[int(results[0].boxes.cls)] == 'rust':
prob_map[mask.cpu().numpy().astype(bool)] = score
cv2.imwrite('rust_prob.png', prob_map*255)
4.5 变量施肥处方图(VRA Map)
将 NDVI 与病害概率融合,生成 10×10 m 网格施肥量。
python
import geopandas as gpd
from shapely.geometry import box
def create_vra_map(ndvi_path, prob_path, grid_size=10):
ndvi = rasterio.open(ndvi_path).read(1)
prob = rasterio.open(prob_path).read(1)
# 简单模型:健康 & 无病→减量;病&低NDVI→增量
rate = np.where((ndvi>0.4)&(prob<0.2), 20,
np.where(prob>0.5, 60, 40))
# 转为矢量网格
with rasterio.open(ndvi_path) as src:
transform = src.transform
rows, cols = rate.shape
polys, vals = [], []
for row in range(0, rows, grid_size):
for col in range(0, cols, grid_size):
x, y = transform * (col, row)
polys.append(box(x, y, x+grid_size*transform[0], y-grid_size*transform[4]))
vals.append(np.mean(rate[row:row+grid_size, col:col+grid_size]))
gdf = gpd.GeoDataFrame({'rate': vals}, geometry=polys, crs=src.crs)
gdf.to_file('vra_grid.shp')
4.6 一键下发到无人机
大疆 Terra + 农业无人机支持直接导入 Shapefile;
或调用 PSDK 的 missionManager
自动切割航线:
cpp
WaypointV2Mission mission;
mission.addWaypoint({lat, lng, height, rate}); // rate 来自 vra_grid.shp
mission.start();
五、实战案例:2000 亩玉米基地全流程
时间节点 | 任务 | AI输出 | 效果 |
---|---|---|---|
播种后 7 d | 出苗率监测 | NDVI<0.2 区域标识补种 | 缺苗率 < 1 % |
拔节期 | 变量施肥 | 10 m 网格处方图 | 氮肥节省 22 % |
大喇叭口期 | 病害预警 | 锈病早发热点 3 处 | 精准点喷,未扩散 |
收获前 10 d | 产量预测 | 3D 点云测产 | 预测误差 4.7 % |
数据来源:黑龙江八五六农场 2024 年示范区报告。
六、常见坑与解决方案
问题 | 原因 | 对策 |
---|---|---|
多光谱图像畸变 | 快门不同步 | 外触发+全局快门相机 |
边缘计算掉帧 | 散热不足 | 加风扇+降频到 20 W |
模型过拟合 | 数据分布单一 | 跨地域采集+色调增强 |
RTK 信号漂移 | 基站距离远 | 架设本地 CORS 基站 |
七、未来展望:从精准到自主
- 端到端决策:大模型+强化学习直接输出"何时、何地、做什么"。
- 蜂群协同:多机并行,5000 亩巡田 < 30 min。
- 碳排核算:结合 NDVI、施肥记录自动生成碳足迹报告,参与碳交易。