Ultralytics YOLO27:
Get Started

Ultralytics YOLO26による領域内の物体カウント#

RegionCounterソリューションは、Ultralytics YOLO26で動画フレーム間の物体を追跡し、各フレームで、バウンディングボックスの中心が定義した各領域内にある物体をカウントします。それぞれの領域は、その時点のカウント数とともにフレーム上に描画されます。そのため、Pythonの呼び出しまたはCLIコマンド1つで、店舗の通路、道路の車線、生産エリアなど、複数のゾーンを監視できます。



視聴: Ultralytics YOLO を使って異なる領域の物体をカウント | Ultralytics Solutions

領域カウントを使う理由#

  • 1回の処理で複数ゾーン: 名前付きポリゴンの辞書を渡すと、各ゾーンの独立したカウント数がフレーム上に描画されるため、1つの動画ストリームで必要なすべてのエリアを網羅できます。
  • 追跡機能を内蔵: このソリューションは内部でYOLO26の検出と物体追跡を実行するため、別途追跡パイプラインを構築する必要はありません。
  • プログラムから利用できるカウント: 処理済みの各フレームは領域ごとのカウントを格納した辞書を含む結果オブジェクトを返すため、ダッシュボード、アラート、ログに利用できます。

実際の活用例#

小売市場の通り
Ultralytics YOLOが小売店内に描画されたポリゴン領域内の人物をカウントUltralytics YOLOが混雑した市場の通りに領域ごとのカウント数を重ねて表示
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の場合、領域が必要なSolutionsでは定義済みのデフォルト値が使用されます。
line_widthint2Solutionが描画するボックス、キーポイント、カウント表示の線幅です。
verboseboolTrue各フレームの入力shape、クラス数、処理速度を記録するSolutionのログを有効にします。トラッキング呼び出し自体は常にログを出力しません。

RegionCounterソリューションでは、物体追跡のパラメーターを使用できます。

引数種類デフォルト説明
trackerstr'tracktrack.yaml'使用するトラッキングアルゴリズムを指定します。組み込みのオプション:botsort.yaml、bytetrack.yaml、ocsort.yaml、deepocsort.yaml、fasttrack.yaml、tracktrack.yaml。
conffloat0.25検出の信頼度しきい値を設定します。値を低くすると、より多くの物体を追跡できますが、誤検出が含まれる可能性があります。
ioufloat0.7重複する検出をフィルタリングするためのIntersection over Union(IoU)しきい値を設定します。
classeslistNoneクラスインデックスで結果をフィルタリングします。たとえば、classes=[0, 2, 3]を指定すると、指定したクラスのみを追跡します。
devicestrNone推論に使用するデバイスを指定します(例:cpu、cuda:0、0)。モデル実行に使用するCPU、特定のGPU、その他の計算デバイスを選択できます。
imgszint or tuple640推論時の入力画像サイズです。正方形の場合は整数、または(height, width)のペアを指定します。形状はモデルのストライドに合わせて調整されます。
max_detint300トラッキング前にフレームごとに保持する検出の最大数です。混雑したシーンでソリューションが処理する物体数を制限します。
quantizeint or strNone推論精度:PyTorchおよびTorchScriptモデルでは16(FP16)または32/未設定(FP32)を使用します。他の形式では、アーティファクトとランタイムで選択された精度で計算されます。非推奨のhalfフラグに代わるものです。

さらに、以下の可視化設定もサポートされています。

引数種類デフォルト説明
showboolFalseTrueの場合、注釈付き画像または動画をウィンドウに表示します。開発やテスト中にすぐ視覚的なフィードバックを得るのに便利です。
show_confboolTrue各検出のラベルとともに信頼度スコアを表示します。各検出に対するモデルの確信度を確認できます。
show_labelsboolTrue可視化出力で各検出のラベルを表示します。検出されたオブジェクトをすぐに把握できます。

領域カウントの仕組み#

RegionCounterソリューションは、渡された各領域を、3点以上からなるポリゴンに変換します。点の単純なリストはRegion#01という名前の単一ゾーンになり、辞書を渡すと指定したゾーン名が保持されます。各ゾーンはUltralyticsのカラーパレットから選ばれた色で描画されます。各フレームは次の3つの手順で処理されます。

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

カウントはフレームごとにリセットされるため、領域に表示される数は累計ではなく、その時点で領域内にある物体の数、つまり現在の占有数です。境界を越えた物体を累積してカウントするには、代わりにObjectCounterソリューションを使用してください。

各呼び出しは結果オブジェクトも返します。このオブジェクトのplot_im属性には注釈付きフレームが格納され、region_counts辞書では領域名とカウント数が対応付けられているため、数値を独自のアプリケーションロジックに渡せます。

結論#

Ultralytics YOLO26のRegionCounterソリューションは、数行のコードで必要な数の名前付きゾーンについて、リアルタイムの物体数を監視します。さらに活用するには、物体カウントで境界を越える物体を数え、TrackZoneで単一ゾーン内の物体を追跡するか、ほかのUltralytics Solutionsをご覧ください。

よくある質問#

  • Ultralytics YOLO26は、フレーム内のすべての物体を追跡し、各物体のバウンディングボックスの中心がユーザー定義ポリゴン内にあるかを判定して、領域内の物体をカウントします。領域に表示されるカウント数は累計ではなく、そのフレーム時点の占有数です。設定オプションはRegionCounter()引数のセクションに記載されています。

  • メインの例のように、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() 引数セクションに記載されています。

  • RegionCounter は現在のフレーム内の各ポリゴンゾーンに含まれるオブジェクト数を表示します。一方、ObjectCounter は、オブジェクトがラインまたは領域の境界を通過するたびに累積カウントし、進入数と退出数を追跡します。1つ以上のゾーンのリアルタイムの占有状況には RegionCounter を、進入と退出のカウントには ObjectCounter を使用してください。ライン状の領域に対応しているのは ObjectCounter のみです。

コメント