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関連)
RNN系関数のサポート
MCU系での利用要望にお応えして、本バージョンから対応しました。
- Keras/TensorFlow(tf-keras)/PyTorchに対応しています。
- TFLiteにもRNNの関数は存在しますが、前後にサポート関数が必要となるため、本バージョンでは非対応としております。
また、RNN系を使う場合、入出力を複数とするモデルを作ることがありますが、こちらも、本バージョンは非対応としております。
表2. 新規サポート関数(RNN関連)
対応モデルのAIフレームワークのバージョン
e-AI Translator V2.3.0までは、e-AI Translator実行環境と同じAI フレームワークのバージョンで作られたモデルの変換のみに対応していました。 本バージョンでは、V2.3.0の実行環境と同じAI フレームワークのバージョンで作られたモデルに関しても、変換可能といたしました。 以前のバージョンで作成されたモデルを、再学習することなく再利用することが可能です。 詳しくは以下の表でご確認ください。
表3. 変換可能なモデル
(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上で推論を行い、その結果と比較してください。
ツールダウンロードリンク
以前のブログ投稿
- CMSIS利用時のメモリ使用量を削減したe-AI Translator V2.3.0をリリース
- RXやRAファミリのAI推論を10倍以上高速化 CMSISライブラリに対応したe-AI Translator V2.2.0をリリース
- 8bit量子化技術でROM/RAM使用量削減に貢献 TensorFlow Liteに対応したe-AI Translator V2.1.0をリリース
- MCU で AI を実現するツールe-AI Translator V2.0.0 リリース