Ultralytics YOLO27:

Ultralytics YOLO26を使用したTrackZone#

TrackZoneとは何ですか?#

Open TrackZone In Colab

TrackZoneは、フレーム全体ではなく、指定した領域内のオブジェクトの監視に特化しています。Ultralytics YOLO26を基盤として、動画やライブカメラフィードのゾーン内で、オブジェクト検出とトラッキングを統合します。YOLO26の高度なアルゴリズムとディープラーニング技術により、リアルタイムのユースケースに最適な選択肢となり、群衆監視やセキュリティ監視などのアプリケーションで、正確かつ効率的なオブジェクトトラッキングを実現します。



Watch: How to Track Objects in Region using 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の場合、領域を必要とするソリューションはあらかじめ定義されたデフォルト値にフォールバックします。
line_widthint2ソリューションが描画するボックス、キーポイント、カウントの線の太さです。
verboseboolTrue入力形状、クラス数、処理速度をフレームごとにログに記録する機能を有効にします。トラッキング処理自体は常にサイレントです。

TrackZoneソリューションは、trackパラメーターに対応しています。

引数デフォルト説明
trackerstr'botsort.yaml'使用するトラッキングアルゴリズムを指定します。組み込みオプション:botsort.yamlbytetrack.yamlocsort.yamldeepocsort.yamlfasttrack.yamltracktrack.yaml
conffloat0.25検出の信頼度しきい値を設定します。値を下げるとより多くのオブジェクトを追跡できますが、誤検出が含まれる可能性があります。
ioufloat0.7重複する検出結果をフィルタリングするためのIntersection over Union(IoU)しきい値を設定します。
classeslistNoneクラスインデックスで結果をフィルタリングします。たとえば、classes=[0, 2, 3]は指定されたクラスのみを追跡します。
devicestrNone推論に使用するデバイスを指定します(例:cpucuda:00)。CPU、特定のGPU、その他の計算デバイスから、モデルの実行に使用するものを選択できます。
imgszint or tuple640推論対象の画像サイズ:正方形の場合は整数、または (height, width) のペアです。形状はモデルのストライドに合わせて調整されます。
max_detint300トラッキング前にフレームごとに保持される検出の最大数。高密度なシーンにおいてソリューションが処理するオブジェクトの数を制限します。
quantizeint or strNone推論精度: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()

FAQ#

  • 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スクリプトでゾーンを直接定義・調整できるため、監視対象エリアを正確に制御できます。

    # Define region points
    region_points = [(150, 150), (1130, 150), (1130, 570), (150, 570)]
    
    # Initialize trackzone
    trackzone = solutions.TrackZone(
        show=True,  # display the output
        region=region_points,  # pass region points
    )

    TrackZoneは点を凸包に縮約するため、監視対象エリアの周囲に沿った順序で点をリストしてください。

  • 3つのソリューションはすべてリージョンに対応していますが、それぞれ異なる問いに答えます。

    ソリューション用途一般的な出力
    TrackZone1つの凸ゾーン内でオブジェクトを追跡し、ライブの占有状況を監視する追跡対象のIDと、ゾーンのtotal_tracks
    ObjectCounterラインを横切る、またはリージョンに出入りするオブジェクトをカウントする累積した入場数と退場数
    RegionCounter1つ以上の任意のリージョン(非凸リージョンを含む)内のオブジェクトをカウントするリージョンごとのオブジェクト数

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

コメント