AI病虫害识别配置:零基础搭建图像识别服务

AI病虫害识别配置的核心是把训练好的图像分类模型封装成可调用的HTTP服务,让前端或移动端上传图片后返回病虫害类别和置信度。
本文以Linux服务器和Python技术栈为例,按零基础可操作的方式讲清环境准备、服务部署、接口调用和验证方法。

适用场景与前置条件

这套配置适合已有模型文件(如.pt、.onnx或.h5格式)或使用开源模型的情况,目标是在自有服务器上提供识别接口。
需要准备:一台可联网的Linux服务器(Ubuntu 20.04/22.04或CentOS 7+),Python 3.8以上版本,至少2GB内存(模型较大时建议4GB以上),以及一个可用的域名或IP。
如果模型需要GPU推理,还需安装对应版本的CUDA驱动,本文以CPU推理为例。

环境准备与依赖安装

先更新系统包并安装Python虚拟环境工具。
以Ubuntu为例:

sudo apt update
sudo apt install -y python3 python3-pip python3-venv

创建项目目录并激活虚拟环境:

mkdir -p /opt/ai-pest && cd /opt/ai-pest
python3 -m venv venv
source venv/bin/activate

安装FastAPI、Uvicorn和图像处理库。
如果使用PyTorch模型,根据官方命令安装对应版本,这里以CPU版为例:

pip install fastapi uvicorn pillow numpy
pip install torch torchvision --index-url https://download.pytorch.org/whl/cpu

安装完成后用pip list确认关键包已存在。

部署识别服务与接口配置

将模型文件放入/opt/ai-pest/models/目录,假设文件名为pest_model.pt。
新建main.py,写入一个最小可用的识别接口:

from fastapi import FastAPI, File, UploadFile
from PIL import Image
import torch
import io

app = FastAPI()
model = torch.jit.load("models/pest_model.pt", map_location="cpu")
model.eval()

CLASSES = ["健康", "稻瘟病", "蚜虫", "白粉病"]  # 按实际模型类别修改

@app.post("/predict")
async def predict(file: UploadFile = File(...)):
    img = Image.open(io.BytesIO(await file.read())).convert("RGB").resize((224, 224))
    tensor = torch.from_numpy(np.array(img)).permute(2, 0, 1).float().unsqueeze(0) / 255.0
    with torch.no_grad():
        output = model(tensor)
        prob = torch.softmax(output, dim=1)
        conf, idx = torch.max(prob, 1)
    return {"class": CLASSES[idx.item()], "confidence": round(conf.item(), 4)}

保存后启动服务:

uvicorn main:app --host 0.0.0.0 --port 8000

看到Application startup complete即表示服务已运行。
生产环境建议用nohup或systemd托管,避免终端关闭后服务停止。

反向代理与安全加固

直接暴露8000端口不安全,建议用Nginx做反向代理并限制请求大小。
在宝塔面板中新建站点后,修改站点配置,加入:

location /predict {
    proxy_pass http://127.0.0.1:8000/predict;
    client_max_body_size 5m;
    proxy_set_header Host $host;
}

保存后重载Nginx:nginx -t && nginx -s reload。
如果使用云服务器安全组,只放行80和443端口,关闭8000公网访问。

验证接口与常见报错处理

用curl上传一张测试图片:

curl -X POST -F "file=@test.jpg" http://你的域名/predict

预期返回类似{"class":"稻瘟病","confidence":0.92}的JSON。
如果返回502,检查Uvicorn是否在运行、端口是否一致;
返回413说明图片超过client_max_body_size限制;
返回500时查看Uvicorn日志,常见原因是模型路径错误或输入尺寸与模型不匹配。
首次调用较慢属于正常现象,模型加载需要时间。

避坑提醒

模型文件路径要使用绝对路径或确认工作目录正确,否则torch.jit.load会报找不到文件。
输入图片必须统一尺寸和通道数,训练时用的预处理方式(如归一化参数)要与推理代码保持一致。
不要用root用户直接运行服务,建议创建专用系统用户。
修改配置后先nginx -t检查语法再重载,避免站点不可用。

按照以上步骤完成AI病虫害识别配置后,建议先用少量真实图片测试识别准确率,再根据业务量调整服务并发参数。
如果后续需要提升吞吐,可考虑使用Gunicorn多worker或GPU推理,但需同步调整Nginx超时设置。

分享到:
上一篇
AI+农业应用入门:从数据采集到模型推理的完整落地步骤
下一篇
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 即时支持
泽御云
售前客服
泽御云
泽御云
售后客服
泽御云
技术支持
评价
您对当前页面的整体感受是否满意?
😞
非常不满意
😕
不满意
😐
一般
🙂
满意
😊
非常满意