-
Notifications
You must be signed in to change notification settings - Fork 3
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 pose_resnet #30
Comments
ONNXからtfliteへの変換は、openvino2tensorFlowもしくはonnx2tfを使用します。 |
全体の作業手順は下記となります。
AIモデルの推論には、適切な前処理と後処理が必要なので、ailia-modelsを参考に、前処理と後処理を書く必要があります。 登録するためにやらないといけないことは下記です。 onnx版のposeresnetのサンプルをコピーしてきて、推論部分を、ailiaからtensorflowに置き換えるのが、一番、楽だと思います。tensorflowの使い方は、ailia-models-tfliteの既存コードを確認するといいと思います。 poseresnetの前処理のyoloはこのリポジトリにある変換済みのモデルを使ってください。変換は骨格推定モデルだけで問題ありません。 |
サンプルの作成ではとりあえず、ailia_tfliteではなく、公式のtensorflow.liteを使ってください。既存のサンプルの実行時に—tfliteオプションを付与すると、ailiaではなく公式のapiで推論します。 |
keras saved model -> tflite (int8)の量子化のサンプルは下記となります。 saved modelを読み込み、TFLiteConverterを使用して量子化を行います。量子化は、キャリブレーション画像を供給することで、各テンソルのMin/Max値を計算し、その値をもとに、Float -> Int8変換が行われます。そのため、精度を出すには、十分な量のキャリブレーション画像を供給する必要があります。 キャリブレーション画像はCOCO2017データセットのval imagesをダウンロードして使ってください。 |
公式のTensorFlowで動作確認後、ailia TFLite Runtimeに対応してください。ailia TFLite Runtimeは下記のURLから入手してください。 |
openvino2tensorflowの解説記事です。事前にこちらを読んでおくと良いかと思います。 |
poreresnetはsavedmodelの作成時に、tensorflow.SavedModel exceeds maximum protobuf size of 2GBというエラーが出るとのことなので、Midasから進めてください。将来的に、onnx2tfも試してみてください。 |
openvino2tensorflow を用いる方法で、再度 .onnx → openvino → saved_model の変換を試したところ、エラーは出ませんでした。("○○は非推奨です" のようなWarningはいくつか出ましたが)
|
サンプル作成指針
|
サンプルはほぼ完成しました。 [float32モデル] [int8モデル] とりあえず現状でPRで良いでしょうか? pose_resnetブランチは 現時点で公開するとすれば、 |
@craft-c エクスポート、ありがとうございます。PADV2は次回のailia TFLite Runtimeで対応しますので、公式のtensorflowで動いていれば問題ありません。PRいただければと思います。 |
下記のONNXモデルから、tflite (float)とtflite (int8)を生成してサンプルを作成する。
https://github.com/axinc-ai/ailia-models/tree/master/pose_estimation/pose_resnet
最終目的はtflite版のmodel-zooを作成することです。
そのために、onnxをtfliteに変換します。
The text was updated successfully, but these errors were encountered: