ONNX 模型库
返回模型

说明文档

DenseNet ONNX (从 TorchVision 导出)

本仓库托管了 TorchVision DenseNet ImageNet 分类器的 ONNX 导出版本。模型来源于 Torch Hub (pytorch/vision:v0.10.0) 并导出为 ONNX 格式,以便使用 ONNX Runtime 轻松部署。

  • 源权重:TorchVision v0.10.0 (ImageNet-1k)
  • 支持的变体:densenet121densenet161densenet169
  • 默认输入:NCHW 1 x 3 x 224 x 224 RGB,使用 ImageNet 标准化

如果您在 Hugging Face Hub 上浏览,可以在 Files 标签页下找到 ONNX 文件。您也可以使用下面的脚本自行重现导出过程。

快速开始:使用 ONNX Runtime 推理

import numpy as np
import onnxruntime as ort
import torch
from PIL import Image
from torchvision.transforms import Compose, Resize, CenterCrop, PILToTensor, ConvertImageDtype, Normalize

# 1) 加载 ONNX 模型
session = ort.InferenceSession("densenet121.onnx", providers=["CPUExecutionProvider"])
input_name = session.get_inputs()[0].name
output_name = session.get_outputs()[0].name

# 2) 预处理 (ImageNet)
img = Image.open("your_image.jpg").convert("RGB")
transform = Compose([
    Resize(256),
    CenterCrop(224),
    PILToTensor(),
    ConvertImageDtype(torch.float32),
    Normalize(mean=[0.485, 0.456, 0.406], std=[0.229, 0.224, 0.225]),
])
inp = transform(img).unsqueeze(0).numpy()  # NCHW float32

# 3) 运行推理
scores = session.run([output_name], {input_name: inp})[0]  # (1, 1000)
pred = int(scores.argmax(axis=1)[0])
print("Top-1 class index:", pred)

要将索引映射到 ImageNet-1k 标签,您可以获取: https://raw.githubusercontent.com/pytorch/hub/master/imagenet_classes.txt

从 Torch Hub 导出到 ONNX (脚本)

使用提供的导出脚本从 Torch Hub 重现 ONNX 文件:

python export_to_onnx.py --variant densenet121 --output densenet121.onnx --opset 17

选项:

  • --variant:densenet121densenet161densenet169 之一
  • --opset:ONNX opset 版本(默认:17)
  • --static-batch:使批次大小为静态(默认情况下,导出使用动态批次)
  • --no-sample:使用虚拟输入而非样本图像进行导出

最小化导出

import torch
from PIL import Image
from torchvision.transforms import Compose, Resize, CenterCrop, PILToTensor, ConvertImageDtype, Normalize

variant = "densenet121"  # 或 161/169
onnx_path = "densenet121.onnx"

torch_model = torch.hub.load("pytorch/vision:v0.10.0", variant, pretrained=True).eval()

img = Image.open("your_image.jpg").convert("RGB")
transform = Compose([
    Resize(256),
    CenterCrop(224),
    PILToTensor(),
    ConvertImageDtype(torch.float32),
    Normalize(mean=[0.485, 0.456, 0.406], std=[0.229, 0.224, 0.225]),
])
img_tensor = transform(img).unsqueeze(0).contiguous()

torch.onnx.export(
    torch_model,
    img_tensor,
    onnx_path,
    opset_version=17,
    input_names=["input"],
    output_names=["logits"],
    dynamic_axes={"input": {0: "batch_size"}, "logits": {0: "batch_size"}},
)

meenakshiramanathan1/densenet-onnx

作者 meenakshiramanathan1

image-classification onnx
↓ 0 ♥ 0

创建时间: 2026-01-14 07:30:37+00:00

更新时间: 2026-01-14 07:45:11+00:00

在 Hugging Face 上查看

文件 (4)

.gitattributes
README.md
densenet121.onnx ONNX
export_to_onnx.py