Ultralytics YOLO26を使用したTrackZone#
TrackZoneとは何ですか?#
TrackZoneは、フレーム全体ではなく、指定した領域内のオブジェクトの監視に特化しています。Ultralytics YOLO26を基盤として、動画やライブカメラフィードのゾーン内で、オブジェクト検出とトラッキングを統合します。YOLO26の高度なアルゴリズムとディープラーニング技術により、リアルタイムのユースケースに最適な選択肢となり、群衆監視やセキュリティ監視などのアプリケーションで、正確かつ効率的なオブジェクトトラッキングを実現します。
Watch: How to Track Objects in Region using Ultralytics YOLO26 | TrackZone 🚀
ゾーン内のオブジェクトトラッキング(TrackZone)のメリット#
- 対象を絞った分析: 特定のゾーン内でオブジェクトを追跡することで、より焦点を絞った洞察が得られます。入口や立入禁止区域など、関心のあるエリアを正確に監視・分析できます。
- 後続処理の負荷軽減: ゾーン外のオブジェクトを無視することで、TrackZoneは無関係な検出結果を除外します。そのため、上位のロジックでカウント、記録、アラートの対象にするオブジェクトが少なくなります。検出はゾーンをタイトにクロップした画像ではなく、マスク処理したフルサイズのフレームに対して実行されるため、メリットはモデル推論の高速化ではなく、よりクリーンで焦点の絞られた出力が得られることです。
- セキュリティの強化: ゾーンベースのトラッキングにより、重要なエリアを監視してセキュリティ監視を強化し、異常な活動やセキュリティ侵害の早期検出に役立ちます。
- スケーラブルなソリューション: 特定のゾーンに焦点を絞れるため、TrackZoneは小売スペースから産業環境まで、さまざまなシナリオに適応できます。シームレスな統合と拡張性も確保できます。
実際の用途#
| 農業 | 交通 |
|---|---|
![]() | ![]() |
| Ultralytics YOLO26を使用したフィールド内の植物のトラッキング | Ultralytics YOLO26を使用した道路上の車両のトラッキング |
# 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の引数を示します。
| 引数 | 型 | デフォルト | 説明 |
|---|---|---|---|
model | str | None | Ultralytics YOLOモデルファイルへのパスです。 |
region | listまたはdict | None | 関心領域を定義するポイントです。(x, y)タプルのリスト、または複数の領域に対応する領域名からポイントリストへの辞書(RegionCounterのみ)を指定します。Noneの場合、領域を必要とするソリューションはあらかじめ定義されたデフォルト値にフォールバックします。 |
line_width | int | 2 | ソリューションが描画するボックス、キーポイント、カウントの線の太さです。 |
verbose | bool | True | 入力形状、クラス数、処理速度をフレームごとにログに記録する機能を有効にします。トラッキング処理自体は常にサイレントです。 |
TrackZoneソリューションは、trackパラメーターに対応しています。
| 引数 | 型 | デフォルト | 説明 |
|---|---|---|---|
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 | 可視化出力に各検出のラベルを表示します。検出されたオブジェクトをすぐに把握できます。 |
ゾーン内のオブジェクトをカウントする#
トラッカーを呼び出すたびに、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つのソリューションはすべてリージョンに対応していますが、それぞれ異なる問いに答えます。
ソリューション 用途 一般的な出力 TrackZone 1つの凸ゾーン内でオブジェクトを追跡し、ライブの占有状況を監視する 追跡対象のIDと、ゾーンの total_tracksObjectCounter ラインを横切る、またはリージョンに出入りするオブジェクトをカウントする 累積した入場数と退場数 RegionCounter 1つ以上の任意のリージョン(非凸リージョンを含む)内のオブジェクトをカウントする リージョンごとのオブジェクト数 1つのエリア内で継続的にトラッキングしたい場合はTrackZoneを、複数のゾーンや非凸形状が必要な場合はRegionCounterを選択してください。

