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

如何使用PyTorch的ResNet18模型对列表中的多张图像执行批量预测

ResNet18 批量图像预测解决方案

报错原因

  • 第一个报错:transforms 预处理组件仅支持单张 PIL 图像/ndarray 数组输入,无法直接处理图像列表
  • 第二个报错:直接将列表转成 tensor 后维度顺序为 [batch_size, height, width, channels],而 PyTorch CNN 要求输入维度为 [batch_size, channels, height, width],所以模型把高度维度的36误识别为通道数,触发维度不匹配错误

实现代码

import torch
from torchvision import transforms

# 预定义预处理流程,无需重复创建
preprocess = transforms.Compose([
        transforms.ToTensor(),
        transforms.Normalize(
        mean=[0.485, 0.456, 0.406],
        std=[0.229, 0.224, 0.225]
    )])

# 读取图像列表,x中每个元素为(36, 60, 3)格式
x = dataset(source_p)

# 逐个处理单张图像,收集处理后的tensor
processed_imgs = []
for im in x:
    # 单张图像处理后维度为 [3, 36, 60]
    img_tensor = preprocess(im)
    processed_imgs.append(img_tensor)

# 堆叠为批量tensor,维度为 [N, 3, 36, 60],N为列表中图像总数
batch_tensor = torch.stack(processed_imgs, dim=0)

resnet18.eval()
# 推理阶段关闭梯度计算,降低显存占用
with torch.no_grad():
    out = resnet18(batch_tensor)
# 输出out维度为[N, 1000],对应N张图的分类结果,需要拉平可使用out.flatten(start_dim=1)

注:PyTorch 0.4及之后版本已经将Tensor和Variable接口合并,无需再使用Variable包装tensor。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 01:36:05