可視化によるコンピュータービジョンアプリケーションの強化
コンピュータービジョンアプリケーションのデータを、Ultralytics Pythonパッケージを使って分かりやすいグラフに変換し、より有用な知見を得る方法をご紹介します。
Nuvola Ladi10 分で読めます
空港ターミナルや駅からショッピングモールに至るまで、毎分膨大な量のデータが生み出されています。AIの利用が広がるにつれて、その多くが分析、処理されるようになりました。しかし、AIモデルの出力結果からパターンを見つけたり、傾向をひと目で把握したりするのが難しい場合もあります。そこで役立つのがデータ可視化です。複雑な出力を、明確で理解しやすい知見に変換します。
これは、特にコンピュータビジョンのアプリケーションで当てはまります。コンピュータビジョンは、人工知能(AI)の一分野であり、画像や動画など、周囲の世界から得られる視覚情報を機械が解釈し、理解するのを支援します。Ultralytics YOLO11のようなビジョンAIモデルは、こうした視覚データを分析して情報を得るのに役立ちます。一方、データ可視化は、その情報を理解しやすい形式にまとめるのに役立ちます。
簡単に言えば、データ可視化は、意味のある分析グラフを使って生データと実際の理解との隔たりを埋めます。機械がタスクを実行するだけでは不十分であり、データからストーリーを伝える必要があるため、これは重要です。
こうしたストーリーを伝えるニーズが、データ可視化の普及を後押ししています。市場規模は2030年までに183億6,000万ドルに達すると予測されています。以前の記事では、コンピュータービジョンが価値あるビジネスインサイトをもたらす方法を紹介しました。今回はさらに一歩進んで、Ultralyticsパッケージを使い、コンピュータービジョンアプリケーション向けに明確で有用な分析グラフを生成する方法を説明します。

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

図2。分析グラフの例。
コンピュータビジョンのインサイトを得るための分析グラフの生成#
データ可視化とは何か、さまざまな分析グラフが重要な理由を確認したところで、Ultralytics Analyticsソリューションを使って、コンピュータビジョンモデルの予測結果を可視化する方法を詳しく見ていきましょう。手順を追って説明する前に、UltralyticsパッケージやYOLO11などのモデルをトレーニングして使用するためのツールと環境設定を確認しましょう。
Ultralytics Pythonパッケージを使うと、モデルのトレーニング、物体検出、予測の実行、結果の可視化を簡単に行えます。使用を始めるには、コーディング環境が必要です。簡単に利用できる方法を3つ紹介します。
- コマンドラインインターフェース(CLI): コードを実行するコマンドを入力する、基本的なテキストベースのツールです。視覚的なインターフェースはなく、ターミナルやコマンドプロンプトに指示を入力して操作します。
- Jupyter Notebooks: 小さなコードのまとまり(「セル」と呼ばれます)を一度に1つずつ記述、実行、テストできる対話型のコーディング環境です。各セルのすぐ下に結果が表示されるため、何が起きているのかを順を追って理解しやすくなります。学習や実験に特に便利です。
- Google Colab: ウェブブラウザー上で動作する、Jupyter Notebooksの無料クラウド版です。コンピューターにセットアップする必要がなく、処理を高速化するための無料GPUを利用できます。
これらのツールを使えばすぐに使い始められますが、Visual Studio Code(VS Code)などの統合開発環境(IDE)や本番環境のパイプラインにUltralyticsを統合することもできます。その他の選択肢については、公式のUltralyticsドキュメントをご覧ください。
ステップ1: 環境の設定#
使用する環境を選んだら、次は予測を実行して結果を可視化できるようにセットアップします。使い慣れた環境に応じて、上記のいずれの環境も使用できます。
Google Colabを使う場合、デフォルトではCPUが使用されるため、パフォーマンスが低下する可能性があることに注意してください。処理を高速化するには、[ランタイム]メニューから[ランタイムのタイプを変更]を選択し、ハードウェアアクセラレータに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:動画ライターの準備#
次に、出力を保存するための動画ライターを設定します。分析を実行すると、このコード部分によって、元の動画の各フレームから生成された更新済みグラフを記録する新しい動画ファイルが作成されます。
以下のコードスニペットでは、まず入力動画の幅、高さ、フレームレート(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モデル(「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
# モデルと動画を読み込む
model = YOLO('yolo11n.pt')
cap = cv2.VideoCapture('path/to/video.mp4')
assert cap.isOpened(), "Error opening video"
# プロパティを取得する
w, h = int(cap.get(3)), int(cap.get(4))
fps = cap.get(5)
analytics_res = (1280, 720)
# 予測動画と分析動画用のライター
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 = solutions.Analytics(show=True, analytics_type="area", model='yolo11n.pt')
# フレームを処理する
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や物流におけるコンピュータービジョンなどのイノベーションについて詳しく紹介しています。
執筆者
コメント
質問したり、結果を共有したり、ほかの人をサポートしたりできます。










