AI精准农业:遥感估产与病虫害智能识别
农业是 AI 落地最容易被低估的领域之一。一方面场景足够分散、环境足够恶劣很多实验室模型下田就死另一方面需求又极其刚性——估产直接关系到粮食贸易和保险定价病虫害晚发现一周可能就是三成减产。本文聊两个技术上最成熟的方向基于遥感的作物估产和基于视觉的病虫害识别重点放在工程实现而非论文综述。遥感估产从像素到产量遥感估产的数据源主要分三层卫星Sentinel-2 免费、10 米分辨率高分系列国产卫星Planet 商业星座 3 米级每日重访、无人机厘米级灵活但覆盖小、地面传感器土壤墒情、气象站。技术路线的核心链条是影像预处理 → 植被指数与特征提取 → 作物分类/长势监测 → 产量回归建模。植被指数是最基础的特征。NDVI归一化植被指数用红光和近红外波段的反射率差异刻画植被长势几乎所有估产模型都以它为起点。但 NDVI 在高生物量时期会饱和——作物长得太密指数就顶到天花板不再变化。所以实际项目里通常组合多个指数| 指数 | 计算公式核心波段 | 特点 | 典型用途 | |------|----------------|------|---------| | NDVI | NIR、Red | 通用但高密度下饱和 | 长势监测基线 | | EVI | NIR、Red、Blue | 抗大气和土壤背景干扰 | 高生物量时期 | | NDWI | NIR、SWIR | 对水分敏感 | 干旱胁迫监测 | | SAVI | NIR、Red 土壤系数 | 稀疏植被区校正土壤影响 | 苗期监测 |估产建模有两条路线。机理路线用作物生长模型如 WOFOST、DSSAT模拟光合作用、干物质积累的物理过程遥感的角色是给模型做数据同化和参数校准。数据驱动路线直接拿时序植被指数 气象数据训练回归模型随机森林、LSTM、Transformer 都行跳过机理。纯数据驱动在数据充足的平原主产区效果已经很好但跨区域泛化差机理模型可迁移但参数标定繁琐。工业界的主流答案是混合机理模型出结构机器学习修正残差。地块识别才是隐藏的地基很多估产项目失败不是模型不行而是底图不对。中国耕地细碎化严重一户可能只有几亩分散的田块作物类型、播期都不一样。没有对每个地块的准确边界和种植结构识别估产就是空中楼阁。地块提取本质上是遥感影像分割问题常用 U-Net、DeepLabV3进阶方案用 Segment AnythingSAM做预训练分割骨干再微调。作物分类则是时序分类问题——单一时相很难区分玉米和大豆但把它们整个生育期的 NDVI 曲线拉出来形态差异非常明显Transformer 和 1D-CNN 在这类时序分类上表现都不错。一个 NDVI 时序计算的实战示例下面的代码演示如何用 rasterio 从 Sentinel-2 波段计算 NDVI这是估产管线的第一步import numpy as np import rasterio from rasterio.enums import Resampling def compute_ndvi(red_path: str, nir_path: str, out_path: str): # Sentinel-2: B04红光(10m), B08近红外(10m) with rasterio.open(red_path) as red_src, \ rasterio.open(nir_path) as nir_src: red red_src.read(1).astype(float32) nir nir_src.read( 1, out_shape(red_src.height, red_src.width), resamplingResampling.bilinear ).astype(float32) # 云掩膜建议用 SCL 波段或 s2cloudless此处略 np.seterr(divideignore, invalidignore) ndvi (nir - red) / (nir red) ndvi np.clip(ndvi, -1, 1) profile red_src.profile.copy() profile.update(dtypefloat32, count1, nodata-999) with rasterio.open(out_path, w, **profile) as dst: dst.write(ndvi, 1) compute_ndvi(B04_red.tif, B08_nir.tif, ndvi.tif)拿到单时相 NDVI 只是开始估产需要的是时序栈把每个生育期出苗、拔节、抽穗、灌浆的指数拼成特征向量再叠加上积温、降水、日照时数。工程上最大的麻烦其实是云——南方水稻区关键生育期经常连续阴天光学影像大面积缺失这时要引入 SAR合成孔径雷达如 Sentinel-1数据雷达穿云对水稻这种淹水作物还有独特的后向散射特征。病虫害识别田间场景的硬仗病虫害识别在公开数据集PlantVillage 之类上准确率动辄 99%但那个数字有很强的误导性PlantVillage 的图像是实验室条件下单片叶子、纯色背景拍的。真实田间的图像是叶片互相遮挡、光照剧烈变化、病斑处于不同发展阶段、镜头上还可能有泥点。把实验室模型直接部署到田间准确率掉到 60% 都不奇怪。靠谱的工程策略有这么几条数据层面必须建田间自有数据集。拍法有讲究固定拍摄距离和角度可以做个简易支架、一天中固定时段拍、覆盖病害发展的多个阶段。数据增广要模拟真实扰动——亮度抖动、模糊、遮挡 patch而不是简单的翻转旋转。小样本类别罕见病害可以用扩散模型做生成式增广但需要植保专家把关生成样本的病理特征是否