ついに、Raspberry Pi 5が発売になりました。
Raspberry Pi Shop by KSY
で、2月13日の夜にKSYのサイトにつないだら、なんということでしょう。
まだ在庫があるではありませんか。
ポチッてしまったのは、言うまでもありません。
で、15日に届きました。
8GBのモデルで、KSYでは1.4万円ほど。
ついでに、Amazonでファン付きヒートシンクも頼んでおきました。
4ですらヒートシンクなしで動作不可能なのに、5が大丈夫なわけがない。
中身を開封し、
ヒートシンクを取り付けて、このピンみたいなやつを押し込みます。
少し悩んだのは、このファンのコネクターってどこにあるの?
USB端子の根元辺りにありました。
あとは、以下のサイトからインストーラーを入手し、手ごろなSDカードにOSをインストールします。
Raspberry Pi OS – Raspberry Pi
なお、今回は256GBのSDカードを使ったのですが、ちゃんと入りました。
このRaspberry Pi 5ですが、USB-Cの電源は5V/5A以上、つまり25W以上が必要とのこと。
専用電源の仕様がそれなんですが、我が家のは65Wあるので大丈夫でした。
さて、あっさりと起動しました。
まあ、ここまでは順調。
ですが、ここからが大変でした。
表題にもある通り、何を思ったのか画像生成AI「Stable Diffusion」を使ってみたんですが、思わぬトラップに引っかかっておりました。
参考にしたのは、以下のサイト。
raspberry pi 4でStable Diffusionを動かしてみる(画像自動生成&更新フォトフレームの作成)その1 #Python - Qiita
以前、Raspberry Pi 4で同じことを遣ろうとしたんですが、4GBモデルではメモリーが足らず不可能でした。
で、せっかく8GBのモデルなので、そのリベンジを遣ろうと思った次第です。
で、ここにある通り動かせば、行けるはず・・・と思いきや、
pipコマンドが効かない!!
というトラップに引っかかりました。
えっ、なんで?と思ったんですが、「PEP668」とかいうやつのおかげで、pipコマンドが通らないことが判明。
Pythonでpipが使えないなんて、どうやってライブラリを入れりゃあいいんだ!
Raspberry Pi OSでもbookwormでpipインストールエラー「externally-managed-environment」 | ラズパイダ
上のサイトを見て試行錯誤しましたが、結局、対処法は以下の2つでした。
(1) sudo apt install python3-(ライブラリ名)
なんか、pip使わずにaptを使えってことみたいです。
が、これでインストールできないライブラリの場合は、
(2) sudo -H pip install --break-system-packages (ライブラリ名)
とすればインストールできました。
つまり、(1)、(2)の順に試せってことです。
なお「.pip」というディレクトリを作って、その中にpip.confを作り・・・という対処法は、なぜか上手くいきませんでした。
てことで、今回のインストール手順を書いておきます。
【環境設定】
etcにあるdphys-swapfileを編集します。
sudo vi /etc/dphys-swapfile
(viのところはnanoでも可)
中ほどに「CONF_SWAPSIZE=100」というのがあるので、この100を4096に変えて保存します。
【ライブラリ・インストール】
以下の順番に実行。
sudo apt-get update
sudo -H pip install --break-system-packages setuptool==58.3.0
sudo apt install python3-Cython
sudo apt install python3-torch
sudo -H pip install --break-system-packages transformers
sudo -H pip install --break-system-packages diffusers
sudo -H pip install --break-system-packages accelerate
sudo -H pip install --break-system-packages scipy
sudo -H pip install --break-system-packages safetensors
とりあえず、これで動くようになりました。
基本的には、上の(1)、(2)の順に試してます。
【プログラム実行】
さて、これでやっと実行環境が整ったので、早速動かしてみます。
以下のようなコード「stabledf.py」を準備します。
from diffusers import StableDiffusionPipeline, EulerDiscreteScheduler
model_id = "CompVis/stable-diffusion-v1-4"
scheduler = EulerDiscreteScheduler.from_pretrained(model_id, subfolder="scheduler")
pipe = StableDiffusionPipeline.from_pretrained(model_id, scheduler=scheduler, low_cpu_mem_usage=True)
pipe = pipe.to("cpu")
prompt = "Hiace aiming for the summit of Mount Everest, realistic photo"
steps = 50
image = pipe(prompt=prompt, num_inference_steps=steps, height=256, width=256).images[0]
image.save("image.png")
これを実行。
python stabledf.py
最初だけ、ダウンロードに時間がかかります。
画像サイズやステップ数によりけりですが、256×256の画像で50ステップならば、12分程度で完了しました。
が、ここで一つ問題が。
なぜか、上のコマンドライン上で実行すると、真っ黒な画面しか出力されません。
で、上のようにファイルマネージャーからコードをダブルクリックして出てくる「Geany」という実行環境上から実行すると、画像が出力されました。
理由はよく分かっておりません。
なお、実行中のCPU使用率は98%、
CPU温度は65度まで上昇。取り付けたファンが、大活躍です。
ヒートシンクがなければ、即死でしたね。
で、生成された画像がこちら。
「エベレスト山頂を目指すハイエース」と書いたつもりですが、ハイエースっぽい車の姿がないですね。
まあ、なかなか一発では上手くいかないものです。
と、頑張って動かしてはみたんですが。
残念なことに、Raspberry Pi 5としての性能向上を実感できるものではなかったですね。メモリーが8GBになったメリットしか感じてません。
生成AIが動かせるということ自体が素晴らしいことですし、おそらくはRaspberry Pi 4と比べたら速いんでしょうが、元々、我が家のRaspberry Pi 4では動かなかったものを動かしたため、比較ができません。
てことで、比較できるものを動かしてみました。
PINTO_model_zoo/426_YOLOX-Body-Head-Hand at main · PINTO0309/PINTO_model_zoo · GitHub
こちらのPINTO様のYOLOXによる身体、頭、手を検出するやつを動かしてみました。
先のライブラリに加えて、OpenCVとonnxruntimeが必要です。まずは、いかを実行。
sudo apt install python3-opencv
sudo -H pip install --break-system-packages onnxruntime
その後、上のGithubから「demo_yolox_onnx.py」を入手し、かつdownload_n.shでモデルを入手しておき、
python demo_yolox_onnx.py -m yolox_n_body_head_hand_post_0461_0.4428_1x3x256x320.onnx
のようにモデルを指定して実行します。
(使用するモデルは、予めdemo_yolox_onnx.pyと同じ階層に置きます)
解像度が256×320のnanoモデルを動かしました。推論速度は30~40ms程度と、結構な速度です。
Raspberry Pi 4では70msほどでしたので、確かに倍は速くなってる。
が、描画速度が遅いのか、推論時間のわりにカクカクしてます。そこは要調査。
ということで、買って早々にRaspberry Pi 5で遊んでみました。
M.2 SSDが使えるなどのメリットをまだ活かせていないので、こちらもいずれ。
最近のコメント