给图像分类智能体接一个可调用的工具时,返回一个类别名还不够。更实用的输出包含候选标签、分数和复核状态,输入损坏时另报错误,避免后续流程把猜测写成确定事实。本文用 ViT 做照片候选分类,展示工具输出约定;不包含智能体平台的部署。
准备照片和运行环境
适合会运行 Python 脚本的初学者。准备一张自有的动物或日用品照片,保存为 photo.jpg;不要先用医学影像、票据或陌生工业零件。模型卡说明这个权重用于 ImageNet 类别分类,类别范围由模型决定,无法自动变成任意业务标签。

python -m pip install torch "transformers==4.57.1" pillow
示例选用 Python 3.11、CPU 路径。首次运行需要联网下载权重和处理器;之后可按本地缓存环境运行。本文未下载该权重执行整段推理,代码依据所列版本文档和模型卡编写,实际耗时与照片结果须自行验证。
把模型输出封装为候选工具
保存下面代码为 classify_photo.py,再运行 python classify_photo.py。先人工看清照片里主体,记录你认为应该出现的类别,作为对照。
import json
from PIL import Image
import torch
from transformers import AutoImageProcessor, AutoModelForImageClassification
name = "google/vit-base-patch16-224"
processor = AutoImageProcessor.from_pretrained(name)
model = AutoModelForImageClassification.from_pretrained(name).eval()
def classify(path):
with Image.open(path) as source:
image = source.convert("RGB")
inputs = processor(images=image, return_tensors="pt")
with torch.inference_mode():
probs = model(**inputs).logits.softmax(dim=-1)[0]
scores, indices = probs.topk(3)
candidates = [{"label": model.config.id2label[int(i)],
"score": float(s)} for s, i in zip(scores, indices)]
# These are demonstration thresholds, not calibrated probabilities.
gap = candidates[0]["score"] - candidates[1]["score"]
uncertain = candidates[0]["score"] < 0.5 or gap < 0.15
return {"file": path, "status": "review" if uncertain else "candidate",
"candidates": candidates}
try:
result = classify("photo.jpg")
except (OSError, ValueError) as error:
result = {"file": "photo.jpg", "status": "input_error",
"error": type(error).__name__}
print(json.dumps(result, ensure_ascii=False, indent=2))
怎样验收结果,而不是只看程序没报错
输出应包含 file、status 和三个 candidates;每个候选都有 label 与 score。把三个英文标签与照片主体逐个对照,再用模糊、主体很小或不属于类别表的照片检查复核分支。没有真实模型输出时,不应填入假定标签或分数。
示例把低分或前两名分差过小的结果标记为 review;0.5 和 0.15 只是演示门槛,必须在自己的带标签样本上调整。candidate 仍是模型候选,不是自动审批许可;softmax 分数也不保证等于真实正确率。
- 文件不存在或图片损坏:检查 input_error,确认下游不会当成成功分类。
- 英文标签陌生:查看 model.config.id2label,不靠中文名称猜类别。
- 业务类别不在预训练集合:先更换适用模型或准备标注数据,不用分数阈值补救类别缺失。
接入流程时保留什么
把 classify 的返回值作为一次工具结果;让后续流程只接收约定字段。review 与 input_error 应进入人工或补采图片分支,禁止默默改成第一候选。先用 10 张有人工答案的照片记录错误类别和复核原因,再决定是否扩展。
资料与适用范围
本文依据 2026 年 10 月 1 日读取的项目资料编写。安装后请记录实际依赖版本;版本升级时先用小样本核对接口和输出。
Ai菜鸟网。发布者:AI小管家,转载请注明出处:https://www.alyyhw.com/30629.html