segment-anything-tensorrt icon indicating copy to clipboard operation
segment-anything-tensorrt copied to clipboard

onnx->trt in C++ get error:this 是 nullptr

Open guanhaiye opened this issue 2 years ago • 5 comments

comment the params "orig_im_size" @torch.no_grad() def forward( self, image_embeddings: torch.Tensor, point_coords: torch.Tensor, point_labels: torch.Tensor, mask_input: torch.Tensor, has_mask_input: torch.Tensor, # orig_im_size: torch.Tensor, ): orig_im_size= torch.tensor([1500, 2250], dtype=torch.float) 在linux中导出onnx模型(TensorRT8.5.1.7) 在windows C++端加载onnx,在进行onnx->trt时报错 nvinfer.h中return mImpl->getName(); 报错:this 是 nullptr。

guanhaiye avatar Sep 11 '23 05:09 guanhaiye

orig_im_size 这个参数不需要啊,

mingj2021 avatar Sep 11 '23 08:09 mingj2021

这个参数 跟后处理有关,在模型导出前,我把这部分代码在 forward中删除了,你可以试试或者想一想,为什么要删除。这个工程我不在维护了,好久了,没什么人气,本意也是介绍模型转化的常规思路。

mingj2021 avatar Sep 11 '23 08:09 mingj2021

这个参数 跟后处理有关,在模型导出前,我把这部分代码在 forward中删除了,你可以试试或者想一想,为什么要删除。这个工程我不在维护了,好久了,没什么人气,本意也是介绍模型转化的常规思路。

能否解答一下为什么要在forward中删除吗,对这块不是很了解,请解惑一下谢谢

guanhaiye avatar Sep 16 '23 10:09 guanhaiye

orig_im_size ,跟这个变量相关的代码,涉及到动态分配内存问题,而c++中 trt 需要提前为 input output分配内存的(创建上下文context时), 当trt 执行到跟这变量这块相关代码时,就会报错的,所以在forward函数中,删除这段代码,并移植到 后处理部分。

mingj2021 avatar Sep 17 '23 09:09 mingj2021

可以自己把这个参数加进去,调试看看,动手实现,预处理 和后处理 这段代码,任何模型都绕不开这块的,建议平时多练练哈!

mingj2021 avatar Sep 17 '23 09:09 mingj2021