AI农产品分级配置:从零搭建可运行的自动分级流程
AI农产品分级配置的核心,是把训练好的视觉模型接入摄像头或图片输入,再通过服务端程序输出等级结果。
本文按零基础可执行的方式,讲清在 Linux 服务器上准备环境、配置模型、启动服务和验证效果的过程,适合想自建分级流程的读者参考。
先确认你的服务器和输入设备
开始前,需要一台能运行 Python 的 Linux 服务器(Ubuntu 20.04 及以上或 CentOS 7 以上均可),以及一个可用的摄像头或一批待分级的图片。
建议先用图片跑通流程,再接实时摄像头,能少走很多弯路。
检查基础环境:
uname -a
python3 --version
free -h
df -h
如果 python3 版本低于 3.8,先升级。
内存建议不低于 4GB,因为视觉模型推理比较吃内存。
磁盘至少留出 10GB 放模型和样本图片。
安装 Docker 和 Docker Compose(推荐用容器方式隔离依赖):
sudo apt update
sudo apt install -y docker.io docker-compose
sudo systemctl enable docker
sudo systemctl start docker
验证 Docker 可用:
docker --version
docker-compose --version
配置模型与分级规则
把模型文件放到项目目录的 models/ 下,例如 models/grade_model.onnx。
分级规则通常写在 config.yaml 里,包括等级阈值和类别名称。
下面是一个示例配置片段:
model:
path: models/grade_model.onnx
input_size: 640
confidence_threshold: 0.45
grading:
classes:
- name: A
min_score: 0.85
- name: B
min_score: 0.65
- name: C
min_score: 0.0
input:
source: images
image_dir: samples/
这里 confidence_threshold 控制模型最低置信度,低于该值的检测结果会被丢弃;min_score 是分级阈值,按你的业务标准调整。
配置改完后,先跑单张图片测试:
python3 infer.py --image samples/test.jpg --config config.yaml
如果终端输出等级和置信度,说明模型加载和配置解析正常。
启动服务并接入图片或摄像头
用 Docker Compose 启动服务,可以避免手动安装依赖。
在项目根目录创建 docker-compose.yml:
version: "3.8"
services:
grader:
build: .
volumes:
- ./models:/app/models
- ./samples:/app/samples
- ./config.yaml:/app/config.yaml
ports:
- "8000:8000"
command: python3 app.py --config config.yaml
构建并启动:
docker-compose up -d --build
docker-compose logs -f grader
日志中出现 Listening on 0.0.0.0:8000 后,用浏览器或 curl 请求接口验证:
curl -X POST http://127.0.0.1:8000/grade -F "file=@samples/test.jpg"
返回 JSON 中包含 grade 和 score 字段,说明分级服务已经跑通。
要接摄像头,把 config.yaml 里的 source 改成 camera,并填写设备号(如 device: 0),重启容器即可。
容易踩坑的几个地方
- 模型路径写错:容器内路径和宿主机不同,配置里必须写容器内路径,如
/app/models/grade_model.onnx。 - 摄像头权限不足:Linux 下需要把用户加入
video组,或给容器加devices: - /dev/video0映射。 - 分级结果全为同一等级:先检查阈值是否设置过宽,再确认输入图片尺寸是否和模型训练时一致。
- 端口被占用:
docker-compose logs会提示address already in use,改ports左侧的宿主机端口即可。
验证分级效果是否稳定
准备 20 张以上不同光照、不同大小的样本图片,批量请求接口并记录结果:
for f in samples/*.jpg; do
curl -s -X POST http://127.0.0.1:8000/grade -F "file=@$f"
done
观察同一等级内的图片是否一致,以及低置信度结果是否被正确过滤。
如果误判集中出现在某类样本,优先检查该类样本的拍摄角度和背景,再考虑调整 confidence_threshold。
验证通过后,再逐步接入实时视频流,避免一开始就把问题混在一起。
常见疑问
分级服务一定要用 Docker 吗?
不是必须,但 Docker 能固定 Python 和依赖版本,减少环境差异导致的报错,对新手更省心。
模型文件从哪里来?
本文只讲部署配置,不提供模型。你需要使用自己训练或已授权的模型文件,并确认输入尺寸和类别与配置一致。
调整阈值后需要重启吗?
如果程序在启动时加载配置,就需要重启容器;部分框架支持热加载,以你使用的程序实现为准。
按以上步骤走完,AI农产品分级配置基本可以稳定运行。
遇到异常时,先看容器日志和接口返回,再回查配置路径与阈值,通常能快速定位问题。