ラズベリーパイ(Raspberry Pi) で、情報工学関係ソフトウェア(人工知能,プログラミング,データベース,3次元,画像その他)を一度にインストール(Miniforge を一部利用)

ユースケース:Raspberry Pi で Python を使いたい。conda を使いたい。conda でインストールするか、pip でインストールするかで間に合いそう。

前提とする環境

普通のパソコン Linux との主な違い

目次

  1. 前準備
  2. システムパッケージのインストール
  3. Miniforge のインストール
  4. Python の仮想環境の作成(Miniforge を使用)
  5. Python の仮想環境を使いたいとき
  6. Python の仮想環境に,OpenCV など,種々の Python パッケージをインストール
  7. Python の仮想環境に,PyTorch, TensorFlow をインストール
  8. Python の仮想環境に,Dlib, face_recognition をインストール
  9. Python の仮想環境に,地図・地理情報関係その他のパッケージをインストール
  10. カメラを使うとき(Picamera2)

【サイト内の Raspberry Pi 関連ページ】

小型コンピュータ Raspberry Pi について: 別ページ »にまとめ

1. 前準備

Raspberry Pi OS のインストール

Raspberry Pi OS のインストールについては, 「別のページ」で説明している. 64ビット版(arm64)を選んでインストールする.

Raspberry Pi OS のシステム更新

最初に、Raspberry Pi OS のシステム更新を行っておく

端末で,次のコマンドを実行

# パッケージリストの情報を更新
sudo apt update
sudo apt -yV full-upgrade
sudo apt -yV autoremove
sudo apt autoclean
sudo shutdown -r now
カーネルやファームウェアを更新する rpi-update は、テスト版(未リリース版)を導入するコマンドであり、Raspberry Pi 公式ドキュメントでは通常の更新に使わないことが案内されている。通常の更新は上記の apt full-upgrade で行う。

タイムゾーンとロケールの設定

端末で,次のコマンドを実行

sudo timedatectl set-timezone Asia/Tokyo
sudo sed -i 's/# ja_JP.UTF-8 UTF-8/ja_JP.UTF-8 UTF-8/g' /etc/locale.gen
sudo locale-gen
sudo /usr/sbin/update-locale LANG=ja_JP.UTF-8

設定は再ログイン後に反映される.現在の端末にすぐ反映させたいときは、次のコマンドを実行

export LANG=ja_JP.UTF-8
export LC_ALL=ja_JP.UTF-8
export LANGUAGE=ja_JP.UTF-8

Raspberry Pi OS の初期設定

Raspberry Pi OS の初期設定については、 「Raspbian の初期設定」のページで説明している.このページの記述のうち,必要なものを実行すること.

2. システムパッケージのインストール

端末で,次のコマンドを実行.

1個ずつインストールしているのは、パッケージ名が存在しないなどでエラーになったときに、残りのインストールを続行させるためである.

RASPI_PACKAGES="openssh-server net-tools pciutils \
python3-dev python3-pip python3-venv python3-setuptools \
git wget curl p7zip-full zip unzip \
cmake build-essential gcc g++ dpkg-dev pkg-config \
make autoconf automake flex bison clang binutils swig ccache subversion \
zlib1g-dev libbz2-dev libssl-dev libreadline-dev libffi-dev libsqlite3-dev libcurl4-gnutls-dev \
libopenblas-dev liblapack-dev libatlas-base-dev gfortran libtbb-dev libeigen3-dev \
libjpeg-dev libpng-dev libtiff-dev libopenexr-dev \
libavcodec-dev libavformat-dev libavutil-dev libswscale-dev libavdevice-dev \
libx264-dev libxvidcore-dev libmp3lame-dev libv4l-dev \
libsndfile1-dev libvorbis-dev libopenal-dev \
libgtk-3-dev libx11-dev libgl1-mesa-dev libglu1-mesa-dev libxi-dev libxrandr-dev libxcursor-dev libxxf86dga-dev libfreetype6-dev \
libprotobuf-dev protobuf-compiler protobuf-c-compiler libgoogle-glog-dev libhdf5-dev \
libboost-dev libboost-system-dev libboost-filesystem-dev libboost-thread-dev \
libbullet-dev libode-dev libceres-dev qtbase5-dev \
libopencv-dev libpcl-dev openni2-utils libopenni2-dev \
gdal-bin libgdal-dev \
default-jdk swi-prolog \
spyder pylint flake8 \
emacs emacs-mozc catfish hwinfo \
imagemagick ffmpeg vlc pinta \
blender meshlab \
tesseract-ocr tesseract-ocr-jpn libtesseract-dev libleptonica-dev \
mecab libmecab-dev mecab-utils mecab-ipadic-utf8 \
sqlite3 sqlitebrowser \
i2c-tools"

for i in ${RASPI_PACKAGES}; do
    sudo apt -y install ${i}
done
Raspberry Pi OS の元になっている Debian からは、libjasper-dev, openalpr, scratch2, makehuman, openjdk-8 などのパッケージが削除されている.そのため、上のリストには含めていない.Java は default-jdk(Debian の標準 JDK)を使用する.

3. Miniforge のインストール

Miniforge は、conda-forge が公式に配布している conda のインストーラであり、aarch64(64ビット ARM)に対応している.conda と mamba が同梱され、既定のパッケージ取得先(チャンネル)は conda-forge である.

  1. CPU アーキテクチャの確認

    端末で,次のコマンドを実行.

    aarch64 と表示されることを確認する.armv7l と表示された場合は 32ビット OS で動作しており、Miniforge は使用できない.その場合は 64ビット版の Raspberry Pi OS を導入する.

    uname -m
    
  2. Miniforge のインストール

    端末で,次のコマンドを実行.

    画面に表示される指示に従う.ライセンスの表示では内容を確認し、インストール先の確認と、初期化(conda init)を行うかどうかの質問に答える.

    cd /tmp
    wget https://github.com/conda-forge/miniforge/releases/latest/download/Miniforge3-Linux-aarch64.sh
    bash Miniforge3-Linux-aarch64.sh
    
  3. 確認

    端末で,次のコマンドを実行.

    エラーメッセージが出なければ OK.

    source ~/.bashrc
    which python
    which conda
    python --version
    conda --version
    

4. Python の仮想環境の作成(Miniforge を使用)

  1. 今から作成するPython の仮想環境の名前と、Python のバージョンを決めておく
  2. 端末を開く
  3. Python の仮想環境を作成する

    次のコマンドを実行.

    source ~/.bashrc
    conda create -y -n ai python=3.11
    
  4. Python 環境が作成できたことを確認
    conda info -e
    

    これで、もとからの Python 環境と, 新規作成された Python 環境(Python のバージョン 3.11名前は ai)の共存ができた。

  5. いま作成したPython の仮想環境を有効にする

    次のコマンドを実行.

    * 「conda activate ai」は Python 環境(名前は ai)を有効にするためのコマンド(各自の環境の名前にあわせること

    conda activate ai
    
    「Could not find conda environment: ai」というメッセージが出たときは、上の「Python の仮想環境の作成」を行う
  6. pip の更新
    python -m pip install -U pip setuptools wheel
    pip list
    
  7. conda パッケージの更新、古い conda パッケージファイルの削除
    conda upgrade -y --all
    
    conda clean -y --packages
    
  8. conda の動作確認

    エラーメッセージが出ないことを確認.

    conda info
    

5. Python の仮想環境を使いたいとき

Raspberry Pi OS のシステム Python は、外部管理環境(PEP 668)として保護されている.システム Python に対して pip install を行うと「error: externally-managed-environment」というエラーが表示される.Python パッケージのインストールは、このページのように conda の仮想環境、あるいは python3 -m venv で作成した仮想環境の中で行う.

6. Python の仮想環境に,OpenCV など,種々の Python パッケージをインストール

conda を用いて,conda 形式の Python パッケージを扱うことができる. Python パッケージ以外のソフトウェア(コンパイラ、ライブラリなど)をインストールすることもできる.

  1. 端末を開く
  2. Python の仮想環境を有効にする

    次のコマンドを実行.

    * 「conda activate ai」は Python 環境(名前は ai)を有効にするためのコマンド(各自の環境の名前にあわせること

    conda activate ai
    
    「Could not find conda environment: ai」というメッセージが出たときは、上の「Python の仮想環境の作成」を行う
  3. パッケージのインストール

    次のコマンドを実行.

    * 「conda install」,「pip install ...」は,Pythonのライブラリをインストールするための操作

    CONDA_PACKAGES="opencv \
    numpy scipy h5py scikit-image pillow matplotlib seaborn pandas statsmodels scikit-learn sympy \
    jupyterlab ipython notebook plotly bokeh \
    sqlalchemy flask pyyaml cython msgpack-python \
    pytest flake8 pylint xlrd openpyxl"
    
    PIP_PACKAGES="csvkit docopt imutils mecab-python3"
    
    for i in ${CONDA_PACKAGES}; do
        conda install -y ${i}
    done
    for i in ${PIP_PACKAGES}; do
        pip install -U ${i}
    done
    
  4. OpenCV のバージョン確認
    python -c "import cv2; print( cv2.__version__ )"
    

7. Python の仮想環境に,PyTorch, TensorFlow をインストール

かつて広く使われていた Chainer は、2019年12月に開発元がメンテナンスフェーズへの移行を発表し、新機能の開発を終了している.開発元は移行先として PyTorch を案内している.そのため、このページでは PyTorch を扱う.
  1. 端末を開く
  2. Python の仮想環境を有効にする

    次のコマンドを実行.

    * 「conda activate ai」は Python 環境(名前は ai)を有効にするためのコマンド(各自の環境の名前にあわせること

    conda activate ai
    
    「Could not find conda environment: ai」というメッセージが出たときは、上の「Python の仮想環境の作成」を行う
  3. PyTorch のインストール

    次のコマンドを実行.

    Raspberry Pi には NVIDIA GPU が搭載されていないため、CPU 版を使用する.

    pip install -U torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cpu
    

    インストールの確認

    python -c "import torch; print( torch.__version__ ); print( torch.tensor([1.0, 2.0]).sum() )"
    
  4. TensorFlow のインストール

    次のコマンドを実行.

    64ビット(aarch64)環境では、PyPI から TensorFlow のビルド済みパッケージを取得できる場合がある.Python のバージョンによっては該当する wheel が存在せず、インストールできないことがある.

    pip install -U tensorflow
    

    インストールの確認

    python -c "import tensorflow as tf; print( tf.__version__ )"
    
    TensorFlow のフルパッケージは、Raspberry Pi では読み込みや学習に時間がかかる.学習済みモデルによる推論だけを行う場合は、軽量な実行環境である LiteRT(旧 TensorFlow Lite)の利用を検討する.
    pip install -U ai-edge-litert
    
  5. Keras, MTCNN のインストール

    MTCNN は顔検出のライブラリであり、TensorFlow/Keras を使用する.

    pip install -U keras mtcnn
    

    インストールの確認

    python -c "import mtcnn; print( mtcnn.__version__ )"
    

8. Python の仮想環境に,Dlib, face_recognition をインストール

Dlib は、aarch64 用のビルド済みパッケージが配布されていないため、ソースコードからのビルドになる.ビルドには時間がかかり(Raspberry Pi 4 で数十分程度)、メモリも必要である.

  1. 端末を開く
  2. Python の仮想環境を有効にする

    次のコマンドを実行.

    * 「conda activate ai」は Python 環境(名前は ai)を有効にするためのコマンド(各自の環境の名前にあわせること

    conda activate ai
    
    「Could not find conda environment: ai」というメッセージが出たときは、上の「Python の仮想環境の作成」を行う
  3. スワップ(仮想メモリ)のサイズを増やす

    メモリが 2G バイト以下の機種では、ビルド中のメモリ不足を避けるためにスワップを増やす.

    sudo sed -i -e "s/^CONF_SWAPSIZE=.*/CONF_SWAPSIZE=2048/g" /etc/dphys-swapfile
    sudo sed -i -e "s/^#\?CONF_MAXSWAP=.*/CONF_MAXSWAP=2048/g" /etc/dphys-swapfile
    cat /etc/dphys-swapfile | grep CONF_
    sudo systemctl restart dphys-swapfile
    
  4. ビルドに必要なパッケージのインストール
    # パッケージリストの情報を更新
    sudo apt update
    sudo apt -y install cmake
    sudo apt -y install libopenblas-dev
    sudo apt -y install libatlas-base-dev
    
  5. Dlib のインストール

    しばらく待つ

    pip install -U dlib
    
  6. Dlib のバージョン確認
    python -c "import dlib; print( dlib.__version__ )"
    
  7. face_recognition のインストール
    pip install -U face_recognition
    

    インストールの確認

    python -c "import face_recognition; print( face_recognition.__version__ )"
    
  8. スワップのサイズを元に戻す

    スワップへの書き込みは SD カードの寿命を縮めるため、ビルドが終わったら元の値(既定値は 100 または 200)に戻す.

    sudo sed -i -e "s/^CONF_SWAPSIZE=.*/CONF_SWAPSIZE=100/g" /etc/dphys-swapfile
    cat /etc/dphys-swapfile | grep CONF_SWAPSIZE
    sudo systemctl restart dphys-swapfile
    

9. Python の仮想環境に,地図・地理情報関係その他のパッケージをインストール

  1. 端末を開く
  2. Python の仮想環境を有効にする

    次のコマンドを実行.

    * 「conda activate ai」は Python 環境(名前は ai)を有効にするためのコマンド(各自の環境の名前にあわせること

    conda activate ai
    
    「Could not find conda environment: ai」というメッセージが出たときは、上の「Python の仮想環境の作成」を行う
  3. geopandas, folium その他のインストール

    geopandas は GDAL, PROJ, GEOS などのライブラリに依存する.依存関係をまとめて解決できるため、conda でインストールする.

    conda install -y geopandas folium shapely pyproj fiona rasterio
    
  4. overpy, ExifRead, haversine, utm のインストール
    pip install -U overpy ExifRead haversine utm
    
  5. インストールの確認
    python -c "import geopandas; print( geopandas.__version__ )"
    python -c "import folium; print( folium.__version__ )"
    

10. カメラを使うとき(Picamera2)

Raspberry Pi のカメラモジュールを Python から扱うライブラリは Picamera2 である.従来の picamera は、Raspberry Pi OS Bullseye 以降で使用されている新しいカメラスタック(libcamera)に対応しておらず、公式に非推奨とされている.

Picamera2 は、Raspberry Pi OS のシステムパッケージとして提供されており、システムの libcamera と組み合わせて動作する.conda の仮想環境からは利用できないため、システム Python から使用する.

端末で,次のコマンドを実行.

sudo apt update
sudo apt -y install python3-picamera2

動作確認(システム Python で実行する.conda 環境を有効にしている場合は「conda deactivate」で無効にしてから実行する)

conda deactivate
/usr/bin/python3 -c "from picamera2 import Picamera2; print( Picamera2.global_camera_info() )"