Link to this sectionUltralytics YOLO26による領域内のオブジェクトカウント#
The RegionCounter solution in Ultralytics YOLO26 tracks objects across video frames and, on every frame, counts the objects whose bounding-box center falls inside each region you define. Each region is drawn on the frame with its own live count, so you can monitor several zones, such as store aisles, road lanes, or production areas, with a single Python call or CLI command.
Watch: Object Counting in Different Regions using Ultralytics YOLO | Ultralytics Solutions
Link to this sectionなぜ領域カウントを使用するのか?#
- 1回のパスで複数のゾーンを処理: 名前付きポリゴンの辞書を渡すことで、各ゾーンで独立したカウントがフレーム上に描画されるため、1つのビデオストリームで関心のあるすべての領域をカバーできます。
- 追跡機能が統合済み: このソリューションは内部でYOLO26の検出とオブジェクト追跡を実行するため、別途追跡パイプラインを構築する必要はありません。
- プログラムで読み取り可能なカウント数: 処理された各フレームは、領域カウントの辞書を含む結果オブジェクトを返します。これはダッシュボード、アラート、ログ記録にすぐに利用できます。
Link to this section現実世界の応用例#
| 小売 | マーケットストリート |
|---|---|
![]() | ![]() |
| Ultralytics YOLOによる領域内の人数カウント | Ultralytics YOLOによる領域内の群衆カウント |
Link to this sectionUltralytics 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)]"Link to this sectionRegionCounter()の引数#
RegionCounterの引数に関する表を以下に示します:
| 引数 | タイプ | デフォルト | 説明 |
|---|---|---|---|
model | str | None | Ultralytics YOLOモデルファイルへのパス。 |
region | list または dict | None | 関心領域を定義するポイントです。(x, y) タプルのリスト、または(RegionCounter の場合のみ)領域名をポイントリストにマッピングする辞書のいずれかです。None の場合、領域を必要とするソリューションは定義済みのデフォルトにフォールバックします。 |
RegionCounterソリューションでは、オブジェクトトラッキングパラメータの使用が可能です:
| 引数 | タイプ | デフォルト | 説明 |
|---|---|---|---|
tracker | str | 'botsort.yaml' | 使用するトラッキングアルゴリズムを指定します。組み込みのオプションは、botsort.yaml、bytetrack.yaml、ocsort.yaml、deepocsort.yaml、fasttrack.yaml、tracktrack.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 | 視覚的出力において各検出のラベルを表示します。検出されたオブジェクトを即座に理解するのに役立ちます。 |
Link to this section領域カウントの仕組み#
RegionCounterソリューションは、渡された各領域をポリゴンに変換します(1領域あたり少なくとも3点が必要です)。単なる点のリストはRegion#01という名前の単一ゾーンとなり、辞書を使用すると独自のゾーン名を保持できます。各ゾーンはUltralyticsパレットから割り当てられた独自の色で描画されます。その後、各フレームは以下の3つのステップで処理されます。
- YOLO26のトラッキングにより、フレーム内のすべてのオブジェクトを検出および追跡する
- 追跡中の各オブジェクトについて、ソリューションはバウンディングボックスの中心を計算し、どの領域ポリゴン内に含まれているかをチェックします。
- 各領域のカウントがその中心に描画され、次のフレームの前にカウントがリセットされます。
カウントはフレームごとにリセットされるため、領域に表示される数は現在の占有率、つまり「今その中に何個のオブジェクトがあるか」を示しており、累積合計ではありません。境界線を横切るオブジェクトを累積的にカウントするには、代わりにObjectCounterソリューションを使用してください。
また、各呼び出しは結果オブジェクトを返します。このオブジェクトのplot_im属性には注釈付きフレームが保持され、region_counts辞書には領域名とカウントのマッピングが含まれているため、独自のアプリケーションロジックに数値を反映させることができます。
Link to this section結論#
Ultralytics YOLO26のRegionCounterソリューションは、数行のコードで必要な数の名前付きゾーンにおけるライブオブジェクトカウントを監視します。さらに活用したい場合は、オブジェクトカウントで境界線の通過をカウントしたり、TrackZoneで単一ゾーン内のオブジェクトを追跡したり、その他のUltralyticsソリューションを試してみてください。
Link to this sectionよくある質問 (FAQ)#
Link to this sectionUltralytics YOLO26における領域内のオブジェクトカウントはどのように機能しますか?#
Ultralytics YOLO26は、フレーム内のすべてのオブジェクトを追跡し、バウンディングボックスの中心がユーザー定義の各ポリゴン内にあるかどうかをテストすることで、領域内のオブジェクトをカウントします。領域に表示されるカウントはそのフレーム時点での現在の占有率であり、累積合計ではありません。構成オプションはRegionCounter()の引数セクションに記載されています。
Link to this section一度に複数の領域でオブジェクトをカウントするにはどうすればよいですか?#
Pass the region argument as a dictionary that maps zone names to point lists, as in the main example:
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)各名前付きゾーンは、独立したカウントとともに独自の色で描画されます。
Link to this sectionプログラムで領域カウントを取得するにはどうすればよいですか?#
各regioncounter(im0)の呼び出しで返されるオブジェクトには、領域名とカウントをマッピングするregion_counts辞書が含まれています。これに加えて、plot_im(注釈付きフレーム)とtotal_tracks(追跡中のオブジェクト数)も含まれます。結果オブジェクトを表示して、使用可能なすべてのフィールドを確認してください。
Link to this section領域内で特定のオブジェクトクラスのみをカウントできますか?#
はい。classes引数に保持したいクラスインデックスを渡します。例えば、COCOで事前学習されたモデルを使用して人物のみをカウントするにはclasses=[0]と指定します。追跡関連の引数の完全なリストはRegionCounter()の引数セクションにあります。
Link to this sectionRegionCounterとObjectCounterの違いは何ですか?#
RegionCounterは現在のフレームで各ポリゴンゾーン内にいくつのオブジェクトがあるかを示し、一方ObjectCounterは線や領域の境界を横切るオブジェクトを累積的にカウントして、出入りの合計を追跡します。1つ以上のゾーンのライブ占有率を確認する場合はRegionCounterを、出入りのカウントにはObjectCounterを使用してください。なお、線状の領域はObjectCounterのみでサポートされています。

