Ultralytics YOLO26を使用したオブジェクトカウント
オブジェクトカウントとは何ですか?
Ultralytics YOLO26によるオブジェクトカウントは、ビデオやカメラストリーム内の特定のオブジェクトを正確に識別し、カウントすることを伴います。YOLO26は、最先端のアルゴリズムとディープラーニング機能により、リアルタイムアプリケーションに優れており、群衆分析や監視など、さまざまなシナリオで効率的かつ正確なオブジェクトカウントを提供します。
見る: Ultralytics YOLO26でリアルタイムオブジェクトカウントを実行する方法 🍏
オブジェクトカウントの利点
- リソース最適化: オブジェクトのカウントは、正確なカウントを提供することで効率的なリソース管理を促進し、在庫管理などのアプリケーションでのリソース配分を最適化します。
- セキュリティの強化: オブジェクトのカウントは、エンティティを正確に追跡およびカウントすることにより、セキュリティと監視を強化し、プロアクティブな脅威検出を支援します。
- 情報に基づいた意思決定: オブジェクトのカウントは、小売、交通管理、その他さまざまな分野でのプロセスを最適化し、意思決定に役立つ貴重な洞察を提供します。
現実世界のアプリケーション
| ロジスティクス | 水産養殖 |
|---|---|
![]() | ![]() |
| Ultralytics YOLO26を用いたコンベアベルト上のパケット数カウント | Ultralytics YOLO26を用いた海中での魚数カウント |
Ultralytics YOLOを使用したオブジェクトのカウント
# Run a counting example
yolo solutions count show=True
# Pass a source video
yolo solutions count source="path/to/video.mp4"
# Pass region coordinates
yolo solutions count region="[(20, 400), (1080, 400), (1080, 360), (20, 360)]"
The region 引数は、2点(線の場合)または3点以上のポリゴンを受け入れます。カウンターが出入りを正確に把握できるように、座標は接続されるべき順序で定義してください。
import cv2
from ultralytics import solutions
cap = cv2.VideoCapture("path/to/video.mp4")
assert cap.isOpened(), "Error reading video file"
# region_points = [(20, 400), (1080, 400)] # line counting
region_points = [(20, 400), (1080, 400), (1080, 360), (20, 360)] # rectangular region
# region_points = [(20, 400), (1080, 400), (1080, 360), (20, 360), (20, 400)] # polygon region
# 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))
video_writer = cv2.VideoWriter("object_counting_output.avi", cv2.VideoWriter_fourcc(*"mp4v"), fps, (w, h))
# Initialize object counter object
counter = solutions.ObjectCounter(
show=True, # display the output
region=region_points, # pass region points
model="yolo26n.pt", # model="yolo26n-obb.pt" for object counting with OBB model.
# classes=[0, 2], # count specific classes, e.g., person and car with the COCO pretrained model.
# tracker="botsort.yaml", # choose trackers, e.g., "bytetrack.yaml"
)
# Process video
while cap.isOpened():
success, im0 = cap.read()
if not success:
print("Video frame is empty or processing is complete.")
break
results = counter(im0)
# print(results) # access the output
video_writer.write(results.plot_im) # write the processed frame.
cap.release()
video_writer.release()
cv2.destroyAllWindows() # destroy all opened windows
ObjectCounter 引数
の表を以下に示します。 ObjectCounter 引数:
| 引数 | 種類 | デフォルト | 説明 |
|---|---|---|---|
model | str | None | Ultralytics YOLOモデルファイルへのパス。 |
show_in | bool | True | ビデオストリームにカウントを表示するかどうかを制御するフラグ。 |
show_out | bool | True | ビデオストリーム上にアウトカウントを表示するかどうかを制御するフラグ。 |
region | list | '[(20, 400), (1260, 400)]' | カウント領域を定義する点のリスト。 |
The ObjectCounter ソリューションでは、いくつかの以下を使用できます。 track 引数:
| 引数 | 種類 | デフォルト | 説明 |
|---|---|---|---|
tracker | str | 'botsort.yaml' | 使用する追跡アルゴリズムを指定します。例: bytetrack.yaml または botsort.yaml. |
conf | float | 0.1 | 検出の信頼度閾値を設定します。低い値を設定すると、より多くのオブジェクトを追跡できますが、誤検出が含まれる可能性があります。 |
iou | float | 0.7 | 重複する検出をフィルタリングするためのIntersection over Union (IoU) 閾値を設定します。 |
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 | int or None | None | バウンディングボックスの線の太さを指定します。もし None場合、線の太さは画像サイズに基づいて自動的に調整されます。明確にするための視覚的なカスタマイズを提供します。 |
show_conf | bool | True | ラベルとともに、検出ごとの信頼度スコアを表示します。各検出に対するモデルの確実性についての洞察が得られます。 |
show_labels | bool | True | 検出された各オブジェクトのラベルを視覚的な出力に表示します。検出されたオブジェクトをすぐに理解できます。 |
よくある質問
Ultralytics YOLO26を使用してビデオ内のオブジェクトをカウントするにはどうすればよいですか?
Ultralytics YOLO26を使用して動画内のオブジェクトをカウントするには、以下の手順に従ってください。
- 必要なライブラリをインポートします(
cv2,ultralytics)。 - カウント領域(ポリゴン、線など)を定義します。
- ビデオキャプチャを設定し、オブジェクトカウンターを初期化します。
- 各フレームを処理して物体をtrackし、定義された領域内でそれらをカウントします。
領域内のカウントを行う簡単な例を以下に示します。
import cv2
from ultralytics import solutions
def count_objects_in_region(video_path, output_video_path, model_path):
"""Count objects in a specific region within a video."""
cap = cv2.VideoCapture(video_path)
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))
video_writer = cv2.VideoWriter(output_video_path, cv2.VideoWriter_fourcc(*"mp4v"), fps, (w, h))
region_points = [(20, 400), (1080, 400), (1080, 360), (20, 360)]
counter = solutions.ObjectCounter(show=True, region=region_points, model=model_path)
while cap.isOpened():
success, im0 = cap.read()
if not success:
print("Video frame is empty or processing is complete.")
break
results = counter(im0)
video_writer.write(results.plot_im)
cap.release()
video_writer.release()
cv2.destroyAllWindows()
count_objects_in_region("path/to/video.mp4", "output_video.avi", "yolo26n.pt")
より高度な構成とオプションについては、複数のリージョン内のオブジェクトを同時にカウントするためのRegionCounterソリューションをご覧ください。
オブジェクトカウントにUltralytics YOLO26を使用する利点は何ですか?
オブジェクトカウントにUltralytics YOLO26を使用することには、いくつかの利点があります。
- リソース最適化: 正確なカウントを提供することで効率的なリソース管理を促進し、在庫管理などの業界でのリソース配分を最適化するのに役立ちます。
- セキュリティの強化: エンティティを正確に追跡およびカウントすることにより、セキュリティと監視を強化し、プロアクティブな脅威検出とセキュリティシステムを支援します。
- 情報に基づいた意思決定: 小売、交通管理などの分野で、意思決定のための貴重な洞察を提供し、プロセスを最適化します。
- リアルタイム処理: YOLO26のアーキテクチャはリアルタイム推論を可能にし、ライブビデオストリームや時間制約のあるアプリケーションに適しています。
実装例と実際のアプリケーションについては、特定のゾーン内のオブジェクトを追跡するためのTrackZoneソリューションをご覧ください。
Ultralytics YOLO26を使用して特定のクラスのオブジェクトをカウントするにはどうすればよいですか?
Ultralytics YOLO26を使用して特定のクラスのオブジェクトをカウントするには、trackフェーズで関心のあるクラスを指定する必要があります。以下にPythonの例を示します。
import cv2
from ultralytics import solutions
def count_specific_classes(video_path, output_video_path, model_path, classes_to_count):
"""Count specific classes of objects in a video."""
cap = cv2.VideoCapture(video_path)
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))
video_writer = cv2.VideoWriter(output_video_path, cv2.VideoWriter_fourcc(*"mp4v"), fps, (w, h))
line_points = [(20, 400), (1080, 400)]
counter = solutions.ObjectCounter(show=True, region=line_points, model=model_path, classes=classes_to_count)
while cap.isOpened():
success, im0 = cap.read()
if not success:
print("Video frame is empty or processing is complete.")
break
results = counter(im0)
video_writer.write(results.plot_im)
cap.release()
video_writer.release()
cv2.destroyAllWindows()
count_specific_classes("path/to/video.mp4", "output_specific_classes.avi", "yolo26n.pt", [0, 2])
この例では、 classes_to_count=[0, 2] は、クラスのオブジェクトをカウントすることを意味します。 0 および 2 (例:COCOデータセットの人物と車)。クラスインデックスの詳細については、 COCOデータセットのドキュメンテーション.
リアルタイムアプリケーションで他のオブジェクト検出モデルではなくYOLO26を使用すべきなのはなぜですか?
Ultralytics YOLO26は、Faster R-CNN、SSD、および以前のYOLOバージョンなどの他のオブジェクト検出モデルと比較して、いくつかの利点を提供します。
- 速度と効率: YOLO26はリアルタイム処理機能を提供し、監視や自動運転など、高速推論を必要とするアプリケーションに最適です。
- 精度: オブジェクト検出および追跡タスクにおいて、最先端の精度を提供し、誤検出の数を減らし、システム全体の信頼性を向上させます。
- 統合の容易さ: YOLO26は、モバイルやエッジデバイスを含むさまざまなプラットフォームやデバイスとのシームレスな統合を提供し、これは現代のAIアプリケーションにとって不可欠です。
- 柔軟性: 特定のユースケースの要件を満たすために、構成可能なモデルを使用して、オブジェクト検出、セグメンテーション、トラッキングなどのさまざまなタスクをサポートします。
Ultralytics YOLO26ドキュメントで、その機能と性能比較について詳しくご確認ください。
YOLO26は、群衆分析や交通管理などの高度なアプリケーションに使用できますか?
はい、Ultralytics YOLO26は、リアルタイム検出機能、スケーラビリティ、および統合の柔軟性により、群衆分析や交通管理のような高度なアプリケーションに完全に適しています。その高度な機能により、動的な環境での高精度なオブジェクトのtrack、カウント、および分類が可能です。使用例としては以下が挙げられます。
- 群衆分析: 大規模な集まりを監視および管理し、地域ベースのカウントで安全性と群衆の流れの最適化を確保します。
- 交通管理: 速度推定機能により、車両の追跡とカウント、交通パターンの分析、リアルタイムでの渋滞管理を行います。
- 小売分析: 顧客の移動パターンと製品とのインタラクションを分析して、店舗レイアウトを最適化し、顧客体験を向上させます。
- 産業オートメーション: 品質管理と効率改善のために、コンベヤーベルト上の製品をカウントし、生産ラインを監視します。
より専門的なアプリケーションについては、現実世界のコンピュータビジョン課題向けに設計された包括的なツールセットであるUltralytics Solutionsをご覧ください。

