第十个加百列 2024-11-14 11:16 采纳率: 50%
浏览 109
已结题

PointNet++的onnx模型只能使用一次

如上所述:训练了一个pointnet++的semseg的模型,使用输出工具将其转为onnx格式;使用onnxruntime创建会话,然后使用测试数据进行测试。
.
.
结果发现:会话只能处理一张图像,处理第二张图像时会报错;当时以为是图像问题,就调换了图像顺序,结果原第二张(现第一张)图像顺利处理,原第一张(现第二张)图像在处理时同样报错。
.
.
之后试着创建会话两次,两次都重新导入onnx模型,每导入一次onnx模型处理一张图像,第二次导入onnx模型后再处理下一张,然后发现两张图像都能顺利处理
.
.
最后,我使用random生成两个随机数据,导入onnx模型后,第二次处理图像永远会报错,不知道有没有人能解答一下,感谢!
.
.
.
报错信息:
File "G:\3Dpoint\T\Pointnet2_sem_seg\venv\lib\site-packages\onnxruntime\capi\onnxruntime_inference_collection.py", line 220, in run
return self._sess.run(output_names, input_feed, run_options)
onnxruntime.capi.onnxruntime_pybind11_state.InvalidArgument: [ONNXRuntimeError] : 2 : INVALID_ARGUMENT : Non-zero status code returned while running Gather node. Name:'/sa1/Gather_5117' Status Message: indices element out of data bounds, idx=4690565722429122323 must be within the inclusive range [-131072,131071]

Process finished with exit code 1

.
.
.
第一次数据正常处理截图
.

img


.
.
.
第二次数据报错截图
.

img

  • 写回答

31条回答 默认 最新

  • 阿里嘎多学长 2024-11-14 11:24
    关注
    获得0.30元问题酬金

    阿里嘎多学长整理AIGC生成,因移动端显示问题导致当前答案未能完全显示,请使用PC端查看更加详细的解答过程

    解决方案

    PointNet++的onnx模型只能使用一次,可能是因为onnxruntime使用了一个session来执行模型,session只可以处理一次输入。要解决这个问题,可以使用多个session处理多个输入。

    Python代码示例如下:

    import onnxruntime as ort
    
    # 创建session
    session = ort.InferenceSession('model.onnx')
    
    # 处理多个输入
    for image in images:
        # 设置输入
        inputs = {'input': image}
        # 执行模型
        output = session.run(None, inputs)
        # 处理输出
        print(output)
    

    在上面的代码中,我们使用了多个session来处理多个输入,每个session对应一个输入图像。

    如果你使用的是PointNet++的PyTorch实现,可以使用torch::jit::script::Module来编译模型,并使用module.forward来执行模型。

    import torch
    import torch.jit
    
    # 编译模型
    model = torch.jit.script(model)
    # 执行模型
    output = model(image.unsqueeze(0).float())
    # 处理输出
    print(output)
    

    在上面的代码中,我们使用了torch::jit::script::Module来编译模型,然后使用module.forward来执行模型。

    评论

报告相同问题?

问题事件

  • 系统已结题 11月22日
  • 修改了问题 11月14日
  • 修改了问题 11月14日
  • 创建了问题 11月14日