弃用通知: 我们衷心感谢社区参与 ONNX Model Zoo 项目。随着机器学习生态系统的演变,许多新颖的模型共享已成功迁移至 Hugging Face,该平台保持着活跃且健康的状态。我们仅出于历史目的保留 ONNX Model Zoo 仓库。请注意,自 2025 年 7 月 1 日起,模型将不再提供 LFS 下载。您仍然可以通过访问 https://huggingface.co/onnxmodelzoo 来获取原本在此仓库中可用的模型。
ONNX Model Zoo
简介
欢迎来到 ONNX Model Zoo!Open Neural Network Exchange (ONNX) 是一种用于表示机器学习模型的开放标准格式。在强大的合作伙伴社区的支持下,ONNX 定义了一组通用的操作符和一种通用的文件格式,使 AI 开发者能够使用各种框架、工具、运行时和编译器来使用模型。
本仓库是一个经过精心整理的、以 ONNX 格式存储的预训练最先进模型的集合。这些模型源自知名的开源仓库,并由来自不同背景的社区成员贡献。我们的目标是促进机器学习模型在更广泛的开发者、研究人员和爱好者群体中的传播和使用。
为了处理可能较大的 ONNX 模型文件,我们使用 Git LFS (Large File Storage)。
模型
目前,我们正在通过纳入以下类别的额外模型来扩展 ONNX Model Zoo。 由于我们正在严格验证新模型的准确性,请参阅下方已成功验证准确性的已验证模型:
- 计算机视觉
- 自然语言处理 (NLP)
- 生成式 AI
- 图机器学习
这些模型源自 timm、torchvision、torch_hub 和 transformers 等知名开源仓库,并使用开源的 TurnkeyML 工具链 导出为 ONNX 格式。
已验证模型
视觉
语言
其他
阅读下方的使用部分,以获取有关 ONNX Model Zoo 中文件格式(.onnx、.pb、.npz)、通过 Git LFS 命令行 下载多个 ONNX 模型,以及用于使用测试数据验证您的 ONNX 模型的入门 Python 代码的更多详细信息。
INT8 模型由 Intel® Neural Compressor 生成。Intel® Neural Compressor 是一个开源 Python 库,支持自动精度驱动调优策略,帮助用户快速找到最佳量化模型。它实现了针对 ONNX 模型的动态和静态量化,并可以以算子导向和张量导向(QDQ)两种方式表示量化后的 ONNX 模型。用户可以使用基于 Web 的 UI 服务或 Python 代码进行量化。阅读 Introduction 以获取更多详细信息。
Image Classification
该模型集合以图像作为输入,然后将图像中的主要对象分类到 1000 个对象类别中,例如键盘、鼠标、铅笔以及许多动物。
| 模型类别 | 参考文献 | 描述 | Huggingface Spaces |
|---|---|---|---|
| MobileNet | Sandler et al. | 适用于移动和嵌入式视觉应用的轻量级深度神经网络。 论文中的 Top-5 错误率 - 约 10% | |
| ResNet | He et al. | 一种 CNN 模型(多达 152 层)。使用快捷连接(shortcut connections)在图像分类时实现更高的准确率。 论文中的 Top-5 错误率 - 约 3.6% | |
| SqueezeNet | Iandola et al. | 一种轻量级 CNN 模型,以 50 倍更少的参数提供 AlexNet 级别的准确率。 论文中的 Top-5 错误率 - 约 20% | |
| VGG | Simonyan et al. | 深度 CNN 模型(多达 19 层)。类似于 AlexNet,但使用多个较小内核尺寸的滤波器,在图像分类时提供更高的准确率。 论文中的 Top-5 错误率 - 约 8% | |
| AlexNet | Krizhevsky et al. | 一种深度 CNN 模型(多达 8 层),输入为图像,输出为 1000 个数字的向量。 论文中的 Top-5 错误率 - 约 15% | |
| GoogleNet | Szegedy et al. | 深度 CNN 模型(多达 22 层)。与 VGG 相比更小、更快,在细节表现上比 AlexNet 更准确。 论文中的 Top-5 错误率 - 约 6.7% | |
| CaffeNet | Krizhevsky et al. | Caffe 中用于图像分类的 AlexNet 深度 CNN 变体,其中最大池化(max pooling)位于局部响应归一化(LRN)之前,从而减少 LRN 的计算和内存开销。 | [ |
| RCNN_ILSVRC13 | Girshick et al. | R-CNN 用于图像分类的纯 Caffe 实现。该模型利用区域定位来对图像进行分类并提取特征。 | |
| DenseNet-121 | Huang et al. | 一种每一层都与其他所有层相连并传递自身特征的模型,提供强大的梯度流和更多样化的特征。 | |
| Inception_V1 | Szegedy et al. | 该模型与 GoogLeNet 相同,通过 Caffe2 实现,改进了网络内部计算资源的利用率,并有助于解决梯度消失问题。 论文中的 Top-5 错误率 - 约 6.7% | |
| Inception_V2 | Szegedy et al. | 作为 Inception v1 的改进版本,引入了批量归一化(batch normalization)的用于图像分类的深度 CNN 模型。与 Inception v1 相比,该模型降低了计算成本并提高了图像分辨率。 论文中的 Top-5 错误率 约 4.82% | |
| ShuffleNet_V1 | Zhang et al. | 专为移动设备设计的计算效率极高的 CNN 模型。该模型大幅降低了计算成本,并在基于 ARM 的移动设备上相比 AlexNet 提供了约 13 倍的加速。与 MobileNet 相比,ShuffleNet 凭借其高效的结构,以显著的优势实现了更优越的性能。 论文中的 Top-1 错误率 - 约 32.6% | |
| ShuffleNet_V2 | Zhang et al. | 专为移动设备设计的计算效率极高的 CNN 模型。该网络架构设计考虑了速度等直接指标,而非 FLOP 等间接指标。 论文中的 Top-1 错误率 - 约 30.6% | |
| ZFNet-512 | Zeiler et al. | 深层 CNN 模型(多达 8 层),增加了网络能够检测的特征数量,有助于在更细的分辨率级别上提取图像特征。 论文中的 Top-5 错误率 - 约 14.3% | |
| EfficientNet-Lite4 | Tan et al. | 计算量和参数量仅为几个数量级的 CNN 模型,同时仍实现了最先进的准确率,并且比之前的 ConvNets 具有更好的效率。 论文中的 Top-5 错误率 - 约 2.9% |
基于领域的图像分类
该模型子集针对特定领域和数据集对图像进行分类。
| 模型类别 | 参考 | 描述 |
|---|---|---|
| MNIST-手写数字识别 | 基于 MNIST 的卷积神经网络 | 用于手写数字识别的深度 CNN 模型 |
目标检测与图像分割
目标检测模型检测图像中多个对象的存在,并分割出检测到对象的图像区域。语义分割模型通过将每个像素标记为一组预定义类别来对输入图像进行划分。
| 模型类别 | 参考文献 | 描述 | Hugging Face Spaces |
|---|---|---|---|
| Tiny YOLOv2 | Redmon et al. | 一种用于目标检测的实时 CNN,可检测 20 个不同的类别。它是更复杂的完整 YOLOv2 网络的较小版本。 | |
| SSD | Liu et al. | 单阶段检测器:一种用于目标检测的实时 CNN,可检测 80 个不同的类别。 | |
| SSD-MobileNetV1 | Howard et al. | MobileNet 的一种变体,使用单发检测器(SSD)模型框架。该模型可检测 80 个不同的目标类别,并在图像中定位多达 10 个对象。 | |
| Faster-RCNN | Ren et al. | 通过将 RPN 与 CNN 连接,提高了 R-CNN 的效率,创建了一个用于目标检测的统一网络,可检测 80 个不同的类别。 | |
| Mask-RCNN | He et al. | 一种用于目标实例分割的实时神经网络,可检测 80 个不同的类别。扩展了 Faster R-CNN,因为选定的 300 个 ROI 中的每一个都通过网络的 3 个并行分支:标签预测、边界框预测和掩码预测。 | |
| RetinaNet | Lin et al. | 一种用于目标检测的实时密集检测器网络,通过 Focal Loss 解决类别不平衡问题。RetinaNet 能够匹配先前单阶段检测器的速度,并定义了两阶段检测器的最先进水平(超越 R-CNN)。 | |
| YOLO v2-coco | Redmon et al. | 一种用于实时目标检测系统的 CNN 模型,可检测超过 9000 个物体类别。它使用单一网络评估,使其比 R-CNN 快 1000 倍以上,比 Faster R-CNN 快 100 倍。该模型使用 COCO 数据集训练,包含 80 个类别。 | |
| YOLO v3 | Redmon et al. | 一种用于实时目标检测的深度 CNN 模型,可检测 80 个不同类别。比 YOLOv2 稍大,但速度仍然很快。精度与 SSD 相当,但速度快 3 倍。 | |
| Tiny YOLOv3 | Redmon et al. | YOLOv3 模型的较小版本。 | |
| YOLOv4 | Bochkovskiy et al. | 优化了目标检测的速度和精度。比 EfficientDet 快两倍。它将 YOLOv3 的 AP 和 FPS 分别提高了 10% 和 12%,在 COCO 2017 数据集上的 mAP50 为 52.32,在 Tesla V100 上的 FPS 为 41.7。 | |
| DUC | Wang et al. | 基于深度 CNN 的逐像素语义分割模型,mIOU(平均交并比)>80%。在 cityscapes 数据集上训练,可有效应用于自动驾驶车辆系统。 | |
| FCN | Long et al. | 基于深度 CNN 的分割模型,端到端、逐像素训练,产生高效的推理和学习。基于 AlexNet、VGG net、GoogLeNet 分类方法构建。 contribute |
身体、面部与手势分析
面部检测模型用于在给定图像中识别和/或识别人脸及情绪。身体与手势分析模型用于在给定图像中识别性别和年龄。
| 模型类别 | 参考文献 | 描述 | Hugging Face Spaces |
|---|---|---|---|
| ArcFace | Deng et al. | 一种基于 CNN 的人脸识别模型,学习人脸的判别性特征并为输入的人脸图像生成嵌入向量。 | |
| UltraFace | Ultra-lightweight face detection model | 该模型是一种轻量级人脸检测模型,专为边缘计算设备设计。 | |
| Emotion FerPlus | Barsoum et al. | 一种在人脸图像上训练的用于情绪识别的深度 CNN。 | |
| Age and Gender Classification using Convolutional Neural Networks | Rothe et al. | 即使学习数据量有限,该模型也能准确分类性别和年龄。 |
图像操作
图像操作模型使用神经网络将输入图像转换为修改后的输出图像。该类别中一些流行的模型涉及风格迁移或通过提高分辨率来增强图像。
| 模型类别 | 参考文献 | 描述 | Hugging Face Spaces |
|---|---|---|---|
| 使用循环一致性对抗网络的无配对图像到图像翻译 | Zhu et al. | 该模型利用学习在缺乏配对样本的情况下,将图像从源域 X 翻译到目标域 Y。 contribute | |
| 使用子像素 CNN 的超分辨率 | Shi et al. | 一种使用子像素卷积层对输入图像进行上采样的深度 CNN。 | |
| 快速神经风格迁移 | Johnson et al. | 该方法使用为图像分类预训练的损失网络来定义感知损失函数,以测量图像之间内容和风格的感知差异。损失网络在训练过程中保持固定。 |
语音与音频处理
此类模型使用音频数据来训练能够识别语音、生成音乐甚至朗读文本的模型。
| 模型类别 | 参考文献 | 描述 |
|---|---|---|
| 基于深度循环神经网络的语音识别 | Graves et al. | 用于语音识别的序列数据 RNN 模型。标签问题中,输入-输出对齐未知 contribute |
| Deep voice: 实时神经文本转语音 | Arik et al. | 执行端到端神经语音合成的 DNN 模型。所需参数更少,且比其他系统更快。 contribute |
| 声音生成模型 | WaveNet: A Generative Model for Raw Audio | 生成原始音频波形的 CNN 模型。具有每个音频样本的预测分布。生成逼真的音乐片段。 contribute |
机器理解
自然语言处理模型的一个子集,用于回答关于给定上下文段落的问题。
| 模型类别 | 参考文献 | 描述 | Hugging Face Spaces |
|---|---|---|---|
| Bidirectional Attention Flow | Seo et al. | 一个针对给定上下文段落回答查询的模型。 | |
| BERT-Squad | Devlin et al. | 该模型基于给定输入段落的上下文回答问题。 | |
| RoBERTa | Liu et al. | 一个基于大型 Transformer 的模型,根据给定的输入文本预测情感。 | |
| GPT-2 | Radford et al. | 一个基于大型 Transformer 的语言模型,给定文本中的一些词序列,预测下一个词。 | |
| T5 | Raffel et al. | 一个基于大型 Transformer 的语言模型,通过同时训练多个任务来实现对提示词更好的语义理解,能够进行情感分析、问答、相似度检测、翻译、摘要等。 |
机器翻译
这类自然语言处理模型学习如何将输入文本翻译成另一种语言。
| 模型类别 | 参考文献 | 描述 |
|---|---|---|
| 通过联合学习对齐和翻译的神经机器翻译 | Bahdanau等人 | 旨在构建一个单一的神经网络,该网络可以联合调优以最大化翻译性能。 贡献 |
| 谷歌神经机器翻译系统 | Wu等人 | 该模型有助于改善神经机器翻译(NMT)系统面临的问题,例如并行性,从而加速最终翻译速度。 贡献 |
语言建模
自然语言处理模型的这一子集从大型文本语料库中学习语言的表示。
| 模型类别 | 参考文献 | 描述 |
|---|---|---|
| 深度神经网络语言模型 | Arisoy等人 | 一种DNN声学模型。用于许多自然语言技术。表示语言中所有可能单词序列的概率分布。 贡献 |
视觉问答与对话
自然语言处理模型的这一子集使用输入图像来回答关于这些图像的问题。
| 模型类别 | 参考文献 | 描述 |
|---|---|---|
| VQA: Visual Question Answering | Agrawal et al. | 一种接收图像和关于该图像的自由形式、开放式自然语言问题,并输出自然语言答案的模型。 contribute |
| Yin and Yang: Balancing and Answering Binary Visual Questions | Zhang et al. | 通过将问题转换为简明概括图像中待检测视觉概念的元组来处理 VQA。接下来,如果能在图像中找到该概念,则提供“是”或“否”的答案。其在非平衡数据集上的性能与传统 VQA 方法相当,在平衡数据集上则优于传统方法。 contribute |
| Making the V in VQA Matter | Goyal et al. | 通过收集互补图像来平衡 VQA 数据集,使得每个问题都关联着一对相似图像,从而对该问题产生两个不同的答案,提供了一个独特的可解释模型,该模型提供基于反例的解释。 contribute |
| Visual Dialog | Das et al. | 一个能够使用自然、对话式的语言就视觉内容与人类进行有意义对话的 AI 智能体。构建了一个大规模 Visual Dialog 数据集(VisDial)。 contribute |
其他有趣的模型
有许多有趣的深度学习模型并不属于上述类别。ONNX 团队强烈鼓励用户和研究人员将他们的模型贡献]到不断增长的模型库中。
| 模型类别 | 参考 | 描述 |
|---|---|---|
| 文本到图像 | 生成对抗文本到图像合成 | 有效弥合了文本和图像建模方面的进展,将视觉概念从字符转换为像素。根据详细的文本描述生成合理的鸟类和花卉图像。 贡献 |
| 时间序列预测 | 使用深度神经网络建模长期和短期时间模式 | 该模型提取变量之间的短期局部依赖模式,并发现时间序列趋势的长期模式。它有助于预测太阳能发电厂的能源输出、电力消耗和交通拥堵情况。 贡献 |
| 推荐系统 | DropoutNet: Addressing Cold Start in Recommender Systems | 一种协同过滤方法,基于其他用户的偏好信息对个人的偏好进行预测。 贡献 |
| 协同过滤 | Neural Collaborative Filtering | 一种基于矩阵分解的 DNN 模型,利用用户和物品特征之间的交互。 贡献 |
| 自编码器 | A Hierarchical Neural Autoencoder for Paragraphs and Documents | 一种 LSTM(长短期记忆)自编码器,用于保留和重建多句段落。 贡献 |
用法
每个 ONNX 后端都应支持开箱即用地运行这些模型。下载并解压每个模型的 tarball 后,您将找到:
- 一个表示序列化 ONNX 模型的 protobuf 文件
model.onnx。 - 测试数据(以序列化 protobuf TensorProto 文件或序列化 NumPy 归档的形式)。
用法 - 测试数据入门代码
测试数据文件可用于验证来自 Model Zoo 的 ONNX 模型。我们提供了以下接口示例供您入门使用。请将代码中的 onnx_backend 替换为您选择的、支持 ONNX 推理的相应框架,并同样将 backend.run_model 替换为该框架的模型评估逻辑。
测试数据文件有两种不同的格式:
- 序列化的 protobuf TensorProtos(.pb),存储在遵循命名约定
test_data_set_*的文件夹中。
import numpy as np
import onnx
import os
import glob
import onnx_backend as backend
from onnx import numpy_helper
model = onnx.load('model.onnx')
test_data_dir = 'test_data_set_0'
# Load inputs
inputs = []
inputs_num = len(glob.glob(os.path.join(test_data_dir, 'input_*.pb')))
for i in range(inputs_num):
input_file = os.path.join(test_data_dir, 'input_{}.pb'.format(i))
tensor = onnx.TensorProto()
with open(input_file, 'rb') as f:
tensor.ParseFromString(f.read())
inputs.append(numpy_helper.to_array(tensor))
# Load reference outputs
ref_outputs = []
ref_outputs_num = len(glob.glob(os.path.join(test_data_dir, 'output_*.pb')))
for i in range(ref_outputs_num):
output_file = os.path.join(test_data_dir, 'output_{}.pb'.format(i))
tensor = onnx.TensorProto()
with open(output_file, 'rb') as f:
tensor.ParseFromString(f.read())
ref_outputs.append(numpy_helper.to_array(tensor))
# Run the model on the backend
outputs = list(backend.run_model(model, inputs))
# Compare the results with reference outputs.
for ref_o, o in zip(ref_outputs, outputs):
np.testing.assert_almost_equal(ref_o, o)
- 序列化的 Numpy 归档,存储于遵循命名约定
test_data_*.npz的文件中。每个文件包含一组测试输入和输出。
import numpy as np
import onnx
import onnx_backend as backend
# Load the model and sample inputs and outputs
model = onnx.load(model_pb_path)
sample = np.load(npz_path, encoding='bytes')
inputs = list(sample['inputs'])
outputs = list(sample['outputs'])
# Run the model with an onnx backend and verify the results
np.testing.assert_almost_equal(outputs, backend.run_model(model, inputs))
用法 - 模型量化
你可以使用 Intel® Neural Compressor 获取量化的 ONNX 模型。它提供基于 Web 的 UI 服务以简化量化过程,并支持基于代码的使用方式以提供更丰富的量化设置。有关如何使用基于 Web 的 UI 服务,请参阅 基准文档;有关简单的基于代码的演示,请参阅 示例文档。

用法
访问 ONNX Model Zoo 有多种方式:
Git Clone(不推荐)
由于 ONNX 模型体积较大,使用 git 克隆仓库时不会自动下载这些模型。为了管理这些文件,首先通过运行以下命令安装 Git LFS:
pip install git-lfs
要下载特定模型:
git lfs pull --include="[path to model].onnx" --exclude=""
要下载所有模型:
git lfs pull --include="*" --exclude=""
GitHub UI
或者,您可以直接从 GitHub 下载模型。导航到模型页面,并点击右上角的“Download”按钮。
Model Visualization
为了以图形方式表示每个模型的架构,我们推荐使用 Netron。
Contributions
欢迎为 ONNX Model Zoo 做出贡献!请查阅我们的贡献指南,以了解如何为这一资源的增长和改进做出贡献的更多信息。
感谢您对 ONNX Model Zoo 的关注,我们期待您的参与我们的社区!