Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

ADD SAM2.1 #1607

Closed
kyakuno opened this issue Dec 4, 2024 · 6 comments
Closed

ADD SAM2.1 #1607

kyakuno opened this issue Dec 4, 2024 · 6 comments
Assignees

Comments

@kyakuno
Copy link
Collaborator

kyakuno commented Dec 4, 2024

SAM2.1のモデルをエクスポートする。
https://github.com/facebookresearch/sam2
エクスポートブランチ。
axinc-ai/segment-anything-2#7

@kyakuno kyakuno self-assigned this Dec 4, 2024
@kyakuno
Copy link
Collaborator Author

kyakuno commented Dec 4, 2024

SAM2.1では、add_tpos_enc_to_obj_ptrsがtrueになっている。
MemoryAttentionの入力の計算方法が変化する。

@kyakuno
Copy link
Collaborator Author

kyakuno commented Dec 4, 2024

matserをブランチにマージしてONNXの変換は動作していそう。

@kyakuno kyakuno mentioned this issue Dec 20, 2024
@kyakuno
Copy link
Collaborator Author

kyakuno commented Dec 29, 2024

変換スクリプト。

for MODE in hiera_t hiera_b+ hiera_s hiera_l
do
python3 export_image_predictor.py --model_id ${MODE}
python3 export_video_predictor.py --model_id ${MODE}
python3 model/onnx2prototxt.py model/image_encoder_${MODE}_2.1.onnx
python3 model/onnx2prototxt.py model/prompt_encoder_${MODE}_2.1.onnx
python3 model/onnx2prototxt.py model/mask_decoder_${MODE}_2.1.onnx
python3 model/onnx2prototxt.py model/memory_encoder_${MODE}_2.1.onnx
python3 model/onnx2prototxt.py model/mlp_${MODE}_2.1.onnx
python3 model/onnx2prototxt.py model/memory_attention_${MODE}_2.1.onnx
python3 model/onnx2prototxt.py model/obj_ptr_tpos_proj_${MODE}_2.1.onnx
done

@kyakuno
Copy link
Collaborator Author

kyakuno commented Dec 29, 2024

SAM2

  add_tpos_enc_to_obj_ptrs: false

SAM2.1

  add_tpos_enc_to_obj_ptrs: true
  proj_tpos_enc_in_obj_ptrs: true

コード

SAM2

self.obj_ptr_tpos_proj = torch.nn.Identity()

SAM2.1

self.obj_ptr_tpos_proj = torch.nn.Linear(self.hidden_dim, self.mem_dim)

圧縮した過去フレーム情報であるobj_ptrsに対するposition_embeddingであるobj_posは、
SAM2では0ですが、SAM2.1では、sineによるposition_embeddingをprojectionした値になります。

@kyakuno kyakuno closed this as completed Dec 29, 2024
@wep21
Copy link

wep21 commented Jan 29, 2025

@kyakuno 最新のsam2は最初のframe以外にもpromptを入力できそうなのですが、最新のvideo predictorをadaptすることは可能そうでしょうか?

@kyakuno
Copy link
Collaborator Author

kyakuno commented Jan 31, 2025

@wep21 ONNX自体はモデルの全ての引数に対応しているため、下記のスクリプトに従って、add_new_points_or_boxなどを呼び出せば、内部ステートが更新されて、最初のframe以外にもrefinementのpromptを適用できるのではないかと考えています。
https://github.com/facebookresearch/sam2/blob/main/notebooks/video_predictor_example.ipynb

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants