こんにちは、
Tensorflow Savedmodel を、imx8mp NPU をサポートする tflite モデルに変換したいと思います。
以下の手順を試しましたが、うまくいきませんでした
Python モデル/研究/オブジェクト検出/エクスポーターメイン_v2.py \
--input_type 画像テンソル \
--pipeline_config_path トレーニングディレクトリ/pipeline.config \
--trained_checkpoint_dir トレーニングディレクトリ/チェックポイント \
--output_directory エクスポートされたモデル
そして、その固定形状モデルを確認します{
SSD {
画像リサイズ {
固定形状リサイズ {
高さ: 320
幅: 320
}
}
}
}
また、TFLite互換のオペレーションも確保する
SSD {
機能抽出器 {
タイプ: "ssd_mobilenet_v2_fpn_keras"
use_depthwise: true
}
ボックス予測子 {
畳み込みボックス予測子 {
use_depthwise: true
}
}
}
tflite変換スクリプト
TensorflowをTFとしてインポートする
パスライブラリをインポートする
saved_model_dir = "エクスポートされたモデル/saved_model"
コンバーター = tf.lite.TFLiteConverter.from_saved_model(saved_model_dir)
コンバーターの最適化= [tf.lite.Optimize.DEFAULT]
# INT8キャリブレーション用の代表的なデータセットを提供する
代表データ生成()を定義します:
data_dir = pathlib.Path("dataset/val")
data_dir.glob("*.jpg") の img_path の場合:
img = tf.keras.preprocessing.image.load_img(img_path,ターゲットサイズ=(320, 320))
img = tf.keras.preprocessing.image.img_to_array(img)
img = img[tf.newaxis,...] / 255.0
[img.astype("float32")] を生成します
コンバータ.representative_dataset= 代表データ生成
converter.target_spec.supported_ops= [tf.lite.OpsSet.TFLITE_BUILTINS_INT8]
converter.inference_input_type= tf.uint8
converter.inference_output_type= tf.uint8
tflite_model = converter.convert()
open("model_int8.tflite", で"wb") を f: として
f.write(tflite_model)
model_int8.tfliteで推論を実行するコマンド
$ USE_GPU_INFERENCE=0 \
python3 label_image.py -m model_int8.tflite \
-e /usr/lib/liblitert_vx_delegate.so
これらの手順が正しいかどうか、助けてください。
eIQ ツールを使用してモデルを変換することも試みましたが、機能しませんでした。
私はこの問題にほぼ1か月間直面しています。解決策はありません。上記の通り私は運動しません。tflite でサポートされている ops を使用して tf savedmodel をゼロから開発することは可能ですか?
こんにちは@subbareddyai
NXP EVK を使用している場合は、ここからデモイメージをダウンロードCANます。
サードパーティのボードを使用している場合は、そのボードにお問い合わせて、移植された最新の BSP を入手してください。
よろしくお願いします、
志明
こんにちは@Zhiming_Liuさん
返信ありがとうございます。
BSP バージョンと tflite バージョンについて教えていただけますか?
よろしくお願いいたします。
スバ・レディ
こんにちは@subbareddyai
TFlite バージョンを更新するには、BSP バージョンをアップグレードすることを検討してください。
よろしくお願いします、
志明
こんにちは、
返信ありがとうございます。下記の変換コードを試してみましたが、成功しませんでした。
こんにちは、
1.TFLite モデルは EXP op バージョン 2 を使用していますが、これは使用しているランタイムではサポートされていません。
2.i.MX8MP デバイスの NPU デリゲートまたは TFLite ランタイムは古すぎるため、このオペレーション バージョンをサポートできません。
3. モデルが EXP などの演算を使用しないようにするか、それらのバージョン 1 のみを使用するようにする必要があります。これを実行するには、 converter.experimental_new_converter = Falseを使用して古いコンバータを強制します (これにより、新しい op バージョンを回避する可能性があります)。
よろしくお願いします、
志明