Ultralytics YOLO27:
Get Started

Ultralytics YOLO26によるTrackZone#

TrackZoneとは?#

Open TrackZone In Colab

TrackZoneは、フレーム全体ではなく、指定した領域内の物体の監視に特化しています。Ultralytics YOLO26を基盤とし、動画やライブカメラ映像のゾーン内で、物体検出と追跡を実行します。YOLO26の高度なアルゴリズムとディープラーニング技術は、リアルタイムのユースケースに最適であり、群衆の監視や監視カメラなどのアプリケーションで、正確かつ効率的な物体追跡を実現します。



視聴: Ultralytics YOLO26 で領域内の物体を追跡する方法 | TrackZone 🚀

ゾーン内の物体追跡(TrackZone)のメリット#

  • 対象を絞った分析: 特定のゾーン内で物体を追跡すると、より焦点を絞ったインサイトが得られます。入口や立入制限区域など、関心のあるエリアを正確に監視・分析できます。
  • 後続処理の負荷軽減: ゾーン外の物体を無視することで、TrackZoneは無関係な検出結果を除外します。そのため、その結果を利用して構築するロジックで、カウント、記録、アラートの対象となる物体が少なくなります。検出はゾーンを厳密に切り抜いた画像ではなく、マスクを適用した元のサイズのフレーム上で引き続き実行されるため、メリットはモデル推論の高速化ではなく、出力がより明確になり、対象を絞れることです。
  • セキュリティの強化: ゾーン追跡では、重要なエリアを監視することで監視機能を向上させ、異常な活動やセキュリティ侵害の早期検知に役立ちます。
  • スケーラブルなソリューション: 特定のゾーンに焦点を絞る機能により、TrackZoneは小売店舗から産業施設まで、さまざまなシナリオに対応できます。また、シームレスな統合とスケーラビリティを実現します。

実際の活用例#

農業交通
Ultralytics YOLO26による農地の植物追跡Ultralytics YOLO26による道路上の車両追跡
Ultralytics YOLO26による農地の植物追跡Ultralytics YOLO26による道路上の車両追跡
Ultralytics YOLOによるTrackZone
# Run a trackzone example
yolo solutions trackzone show=True

# Pass a source video
yolo solutions trackzone source="path/to/video.mp4" show=True

# Pass region coordinates
yolo solutions trackzone show=True region="[(150, 150), (1130, 150), (1130, 570), (150, 570)]"

TrackZoneは、監視するフレーム内の領域を把握するためにregionリストを使用します。対象とする物理的なゾーン(ドア、ゲートなど)に合わせてポリゴンを定義し、設定時にはshow=Trueを有効にして、オーバーレイが動画フィードと一致することを確認してください。

追跡ゾーンの定義
  • regionの各エントリーは、動画フレーム内の(x, y)ピクセル座標です。監視対象エリアの外周に沿って接続する順序でポイントを列挙してください。
  • 座標はフレーム解像度に依存するため、1280×720の映像用に設定した領域は640×480の映像には一致しません。設定時にはshow=Trueを有効にして、オーバーレイが映像フィードと一致することを確認してください。
  • TrackZoneはポイントを凸包に変換するため、凹形状はすべてのポイントを含む最小の凸多角形に単純化されます。非凸形状や複数の個別領域には、代わりにRegionCounterソリューションを使用してください。
  • regionを省略すると、デフォルトゾーンとして[(75, 75), (565, 75), (565, 285), (75, 285)]が使用されます。

TrackZoneの引数#

TrackZoneの引数を以下の表に示します。

引数種類デフォルト説明
modelstrNoneUltralytics YOLOモデルファイルへのパスです。
regionlistまたはdictNone関心領域を定義するポイントです。(x, y)タプルのリスト、または複数領域用に領域名とポイントリストを対応付ける辞書(RegionCounterのみ)を指定します。Noneの場合、領域が必要なSolutionsでは定義済みのデフォルト値が使用されます。
line_widthint2Solutionが描画するボックス、キーポイント、カウント表示の線幅です。
verboseboolTrue各フレームの入力shape、クラス数、処理速度を記録するSolutionのログを有効にします。トラッキング呼び出し自体は常にログを出力しません。

TrackZoneソリューションは、trackパラメーターをサポートしています。

引数種類デフォルト説明
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推論精度: CPU以外で実行するPyTorchおよびTorchScriptモデルでは、16(FP16)または32/未設定(FP32)を使用します。その他の形式では、アーティファクトとランタイムによって選択される精度が使用されます。非推奨のhalf引数を置き換えます。

さらに、以下の可視化オプションを使用できます。

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

ゾーン内の物体をカウント#

トラッカーを呼び出すたびにSolutionResultsオブジェクトが返されます。このオブジェクトのtotal_tracks属性には、ゾーン内で現在追跡されている物体の数が格納されています。各フレームで値を読み取ることで、ライブの利用状況を監視できます。たとえば、入口や立入制限区域の混雑状況を記録できます。

import cv2

from ultralytics import solutions

cap = cv2.VideoCapture("path/to/video.mp4")
assert cap.isOpened(), "Error reading video file"

region_points = [(150, 150), (1130, 150), (1130, 570), (150, 570)]
trackzone = solutions.TrackZone(show=False, region=region_points, model="yolo26n.pt")

while cap.isOpened():
    success, im0 = cap.read()
    if not success:
        break
    results = trackzone(im0)
    print(f"Objects currently in zone: {results.total_tracks}")  # live zone occupancy

cap.release()

よくある質問#

  • Ultralytics YOLO26を使用すると、動画フレーム内の定義済みエリアやゾーンで物体を簡単に追跡できます。以下のコマンドを使用するだけで追跡を開始できます。この方法は効率的な分析と正確な結果を実現するため、監視、群衆管理、ゾーン追跡が必要なあらゆるシナリオに適しています。

    yolo solutions trackzone source="path/to/video.mp4" show=True
  • 数行のコードだけで特定のゾーン内の物体追跡を設定できるため、プロジェクトに簡単に統合できます。

    import cv2
    
    from ultralytics import solutions
    
    cap = cv2.VideoCapture("path/to/video.mp4")
    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("trackzone_output.avi", cv2.VideoWriter_fourcc(*"mp4v"), fps, (w, h))
    
    trackzone = solutions.TrackZone(
        show=True, region=[(150, 150), (1130, 150), (1130, 570), (150, 570)], model="yolo26n.pt"
    )
    
    while cap.isOpened():
        success, im0 = cap.read()
        if not success:
            break
        results = trackzone(im0)
        video_writer.write(results.plot_im)
    
    cap.release()
    video_writer.release()
    cv2.destroyAllWindows()
  • Ultralytics TrackZoneを使用した動画処理では、ゾーンのポイントを簡単にカスタマイズして設定できます。Pythonスクリプトでゾーンを直接定義・調整することで、監視対象エリアを正確に制御できます。

    from ultralytics import solutions
    
    # 領域のポイントを定義
    region_points = [(150, 150), (1130, 150), (1130, 570), (150, 570)]
    
    # TrackZoneを初期化
    trackzone = solutions.TrackZone(
        show=True,  # 出力を表示する
        region=region_points,  # 領域の点を渡す
    )

    TrackZoneはポイントを凸包に変換するため、凹形の輪郭はすべてのポイントを含む最小の凸多角形に単純化される点に注意してください。

  • 3つのソリューションはすべて領域を扱いますが、それぞれ異なる用途に対応しています。

    ソリューション用途一般的な出力
    TrackZone単一の凸ゾーン内で物体を追跡し、現在の利用状況を監視します追跡対象のIDと、ゾーンのtotal_tracks
    ObjectCounterラインを横切る物体や、領域に出入りする物体をカウントします累積入退場数
    RegionCounter1つ以上の任意の領域(非凸形状を含む)内の物体をカウントします領域ごとの物体数

    1つのエリア内で継続的に追跡する場合はTrackZoneを、複数のゾーンや非凸形状が必要な場合はRegionCounterを選択してください。

コメント