You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

微调后的YOLOv8分类器预测时触发TypeError错误求助

解决YOLOv8分类模型预测时的TypeError问题

问题描述

在Roboflow上完成YOLOv8分类模型微调并下载最优参数后,执行如下预测代码:

model2 = YOLO("spectrogramfinetunedyolo.pt")
result = model2("640_X_640.jpg")

或调用model2.predict("640_X_640.jpg")时,持续报错:

TypeError: Unexpected type <class 'numpy.ndarray'>

已尝试修改文件类型、调整图片尺寸,问题仍未解决。

错误原因

报错源于torchvision的Resize变换无法处理numpy.ndarray类型的输入。该变换期望的输入为PIL Image或Tensor,但实际传入的是numpy数组,导致预处理流程中断。

解决方案

方案1:手动加载为PIL Image后传入模型

显式将图像以PIL格式加载,确保输入类型符合模型预处理要求:

from PIL import Image
from ultralytics import YOLO

model2 = YOLO("spectrogramfinetunedyolo.pt")
# 以PIL格式加载图像
img = Image.open("640_X_640.jpg")
# 执行预测
result = model2(img)

方案2:升级Ultralytics库到最新稳定版

部分旧版本可能存在图像加载与预处理的兼容问题,通过升级库修复:

pip install --upgrade ultralytics

方案3:调整模型预处理变换以支持numpy数组

如果需要直接处理numpy数组,可在模型的变换管道中添加numpy转PIL的步骤:

from torchvision import transforms
from ultralytics import YOLO

model2 = YOLO("spectrogramfinetunedyolo.pt")
# 获取当前模型的预处理变换
current_transforms = model2.predictor.transforms
# 新增numpy转PIL的变换,插入到现有变换前
new_transforms = transforms.Compose([
    transforms.ToPILImage(),
    *current_transforms.transforms
])
# 更新模型的预处理变换
model2.predictor.transforms = new_transforms

# 现在可以直接传入numpy数组或图像路径
result = model2("640_X_640.jpg")

内容的提问来源于stack exchange,提问作者Farida Yasser

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.30 08:15:01