Analytics using Ultralytics YOLO11
はじめに
This guide provides a comprehensive overview of three fundamental types of data visualizations: line graphs, bar plots, and pie charts. Each section includes step-by-step instructions and code snippets on how to create these visualizations using Python.
見るんだ: How to generate Analytical Graphs using Ultralytics | Line Graphs, Bar Plots, Area and Pie Charts
ビジュアル・サンプル
折れ線グラフ | バー・プロット | 円グラフ |
---|---|---|
グラフが重要な理由
- 折れ線グラフは、短期および長期の変化を追跡したり、同じ期間における複数のグループの変化を比較するのに理想的である。
- 一方、棒グラフは、異なるカテゴリー間の量を比較したり、カテゴリーとその数値の関係を示したりするのに適している。
- 最後に、円グラフはカテゴリー間の比率を示したり、全体の一部を示したりするのに効果的である。
アナリティクスの例
import cv2
from ultralytics import solutions
cap = cv2.VideoCapture("Path/to/video/file.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,
(1920, 1080), # 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
im0 = analytics.process_data(im0, frame_count) # update analytics graph every frame
out.write(im0) # write the video file
else:
break
cap.release()
out.release()
cv2.destroyAllWindows()
import cv2
from ultralytics import solutions
cap = cv2.VideoCapture("Path/to/video/file.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,
(1920, 1080), # 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
im0 = analytics.process_data(im0, frame_count) # update analytics graph every frame
out.write(im0) # write the video file
else:
break
cap.release()
out.release()
cv2.destroyAllWindows()
import cv2
from ultralytics import solutions
cap = cv2.VideoCapture("Path/to/video/file.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,
(1920, 1080), # 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
im0 = analytics.process_data(im0, frame_count) # update analytics graph every frame
out.write(im0) # write the video file
else:
break
cap.release()
out.release()
cv2.destroyAllWindows()
import cv2
from ultralytics import solutions
cap = cv2.VideoCapture("Path/to/video/file.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,
(1920, 1080), # This is fixed
)
analytics = solutions.Analytics(
analytics_type="area",
show=True,
)
frame_count = 0
while cap.isOpened():
success, im0 = cap.read()
if success:
frame_count += 1
im0 = analytics.process_data(im0, frame_count) # update analytics graph every frame
out.write(im0) # write the video file
else:
break
cap.release()
out.release()
cv2.destroyAllWindows()
議論 Analytics
以下はその表である。 Analytics
という議論がある:
名称 | タイプ | デフォルト | 説明 |
---|---|---|---|
analytics_type |
str |
line |
Type of graph i.e "line", "bar", "area", "pie" |
model |
str |
None |
Path to Ultralytics YOLO Model File |
line_width |
int |
2 |
バウンディングボックスの線の太さ。 |
show |
bool |
False |
ビデオストリームを表示するかどうかを制御するフラグ。 |
論争 model.track
議論 | タイプ | デフォルト | 説明 |
---|---|---|---|
source |
str |
None |
Specifies the source directory for images or videos. Supports file paths and URLs. |
persist |
bool |
False |
Enables persistent tracking of objects between frames, maintaining IDs across video sequences. |
tracker |
str |
botsort.yaml |
Specifies the tracking algorithm to use, e.g., bytetrack.yaml または botsort.yaml . |
conf |
float |
0.3 |
Sets the confidence threshold for detections; lower values allow more objects to be tracked but may include false positives. |
iou |
float |
0.5 |
Sets the Intersection over Union (IoU) threshold for filtering overlapping detections. |
classes |
list |
None |
Filters results by class index. For example, classes=[0, 2, 3] only tracks the specified classes. |
verbose |
bool |
True |
Controls the display of tracking results, providing a visual output of tracked objects. |
結論
効果的なデータ分析には、さまざまな種類のビジュアライゼーションをいつ、どのように使用するかを理解することが重要です。折れ線グラフ、棒グラフ、円グラフは、データのストーリーをより明確かつ効果的に伝えるのに役立つ基本的なツールです。
よくあるご質問
How do I create a line graph using Ultralytics YOLO11 Analytics?
To create a line graph using Ultralytics YOLO11 Analytics, follow these steps:
- Load a YOLO11 model and open your video file.
- を初期化する。
Analytics
クラスで、タイプは "line "に設定されている。 - ビデオフレームを繰り返し、フレームごとのオブジェクト数などの関連データで折れ線グラフを更新する。
- 折れ線グラフを表示する出力ビデオを保存する。
例
import cv2
from ultralytics import solutions
cap = cv2.VideoCapture("Path/to/video/file.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,
(1920, 1080), # 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
im0 = analytics.process_data(im0, frame_count) # update analytics graph every frame
out.write(im0) # write the video file
else:
break
cap.release()
out.release()
cv2.destroyAllWindows()
の設定の詳細については Analytics
クラスは Analytics using Ultralytics YOLO11 📊 セクションを参照されたい。
What are the benefits of using Ultralytics YOLO11 for creating bar plots?
Using Ultralytics YOLO11 for creating bar plots offers several benefits:
- Real-time Data Visualization: Seamlessly integrate object detection results into bar plots for dynamic updates.
- 使いやすさ:シンプルなAPIと関数により、データの実装と可視化が簡単に行える。
- カスタマイズ:タイトル、ラベル、色など、お客様のご要望に合わせてカスタマイズできます。
- 効率性:大量のデータを効率的に処理し、ビデオ処理中にリアルタイムでプロットを更新。
棒グラフを作成するには、次の例を使用する:
import cv2
from ultralytics import solutions
cap = cv2.VideoCapture("Path/to/video/file.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,
(1920, 1080), # 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
im0 = analytics.process_data(im0, frame_count) # update analytics graph every frame
out.write(im0) # write the video file
else:
break
cap.release()
out.release()
cv2.destroyAllWindows()
詳しくは、ガイドの「バー・プロット」のセクションをご覧ください。
Why should I use Ultralytics YOLO11 for creating pie charts in my data visualization projects?
Ultralytics YOLO11 is an excellent choice for creating pie charts because:
- 物体検出との統合:物体検出の結果を直接円グラフに統合し、即座に洞察を得ることができます。
- ユーザーフレンドリーなAPI:最小限のコードで簡単に設定、使用できます。
- カスタマイズ可能:色やラベルなど、さまざまなカスタマイズが可能。
- リアルタイム更新:ビデオ解析プロジェクトに最適な、リアルタイムのデータ処理と可視化。
簡単な例を挙げよう:
import cv2
from ultralytics import solutions
cap = cv2.VideoCapture("Path/to/video/file.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,
(1920, 1080), # 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
im0 = analytics.process_data(im0, frame_count) # update analytics graph every frame
out.write(im0) # write the video file
else:
break
cap.release()
out.release()
cv2.destroyAllWindows()
詳細については、ガイドの円グラフのセクションを参照してください。
Can Ultralytics YOLO11 be used to track objects and dynamically update visualizations?
Yes, Ultralytics YOLO11 can be used to track objects and dynamically update visualizations. It supports tracking multiple objects in real-time and can update various visualizations like line graphs, bar plots, and pie charts based on the tracked objects' data.
折れ線グラフの追跡と更新の例:
import cv2
from ultralytics import solutions
cap = cv2.VideoCapture("Path/to/video/file.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,
(1920, 1080), # 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
im0 = analytics.process_data(im0, frame_count) # update analytics graph every frame
out.write(im0) # write the video file
else:
break
cap.release()
out.release()
cv2.destroyAllWindows()
全機能については、トラッキングのセクションをご覧ください。
What makes Ultralytics YOLO11 different from other object detection solutions like OpenCV and TensorFlow?
Ultralytics YOLO11 stands out from other object detection solutions like OpenCV and TensorFlow for multiple reasons:
- State-of-the-art Accuracy: YOLO11 provides superior accuracy in object detection, segmentation, and classification tasks.
- 使いやすさ:ユーザーフレンドリーなAPIは、大規模なコーディングなしで迅速な実装と統合を可能にします。
- リアルタイム性能:高速推論に最適化されており、リアルタイムアプリケーションに適しています。
- 多様なアプリケーション:複数オブジェクトの追跡、カスタムモデルのトレーニング、ONNX 、TensorRT 、CoreML のような異なるフォーマットへのエクスポートなど、さまざまなタスクをサポートします。
- 包括的なドキュメント:豊富なドキュメントと ブログリソースで、ユーザーをあらゆるステップでガイドします。
より詳細な比較や使用例については、Ultralytics ブログをご覧ください。