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

空港ターミナルや鉄道駅、ショッピングモールなどでは、毎分膨大な量のデータが生成されています。AIの利用が広がるにつれ、現在ではその多くが分析・分解されています。しかし、AIモデルによる結果は、パターンを見つけたり、傾向を一目で理解したりすることを難しくする場合があります。そこで役立つのがデータ可視化です。複雑な出力を、明確で理解しやすいインサイトに変換します。
これは、コンピュータービジョンアプリケーションに特に当てはまります。コンピュータービジョンは、人工知能 (AI)の一分野であり、画像や動画など、周囲の世界から得られる視覚情報を機械が解釈・理解できるようにします。Ultralytics YOLO11のようなビジョンAIモデルは、このような視覚データを分析して情報を得るのに役立ちます。一方、データ可視化は、その情報を理解しやすい形式に整理するのに役立ちます。
簡単に言えば、データ可視化は意味のある分析グラフを使って、生データと真の理解の間にあるギャップを埋めます。データ主導の今日の世界では、これは重要です。機械が単にタスクを実行するだけでは不十分で、機械からストーリーを伝えてもらう必要があるためです。
このようなストーリーテリングのニーズが、まさにデータ可視化の普及を後押ししています。市場規模は2030年までに$18.36 billionに達すると見込まれています。以前は、コンピュータービジョンが価値あるビジネスインサイトを提供する方法を紹介しました。今回はさらに一歩進み、Ultralyticsパッケージを使ってコンピュータービジョンアプリケーション向けの明確で有益な分析グラフを生成する方法を順に説明します。さっそく始めましょう。

図1。YOLO11の出力に基づくデータ可視化の例です。
コンピュータービジョンアプリケーションにおけるデータ可視化の概要#
コンピュータービジョンアプリケーションにおけるデータ可視化では、オブジェクト検出やトラッキングなどのコンピュータービジョンタスクの結果を、理解しやすいチャートやダッシュボードに変換します。これらのビジュアルにより、特に大量の動画を扱う場合に、パターンや傾向を特定しやすくなります。
たとえば、監視動画を何時間も手作業で確認する代わりに、時間経過に伴って検出された車や人の数を示すシンプルな折れ線グラフを使えば、ピーク時間帯や通常よりも人通りが少ない時間帯をすぐに把握できます。
データ可視化が有用である主な理由は次のとおりです。
-
複雑なデータを簡略化: 数千件のオブジェクト検出結果は圧倒されることがありますが、棒グラフや円グラフなどの可視化により、たとえばどのオブジェクトが最も頻繁に現れるかなど、全体像を把握しやすくなります。
-
傾向を明らかにする: 折れ線グラフや棒グラフにより、歩行者の通行量がいつ、どこで増加しやすいかなど、時間経過に伴うパターンを特定できます。
-
時間を節約: 動画のすべてのフレームを確認する代わりに、チャートを使って、車両の活動が急増した箇所や、立入制限区域で通常とは異なるオブジェクトが現れた箇所など、重要な詳細をすばやく把握できます。
-
コミュニケーションを改善: ビジュアルを使うと、技術者ではない人にもインサイトを共有しやすくなり、全員が結果をより明確に理解できます。
データ可視化の種類#
さまざまな種類の分析グラフにより、コンピュータービジョンの結果を明確で理解しやすいビジュアルに変換できます。人や車両を監視映像から検出するコンピュータービジョンアプリケーションを開発しているとします。この場合、折れ線グラフは、1日の歩行者通行量のピークを追跡するなど、時間経過に伴う検出数の変化を示すのに適しています。
同様に、棒グラフは、検出されたさまざまなオブジェクトタイプの数を比較したい場合に役立ちます。たとえば、動画内で車、自転車、歩行者のどれが多く現れるかを確認できます。一方、円グラフは、各オブジェクトタイプが検出総数に占める割合を示します。各グラフにはそれぞれ用途があり、複雑なコンピュータービジョンデータを解釈して共有しやすくします。

図2。分析グラフの例です。
コンピュータービジョンのインサイトを得るための分析グラフの生成#
ここまで、データ可視化とは何か、またさまざまな種類の分析グラフが重要である理由を確認しました。次に、Ultralytics Analyticsソリューションを使って、コンピュータービジョンモデルの予測結果を可視化する方法を詳しく見ていきましょう。手順を説明する前に、UltralyticsパッケージやYOLO11などのモデルをトレーニングして使用するためのツールとセットアップの選択肢を確認します。
Ultralytics Pythonパッケージを使うと、モデルのトレーニング、オブジェクトの検出、予測の実行、結果の可視化を簡単に行えます。利用を開始するには、コーディング環境が必要です。ここでは、3つの簡単な選択肢を紹介します。
-
コマンドラインインターフェース (CLI): コマンドを入力してコードを実行する、基本的なテキスト専用ツールです。ビジュアルインターフェースはなく、ターミナルやコマンドプロンプトに指示を入力して操作します。
-
Jupyter Notebooks: コードの小さなまとまり(「セル」と呼ばれます)を一度に1つずつ記述、実行、テストできるインタラクティブなコーディング環境です。各セルの直下に結果が表示されるため、何が起きているかを手順ごとに理解しやすくなります。学習や実験に特に便利です。
-
Google Colab: Webブラウザー上で動作する、無料のクラウドベース版Jupyter Notebooksです。コンピューターでのセットアップは不要で、処理を高速化するための無料GPUを利用できます。
これらのツールはすぐに使い始めるのに適していますが、Visual Studio Code (VS Code)などの統合開発環境 (IDE)や本番パイプラインにUltralyticsを統合することもできます。その他の選択肢については、公式のUltralyticsドキュメントをご覧ください。
ステップ1: 環境のセットアップ#
環境を選択したら、次のステップは予測の実行と結果の可視化に向けてセットアップすることです。最も使いやすい環境に応じて、上記のいずれの環境でも使用できます。
Google Colabを使用する場合、デフォルトではCPUが使われるため、パフォーマンスが低下する可能性があることに注意してください。高速化するには、"Runtime"メニューから"Change runtime type"を選択し、ハードウェアアクセラレーターをGPU(できればT4)に設定します。
環境を準備するには、以下に示すコマンドを使ってUltralytics Pythonパッケージをインストールします。ColabやJupyterなどのノートブックベースのツールでは、コマンドの前に感嘆符(!)を追加してください。
pip install ultralyticsステップ2: 動画ファイルのダウンロード#
次に、作業に使用する動画が必要です。Pexelsなどの無料ストックサイトから簡単にダウンロードできます。Ultralytics YOLO11が検出できるオブジェクトを含む動画を選択してください。モデルはCOCOデータセットで事前トレーニングされているため、人、車、自転車などの一般的なオブジェクトを認識できます。
このチュートリアルでは、混雑した空港ターミナルでの手荷物取り扱いを撮影した動画を使用します。同じ動画を使用しても、プロジェクトに合った別の動画を選択しても構いません。

図3. 空港ターミナルでの手荷物取り扱いを示す入力動画のフレームです。
ステップ3: パッケージのインポート#
次に、必要なライブラリをインポートし、入力動画を読み込みます。
まず、コンピュータービジョンで画像や動画を扱うために広く使用されているライブラリ、OpenCV (cv2)をインポートします。また、動画からオブジェクト検出を実行し、分析を生成するのに役立つUltralyticsライブラリもインポートします。
次に、パスを指定して動画ファイルを開きます。"path/to/video.mp4"を、ダウンロードした動画ファイルの実際の場所に置き換えてください。
また、以下のコードスニペットには、動画が正しく読み込まれたことを確認する簡単なチェックが含まれています。パスが間違っているかファイルが破損している場合、プログラムは停止し、"Error reading video file."というエラーメッセージを表示します。
import cv2
from ultralytics import solutions
cap = cv2.VideoCapture("path/to/video.mp4")
assert cap.isOpened(), "Error reading video file"ステップ4: ビデオライターの準備#
次に、出力を保存するためのビデオライターをセットアップします。分析を実行すると、このコード部分によって新しい動画ファイルが作成され、元の動画の各フレームから生成された更新済みグラフが記録されます。
以下のコードスニペットでは、まず入力動画の主要なプロパティ、つまり幅、高さ、1秒あたりのフレーム数 (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: すべてを統合する#
最後に、すべてを統合します。数行のコードを追加するだけで、2つの出力動画を生成できます。1つはバウンディングボックスとラベル付きのUltralytics 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”ファイルのフレームです。
これは、予測結果に基づく分析出力のフレームです。面グラフを使用すると、時間経過に伴うスーツケース数の変動などのインサイトを得られます。たとえば、フレーム268付近の急増から、その動画部分でスーツケースの移動や活動があったことが分かります。

図5. 面グラフとして可視化したUltralytics YOLO11の予測結果です。
実際のコンピュータービジョンアプリケーションでのグラフの活用#
データ可視化が大きな効果をもたらす、実際のコンピュータービジョンアプリケーションの例を以下に示します。
-
ヘルスケア: コンピュータービジョンシステムは、患者の活動、スタッフの動き、機器の使用状況をリアルタイムで監視できます。これにより大量の視覚データが生成され、可視化することで、患者数がピークに達する時間帯や対応の遅延などのパターンを明らかにできます。
-
小売・Eコマース: ビジョンAIを使って、顧客の動き、棚の前での滞在時間、商品とのインタラクションを追跡できます。棒グラフや円グラフなどのビジュアル分析により、最も注目を集めている店舗エリアや商品を明らかにできるため、小売業者は商品配置を最適化し、コンバージョンを向上できます。
-
製造: コンピュータービジョンモデルを搭載したカメラで、組立ラインの欠陥、安全規則違反、機器の状態を監視できます。データ可視化により、最も一般的な欠陥タイプの傾向を示したり、エラー率が最も高い時間帯を明らかにしたりできるため、より迅速な意思決定と予防保全につながります。
主なポイント#
Ultralyticsパッケージを使うと、動画映像を明確で有益なグラフに簡単に変換し、時間経過に伴って何人の人やオブジェクトが現れるかなど、状況を明らかにできます。動画を何時間も手作業で確認する代わりに、主要なパターンや傾向を強調したビジュアルサマリーを生成できるため、迅速に対応しやすくなります。病院、小売店、製造施設のいずれであっても、これらのグラフによって複雑なAI出力が、誰でも理解して活用できるインサイトに変わります。
AIについてさらに学びたい方は、GitHubリポジトリをご覧いただき、コミュニティに参加し、ライセンスオプションをご確認のうえ、コンピュータービジョンプロジェクトを始めてください。製造業におけるAIや物流業界におけるコンピュータービジョンなどのイノベーションについては、ソリューションページをご覧ください。









