c#和java部署pytorch同事识别两个图片_使用ONNX+TensorRT部署人脸检测和关键点250fps

本文介绍了如何使用ONNX将PyTorch的Retinaface模型转换并利用TensorRT进行C++推理,实现人脸检测和关键点识别的高速运行,达到250fps。内容涉及ONNX的优势、Retinaface模型简介、TensorRT加速效果以及C++部署ONNX模型的步骤,展示了TensorRT在GPU加速上的显著效果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

fc1383385dd8c71b819f9893a78a3e23.gif

我尽量用尽可能短的语言将本文的核心内容浓缩到文章的标题中,前段时间给大家讲解Jetson Nano的部署,我们讲到用caffe在Nano上部署yolov3,感兴趣的童鞋可以看看之前的文章,然后顺便挖了一个坑:如何部署ONNX模型, 这个问题其实分为两个部分,第一是为什么要用ONNX,第二是如何部署ONNX。本文就是来填这个坑的。

TLTR,本文的核心思想包括:

  • 怎么才能最快速的部署ONNX模型;
  • 当今世界检测人脸和关键点最快的模型是什么?
  • 如何使用ONNX+TensorRT来让你的模型提升7倍加速
  • 我们将向大家介绍我们的新一代人脸检测+比对识别的新一代引擎,有望在GPU上跑到200fps以上,当然也将开源。
  • 如何使用C++在TensorRT上部署ONNX模型。

题图是250fps的人脸检测模型,得益于TensorRT的加速。输入尺寸为1280x960.

为什么要用onnx

现在大家都喜欢用pytorch训练模型,而pytorch训练的模型转成pth,用C++推理也很难达到真正的加速效果,因为本质上最耗时的网络前向推理部分并没有太多的加速。并且采用libtorch C++推理pytorch并不是一件简单的事情,除非你的模型可以被trace。

在这种情况之下,引入onnx更合理,从目前整个DL生态来看,onnx具有以下好处:

  • 它的模型格式比基于layer的老一代框架更加细粒度;
  • 它拥有统一化的定义,并且基于任何框架都可以推理他;
  • 它可以实现不同框架之间的互相转化。

前段时间,我们release了一个retinaface的pytorch项目,并且我们想办法将它导出到了onnx模型,当然这期间经过一些修改,没有复杂模型的代码可以在不修改的情况下轻而易举export到onnx,关于这部分代码可以在我们的平台上找到:

http://manaai.cn​manaai.cn

我们今天要做的事情,就是在上面的onnx模型的基础上,采用TensorRT来进行推理。先做一个简单的速度对比:

0b219088ac347ace2f3bcd50abed240f.png

可以看到,采用TensorRT对ONNX模型加速,速度提升可以说是天囊之别。并且,采用TensorRT纯C++

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值