グリーンチェック
クリップボードにコピーされたリンク

ビジュアライゼーションによるコンピュータ・ビジョン・アプリケーションの強化

Ultralytics Python パッケージを使って、コンピュータビジョンアプリケーションのデータを分かりやすいグラフに変換し、より良い洞察を得る方法を学びます。

空港ターミナルや駅からショッピングモールまで、刻々と膨大な量のデータが生み出されている。AIが広く使われるようになるにつれて、こうしたデータの多くが分析・分解されるようになった。しかし、これらのAIモデルから得られた結果を一目見ただけでは、パターンを発見したり傾向を理解したりするのが難しいこともある。そこで役立つのがデータの可視化で、複雑な出力を明確で消化しやすい洞察に変えることができる。

特にコンピュータ・ビジョンのアプリケーションに関してはそうだ。コンピュータ・ビジョンは 人工知能(AI)の一分野であり、機械が画像や動画など、周囲の世界から得られる視覚情報を解釈・理解するのを助ける。ビジョンAIモデルは Ultralytics YOLO11のようなビジョンAIモデルは、そのような視覚データを分析して情報を得るのに役立ちますが、データの視覚化は、その情報を理解しやすい形式にするのに役立ちます。

簡単に言えば、データ・ビジュアライゼーションは、意味のある分析グラフを使用することで、生データと実際の理解とのギャップを埋めるものである。今日のデータ主導の世界では、機械がタスクを実行するだけでは不十分であり、ストーリーを語る必要があるため、これは重要な鍵となる。

データ・ビジュアライゼーションは、2030年までに183億6000万ドルに達すると言われている。前回は、コンピュータ・ビジョンがどのように価値あるビジネス・インサイトを提供できるかを探りました。今日は、さらに一歩進んで、Ultralytics パッケージを使って、コンピュータ・ビジョン・アプリケーションのための明確で洞察に満ちた分析グラフを作成する方法を説明します。さっそく始めましょう!

図1.YOLO11出力に基づくデータの可視化例。

コンピュータ・ビジョン・アプリケーションにおけるデータ可視化の概要

コンピュータビジョンアプリケーションにおけるデータ可視化とは、物体検出や追跡などのコンピュータビジョンタスクの結果を、分かりやすいグラフやダッシュボードに変換することです。これらのビジュアルは、特に大量のビデオ映像を扱う場合に、パターンや傾向を特定するのに役立ちます。 

例えば、監視カメラの映像を何時間も手作業で見直す代わりに、検出された車や人の数を経時的に示すシンプルな折れ線グラフを使えば、ピーク時間帯や異常に静かな時間帯を素早く強調することができる。

データの可視化が有用である主な理由をいくつか挙げてみよう:

  • 複雑なデータを簡素化:何千もの物体検出は圧倒されることがありますが、棒グラフや円グラフのような視覚化によって、どの物体が最も頻繁に現れるかなど、全体像を簡単に把握することができます。
  • 傾向を明らかにする:折れ線グラフや棒グラフは、いつ、どこで人の往来が増える傾向があるかなど、経時的なパターンを特定するのに役立ちます。
  • 時間の節約:映像のすべてのフレームを確認する代わりに、チャートは、車両活動の突然の急増や、制限区域での異常な物体の出現など、重要な詳細をすばやく強調することができます。
  • コミュニケーションの向上:ビジュアルは、非技術的な聴衆との洞察の共有を容易にし、誰もが結果をより明確に理解できるようにします。

さまざまなタイプのデータ視覚化

様々なタイプの分析グラフは、コンピュータ・ビジョンの結果を明確で理解しやすいビジュアルに変えることができます。例えば、監視カメラの映像から人や車を検出するコンピュータビジョンアプリケーションを開発しているとしましょう。この場合、折れ線グラフは、一日の人通りのピークを追跡するように、検出数が時間とともにどのように変化するかを示すのに最適です。

同様に、棒グラフは、検出されたさまざまな種類のオブジェクトの数を比較したい場合に役立ちます。例えば、ビデオに車、バイク、歩行者のどちらが多く映っているかを確認することができます。一方、円グラフは、各オブジェクトタイプが全体の検出数に占める割合を示します。それぞれのグラフには用途があり、複雑なコンピュータビジョンデータの解釈や共有を容易にします。

図2.分析グラフの例。

コンピュータ・ビジョンの洞察を得るための分析グラフの生成

データ可視化とは何か、なぜ様々なタイプの分析グラフが重要なのかを探ったところで、Ultralytics Analyticsソリューションを使ってコンピュータビジョンモデルの予測結果を可視化する方法を詳しく見ていきましょう。ステップバイステップのプロセスを説明する前に、Ultralytics パッケージとYOLO11ようなモデルをトレーニングして使用するためのツールとセットアップオプションを見てみましょう。 

Ultralytics Python パッケージは、モデルのトレーニング、オブジェクトの検出、予測の実行、結果の視覚化を簡単に行うことができます。使い始めるには、コーディング環境が必要です。ここでは3つの簡単なオプションを紹介します:

  • コマンドライン・インターフェイス(CLI):基本的なテキストのみのツールで、コマンドを入力してコードを実行します。CLIには視覚的なインターフェイスはなく、ターミナルやコマンドプロンプトに命令を打ち込んで操作する。
  • ジュピター・ノートブック:小さなコードの塊(「セル」と呼ばれる)を一度に書き、実行し、テストすることができるインタラクティブなコーディング環境です。各セルの下に結果が直接表示されるので、何が起こっているのかを段階的に理解しやすい。学習や実験に特に便利です。
  • Google :このオプションは、ウェブブラウザ上で動作する無料のクラウドベースのJupyter Notebooksです。コンピュータ上でセットアップする必要がなく、高速処理のためのGPUを無料で利用できる。

これらのツールはすぐに使い始めるのに最適ですが、ユーザーはUltralytics Visual Studio Code(VS Code)のような統合開発環境(IDE)に統合したり、本番パイプラインに統合することもできます。詳しいオプションについては、Ultralytics 公式ドキュメントをご覧ください。

ステップ1:環境のセットアップ

お好みの環境を選んだら、次のステップは、予測を実行し結果を視覚化するためのセットアップです。上記の環境は、あなたが最も使いやすいものに応じて、どれでも使うことができる。

Google Colabで作業する場合、デフォルトではCPU 使用するため、パフォーマンスが低下する可能性があることに留意してください。スピードアップするには、"Runtime "メニューから "Change runtime type "を選択し、ハードウェアアクセラレータをGPU (理想的にはT4)に設定してGPU ください。

環境を整えるには、以下のコマンドを使ってUltralytics Python パッケージをインストールする必要がある。ColabやJupyterのようなノートブックベースのツールでは、コマンドの前に感嘆符(!)

pip install ultralytics

ステップ 2: ビデオファイルのダウンロード

次に、作業用の動画が必要だ。Pexelsのような無料のストックサイトから簡単にダウンロードできる。YOLO11 検出できるオブジェクトが含まれているビデオを選ぶようにしてください。このモデルはCOCOデータセットで事前学習されているので、人、車、自転車などの一般的な物体を認識できる。 

このチュートリアルでは、混雑した空港ターミナルでの手荷物処理のビデオを使います。同じビデオを使っても、あなたのプロジェクトに合った別のビデオを選んでもかまいません。

図3.空港ターミナルで手荷物を扱う様子を映した入力映像の1フレーム。

ステップ3:パッケージのインポート

次に、必要なライブラリをインポートし、入力ビデオをロードする。

まずOpenCV (cv2)をインポートします。OpenCVはコンピュータ・ビジョンで画像やビデオを扱うために広く使われているライブラリです。また、Ultralytics ライブラリもインポートします。これは、オブジェクト検出を実行し、ビデオから分析を生成するのに役立ちます。

次に、ビデオファイルのパスを指定して開いてみます。path/to/video.mp4」は、ダウンロードした動画ファイルの実際の場所に置き換えてください。 

また、以下のコード・スニペットには、ビデオが正しく読み込まれるかどうかを確認する簡単なチェックが含まれています。パスが間違っていたり、ファイルが壊れていたりすると、プログラムは停止してエラーメッセージを表示します:"ビデオファイルの読み込みエラー"

import cv2

from ultralytics import solutions

cap = cv2.VideoCapture("path/to/video.mp4")
assert cap.isOpened(), "Error reading video file"

ステップ4:ビデオライターの準備

次に、出力を保存するビデオライターをセットアップします。アナリティクスを実行すると、コードのこの部分は、元のビデオの各フレームから生成された更新されたグラフを記録する新しいビデオファイルを作成します。

以下のコードでは、まず入力動画から主要なプロパティである幅、高さ、fps(frames per second)を抽出します。これらの値は動画から直接取得され、出力を書き出すために正しい形式であることを確認するために整数に変換されます。

次に、cv2.VideoWriter 関数を使用して、"analytics_output.avi" という名前の新しいビデオファイルを作成します(必要に応じて名前を変更できます)。ビデオは、一般的なビデオ圧縮方式である MJPG フォーマットで保存されます。出力解像度は、元の動画のサイズに関係なく、1280×720ピクセルに設定されます。

w, h, fps = (int(cap.get(x)) for x in (cv2.CAP_PROP_FRAME_WIDTH, cv2.CAP_PROP_FRAME_HEIGHT, cv2.CAP_PROP_FPS))
out = cv2.VideoWriter(
    "analytics_output.avi",
    cv2.VideoWriter_fourcc(*"MJPG"),
    fps,
    (1280, 720), 
)

ステップ 5:Ultralytics Analytics ソリューションのセットアップ

次に、動画からグラフを生成するために、Ultralytics Analyticsソリューションを設定します。折れ線グラフ、円グラフ、エリアグラフ、棒グラフなど、データの表示方法と、使用するYOLO モデルを選択できます。この例では、軽量の「yolo11n.pt」モデルを使用し、結果を面積グラフで表示します。

analytics = solutions.Analytics(
    show=True, 
    analytics_type="area", 
    model="yolo11n.pt",   
)

ステップ6:入力映像の処理

コードの最後の部分は、ビデオを1フレームずつ処理するループを実行する。各フレームは分析ツールに渡され、分析ツールはリアルタイムでグラフを更新する。更新されたグラフは出力ビデオに書き込まれる。フレームが読み取れない場合、ループは停止する。すべてのフレームが処理された後、ビデオは保存され、開いているウィンドウは閉じられます。

frame_count = 0
while cap.isOpened():
    success, im0 = cap.read()
    if success:
        frame_count += 1
        results = analytics(im0, frame_count) 

        out.write(results.plot_im) 
    else:
        break
cap.release()
out.release()
cv2.destroyAllWindows() 

ステップ7:すべてをまとめる

最後に、すべてをまとめてみよう。1つはYOLO11 オブジェクト検出結果をバウンディングボックスとラベルで表示したもの、もう1つはリアルタイム分析グラフを表示したものだ。

そのために、2つのVideoWriterインスタンスをセットアップします。1つは予測ビデオを保存するため、もう1つは分析用です。このバージョンのコードには、オブジェクト追跡とグラフ生成の両方が含まれており、視覚的な洞察と一緒に検出結果を見ることができます。

以下は、包括的なコードと、予測および分析出力の例である。

import cv2
from ultralytics import YOLO, solutions

# Load model and video
model = YOLO('yolo11n.pt')
cap = cv2.VideoCapture('path/to/video.mp4')
assert cap.isOpened(), "Error opening video"

# Get properties
w, h = int(cap.get(3)), int(cap.get(4))
fps = cap.get(5)
analytics_res = (1280, 720)

# Writers for prediction and analytics videos
out_pred = cv2.VideoWriter('output_predictions.avi', cv2.VideoWriter_fourcc(*'MJPG'), fps, (w, h))
out_ana = cv2.VideoWriter('output_analytics.avi', cv2.VideoWriter_fourcc(*'MJPG'), fps, analytics_res)

# Analytics setup
analytics = solutions.Analytics(show=True, analytics_type="area", model='yolo11n.pt')

# Process frames
frame_count = 0
while cap.isOpened():
    ret, frame = cap.read()
    if not ret:
        break

    frame_count += 1
    pred_frame = model.track(frame, persist=True)[0].plot()
    out_pred.write(pred_frame)

    resized = cv2.resize(pred_frame, analytics_res)
    out_ana.write(analytics(resized, frame_count).plot_im)

cap.release(), out_pred.release(), out_ana.release(), cv2.destroyAllWindows()

上記のコードが正常に実行されると、2つの出力ビデオが生成される。output_predictions.avi "はバウンディングボックスとラベル付きのオブジェクト検出結果を表示し、"output_analytics.avi "は検出結果に基づいたリアルタイム分析グラフを表示します。

図4.output_predictions.avi」ファイルの1フレーム。

これは予測に基づく分析出力からのフレームです。エリアチャートを使用することで、スーツケースの数の時間的な変動、例えば268フレーム付近のスパイクのような洞察を得ることができます。

図5.面積グラフとして可視化されたYOLO11 予測。

実世界のコンピュータ・ビジョン・アプリケーションにおけるグラフの使用

ここでは、データの可視化が重要な影響を与える、実際のコンピュータ・ビジョン・アプリケーションをいくつか紹介します:

  • ヘルスケア:コンピュータ・ビジョン・システムは、患者の動き、スタッフの動き、機器の使用状況をリアルタイムで監視することができます。これにより、大量の視覚データが生成され、視覚化することで、患者の稼働ピーク時間や対応の遅れなどのパターンを明らかにすることができます。
  • 小売業とeコマース:ビジョンAIは、顧客の動き、棚の前での滞留時間、商品とのインタラクションを追跡するために使用できます。棒グラフや円グラフのような視覚的分析により、どの店舗ゾーンや商品が最も注目されているかを強調することができるため、小売業者は商品の配置を最適化し、コンバージョンを向上させることができます。
  • 製造業コンピュータビジョンモデルを搭載したカメラで、組立ラインの欠陥、安全違反、設備状態を監視できます。データを可視化することで、最も一般的な欠陥の種類の傾向を示したり、エラー率の高い時間帯を強調表示したりすることができ、迅速な意思決定や予防保全が可能になります。

要点

Ultralytics パッケージを使用すると、ビデオ映像を鮮明で洞察力のあるグラフに簡単に変換することができます。何時間ものビデオを手作業で確認する代わりに、主要なパターンや傾向を強調する視覚的なサマリーを生成できるため、迅速な対応が容易になります。病院、小売店、製造施設のいずれにおいても、これらのグラフは、複雑なAI出力を、誰もが理解し利用できる洞察に変えます。

AIについてもっと知りたいですか?GitHubリポジトリを探索し、私たちのコミュニティとつながり、あなたのコンピュータビジョンプロジェクトをジャンプスタートするためのライセンスオプションをチェックしてください。製造業におけるAIや 物流業界におけるコンピュータビジョンなどのイノベーションについては、ソリューションページをご覧ください。

リンクトインのロゴツイッターのロゴFacebookのロゴコピー・リンク・シンボル

このカテゴリの続きを読む

AIの未来
を一緒に作りましょう!

機械学習の未来への旅を始めよう