TensorRT使用TX2进行FP16和FP32的时间计算

本文介绍使用TensorRT加速基于VGG16RefindetSSD的目标检测过程。通过使用半精度(FP16)计算,可以显著降低每帧图片的处理时间。文章详细解释了如何判断平台是否支持FP16计算,以及如何正确配置TensorRT以实现性能优化。

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

本工程基于VGG16 Refindet SSD进行目标检测,在没有使用TensorRT库的时,测试没帧图片所需时间130ms(从读入原始图片到测试出最终的结果)。使用半精度(FP16:float16)每帧图片的测试时间降到50~60ms;使用单精度(FP32:float32)每帧图片给的测试时间降到80~90ms。

使用TensorRT提速时如何操作?

首先平台支持半精度计算,这个如何判断?

在TensorRT的示例代码中有这样一行代码:

bool useFp16 = builder->platformHasFastFp16();

若返回的是false,则平台不支持FP16计算;若返回是true,则平台支持FP16计算;

其实最终决定是否能进行FP16计算的因素是你的平台使用的集成显卡(igpu),还是独立显卡(dgpu),只有集成显卡才支持FP16计算(参考:https://github.com/dusty-nv/jetson-inference/issues/134);

如果代码返回是false,强制进行FP16计算,并不能提速;

现将设置精度计算的几行重点代码摘录如下:

bool useFp16 = builder->platformHasFastFp16();
DataType modelDataType = useFp16 ? DataType::kHALF : DataType::kFLOAT;
const IBlobNameToTensor* blobNameToTensor =	parser->parse(deployFile.c_str(),
                                                              modelFile.c_str(),
                                                              *network,
                                                              modelDataType);
。。。 。。。(省略)
if(useFp16)
{
    builder->setHalf2Mode(true);
}

参考:

https://blog.youkuaiyun.com/dark5669/article/details/79976015

https://docs.nvidia.com/deeplearning/sdk/tensorrt-developer-guide/index.html#mixed_precision(中的2.4.1节)

https://docs.nvidia.com/deeplearning/sdk/tensorrt-developer-guide/index.html#deploy_embed(中的2.5.2节)

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

猫猫与橙子

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值