Ultralytics YOLO27:
Get Started

Ultralytics YOLO26による物体追跡ヒートマップ#

Open Heatmaps In Colab

Heatmapソリューションは、Ultralytics YOLO26でビデオフレーム間の物体を追跡し、累積した移動の強度を各フレームに重ねて表示します。そのため、混雑したエリアは暖色に、静かなエリアは寒色に表示されます。YOLO26の物体追跡を基盤とし、単一のPython呼び出しまたはCLIコマンドでビデオを空間アクティビティマップに変換して、交通の流れ、人の移動、滞留エリアを可視化します。



視聴: Ultralytics YOLO26 でヒートマップを作成する方法 | 物体の動きを可視化 | 小売業の VisionAI 🚀

ビデオ分析にヒートマップを使用する理由#

  • アクティビティのパターンをひと目で把握: 追跡対象の物体が滞在した場所に応じて強度が累積するため、フレームを1つずつ手作業で確認しなくても、交通量の多い通路、人気の棚、群衆のボトルネックが明らかになります。
  • 追跡機能を内蔵: ソリューション内部でYOLO26による検出と追跡を実行するため、別個のトラッキングパイプラインを接続する必要はありません。
  • 同じ処理でカウント: regionを渡すと、ヒートマップの生成と同時にゾーンに出入りする物体をカウントでき、1回の実行で2つの分析タスクを組み合わせられます。

実際の活用例#

交通小売
車両交通密度を示すUltralytics YOLOのヒートマップオーバーレイ小売店の顧客の動きを示すUltralytics YOLOのヒートマップオーバーレイ
Ultralytics YOLOによる交通ヒートマップUltralytics YOLOによる小売ヒートマップ

Ultralytics YOLOでヒートマップを生成する方法#

CLIまたはPythonから、ビデオソースに対してHeatmapソリューションを実行します。Pythonの例では、処理済みフレームを出力ビデオファイルに書き込みます。

Ultralytics YOLOによるヒートマップ
# 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の引数を以下の表に示します。

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

Heatmapソリューションでは、さまざまな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推論精度:PyTorchおよびTorchScriptモデルでは16(FP16)または32/未設定(FP32)を使用します。他の形式では、アーティファクトとランタイムで選択された精度で計算されます。非推奨のhalfフラグに代わるものです。

また、使用可能な可視化引数を以下に示します。

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

ヒートマップのカラーマップ#

colormap引数には、任意のOpenCVカラーマップを指定できます。cv2モジュールの定数(例: colormap=cv2.COLORMAP_INFERNO)を渡します。

カラーマップ名説明
cv2.COLORMAP_AUTUMNAutumnカラーマップ
cv2.COLORMAP_BONEBoneカラーマップ
cv2.COLORMAP_JETJetカラーマップ
cv2.COLORMAP_WINTERWinterカラーマップ
cv2.COLORMAP_RAINBOWRainbowカラーマップ
cv2.COLORMAP_OCEANOceanカラーマップ
cv2.COLORMAP_SUMMERSummerカラーマップ
cv2.COLORMAP_SPRINGSpringカラーマップ
cv2.COLORMAP_COOLCoolカラーマップ
cv2.COLORMAP_HSVHSV(色相、彩度、明度)カラーマップ
cv2.COLORMAP_PINKPinkカラーマップ
cv2.COLORMAP_HOTHotカラーマップ
cv2.COLORMAP_PARULAParulaカラーマップ
cv2.COLORMAP_MAGMAMagmaカラーマップ
cv2.COLORMAP_INFERNOInfernoカラーマップ
cv2.COLORMAP_PLASMAPlasmaカラーマップ
cv2.COLORMAP_VIRIDISViridisカラーマップ
cv2.COLORMAP_CIVIDISCividisカラーマップ
cv2.COLORMAP_TWILIGHTTwilightカラーマップ
cv2.COLORMAP_TWILIGHT_SHIFTEDShifted Twilightカラーマップ
cv2.COLORMAP_TURBOTurboカラーマップ
cv2.COLORMAP_DEEPGREENDeep Greenカラーマップ

ヒートマップの仕組み#

ヒートマップソリューションは、ObjectCounterクラスを拡張したものです。最初に処理したフレームで、フレームサイズに合わせた空の強度レイヤーを作成します。その後、各フレームを次の2つのステップで処理します。

  1. YOLO26のトラッキングで、フレーム内のすべてのオブジェクトを検出し、追跡します
  2. 追跡対象の各オブジェクトについて、バウンディングボックスの中心を基準とする円形領域内のヒートマップ強度を高めます

フレームごとに1回、蓄積した強度レイヤーを正規化し、選択したカラーマップで色付けして、元のフレームとブレンドします。少なくとも1つのオブジェクトを追跡するとオーバーレイが表示され、それまではヒートマップのオーバーレイなしでフレームが表示されます。

その結果、時間の経過とともに形成される動的なビジュアライゼーションにより、動画データ内の交通パターン、群衆の移動、その他の空間的な動きを把握できます。regionを設定すると、ヒートマップの形成と同時に、その領域に出入りするオブジェクトもカウントします。

結論#

Ultralytics YOLO26のヒートマップソリューションは、数行のコードでオブジェクトトラッキングの結果を直感的なアクティビティオーバーレイに変換します。さらに活用するには、オブジェクトカウントと組み合わせたり、その他のUltralytics Solutionsを確認したり、基盤となるトラッキングモードについて読んだりできます。

よくある質問#

  • 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モデルのページを参照してください。

コメント