AI+农业应用入门:从数据采集到模型推理的完整落地步骤

想在农业场景里用上 AI,不一定先买昂贵设备。
一台普通云服务器加一个 USB 摄像头或模拟传感器数据,就能跑通“采集—处理—推理—反馈”的最小闭环。
本文按零基础可照做的顺序,讲清环境准备、数据接入、模型调用和结果检查,最后给出常见故障的排查方向。

先明确你要跑通的最小流程

农业 AI 应用范围很广,包括病害识别、长势监测、灌溉决策等。
对新手来说,最现实的切入点是单张图片或单条传感器数据的分类推理,先验证链路通不通,再考虑多设备和大规模部署。

开始前请确认以下条件:

  • 一台 Linux 云服务器或本地虚拟机,建议 2 核 4G 以上,Ubuntu 22.04 或 Debian 12 均可。
  • 已安装 python3 和 pip,可通过 python3 --version 检查。
  • 一个可用的图片或 CSV 数据样本,例如作物叶片照片或温湿度记录。
  • 能通过 SSH 登录服务器,具备 sudo 权限。

如果使用宝塔面板,可以在“软件商店”中安装 Python 项目管理器,但本文以命令行方式为主,便于复现和排错。

安装依赖并准备推理环境

登录服务器后,先创建独立虚拟环境,避免污染系统 Python:

sudo apt update
sudo apt install -y python3-venv python3-pip
mkdir -p ~/agri-ai && cd ~/agri-ai
python3 -m venv venv
source venv/bin/activate
pip install --upgrade pip
pip install numpy pandas pillow onnxruntime

这里选用 onnxruntime 作为推理引擎,它体积小、CPU 即可运行,适合农业场景中常见的边缘设备或低配服务器。
安装完成后用 pip list 确认 onnxruntime 出现在列表中。

如果服务器无法访问外网,需要提前配置内网 pip 源或离线安装包,否则 pip install 会卡在下载阶段。

接入数据:从传感器或文件读取

农业数据来源通常分两类:实时传感器和离线文件。
新手建议先用 CSV 文件模拟,跑通后再换成串口或 MQTT 数据。

假设有一份 sensor.csv,包含 temperature 和 humidity 两列。
用 Python 读取并做简单清洗:

import pandas as pd

df = pd.read_csv('sensor.csv')
df = df.dropna()
df['temperature'] = df['temperature'].astype(float)
print(df.head())

如果数据来自摄像头,可以用 OpenCV 抓取一帧并保存为图片,再送入模型。
注意图片尺寸要与模型输入保持一致,常见为 224×224 或 640×640,具体取决于你使用的模型。

避坑点:传感器数据常出现空值或单位不一致,直接喂给模型会导致推理结果异常。
建议在读取后先检查 df.isnull().sum() 和数值范围。

调用轻量模型完成一次推理

为了不依赖 GPU,这里以 ONNX 格式的作物病害分类模型为例。
假设模型文件为 crop_model.onnx,输入为 1×3×224×224 的图片张量。

import onnxruntime as ort
import numpy as np
from PIL import Image

session = ort.InferenceSession('crop_model.onnx')
input_name = session.get_inputs()[0].name

img = Image.open('leaf.jpg').convert('RGB').resize((224, 224))
arr = np.array(img).astype(np.float32) / 255.0
arr = np.transpose(arr, (2, 0, 1))[None, ...]

result = session.run(None, {input_name: arr})[0]
print(result)

运行后应得到一组概率值或分类标签。
如果输出全为 0 或报错 Invalid input shape,优先检查图片通道数、尺寸和归一化方式是否与模型训练时一致。

模型文件需要从可信来源获取,或使用公开的农业图像数据集自行训练后导出。
不要直接使用来路不明的模型文件,以免引入安全风险。

把结果变成可用的农业反馈

拿到推理结果后,需要映射回业务含义。
例如输出索引 0 表示健康,1 表示叶斑病,2 表示锈病。
可以写一个简单映射字典,并把结果写入日志或通过接口返回:

labels = {0: '健康', 1: '叶斑病', 2: '锈病'}
pred = int(np.argmax(result))
print('识别结果:', labels.get(pred, '未知'))

如果需要定时采集,可以用 cron 每 30 分钟执行一次脚本:

crontab -e
# 添加一行
*/30 * * * * cd /home/ubuntu/agri-ai && ./venv/bin/python infer.py >> infer.log 2>&1

之后用 tail -f infer.log 观察输出,确认任务按预期运行。

常见报错与排查方向

  • ModuleNotFoundError: No module named 'onnxruntime':虚拟环境未激活或安装失败,重新执行 source venv/bin/activate 后再安装。
  • Invalid input shape:图片尺寸或通道顺序不匹配,检查是否做了 transpose 和归一化。
  • 推理结果始终不变:输入数据可能全为同一张图或未做预处理,打印 arr.shape 和 arr.min() 确认。
  • 定时任务不执行:检查 cron 服务状态 systemctl status cron,并确认脚本路径使用绝对路径。

验证效果与下一步扩展

完成上述步骤后,用 3 到 5 张不同图片或不同时间段的数据重复推理,观察输出是否随输入变化。
如果结果合理,说明最小链路已经跑通;
如果偏差较大,优先回查数据质量和模型输入格式。

后续可以按需扩展:接入真实传感器、增加图片上传接口、把结果推送到手机通知,或者改用更轻量的量化模型降低资源占用。
每一步都建议先在小样本上验证,再投入生产环境。

AI+农业应用教程的核心不是一次部署多复杂,而是先让数据流动起来,再逐步替换和优化。
按照本文顺序操作,遇到异常时回看避坑部分,多数环境问题都能定位到具体命令或配置项。

分享到:
上一篇
AI能耗优化配置:从GPU调频到推理批处理
下一篇
AI病虫害识别配置:零基础搭建图像识别服务
1
系统公告

泽御云中秋国庆双节活动上线:新购8折,拼团3.99元起

尊敬的用户:
泽御云“月满中秋·礼贺国庆”双节活动现已开启,活动时间为2026年9月23日至10月10日。 活动期间可享以下福利:
1. 常规云服务器新购使用优惠码“泽御中秋国庆同乐”,符合条件的订单享8折优惠。
2. 香港精品云服务器5人拼团低至3.99元,部分4核4G套餐3人拼团年付388元,续费同价。
3. 新用户购买年付云服务器,符合活动规则可赠送2个月使用时长。
4. 老用户续费季度赠15天,续费年度赠2个月;活动期间升级配置免收配置迁移手续费。
5. 推荐好友成功下单,符合条件的推荐人可获赠7天服务器使用时长。
6. 活动期间享宕机补偿标准翻倍、简单网站迁移协助及技术工单优先处理权益。
温馨提示:优惠码不适用于拼团套餐、活动轻量产品、年付订单及续费订单;拼团套餐为独立特价活动,不与赠时类福利叠加。赠送时长不可折现、退款或跨账户转移,具体规则以活动页面说明为准。
服务中心
客服
在线客服
24小时为您服务
咨询
联系我们
联系我们,为您的业务提供专属服务。
24/7 技术支持
如果您遇到寻求进一步的帮助,请过工单与我们进行联系。
24/7 即时支持
泽御云
售前客服
泽御云
泽御云
售后客服
泽御云
技术支持
评价
您对当前页面的整体感受是否满意?
😞
非常不满意
😕
不满意
😐
一般
🙂
满意
😊
非常满意