Ultralytics YOLO26による物体追跡ヒートマップ#
Ultralytics YOLO26のヒートマップソリューションは、ビデオフレーム間で物体を追跡し、蓄積された移動の強度を各フレームに重ね合わせます。これにより、活発なエリアは暖色で明るく表示され、静かなエリアは寒色のままになります。YOLO26の物体追跡を基盤としており、1回のPython呼び出しまたはCLIコマンドで、あらゆるビデオを交通の流れ、人の群れの動き、滞留ゾーンを明らかにする空間的な活動マップに変換できます。
Watch: How to Create Heatmaps with Ultralytics YOLO26 | Visualize Object Activity | VisionAI in Retail 🚀
ビデオ分析にヒートマップを使用する理由#
- 活動パターンを一目で把握: 追跡対象の物体が時間を過ごす場所では強度が蓄積されるため、手作業でフレームを1枚ずつ確認しなくても、交通量の多いレーン、人気のある棚、群衆のボトルネックが目立ちます。
- 追跡機能を内蔵: ソリューションはYOLO26の検出と追跡を内部で実行するため、別途トラッキングパイプラインを接続する必要がありません。
- 同じ処理でカウント:
regionを渡すと、ヒートマップの生成中にゾーンへ入る物体とゾーンから出る物体をカウントでき、2つの分析タスクを1回の実行にまとめられます。
実際の用途#
| 交通 | 小売 |
|---|---|
![]() | ![]() |
| Ultralytics YOLOの交通ヒートマップ | Ultralytics YOLOの小売ヒートマップ |
Ultralytics YOLOでヒートマップを生成する方法#
CLIまたはPythonから、ビデオソースに対してヒートマップソリューションを実行します。Pythonの例では、処理済みフレームを出力ビデオファイルに書き込みます。
# Run a heatmap example
yolo solutions heatmap show=True
# Pass a source video
yolo solutions heatmap source="path/to/video.mp4"
# Pass a custom colormap
yolo solutions heatmap colormap=cv2.COLORMAP_INFERNO
# Heatmaps + object counting
yolo solutions heatmap region="[(20, 400), (1080, 400), (1080, 360), (20, 360)]"Heatmap()の引数#
以下にHeatmapの引数を示します。
| 引数 | 型 | デフォルト | 説明 |
|---|---|---|---|
model | str | None | Ultralytics YOLOモデルファイルへのパスです。 |
colormap | int | cv2.COLORMAP_DEEPGREEN | ヒートマップに使用するカラーマップです。 |
show_in | bool | True | ビデオストリームに入力カウントを表示するかどうかを制御するフラグです。 |
show_out | bool | True | ビデオストリームに出力カウントを表示するかどうかを制御するフラグです。 |
region | listまたはdict | None | 関心領域を定義するポイントです。(x, y)タプルのリスト、または複数の領域に対応する領域名からポイントリストへの辞書(RegionCounterのみ)を指定します。Noneの場合、領域を必要とするソリューションはあらかじめ定義されたデフォルト値にフォールバックします。 |
line_width | int | 2 | ソリューションが描画するボックス、キーポイント、カウントの線の太さです。 |
verbose | bool | True | 入力形状、クラス数、処理速度をフレームごとにログに記録する機能を有効にします。トラッキング処理自体は常にサイレントです。 |
Heatmapソリューションでは、異なる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 | 可視化出力に各検出のラベルを表示します。検出されたオブジェクトをすぐに把握できます。 |
ヒートマップのカラーマップ#
colormap引数には、任意のOpenCVカラーマップを指定できます。cv2モジュールの定数を渡します。例: colormap=cv2.COLORMAP_INFERNO
| カラーマップ名 | 説明 |
|---|---|
cv2.COLORMAP_AUTUMN | Autumnカラーマップ |
cv2.COLORMAP_BONE | Boneカラーマップ |
cv2.COLORMAP_JET | Jetカラーマップ |
cv2.COLORMAP_WINTER | Winterカラーマップ |
cv2.COLORMAP_RAINBOW | Rainbowカラーマップ |
cv2.COLORMAP_OCEAN | Oceanカラーマップ |
cv2.COLORMAP_SUMMER | Summerカラーマップ |
cv2.COLORMAP_SPRING | Springカラーマップ |
cv2.COLORMAP_COOL | Coolカラーマップ |
cv2.COLORMAP_HSV | HSV(色相、彩度、明度)カラーマップ |
cv2.COLORMAP_PINK | Pinkカラーマップ |
cv2.COLORMAP_HOT | Hotカラーマップ |
cv2.COLORMAP_PARULA | Parulaカラーマップ |
cv2.COLORMAP_MAGMA | Magmaカラーマップ |
cv2.COLORMAP_INFERNO | Infernoカラーマップ |
cv2.COLORMAP_PLASMA | Plasmaカラーマップ |
cv2.COLORMAP_VIRIDIS | Viridisカラーマップ |
cv2.COLORMAP_CIVIDIS | Cividisカラーマップ |
cv2.COLORMAP_TWILIGHT | Twilightカラーマップ |
cv2.COLORMAP_TWILIGHT_SHIFTED | Shifted Twilightカラーマップ |
cv2.COLORMAP_TURBO | Turboカラーマップ |
cv2.COLORMAP_DEEPGREEN | Deep Greenカラーマップ |
ヒートマップの仕組み#
ヒートマップソリューションはObjectCounterクラスを拡張しています。最初に処理するフレームで、フレームサイズに合わせた空の強度レイヤーを作成します。その後、各フレームを次の2段階で処理します。
- YOLO26の追跡により、フレーム内のすべての物体を検出して追跡します
- 追跡対象の各物体について、バウンディングボックスの中心を中心とする円形領域内のヒートマップ強度を増加させます
フレームごとに1回、蓄積された強度レイヤーを正規化し、選択したカラーマップで色付けして、元のフレームとブレンドします。少なくとも1つの物体が追跡されるとオーバーレイが表示されます。追跡対象の物体がないフレームは、ヒートマップのオーバーレイなしで表示されます。
結果として、時間の経過とともに構築される動的な可視化が得られ、ビデオデータ内の交通パターン、群衆の動き、その他の空間的な行動を明らかにできます。regionを設定すると、ヒートマップの構築中に、その領域へ入る物体と領域から出る物体もカウントします。
まとめ#
Ultralytics YOLO26のヒートマップソリューションは、数行のコードで物体追跡の結果を直感的な活動オーバーレイに変換します。さらに活用するには、物体カウントと組み合わせたり、他のUltralyticsソリューションを試したり、基盤となる追跡モードについて確認したりできます。
FAQ#
Ultralytics YOLO26は、ビデオフレーム間で物体を追跡し、追跡対象の各物体の位置に強度値を蓄積してから、その結果を色付けし、元のフレームとブレンドすることでヒートマップを生成します。物体が頻繁に現れる場所や長く留まる場所では強度が高くなり、暖色で表示されます。設定オプションについては、
Heatmap()の引数セクションを参照してください。メインの例に示すように、OpenCVの
cv2.VideoWriterを使用し、処理した各フレームに対してresults.plot_imを書き込みます。plot_im属性には、ヒートマップのオーバーレイが適用済みのフレームが格納されます。はい。線、長方形、またはポリゴンの点を指定した
region引数をHeatmap()に渡すと、ヒートマップの構築中に、その領域へ入る物体と領域から出る物体をカウントします。返される結果には、in_count、out_count、およびクラスごとのカウントが含まれます。領域の設定については、物体カウントガイドを参照してください。保持するクラスインデックスを指定して、
classes引数をHeatmap()に渡します。たとえば、classes=[0, 2]は人物と車両のみ(COCOクラスインデックス0と2)からヒートマップを生成します。import cv2 from ultralytics import solutions cap = cv2.VideoCapture("path/to/video.mp4") heatmap = solutions.Heatmap(show=True, model="yolo26n.pt", classes=[0, 2]) while cap.isOpened(): success, im0 = cap.read() if not success: break results = heatmap(im0) cap.release() cv2.destroyAllWindows()Ultralytics YOLO26のヒートマップは、物体検出、追跡、強度の蓄積、オーバーレイの描画を1回の呼び出しに統合しています。一方、OpenCVやMatplotlibなどの汎用ツールでは、そのパイプラインを自分で構築する必要があります。このソリューションはビデオストリームをリアルタイムで処理し、永続的な追跡とカスタマイズ可能なカラーマップを標準でサポートします。基盤となるモデルの詳細については、YOLO26モデルページを参照してください。

