tensorrtx

tensorrtx

TensorRT深度学习网络实现库

TensorRTx项目使用TensorRT API实现主流深度学习网络。它提供灵活构建、调试和学习TensorRT引擎的方法,支持YOLO、ResNet、MobileNet等多种模型。兼容TensorRT 7.x和8.x版本,并包含详细教程和常见问题解答,方便用户快速入门。

TensorRT深度学习网络GPU加速YOLO系列模型转换Github开源项目

TensorRTx

TensorRTx 旨在使用 TensorRT 网络定义 API 实现流行的深度学习网络。

为什么我们不使用解析器(ONNX 解析器、UFF 解析器、caffe 解析器等),而是使用复杂的 API 从头开始构建网络?我总结了以下几个方面的优势:

  • 灵活性,易于修改网络、添加/删除层或输入/输出张量、替换层、合并层、将预处理和后处理集成到网络中等。
  • 可调试性,以增量开发方式构建整个网络,易于获取中间层结果。
  • 教育意义,在开发过程中了解网络结构,而不是将一切视为黑盒。

TensorRTx 的基本工作流程是:

  1. 从 pytorch、mxnet 或 tensorflow 等获取训练好的模型。一些 pytorch 模型可以在我的仓库 pytorchx 中找到,其余的来自流行的开源仓库。
  2. 将权重导出到纯文本文件 -- .wts 文件
  3. 在 TensorRT 中加载权重,定义网络,构建 TensorRT 引擎。
  4. 加载 TensorRT 引擎并运行推理。

新闻

  • 2024年7月29日mpj1234:在 TensorRT 10.x API 中检查 YOLOv5、YOLOv8 和 YOLOv10,分支 → trt10
  • 2024年7月29日mpj1234:YOLOv10
  • 2024年6月21日WuxinrongY:YOLOv9-T、YOLOv9-S、YOLOv9-M
  • 2024年4月28日lindsayshuo:YOLOv8-pose
  • 2024年4月22日B1SH0PP:EfficientAd:在毫秒级延迟下实现准确的视觉异常检测。
  • 2024年4月18日lindsayshuo:YOLOv8-p2
  • 2024年3月12日lindsayshuo:YOLOv8-cls
  • 2024年3月11日WuxinrongY:YOLOv9:使用可编程梯度信息学习你想学习的内容
  • 2024年3月7日AadeIT:CSRNet:用于理解高度拥挤场景的空洞卷积神经网络
  • 2023年10月17日Rex-LK:YOLOv8-Seg
  • 2023年6月30日xiaocao-tianlindsayshuo:YOLOv8
  • 2023年3月1日NengwpRCNNUNet 升级以支持 TensorRT 8。
  • 2022年12月18日YOLOv5 升级以支持 v7.0,包括实例分割。
  • 2022年12月12日East-FaceUNet 升级以支持 Pytorch-UNet 的 v3.0 版本。
  • 2022年10月26日ausk:YoloP(用于全景驾驶感知的一次性查看)。

教程

测试环境

  1. TensorRT 7.x
  2. TensorRT 8.x(部分模型支持 8.x)

如何运行

每个文件夹内都有一个 readme,解释了如何运行其中的模型。

模型

以下模型已实现。

名称描述
mlp适合初学者的基础模型,有详细文档
lenet最简单的模型,作为本项目的"Hello World"
alexnet易于实现,所有层都支持TensorRT
googlenetGoogLeNet (Inception v1)
inceptionInception v3, v4
mnasnet来自论文的深度乘数为0.5的MNASNet
mobilenetMobileNet v2, v3-small, v3-large
resnet实现了resnet-18、resnet-50和resnext50-32x4d
senetse-resnet50
shufflenet输出通道为0.5x的ShuffleNet v2
squeezenetSqueezeNet 1.1模型
vggVGG 11层模型
yolov3-tiny权重和PyTorch实现来自ultralytics/yolov3
yolov3darknet-53,权重和PyTorch实现来自ultralytics/yolov3
yolov3-sppdarknet-53,权重和PyTorch实现来自ultralytics/yolov3
yolov4CSPDarknet53,权重来自AlexeyAB/darknet,PyTorch实现来自ultralytics/yolov3
yolov5ultralytics/yolov5的yolov5 v1.0-v7.0,支持检测、分类和实例分割
yolov7yolov7 v0.1,PyTorch实现来自WongKinYiu/yolov7
yolov8yolov8,PyTorch实现来自ultralytics/ultralytics
yolov9PyTorch实现来自WongKinYiu/yolov9
yolopyolop,PyTorch实现来自hustvl/YOLOP
retinafaceresnet50和mobilnet0.25,权重来自biubug6/Pytorch_Retinaface
arcfaceLResNet50E-IR、LResNet100E-IR和MobileFaceNet,权重来自deepinsight/insightface
retinafaceAntiCovmobilenet0.25,权重来自deepinsight/insightface,RetinaFace抗COVID-19,检测人脸和口罩属性
dbnet场景文本检测,权重来自BaofengZan/DBNet.pytorch
crnnPyTorch实现来自meijieru/crnn.pytorch
ufldPyTorch实现来自Ultra-Fast-Lane-Detection,ECCV2020
hrnethrnet图像分类和hrnet语义分割,PyTorch实现来自HRNet-Image-ClassificationHRNet-Semantic-Segmentation
psenetPSENet文本检测,TensorFlow实现来自liuheng92/tensorflow_PSENet
ibnnetIBN-Net,PyTorch实现来自XingangPan/IBN-Net,ECCV2018
unetU-Net,PyTorch实现来自milesial/Pytorch-UNet
repvggRepVGG,PyTorch实现来自DingXiaoH/RepVGG
lprnetLPRNet,PyTorch实现来自xuexingyu24/License_Plate_Detection_Pytorch
refinedetRefineDet,PyTorch实现来自luuuyi/RefineDet.PyTorch
densenetDenseNet-121,来自torchvision.models
rcnnFasterRCNN和MaskRCNN,模型来自detectron2
tsmTSM:用于高效视频理解的时间偏移模块,ICCV2019
scaled-yolov4yolov4-csp,PyTorch实现来自WongKinYiu/ScaledYOLOv4
centernetCenterNet DLA-34,PyTorch实现来自xingyizhou/CenterNet
efficientnetEfficientNet b0-b8和l2,PyTorch实现来自lukemelas/EfficientNet-PyTorch
detrDE⫶TR,PyTorch实现来自facebookresearch/detr
swin-transformerSwin Transformer - 语义分割,仅支持Swin-T。PyTorch实现来自microsoft/Swin-Transformer
real-esrganReal-ESRGAN。Pytorch实现见real-esrgan
superpointSuperPoint。Pytorch模型来自magicleap/SuperPointPretrainedNetwork
csrnetCSRNet。Pytorch实现见leeyeehoo/CSRNet-pytorch
EfficientAdEfficientAd:毫秒级延迟的精确视觉异常检测。源自anomalib

模型库

可以从模型库下载.wts文件以进行快速评估。但建议从pytorch/mxnet/tensorflow模型转换.wts文件,这样您就可以重新训练自己的模型。

Google云盘 | 百度网盘 密码: uvv2

棘手操作

在这些模型中遇到的一些棘手操作,已经解决,但可能有更好的解决方案。

名称描述
BatchNorm通过缩放层实现,用于resnet、googlenet、mobilenet等。
MaxPool2d(ceil_mode=True)在最大池化前使用填充层解决ceil_mode=True,参见googlenet。
带填充的平均池化必要时使用setAverageCountExcludesPadding(),参见inception。
relu6使用Relu6(x) = Relu(x) - Relu(x-6),参见mobilenet。
torch.chunk()通过tensorrt插件实现'chunk(2, dim=C)',参见shufflenet。
通道重排使用两个重排层实现channel_shuffle,参见shufflenet。
自适应池化使用固定输入维度,并使用常规平均池化,参见shufflenet。
leaky relu我编写了一个leaky relu插件,但可以使用NvInferPlugin.h中的PRelu,参见trt4分支中的yolov3。
yolo层 v1yolo层作为插件实现,参见trt4分支中的yolov3。
yolo层 v2在一个插件中实现三个yolo层,参见yolov3-spp。
上采样替换为反卷积层,参见yolov3。
hsigmoid硬sigmoid作为插件实现,hsigmoid和hswish用于mobilenetv3
retinaface输出解码实现插件以解码边界框、置信度和关键点,参见retinaface。
mishmish激活函数作为插件实现,mish用于yolov4
prelumxnet的具有可训练gamma的prelu激活作为插件实现,用于arcface
HardSwishhard_swish = x * hard_sigmoid,用于yolov5 v3.0
LSTM使用tensorrt api实现pytorch nn.LSTM()

速度基准

模型设备批量大小模式输入形状(高x宽)FPS
YOLOv3-tinyXeon E5-2620/GTX10801FP32608x608333
YOLOv3(darknet53)Xeon E5-2620/GTX10801FP32608x60839.2
YOLOv3(darknet53)Xeon E5-2620/GTX10801INT8608x60871.4
YOLOv3-spp(darknet53)Xeon E5-2620/GTX10801FP32608x60838.5
YOLOv4(CSPDarknet53)Xeon E5-2620/GTX10801FP32608x60835.7
YOLOv4(CSPDarknet53)Xeon E5-2620/GTX10804FP32608x60840.9
YOLOv4(CSPDarknet53)Xeon E5-2620/GTX10808FP32608x60841.3
YOLOv5-s v3.0Xeon E5-2620/GTX10801FP32608x608142
YOLOv5-s v3.0Xeon E5-2620/GTX10804FP32608x608173
YOLOv5-s v3.0Xeon E5-2620/GTX10808FP32608x608190
YOLOv5-m v3.0Xeon E5-2620/GTX10801FP32608x60871
YOLOv5-l v3.0Xeon E5-2620/GTX10801FP32608x60843
YOLOv5-x v3.0Xeon E5-2620/GTX10801FP32608x60829
YOLOv5-s v4.0Xeon E5-2620/GTX10801FP32608x608142
YOLOv5-m v4.0Xeon E5-2620/GTX10801FP32608x60871
YOLOv5-l v4.0Xeon E5-2620/GTX10801FP32608x60840
YOLOv5-x v4.0Xeon E5-2620/GTX10801FP32608x60827
RetinaFace(resnet50)Xeon E5-2620/GTX10801FP32480x64090
RetinaFace(resnet50)Xeon E5-2620/GTX10801INT8480x640204
RetinaFace(mobilenet0.25)Xeon E5-2620/GTX10801FP32480x640417
ArcFace(LResNet50E-IR)Xeon E5-2620/GTX10801FP32112x112333
CRNNXeon E5-2620/GTX10801FP3232x1001000

欢迎帮助,如果您获得了速度结果,请添加一个问题或PR。

致谢与联系

欢迎任何贡献、问题和讨论,可通过以下方式联系我。

电子邮件:wangxinyu_es@163.com

微信ID:wangxinyu0375(可加我微信进tensorrtx交流群,备注:tensorrtx

编辑推荐精选

讯飞智文

讯飞智文

一键生成PPT和Word,让学习生活更轻松

讯飞智文是一个利用 AI 技术的项目,能够帮助用户生成 PPT 以及各类文档。无论是商业领域的市场分析报告、年度目标制定,还是学生群体的职业生涯规划、实习避坑指南,亦或是活动策划、旅游攻略等内容,它都能提供支持,帮助用户精准表达,轻松呈现各种信息。

AI办公办公工具AI工具讯飞智文AI在线生成PPTAI撰写助手多语种文档生成AI自动配图热门
讯飞星火

讯飞星火

深度推理能力全新升级,全面对标OpenAI o1

科大讯飞的星火大模型,支持语言理解、知识问答和文本创作等多功能,适用于多种文件和业务场景,提升办公和日常生活的效率。讯飞星火是一个提供丰富智能服务的平台,涵盖科技资讯、图像创作、写作辅助、编程解答、科研文献解读等功能,能为不同需求的用户提供便捷高效的帮助,助力用户轻松获取信息、解决问题,满足多样化使用场景。

热门AI开发模型训练AI工具讯飞星火大模型智能问答内容创作多语种支持智慧生活
Spark-TTS

Spark-TTS

一种基于大语言模型的高效单流解耦语音令牌文本到语音合成模型

Spark-TTS 是一个基于 PyTorch 的开源文本到语音合成项目,由多个知名机构联合参与。该项目提供了高效的 LLM(大语言模型)驱动的语音合成方案,支持语音克隆和语音创建功能,可通过命令行界面(CLI)和 Web UI 两种方式使用。用户可以根据需求调整语音的性别、音高、速度等参数,生成高质量的语音。该项目适用于多种场景,如有声读物制作、智能语音助手开发等。

Trae

Trae

字节跳动发布的AI编程神器IDE

Trae是一种自适应的集成开发环境(IDE),通过自动化和多元协作改变开发流程。利用Trae,团队能够更快速、精确地编写和部署代码,从而提高编程效率和项目交付速度。Trae具备上下文感知和代码自动完成功能,是提升开发效率的理想工具。

AI工具TraeAI IDE协作生产力转型热门
咔片PPT

咔片PPT

AI助力,做PPT更简单!

咔片是一款轻量化在线演示设计工具,借助 AI 技术,实现从内容生成到智能设计的一站式 PPT 制作服务。支持多种文档格式导入生成 PPT,提供海量模板、智能美化、素材替换等功能,适用于销售、教师、学生等各类人群,能高效制作出高品质 PPT,满足不同场景演示需求。

讯飞绘文

讯飞绘文

选题、配图、成文,一站式创作,让内容运营更高效

讯飞绘文,一个AI集成平台,支持写作、选题、配图、排版和发布。高效生成适用于各类媒体的定制内容,加速品牌传播,提升内容营销效果。

热门AI辅助写作AI工具讯飞绘文内容运营AI创作个性化文章多平台分发AI助手
材料星

材料星

专业的AI公文写作平台,公文写作神器

AI 材料星,专业的 AI 公文写作辅助平台,为体制内工作人员提供高效的公文写作解决方案。拥有海量公文文库、9 大核心 AI 功能,支持 30 + 文稿类型生成,助力快速完成领导讲话、工作总结、述职报告等材料,提升办公效率,是体制打工人的得力写作神器。

openai-agents-python

openai-agents-python

OpenAI Agents SDK,助力开发者便捷使用 OpenAI 相关功能。

openai-agents-python 是 OpenAI 推出的一款强大 Python SDK,它为开发者提供了与 OpenAI 模型交互的高效工具,支持工具调用、结果处理、追踪等功能,涵盖多种应用场景,如研究助手、财务研究等,能显著提升开发效率,让开发者更轻松地利用 OpenAI 的技术优势。

Hunyuan3D-2

Hunyuan3D-2

高分辨率纹理 3D 资产生成

Hunyuan3D-2 是腾讯开发的用于 3D 资产生成的强大工具,支持从文本描述、单张图片或多视角图片生成 3D 模型,具备快速形状生成能力,可生成带纹理的高质量 3D 模型,适用于多个领域,为 3D 创作提供了高效解决方案。

3FS

3FS

一个具备存储、管理和客户端操作等多种功能的分布式文件系统相关项目。

3FS 是一个功能强大的分布式文件系统项目,涵盖了存储引擎、元数据管理、客户端工具等多个模块。它支持多种文件操作,如创建文件和目录、设置布局等,同时具备高效的事件循环、节点选择和协程池管理等特性。适用于需要大规模数据存储和管理的场景,能够提高系统的性能和可靠性,是分布式存储领域的优质解决方案。

下拉加载更多