YOLO Vision 2026:

Ultralytics YOLO26による領域内のオブジェクトカウント#

Ultralytics YOLO26RegionCounter solution は、ビデオフレーム全体でオブジェクトを追跡し、すべてのフレームにおいて、定義された各領域内にバウンディングボックスの中心が収まるオブジェクトの数をカウントします。各領域は、それぞれ独自のライブカウントとともにフレーム上に描画されるため、店舗の通路、道路の車線、生産エリアなどの複数のゾーンを、1 つの Python 呼び出しまたは CLI コマンドで監視できます。



Watch: Object Counting in Different Regions using Ultralytics YOLO | Ultralytics Solutions

なぜ領域カウントを使用するのか?#

  • 1回のパスで複数のゾーンを処理: 名前付きポリゴンの辞書を渡すことで、各ゾーンで独立したカウントがフレーム上に描画されるため、1つのビデオストリームで関心のあるすべての領域をカバーできます。
  • トラッキングを内蔵: このソリューションは内部で YOLO26 の検出とオブジェクトトラッキングを実行するため、別途配線すべきトラッキングパイプラインはありません。
  • プログラムで読み取り可能なカウント数: 処理された各フレームは、領域カウントの辞書を含む結果オブジェクトを返します。これはダッシュボード、アラート、ログ記録にすぐに利用できます。

現実世界の応用例#

小売マーケットストリート
Ultralytics YOLO counting people inside drawn polygon regions in a retail storeUltralytics YOLO region counts overlaid on a crowded market street
Ultralytics YOLOによる領域内の人数カウントUltralytics YOLOによる領域内の群衆カウント

Ultralytics YOLOを使用して領域内のオブジェクトをカウントする方法#

CLIまたはPythonからビデオソースに対してRegionCounterソリューションを実行します。領域は点のリスト(単一のゾーン)またはゾーン名と点のリストをマッピングする辞書にできます。以下のPython例では、2つの名前付き領域内のオブジェクトをカウントし、処理されたフレームを出力ビデオファイルに書き込みます。

Ultralytics YOLOを使用した領域カウント
# Run a region counting example
yolo solutions region show=True

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

# Pass a custom region
yolo solutions region region="[(20, 400), (1080, 400), (1080, 360), (20, 360)]"

RegionCounter()の引数#

以下はRegionCounterの引数を示す表です。

引数タイプデフォルト説明
modelstrNoneUltralytics YOLOモデルファイルへのパス。
regionlist または dictNone関心領域を定義するポイント。(x, y) タプルのリスト、または複数領域の領域名をポイントリストにマッピングする辞書(RegionCounter のみ)のいずれかを指定します。None の場合、領域を必要とするソリューションは事前定義されたデフォルトにフォールバックします。

RegionCounter ソリューションにより、オブジェクトトラッキングパラメータを使用できるようになります:

引数タイプデフォルト説明
trackerstr'tracktrack.yaml'使用するトラッキングアルゴリズムを指定します。ビルトインオプション: botsort.yamlbytetrack.yamlocsort.yamldeepocsort.yamlfasttrack.yamltracktrack.yaml
conffloat0.1検出の信頼度しきい値を設定します。低い値を設定するとより多くの物体を追跡できますが、誤検知が含まれる可能性があります。
ioufloat0.7重なり合う検出をフィルタリングするためのIntersection over Union (IoU) 閾値を設定します。
classeslistNoneクラスインデックスによって結果をフィルターします。たとえば、classes=[0, 2, 3]は指定されたクラスのみを追跡します。
verboseboolTrue追跡結果の表示を制御し、追跡された物体の視覚的な出力を行います。
devicestrNone推論用のデバイスを指定します(例: cpucuda:0、または0)。ユーザーはモデルの実行にCPU、特定のGPU、またはその他の計算デバイスを選択できます。

さらに、以下の視覚化設定がサポートされています:

引数タイプデフォルト説明
showboolFalseTrue の場合、注釈付きの画像または動画をウィンドウに表示します。開発やテスト中の即座な視覚的フィードバックに役立ちます。
line_widthint or NoneNoneバウンディングボックスの線の太さを指定します。None の場合、画像のサイズに基づいて線の太さが自動的に調整されます。明瞭さのための視覚的なカスタマイズを提供します。
show_confboolTrue各検出の信頼度スコアをラベルと一緒に表示します。各検出に対するモデルの確信度を把握できます。
show_labelsboolTrue視覚的出力において各検出のラベルを表示します。検出されたオブジェクトを即座に理解するのに役立ちます。

領域カウントの仕組み#

RegionCounter solution は、渡された各領域を、領域あたり少なくとも 3 つのポイントを持つポリゴンに変換します。ポイントの単純なリストは Region#01 という名前の単一のゾーンになり、辞書を使うと独自のゾーン名を保持できます。各ゾーンは Ultralytics パレットから独自の配色で描画されます。その後、すべてのフレームが次の 3 つのステップで処理されます:

  1. YOLO26のトラッキングにより、フレーム内のすべてのオブジェクトを検出および追跡する
  2. 追跡中の各オブジェクトについて、ソリューションはバウンディングボックスの中心を計算し、どの領域ポリゴン内に含まれているかをチェックします。
  3. 各領域のカウントがその中心に描画され、次のフレームの前にカウントがリセットされます。

カウントはフレームごとにリセットされるため、領域に表示される数値は現在の占有数(現在その中にあるオブジェクトの数)であり、累計ではありません。境界をクロスするオブジェクトを累積的にカウントするには、代わりに ObjectCounter solution を使用してください。

また、各呼び出しは結果オブジェクトを返します。その plot_im 属性には注釈付きフレームが保持され、region_counts 辞書には領域名とそれぞれのカウントがマッピングされるため、数値を自身のアプリケーションロジックに組み込むことができます。

結論#

Ultralytics YOLO26 RegionCounter solution は、数行のコードで必要な数の名前付きゾーンにおけるライブオブジェクト数を監視します。さらに活用するには、オブジェクトカウントで境界クロスをカウントしたり、TrackZone で単一ゾーン内のオブジェクトを追跡したり、その他の Ultralytics Solutions を探索したりしてください。

よくある質問 (FAQ)#

Ultralytics YOLO26における領域内のオブジェクトカウントはどのように機能しますか?#

Ultralytics YOLO26 は、フレーム内のすべてのオブジェクトを追跡し、そのバウンディングボックスの中心がユーザー定義のポリゴン内にあるかどうかをテストすることで、領域内のオブジェクトをカウントします。領域に表示されるカウントは、累計ではなく、そのフレームにおける現在の占有数です。設定オプションは RegionCounter() Arguments セクションに記載されています。

一度に複数の領域でオブジェクトをカウントするにはどうすればよいですか?#

メインの例にあるように、ゾーン名からポイントリストへのマッピングを行う辞書として region 引数を渡します。

from ultralytics import solutions

region_points = {
    "region-01": [(50, 50), (250, 50), (250, 250), (50, 250)],
    "region-02": [(640, 640), (780, 640), (780, 720), (640, 720)],
}
regioncounter = solutions.RegionCounter(region=region_points, model="yolo26n.pt", show=True)

各名前付きゾーンは、独立したカウントとともに独自の色で描画されます。

プログラムで領域カウントを取得するにはどうすればよいですか?#

regioncounter(im0) 呼び出しによって返されるオブジェクトには、領域名とカウントをマッピングする region_counts 辞書に加え、plot_im(注釈付きフレーム)および total_tracks(追跡対象オブジェクトの数)が含まれています。結果オブジェクトを出力して、利用可能なすべてのフィールドを確認してください。

領域内で特定のオブジェクトクラスのみをカウントできますか?#

はい。保持するクラスインデックスを指定して classes 引数を渡します。たとえば、COCO 事前学習済みモデルを使用して人物のみをカウントするには classes=[0] を渡します。トラッキング関連の引数の完全なリストは、RegionCounter() Arguments セクションにあります。

RegionCounterとObjectCounterの違いは何ですか?#

RegionCounter は現在のフレーム上の各ポリゴンゾーン内にあるオブジェクトの数を示し、一方 ObjectCounter はオブジェクトが線や領域の境界を越えるときに、出入りの合計を追跡しながら累積的にカウントします。1 つ以上のゾーンのライブ占有量には RegionCounter を使用し、出入りカウントには ObjectCounter を使用します。線状の領域は ObjectCounter のみでサポートされています。

コメント