機械学習・AI【エッジAI】Raspi5でYOLOリアルタイム物体検出チャレンジ!~環境整備編 vol.21

【エッジAI】Raspi5でYOLOリアルタイム物体検出チャレンジ!~環境整備編 vol.21

【エッジAI】Raspi5でYOLOリアルタイム物体検出チャレンジ!~検出実行編 vol.20ではRaspi5で重い物体検出をかけた結果をお伝えしました。"精度を保ったままリアルタイム"の要件が厳しすぎるきらいはあるものの、特定用途では「使えるかもね」の結果を得ました。

 

今回は、Raspi5そのものの環境設定のお話です。
私のようななんちゃって開発者であっても、"Pythonでコードを書いて動くのを見たい!"が本能であって、ハードウェア工作とか環境設定とかは付帯作業でしかありません。(ごめんなさい、実は割と好きです)
その辺、ノートPCでの開発とかって楽でいいなぁ・・なんですが、環境構築のハードルがあるなぁと思いますので、備忘録として残しておく意図です。

私自身、多くの記事を読んで&Copilotによる導きにより環境構築しましたので、同じようなことを実現しようとしている方へ、足跡を残します。

Raspiをリモートのコンピュータとしてヘッドレス※で実行して、開発も動作検証も開発機で操作できます。
これでRaspi本体が手元に無くても、デバッグできます。

※ヘッドレス:ディスプレイ、キーボード、マウスと繋げないことを恰好付けてこのように言う

 

■実現したかったこと


1:microSDに(重い)OSを載せていることの"もっさり感"の解消→NVMe SSDブート
2:タッチ液晶パネルでのUI操作(最終的なアプリの活用は本体のみで簡単に行いたい)
3:リモートデスクトップ環境での操作(キーボード、マウス、ディスプレイを繋ぎたくない)
4:WindowsPCによる開発(VSCodeのエディタやファイル操作を使いたい。nanoとかviは嫌だ)

 

 

■microSDブートからNVMeSSDブートへ変更

 

詳しく書き残してくれている人の記事がたくさんありますので、ここでは簡潔に手順だけ列挙します。

ここは本当に"サクッと"行きました。

・PC上で最初のブートイメージを作成

 Ubuntu24 64bitDesktop LTS

・microSDで起動したUbuntu上でimagerをインストール
sudo apt install rpi-imager

・PCIe HATの取り付け

 Geekworm X1001 V1.1 PCIe NVMe M.2 SSD 2280拡張ボード

・NVMe SSDの取り付け

fanxiang SSD 256GB NVMe PCIe Gen3.0x4 2800MB/s TLC 3D NAND M.2 2280

・NVMe SSDへOSのインストール

rpi-imagerを起動して、お好みのOSをNVMe SSDにインストールします。

・microSDを抜いてNVMe SSDでブート

綺麗にいくとそのままNVMe SSDでブートしてきます。

※上手く行かない場合は、microSDで起動して、NVMeSSD上にインストールされた起動ファイルを調節しなければならないようです。(割愛)

 

[PCIe3拡張HAT]
01.jpg

 

[02:PCIe3 NVMeSSD]
02.jpg

 

[03:Pi imager]
03.jpg

 

 

■タッチパネル液晶の導入

 

詳しく書き残してくれている人の記事がたくさんありますので、ここでは簡潔に手順だけ列挙します(その2)。
実は、ここもサクッと動きました。工作もRaspi-Configも何も必要ありませんでした。
ケーブルを差して(差し込む方向だけは注意!)そのまますんなりブートしてきました。

Freenove 5インチタッチスクリーンモニター for Raspberry Pi 5 4B 3B+ A+、800x480ピクセルIPSディスプレイ

但し、後述するリモートデスクトップ環境との共存や、自動グラフィカルログインの部分は、少しだけ調整がありましたが割愛します。

 

[04:5インチタッチパネル装着]
04.jpg

 

[05:5インチUbuntuログイン]
05.jpg

 

■リモート保守環境の確保

 

[06:リモートデスクトップ]
06.png

 

ここは過去の記事はあまり参考にしない方が良いと思います。
なぜなら最新のUbuntuではRDP(リモートデスクトップ)に対応しているからです。VNCの記事がたくさん出てきますし、もっと軽量な別のウィンドウマネージャを使う記事がありますが、割と鬼門だと感じています。

レッツRDP!

・Wi-Fi(またはLAN)のアドレスを固定化
Wi-Fiで取得するDHCPアドレスではなく、IPv4アドレスを固定化します。

・SSHを有効化
PCのTeraTermから最低限のコマンド実行はSSHでしたいです。


・リモートデスクトップの構成
UbuntuDesktopでは、VNCとかを別途入れなくても、元々RDPが出来るように設定されています。Windowsのリモートデスクトップで快適に動作します。

「RDPがデフォルトで準備されている!」というのは後で知ったことで、実はその前に、VNCを入れて、ウィンドウマネージャーの競合とかでバタバタしました。少し前はVNCでgnomeっていうのが私のデフォルトでした。

ともあれ、UbuntuのServerをWindowsのRDP(リモートデスクトップ)でサクサク扱えるのは本当に助かります。

しかも動作はかなり安定しており、常時接続で、マルチ画面での開発(動作確認)が快適です。

※WindowsのRDPから接続する際には、ポート番号の:3389を忘れずに指定してください。 

 

■開発環境の構築

 

詳しく書き残してくれている人の記事があまりないようです。
私はCopilotに聞きながらなんとか漕ぎつけました。
ここでは簡潔に手順だけ列挙します(その3)。

[07:VSCode]
07.png

・Raspi上での仮想環境の準備 venv
venvで仮想環境を構築します。
Raspiでは本体機能で使うPythonが激しく制限を掛けるので、venvで別環境を準備するのが鉄則のようです。試しにユーザ領域でpip installを実行して見てください。
「それは外(ユーザ環境を別に作って)でやってよ」と良く怒られます。

・venv
rm -rf /home/[user_name]/edgeai
python3 -m venv /home/[user_name]/edgeai
source /home/[user_name]/edgeai/bin/activate

・パーミッション変更
ls -la /home/[user_name]/.venv
sudo chown -R [user_name]:[user_name] /home/[user_name]/venv
sudo chown -R [user_name]:[user_name] /home/[user_name]/edgeai

which python
which pip
chmod +x /home/rdcenter/venv/edge/bin/pip3

 

・VSCodeでSSHログイン VSCode機能拡張"Remote - SSHの導入"
ここはcopilotさんに教えてもらいました。
VSCodeからRaspiに接続する環境を構築します。

WindowsPCのユーザディレクトリに.ssh.configファイル作成し、SSH接続設定を保存しておきます。
Host raspi5
HostName 192.168.x.x
User xxxx
IdentityFile ~/.ssh/id_rsa

・VSCode上で笑ってお仕事 .vscode

接続の度にSSHのパスワードを求められますが、それ以外は従来の環境と何ら変わりありません。

また、VSCodeの設定を同じくWindowsユーザディレクトリの.vscode/settings.jsonに保存しておきます。

.vscode/settings.json
{
"python.defaultInterpreterPath": "/home/rdcenter/edgeai/venv/bin/python"
}

VSCodeのワークスペースに現在の設定を保存しておきます。

 

VSCodeで(他のPC上でのPythonプログラムの開発同様)Pythonの開発が出来るのは快適です。
何が素晴らしいって、ディレクトリやファイルの操作もVSCode上でできるのでプログラムが生成するログや画像をそのまま確認できる!

 

 

▼この記事を書いたひと

001@2x.png

R&Dセンター 松井 良行

R&Dセンター 技術戦略担当部長。コンピュータと共に35年。そしてこれからも!

 

 

おすすめの関連記事


機械学習・AIの最新記事


お問い合わせ

ご意見・ご質問などお気軽にお問い合わせ下さい。
ナカシャクリエイテブ株式会社

●富士見事務所 TEL : 052-228-8733 FAX : 052-323-3337
〒460-0014 愛知県名古屋市中区富士見町13−22 ファミール富士見711  地図
交通部 R&Dセンター

Email:メールでのお問い合わせ