Aimol-l / OrtInference

Using OnnxRuntime to inference yolov10,yolov10+SAM ,yolov10+bytetrack and SAM2 by c++ .
MIT License
37 stars 5 forks source link

memory_attention.onnx 使用DML加载失败 #2

Open lizhiqi-coder opened 2 weeks ago

lizhiqi-coder commented 2 weeks ago

memory_attention.onnx 使用DML加载失败,CPU加载正常 其他3个模型都正常加载 这个问题咋解决?

Aimol-l commented 2 weeks ago

什么是dml?

lizhiqi-coder commented 2 weeks ago

微软官方推出的onnxruntime Provider,https://onnxruntime.ai/docs/execution-providers/DirectML-ExecutionProvider.html,兼容性比较好,Nvidia\AMD显卡都能跑

Aimol-l commented 2 weeks ago

微软官方推出的onnxruntime Provider,https://onnxruntime.ai/docs/execution-providers/DirectML-ExecutionProvider.html,兼容性比较好,Nvidia\AMD显卡都能跑

我不用windows,不了解这个。你如果是n卡用户,直接去onnxruntime github 下载release包使用onnxruntime-win-x64-gpu-1.19.2.zip。有其他的windows用户报告是正常推理的。

Aimol-l commented 2 weeks ago

微软官方推出的onnxruntime Provider,https://onnxruntime.ai/docs/execution-providers/DirectML-ExecutionProvider.html,兼容性比较好,Nvidia\AMD显卡都能跑

屏幕截图_20240927_100110 这里字符分配长度写错了,已经修正。你可以测试看看是不是这个问题导致的。

lizhiqi-coder commented 2 weeks ago

不是这个问题导致的,可能是 SAM2Export导出的模型不兼容

lizhiqi-coder commented 2 weeks ago

能支持下memory_attention.opt.onnx模型吗,这个DML可以正常加载 image

Aimol-l commented 2 weeks ago

能支持下memory_attention.opt.onnx模型吗,这个DML可以正常加载 image

我不使用DML,无法尝试支持,你需要可以去修改SAM2Export中的class MemAttention(nn.Module)。我看了一下原作者的源代码,发现他将sam2/modeling/memory_attention.py 中的class MemoryAttention(nn.Module) 的模型输入修改了,原先是"curr", "memory", "curr_pos", "memory_pos", "num_obj_ptr_tokens",修改后是"curr", "memory_1", "memory_2", "curr_pos", "memory_pos_1", "memory_pos_2"。我不清楚原作者为什么将memory拆分为memory_1和memory_2,以及memory_pos为什么拆分为memory_pos_1和memory_pos_2。假设修改成功,但这又可能导致memory_attention的输入在c++侧需要大改,重新将他们的关系相映射会很麻烦,我没有更多精力去修改了(至少我这里运行没有任何问题)。如果你尝试修改,我的建议是: 1、搞清楚如何在c++侧构建出memory_1,memory_2,memory_pos_1和memory_pos_2。 2、不使用我项目的onnx,改用原作者导出的onnx,重写一个SAM2 c++推理(工作量应该会很大大) 3、不使用DML。

lizhiqi-coder commented 2 weeks ago

大佬,能不能帮忙支持下memory_attention.onnx DML,真心求助,有偿感谢!

Aimol-l commented 2 weeks ago

大佬,能不能帮忙支持下memory_attention.onnx DML,真心求助,有偿感谢!

最近很没没空了