Project Icon

tensorrtx

TensorRT深度学习网络实现库

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

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

项目侧边栏1项目侧边栏2
推荐项目
Project Cover

豆包MarsCode

豆包 MarsCode 是一款革命性的编程助手,通过AI技术提供代码补全、单测生成、代码解释和智能问答等功能,支持100+编程语言,与主流编辑器无缝集成,显著提升开发效率和代码质量。

Project Cover

AI写歌

Suno AI是一个革命性的AI音乐创作平台,能在短短30秒内帮助用户创作出一首完整的歌曲。无论是寻找创作灵感还是需要快速制作音乐,Suno AI都是音乐爱好者和专业人士的理想选择。

Project Cover

有言AI

有言平台提供一站式AIGC视频创作解决方案,通过智能技术简化视频制作流程。无论是企业宣传还是个人分享,有言都能帮助用户快速、轻松地制作出专业级别的视频内容。

Project Cover

Kimi

Kimi AI助手提供多语言对话支持,能够阅读和理解用户上传的文件内容,解析网页信息,并结合搜索结果为用户提供详尽的答案。无论是日常咨询还是专业问题,Kimi都能以友好、专业的方式提供帮助。

Project Cover

阿里绘蛙

绘蛙是阿里巴巴集团推出的革命性AI电商营销平台。利用尖端人工智能技术,为商家提供一键生成商品图和营销文案的服务,显著提升内容创作效率和营销效果。适用于淘宝、天猫等电商平台,让商品第一时间被种草。

Project Cover

吐司

探索Tensor.Art平台的独特AI模型,免费访问各种图像生成与AI训练工具,从Stable Diffusion等基础模型开始,轻松实现创新图像生成。体验前沿的AI技术,推动个人和企业的创新发展。

Project Cover

SubCat字幕猫

SubCat字幕猫APP是一款创新的视频播放器,它将改变您观看视频的方式!SubCat结合了先进的人工智能技术,为您提供即时视频字幕翻译,无论是本地视频还是网络流媒体,让您轻松享受各种语言的内容。

Project Cover

美间AI

美间AI创意设计平台,利用前沿AI技术,为设计师和营销人员提供一站式设计解决方案。从智能海报到3D效果图,再到文案生成,美间让创意设计更简单、更高效。

Project Cover

AIWritePaper论文写作

AIWritePaper论文写作是一站式AI论文写作辅助工具,简化了选题、文献检索至论文撰写的整个过程。通过简单设定,平台可快速生成高质量论文大纲和全文,配合图表、参考文献等一应俱全,同时提供开题报告和答辩PPT等增值服务,保障数据安全,有效提升写作效率和论文质量。

投诉举报邮箱: service@vectorlightyear.com
@2024 懂AI·鲁ICP备2024100362号-6·鲁公网安备37021002001498号