メインコンテンツへスキップ
見出し画像
Photo byast666s_channel

Raspberry Pi 4でDockerコンテナからYOLOv5 v7.0のサンプルアプリケーションを実行する方法(2024年2月時点)

    最終更新日:2024年2月14日

    お知らせ
    2024年2月14日時点の内容に変更しました。
    2023年6月1日時点の内容に変更しました。
    2023年5月16日時点の最新版YOLOv5 v7.0に対応しました。

    ※ 2024年2月14日時点でのYOLOv5の最新バージョンはv7.0です。

    Raspberry Pi 4にDockerをインストールし、Dockerコンテナ上にPyTorchやnumpy、OpenCV等をプリインストールしたマシンラーニングコンテナを作成して、そのマシンラーニングコンテナからYOLOv5を実行する手法を説明します。

    この記事ではYOLOv5の実行方法の手法ですが、マシンラーニングコンテナはPyTorchが動作する環境です。YOLOv5以外のPyTorchを使用したモデルも実行できます。

    本記事ではRaspberry Pi 4にマシンラーニングコンテナを作成し、Dockerコンテナ上からUSBカメラの映像をYOLOv5で推論し、デスクトップにリアルタイムで推論結果とともにカメラ映像を表示する方法を説明します。

    リアルタイムと言いましたが、Raspberry Pi 4のスペックなので、フルHDサイズの画像の推論に2~3秒程度の時間はかかると思います。

    Dockerコンテナを使用せずにベタにpythonのライブラリをインストールする方法もありますが、pythonのライブラリのバージョンの競合が発生することが多く、一般的には避けたほうが良いです。

    また、pythonの仮想環境(venv)を使用しての方法もありますが、Webの記事にたくさんあるので避けました。

    この記事をご覧の皆様の中でRaspberry Piや他のデバイスでYOLOv5を動かそうとし、ググってWeb通りに試しても動かない経験があるのではないでしょうか。

    このような方向けに確実に動作させられるようにDockerコンテナを使用してマシンラーニングコンテナを作成するところから説明します。

    環境

    本記事を参考に、YOLOv5を試すには以下のものが必要です。

    • Raspberry Pi 4

    • SDカード32GB (32GB以上であれば問題ないです)

    • USBマウス

    • USBキーボード

    • USBカメラ

    • インターネット接続 (本記事は有線接続です)

    • Winodows10パソコン

    Raspberry Pi Imagerのインストール

    Windows10パソコンを用意し、SDカードにRaspberry PiのOSを書き込むために必要になるアプリケーションソフトのRaspberry Pi Imagerを以下のページからダウンロードし、インストールを行います。

    以下の"Download for Windows"をクリックするとダウンロードができます。

    画像
    Raspberry Pi Imager ダウンロード方法

    ダウンロードが完了すると、ダウンロード指定先のフォルダに以下のようなファイルが見つかります。ダブルクリックしてインストールを行います。

    画像
    Raspberry Pi Imager ダウンロードファイル

    以上でRaspberry Pi Imagerのインストールの説明は終了です。

    SDカードにOSイメージの書き込み

    パソコンにSDカードを挿入したあと、Raspberry Pi Imagerを起動します。起動後、「デバイスを選択」でRaspberry Pi 4を選択し、「OSを選択」でRaspberry Pi OS(64bit)版を選択します。

    画像
    Raspberry Pi Imager OS選択

    OSを選択したあとは、ストレージを選択します。パソコンに挿入したSDカードを選択します。選択後、"書き込む"のアイコンをクリックします。OSイメージの書き込みには時間がかかります。

    以上でSDカードにOSイメージの書き込みの説明は終了です。

    Raspberry Pi 4の初回起動時の初期設定

    OSイメージを書き込んだSDカードをRaspberry Pi 4に挿入し、USBマウス、USBキーボード、USBカメラを接続します。最後にルーターとRaspberry Pi 4をLANケーブルで接続します。(本記事では有線接続ですが、Wi-Fi接続でも問題ありません。)
    準備は完了したのでRaspberry Pi 4の電源を入れます。初回の起動時はRaspberry Pi 4の初期設定を行います。

    "Set Country"の設定は、CountryをJapanに設定します。これにより、自動的にLanguageとTimezoneが設定されます。この後、Use English languageにチェックをします。

    "Update Software"の設定はSkipを選択します。何がアップデートされるか不明で、後から手動でアップデートを行うのでここではSkipします。

    初期設定の最後に再起動を促す画面になります。Restartボタンをクリックして再起動を行います。

    以上でRaspberry Pi 4の初回起動時の初期設定の説明は終了です。

    カーネル情報とOS情報の確認

    本記事執筆時(2024年2月)時点のRaspberry Pi 4のカーネル情報とOS情報は以下となります。
    カーネル情報はターミナルを開いて以下のコマンドを入力します。("$"マークは入力する必要はありませんがWebでの記事では"$"をつけて書くのが一般的です。本記事ではターミナルでのコマンド入力を表現するときは先頭に$を付加しています)

    $ uname -a

    OS情報はターミナルを開いて以下のコマンドを入力します。

    $ cat /etc/os-release

    私の環境は以下となります。uname -aコマンドの出力結果に"aarch64"とあれば64bitのOSとなります。本記事は64bitのOSを使う前提で動作確認をしているため、もし出力結果が"aarch32"の場合は、目次「SDカードにOSイメージの書き込み」からやり直してください。

    画像
    カーネル情報とOS情報

    以上でカーネル情報とOS情報の確認の説明は終了です。

    Raspberry Pi 4のSSH接続を有効化

    本記事を見ている方は、Raspberry Pi 4とは別のホストマシン(例えばWindowsパソコン)からRaspberry Pi 4にSSH接続をしてRaspberry Pi 4を操作する人が大半だと思います。Raspberry Pi 4のSSHの初期設定は無効設定のため、有効に変更します。
    変更方法は、Raspberry Pi 4のデスクトップの左上のイチゴマークをクリックし、"Preferences"⇒"Raspberry Pi Configuration"⇒"Interfaces"のSSHを有効にします。

    画像
    SSH有効化

    WindowsパソコンからRaspberry Pi 4にSSH接続する方法は以下の記事を参照してください。

    以上でRaspberry Pi 4のSSH接続の有効化の説明は終了です。

    Dockerインストール

    Dockerのインストール前の準備としてパッケージを更新します。

    パッケージ一覧の更新

    パッケージのリポジトリから、パッケージの名前やバージョン、依存関係を取得し、インストール可能なパッケージの一覧を更新します。ターミナルを開いて以下のコマンドを入力します。

    $ sudo apt update

    パッケージ更新

    パッケージ一覧からアップデート可能なパッケージを更新します。ターミナルを開いて以下のコマンドを入力します。

    $ sudo apt upgrade

    Dockerインストール

    Dockerをインストールします。ターミナルを開いて以下のコマンドを入力します。

    $ sudo curl -sSL https://get.docker.com | sh

    このコマンドは、Dockerをインストールするためcurlコマンドを使用して、get.docker.comからスクリプトをダウンロードし、そのスクリプトをshコマンドで実行します。スクリプトには、Dockerをインストールするために必要なすべてのパッケージと依存関係が含まれています。

    Dockerバージョンの確認

    インストールしたDockerのバージョンを確認します。ターミナルを開いて以下のコマンドを入力します。

    $ sudo docker -v

    私の環境は以下となりました。

    note@raspberrypi:~ $ sudo docker -v
    Docker version 25.0.3, build 4debf41
    note@raspberrypi:~ $ 

    以上でDockerインストールの説明は終了です。

    YOLOv5のダウンロード

    ターミナルを開き、以下のコマンドを入力してYOLOv5をダウンロードします。

    $ cd Desktop
    $ git clone https://github.com/ultralytics/yolov5.git

    Raspberry Pi 4のデスクトップにyolov5フォルダが作成されます。マシンラーニングコンテナの起動時に、このyolov5フォルダをマウントして使用します。

    以上でYOLOv5のダウンロードの説明は終了です。

    マシンラーニングコンテナのDockerイメージの作成

    マシンラーニングコンテナのDockerイメージを作成します。このDockerイメージにはpython3.8環境にPyTorch、torchivision、OpenCVやYOLOv5に必要なライブラリをプリインストールし、Raspberry Pi 4で起動して実行できるようになります。

    Dockerfileの作成

    Raspberry Pi 4のデスクトップにmlフォルダを新規作成します。そのmlフォルダの中に、Dockerfileとrequirements.txtを作成します。この時点では両ファイルの中身は空です。

    画像
    mlフォルダにDockerfileとrequirements.txtを作成

    Dockerfileを開き、以下のコードをコピーして保存します。このDockerfileのポイントとしては、torchvisionをビルドしていることです。

    torchvisionにはPyTorchに依存するライブラリであるlibtorch等の複数のライブラリが必要であるため、ビルドプロセスを実行してこれらのライブラリをインストールし、torchvisionをビルドします。

     
     

    echo

     
     
    理系の大学生です。エッジコンピュータをメインに趣味レベルで取り組んでいます。Dockerコンテナの扱いはプロフェッショナルです。何もかもDockerコンテナを使用します。

    あなたへのおすすめ