axinc-ai / ailia-models-tflite

Quantized version of model library
21 stars 1 forks source link

Added ViT example #85

Open Kitazume-Ax opened 1 month ago

Kitazume-Ax commented 1 month ago

作成中のViTサンプルのPRです。 floatのモデルで、TensorFlow Liteを使用して実行した時の動作を確認済みの状態です。

kyakuno commented 1 month ago

モデルアップロードしました。 https://storage.googleapis.com/ailia-models-tflite/vision_transformer/vision_transformer_float.tflite

@Kitazume-Ax 下記のIssueに、再現できるように、モデルをエクスポートする手順を記載していただいても良いでしょうか。 https://github.com/axinc-ai/ailia-models-tflite/issues/84

・使用したリポジトリ ・使用したcheckpoint ・エクスポートのコード例

kyakuno commented 1 month ago

ailia_tfliteの場合、下記のエラーになる。

Traceback (most recent call last):
  File "/Users/kyakuno/Desktop/ailia/ailia-models-tflite/image_classification/vision_transformer/vision_transformer.py", line 229, in <module>
    main()
  File "/Users/kyakuno/Desktop/ailia/ailia-models-tflite/image_classification/vision_transformer/vision_transformer.py", line 225, in main
    recognize_from_image()
  File "/Users/kyakuno/Desktop/ailia/ailia-models-tflite/image_classification/vision_transformer/vision_transformer.py", line 87, in recognize_from_image
    interpreter.allocate_tensors()
  File "/usr/local/lib/python3.11/site-packages/ailia_tflite/__init__.py", line 365, in allocate_tensors
    self.__check(self.dll.AllocateTensors(self.instance))
  File "/usr/local/lib/python3.11/site-packages/ailia_tflite/__init__.py", line 358, in __check
    raise AiliaTFLiteError(f"ailia tflite runtime error "+detail, status)
ailia_tflite.AiliaTFLiteError: ailia tflite runtime error (operator is not supported. (idx.5 operator.FILL)) code:-7
kyakuno commented 1 month ago

Attentionは下記のような構造になる。

スクリーンショット 2024-06-25 17 36 19

kyakuno commented 1 month ago

@Kitazume-Ax その後、精度は出ないと思いますが、int8に量子化してみていただけると嬉しいです。量子化ツールに綺麗に流れるかどうかを把握したいと考えています。

Kitazume-Ax commented 1 month ago

int8量子化に対応したPRに更新してあります。

kyakuno commented 1 month ago

int8モデルをアップロードしました。 https://storage.googleapis.com/ailia-models-tflite/vision_transformer/vision_transformer_quant.tflite

kyakuno commented 1 month ago

花の分類モデルの模様。

daisy.jpg

float

=== daisy.jpg ===
==============================================================
class_count=3
+ idx=0
  category=1[daisy ]
  prob=0.9958629608154297
  value=0.9958629608154297
+ idx=1
  category=4[roses ]
  prob=0.003245399333536625
  value=0.003245399333536625
+ idx=2
  category=2[tulips ]
  prob=0.00042533810483291745
  value=0.00042533810483291745
Script finished successfully.

int8

=== daisy.jpg ===
==============================================================
class_count=3
+ idx=0
  category=1[daisy ]
  prob=0.99609375
  value=255
+ idx=1
  category=4[roses ]
  prob=0.0
  value=0
+ idx=2
  category=3[sunflowers ]
  prob=0.0
  value=0

clock.jpg

float

=== clock.jpg ===
==============================================================
class_count=3
+ idx=0
  category=4[roses ]
  prob=0.6177893280982971
  value=0.6177893280982971
+ idx=1
  category=2[tulips ]
  prob=0.19002234935760498
  value=0.19002234935760498
+ idx=2
  category=1[daisy ]
  prob=0.09845711290836334
  value=0.09845711290836334

int8

=== clock.jpg ===
==============================================================
class_count=3
+ idx=0
  category=4[roses ]
  prob=0.51953125
  value=133
+ idx=1
  category=1[daisy ]
  prob=0.30078125
  value=77
+ idx=2
  category=3[sunflowers ]
  prob=0.0625
  value=16
kyakuno commented 1 month ago

@Kitazume-Ax このモデルって、独自に学習されたものでしょうか?

Kitazume-Ax commented 1 month ago

SlackやIssueにも書いていますが、元実装のImageNet学習済みウェイトはURLが404で失われているため、手元のPCでも学習可能な規模のデータセットの tf_flowers で学習させたものです。 Issueに学習を行ったコードを記載しています。 https://github.com/axinc-ai/ailia-models-tflite/issues/84

kyakuno commented 1 month ago

承知しました!