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

空港のターミナルや駅、ショッピングモールに至るまで、毎分膨大な量のデータが生成されています。AIの普及に伴い、こうしたデータの多くが分析・分解されるようになりました。しかし、AIモデルの結果からは、パターンを見つけたり傾向を瞬時に理解したりすることが難しい場合があります。そこでデータ可視化が役立ちます。複雑な出力を明確で理解しやすいインサイトに変換してくれるのです。
これは、コンピュータービジョンアプリケーションにおいて特に顕著です。コンピュータービジョンは、画像や動画といった周囲の世界から視覚情報を解釈・理解できるよう機械を支援する人工知能 (AI)の分野です。Ultralytics YOLO11のようなビジョンAIモデルは、こうした視覚データを分析して情報を得るのに役立ちますが、データ可視化は、その情報を理解しやすい形式に整理するために役立ちます。
簡単に言えば、データ可視化は意味のある分析グラフを用いることで、生データと真の理解との間のギャップを埋めるものです。今日のデータ駆動型の世界では、機械が単にタスクを実行するだけでは不十分であり、機械に「ストーリー」を語らせる必要があるため、これが極めて重要となります。
このストーリーテリングへのニーズこそが、データ可視化が普及している理由であり、市場規模は2030年までに183.6億ドルに達すると予測されています。以前、コンピュータービジョンがどのように価値あるビジネスインサイトを提供できるかについて検討しました。今回は一歩進んで、Ultralyticsパッケージを使用してコンピュータービジョンアプリケーション向けの明確で洞察に満ちた分析グラフを生成する方法を解説します。早速始めましょう!

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

図2。分析グラフの例。
Link to this sectionコンピュータービジョンのインサイトを得るための分析グラフの生成#
データ可視化とは何か、なぜ様々な分析グラフが重要なのかを探ってきたところで、次はUltralytics Analyticsソリューションを使用して、コンピュータービジョンモデルの予測結果を可視化する方法を詳しく見ていきましょう。ステップバイステップのプロセスの前に、UltralyticsパッケージやYOLO11のようなモデルをトレーニングおよび使用するためのツールとセットアップオプションを確認します。
Ultralytics Pythonパッケージを使用すると、モデルのトレーニング、物体検出、予測の実行、結果の可視化が容易になります。これを使用するにはコーディング環境が必要です。以下に3つのシンプルな選択肢を紹介します:
-
コマンドラインインターフェース (CLI): これは、コマンドを入力してコードを実行するための基本的なテキストのみのツールです。視覚的なインターフェースはなく、ターミナルやコマンドプロンプトに命令を入力して操作します。
-
Jupyter Notebooks: これは、一度に小さなコードブロック(「セル」と呼びます)を記述、実行、テストできる対話型コーディング環境です。結果が各セルのすぐ下に表示されるため、ステップバイステップで何が起こっているかを理解しやすくなっています。学習や実験に特に便利です。
-
Google Colab: これは、ウェブブラウザ上で実行されるJupyter Notebooksのクラウドベース無料版です。コンピューターへのセットアップは不要で、より高速な処理のために無料のGPUにアクセスできます。
これらのツールは素早く開始するのに最適ですが、ユーザーはUltralyticsをVisual Studio Code (VS Code)のような統合開発環境 (IDE) や本番環境のパイプラインに統合することも可能です。その他のオプションについては、公式のUltralyticsドキュメントをご覧ください。
Link to this sectionステップ 1: 環境のセットアップ#
好みの環境を選択したら、次のステップは予測の実行と結果の可視化に向けて環境を準備することです。最も使い慣れた環境に応じて、上記のいずれの環境でも使用できます。
Google Colabを使用する場合、デフォルトではCPUが使用されるため、パフォーマンスが低下する可能性があることに注意してください。速度を上げるには、「ランタイム」メニューから「ランタイムのタイプを変更」を選択し、ハードウェアアクセラレータをGPU(理想的にはT4)に設定します。
環境を準備するには、以下のコマンドを使用してUltralytics Pythonパッケージをインストールする必要があります。ColabやJupyterのようなノートブック形式のツールでは、コマンドの前に感嘆符 (!) を付けることを忘れないでください。
pip install ultralyticsLink to this sectionステップ2: 動画ファイルのダウンロード#
次に、作業用の動画が必要です。Pexelsのような無料のストック素材サイトから簡単にダウンロードできます。YOLO11が検出できる物体が含まれている動画を選択してください。モデルはCOCOデータセットで事前トレーニングされているため、人、車、自転車などの一般的な物体を認識できます。
このチュートリアルでは、混雑した空港のターミナルにおける手荷物取り扱いの動画を使用します。同じ動画を使用することも、プロジェクトに適した別の動画を選択することもできます。

図3. 空港ターミナルでの手荷物取り扱いを示す入力動画のフレーム。
Link to this sectionステップ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"Link to this sectionステップ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),
)Link to this sectionステップ5: Ultralytics Analyticsソリューションのセットアップ#
今度は、動画からグラフを生成するためにUltralytics Analyticsソリューションを設定します。折れ線、円、面、棒グラフなど、どのようにデータを表示するか、またどのYOLOモデルを使用するかを選択できます。この例では、軽量な「yolo11n.pt」モデルを使用し、結果を面グラフとして表示します。
analytics = solutions.Analytics(
show=True,
analytics_type="area",
model="yolo11n.pt",
)Link to this sectionステップ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()Link to this sectionステップ7: まとめ#
最後に、すべてをまとめます。わずか数行のコードを追加するだけで、2つの出力動画を生成できます。1つは境界ボックスとラベルが付いたYOLO11 物体検出の結果を示す動画、もう1つはリアルタイム分析グラフを示す動画です。
これを実現するために、予測ビデオ保存用と分析用で、2つのVideoWriterインスタンスを設定します。このバージョンのコードには物体トラッキングとグラフ生成の両方が含まれているため、検出結果と視覚的なインサイトを並べて確認できます。
以下に、予測出力と分析出力の両方の例を含む包括的なコードを示します。
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の予測。
Link to this section現実世界のコンピュータービジョンアプリケーションでのグラフ活用#
データ可視化が大きな影響を与える、現実世界のコンピュータービジョンアプリケーションをいくつか紹介します:
-
ヘルスケア: コンピュータービジョンシステムは、患者の活動、スタッフの動き、機器の使用状況をリアルタイムで監視できます。これにより大量の視覚データが生成されますが、これを可視化することで、患者のピーク占有時間や応答遅延といったパターンを明らかにできます。
-
小売およびEコマース: ビジョンAIを使用して、顧客の動き、棚の前での滞在時間、商品とのインタラクションを追跡できます。棒グラフや円グラフのような視覚的な分析によって、どの店舗ゾーンや商品が最も注目を集めているかを強調でき、小売業者は商品の配置を最適化し、コンバージョンを向上させることができます。
-
製造: コンピュータービジョンモデルを搭載したカメラで、製造ラインの欠陥、安全違反、機器の状態を監視できます。データ可視化によって、最も一般的な欠陥タイプの傾向を示したり、エラー率が最も高い期間を強調したりできるため、迅速な意思決定と予防保全が可能になります。
Link to this section重要なポイント#
Ultralyticsパッケージを使えば、動画素材を、何が起こっているかを明らかにする明確で洞察に満ちたグラフへ簡単に変換できます。例えば、時間の経過とともに何人の人や物体が出現するかを追跡可能です。何時間もの動画を手作業で確認する代わりに、主要なパターンや傾向を強調する視覚的な要約を生成できるため、迅速な対応が容易になります。病院、小売店、製造施設など、場所を問わず、これらのグラフは複雑なAI出力を誰でも理解し活用できるインサイトへと変換します。
AIについてもっと学びたいですか?GitHubリポジトリを探索し、コミュニティとつながり、ライセンスオプションを確認してコンピュータビジョンプロジェクトを立ち上げましょう。製造におけるAIや物流業界におけるコンピュータビジョンといったイノベーションの詳細については、ソリューションページをご覧ください。






