PRODUCTS
新製品情報
1. 概要
この記事では、VarisciteのPython pyvarパッケージを紹介し、
pyvarの機械学習(ML)APIの使用を開始する方法を示します。このAPIは、
初心者がML分野を探索し、i.MX8ファミリを搭載したSystem on Modules(SoM)
を対象として、カメラ、ディスプレイ、ユーザーインターフェイスを使用して
独自のアプリケーションを開発できるように設計されています。
初心者の方は、次の記事を読んでAI/MLとその例を理解することを強くお勧めします。
● 機械学習入門
pyvarパッケージに飛びついてそのコアと例について詳しく学ぶ前に、
AIハードウェアアクセラレータ、モデルトレーニング、モデル量子化など、
いくつかの主要な問題について簡単に触れます。これらのトピックを理解すると、
組み込みシステムでMLがどのように機能するかを理解するのに役立ち、
MLアプリケーションで可能な限り最高の推論パフォーマンスを得ることができる
でしょう。
NXP i.MX8 SOCファミリの中のi.MX8M Plusには、ML推論プロセスを効率的に
処理するための専用のAIアクセラレータがあります。このコンピューティング
エンジンは、ニューラルプロセッシングユニット(NPU)と呼ばれています。
pyvarパッケージはNPUに厳密に関連付けられているわけではなく、
ML APIでi.MX8ファミリーの他のSoMを使用することも可能です。
何が変わるかと言うと、他のSoMはNPUの代わりにGPUまたはCPUの
いずれかを使用する推論プロセスであり、これにより推論時間が長くなる
可能性がある事です。
NPU自体が8ビットの固定小数点演算を処理するため、単純で小さな算術演算
ユニットを備えたMLモデルが可能になり、大きな浮動小数点演算を回避できます。
NPUの計算機能を利用し、可能な限り最高の推論パフォーマンスを実現するには、
32ビット浮動小数点ネットワークモデルを8ビット固定小数点ネットワークに
変換する必要があります。
この変換は量子化と呼ばれますが、NPUで適切に機能するようにモデルを
量子化する方法は2つあります。 1つ目は、トレーニング中に量子化認識
トレーニング(QAT)メソッドを適用して独自のモデルをトレーニングする
方法です。より簡単な方法は、トレーニング済みモデルをNPUが必要とする形式に
のみ変換するトレーニング後の方法を使用する方法です。変換プロセスについては、
今後のブログ投稿で説明します。
このpyvarパッケージは、BSD-3-Clauseの条件の下でライセンスされています。
つまり、著作権表示を保持している限り、無料で使用でき、好きなだけ変更できます。
このパッケージはまだ開発中であり、プロジェクトに貢献することをお勧めします。
2. Pyvar入門
2.1 BSPの設定
1.
fsl-imx-xwaylandディストリビューション(Wayland + X11機能付き)を
使用して最新のYoctoリリースをセットアップし、すでにMLパッケージが
含まれているfsl-image-qt5イメージをビルドします。または、fsl-image-guiなど
の小さいイメージが必要な場合は、以下の手順に従って、必要なMLパッケージを
ビルドに追加します。
A) 機械学習パッケージをconfファイルに追加します。
OPENCV_PKGS_imxgpu = ” \
opencv-apps \
opencv-samples \
python3-opencv \
”
IMAGE_INSTALL_append = ” \
packagegroup-imx-ml \
${OPENCV_PKGS} \
”
2.2 VariscitePythonパッケージのインストール
pyvarパッケージは、PyPi(https://pypi.org)リポジトリでホストされて利用可能です。
これにより、すべてのユーザーが次の手順に従ってパッケージを簡単にインストールできます。
1.ターゲットボードで、pip3ツールを使用してpyvarパッケージをインストールします。
# pip3 install pyvar
2.パッケージがインストールされていることを確認するには、次のコマンドを実行してバージョンを確認します。
# pip3 list | grep pyvar
注意: 詳細については、pyvar Getting Startedをご覧ください。
3. PyVar API
pyvarパッケージは、NXPの
eIQ® ML Software Development Environmentに
よって実現される最も一般的なML機能を実装します。また、初心者が
MLアプリケーションを実装し、コードを可能な限りシンプルにするのに役立つ
マルチメディアクラスとユーティリティクラスもあります。
いくつかのpyvarモジュールの例を参照してください。
● pyvar.ml.enginesは、TensorFlowLiteやArmNNなどの推論エンジンを処理します。
1
pyvar.ml.engines.tfliteからTFLiteInterpreterをインポート
2 engine =
TFLiteInterpreter(model_file_path=”path_to_your_model”)
詳細については、pyvar Machine Learning API/ ページをご覧ください。
● pyvar.multimediaは、ビデオファイル、カメラ、デバイスなどのマルチメディアケースを処理します。
1 pyvar.multimedia.helperからマルチメディアをインポート
2 multimedia =
Multimedia(source=”path_to_video_file_or_camera_device”)
詳細については、pyvar Multimedia API/ ページをご覧ください。
3.1 PyVarで書かれた簡単な例
この記事で説明する例では、TensorFlow Liteの量子化されたトレーニング済み
モデルを使用しています。これらの例は、PyVarモジュールの複数のユースケース
を調査することにより、ユーザーが簡単なコードを作成する方法を理解
できるように作成されています。例を簡単にダウンロードして、ターゲットで
実行できます。
次の例では、TensorFlowのスターターモデルを使用し、推論エンジンとして
TensorFlow Liteを使用して画像に対して推論を実行します。
# curl -LJO \
https://github.com/varigit/pyvar/raw/master/examples/ml/detection/image_detection_tflite.py
# python3 image_detection_tflite.py
pyvarを使用して記述されたその他の一般的なMLの例:
●
Classification Examples
●
Detection Examples
詳細については、Variscite PythonAPIの完全なドキュメントをpyvar.devで入手できます。
半導体流通市場も大きく広がっていき、さらに成長を続けています。
自分の能力を存分に発揮したいという方、
エレクトロニクス分野で活躍したい方 企業家・事業化精神に
あふれた方、想いにお応えできるフィールドがあります。
製品の他にも、サービスに関する事、PRに関するご質問等、
承っております。みなさまからのお問合せについては、
以下の窓口よりお受けしております。
お気軽にご連絡ください。
© 2024 Arrow Electronics Japan KK. All Rights Reserved