mmdetection-to-tensorrt
mmdetection-to-tensorrt 是一款专为 MMDetection 框架设计的模型转换工具,旨在将训练好的目标检测模型高效转化为 NVIDIA TensorRT 引擎,实现端到端的加速部署。它主要解决了深度学习模型在实际生产环境中推理速度慢、资源占用高的问题,让算法能更流畅地运行在边缘设备或服务器上。
这款工具非常适合从事计算机视觉开发的工程师、算法研究人员以及需要优化模型性能的开发者使用。其核心亮点在于全面支持 FP16 半精度和实验性的 INT8 量化,显著降低显存占用并提升推理速度;同时具备动态输入形状(Dynamic Shape)和批量输入(Batch Input)处理能力,能够灵活适应不同分辨率的图像和多路并发场景。此外,它还支持 Mask 分支(实验中)并与 DeepStream 生态兼容,方便构建复杂的视频分析流水线。无论是通过命令行一键转换,还是利用 Python API 进行精细化控制,mmdetection-to-tensorrt 都提供了便捷的流程,帮助用户轻松完成从模型训练到高性能部署的最后一步。
使用场景
某智慧交通团队正在将基于 MMDetection 训练的车辆检测模型部署到边缘计算盒子中,以实现对路口车流的实时统计分析。
没有 mmdetection-to-tensorrt 时
- 推理延迟高:直接使用 PyTorch 原生模型在边缘设备上运行,单帧处理耗时超过 80ms,无法满足每秒 30 帧的实时视频流分析需求。
- 资源占用过大:FP32 精度的模型显存占用高,导致同一张显卡上无法并行运行多路视频分析任务,硬件利用率低。
- 动态尺寸支持差:为了适配不同分辨率的监控摄像头,需要维护多个固定输入尺寸的模型版本,或者在代码中强行缩放图像,严重影响小目标检测精度。
- 部署流程繁琐:从训练好的权重到最终可执行的推理引擎,需要手动编写大量复杂的算子转换脚本和 C++ 封装代码,出错率高且难以维护。
使用 mmdetection-to-tensorrt 后
- 推理速度飞跃:通过 FP16 量化和 TensorRT 优化,单帧处理时间降至 15ms 以内,轻松实现 4 路高清视频流的实时同步检测。
- 吞吐量显著提升:利用半精度推理大幅降低显存占用,使得单台边缘设备能同时承载的业务路数翻倍,降低了硬件采购成本。
- 灵活适配场景:借助动态形状(Dynamic Shape)功能,同一个模型即可完美适应从广角到长焦等不同分辨率的输入,无需重新训练或转换。
- 端到端一键部署:仅需一条命令行即可完成从 MMDetection 配置文件到 TensorRT 引擎的转换,自动处理了 NMS 等后处理逻辑,极大简化了工程落地难度。
mmdetection-to-tensorrt 成功打通了算法研发到高性能边缘部署的“最后一公里”,让复杂的检测模型在资源受限的设备上也能跑得又快又稳。
运行环境要求
- Linux
必需 NVIDIA GPU,支持 CUDA 11.7,需安装 TensorRT 8.6.1
未说明

快速开始
MMDet 转 TensorRT
[!NOTE]
主分支用于支持 MMDetection>=3.0 的模型转换。 如果您希望在较旧版本的 MMDetection 上进行模型转换,请切换到以下分支:
新闻
- 2024年2月:支持 MMDetection>=3.0
简介
该项目旨在支持使用 TensorRT 对 MMDetection 中的模型进行端到端部署。
掩码支持目前处于 实验 阶段。
功能:
- fp16
- int8(实验)
- 批量输入
- 动态输入形状
- 不同模块的组合
- DeepStream
要求
安装 MMDetection:
pip install openmim mim install mmdet==3.3.0-
git clone https://github.com/grimoire/torch2trt_dynamic.git torch2trt_dynamic cd torch2trt_dynamic pip install -e . 安装 amirstan_plugin:
安装 TensorRT:TensorRT
克隆仓库并构建插件
git clone --depth=1 https://github.com/grimoire/amirstan_plugin.git cd amirstan_plugin git submodule update --init --progress --depth=1 mkdir build cd build cmake -DTENSORRT_DIR=${TENSORRT_DIR} .. make -j10[!NOTE]
请勿忘记 在
~/.bashrc中设置环境变量:export AMIRSTAN_LIBRARY_PATH=${amirstan_plugin_root}/build/lib
安装
主机
git clone https://github.com/grimoire/mmdetection-to-tensorrt.git
cd mmdetection-to-tensorrt
pip install -e .
Docker
构建 Docker 镜像
sudo docker build -t mmdet2trt_docker:v1.0 docker/
运行(将显示 CLI 入口点的帮助信息)
sudo docker run --gpus all -it --rm -v ${your_data_path}:${bind_path} mmdet2trt_docker:v1.0
或者,如果您想在容器内打开终端:
sudo docker run --gpus all -it --rm -v ${your_data_path}:${bind_path} --entrypoint bash mmdet2trt_docker:v1.0
示例转换:
sudo docker run --gpus all -it --rm -v ${your_data_path}:${bind_path} mmdet2trt_docker:v1.0 ${bind_path}/config.py ${bind_path}/checkpoint.pth ${bind_path}/output.trt
使用方法
从 mmdet 模型创建 TensorRT 模型。详细信息请参阅 getting_started.md。
CLI
# 转换可能需要几分钟。
mmdet2trt ${CONFIG_PATH} ${CHECKPOINT_PATH} ${OUTPUT_PATH}
运行 mmdet2trt -h 可获取可选参数的帮助信息。
Python
shape_ranges=dict(
x=dict(
min=[1,3,320,320],
opt=[1,3,800,1344],
max=[1,3,1344,1344],
)
)
trt_model = mmdet2trt(cfg_path,
weight_path,
shape_ranges=shape_ranges,
fp16_mode=True)
# 保存转换后的模型
torch.save(trt_model.state_dict(), save_model_path)
# 如果您想在 C++ API 中使用该引擎,可以将其保存下来
with open(save_engine_path, mode='wb') as f:
f.write(trt_model.state_dict()['engine'])
[!NOTE]
引擎的输入是 预处理后 的张量。 引擎的输出为
num_dets, bboxes, scores, class_ids。如果您启用了enable_mask标志,则还会有一个额外的输出mask。 引擎输出的边界框未除以scale_factor。
如何使用转换后的模型进行推理:
from mmdet.apis import inference_detector
from mmdet2trt.apis import create_wrap_detector
# 创建包装检测器
trt_detector = create_wrap_detector(trt_model, cfg_path, device_id)
# 结果格式与 MMDetection 相同
result = inference_detector(trt_detector, image_path)
您可以尝试 demo/inference.py 中的演示,或如果想使用 C++ API 进行推理,可以查看 demo/cpp。
更多详细信息请阅读 getting_started.md。
工作原理
大多数其他项目采用 PyTorch => ONNX => TensorRT 的流程,而本仓库则直接将 PyTorch 转换为 TensorRT,避免了不必要的 ONNX IR。有关详细信息,请参阅 how-does-it-work。
支持的模型/模块
[!NOTE]
部分模型仅在 MMDet<3.0 上进行了测试。如果您发现任何无法成功转换的模型, 请在问题中报告。
- Faster R-CNN
- Cascade R-CNN
- Double-Head R-CNN
- Group Normalization
- Weight Standardization
- DCN
- SSD
- RetinaNet
- Libra R-CNN
- FCOS
- Fovea
- CARAFE
- FreeAnchor
- RepPoints
- NAS-FPN
- ATSS
- PAFPN
- FSAF
- GCNet
- Guided Anchoring
- Generalized Attention
- Dynamic R-CNN
- Hybrid Task Cascade
- DetectoRS
- Side-Aware Boundary Localization
- YOLOv3
- PAA
- CornerNet(开发中)
- Generalized Focal Loss
- Grid RCNN
- VFNet
- GROIE
- Mask R-CNN(实验)
- Cascade Mask R-CNN(实验)
- Cascade RPN
- DETR
- YOLOX
测试环境:
- torch=2.2.0
- tensorrt=8.6.1
- mmdetection=3.3.0
- cuda=11.7
常见问题解答
如果您遇到任何问题,请阅读 此页面。
许可证
本项目采用 Apache 2.0 许可证发布。
版本历史
v0.5.02021/08/29v0.4.12021/07/23v0.4.02021/04/01v0.3.02020/11/08v0.2.02020/09/26v0.1.02020/09/02常见问题
相似工具推荐
openclaw
OpenClaw 是一款专为个人打造的本地化 AI 助手,旨在让你在自己的设备上拥有完全可控的智能伙伴。它打破了传统 AI 助手局限于特定网页或应用的束缚,能够直接接入你日常使用的各类通讯渠道,包括微信、WhatsApp、Telegram、Discord、iMessage 等数十种平台。无论你在哪个聊天软件中发送消息,OpenClaw 都能即时响应,甚至支持在 macOS、iOS 和 Android 设备上进行语音交互,并提供实时的画布渲染功能供你操控。 这款工具主要解决了用户对数据隐私、响应速度以及“始终在线”体验的需求。通过将 AI 部署在本地,用户无需依赖云端服务即可享受快速、私密的智能辅助,真正实现了“你的数据,你做主”。其独特的技术亮点在于强大的网关架构,将控制平面与核心助手分离,确保跨平台通信的流畅性与扩展性。 OpenClaw 非常适合希望构建个性化工作流的技术爱好者、开发者,以及注重隐私保护且不愿被单一生态绑定的普通用户。只要具备基础的终端操作能力(支持 macOS、Linux 及 Windows WSL2),即可通过简单的命令行引导完成部署。如果你渴望拥有一个懂你
stable-diffusion-webui
stable-diffusion-webui 是一个基于 Gradio 构建的网页版操作界面,旨在让用户能够轻松地在本地运行和使用强大的 Stable Diffusion 图像生成模型。它解决了原始模型依赖命令行、操作门槛高且功能分散的痛点,将复杂的 AI 绘图流程整合进一个直观易用的图形化平台。 无论是希望快速上手的普通创作者、需要精细控制画面细节的设计师,还是想要深入探索模型潜力的开发者与研究人员,都能从中获益。其核心亮点在于极高的功能丰富度:不仅支持文生图、图生图、局部重绘(Inpainting)和外绘(Outpainting)等基础模式,还独创了注意力机制调整、提示词矩阵、负向提示词以及“高清修复”等高级功能。此外,它内置了 GFPGAN 和 CodeFormer 等人脸修复工具,支持多种神经网络放大算法,并允许用户通过插件系统无限扩展能力。即使是显存有限的设备,stable-diffusion-webui 也提供了相应的优化选项,让高质量的 AI 艺术创作变得触手可及。
everything-claude-code
everything-claude-code 是一套专为 AI 编程助手(如 Claude Code、Codex、Cursor 等)打造的高性能优化系统。它不仅仅是一组配置文件,而是一个经过长期实战打磨的完整框架,旨在解决 AI 代理在实际开发中面临的效率低下、记忆丢失、安全隐患及缺乏持续学习能力等核心痛点。 通过引入技能模块化、直觉增强、记忆持久化机制以及内置的安全扫描功能,everything-claude-code 能显著提升 AI 在复杂任务中的表现,帮助开发者构建更稳定、更智能的生产级 AI 代理。其独特的“研究优先”开发理念和针对 Token 消耗的优化策略,使得模型响应更快、成本更低,同时有效防御潜在的攻击向量。 这套工具特别适合软件开发者、AI 研究人员以及希望深度定制 AI 工作流的技术团队使用。无论您是在构建大型代码库,还是需要 AI 协助进行安全审计与自动化测试,everything-claude-code 都能提供强大的底层支持。作为一个曾荣获 Anthropic 黑客大奖的开源项目,它融合了多语言支持与丰富的实战钩子(hooks),让 AI 真正成长为懂上
ComfyUI
ComfyUI 是一款功能强大且高度模块化的视觉 AI 引擎,专为设计和执行复杂的 Stable Diffusion 图像生成流程而打造。它摒弃了传统的代码编写模式,采用直观的节点式流程图界面,让用户通过连接不同的功能模块即可构建个性化的生成管线。 这一设计巧妙解决了高级 AI 绘图工作流配置复杂、灵活性不足的痛点。用户无需具备编程背景,也能自由组合模型、调整参数并实时预览效果,轻松实现从基础文生图到多步骤高清修复等各类复杂任务。ComfyUI 拥有极佳的兼容性,不仅支持 Windows、macOS 和 Linux 全平台,还广泛适配 NVIDIA、AMD、Intel 及苹果 Silicon 等多种硬件架构,并率先支持 SDXL、Flux、SD3 等前沿模型。 无论是希望深入探索算法潜力的研究人员和开发者,还是追求极致创作自由度的设计师与资深 AI 绘画爱好者,ComfyUI 都能提供强大的支持。其独特的模块化架构允许社区不断扩展新功能,使其成为当前最灵活、生态最丰富的开源扩散模型工具之一,帮助用户将创意高效转化为现实。
gemini-cli
gemini-cli 是一款由谷歌推出的开源 AI 命令行工具,它将强大的 Gemini 大模型能力直接集成到用户的终端环境中。对于习惯在命令行工作的开发者而言,它提供了一条从输入提示词到获取模型响应的最短路径,无需切换窗口即可享受智能辅助。 这款工具主要解决了开发过程中频繁上下文切换的痛点,让用户能在熟悉的终端界面内直接完成代码理解、生成、调试以及自动化运维任务。无论是查询大型代码库、根据草图生成应用,还是执行复杂的 Git 操作,gemini-cli 都能通过自然语言指令高效处理。 它特别适合广大软件工程师、DevOps 人员及技术研究人员使用。其核心亮点包括支持高达 100 万 token 的超长上下文窗口,具备出色的逻辑推理能力;内置 Google 搜索、文件操作及 Shell 命令执行等实用工具;更独特的是,它支持 MCP(模型上下文协议),允许用户灵活扩展自定义集成,连接如图像生成等外部能力。此外,个人谷歌账号即可享受免费的额度支持,且项目基于 Apache 2.0 协议完全开源,是提升终端工作效率的理想助手。
markitdown
MarkItDown 是一款由微软 AutoGen 团队打造的轻量级 Python 工具,专为将各类文件高效转换为 Markdown 格式而设计。它支持 PDF、Word、Excel、PPT、图片(含 OCR)、音频(含语音转录)、HTML 乃至 YouTube 链接等多种格式的解析,能够精准提取文档中的标题、列表、表格和链接等关键结构信息。 在人工智能应用日益普及的今天,大语言模型(LLM)虽擅长处理文本,却难以直接读取复杂的二进制办公文档。MarkItDown 恰好解决了这一痛点,它将非结构化或半结构化的文件转化为模型“原生理解”且 Token 效率极高的 Markdown 格式,成为连接本地文件与 AI 分析 pipeline 的理想桥梁。此外,它还提供了 MCP(模型上下文协议)服务器,可无缝集成到 Claude Desktop 等 LLM 应用中。 这款工具特别适合开发者、数据科学家及 AI 研究人员使用,尤其是那些需要构建文档检索增强生成(RAG)系统、进行批量文本分析或希望让 AI 助手直接“阅读”本地文件的用户。虽然生成的内容也具备一定可读性,但其核心优势在于为机器