Ultralytics YOLO26によるリージョン内の物体カウント#
Ultralytics YOLO26のRegionCounterソリューションは、動画フレーム間で物体を追跡し、各フレームで、バウンディングボックスの中心が定義した各リージョン内にある物体をカウントします。各リージョンは固有のリアルタイムカウントとともにフレーム上に描画されるため、1回のPython呼び出しまたはCLIコマンドで、店舗の通路、道路の車線、生産エリアなど複数のゾーンを監視できます。
Watch: Object Counting in Different Regions using Ultralytics YOLO | Ultralytics Solutions
リージョンカウントを使用する理由#
- 1回の処理で複数のゾーン: 名前付きポリゴンの辞書を渡すと、各ゾーンに独立したカウントがフレーム上に描画されるため、1つの動画ストリームですべての対象エリアをカバーできます。
- トラッキングを内蔵: このソリューションは内部でYOLO26による検出と物体追跡を実行するため、別途トラッキングパイプラインを構築する必要はありません。
- プログラムから読み取れるカウント: 処理された各フレームは、リージョンごとのカウントを格納した辞書を持つresultsオブジェクトを返すため、ダッシュボード、アラート、ロギングですぐに利用できます。
実際の用途#
| 小売 | マーケットストリート |
|---|---|
![]() | ![]() |
| Ultralytics YOLOによるリージョン内の人物カウント | Ultralytics YOLOによるリージョン内の群衆カウント |
Ultralytics YOLOでリージョン内の物体をカウントする方法#
CLIまたはPythonから動画ソースに対してRegionCounterソリューションを実行します。リージョンには、点のリスト(単一のゾーン)またはゾーン名を点のリストにマッピングする辞書を指定できます。以下のPython例では、名前付きの2つのリージョン内の物体をカウントし、処理済みのフレームを出力動画ファイルに書き込みます。
# 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の引数を示します。
| 引数 | 型 | デフォルト | 説明 |
|---|---|---|---|
model | str | None | Ultralytics YOLOモデルファイルへのパスです。 |
region | listまたはdict | None | 関心領域を定義するポイントです。(x, y)タプルのリスト、または複数の領域に対応する領域名からポイントリストへの辞書(RegionCounterのみ)を指定します。Noneの場合、領域を必要とするソリューションはあらかじめ定義されたデフォルト値にフォールバックします。 |
line_width | int | 2 | ソリューションが描画するボックス、キーポイント、カウントの線の太さです。 |
verbose | bool | True | 入力形状、クラス数、処理速度をフレームごとにログに記録する機能を有効にします。トラッキング処理自体は常にサイレントです。 |
RegionCounterソリューションでは、物体追跡パラメーターを使用できます。
| 引数 | 型 | デフォルト | 説明 |
|---|---|---|---|
tracker | str | 'botsort.yaml' | 使用するトラッキングアルゴリズムを指定します。組み込みオプション:botsort.yaml、bytetrack.yaml、ocsort.yaml、deepocsort.yaml、fasttrack.yaml、tracktrack.yaml。 |
conf | float | 0.25 | 検出の信頼度しきい値を設定します。値を下げるとより多くのオブジェクトを追跡できますが、誤検出が含まれる可能性があります。 |
iou | float | 0.7 | 重複する検出結果をフィルタリングするためのIntersection over Union(IoU)しきい値を設定します。 |
classes | list | None | クラスインデックスで結果をフィルタリングします。たとえば、classes=[0, 2, 3]は指定されたクラスのみを追跡します。 |
device | str | None | 推論に使用するデバイスを指定します(例:cpu、cuda:0、0)。CPU、特定のGPU、その他の計算デバイスから、モデルの実行に使用するものを選択できます。 |
imgsz | int or tuple | 640 | 推論対象の画像サイズ:正方形の場合は整数、または (height, width) のペアです。形状はモデルのストライドに合わせて調整されます。 |
max_det | int | 300 | トラッキング前にフレームごとに保持される検出の最大数。高密度なシーンにおいてソリューションが処理するオブジェクトの数を制限します。 |
quantize | int or str | None | 推論精度:PyTorchおよびTorchScriptモデルの場合は 16 (FP16)または 32 /未設定(FP32);その他のフォーマットは、その成果物とランタイムが選択する精度で計算を行います。非推奨となった half フラグに置き換わるものです。 |
さらに、以下の可視化設定にも対応しています。
| 引数 | 型 | デフォルト | 説明 |
|---|---|---|---|
show | bool | False | Trueの場合、注釈付きの画像または動画をウィンドウに表示します。開発やテスト中の即時の視覚的フィードバックに役立ちます。 |
show_conf | bool | True | 各検出のラベルの横に信頼度スコアを表示します。各検出に対するモデルの確信度を確認できます。 |
show_labels | bool | True | 可視化出力に各検出のラベルを表示します。検出されたオブジェクトをすぐに把握できます。 |
リージョンカウントの仕組み#
RegionCounterソリューションは、渡された各リージョンを、リージョンごとに少なくとも3つの点を持つポリゴンに変換します。点の単純なリストはRegion#01という名前の単一ゾーンになり、辞書を使うと独自のゾーン名を維持できます。各ゾーンはUltralyticsのパレットから選ばれた固有の色で描画されます。その後、各フレームは次の3つの手順で処理されます。
- YOLO26の追跡により、フレーム内のすべての物体を検出して追跡します
- 追跡対象の各物体について、ソリューションがバウンディングボックスの中心を計算し、どのリージョンポリゴンに含まれるかを確認します
- 各リージョンの中心にカウントを描画し、次のフレームの前にカウントをリセットします
カウントはフレームごとに再開されるため、リージョンに表示される数は現在の占有数、つまり現時点でその中にある物体の数であり、累積合計ではありません。境界を通過する物体を累積的にカウントするには、代わりにObjectCounterソリューションを使用してください。
各呼び出しはresultsオブジェクトも返します。このオブジェクトのplot_im属性にはアノテーション付きフレームが格納され、region_counts辞書はリージョン名をそのカウントにマッピングするため、数値を独自のアプリケーションロジックに渡せます。
まとめ#
Ultralytics YOLO26のRegionCounterソリューションは、数行のコードで、必要な数の名前付きゾーンにおけるリアルタイムの物体数を監視します。さらに進んだ処理として、物体カウントで境界の通過をカウントしたり、TrackZoneで単一ゾーン内の物体を追跡したり、その他のUltralytics Solutionsを確認したりできます。
FAQ#
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(追跡対象の物体数)も含まれます。resultsオブジェクトを出力すると、利用可能なすべてのフィールドを確認できます。はい。保持するクラスインデックスを指定して
classes引数を渡します。たとえば、COCOで事前学習したモデルで人物だけをカウントするにはclasses=[0]を指定します。トラッキング関連の引数の完全な一覧は、RegionCounter()Argumentsセクションにあります。RegionCounterは現在のフレームで各ポリゴンゾーン内にいる物体の数を表示します。一方、ObjectCounterは、物体がラインまたはリージョンの境界を通過する際に、進入数と退出数を追跡しながら累積的にカウントします。1つ以上のゾーンのリアルタイムの占有数にはRegionCounterを使用し、進入・退出のカウントにはObjectCounterを使用してください。線状のリージョンに対応しているのはObjectCounterのみです。

