メインコンテンツに移動

信号処理や回帰モデルで利用される、3D shape関数および、RNN関数に対応したe-AI Translator V3.0.0をリリース

画像
Toshiyuki Syo
庄 俊之
主任技師
掲載: 2023年6月12日

e-AI Translator とは

オープンソースのAIフレームワークを用いて作成した学習済みAIアルゴリズムを推論専用のCソースコードに変換するツールです。 このe-AI Translatorの最新版V3.0.0を2023年5月10日にリリースしました。

本ブログでは、V3.0.0でサポート範囲を広げた機能、3D shape関数および、RNN関数への対応についてご紹介いたします。また、e-AI Translator実行環境を変更しましたので、それに伴う注意事項についても合わせてご紹介いたします。 本内容はルネサスマイコンのRAファミリ、RXファミリで動作を確認しています。

3D shape関数のサポート

これまでのe-AI Translatorは、3D shape関数に対応しておらず、4D shape関数で代用することをお勧めしていました。

今までは、4D shape形状に変更する必要がありました。

  • 3D shape input (N,C,D) => Convert 4D shape => (N,C,D,1)

今回は、Keras/TensorFlow(tf-keras)/PyTorchでよく利用される3D shape関数に対応しました。 なお、TFLiteに関しては、現時点(TensorFlow V2.9.0)のTFLiteが3D shapeに対応しているのがactivation関数のみのためV3.0.0ではサポート対象外としています。
TFLite形式を使用する場合、TFLite変換元となるKeras/TensorFlowのモデルは、引き続き4D shapeを使用してください。

Convolution関数の3D shapeに対応するにあたり、Pooling関数などの主要なサポート関数も3D shapeに対応しました。 また、shape変換関数も3D shapeに対応しました。

ただし、PyTorchモデルは、本バージョンは内部でONNX形式に変換しています。そのためshape変換関数に一部制限があります。

  • 2D Shapeへの変換:Flatten、View関数を使ってください(Reshape関数は使用しないでください。)
  • 3D,4Dshapeへの変換: Reshape、View関数を使ってください(Flatten関数は使用しないでください。)

表1. 新規サポート関数(3D shape関連)

画像
New support function (3D shape)

RNN系関数のサポート

MCU系での利用要望にお応えして、本バージョンから対応しました。

  • Keras/TensorFlow(tf-keras)/PyTorchに対応しています。
  • TFLiteにもRNNの関数は存在しますが、前後にサポート関数が必要となるため、本バージョンでは非対応としております。

また、RNN系を使う場合、入出力を複数とするモデルを作ることがありますが、こちらも、本バージョンは非対応としております。

表2. 新規サポート関数(RNN関連)

画像
Newly supported RNN functions

対応モデルのAIフレームワークのバージョン

e-AI Translator V2.3.0までは、e-AI Translator実行環境と同じAI フレームワークのバージョンで作られたモデルの変換のみに対応していました。 本バージョンでは、V2.3.0の実行環境と同じAI フレームワークのバージョンで作られたモデルに関しても、変換可能といたしました。 以前のバージョンで作成されたモデルを、再学習することなく再利用することが可能です。 詳しくは以下の表でご確認ください。

表3. 変換可能なモデル

画像
AI Framework Versions of Translatable Models

(TFLiteに関しては、上記Keras/TensorFlowのConverterで量子化したモデルに対応)

ただし、以下の制約がございます。

  • Keras/tf-kerasでLambda関数を使ったモデルは変換出来ない。
    Keras V2.4は、Lambda関数を使った構築されたモデルも、ユーザが関数名を指定することなくモデルの読み込みが出来ました。一方、Keras V2.9では、ユーザがLambda関数名を指定しなければ、モデルの読み込みが出来ない仕様となりました。
    e-AI Translator V3.0.0は、ユーザによるLambda関数の指定が出来ないため、モデルの読み込みが出来ず、エラーが発生します。(eAI-310: Unable to load the model file. This may be due to the Python version mismatch or the model contains a User-defined layer.)
    変換する必要がある場合は、お問い合わせください。e-AI Translator V2.3.0をご提供いたします。
  • e-AI Translator V2.3.0の環境での推論結果と、e-AI Translator V3.0.0の環境で変換したモデルのMCU  上の推論結果が異なる場合があります。
    Pythonのバージョンをアップデートしたため、Python標準のライブラリも更新されています。

画像系のライブラリであるPillowも、画像拡大縮小時のデフォルトアルゴリズムが変わっています。PCの推論結果とMCUの推論結果を比較する場合は、e-AI Translator V3.0.0の環境のPC上で推論を行い、その結果と比較してください。

ツールダウンロードリンク

以前のブログ投稿

e-AI ホームページ

この記事をシェアする