※本記事はHailo社 AI Software Suite 2024-04をもとにして記載しています
HailoRT概要
HailoRTはDataflowCompilerで作成したhefファイルを実際のHailoデバイスにロードして推論を実行するためのツールになります。
※hefファイルの作り方までは以下のリンクを参照ください。
①AI Software Suiteに必要なハードウェアとインストール
②Dataflow Compilerの使い方(hefファイルの作り方)
HailoRTはAI Software Suiteの一部でもありますが、最終的には組込み機器に単独で入れていただき推論実行する使われ方が主になるかと思います。
そのためAI Software Suiteと違い幅広いプラットフォームに対応しています。
Host CPU:x86、ARM (aarch64)
OS:Linux(Yoctoへの組み込みレシピも公開)/Windows
またHailoRT自体はGithub上に公開されているオープンなソフトウェアとなります。
https://github.com/hailo-ai/hailort
本記事ではAI Software SuiteでのHailoRTの使い方、サンプルソースなどについて説明していきます。
HailoRT CLI Tool
HailoRTにはCLI (Command Line Interface) toolがついておりますので、コマンドで簡単に動作確認ができます。作成したhefファイルの動作を確認する程度であればまずこれを使うのが一番早いかと思います。
試しに以下のリンク先の記事にて作成したhefファイルを動作させてみます。
②Dataflow Compilerの使い方(hefファイルの作り方)
Dataflow Compilerのチュートリアルのフォルダーは下記になりますので、まずはそこへ移動します。
$ cd /local/workspace/hailo_virtualenv/lib/python3.8/site-packages/hailo_tutorials/notebooks
hailortcli runコマンドで作成したhefファイルを指定すればパフォーマンス (FPS) が確認できます。
$ hailortcli run resnet_v1_18.hef
オプションを付加することでlatencyや電力も確認することができます。
$ hailortcli run resnet_v1_18.hef --measure-latency
$ hailortcli run resnet_v1_18.hef --measure-power
それぞれの結果を以下に示しておきます。
Python
PythonでHailoRTを介してハードウェアにアクセスする方法については、hefファイルを作るときと同様にチュートリアルに記載があります。
学習時にPythonを使われていることも多いかと思いますので、精度確認をする際にご活用いただけるかと思います。
$ hailo tutorial
HailoRTのチュートリアルは「DFC_4_Inference_Tutorial.ipynb」のnotebookを選択ください。
AIモデルに画像を入力するまでの事前準備の部分になります。基本的にはこの部分はそのまま使っていただけます。
こちらで使われている関数等に関してはHailoRT User Guideに記載がありますので、合わせてご参照ください。
今回はサンプルということで入力する画像はランダムデータとなっております。
このセルで実際に画像データを入力し、出力を受け取っています。
こちらはブロッキング処理になっておりますので、精度の確認など結果の検証に有用かと思います。
Streamingの処理方法につきましてもこのnotebookに記載がありますので、参考にしてください。
C/C++
最終的な組込み機器に実装される場合はC/C++を使用されることが多いかと思います。さらに使用方法としても、複数のAIモデルを切替えながら使ったり、あるいは複数のHailoデバイスを使ったりなど、さまざまな使われ方があるかと思います。
C/C++ではさまざまな用途に対応したサンプルファイルが用意されていますので、ご要望に応じて選択してください。
サンプルファイルはGithub上に公開されています。READMEもありますので選択の参考にしてください。
https://github.com/hailo-ai/hailort/tree/master/hailort/libhailort/examples
これらのサンプルファイルはあくまでHailoデバイスの入力と出力部分のソースコードになります。
実際にアプリケーションを組む際には、画像取込み、前処理、推論、後処理などがあります。Hailo社ではいくつかのアプリケーションレベルのサンプルコードを準備しておりますので、こちらも合わせてご参照ください。
https://github.com/hailo-ai/Hailo-Application-Code-Examples/tree/main/runtime/cpp
おまけ
AI Software SuiteにはTappasというアプリケーションデモツールも入っています。
主にGStreamerベースで組まれており、カスタマイズも可能です。
最後にこちらを動かしてみます。
$ hailo_run_app --help
こちらで使い方、どんなデモが入っているかを確認いただけます。
試しにyolov8を動かしてみます。
$ hailo_run_app detection detection --show-fps
コマンドだけで簡単にデモが動かせますので、ぜひ試してみてください。
また、Tappas自体もGithubで公開されていますのであわせてご確認ください。
まとめ
以上がHailoの開発フローの説明となります。
Hailoの開発において一助となりましたら幸いです。
不明点などありましたら、以下の「お問い合わせはこちら」ボタンよりお問い合わせください。
お問い合わせ
本記事に関してご質問がありましたら以下より問い合わせください。
Hailo メーカー情報Topへ
Hailo メーカー情報Topページへ戻りたい方は、以下をクリックください。