ヨロビジョン深圳
深セン
今すぐ参加

視覚化によるコンピュータビジョンアプリケーションの強化

Nuvola Ladi

4分で読めます

2025年5月12日

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

空港ターミナルや駅、ショッピングモールなど、毎分膨大な量のデータが生成されています。 AIの利用が広がるにつれて、これらのデータの多くが分析され、細分化されるようになりました。 しかし、これらのAIモデルからの結果は、パターンを特定したり、傾向を一目で理解したりすることを困難にする場合があります。 そこで役立つのがデータ視覚化です。データ視覚化は、複雑な出力を明確で理解しやすい洞察に変えます。

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

簡単に言うと、データ視覚化は、意味のある分析グラフを使用することで、生データと実際の理解との間のギャップを埋めます。今日のデータ駆動型の世界では、これは非常に重要です。なぜなら、機械がタスクを実行するだけでは十分ではなく、ストーリーを語る必要があるからです。

ストーリーテリングのニーズこそが、データ視覚化が台頭している理由であり、市場は2030年までに183.6億ドルに達すると予測されています。以前、コンピュータビジョンがどのように貴重なビジネスインサイトを提供できるかを探りました。今回はさらに一歩進んで、Ultralyticsパッケージを使用して、コンピュータビジョンアプリケーション向けの明確で洞察に満ちた分析グラフを生成する方法を説明します。それでは始めましょう!

Fig 1. YOLO11からの出力に基づいてデータを可視化する例。

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

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

例えば、何時間もの監視ビデオを手動で確認する代わりに、時間経過とともに検出された車や人の数を表示する単純な折れ線グラフを使用することで、ピーク時や異常に静かな時間帯をすばやく特定できます。

データ可視化が役立つ主な理由をいくつかご紹介します。

  • 複雑なデータを簡素化します: 何千ものオブジェクト検出は圧倒される可能性がありますが、棒グラフや円グラフのような視覚化により、たとえば、どのオブジェクトが最も頻繁に表示されるかなど、全体像を把握しやすくなります。
  • トレンドを明らかにする: 折れ線グラフと棒グラフは、歩行者の交通量が増加する時期や場所など、時間の経過に伴うパターンを特定するのに役立ちます。
  • 時間の節約: ビデオのすべてのフレームを確認する代わりに、グラフは、車両活動の急上昇や、制限区域での異常なオブジェクトの出現など、重要な詳細をすばやく強調表示できます。
  • コミュニケーションの改善:視覚的な表現により、専門知識を持たない人々とも洞察を共有しやすくなり、誰もが結果をより明確に理解できるようになります。

さまざまな種類のデータ視覚化

さまざまな種類の分析グラフを使用すると、コンピュータビジョンの結果を明確で理解しやすいビジュアルに変換できます。たとえば、監視映像内の人や車両を検出するコンピュータビジョンアプリケーションに取り組んでいるとします。この場合、折れ線グラフは、1日を通して歩行者の交通量のピークを追跡するなど、検出数の時間的変化を示すのに最適です。

同様に、棒グラフは、ビデオに表示される車、自転車、歩行者の数など、検出されたさまざまなオブジェクトタイプの数を比較する場合に役立ちます。一方、円グラフは、各オブジェクトタイプが検出全体の何パーセントを占めるかを示します。各グラフには独自の用途があり、複雑なコンピュータビジョンデータを解釈および共有しやすくするのに役立ちます。

Fig 2. 分析グラフの例。

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

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

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

  • コマンドラインインターフェース(CLI):これは、コマンドを入力してコードを実行できる基本的なテキスト専用ツールです。視覚的なインターフェースはなく、ターミナルまたはコマンドプロンプトに指示を入力して操作します。
  • Jupyter Notebooks: コードの小さな塊(「セル」と呼ばれる)を一度に1つずつ記述、実行、テストできるインタラクティブなコーディング環境です。各セルの真下に結果が表示されるため、何が起こっているかを段階的に理解しやすくなっています。学習や実験に特に役立ちます。
  • Google Colab: これは、ウェブブラウザで実行されるJupyter Notebookの無料のクラウドベースバージョンです。コンピュータにセットアップは不要で、高速処理のために無料のGPUにアクセスできます。

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

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

好みの環境を選択したら、次のステップは、予測を実行して結果を視覚化するためのセットアップです。最も使い慣れている環境に応じて、上記のいずれかの環境を使用できます。

Google Colabを使用している場合、デフォルトではCPUが使用されるため、パフォーマンスが低下する可能性があることに注意してください。処理を高速化するには、[ランタイム]メニューに移動し、[ランタイムタイプを変更]を選択して、ハードウェアアクセラレータをGPU(理想的にはT4)に設定してGPUに切り替えます。

環境を準備するには、以下に示すコマンドを使用してUltralytics Pythonパッケージをインストールする必要があります。ColabやJupyterなどのノートブックベースのツールでは、コマンドの前に必ず感嘆符(!)を追加してください。

pip install ultralytics

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

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

このチュートリアルでは、混雑した空港ターミナルでの手荷物処理のビデオを使用します。同じビデオを使用することも、プロジェクトに合った別のビデオを選択することもできます。

Fig 3. 空港ターミナルでの手荷物処理を示す入力動画のフレーム。

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

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

まず、コンピュータビジョンで画像や動画を扱うためによく使用されるライブラリであるOpenCV(cv2)をインポートします。また、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)などの主要なプロパティを抽出します。これらの値はビデオから直接取得され、出力の書き込みに適した形式にするために整数に変換されます。

次に、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: 全体の統合

最後に、すべてをまとめましょう。ほんの数行の追加コードで、YOLO11の物体検出の結果をバウンディングボックスとラベルで示す動画と、リアルタイムの分析グラフを示す動画の2つの出力動画を生成できます。

これを行うために、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」ファイルからのフレーム。

これは、予測に基づいた分析出力のフレームです。エリアチャートを使用すると、268フレーム付近の急上昇など、時間経過に伴うスーツケース数の変動といった洞察が得られ、ビデオのその部分におけるスーツケースの動きや活動を示唆します。

図5:YOLO11の予測を面グラフとして可視化。

現実世界のコンピュータビジョンアプリケーションでのグラフの使用

以下に、データ可視化が大きな影響を与える、現実世界のコンピュータビジョンアプリケーションの例をいくつか紹介します。

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

主なポイント

Ultralyticsパッケージを使用すると、ビデオ映像を、時間経過とともに表示される人やオブジェクトの数を追跡するなど、何が起こっているかを明らかにする明確で洞察力に富んだグラフに簡単に変換できます。何時間ものビデオを手動で確認する代わりに、主要なパターンと傾向を強調する視覚的な要約を生成し、迅速な対応を容易にすることができます。病院、小売店、製造施設など、これらのグラフは複雑なAI出力を誰もが理解して使用できる洞察に変えます。

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

AIの未来を
共に築きましょう!

未来の機械学習で、新たな一歩を踏み出しましょう。

無料ではじめる
クリップボードにコピーしました