1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

condaを使った仮想環境でAI Kitを動かす in Ubuntu 24.04【Raspberry Pi AI Kit】

Posted at

はじめに

本記事ではcondaを使った仮想環境で、Raspberry Pi AI Kitを動かすための環境構築について説明していきます。使用OSはUbuntu 24.04です。
他のアプリケーションを動かすために使っている依存関係に干渉させたくないためcondaを使います。

元々の環境がRaspberry Pi OSではなかったりする方の参考になればと思い、執筆いたしましした。

自分が環境構築でかなり手こずったため、この記事が皆様の一助になれば幸いです。

なお、Raspberry Pi公式ではRaspberry Pi OS 64bit (Bookworm)でvenvを使うやり方が紹介されているため、本記事での環境構築は推奨されていないと思います。環境構築の際は自己責任でお願いします。

目次

  1. 実装環境
  2. Ubuntuのインストール
  3. Anaconda3のインストール
  4. 仮想環境の作成
  5. HailoRT PCIe driverのインストール
  6. HailoRTのインストール
  7. hailo_platformのインストール
  8. 動作確認
  9. おわりに

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は公式サイトからインストールしてください。

Raspberry Pi Imagerでの作業の様子

デバイスの選択
デバイスの選択

OSの選択
OSの選択

SDカードの選択
SDカードの選択

選択後のRaspberry Pi Imager
Raspberry Pi Imager

書き込み終了後、SDカードをRaspberry Piに差し込み、Ubuntuをセットアップします。

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に以下のパラメータを追加します。

/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のインストーラーのダウンロード、インストールを行います

~/work
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を使用します。

~/work
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

ドライバのコンパイル、インストール

ドライバのコンパイル、インストールを行います。

~/work/hailort-drivers-4.17.1/linux/pcie
make all
sudo make install
sudo modprobe hailo_pci

ファームウェアの設定

ドライバのインストール後、ファームウェアを設定します。

~/work/hailort-drivers-4.17.1
./download_firmware.sh
sudo mkdir /lib/firmware/hailo
sudo mv hailo8_fw.4.17.1.bin /lib/firmware/hailo/hailo8_fw.bin

Udevルールの追加

Udevルールを追加します。

~/work/hailort-drivers-4.17.1
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をインストールします。

~/work
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に適切な引数を与えると色々なライブラリ等もコンパイルされます。
公式ドキュメントをみてみるといいかもしれません。

~/work/hailort-4.17.1
cmake -H. -Bbuild -DCMAKE_BUILD_TYPE=Release && cmake --build build --config release

色々エラーでますが一応動きます。

インストールを行います。
hailortclilibhailort.soを適切な場所にコピーします

~/work/hailort-4.17.1
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ファイルを作成します。

~/work/hailort-4.17.1/hailort/libhailort/bindings/python/platform
python setuo.py bdist_wheel

pipを使ってインストールします。

~/work/hailort-4.17.1/hailort/libhailort/bindings/python/platform/dist
pip install hailort-4.17.1-cp311-cp311-linux_aarch64.whl

Python Bindingのコンパイル、インストール

上記でインストールしたhailo_platformだけでは正しく動かないため、Python Bindingを使用したライブラリを追加します。
まずはコンパイルです。

~/work/hailort-4.17.1
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を適切な場所にコピーします。

~/work/hailort-4.17.1
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ファイルをダウンロードしてください。

~/work
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が起動するので、事前にインストールします。

Jupyterのインストール
pip install jupyter

hailo tutorial.hefファイルを使うのですが、用意されていないのでこちらで準備します。
このファイルもHailo Model Zooからダウンロードします。

~/anaconda3/envs/hailo/lib/python3.11/site-packages/hailo_tutorial
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が起動するので確認します。

起動後のJupyter

HRT_0_Inference_Tutorial.ipynbで動作確認を行います。
HRT_1_Power_Measurement_Tutorial.ipynbHRT_2_Inference_Tutorial_Multi_Process_Service.ipynbは今回のインストール方法では動かないため、本記事では動作確認に使用しません。

最後の出力が画像のようになっていたら完了です。
HRT_0_Inference_Tutorial.ipynb

以上で動作確認は完了です

9. おわりに

以上でcondaを使った仮想環境で、Raspberry Pi AI Kitを動かすための環境構築は完了です。
TAPPASをインストールしていないため完璧とは言えませんが、画像ファイルを推論するには十分な環境が整ったのではないでしょうか。
TAPPASのインストールに関しては時間があるときに試してみます。そのときはまた記事を書こうと思います。

長くなりましたがここまで読んでいただきありがとうございます。
自分のように環境構築が苦手な方の助けになっていれば幸いです。

参考サイト

1
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?