Cartes thermiques de suivi d'objets avec Ultralytics YOLO26#
La solution Heatmap d'Ultralytics YOLO26 suit les objets d'une image vidéo à l'autre et superpose leur intensité de mouvement cumulée sur chaque image : les zones animées brillent dans des couleurs chaudes, tandis que les zones calmes restent dans des teintes froides. Fondée sur le suivi d'objets de YOLO26, elle transforme n'importe quelle vidéo en carte d'activité spatiale qui révèle les flux de circulation, les mouvements de foule et les zones d'attente à l'aide d'un simple appel Python ou d'une commande CLI.
Watch: How to Create Heatmaps with Ultralytics YOLO26 | Visualize Object Activity | VisionAI in Retail 🚀
Pourquoi utiliser des cartes thermiques pour l'analyse vidéo ?#
- Repère les tendances d'activité en un coup d'œil : l'intensité s'accumule partout où les objets suivis restent un certain temps. Les voies très fréquentées, les rayons populaires ou les points de congestion dans la foule ressortent ainsi sans examen manuel image par image.
- Suivi intégré : la solution exécute la détection et le suivi YOLO26 en interne, sans qu'il soit nécessaire de mettre en place un pipeline de suivi distinct.
- Comptage en un seul passage : transmets un
regionpour compter les objets qui entrent dans une zone et en sortent pendant la création de la carte thermique, en combinant deux tâches d'analyse en une seule exécution.
Applications concrètes#
| Transport | Commerce de détail |
|---|---|
![]() | ![]() |
| Carte thermique Ultralytics YOLO des transports | Carte thermique Ultralytics YOLO du commerce de détail |
Comment générer des cartes thermiques avec Ultralytics YOLO#
Exécute la solution Heatmap sur une source vidéo depuis la CLI ou Python. L'exemple Python écrit les images traitées dans un fichier vidéo de sortie :
# 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)]"Arguments de Heatmap()#
Voici un tableau présentant les arguments de Heatmap :
| Argument | Type | Valeur par défaut | Description |
|---|---|---|---|
model | str | None | Chemin vers un fichier de modèle Ultralytics YOLO. |
colormap | int | cv2.COLORMAP_DEEPGREEN | Palette de couleurs à utiliser pour la carte thermique. |
show_in | bool | True | Indicateur contrôlant l'affichage ou non des comptages entrants sur le flux vidéo. |
show_out | bool | True | Indicateur contrôlant l'affichage ou non des comptages sortants sur le flux vidéo. |
region | list ou dict | None | Points définissant la région d'intérêt, soit une liste de tuples (x, y), soit un dictionnaire associant les noms des régions à des listes de points pour plusieurs régions (RegionCounter uniquement). Lorsque None, les solutions qui nécessitent une région utilisent une région par défaut prédéfinie. |
line_width | int | 2 | Épaisseur des lignes des boîtes, des points clés et des comptages dessinés par la solution. |
verbose | bool | True | Active le journal par image de la solution, qui indique la forme d'entrée, les comptages par classe et la vitesse de traitement. L'appel de suivi lui-même est toujours silencieux. |
Tu peux également appliquer différents arguments track dans la solution Heatmap.
| Argument | Type | Valeur par défaut | Description |
|---|---|---|---|
tracker | str | 'botsort.yaml' | Indique l'algorithme de suivi à utiliser. Options intégrées : botsort.yaml, bytetrack.yaml, ocsort.yaml, deepocsort.yaml, fasttrack.yaml, tracktrack.yaml. |
conf | float | 0.25 | Définit le seuil de confiance des détections ; des valeurs plus faibles permettent de suivre davantage d'objets, mais peuvent inclure des faux positifs. |
iou | float | 0.7 | Définit le seuil d'intersection sur union (IoU) pour filtrer les détections qui se chevauchent. |
classes | list | None | Filtre les résultats par indice de classe. Par exemple, classes=[0, 2, 3] ne suit que les classes spécifiées. |
device | str | None | Indique le périphérique utilisé pour l'inférence (par exemple, cpu, cuda:0 ou 0). Permet de choisir entre le CPU, un GPU spécifique ou d'autres périphériques de calcul pour l'exécution du modèle. |
imgsz | int or tuple | 640 | Taille de l'image d'inférence cible : un entier pour un carré ou une paire (height, width). Les formes sont ajustées au pas du modèle. |
max_det | int | 300 | Nombre maximal de détections conservées par image avant le suivi, ce qui limite les objets qu'une solution traite dans les scènes denses. |
quantize | int or str | None | Précision de l'inférence : 16 (FP16) ou 32/non définie (FP32) pour les modèles PyTorch et TorchScript ; les autres formats s'exécutent à la précision sélectionnée par leur artefact et leur moteur d'exécution. Remplace l'indicateur obsolète half. |
De plus, les arguments de visualisation pris en charge sont listés ci-dessous :
| Argument | Type | Valeur par défaut | Description |
|---|---|---|---|
show | bool | False | Si True, affiche les images ou vidéos annotées dans une fenêtre. Utile pour obtenir un retour visuel immédiat pendant le développement ou les tests. |
show_conf | bool | True | Affiche le score de confiance de chaque détection à côté de son étiquette. Donne un aperçu du degré de certitude du modèle pour chaque détection. |
show_labels | bool | True | Affiche les étiquettes de chaque détection dans la sortie visuelle. Permet d’identifier immédiatement les objets détectés. |
Palettes de couleurs des cartes thermiques#
L'argument colormap accepte toute palette de couleurs OpenCV. Transmets la constante du module cv2, par exemple colormap=cv2.COLORMAP_INFERNO :
| Nom de la palette de couleurs | Description |
|---|---|
cv2.COLORMAP_AUTUMN | Palette de couleurs Autumn |
cv2.COLORMAP_BONE | Palette de couleurs Bone |
cv2.COLORMAP_JET | Palette de couleurs Jet |
cv2.COLORMAP_WINTER | Palette de couleurs Winter |
cv2.COLORMAP_RAINBOW | Palette de couleurs Rainbow |
cv2.COLORMAP_OCEAN | Palette de couleurs Ocean |
cv2.COLORMAP_SUMMER | Palette de couleurs Summer |
cv2.COLORMAP_SPRING | Palette de couleurs Spring |
cv2.COLORMAP_COOL | Palette de couleurs Cool |
cv2.COLORMAP_HSV | Palette de couleurs HSV (teinte, saturation, valeur) |
cv2.COLORMAP_PINK | Palette de couleurs Pink |
cv2.COLORMAP_HOT | Palette de couleurs Hot |
cv2.COLORMAP_PARULA | Palette de couleurs Parula |
cv2.COLORMAP_MAGMA | Palette de couleurs Magma |
cv2.COLORMAP_INFERNO | Palette de couleurs Inferno |
cv2.COLORMAP_PLASMA | Palette de couleurs Plasma |
cv2.COLORMAP_VIRIDIS | Palette de couleurs Viridis |
cv2.COLORMAP_CIVIDIS | Palette de couleurs Cividis |
cv2.COLORMAP_TWILIGHT | Palette de couleurs Twilight |
cv2.COLORMAP_TWILIGHT_SHIFTED | Palette de couleurs Twilight décalée |
cv2.COLORMAP_TURBO | Palette de couleurs Turbo |
cv2.COLORMAP_DEEPGREEN | Palette de couleurs Deep Green |
Fonctionnement des cartes thermiques#
La solution Heatmap étend la classe ObjectCounter. Lors de la première image traitée, elle crée une couche d'intensité vierge correspondant à la taille de l'image. Chaque image est ensuite traitée en deux étapes :
- Le suivi YOLO26 détecte et suit chaque objet présent dans l'image
- Pour chaque objet suivi, l'intensité de la carte thermique augmente dans une zone circulaire centrée sur sa boîte englobante
Une fois par image, la couche d'intensité cumulée est normalisée, colorisée avec la palette sélectionnée, puis fusionnée avec l'image originale. La superposition apparaît dès qu'au moins un objet est suivi ; les images sans objet suivi sont affichées sans superposition de carte thermique.
Le résultat est une visualisation dynamique qui se construit au fil du temps et révèle les tendances du trafic, les mouvements de foule ou d'autres comportements spatiaux dans tes données vidéo. Lorsqu'un region est défini, la solution compte également les objets qui entrent dans cette région et en sortent pendant la création de la carte thermique.
Conclusion#
La solution Heatmap Ultralytics YOLO26 transforme les résultats du suivi d'objets en une superposition d'activité intuitive à l'aide de quelques lignes de code. Pour aller plus loin, combine-la avec le comptage d'objets, explore les autres solutions Ultralytics ou consulte la documentation sur le mode de suivi sous-jacent.
FAQ#
Utilise
cv2.VideoWriterd'OpenCV et écrisresults.plot_impour chaque image traitée, comme indiqué dans l'exemple principal. L'attributplot_imcontient l'image avec la superposition de la carte thermique déjà appliquée.Oui. Transmets un argument
regionàHeatmap()avec les points d'une ligne, d'un rectangle ou d'un polygone ; la solution compte alors les objets qui entrent dans cette région et en sortent pendant la création de la carte thermique. Les résultats renvoyés incluentin_count,out_countet les comptages par classe. Consulte le guide du comptage d'objets pour plus de détails sur la configuration des régions.Transmets l'argument
classesàHeatmap()avec les indices des classes que tu souhaites conserver. Par exemple,classes=[0, 2]crée la carte thermique uniquement à partir des personnes et des voitures (indices de classe COCO 0 et 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()Les cartes thermiques Ultralytics YOLO26 intègrent la détection d'objets, le suivi, l'accumulation de l'intensité et le rendu de la superposition en un seul appel, tandis que les outils génériques comme OpenCV ou Matplotlib t'obligent à créer toi-même ce pipeline. La solution traite les flux vidéo en temps réel et prend en charge le suivi persistant ainsi que les palettes de couleurs personnalisables dès le départ. Pour en savoir plus sur le modèle sous-jacent, consulte la page du modèle YOLO26.


Ultralytics YOLO26 génère des cartes thermiques en suivant les objets d'une image vidéo à l'autre et en accumulant une valeur d'intensité à l'emplacement de chaque objet suivi, puis en colorisant le résultat et en le fusionnant avec l'image originale. Les zones où les objets apparaissent fréquemment ou restent longtemps accumulent une intensité plus élevée et s'affichent dans des couleurs plus chaudes. Pour connaître les options de configuration, consulte la section Arguments
Heatmap().