コンテンツへスキップ

分析Ultralytics YOLO11

はじめに

このガイドでは、折れ線グラフ、棒グラフ、円グラフという 3 種類の基本的なデータ可視化の包括的な概要を説明します。各セクションには、Python を使用してこれらのビジュアライゼーションを作成する方法について、ステップバイステップの手順とコード・スニペットが含まれています。



見るんだ: Ultralytics |折れ線グラフ、棒グラフ、面積グラフ、円グラフを使った分析グラフの作成方法

ビジュアル・サンプル

折れ線グラフ バー・プロット 円グラフ
折れ線グラフ バー・プロット 円グラフ

グラフが重要な理由

  • 折れ線グラフは、短期および長期の変化を追跡したり、同じ期間における複数のグループの変化を比較するのに理想的である。
  • 一方、棒グラフは、異なるカテゴリー間の量を比較したり、カテゴリーとその数値の関係を示したりするのに適している。
  • 最後に、円グラフはカテゴリー間の比率を示したり、全体の一部を示したりするのに効果的である。

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
import cv2

from ultralytics import solutions

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

# Video writer
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),  # this is fixed
)

# Initialize analytics object
analytics = solutions.Analytics(
    show=True,  # display the output
    analytics_type="line",  # pass the analytics type, could be "pie", "bar" or "area".
    model="yolo11n.pt",  # path to the YOLO11 model file
    # classes=[0, 2],  # display analytics for specific detection classes
)

# Process video
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

        # print(results)  # access the output

        out.write(results.plot_im)  # write the video file
    else:
        break

cap.release()
out.release()
cv2.destroyAllWindows()  # destroy all opened windows

Analytics 議論

アナリティクスの論点を表にまとめた:

議論 タイプ デフォルト 説明
model str None Ultralytics YOLO モデルファイルへのパス。
analytics_type str line グラフの種類、 line, bar, areaあるいは pie.

を活用することもできる。 track の引数を使用する。 Analytics 解決策だ。

議論 タイプ デフォルト 説明
tracker str 'botsort.yaml' 使用するトラッキングアルゴリズムを指定する、 bytetrack.yaml または botsort.yaml.
conf float 0.3 検出の信頼しきい値を設定します。低い値ではより多くのオブジェクトを追跡できますが、誤検出を含む可能性があります。
iou float 0.5 重複検出をフィルタリングするためのIoU(Intersection over Union)しきい値を設定します。
classes list None クラス・インデックスによって結果をフィルタリングする。例えば classes=[0, 2, 3] は指定されたクラスのみを追跡する。
verbose bool True トラッキング結果の表示をコントロールし、トラッキングされたオブジェクトのビジュアル出力を提供します。
device str None 推論を行うデバイスを指定する(例. cpu, cuda:0 または 0).CPU 、特定のGPU 、またはモデル実行用の他のコンピュート・デバイスを選択することができます。

さらに、以下の可視化引数がサポートされている:

議論 タイプ デフォルト 説明
show bool False もし True注釈付きの画像やビデオをウィンドウに表示します。開発中やテスト中の即時の視覚的フィードバックに便利です。
line_width None or int None バウンディングボックスの線幅を指定します。もし None線幅は画像サイズに応じて自動的に調整されます。視覚的にわかりやすくカスタマイズできます。

結論

効果的なデータ分析には、さまざまな種類のビジュアライゼーションをいつ、どのように使用するかを理解することが重要です。折れ線グラフ、棒グラフ、円グラフは、データのストーリーをより明確かつ効果的に伝えるのに役立つ基本的なツールです。Ultralytics YOLO11 Analyticsソリューションは、オブジェクト検出とトラッキングの結果からこれらのビジュアライゼーションを生成する合理的な方法を提供し、ビジュアルデータから意味のある洞察を簡単に引き出します。

よくあるご質問

Ultralytics YOLO11 アナリティクスを使って折れ線グラフを作成するには?

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

  1. YOLO11 モデルを読み込み、ビデオファイルを開きます。
  2. を初期化する。 Analytics クラスで、タイプは "line "に設定されている。
  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 YOLO11 セクションを参照されたい。

棒グラフの作成にUltralytics YOLO11 を使用する利点は何ですか?

棒グラフの作成にUltralytics YOLO11 を使うと、いくつかの利点がある:

  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()

詳しくは、ガイドの「バー・プロット」のセクションをご覧ください。

データ可視化プロジェクトで円グラフを作成するのにUltralytics YOLO11 を使用するのはなぜですか?

Ultralytics YOLO11 は円グラフの作成に最適である:

  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()

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

Ultralytics YOLO11 を使ってオブジェクトを追跡し、ビジュアライゼーションを動的に更新することは可能か?

はい、Ultralytics YOLO11 、オブジェクトを追跡し、ビジュアライゼーションを動的に更新することができます。リアルタイムで複数のオブジェクトを追跡し、追跡されたオブジェクトのデータに基づいて折れ線グラフ、棒グラフ、円グラフのような様々なビジュアライゼーションを更新することができます。

折れ線グラフの追跡と更新の例:

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()

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

Ultralytics YOLO11 、OpenCVやその他のオブジェクト検出ソリューションと何が違うのか? TensorFlow?

Ultralytics YOLO11 は、OpenCVやTensorFlow のような他のオブジェクト検出ソリューションと比較して、複数の理由で際立っている:

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

より詳細な比較や使用例については、Ultralytics ブログをご覧ください。

📅作成 10ヶ月前 ✏️更新 5日前

コメント