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 SRResNet #45

Closed
kyakuno opened this issue Mar 1, 2023 · 13 comments
Closed

ADD SRResNet #45

kyakuno opened this issue Mar 1, 2023 · 13 comments
Assignees

Comments

@kyakuno
Copy link
Contributor

kyakuno commented Mar 1, 2023

srresnetをonnxからtfliteに変換する。
https://github.com/axinc-ai/ailia-models/tree/master/super_resolution/srresnet

@kyakuno
Copy link
Contributor Author

kyakuno commented Mar 3, 2023

作業手順は下記を参考にしてください。
#30

@craft-c craft-c self-assigned this Mar 22, 2023
@craft-c
Copy link
Contributor

craft-c commented Mar 22, 2023

作業内容
・.onnx → .tflite (float32) (int8) 変換作業
・ailia-models-tflite版 SRResNetサンプル 作成

@craft-c
Copy link
Contributor

craft-c commented Mar 27, 2023

モデル読み込み時のエラーについて

・公式tflite
interpreter = tf.lite.Interpreter(model_path=MODEL_PATH)
pip で tensowflowのバージョンを 2.12.0 まで上げれば解決

・ailia tflite runtime
interpreter = ailia_tflite.Interpreter(model_path=MODEL_PATH)
未解決 ※とりあえず保留
エラー内容↓
ailia_tflite.AiliaTFLiteError: ailia tflite runtime error (Currentry supports 1 to 4 dim shape.) code:-5`

@craft-c
Copy link
Contributor

craft-c commented Mar 27, 2023

.onnx → .tflite (float) の変換について

・openvino2tensorflow で変換したモデル を用いて推論した結果がよくありません
・onnx2tfをで変換したモデル を用いて推論した結果は良好でした
 変換コマンド: onnx2tf -i srresnet.opt.onnx -dgc -oiqt

image

@craft-c
Copy link
Contributor

craft-c commented Mar 28, 2023

.onnx → .tflite (float32) (int8) の変換について、
上手に変換できたフロー以下に示します。

なお、quantize.pyは こちら のスクリプトを参考にしました。

image

@craft-c
Copy link
Contributor

craft-c commented Mar 28, 2023

@kyakuno

ailia-tflite runtime でモデルを読み込む部分↓ でエラーが出ます。
interpreter = ailia_tflite.Interpreter(model_path=MODEL_PATH)

エラー内容

(.ailia-tf-1.1.7.1) PS C:\~~~\ailia-models-tflite\super_resolution\srresnet> python srresnet.py
 INFO utils.py (13) : Start!
TFLite file is prepared!
Traceback (most recent call last):
  File "srresnet.py", line 282, in <module>
    main()
  File "srresnet.py", line 265, in main
    interpreter = ailia_tflite.Interpreter(model_path=MODEL_PATH)
  File "C:\Users\tanikubo\Programs\_Pkges\venvs\.ailia-tf-1.1.7.1\lib\site-packages\ailia_tflite\__init__.py", line 303, in __init__
    self.__check(self.dll.Create(self.instance, self.tflite_cdata, self.tflite_clength, ctypes.c_int32(env_id), ctypes.c_int32(memory_mode), flags))
  File "C:\Users\tanikubo\Programs\_Pkges\venvs\.ailia-tf-1.1.7.1\lib\site-packages\ailia_tflite\__init__.py", line 321, in __check
    raise AiliaTFLiteError(f"ailia tflite runtime error "+detail, status)
ailia_tflite.AiliaTFLiteError: ailia tflite runtime error (Currentry supports 1 to 4 dim shape.) code:-5

AILIA-TFLITE 評価版 を再度インストールして確認しましたが、結果は同じでした。
解決方法が分からず詰まっています。ご教示お願いしたいです。

なお、公式のTFlite では上手く動作します。
また、(float32) 及び(int8) モデル の変換も完了し、良好な推論結果を得られました。
AILIA-TFLITEで上手く動作することを確認できれば、サンプルは完成です。

@kyakuno
Copy link
Contributor Author

kyakuno commented Mar 28, 2023

現在、ailia tflite runtimeがサポートしているテンソルの次元数は4までとなっています。
どこかでテンソルが5次元になっているのが原因と考えていまして、tfliteをいただくことは可能でしょうか。

@kyakuno
Copy link
Contributor Author

kyakuno commented Mar 28, 2023

ONNXモデル的には4次元で走りそうではあるのですが、変換の過程か何かで5次元になっていそうな気がします。
https://netron.app/?url=https://storage.googleapis.com/ailia-models/srresnet/srresnet.opt.onnx.prototxt

@craft-c
Copy link
Contributor

craft-c commented Mar 29, 2023

@kyakuno

確認したところ、私が変換した.tfliteファイル (float32) において、
入出力が 6次元になっている箇所が見つかりました。

変換したファイルはこちら↓
https://drive.google.com/drive/folders/1MtyCiLaKY2jmQRkudwZCcDWRQfgX0OUY?usp=sharing

image

@craft-c
Copy link
Contributor

craft-c commented Mar 29, 2023

@kyakuno

6次元になっている部分のみ修正する方法はあるのでしょうか?
それとも、4次元を超えないように、再び変換方法を見直した方が良いのでしょうか?

@craft-c
Copy link
Contributor

craft-c commented Mar 29, 2023

オプションなど見直して、再度変換を実行しましたが、
6次元の部分が必ず発生してしまいます。

@kyakuno
Copy link
Contributor Author

kyakuno commented Mar 29, 2023

最後のPixelShuffleが、TransposeとReshapeで実装されているみたいですね。
ailia側で対応しますので、一旦、モデルはこのままで、PRをいただけますでしょうか。
公式のtensorflowで動けば問題ありません。

@craft-c
Copy link
Contributor

craft-c commented Mar 29, 2023

@kyakuno
PRしました。

#60

@kyakuno kyakuno closed this as completed Nov 30, 2023
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