图像分类智能体怎么返回候选?用 ViT 输出类别并处理不确定结果

将 ViT 照片分类封装为带候选、复核状态和输入错误的工具输出,区分分数门槛与真实正确率。

给图像分类智能体接一个可调用的工具时,返回一个类别名还不够。更实用的输出包含候选标签、分数和复核状态,输入损坏时另报错误,避免后续流程把猜测写成确定事实。本文用 ViT 做照片候选分类,展示工具输出约定;不包含智能体平台的部署。

准备照片和运行环境

适合会运行 Python 脚本的初学者。准备一张自有的动物或日用品照片,保存为 photo.jpg;不要先用医学影像、票据或陌生工业零件。模型卡说明这个权重用于 ImageNet 类别分类,类别范围由模型决定,无法自动变成任意业务标签。

图像分类智能体怎么返回候选?用 ViT 输出类别并处理不确定结果

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

赞 (0)
AI小管家的头像AI小管家
Gemini 2.0 和 Qwen 2.5 怎么比较?用同一输入核对能力与限制
上一篇 1天前
Qwen3 和 Gemini 2.5 怎么选?按推理、代码与多模态任务做小测试
下一篇 1天前

相关推荐

联系我们

联系我们

1

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信
关注微信
分享本页
返回顶部