TensorRT C++ API用法
1、C++ API vs Python API
本质上,TensorRT的C++接口和Python接口在满足你的需要时应该是接近完全一致的,C++接口应该被用在对性能有很大需求的场景,也同时被用在安全很重要的场景,比如自动驾驶。
Python接口最大的好处就是在做数据预处理和后处理的时候比较方便,因为你可以使用各种各样的Python库,比如NumPy和SciPy。
2、C++实例TensorRT对象
执行inference操作,你需要使用IExecutionContext对象。在创建IExecutionContext对象之前,你需要创建一个ICudaEngine对象(engine)。
有两种方式来创建engine:
- 解析训练好的模型。这种情况下engine可以被随意的序列化并且保存用于后续的使用
- caffe模型解析生成engine
- onnx模型解析生成engine
- uuf模型(TensorFlow生成的)解析生成engine
- 通过从磁盘读取序列化的engine。这种情况下,性能是更好的,因为解析模型和创建中间对象的步骤已经跳过。
需要创建一个全局的ILogger对象,被用作TensorRT API各种方法的参数。创建ILogger对象的示例代码:
class Logger : public ILogger
{
void log(Severit