首页/新闻资讯/正文详情

ONNX 模型仓库 Faster R-CNN R-50-FPN 实战指南:预处理、推理、后处理与 INT8 量化

发布时间:2026/9/24 13:47:17 来源:云帆数科 栏目:资讯中心
ONNX 模型仓库 Faster R-CNN R-50-FPN 实战指南:预处理、推理、后处理与 INT8 量化
ONNX 模型仓库 Faster R-CNN R-50-FPN 实战指南预处理、推理、后处理与 INT8 量化【免费下载链接】modelsA collection of pre-trained, state-of-the-art models in the ONNX format项目地址: https://gitcode.com/gh_mirrors/model/modelsFaster R-CNN R-50-FPN 是 ONNX 模型仓库中经过精度验证的目标检测模型可实时检测 80 个常见物体类别完整类别清单见 coco_classes.txt。本指南以 validated/vision/object_detection_segmentation/faster-rcnn/README.md 为核心结合仓库内实际的 ONNX 模型文件与 ONNX_HUB_MANIFEST.json 中的元数据完整讲解从输入预处理、ONNX Runtime 推理、输出后处理到 INT8 量化的端到端实战流程。读完本文你将掌握如何基于仓库提供的四种版本模型fp32 / int8 / QDQ完成一次可复现的目标检测推理并理解其精度与性能权衡。模型概览与仓库定位Faster R-CNN 于 2015 年提出论文题目Faster R-CNN: Towards Real-Time Object Detection with Region Proposal Networks发表于 NIPS 2015通过引入区域建议网络Region Proposal Network, RPN将候选区域生成与检测网络统一在同一框架内实现了近实时的目标检测。本仓库提供的版本以 ResNet-50 为骨干网络、FPNFeature Pyramid Network为特征金字塔结构由 facebookresearch/maskrcnn-benchmark 转换而来输入为任意尺寸图像输出 80 个 COCO 类别外加 1 个背景类类别文件共 81 行首行为__background的检测框、类别与置信度。仓库在validated/vision/object_detection_segmentation/faster-rcnn/model/目录下提供了四种模型文件每个模型均同时提供纯模型.onnx和附带示例测试数据的压缩包.tar.gz下载对照表如下数据来自原文档模型下载下载含示例测试数据ONNX 版本Opset 版本精度Faster R-CNN R-50-FPN167.3 MB158.0 MB1.510mAP 0.35Faster R-CNN R-50-FPN-fp32168.5 MB156.2 MB1.912mAP 0.3437Faster R-CNN R-50-FPN-int842.6 MB36.2 MB1.912mAP 0.3409Faster R-CNN R-50-FPN-qdq43 MB29 MB1.912mAP 0.3390与 fp32 版 FasterRCNN-12 相比int8 版 FasterRCNN-12 的 mAP 下降幅度为 0.81%性能提升为 1.43 倍。注意性能数据依赖于测试硬件。此处的性能数据采集环境为 Intel® Xeon® Platinum 8280 处理器每实例 1 个插槽 4 核CentOS Linux 8.3数据批次大小为 1。上述模型的输入输出端口、文件校验信息model_sha与字节大小可在 ONNX_HUB_MANIFEST.json 中逐一核对例如 Faster R-CNN R-50-FPN 的model_bytes为 167330019约 167.3 MB与文档表格一致四个模型的io_ports均声明了相同的输入输出结构可据此在接入推理引擎前预先校验图结构。推理流程总览一个完整的推理链路包含四个环节预处理Preprocessing→ 模型推理Inference→ 输出解析Outputs→ 后处理可视化Postprocessing。仓库文档分别给出了预处理与后处理的完整参考代码下文逐一展开。输入到模型模型的唯一输入名为image见 Manifest 中的io_ports声明形状为(3 x height x width)即通道优先CHW布局的浮点张量三个通道依次为 B、G、R见下方预处理步骤。height与width为动态维度模型可以接受不同尺寸的图像输入。预处理步骤原始图像需要经过以下转换才能送入模型加载到 [0, 255] 数值范围即不进行 0-1 归一化缩放按比例缩放Resize以短边为基准缩放到 800保持长宽比转换到 BGR 通道顺序减去均值归一化均值向量为[102.9801, 115.9465, 122.7717]零填充Pad使高度和宽度都能被 32 整除。文档特别指出模型可以接受不同尺寸的图像但为了获得最佳性能建议将图像缩放到高度与宽度都处于[800, 1333]范围内再用零填充使两个维度都能被 32 整除。以下代码展示了如何对 demo.jpg 进行预处理来自原文档可直接运行import numpy as np from PIL import Image def preprocess(image): # Resize ratio 800.0 / min(image.size[0], image.size[1]) image image.resize((int(ratio * image.size[0]), int(ratio * image.size[1])), Image.BILINEAR) # Convert to BGR image np.array(image)[:, :, [2, 1, 0]].astype(float32) # HWC - CHW image np.transpose(image, [2, 0, 1]) # Normalize mean_vec np.array([102.9801, 115.9465, 122.7717]) for i in range(image.shape[0]): image[i, :, :] image[i, :, :] - mean_vec[i] # Pad to be divisible of 32 import math padded_h int(math.ceil(image.shape[1] / 32) * 32) padded_w int(math.ceil(image.shape[2] / 32) * 32) padded_image np.zeros((3, padded_h, padded_w), dtypenp.float32) padded_image[:, :image.shape[1], :image.shape[2]] image image padded_image return image img Image.open(dependencies/demo.jpg) img_data preprocess(img)要点解读ratio 800.0 / min(...)实现“短边对齐 800”的缩放策略由于演示图为 640×480短边 480缩放后尺寸约为 1067×800。均值减法是逐通道进行的且不做除以标准差std的操作这与 ImageNet 分类模型中常用的(x / 255 - mean) / std预处理不同务必按此实现否则检测精度会受影响。填充值固定为 0填充发生在均值减法之后即填充区域不参与减去均值代码中的实现顺序已保证这一点。文档建议将预处理放在推理前的数据管线上完成The transformation should preferably happen at preprocessing不要在模型图内部进行以保证模型输入与文档约定一致。输出到模型模型共有3 个输出对应 Manifest 中名为6379、6381、6383的三个输出端口输出形状含义boxes(nbox x 4)检测框坐标格式为(xmin, ymin, xmax, ymax)float 类型labels(nbox)每个检测框的类别索引int64 类型索引从 0 开始对应类别文件中的__background之后的行即 1 对应personscores(nbox)每个检测框的置信度分数float 类型nbox为本次推理实际输出的检测框数量是动态的取决于输入图像内容与模型内部的非极大值抑制NMS结果。后处理步骤模型输出的坐标是基于预处理后的填充图像坐标系的因此展示前需要按缩放比例ratio还原回原始图像尺寸。文档给出的后处理与可视化代码如下import matplotlib.pyplot as plt import matplotlib.patches as patches classes [line.rstrip(\n) for line in open(coco_classes.txt)] def display_objdetect_image(image, boxes, labels, scores, score_threshold0.7): # Resize boxes ratio 800.0 / min(image.size[0], image.size[1]) boxes / ratio _, ax plt.subplots(1, figsize(12,9)) image np.array(image) ax.imshow(image) # Showing boxes with score 0.7 for box, label, score in zip(boxes, labels, scores): if score score_threshold: rect patches.Rectangle((box[0], box[1]), box[2] - box[0], box[3] - box[1], linewidth1, edgecolorb, facecolornone) ax.annotate(classes[label] : str(np.round(score, 2)), (box[0], box[1]), colorw, fontsize12) ax.add_patch(rect) plt.show() display_objdetect_image(img, boxes, labels, scores)其中类别标签文件从 coco_classes.txt 读取共 81 行首行为__background其余 80 行依次为person、bicycle、car、motorcycle等 COCO 常见类别至toothbrush结束。由于labels输出是类别索引直接以classes[label]索引即可得到可读的类别名。在实际工程中还可以在score score_threshold的基础上叠加类别过滤、IoU 去重等策略score_threshold0.7是文档演示使用的默认阈值可根据场景在 0.30.9 之间调整。推理调用骨架完成预处理后即可借助 ONNX Runtime 等推理引擎加载模型仓库中的.onnx文件可直接作为InferenceSession的输入。以下是与本模型 I/O 结构对应的最小推理代码示意import onnxruntime as ort sess ort.InferenceSession(model/FasterRCNN-12.onnx) # 输入名 image、输出名 6379/6381/6383 均可由 sess.get_inputs()/get_outputs() 获取 boxes, labels, scores sess.run(None, {image: img_data})注意原文档的预处理代码将img_data直接作为模型输入若在脚本中运行需要额外将其转换为(1, 3, H, W)的批维度并传入 ONNX Runtime。仓库 README 首页还提示INT8 系列模型由 Intel® Neural Compressor 生成可在 CPU 推理场景下显著降低模型体积并提升吞吐。数据集与精度验证来源原始预训练 Faster R-CNN 模型来自 facebookresearch/maskrcnn-benchmarkMassa, Francisco 与 Girshick, Ross 维护的 PyTorch 实例分割与目标检测参考实现。评测数据集与 Detectron 一致在 COCO 的coco_2014_minival上计算 mAP该子集与coco_2017_val完全等价。验证精度评测指标为 COCO box mAP对 IoU 0.5:0.95 取平均在 2017 COCO val 数据上计算mAP 为 0.353。该精度与模型表中的 mAP 数值0.35 / 0.3437 / 0.3409 / 0.3390相互印证说明各版本在精度上保持了较好的一致性。INT8 / QDQ 量化从 fp32 到更小更快量化背景Faster R-CNN R-50-FPN-int8与Faster R-CNN R-50-FPN-qdq均由 fp32 版FasterRCNN-12.onnx量化得到量化工具为 Intel® Neural Compressoronnxruntime 后端。从模型文件体积可见量化收益显著fp32 版约 168.5 MBint8 版约 42.6 MB缩小约 4 倍且精度损失控制在极小范围mAP 由 0.3437 降至 0.3409。其中-int8与-qdq的区别在于 ONNX 中量化表示的两种方式int8 为算子级量化表示QDQQuantize-Dequantize为张量级量化表示即在模型中显式插入 QuantizeLinear/DequantizeLinear 节点兼容更多运行时如 ONNX Runtime 的 CPU/GPU EP的量化执行路径。量化环境原文档给出的复现环境如下onnx: 1.9.0onnxruntime: 1.8.0准备模型wget https://github.com/onnx/models/raw/main/vision/object_detection_segmentation/faster-rcnn/model/FasterRCNN-12.onnx也可直接使用仓库内已提供的 FasterRCNN-12.onnx 文件无需重复下载。执行量化量化通过 Intel® Neural Compressor 提供的调优脚本完成命令格式如下bash run_tuning.sh --input_modelpath/to/model \ # model path as *.onnx --configfaster_rcnn.yaml \ --data_pathpath/to/COCO2017 \ --output_modelpath/to/save参数说明参数含义--input_model待量化的 fp32 模型路径格式为*.onnx--config量化配置文件示例为faster_rcnn.yaml定义量化方式、校准策略、精度目标等--data_path校准用数据集路径示例为COCO2017用于后训练量化 PTQ 的校准数据--output_model量化后模型的保存路径Intel® Neural Compressor 支持自动的精度驱动调优策略可帮助用户快速找到精度与性能均衡的最佳量化模型量化属于后训练量化PTQ流程用户也可以在其示例目录中找到针对 ONNX 模型仓库该模型的完整量化示例说明。出处、贡献与许可论文出处Shaoqing Ren, Kaiming He, Ross Girshick, and Jian Sun.Faster R-CNN: Towards Real-Time Object Detection with Region Proposal Networks. Conference on Neural Information Processing Systems (NIPS), 2015.参考实现本模型由 maskrcnn-benchmark含 onnx 导出分支转换而来转换过程中做了一定的修改。贡献者mengniwang95、yuwenzho、airMeng、ftian1、hshen14均来自 Intel。许可证MIT License模型目录文档声明。实战要点小结预处理顺序不可调换缩放 → BGR → CHW → 减均值 → 补零均值[102.9801, 115.9465, 122.7717]是模型训练时的统计量务必按文档原样实现输入尺寸策略短边对齐 800、长边不超过 1333并补零到 32 的倍数是精度与性能的推荐折中点输出坐标还原boxes 坐标基于填充后的图像坐标系展示前必须除以ratio还原到原图量化选型对 CPU 部署有体积与吞吐要求的场景优先选择FasterRCNN-12-int8.onnx约 42.6 MBmAP 仅降 0.81%对跨运行时兼容性要求高的场景可选用 QDQ 版本验证依据所有模型文件、SHA、I/O 端口均可对照 ONNX_HUB_MANIFEST.json 与 model 目录 进行复核确保接入生产环境前图结构与文档声明一致。【免费下载链接】modelsA collection of pre-trained, state-of-the-art models in the ONNX format项目地址: https://gitcode.com/gh_mirrors/model/models创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关推荐

Keil System Viewer外设寄存器缺失排查:从SVD文件到DBGMCU调试冻结
Keil System Viewer外设寄存器缺失排查:从SVD文件到DBGMCU调试冻结

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/24 13:47:11

Flask CLI 与 Shell 开发工具链
Flask CLI 与 Shell 开发工具链

Flask 提供了灵活的命令行工具链,通过 flask 命令行接口(CLI)和 Shell 上下文的能力,使开发、调试、测试和部署工作流程高度可控。将自定义命令与自动化操作集成到 CLI 中,能够极大提升开发效率。 本文将介绍 Flask CLI 的结构和命令注册机制,并展示如何通过自定义命令实… · 2026/9/24 13:46:53

Flask 即插视图高级应用
Flask 即插视图高级应用

在使用 Flask 框架构建 Web 应用时,即插视图(Pluggable Views)是一种结构化管理视图函数的重要方式。通过将视图逻辑封装进类中,不仅提升了代码的可读性和复用性,也更容易与大型项目架构兼容。尤其在构建 RESTful 接口、模块化开发等场景中,即插视图能极大简化开发流程,… · 2026/9/24 13:46:53

西门子PLC与变频器Modbus通讯故障排查实战
西门子PLC与变频器Modbus通讯故障排查实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/24 14:25:04

STM32 SWD烧录连不上?四步物理层排查法
STM32 SWD烧录连不上?四步物理层排查法

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/24 14:25:04

Flutter鸿蒙适配:screen_protector防截屏插件开发实战
Flutter鸿蒙适配:screen_protector防截屏插件开发实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/24 14:24:57

深入解析 OpenKruise:Kubernetes 增强工作负载与原地升级实战指南
深入解析 OpenKruise:Kubernetes 增强工作负载与原地升级实战指南

深入解析 OpenKruise:Kubernetes 增强工作负载与原地升级实战指南 【免费下载链接】kubernetes-handbook Kubernetes 架构与生态:从云原生到 AI 原生基础设施的构建指南 项目地址: https://gitcode.com/gh_mirrors/ku/kubernetes-handbook OpenKr… · 2026/9/24 14:24:38

Phoenix LDAP 认证设计决策的可逆性分析:One-Way Door 与 Two-Way Door 框架的工程实践
Phoenix LDAP 认证设计决策的可逆性分析:One-Way Door 与 Two-Way Door 框架的工程实践

可观测性AI 评测LLMOpsAI 应用人工智能 【免费下载链接】phoenix AI Observability & Evaluation 项目地址: https://gitcode.com/gh_mirrors/phoenix13/phoenix 点击查看 免费下载 本篇技术指南深入解析 Phoenix(AI Observability & Evaluatio… · 2026/9/24 14:24:32

StoryDiffusion:长序列故事图像生成工具,让多帧漫画中的角色保持一致
StoryDiffusion:长序列故事图像生成工具,让多帧漫画中的角色保持一致

StoryDiffusion:长序列故事图像生成工具,让多帧漫画中的角色保持一致 【免费下载链接】StoryDiffusion Accepted as [NeurIPS 2024] Spotlight Presentation Paper 项目地址: https://gitcode.com/GitHub_Trending/st/StoryDiffusion StoryDiffus… · 2026/9/24 14:24:32

基于YOLOv8的渔船作业监控系统:从环境搭建到边缘部署全流程
基于YOLOv8的渔船作业监控系统:从环境搭建到边缘部署全流程

简介:这是一套面向计算机、人工智能、自动化等专业学生与教师的毕业设计级项目资源,围绕YOLOv8实现渔船作业监控系统,可用于毕设、课程设计、大作业或项目立项演示。压缩包共97个文件,约24.21MB,以70个Python源码文件为… · 2026/9/24 0:00:13

1D-CNN时间序列建模实战:从Conv1d原理到工业落地
1D-CNN时间序列建模实战:从Conv1d原理到工业落地

简介:面向时间序列数据建模的一维卷积神经网络完整实现,适合深度学习入门者及需要快速验证时序模型的研究者,能够从音频、文本、传感器或股价等序列中挖掘局部特征与时间依赖。压缩包体积很小,只有3KB,内含3个Python脚… · 2026/9/24 0:00:26

柔软的L:汉语语流中被忽视的舌肌张力控制
柔软的L:汉语语流中被忽视的舌肌张力控制

1. 这个“L”不是字母表里的L,而是舌尖上的L最近在几个方言群和语音教学社群里,反复看到有人发一句:“也说字母L:柔软的长舌”。初看以为是英语发音课笔记,点开才发现全是方言爱好者、播音系学生、语言康复师甚至戏曲演… · 2026/9/24 0:00:44

了解更多?预约专属演示

我们的顾问将为您一对一讲解产品与方案

企业微信二维码