roboflowブログ

 roboflow活用事例
Dockerを使用してコンピュータービジョンモデルをRaspberryPiにデプロイする
Dockerを使用してコンピュータービジョンモデルをRaspberryPiにデプロイする
このチュートリアルを進めるには、Raspberry Pi 4 または400が必要です。64ビットのUbuntuオペレーティング システムを実行する必要があります。

Roboflow は、パフォーマンスが最適化されたDockerコンテナーを使用して、カスタムコンピュータービジョンモデルを Raspberry Piデバイスにデプロイすることをサポートしています。RaspberryPiは、価格、サイズ、消費電力、オフライン機能などから、エッジデバイスとしてよく使用されます。これらすべての利点を念頭に置いて、このガイドでは、カスタムコンピュータービジョンモデルをRaspberryPiにデプロイする方法を示します。

この展開方法は、 Roboflow Deployで利用可能なモデルの重みを持つモデルに対してのみ機能します。

データを収集してモデルをトレーニングする
開始するには、Roboflow アカウントを作成してから、ワークスペースとプロジェクトを作成します。プロジェクトにデータを追加するには、次のいずれかまたはすべてを実行できます。

  • 注釈付きデータセットをインポートする
  • Roboflow Universe からプロジェクトを複製する
  • 独自のデータセットにラベルを付ける
次に、データセットバージョンを生成し、モデルをトレーニングします。これらの手順は手短に進んでいますが、データセットの作成に関する段階的なチュートリアルについては、Roboflowクイックスタートガイドを使用できます。

この例では、 Roboflow Universeの「建設」データセットページで見つけた建設現場の安全データセットと事前トレーニング済みのモデルを利用します。互換性のあるデータセット バージョンには緑色のチェックマークが付き、トレーニングで使用されるモデルタイプを示します。

データを収集してモデルをトレーニングする
Docker をインストールする
Raspberry Pi に Docker をインストールするには、まず互換性のあるシステムがあることを確認してから、前提条件をインストールする必要があります。

64 ビット バージョンの Ubuntu を実行するRaspberry Pi 4 (または Raspberry Pi 400) が必要です。互換性のあるシステムを実行していることを確認するには、archRaspberry Pi のコマンドラインに入力し、出力されることを確認しますaarch64。

Raspberry Pi 用の64ビットUbuntuOSをまだインストールしていない場合は、Raspberry Pi Imagerを使用してSDカードまたはブートドライブにセットアップする方法を次に示します。

ラズベリーパイ
Raspberry Pi
  1. Raspberry Pi イメージャーをダウンロード
  2. システムに Raspberry Pi Imager をインストールする
  3. SD カードまたはブート ドライブが、コンピューターまたはラップトップの適切なリムーバブル ストレージの場所に追加されていることを確認します。
  4. Raspberry Pi Imager を起動する
  5. Choose OS-->をクリックしRaspberry Pi OS (Other)、最後に選択しますRaspberry Pi OS (64-Bit)
  6. Choose Storage適切なストレージデバイスをクリックして選択します
  7. クリックWrite
  8. コンピューターまたはラップトップのリムーバブル ストレージの場所から SD カードまたはブート ドライブを取り外します。
次に、こちらの手順に従って、 Raspberry Pi 4 (または Raspberry Pi 400) で Raspberry Pi OS (64 ビット) のセットアップを完了します。

インストール プロセス - オプション 1 (推奨): これは、DockerをRaspberry Piにインストールする最速の方法です。

次に、 Dockerの便利なスクリプトを使用してRaspberry PiにDockerをインストールします。

curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh get-docker.sh
Docker をインストールする
Docker をインストールする
インストール プロセス - オプション 2: この方法は、より長いプロセスです。

コマンドを実行してこれを行いますsudo apt-get install apt-transport-https ca-certificates software-properties-common -y。

ここで、GPG key公式の Docker リポジトリをダウンロードしてシステムに追加します。コマンドでこれを行うことができますcurl -fsSL https://download.docker.com/linux/raspbian/gpg | sudo apt-key add -。

次に、Docker リポジトリを Raspberry Pi のソース リストに追加します。コマンドでこれを行うことができますecho "deb [arch=armhf] https://download.docker.com/linux/raspbian stretch stable" | sudo tee /etc/apt/sources.list.d/docker.list。

最後に、パッケージ データベースを更新し、Docker をインストールします。これを行うには、コマンドsudo apt-get updateとを実行しますsudo apt-get install docker-ce。インストールが完了したら、Raspberry Pi で Docker の使用を開始できます。

Roboflow 推論サーバーをインストールする
推論 API サーバーは、Raspberry Pi 用に最適化および構成された Docker コンテナーとして利用できます。Inference API サーバーをインストールするには、コンテナーをプルします。

sudo docker pull roboflow/inference-server:cpu
このコマンドは、Raspberry Pi の CPU を自動的に検出し、デバイスの正しいデプロイ コンテナーをプルダウンします。

Roboflow 推論サーバーの実行
sudo docker run --net=host roboflow/inference-server:cpu
推論サーバーのインストール: 成功
推論サーバーのインストール: 成功
Raspberry Pi で予測を行うことができるようになりました。Hosted Inference API のドキュメントには、開発を加速するためにいくつかの言語で作成されたコード スニペットが含まれています。

モデルへの最初の推論呼び出しでは、モデルの重みをダウンロードして初期化するのに数秒かかります。最初の推論呼び出しが正常に行われると、 その後の予測はより速く処理されます。

Python SDKの使用
前述のように、Hosted Inference API を使用してモデル予測を受け取るオプションがあります。

別の利用可能なオプションは、Roboflow Python SDKを使用することです。

Roboflow python パッケージをインストールするには、Python 環境または仮想環境をアクティブにして、pip install roboflow.

Roboflow python パッケージを仮想環境にインストールする
Roboflow python パッケージを仮想環境にインストールする
次のコード スニペットを Python.pyファイルに追加します。.txtこれは、メモ帳を使用してファイルとして保存するか、Vim やVSCode.pyなどのコード エディターで行うことができます。

# import the Roboflow Python package
from roboflow import Roboflow

# instantiate the Roboflow object and authenticate with your credentials
rf = Roboflow(api_key="YOUR_PRIVATE_API_KEY")
# load/connect to your project
project = rf.workspace("YOUR_WORKSPACE").project("YOUR_PROJECT")
# load/connect to your trained model
model = project.version(VERSION_NUMBER, local="http://localhost:9001/").model

# perform inference on an image file
prediction = version.model.predict("YOUR_IMAGE.jpg")
# print prediction results in JSON
print(prediction.json())
行を更新し、プライベート API キーYOUR_PRIVATE_API_KEYに置き換えます

Roboflow Universe のモデルの API キーは、タブで利用できますAPI Docs。

建設現場の安全 (Roboflow Universe API ドキュメント)]
建設現場の安全 (Roboflow Universe API ドキュメント)
  • YOUR_WORKSPACE: プロジェクトの に置き換えますworkspace_id。roboflow-universe-projectsこの例では
  • YOUR_PROJECT: プロジェクトの に置き換えますproject_id。construction-site-safetyこの例では
  • VERSION_NUMBER: トレーニング済みモデルの に対応する整数値に置き換えますversion_number。25この例では


.py必要な更新を行った後、ファイルを保存して実行します。たとえば、ファイルの名前が の場合はinfer.py、次のように実行しますpython3 infer.py。

最初の推論: モデルの重みのダウンロードと初期化
最初の推論: モデルの重みのダウンロードと初期化
1つの画像に対するモデル予測の例
1つの画像に対するモデル予測の例
モデルはクライアント サーバー コンテキストとして実行し、ネットワーク上の別のマシンからの推論のために画像を Raspberry Pi に送信できます。

これを行うには、変数の定義を Raspberry Pi のローカル IP アドレスにlocalhost置き換えるだけです。version

Pi パフォーマンスの期待値
Raspberry Pi 400 では 1 秒あたり約 1.3 フレームが見られました。これらの結果は、クライアント サーバー コンテキストで動作しているときに得られたものであり (そのため、多少のネットワーク レイテンシが含まれます)、416x416 モデルを使用しています。

Raspberry Pi がインターネット接続から切断された後でも、モデル コンテナーを使用して予測の処理を続行できます。ただし、これにより、ホストされた画像で予測を実行する機能が削除されます。

Raspberry Pi の電源を切るとコンテナーがシャットダウンするため、Raspberry Pi への電源が失われた場合、または Pi をシャットダウンした場合は、Roboflow 推論サーバーの実行セクションから始まる上記の手順を繰り返して、モデル予測をもう一度処理します。

結論
このチュートリアルに従って、エッジ推論のためにカスタム コンピューター ビジョン モデルを Raspberry Pi にデプロイできるようになりました。

Roboflow を使用してモデルをトレーニングおよびデプロイする利点は、1 行のコードでモデルを変更したり、ターゲットをデプロイしたりできることです。デバイスに Docker コンテナーをインストールしたので、将来のモデルの最適なバージョンを運用アプリケーションにすばやくデプロイできるようになります。

アノテーション・AI学習データ(教師データ)作成・AIモデル構築ツール「roboflow」

お問い合せ

お問い合せはこちら

AI活用の機械学習を自動化するツール「roboflow」についてのご質問・ご相談はこちら

お電話でのお問い合せも受け付けています。お気軽にご相談ください。

03-5821-9761