Aimol-l / OrtInference

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

SAM2 decoder部分疑问 #7

Open kywish opened 4 weeks ago

kywish commented 4 weeks ago

你好,我在测试本项目sam2的过程中,发现得到的mask结果和原SAM2的推理结果不一致: 在小目标时,mask经常偏大且超出prompt框,并且在传播几帧后容易分割到背景上导致跟踪失败。

另外,注意到代码中parms.prompt_box = min_dis_rect;使用上一帧的结果框box作为下一帧的prompt,这一点和原SAM2设计是否不一致?

我的测试视频为B站飞鸟,box为【1226, 666, 18, 20】 效果图对比: sam2:000 OrtInference:111

liyihao76 commented 3 weeks ago

我也有相同的疑问,目前正在尝试使用TensorRT部署,可以加个微信相互交流一下吗:18291895929 ,非常感谢。

Anivie commented 2 weeks ago

请问问题解决了吗?

kywish commented 2 weeks ago

解决了,但还没完全解决。 目前进度:

okideal commented 21 hours ago

@kywish 我看官方后续跟踪是用point 0,0 label -1的,也就说和原博主实现不一致,是完全依赖memory中的数据来做目标跟踪 请问老哥是怎么解决这个问题的呢?mask稳定了么

kywish commented 18 hours ago

主要是参考这个 https://github.com/axinc-ai/segment-anything-2 将image encoder、mask decoder, memory encoder和memory attention都拆分出来,需要自己控制下ptr和feature的缓存,也不是很复杂。 效果基本和原版一致,但测试下来cpu onnxruntime太慢,最近又比较忙,gpu版本还没空搞😂。 至于prompt,有用户输入的帧,label即为指定的0/1/2/3,无即为-1。