コンテンツにスキップ

Ultralytics YOLO11を使用したオブジェクトのカウント

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

Colabで物体カウントを開く

Ultralytics YOLO11を使用したオブジェクトのカウントは、動画やカメラストリーム内の特定のオブジェクトを正確に識別し、カウントするものです。YOLO11は、最先端のアルゴリズムと深層学習能力により、リアルタイムアプリケーションに優れており、群衆分析や監視など、さまざまなシナリオで効率的かつ正確なオブジェクトのカウントを提供します。



見る: Ultralytics YOLO11を使用したリアルタイムのオブジェクトカウントを実行する方法 🍏

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

  • リソース最適化: オブジェクトのカウントは、正確なカウントを提供することで効率的なリソース管理を促進し、在庫管理などのアプリケーションでのリソース配分を最適化します。
  • セキュリティの強化: オブジェクトのカウントは、エンティティを正確に追跡およびカウントすることにより、セキュリティと監視を強化し、プロアクティブな脅威検出を支援します。
  • 情報に基づいた意思決定: オブジェクトのカウントは、小売、交通管理、その他さまざまな分野でのプロセスを最適化し、意思決定に役立つ貴重な洞察を提供します。

現実世界のアプリケーション

ロジスティクス 水産養殖
Ultralytics YOLO11 を使用したコンベヤーベルト上のパケットのカウント Ultralytics YOLO11を使用した海での魚のカウント
Ultralytics YOLO11 を使用したコンベヤーベルト上のパケットのカウント Ultralytics YOLO11を使用した海での魚のカウント

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)]"
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)]  # rectangle 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="yolo11n.pt",  # model="yolo11n-obb.pt" for object counting with OBB model.
    # classes=[0, 2],  # count specific classes i.e. person and car with COCO pretrained model.
    # tracker="botsort.yaml",  # choose trackers i.e "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.3 検出の信頼度閾値を設定します。低い値を設定すると、より多くのオブジェクトを追跡できますが、誤検出が含まれる可能性があります。
iou float 0.5 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 None or int None バウンディングボックスの線の太さを指定します。もし None場合、線の太さは画像サイズに基づいて自動的に調整されます。明確にするための視覚的なカスタマイズを提供します。
show_conf bool True ラベルとともに、検出ごとの信頼度スコアを表示します。各検出に対するモデルの確実性についての洞察が得られます。
show_labels 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 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", "yolo11n.pt")

より高度な構成とオプションについては、複数のリージョン内のオブジェクトを同時にカウントするためのRegionCounterソリューションをご覧ください。

Ultralytics YOLO11をオブジェクトのカウントに使用する利点は何ですか?

Ultralytics YOLO11 を使用してオブジェクトをカウントすると、いくつかの利点があります。

  1. リソース最適化: 正確なカウントを提供することで効率的なリソース管理を促進し、在庫管理などの業界でのリソース配分を最適化するのに役立ちます。
  2. セキュリティの強化: エンティティを正確に追跡およびカウントすることにより、セキュリティと監視を強化し、プロアクティブな脅威検出とセキュリティシステムを支援します。
  3. 情報に基づいた意思決定: 小売、交通管理などの分野で、意思決定のための貴重な洞察を提供し、プロセスを最適化します。
  4. リアルタイム処理: YOLO11のアーキテクチャにより、リアルタイム推論が可能になり、ライブビデオストリームや時間制約の厳しいアプリケーションに適しています。

実装例と実際のアプリケーションについては、特定のゾーン内のオブジェクトを追跡するためのTrackZoneソリューションをご覧ください。

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 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", "yolo11n.pt", [0, 2])

この例では、 classes_to_count=[0, 2] は、クラスのオブジェクトをカウントすることを意味します。 0 および 2 (例:COCOデータセットの人物と車)。クラスインデックスの詳細については、 COCOデータセットのドキュメント.

リアルタイムアプリケーションで、他のオブジェクト検出モデルではなく YOLO11 を使用する利点は何ですか?

Ultralytics YOLO11は、Faster R-CNN、SSD、および以前のYOLOバージョンなどの他の物体検出モデルに比べて、いくつかの利点があります。

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

UltralyticsのYOLO11ドキュメントで、その機能とパフォーマンスの比較について詳しく調べてください。

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

はい、Ultralytics YOLO11は、リアルタイム検出機能、スケーラビリティ、および統合の柔軟性により、群集分析や交通管理などの高度なアプリケーションに最適です。その高度な機能により、動的な環境で高精度のオブジェクト追跡、カウント、および分類が可能になります。ユースケースの例を以下に示します。

  • 群衆分析: 大規模な集まりを監視および管理し、地域ベースのカウントで安全性と群衆の流れの最適化を確保します。
  • 交通管理: 速度推定機能により、車両の追跡とカウント、交通パターンの分析、リアルタイムでの渋滞管理を行います。
  • 小売分析: 顧客の移動パターンと製品とのインタラクションを分析して、店舗レイアウトを最適化し、顧客体験を向上させます。
  • 産業オートメーション: 品質管理と効率改善のために、コンベヤーベルト上の製品をカウントし、生産ラインを監視します。

より専門的なアプリケーションについては、現実世界のコンピュータビジョン課題向けに設計された包括的なツールセットであるUltralytics Solutionsをご覧ください。



📅 1年前に作成 ✏️ 4か月前に更新

コメント