Meet YOLO26: next-gen vision AI.

Link to this sectionUltralytics YOLO26を使用した分析#

Link to this sectionはじめに#

本ガイドでは、データ可視化の3つの基本的な手法である折れ線グラフ、棒グラフ、円グラフについて包括的に解説します。各セクションでは、Pythonを使用してこれらの可視化を作成するためのステップバイステップの手順とコードスニペットを紹介します。



Watch: How to generate Analytical Graphs using Ultralytics | Line Graphs, Bar Plots, Area and Pie Charts

Link to this section可視化のサンプル#

折れ線グラフ棒グラフ円グラフ
オブジェクトトラッキング用のYOLO分析折れ線グラフ検出カウント用のYOLO分析棒グラフクラス分布用のYOLO分析円グラフ

Link to this sectionグラフが重要な理由#

  • 折れ線グラフは、短期間および長期間の推移を追跡したり、同一期間内の複数のグループの変化を比較したりするのに最適です。
  • 一方、棒グラフは、異なるカテゴリ間での数量を比較したり、カテゴリと数値の関係を示したりするのに適しています。
  • 最後に、円グラフはカテゴリ間の比率を明確にしたり、全体の中での割合を示したりするのに有効です。
Ultralytics YOLOを使用した分析
yolo solutions analytics show=True

# Pass the source
yolo solutions analytics source="path/to/video.mp4"

# Generate the pie chart
yolo solutions analytics analytics_type="pie" show=True

# Generate the bar plots
yolo solutions analytics analytics_type="bar" show=True

# Generate the area plots
yolo solutions analytics analytics_type="area" show=True

Link to this sectionAnalytics引数#

以下はAnalytics引数をまとめた表です。

引数タイプデフォルト説明
modelstrNoneUltralytics YOLOモデルファイルへのパス。
analytics_typestr'line'グラフの種類(linebarareapieのいずれか)。

You can also leverage different track arguments in the Analytics solution.

引数タイプデフォルト説明
trackerstr'botsort.yaml'使用するトラッキングアルゴリズムを指定します(例: bytetrack.yamlbotsort.yaml)。
conffloat0.1検出の信頼度しきい値を設定します。値を下げるとより多くのオブジェクトをトラッキングできますが、誤検出が含まれる可能性があります。
ioufloat0.7重複する検出結果をフィルタリングするためのIntersection over Union(IoU)しきい値を設定します。
classeslistNoneクラスインデックスで結果をフィルタリングします。例えば、classes=[0, 2, 3]とすると、指定したクラスのみをトラッキングします。
verboseboolTrueトラッキング結果の表示を制御し、トラッキングされたオブジェクトの視覚的な出力を提供します。
devicestrNone推論に使用するデバイス(例: cpucuda:00)を指定します。ユーザーはCPU、特定のGPU、またはその他の計算デバイスを選択してモデルを実行できます。

さらに、以下の可視化引数もサポートされています。

引数タイプデフォルト説明
showboolFalseTrue の場合、アノテーション付きの画像や動画をウィンドウに表示します。開発やテスト中の即時的な視覚フィードバックに役立ちます。
line_widthint or NoneNoneバウンディングボックスの線の太さを指定します。Noneの場合、画像のサイズに基づいて線の太さが自動的に調整されます。視覚的な明瞭さのためにカスタマイズ可能です。

Link to this section結論#

効果的なデータ分析には、いつ、どのように異なる種類の可視化手法を使うかを理解することが不可欠です。折れ線グラフ、棒グラフ、円グラフは、データのストーリーをより明確かつ効果的に伝えるための基本的なツールです。Ultralytics YOLO26 Analyticsソリューションは、オブジェクト検出およびトラッキングの結果からこれらの可視化を生成するための効率的な手段を提供し、視覚的なデータから有意義なインサイトを引き出しやすくします。

Link to this sectionFAQ#

Link to this sectionUltralytics YOLO26 Analyticsを使用して折れ線グラフを作成するにはどうすればよいですか?#

Ultralytics YOLO26 Analyticsを使用して折れ線グラフを作成するには、以下の手順に従ってください。

  1. YOLO26モデルを読み込み、ビデオファイルを開きます。
  2. タイプを"line"に設定してAnalyticsクラスを初期化します。
  3. ビデオフレームを反復処理し、フレームごとのオブジェクト数などの関連データで折れ線グラフを更新します。
  4. 折れ線グラフを表示する出力ビデオを保存します。

例:

import cv2

from ultralytics import solutions

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

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(
    "ultralytics_analytics.avi",
    cv2.VideoWriter_fourcc(*"MJPG"),
    fps,
    (1280, 720),  # this is fixed
)

analytics = solutions.Analytics(
    analytics_type="line",
    show=True,
)

frame_count = 0
while cap.isOpened():
    success, im0 = cap.read()
    if success:
        frame_count += 1
        results = analytics(im0, frame_count)  # update analytics graph every frame
        out.write(results.plot_im)  # write the video file
    else:
        break

cap.release()
out.release()
cv2.destroyAllWindows()

Analyticsクラスの設定に関する詳細は、Ultralytics YOLO26を使用した分析セクションを参照してください。

Link to this sectionUltralytics YOLO26を使用して棒グラフを作成する利点は何ですか?#

Ultralytics YOLO26を使用して棒グラフを作成することには、いくつかの利点があります。

  1. リアルタイムのデータ可視化: オブジェクト検出の結果を棒グラフにシームレスに統合し、動的に更新できます。
  2. 使いやすさ: シンプルなAPIと関数により、実装とデータ可視化が簡単に行えます。
  3. カスタマイズ: タイトル、ラベル、色などを特定の要件に合わせてカスタマイズ可能です。
  4. 効率性: 大量のデータを効率的に処理し、ビデオ処理中にリアルタイムでグラフを更新できます。

次の例を使用して棒グラフを生成します。

import cv2

from ultralytics import solutions

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

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(
    "ultralytics_analytics.avi",
    cv2.VideoWriter_fourcc(*"MJPG"),
    fps,
    (1280, 720),  # this is fixed
)

analytics = solutions.Analytics(
    analytics_type="bar",
    show=True,
)

frame_count = 0
while cap.isOpened():
    success, im0 = cap.read()
    if success:
        frame_count += 1
        results = analytics(im0, frame_count)  # update analytics graph every frame
        out.write(results.plot_im)  # write the video file
    else:
        break

cap.release()
out.release()
cv2.destroyAllWindows()

詳細については、ガイド内の棒グラフセクションを参照してください。

Link to this sectionデータ可視化プロジェクトで円グラフを作成するためにUltralytics YOLO26を使用すべき理由は何ですか?#

Ultralytics YOLO26が円グラフ作成に適している理由は以下の通りです。

  1. オブジェクト検出との統合: オブジェクト検出の結果を円グラフに直接統合し、即座にインサイトを得られます。
  2. 使いやすいAPI: 設定が簡単で、最小限のコードで利用可能です。
  3. カスタマイズ可能: 色やラベルなど、多様なカスタマイズオプションがあります。
  4. リアルタイム更新: リアルタイムでのデータ処理と可視化が可能であり、ビデオ分析プロジェクトに最適です。

簡単な例を次に示します。

import cv2

from ultralytics import solutions

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

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(
    "ultralytics_analytics.avi",
    cv2.VideoWriter_fourcc(*"MJPG"),
    fps,
    (1280, 720),  # this is fixed
)

analytics = solutions.Analytics(
    analytics_type="pie",
    show=True,
)

frame_count = 0
while cap.isOpened():
    success, im0 = cap.read()
    if success:
        frame_count += 1
        results = analytics(im0, frame_count)  # update analytics graph every frame
        out.write(results.plot_im)  # write the video file
    else:
        break

cap.release()
out.release()
cv2.destroyAllWindows()

詳細については、ガイド内の円グラフセクションを参照してください。

Link to this sectionUltralytics YOLO26を使用してオブジェクトをトラッキングし、動的に可視化を更新することはできますか?#

はい、Ultralytics YOLO26を使用してオブジェクトをトラッキングし、動的に可視化を更新することが可能です。リアルタイムでの複数オブジェクトのトラッキングをサポートしており、トラッキングデータの値に基づいて折れ線グラフ、棒グラフ、円グラフなど、さまざまな可視化を更新できます。

トラッキングと折れ線グラフの更新の例:

import cv2

from ultralytics import solutions

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

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(
    "ultralytics_analytics.avi",
    cv2.VideoWriter_fourcc(*"MJPG"),
    fps,
    (1280, 720),  # this is fixed
)

analytics = solutions.Analytics(
    analytics_type="line",
    show=True,
)

frame_count = 0
while cap.isOpened():
    success, im0 = cap.read()
    if success:
        frame_count += 1
        results = analytics(im0, frame_count)  # update analytics graph every frame
        out.write(results.plot_im)  # write the video file
    else:
        break

cap.release()
out.release()
cv2.destroyAllWindows()

全機能については、トラッキングセクションを参照してください。

Link to this sectionUltralytics YOLO26がOpenCVTensorFlowのような他のオブジェクト検出ソリューションと異なる点は何ですか?#

Ultralytics YOLO26がOpenCVやTensorFlowのような他のオブジェクト検出ソリューションと一線を画している理由は、以下の通りです。

  1. 最先端の精度: YOLO26は、オブジェクト検出インスタンスセグメンテーションセマンティックセグメンテーション分類の各タスクにおいて優れた精度を提供します。
  2. 使いやすさ: ユーザーフレンドリーなAPIにより、大規模なコーディングなしで迅速な実装と統合が可能です。
  3. リアルタイム性能: 高速推論のために最適化されており、リアルタイムアプリケーションに適しています。
  4. 多様な用途: 複数オブジェクトのトラッキング、カスタムモデルのトレーニング、ONNX、TensorRT、CoreMLなどのさまざまなフォーマットへのエクスポートを含む多様なタスクをサポートしています。
  5. 包括的なドキュメント: ドキュメントブログリソースが充実しており、ユーザーのあらゆるステップをガイドします。

詳細な比較やユースケースについては、Ultralyticsブログをご覧ください。

コメント