コンピュータービジョンで危険地帯を監視する方法
工事の施工管理する際には、特定の「レッドゾーン」を監視し、人や車両が安全に立ち入れる状態であるかを確認する必要があります。
本ガイドでは、Web ベースのコンピュータービジョンアプリケーション構築ツール「roboflow Workflows」を使用して、レッドゾーン監視ソリューションを構築する方法を紹介します。
このツールでは、指定された区域に進入する人や車両を追跡し、お客様の産業施設内のカメラ映像と連携して動作させることができます。以下に、システムの動作例を示します。
このガイドには付随する YouTube ビデオもあります。
VIDEO
ステップ1: ワークフローを作成する
まず、無料のroboflowアカウントを作成してください。次に、roboflowダッシュボードの左側のサイドバーにある「ワークフロー」をクリックします。「ワークフローを作成」をクリックします。
空のワークフロー エディターが表示され、そこでアプリケーションの構築を開始できます。
ステップ2: モデルを追加する
人や車両を検出するためには、対応するモデルが必要です。本ガイドでは、Microsoft COCOデータセットでトレーニングされたモデルを使用します。このデータセットには、人、車、トラックなどを識別するための情報が含まれています。
「モデルの追加」をクリックし、「オブジェクト検出モデル」を選択します。
使用するモデルを設定できるウィンドウが開きます。
「パブリックモデル」をクリックし、YOLOv8 モデルを選択します。
ここでは、車両や人物などを識別できるCOCOモデルが使用されます。
また、roboflowでトレーニングした独自モデルを使用することも可能です。これは、掘削機やパイプなど、人や車両以外の特定の物体を識別したい場合に便利です。
すでにモデルをトレーニング済みの場合は、「Your Models(モデル)」タブから選択できます。
ステップ3: オブジェクトトラッキングを有効にする
監視するレッドゾーンを定義する前に、前のステップで設定したモデルからの予測結果をもとにオブジェクト追跡を有効化する必要があります。
そのために、「Byte Tracker」ブロックを検索し、ワークフローに追加してください。
監視するレッドゾーンを設定する準備が整いました。
ステップ4:レッドゾーンを作成する
次に、監視対象となる「レッドゾーン」を定義します。これには、「Time in Zone」ブロックを使用します。このブロックは、オブジェクトが指定したゾーン内にどれくらいの時間滞在しているかを追跡する機能です。
ワークフローの「ブロック追加アイコン」をクリックし、「Time in Zone」と検索してブロックを追加してください。
画面右側に設定パネルが開き、レッドゾーンを設定できます。設定パネルの「Set Polygon Zone」ボタンをクリックします。
レッドゾーンを定義できる設定ウィンドウが表示されます。
レッドゾーン監視を正常に機能させるには、カメラを固定された角度で設置する必要があります。
カメラの映像からフレームをアップロードするか、動画をアップロードしてください。
最初のフレームは、ワークフローアプリケーションが自動的に取得します。
次に、ワークフロー上に表示されているフレーム画像をクリックして、監視ゾーン(ポリゴン)を描画します。
描画を完了するには、最後の点をクリックした後、Enterキーを押してポリゴンを確定してください。
上記の手順では、レッドゾーンに対応する4つの辺を持つポリゴンを描画しました。
ステップ5:ラベル付け表示(アノテーター)の追加
現在、ワークフローはゾーン内のオブジェクトを正しく追跡できるようになっています。
しかし、視覚的な出力はまだありません。
ワークフローの結果はJSON形式で出力され、他のシステムとの連携には最適ですが、システムが正常に動作しているかどうかを視覚的に確認できると、さらに安心です。
このレッドゾーン監視システムの結果を視覚化するために、ワークフローの注釈機能を使用します。
ここでは、次の3つの注釈ツールをワークフローに追加します。
1.境界ボックスの表示
2.ポリゴンゾーンの表示
3.ラベルの表示
ポリゴンゾーンの表示を設定する際は、「Time in Zone」ブロックで定義したポリゴンゾーンの座標をコピーして利用してください。
これらをポリゴンゾーン視覚化のゾーンフィールドに貼り付けます。
ラベルの視覚化を設定するときに、テキストを次のように表示するように設定します[Time in Zone]。
これで、ワークフローは次の情報をビデオフィード上に表示するようになりました。
・モデルが検出した人物や車両の位置(境界ボックス)
・定義したポリゴンゾーン
・各オブジェクトがそのゾーン内で滞在した時間
これにより、レッドゾーンへの立ち入り状況を視覚的に確認できるようになります。
ステップ6: ワークフローをテストする
ワークフローを実行するには、次のいずれかの方法を選択する必要があります。
・専用デプロイメント
・roboflow Inference(ローカルマシン上で動作するオープンソースのコンピュータービジョン推論サーバー)
このガイドでは、roboflow Inference(ご自身のハードウェア)でワークフローを実行する方法を紹介します。
まず、「デプロイ」ボタンをクリックし、案内される手順に従って、お使いのコンピューター上で Inference のインストールコマンドを実行してください。
pip install inference
次に、デプロイウィンドウからコードをコピーし、新しいPythonファイルに貼り付けます。コードは以下のようになります。
# Import the InferencePipeline object
from inference import InferencePipeline
import cv2
def my_sink(result, video_frame):
if result.get("label_visualization"): # Display an image from the workflow response
cv2.imshow("Workflow Image", result["label_visualization"].numpy_image)
cv2.waitKey(1)
print(result) # do something with the predictions of each frame
# initialize a pipeline object
pipeline = InferencePipeline.init_with_workflow(
api_key="your-api-key",
workspace_name="your-workspace",
workflow_id="custom-workflow",
video_reference=0, # Path to video, device id (int, usually 0 for built in webcams), or RTSP stream url
max_fps=30,
on_prediction=my_sink
)
pipeline.start() #start the pipeline
pipeline.join() #wait for the pipeline thread to finish
video_reference は、ワークフローに渡す入力情報です。次のいずれかを指定できます。
・ビデオファイル
・ウェブカメラID(通常、デバイスのデフォルトウェブカメラは「0」)
・RTSPストリームのURL
デフォルトのコードでは、output_image という名前の画像を参照していますが、これを label_visualization に置き換えてください。
これが、ワークフローが返す視覚化結果になります。
これで、ワークフローを実行する準備が整いました。
ワークフローを初めて実行する際は、ワークフロー設定や使用するモデルの重みがコンピューターにダウンロードされます。
これには数秒程度かかる場合があります。
その後、ワークフローの出力が次のように表示されます。
指定されたゾーン内で車両や人が過ごす時間を追跡します。
まとめ
これらの手順を実行することで、危険エリア(レッドゾーン)を正確に検出し、作業者の安全性を高める堅牢な監視システムを構築できます。
本ガイドでは、以下の手順について説明しました。
・roboflow を使用したモデルの設定
・監視対象となるレッドゾーンの定義
・リアルタイムのビデオフィードとの統合
さらに、Webベースのコンピュータービジョンアプリケーションビルダーである Roboflow Workflows を使って監視システムを構築し、Inference を用いてご自身のハードウェアへ展開する方法も紹介しました。
このワークフローは、既存のシステムとも連携可能です。例えば、入退室情報を CSVファイルに記録する など、他の業務プロセスと組み合わせて活用することもできます。