Armadilloフォーラム

NPUでの推論について

yseki

2022年12月26日 10時07分

お世話になっております。
Armadillo-IoT G4で推論のアプリケーションを検討していますが、
処理速度の関係でC/C++で開発したいと考えています。
C/C++での開発方法や、サンプルプログラムなどご教示いただけ
ませんでしょうか。
以上、よろしくお願いします。

コメント

at_shiita.ishigaki

2022年12月26日 11時45分

石垣です。

> C/C++での開発方法や、サンプルプログラムなどご教示いただけ
> ませんでしょうか。

当社から C/C++ から NPU を使う方法はご提供しておりませんので、可能であれば Python を使って頂ければと思います。
C/C++ を使う場合はご自身で NXP から提供されている下記リポジトリから環境を用意をして頂くことになるかと思います。
NPU の呼び出しには OpenVX が使用されており、OpenVX の C++ Wrapper として tim-vx-imx が用意されています。
また、tim-vx-imx を tflite の delegate として使用するために、tflite-vx-delegate-imx というリポジトリが用意されています。
これらを使う方法については当社からサポートすることができませんので、ご了承ください。

・tim-vx
https://github.com/nxp-imx/tim-vx-imx
・tflite-vx-delegate
https://github.com/nxp-imx/tflite-vx-delegate-imx

> 処理速度の関係でC/C++で開発したいと考えています。

処理速度はどのような処理を指しているでしょうか。
推論は推論用のハードウェアである NPU で行いますので、
こちらは Python から C/C++ に変更しても高速化することはできません。

推論以外の処理ということでしたら、当社では試しておりませんが、Python でプログラムを作成し、
下記 URL の Cython を使うことで、高速化できる可能性はあるかと思います。
https://cython.org/

石垣様

ご教示ありがとうございます。
推論の結果をいろいろ処理する部分がありますので、C/C++と思ったのですが、かなりハードル高そうですね。
ご教示いただいたCythonを試してみたいと思います。