-
Notifications
You must be signed in to change notification settings - Fork 2
-
Notifications
You must be signed in to change notification settings - Fork 2
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 (tflite) #88
Comments
image_encoderをonnxには変換できるが、edge-ai-torchとCUDAでtfliteに変換しようとすると下記のエラーになる。
|
segment_anything_kerasにSAM2対応のIssueはあるが未対応。 |
edge-ai-torchをCPUモードで動かすとエラーが変わる。
|
tfliteのconverterには_ai_edge_converter_flagsでフラグを与えらえる。 |
下記でFlexを有効にするとImageEncoderのエクスポート自体はできた。
|
SegmentAnthing Int8の論文。ピークが2つある分布になるため、対処が必要と記載がある。 |
edge-ai-torchでflexを有効にして量子化すると、MixedPrecisionのグラフになる。 |
full int8 quantはまだサポートされていない気配がある。 |
PromptEncoderは下記のエラーになる。
エクスポートできない原因は、prompt_encoder.pyの_embed_pointsの下記のロジック。
下記のようにするとエクスポートできるようになる。
|
MaskDecoderは下記のエラーになる。
|
size -> shapeに置き換えるとここはpassする。 |
量子化でキャリブレーションしようとすると下記のエラーになる。
|
グラフの入力が問題ではなく、グラフの途中でint64のテンソルが出てきて対応できなくなっている。 |
torch/ao/quantization/observer.pyのreset_histogramで下記のコードを追加すると通る。
|
使用したバージョン |
PromptEncoderはlabelがint64で量子化できない。 |
PromptEncoderは演算量が少ないのでfloatで動かしてもいい気はする。 |
ai-edge-torchがLLMを対象にしているためか、テンソルは結構、floatになっている。 |
ImageEncoderの出力にposを含めると、量子化でエラーが発生する。 |
is_dynamic = False(後処理もモデルに含むことでposを出力に含めない) is_dynamic = True(posを出力に含める) |
ImageEncoder、PromptEncoder、MaskDecoderは正常にtflite (float)に変換できた。 MemoryAttentionの変換は下記で行う。 |
MaskDecoderをdynamic shapeにしようとすると、下記のエラーになる。
tfliteはStatic Shapeのみ対応にする。 |
edge-ai-torchで変換を検討。
https://github.com/facebookresearch/segment-anything-2
https://medium.com/axinc/ai-edge-torch%E3%81%A7pytorch%E3%81%8B%E3%82%89tflite%E3%81%AB%E5%A4%89%E6%8F%9B%E3%81%99%E3%82%8B-376be7dc5619
難しそうであれば、下記と同様に、Pytorch -> Kerasを検討。
https://github.com/tirthasheshpatel/segment_anything_keras
The text was updated successfully, but these errors were encountered: