TensorRT:CNN分类器案例

该文介绍了一个基于ResNet18的CNN分类器,模型导出为ONNX格式以供C++推理使用。在预处理阶段,避免了cvtColor函数,改为指针偏移提高效率。在C++中,利用TensorRT构建并执行模型,包括模型的序列化与反序列化,以及CUDA内存管理和推理过程。

目录

1.CNN分类器

 1将分类器导出为ONNX格式

2.cpp推理

2.1:build_model()

2.2inference:

1.CNN分类器

学习实现一个完整的CNN分类器案例:

  • 模型里面没有softmax操作,在这里采用包裹一层加上softmax节点后再导出模型,这样使得后处理得到的直接就是概率值,避免后处理上再做softmax
  • c++代码中,则充分采用指针偏移的方式,提升cpu上预处理的效率
  • 对于bgr->rgb也避免使用cvtColor实现,而是简单的改变赋值时的索引,提升效率

 1将分类器导出为ONNX格式

1.主干网络:将softmax分类直接加在主干网络resnet18后面

class Classifier(torch.nn.Module):
    def __init__(self):
        super().__init__()
        #使用torchvision自带的与训练模型, 更多模型请参考:https://tensorvision.readthedocs.io/en/master/
        self.backbone = torchvision.models.resnet18(pretrained=True)  
        
    def forward(self, x):
        feature     = self.backbone(x)
        probability = torch.softmax(feature, dim=1)
        return probability
        

2.图像预处理:

# 对每个通道进行归一化有助于模型的训练
imagenet_mean = [0.485, 0.456, 0.406]
imagenet_std  = [0.229, 0.224,
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值