コンテンツへスキップ

オブジェクト・カウントUltralytics YOLO11

オブジェクト・カウントとは何か?

による物体計数では、ビデオやカメラストリーム内の特定の物体を正確に識別し、計数します。 Ultralytics YOLO11YOLO11 、リアルタイムアプリケーションに優れており、最先端のアルゴリズムとディープラーニング機能により、群衆分析や監視などのさまざまなシナリオで効率的かつ正確なオブジェクト計数を提供します。


見るんだ: オブジェクト・カウントUltralytics YOLOv8

見るんだ: クラス別オブジェクト・カウントUltralytics YOLO11

オブジェクト・カウントの利点

  • リソースの最適化:オブジェクトカウンティングは、正確なカウントを提供し、在庫管理などのアプリケーションでリソース割り当てを最適化することで、効率的なリソース管理を容易にします。
  • セキュリティの強化:オブジェクトのカウントは、エンティティを正確に追跡しカウントすることで、セキュリティと監視を強化し、事前の脅威検知を支援します。
  • 情報に基づいた意思決定オブジェクトカウンティングは、意思決定、小売、交通管理、その他様々な領域におけるプロセスの最適化に貴重な洞察を提供します。

実世界での応用

物流 水産養殖
ベルトコンベアによるパケットカウントUltralytics YOLO11 海での魚の数え方Ultralytics YOLO11
ベルトコンベアによるパケットカウントUltralytics YOLO11 海での魚の数え方Ultralytics YOLO11

YOLO11 例を用いたオブジェクトのカウント

# Run a counting example
yolo solutions count show=True

# Pass a source video
yolo solutions count source="path/to/video/file.mp4"

# Pass region coordinates
yolo solutions count region=[(20, 400), (1080, 400), (1080, 360), (20, 360)]
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))

# Define region points
# region_points = [(20, 400), (1080, 400)]  # For line counting
region_points = [(20, 400), (1080, 400), (1080, 360), (20, 360)]  # For rectangle region counting
# region_points = [(20, 400), (1080, 400), (1080, 360), (20, 360), (20, 400)]  # For polygon region counting

# Video writer
video_writer = cv2.VideoWriter("object_counting_output.avi", cv2.VideoWriter_fourcc(*"mp4v"), fps, (w, h))

# Init Object Counter
counter = solutions.ObjectCounter(
    show=True,  # Display the output
    region=region_points,  # Pass region points
    model="yolo11n.pt",  # model="yolo11n-obb.pt" for object counting using YOLO11 OBB model.
    # classes=[0, 2],  # If you want to count specific classes i.e person and car with COCO pretrained model.
    # show_in=True,  # Display in counts
    # show_out=True,  # Display out counts
    # line_width=2,  # Adjust the line width for bounding boxes and text display
)

# Process video
while cap.isOpened():
    success, im0 = cap.read()
    if not success:
        print("Video frame is empty or video processing has been successfully completed.")
        break
    im0 = counter.count(im0)
    video_writer.write(im0)

cap.release()
video_writer.release()
cv2.destroyAllWindows()

議論 ObjectCounter

以下はその表である。 ObjectCounter という議論がある:

名称 タイプ デフォルト 説明
model str None Ultralytics YOLO モデルファイルへのパス
region list [(20, 400), (1260, 400)] カウント領域を定義する点のリスト。
line_width int 2 バウンディングボックスの線の太さ。
show bool False ビデオストリームを表示するかどうかを制御するフラグ。
show_in bool True ビデオストリームにインカウントを表示するかどうかを制御するフラグ。
show_out bool True ビデオストリームにアウトカウントを表示するかどうかを制御するフラグ。

議論 model.track

議論 タイプ デフォルト 説明
source str None 画像や動画のソースディレクトリを指定します。ファイルパスとURLをサポートします。
persist bool False フレーム間のオブジェクトの永続的なトラッキングを可能にし、ビデオシーケンス間のIDを維持します。
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 トラッキング結果の表示をコントロールし、トラッキングされたオブジェクトのビジュアル出力を提供します。

よくあるご質問

Ultralytics YOLO11 を使ってビデオ内のオブジェクトを数えるには?

Ultralytics YOLO11 を使用してビデオ内のオブジェクトをカウントするには、次の手順に従います:

  1. 必要なライブラリをインポートするcv2, ultralytics).
  2. 計数領域を定義する(多角形、線など)。
  3. ビデオキャプチャを設定し、オブジェクトカウンターを初期化する。
  4. 各フレームを処理してオブジェクトを追跡し、定義された領域内でカウントする。

以下は、地域でカウントする簡単な例である:

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 video processing has been successfully completed.")
            break
        im0 = counter.count(im0)
        video_writer.write(im0)

    cap.release()
    video_writer.release()
    cv2.destroyAllWindows()


count_objects_in_region("path/to/video.mp4", "output_video.avi", "yolo11n.pt")

その他の設定やオプションについては、オブジェクト・カウントのセクションを参照してください。

Ultralytics YOLO11 、物体カウントに使用する利点は?

Ultralytics YOLO11 を物体計数に使用すると、いくつかの利点がある:

  1. リソースの最適化正確な計数を提供することで効率的なリソース管理を促進し、在庫管理などの産業におけるリソース配分の最適化を支援する。
  2. セキュリティの強化:エンティティの正確な追跡とカウントにより、セキュリティと監視を強化し、脅威の事前検知を支援します。
  3. 情報に基づいた意思決定意思決定のための貴重な洞察を提供し、小売、交通管理などの領域におけるプロセスを最適化します。

実際のアプリケーションとコード例については、オブジェクト・カウントの利点のセクションをご覧ください。

Ultralytics YOLO11 を使って特定のクラスのオブジェクトを数えるには?

Ultralytics YOLO11 を使ってオブジェクトの特定のクラスをカウントするには、トラッキングの段階で、関心のあるクラスを指定する必要がある。以下は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 video processing has been successfully completed.")
            break
        im0 = counter.count(im0)
        video_writer.write(im0)

    cap.release()
    video_writer.release()
    cv2.destroyAllWindows()


count_specific_classes("path/to/video.mp4", "output_specific_classes.avi", "yolo11n.pt", [0, 2])

この例では classes_to_count=[0, 2]というクラスのオブジェクトを数える。 0 そして 2 (例:人と車)。

なぜリアルタイム・アプリケーションに他の物体検出モデルではなく、YOLO11 を使う必要があるのか?

Ultralytics YOLO11 は、Faster R-CNN、SSD、および以前のバージョン(YOLO )のような他の物体検出モデルと比較して、いくつかの利点を提供します:

  1. スピードと効率性: YOLO11 はリアルタイム処理機能を備えており、監視や自律走行など高速推論を必要とするアプリケーションに最適です。
  2. 精度物体の検出と追跡タスクに最先端の精度を提供し、誤検出の数を減らし、システム全体の信頼性を向上させます。
  3. 統合の容易さ: YOLO11 は、モバイルやエッジデバイスを含む様々なプラットフォームやデバイスとのシームレスな統合を提供し、これは最新のAIアプリケーションにとって極めて重要である。
  4. 柔軟性:特定のユースケースの要件を満たすために設定可能なモデルで、オブジェクト検出、セグメンテーション、トラッキングなどのさまざまなタスクをサポートします。

Ultralytics YOLO11 ドキュメントで、その機能と性能比較についてさらに深く掘り下げてご覧ください。

YOLO11 、群衆分析や交通管理のような高度なアプリケーションに使用できますか?

そう、Ultralytics YOLO11 、そのリアルタイム検出能力、拡張性、統合の柔軟性により、群衆分析や交通管理などの高度なアプリケーションに完璧に適している。その高度な機能により、動的な環境でも高精度の物体追跡、カウント、分類が可能です。使用例

  • 群衆分析:大規模な集まりを監視・管理し、安全を確保し、群衆の流れを最適化する。
  • 交通管理:車両を追跡・カウントし、交通パターンを分析し、渋滞をリアルタイムで管理します。

より詳細な情報と実装の詳細については、YOLO11 を使ったオブジェクトカウントの実世界での応用に関するガイドを参照してください。

📅作成:1年前 ✏️更新しました 17日前

コメント