Ultralytics YOLO26によるオブジェクトトラッキングヒートマップ#
Ultralytics YOLO26のHeatmap solutionは、ビデオフレーム全体でオブジェクトを追跡し、蓄積された動きの強度を各フレームに重ね合わせることで、混雑したエリアは暖色で光り、静かなエリアはクールなままになります。YOLO26のobject trackingをベースにしており、1回のPython呼び出しまたはCLIコマンドで、ビデオを交通の流れ、群衆の動き、滞留ゾーンを明らかにする空間アクティビティマップに変換します。
Watch: Heatmaps using Ultralytics YOLO26
ビデオ分析にヒートマップを使用する理由#
- アクティビティパターンを一目で把握: 追跡対象のオブジェクトが滞在する場所ほど強度が高まるため、交通量の多い車線、人気のある棚、群衆のボトルネックなどが、フレーム単位で手動で確認することなく一目瞭然となります。
- トラッキング機能を内蔵: このソリューションは、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 の場合、領域を必要とするソリューションは事前定義されたデフォルトにフォールバックします。 |
また、Heatmapソリューションでさまざまなtrack引数を適用することもできます。
| 引数 | タイプ | デフォルト | 説明 |
|---|---|---|---|
tracker | str | 'tracktrack.yaml' | 使用するトラッキングアルゴリズムを指定します。ビルトインオプション: botsort.yaml、bytetrack.yaml、ocsort.yaml、deepocsort.yaml、fasttrack.yaml、tracktrack.yaml。 |
conf | float | 0.1 | 検出の信頼度しきい値を設定します。低い値を設定するとより多くの物体を追跡できますが、誤検知が含まれる可能性があります。 |
iou | float | 0.7 | 重なり合う検出をフィルタリングするためのIntersection over Union (IoU) 閾値を設定します。 |
classes | list | None | クラスインデックスによって結果をフィルターします。たとえば、classes=[0, 2, 3]は指定されたクラスのみを追跡します。 |
verbose | bool | True | 追跡結果の表示を制御し、追跡された物体の視覚的な出力を行います。 |
device | str | None | 推論用のデバイスを指定します(例: cpu、cuda:0、または0)。ユーザーはモデルの実行にCPU、特定のGPU、またはその他の計算デバイスを選択できます。 |
さらに、サポートされている可視化引数は以下の通りです:
| 引数 | タイプ | デフォルト | 説明 |
|---|---|---|---|
show | bool | False | True の場合、注釈付きの画像または動画をウィンドウに表示します。開発やテスト中の即座な視覚的フィードバックに役立ちます。 |
line_width | int or None | None | バウンディングボックスの線の太さを指定します。None の場合、画像のサイズに基づいて線の太さが自動的に調整されます。明瞭さのための視覚的なカスタマイズを提供します。 |
show_conf | bool | True | 各検出の信頼度スコアをラベルと一緒に表示します。各検出に対するモデルの確信度を把握できます。 |
show_labels | bool | True | 視覚的出力において各検出のラベルを表示します。検出されたオブジェクトを即座に理解するのに役立ちます。 |
ヒートマップのカラーマップ#
colormap引数は、任意のOpenCV colormapを受け付けます。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 カラーマップ |
ヒートマップの仕組み#
Heatmap solutionは、ObjectCounterクラスを拡張します。最初に処理されるフレームで、フレームサイズに一致する空白の強度レイヤーを作成します。その後、各フレームは2つのステップで処理されます。
- YOLO26のトラッキングにより、フレーム内のすべてのオブジェクトを検出および追跡する
- 追跡された各オブジェクトに対し、そのバウンディングボックスの中心にある円形領域内でヒートマップの強度を増加させる
フレームごとに1回、蓄積された強度レイヤーを正規化し、選択されたカラーマップで着色し、元のフレームと合成します。オーバーレイは少なくとも1つのオブジェクトが追跡されるとすぐに表示されます。追跡対象のオブジェクトがないフレームは、ヒートマップオーバーレイなしで表示されます。
その結果、時間の経過とともに構築される動的な視覚化が生成され、ビデオデータ内の交通パターン、群衆の移動、その他の空間的行動が明らかになります。regionが設定されている場合、このソリューションはヒートマップの構築と同時に、その領域に出入りするobject countingも行います。
結論#
Ultralytics YOLO26 Heatmapソリューションは、数行のコードでオブジェクト追跡結果を直感的なアクティビティオーバーレイに変換します。さらに活用するには、object countingと組み合わせたり、他のUltralytics Solutionsを探索したり、基盤となるtracking modeについて読んだりしてください。
よくある質問 (FAQ)#
Ultralytics YOLO26はどのようにしてビデオからヒートマップを生成しますか?#
Ultralytics YOLO26は、ビデオフレームにわたってオブジェクトを追跡し、追跡された各オブジェクトの位置で強度値を累積し、結果を色付けして元のフレームとブレンドすることでヒートマップを生成します。オブジェクトが頻繁に出現するエリアや長居するエリアはより高い強度が蓄積され、暖色でレンダリングされます。設定オプションについては、Heatmap() Argumentsセクションを参照してください。
ヒートマップの出力をビデオファイルとして保存するにはどうすればよいですか?#
main exampleに示されているように、OpenCVのcv2.VideoWriterを使用して、処理されたすべてのフレームに対してresults.plot_imを書き込みます。plot_im属性には、すでにヒートマップのオーバーレイが適用されたフレームが保持されます。
ヒートマップとオブジェクトカウントを組み合わせることはできますか?#
はい。線、長方形、または多角形のポイントを指定したregion引数をHeatmap()に渡すと、ヒートマップの構築と同時にその領域に出入りするオブジェクトをカウントします。返される結果には、in_count、out_count、およびクラスごとのカウントが含まれます。領域の設定詳細については、object counting guideを参照してください。
Ultralytics YOLO26 を使用して、ヒートマップで特定のオブジェクトクラスのみを可視化するにはどうすればよいですか?#
保持したいクラスインデックスを指定したclasses引数をHeatmap()に渡します。例えば、classes=[0, 2]は人(person)と車(car)(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のヒートマップが、OpenCVやMatplotlibなどの他のデータ視覚化ツールと異なる点は何ですか?#
Ultralytics YOLO26のヒートマップは、object detection、トラッキング、強度累積、およびオーバーレイレンダリングを単一の呼び出しに統合しますが、OpenCVやMatplotlibなどの汎用ツールでは、そのパイプラインを自分で構築する必要があります。このソリューションはビデオストリームをリアルタイムで処理し、永続的なトラッキングとカスタマイズ可能なカラーマップをデフォルトでサポートします。基盤となるモデルの詳細については、YOLO26 model pageを参照してください。

