基于 models 仓库的 Inception v2(Inception-2)ONNX 图像分类模型完整使用指南

发布时间:2026/9/24 14:02:45
基于 models 仓库的 Inception v2(Inception-2)ONNX 图像分类模型完整使用指南 基于 models 仓库的 Inception v2Inception-2ONNX 图像分类模型完整使用指南【免费下载链接】modelsA collection of pre-trained, state-of-the-art models in the ONNX format项目地址: https://gitcode.com/gh_mirrors/model/models导读Inception v2模型清单中命名为Inception-2是 Google 提出的 Inception 系列第二代深度卷积分类网络本仓库以 ONNX 格式提供其 Opset 3/6/7/8/9 共 5 个可直接使用的预训练模型文件每个约 44 MB。本文以 inception_v2/README.md 为主体结合仓库中的模型清单 ONNX_HUB_MANIFEST.json 与 ImageNet 通用预处理/后处理工具完整讲解该模型的下载方式、输入输出规格、预处理与后处理流程、ONNX Runtime 推理示例以及带样本测试数据的验证方法。读完本文你将能够直接把这组 ONNX 模型接入自己的推理管线用于 ImageNet 1000 类图像分类任务。Inception v2 模型概述模型定位与论文背景Inception v2 是一种用于图像分类的深度卷积神经网络其设计思想来自论文《Rethinking the Inception Architecture for Computer Vision》。该论文针对 Inception 结构提出了多项改进思路包括分解大卷积核factorized convolutions、在 35×35/17×17/8×8 特征图上使用辅助分类器以及标签平滑label smoothing等正则化手段。在 Inception 系列中Inception v2 通常指引入 Batch Normalization 的版本它比初代 GoogLeNet即本仓库中的 Inception v1 / GoogleNet训练更稳定、收敛更快。从本仓库的目录组织看Inception 家族被归入 inception_and_googlenet 分类目录与 inception_v1、googlenet 并列方便开发者横向比较三代 Inception 架构在 ONNX 下的表现。训练数据集模型在ILSVRC2012ImageNet Large Scale Visual Recognition Challenge 2012数据集上训练输出为 1000 个类别的概率分布这也是输入张量最后一维为 1000 的原因。模型来源与转换链路根据原文档说明本模型来源为Caffe2 Inception v2 ONNX Inception v2即由 Caffe2 训练得到的 Inception v2 权重经转换工具导出为 ONNX 格式。这与同目录下其他 Inception 家族模型的来源方式一致属于“已验证validated”类别下的官方转换模型集合。模型文件与版本清单原文档给出了完整的下载表仓库中每个 Opset 版本都同时提供两种文件纯模型文件.onnx与附带样本测试数据的打包文件.tar.gz。以下为转换后的仓库相对路径清单模型下载纯模型下载含样本测试数据ONNX 版本Opset 版本Inception-244 MB44 MB1.13Inception-244 MB44 MB1.1.26Inception-244 MB44 MB1.27Inception-244 MB44 MB1.38Inception-244 MB44 MB1.49仓库清单中的元数据佐证上述条目在仓库根目录的 ONNX_HUB_MANIFEST.json 中有完整的结构化记录。例如 Opset 3 版本的元数据清单第 3283-3301 行modelInception-2model_pathvalidated/vision/classification/inception_and_googlenet/inception_v2/model/inception-v2-3.onnxonnx_version1.1opset_version3model_sha8bb3ba787e84667bc1169034c36a1f1c1cddfbd19d5e48c9c51306a087973bc8model_bytes45042595约 44 MB与 README 标注一致tagsvision、classification、inception and googlenet、inception v2从清单可推断5 个版本Opset 3/6/7/8/9覆盖了 ONNX 1.1 至 1.4 的早期算子集演进实际文件均位于 inception_v2/model 目录下共 5 个 .onnx 与 5 个 .tar.gz。模型输入与输出规格Inception v2 的 ONNX 图接口非常简洁输入输出各一个张量规格如下输入data_0: float[1, 3, 224, 224]维度含义1batch size批大小推理时固定为 13通道数RGB 三通道224 × 224输入图像的高与宽输出prob_1: float[1, 1000]输出为一个长度为 1000 的一维概率/得分向量对应 ImageNet 数据集的 1000 个类别。注意该输出是未经 softmax 的原始 logits还是已经归一化的概率取决于导出方式——从后处理脚本看见下文分类模型推理后通常需要额外做 softmax 与 argsort 才能得到类别排序。使用建议选择哪个 Opset 版本取决于你的推理后端如 ONNX Runtime、TensorRT、OpenVINO 等对算子集版本的支持范围。早期 ONNX Runtime 可用 Opset 3~7新版本运行时通常向下兼容但建议先以onnxruntime加载测试。若需要校验模型文件的 SHA256可直接对照 ONNX_HUB_MANIFEST.json 中model_sha字段。预处理与后处理流程原文档中“Pre-processing steps / Post-processing steps”一节留空但仓库为整个 ImageNet 分类模型族提供了标准工具可直接复用预处理imagenet_preprocess.py后处理imagenet_postprocess.py标准预处理基于仓库脚本imagenet_preprocess.py 中preprocess()函数给出了 ImageNet 模型的完整预处理链路等比缩放将图像短边缩放到 256保持长宽比image_resize(image, 256)使用Image.BILINEAR双线性插值中心裁剪在缩放后的图像中心裁出 224×224 窗口crop_center(image, 224, 224)转置通道将 HWC 布局转为 CHWimage.transpose(2, 0, 1)转 float32image.astype(float32)归一化使用 ImageNet 均值/方差做标准化mean_vec np.array([0.485, 0.456, 0.406]) stddev_vec np.array([0.229, 0.224, 0.225]) norm_img_data[i, :, :] (img_data[i, :, :] / 255 - mean_vec[i]) / stddev_vec[i]增加 batch 维reshape(1, 3, 224, 224)得到float[1, 3, 224, 224]与 Inception v2 的输入data_0完全对齐。注意该脚本同时提供了preprocess_mxnet()变体基于 MXNet Gluon transforms两者效果等价均为“Resize(224) → CenterCrop(224) → ToTensor → Normalize”。如果你的原始模型来源Caffe2 导出使用不同的均值例如按 BGR 顺序减 [103.939, 116.779, 123.68]请参照同目录 googlenet/README.md 中的 BGR 均值示例自行调整——该示例展示了img[:, :, 0] - 123.68、img[:, :, 1] - 116.779、img[:, :, 2] - 103.939并将 RGB 通道翻转为 BGR 的另一种常见 ImageNet 预处理写法。标准后处理基于仓库脚本imagenet_postprocess.py 中postprocess()函数定义了对分类得分向量的标准处理prob mx.ndarray.softmax(scores).asnumpy() prob np.squeeze(prob) a np.argsort(prob)[::-1] # 按概率降序返回类别下标即将网络输出的float[1, 1000]得分做 softmax 归一化为概率squeeze 去掉 batch 维再用argsort降序得到“最可能的类别”排序。配合仓库提供的类别标签文件 synset.txtImageNet 1000 类标签即可将类别下标映射为可读的类别名。ONNX Runtime 推理示例将上述预处理/后处理与原文档的输入输出规格结合即可用 ONNX Runtime 完成一次完整推理。以下代码为通用示例需自行安装onnxruntime与Pillowimport numpy as np from PIL import Image import onnxruntime as ort # 1. 加载模型以 Opset 9 版本为例 session ort.InferenceSession( validated/vision/classification/inception_and_googlenet/inception_v2/model/inception-v2-9.onnx ) # 2. 预处理短边缩放 256 - 中心裁剪 224 - CHW - float32 - 归一化 - batch 维 def preprocess(image_path): img Image.open(image_path).convert(RGB) # 等比缩放到短边 256 w, h img.size if h w: new_h, new_w 256, int(round(256 * w / h)) else: new_w, new_h 256, int(round(256 * h / w)) img img.resize((new_w, new_h), Image.BILINEAR) # 中心裁剪 224x224 left (new_w - 224) // 2 top (new_h - 224) // 2 img img.crop((left, top, left 224, top 224)) arr np.array(img).astype(float32).transpose(2, 0, 1) # HWC - CHW mean np.array([0.485, 0.456, 0.406]).reshape(3, 1, 1) std np.array([0.229, 0.224, 0.225]).reshape(3, 1, 1) arr (arr / 255.0 - mean) / std return arr[np.newaxis, ...] # (1, 3, 224, 224) # 3. 推理 input_name session.get_inputs()[0].name # data_0 output_name session.get_outputs()[0].name # prob_1 logits session.run([output_name], {input_name: preprocess(your_image.jpg)})[0] # 4. 后处理softmax 降序 prob np.exp(logits - logits.max()) prob / prob.sum() top5 np.argsort(prob.squeeze())[::-1][:5] print(Top-5 class indices:, top5)该示例的关键点在于输入名data_0、输出名prob_1、张量形状与 dtype 必须与原文档规格一致。若不匹配可用session.get_inputs()/get_outputs()打印实际接口名后调整。使用样本测试数据验证模型原文档说明随模型提供的.tar.gz包内含随机生成的样本测试数据用于验证模型转换/推理的正确性test_data_0.npz test_data_1.npz test_data_2.npz test_data_set_0 test_data_set_1 test_data_set_2其中.npz为 NumPy 压缩格式的输入/输出对test_data_set_*为 ONNX 后端测试标准的目录形式内含input_0.pb与output_0.pb等 protobuf 张量文件。使用方式解压对应版本例如 inception-v2-9.tar.gz用 ONNX Runtime或onnx.checker/onnxruntime.backend加载同版本.onnx将test_data_set_*中的输入张量喂给模型将输出与标准输出对比数值容差内一致即验证通过。这一流程可用于确认所选 Opset 版本在你的推理后端上算子映射正确、模型文件未被破坏。与其他 Inception 家族模型的选择建议同目录 inception_and_googlenet 下还提供inception_v1即 GoogLeNet 的复现Inception-1额外提供 Opset 12 的 fp32/int8/qdq 量化版本README 中记录了 Top-1 精度 67.23% 及 Intel® Neural Compressor 量化流程googlenetCaffe BVLC 原始实现转 ONNX含完整预处理代码与 Top-1 68.7% 的验证精度说明。对比而言Inception v2 的三个差异化特征值得关注引入 Batch Normalization训练更稳定属于 Caffe2 生态导出的标准 Inception 演进版本输入输出接口与 Inception v1 完全一致data_0: float[1, 3, 224, 224]→prob_1: float[1, 1000]可以无缝替换 v1 模型而不改动推理代码模型体积约 44 MB比 Inception v1约 28 MB更大可推断其网络容量更高精度通常也更优。若需要量化压缩int8或更高 Opset 的版本可关注仓库 Computer_Vision 目录下的 Inception 系列如 inception_v3、inception_resnet_v2 等 Opset 16/17/18 变体以及同目录兄弟模型的量化示例。许可证Inception v2Inception-2模型遵循MIT许可证声明见 inception_v2/README.md 末尾!--- SPDX-License-Identifier: MIT --。与同目录 GoogLeNet 的 BSD-3-Clause、Inception v1 的 MIT 略有差异商用/分发前请按各模型 README 分别确认许可条款。【免费下载链接】modelsA collection of pre-trained, state-of-the-art models in the ONNX format项目地址: https://gitcode.com/gh_mirrors/model/models创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考