はじめに
本記事ではcondaを使った仮想環境で、Raspberry Pi AI Kitを動かすための環境構築について説明していきます。使用OSはUbuntu 24.04です。
他のアプリケーションを動かすために使っている依存関係に干渉させたくないためcondaを使います。
元々の環境がRaspberry Pi OSではなかったりする方の参考になればと思い、執筆いたしましした。
自分が環境構築でかなり手こずったため、この記事が皆様の一助になれば幸いです。
なお、Raspberry Pi公式ではRaspberry Pi OS 64bit (Bookworm)でvenvを使うやり方が紹介されているため、本記事での環境構築は推奨されていないと思います。環境構築の際は自己責任でお願いします。
目次
- 実装環境
- Ubuntuのインストール
- Anaconda3のインストール
- 仮想環境の作成
- HailoRT PCIe driverのインストール
- HailoRTのインストール
- hailo_platformのインストール
- 動作確認
- おわりに
1. 実装環境
- Raspberry Pi 5 8GB
- Raspberry Pi AI Kit
- Micro SDカード 16GB
上記の環境にUbuntuやconda、HailoRTなどをインストールします。
2. Ubuntuのインストール、ソフトウェアのアップデート
Raspberry Pi Imagerを使ってSDカードにUbuntu
を書き込みます。
本記事ではUbuntu 24.02
を使用します。
Raspberyy Pi Imagerは公式サイトからインストールしてください。
書き込み終了後、SDカードをRaspberry Piに差し込み、Ubuntuをセットアップします。
ターミナルを開き、パッケージのアップデートを行います。
sudo apt update
sudo apt upgrade -y
sudo reboot
このあとのインストール作業に必要なパッケージもあらかじめインストールしておきます。
sudo apt install -y linux-headers-`uname -r` make cmake gcc g++ git
また、Raspberry Pi 5はインストール時、PCIeがGen2のためGen3に対応させます。
Gen3に対応させるためには/boot/firmware/config.txt
に以下のパラメータを追加します。
dtparam=pciex1_gen=3
一度再起動しておきます
sudo reboot
3. Anaconda3のインストール
本記事ではcondaを使用するのにAnaconda3を使用します。
軽量版のMinicondaもありますが、こちらはARMアーキテクチャに対応していません。軽量版を使用したい場合はARMアーキテクチャに対応しているMiniforgeを使用してください。
ちなみに今回使っている16GBのSDカードだと容量のほぼすべてを使うくらいになってしまったので、十分な容量がない場合はMiniforgeを使ったほうがいいと思います。
作業ディレクトリの作成
以降の作業ではこのディレクトリ内で行います。
mkdir ~/work
cd ~/work
インストーラーのダウンロード、インストール
Anacondaのインストーラーのダウンロード、インストールを行います
wget https://repo.anaconda.com/archive/Anaconda3-2024.06-1-Linux-aarch64.sh
chmod +x Anaconda3-2024.06-1-Linux-aarch64.sh
./Anaconda3-2024.06-1-Linux-aarch64.sh
ライセンスの承諾やインストール場所などを指定できるため、適宜設定してください。
本記事ではホームディレクトリ直下にインストールしました。
インストール直後のターミナルだとconda
コマンドが使用できないため、一度ターミナルを閉じて、再度起動してください。
4. 仮想環境の作成
condaを使用してPythonの仮想環境を作成します。
本記事ではPython 3.11
を使用します
conda create -n hailo python=3.11
conda activate hailo
以降はこの仮想環境を使用して作業します。
バージョンはpython>=3.8
であれば動くと思います。
5. HailoRT PCIe driverのインストール
AI Kitに搭載されているHailo-8LをRaspberry Piに認識させるためには、HailoRT PCIe driverをインストールする必要があります。
本記事ではGitHubのReleasesからソースコードをダウンロードします。
ただ、執筆時の2024年8月1日時点ではv4.18.0
をコンパイルできなかったため、v4.17.1
を使用します。
wget https://github.com/hailo-ai/hailort-drivers/archive/refs/tags/v4.17.1.zip
unzip v4.17.1.zip
rm v4.17.1.zip
ドライバのコンパイル、インストール
ドライバのコンパイル、インストールを行います。
make all
sudo make install
sudo modprobe hailo_pci
ファームウェアの設定
ドライバのインストール後、ファームウェアを設定します。
./download_firmware.sh
sudo mkdir /lib/firmware/hailo
sudo mv hailo8_fw.4.17.1.bin /lib/firmware/hailo/hailo8_fw.bin
Udevルールの追加
Udevルールを追加します。
sudo cp ./linux/pcie/51-hailo-udev.rules /etc/udev/rules.d/
上記が完了しましたら再起動をします。
sudo reboot
6. HailoRTのインストール
実際にHailo-8Lを使うためにはHailoRTをインストールする必要があります。
こちらもHailoRT PCIe driverと同様、Releasesからv4.17.1
をインストールします。
wget https://github.com/hailo-ai/hailort/archive/refs/tags/v4.17.1.zip
unzip v4.17.1.zip
rm v4.17.1.zip
HailoRTのコンパイル、インストール
はじめにコンパイル行います。
最初のcmake
に適切な引数を与えると色々なライブラリ等もコンパイルされます。
公式ドキュメントをみてみるといいかもしれません。
cmake -H. -Bbuild -DCMAKE_BUILD_TYPE=Release && cmake --build build --config release
色々エラーでますが一応動きます。
インストールを行います。
hailortcli
とlibhailort.so
を適切な場所にコピーします
sudo cp build/hailort/hailortcli/hailortcli /usr/local/bin/
cp build/hailort/libhailort/src/libhailort.so ~/anaconda3/envs/hailo/lib/
cp build/hailort/libhailort/src/libhailort.so.4.17.1 ~/anaconda3/envs/hailo/lib/
7. hailo_platformのインストール
HailoRTを使用するために、Pythonにhailo_platformをインストールします。
wheelファイルの作成、インストール
hailo_platformのwheelファイルを作成します。
python setuo.py bdist_wheel
pipを使ってインストールします。
pip install hailort-4.17.1-cp311-cp311-linux_aarch64.whl
Python Bindingのコンパイル、インストール
上記でインストールしたhailo_platformだけでは正しく動かないため、Python Bindingを使用したライブラリを追加します。
まずはコンパイルです。
cmake -H. -Bbuild -DCMAKE_BUILD_TYPE=Release -DHAILO_BUILD_PYBIND=1 -DPYBIND11_PYTHON_VERSION=3.11 && cmake --build build --config release --target _pyhailort
作成した_pyhailort.cpython-311-aarch64-linux-gnu.so
を適切な場所にコピーします。
cp build/hailort/libhailort/bindings/python/python/src/_pyhailort.cpython-311-aarch64-linux-gnu.so ~anaconda3/envs/hailo/lib/python3.11/site-packages/hailo_platform/pyhailort/
_pyhailortからGLIBCXX_3.4.32を求められた時
Pythonでhailo_platform
をインポートした時、以下のようなエラーが出るかもしれません。
ImportError: /home/user/anaconda/envs/hailo/bin/../lib/libstdc++.so.6: version 'GLIBCXX_3.4.32' not found (required by /home/user/anaconda3/envs/hailo/lib/python3.11/site-packages/hailo_platform/pyhailort/_pyhailort.cpython-311-aarch64-linux-gnu.so
_pyhailort.cpython-311-aarch64-linux-gnu.so
からGLIBCXX_3.4.32
を求められるため、libstdc++.so.6
を仮想環境下にコピーすることで解決します。
cp /usr/lib/aarch64-linux-gnu/libstdc++.so.6 ~/anaconda3/envs/hailo/lib/
8. 動作確認
インストール作業が完了したので動作確認を行います。
本記事では以下の動作確認を行います。
-
hailortcli
を用いてHailo-8Lが正しく認識されているか -
hailortcli
を用いて.hef
ファイルが読み込めるか -
hailo tutorial
を用いてhailo_platform
が正しく動作するか
3つ目だけ行っても全体の動作確認はできるので、一番最初に確認しても構いません。
本記事では、公式が用意している
hailo-rpi5-examplesを使った動作確認は行いません。
動作にHailo TAPPASが必要なのですが、今回はインストールしていないため動きません。また今度の機会に試してみます。
Hailo-8Lが正しく認識されているか
以下のコマンドを行って問題なく出力できれば正しく認識されています。
hailortcli fw-control identify
.hefファイルが読み込めるか
.hef
ファイルとは、Hailoで推論するために必要なファイルです。
他のライブラリで使用される.pt
や.onnx
をこのファイルに変換することで、Hailoで推論させることできます。
この.hef
ファイルはHailo Model Zooでコンパイル済みのものが用意されています。
本記事ではHailoRT v4.17.1
に対応したHailo Model Zoo v2.11.0
を使用します。
コンパイル済みのモデルはhailo_model_zoo/docs/public_models/HAILO8Lにリストアップされているので、お好みの.hef
ファイルをダウンロードしてください。
wget https://hailo-model-zoo.s3.eu-west-2.amazonaws.com/ModelZoo/Compiled/v2.11.0/hailo8l/yolov8n.hef
hailortcli
を使って実際に動かしてみます。
hailortcli run yolov8n.hef
hailo_platformが正しく動作するか
最後にhailo_platformが正しく動作するか確認します。
確認にはhailo turorial
というコマンドを使います。
コマンドを実行させるとJupyter
が起動するので、事前にインストールします。
pip install jupyter
hailo tutorial
で.hef
ファイルを使うのですが、用意されていないのでこちらで準備します。
このファイルもHailo Model Zooからダウンロードします。
mkdir hefs
cd hefs
wget https://hailo-model-zoo.s3.eu-west-2.amazonaws.com/ModelZoo/Compiled/v2.11.0/hailo8l/resnet_v1_18.hef
コマンドを実行します。
hailo tutorial
実行するとブラウザでJupyter
が起動するので確認します。
HRT_0_Inference_Tutorial.ipynb
で動作確認を行います。
HRT_1_Power_Measurement_Tutorial.ipynb
とHRT_2_Inference_Tutorial_Multi_Process_Service.ipynb
は今回のインストール方法では動かないため、本記事では動作確認に使用しません。
以上で動作確認は完了です
9. おわりに
以上でcondaを使った仮想環境で、Raspberry Pi AI Kitを動かすための環境構築は完了です。
TAPPASをインストールしていないため完璧とは言えませんが、画像ファイルを推論するには十分な環境が整ったのではないでしょうか。
TAPPASのインストールに関しては時間があるときに試してみます。そのときはまた記事を書こうと思います。
長くなりましたがここまで読んでいただきありがとうございます。
自分のように環境構築が苦手な方の助けになっていれば幸いです。