SAM 2 : Segment Anything Model 2

Évolution de SAM

SAM 2 s'appuie sur le SAM original avec des capacités de segmentation vidéo. Pour la segmentation de concepts sollicitable par des prompts textuels et des exemples d'images, voir SAM 3.

Inférence avec Segment Anything 2 dans Colab

SAM 2, successeur du Segment Anything Model (SAM) de Meta, est un outil de pointe conçu pour une segmentation complète des objets dans les images et les vidéos. Il excelle dans le traitement de données visuelles complexes grâce à une architecture de modèle unifiée et sollicitable qui prend en charge le traitement en temps réel et la généralisation zero-shot.

SAM 2 sur la plateforme Ultralytics

Les modèles SAM 2.1 alimentent la fonctionnalité d'annotation intelligente sur la plateforme Ultralytics, permettant une segmentation par clic pour un étiquetage rapide des datasets. Consulte le guide d'annotation pour plus de détails.

Résultats de l'exemple SAM 2

Fonctionnalités clés



Watch: How to Run Inference with Meta's SAM2 using Ultralytics | Step-by-Step Guide 🎉

Architecture de modèle unifiée

SAM 2 combine les capacités de segmentation d'images et de vidéos en un seul modèle. Cette unification simplifie le déploiement et permet des performances constantes sur différents types de médias. Il exploite une interface flexible basée sur des prompts, permettant aux utilisateurs de spécifier les objets d'intérêt via divers types de prompts, tels que des points, des bounding boxes ou des masques.

Performances en temps réel

Le modèle atteint des vitesses d'inférence en temps réel, traitant environ 44 images par seconde. Cela rend SAM 2 adapté aux applications nécessitant un retour immédiat, comme le montage vidéo et la réalité augmentée.

Généralisation zero-shot

SAM 2 peut segmenter des objets qu'il n'a jamais rencontrés auparavant, démontrant une forte généralisation zero-shot. Cela est particulièrement utile dans des domaines visuels divers ou en évolution où des catégories prédéfinies ne peuvent pas couvrir tous les objets possibles.

Raffinement interactif

Tu peux affiner de manière itérative les résultats de segmentation en fournissant des prompts supplémentaires, ce qui permet un contrôle précis sur le résultat. Cette interactivité est essentielle pour le réglage fin des résultats dans des applications comme l'annotation vidéo ou l'imagerie médicale.

Gestion avancée des défis visuels

SAM 2 inclut des mécanismes pour gérer les défis courants de segmentation vidéo, tels que l'occlusion d'objets et leur réapparition. Il utilise un mécanisme de mémoire sophistiqué pour garder une trace des objets à travers les images, assurant la continuité même lorsque les objets sont temporairement obscurcis ou sortent et rentrent dans la scène.

Pour une compréhension approfondie de l'architecture et des capacités de SAM 2, explore le papier de recherche SAM 2.

Performances et détails techniques

SAM 2 établit une nouvelle référence dans le domaine, surpassant les modèles précédents sur divers indicateurs :

MétriqueSAM 2SOTA précédent
Segmentation vidéo interactiveMeilleur-
Interactions humaines requises3x moinsBaseline
Précision de la segmentation d'imageAmélioréeSAM
Vitesse d'inférence6x plus rapideSAM

Architecture du modèle

Composants principaux

  • Encodeur d'image et de vidéo : Utilise une architecture basée sur transformer pour extraire des caractéristiques de haut niveau à partir d'images et d'images vidéo. Ce composant est responsable de la compréhension du contenu visuel à chaque pas de temps.
  • Encodeur de prompt : Traite les prompts fournis par l'utilisateur (points, boîtes, masques) pour guider la tâche de segmentation. Cela permet à SAM 2 de s'adapter aux entrées de l'utilisateur et de cibler des objets spécifiques dans une scène.
  • Mécanisme de mémoire : Inclut un encodeur de mémoire, une banque de mémoire et un module d'attention à la mémoire. Ces composants stockent et utilisent collectivement les informations des images passées, permettant au modèle de maintenir un suivi d'objet cohérent dans le temps.
  • Décodeur de masque : Génère les masques de segmentation finaux basés sur les caractéristiques d'image encodées et les prompts. En vidéo, il utilise également le contexte de la mémoire pour assurer un suivi précis à travers les images.

Diagramme de l'architecture SAM 2

Mécanisme de mémoire et gestion de l'occlusion

Le mécanisme de mémoire permet à SAM 2 de gérer les dépendances temporelles et les occlusions dans les données vidéo. À mesure que les objets se déplacent et interagissent, SAM 2 enregistre leurs caractéristiques dans une banque de mémoire. Lorsqu'un objet est occlus, le modèle peut s'appuyer sur cette mémoire pour prédire sa position et son apparence lorsqu'il réapparaît. La tête d'occlusion gère spécifiquement les scénarios où les objets ne sont pas visibles, en prédisant la probabilité qu'un objet soit occlus.

Résolution de l'ambiguïté multi-masque

Dans les situations ambiguës (par exemple, des objets qui se chevauchent), SAM 2 peut générer plusieurs prédictions de masques. Cette fonctionnalité est cruciale pour représenter avec précision des scènes complexes où un seul masque pourrait ne pas suffire à décrire les nuances de la scène.

Dataset SA-V

Le dataset SA-V, développé pour l'entraînement de SAM 2, est l'un des datasets de segmentation vidéo les plus vastes et les plus diversifiés disponibles. Il comprend :

  • 51 000+ vidéos : Capturées dans 47 pays, offrant une large gamme de scénarios du monde réel.
  • 600 000+ annotations de masques : Annotations de masques spatio-temporels détaillées, appelées "masklets", couvrant des objets entiers et des parties.
  • Échelle du dataset : Il présente 4,5 fois plus de vidéos et 53 fois plus d'annotations que les datasets les plus vastes précédents, offrant une diversité et une complexité sans précédent.

Benchmarks

Segmentation d'objets vidéo

SAM 2 a démontré des performances supérieures sur les principaux benchmarks de segmentation vidéo :

DatasetJ&FJF
DAVIS 201782,579.885,2
YouTube-VOS81,278.983,5

Segmentation interactive

Dans les tâches de segmentation interactive, SAM 2 montre une efficacité et une précision significatives :

DatasetNoC@90AUC
DAVIS Interactive1,540,872

Installation

Pour installer SAM 2, utilise la commande suivante. Tous les modèles SAM 2 seront automatiquement téléchargés lors de la première utilisation.

pip install ultralytics

Comment utiliser SAM 2 : Polyvalence dans la segmentation d'images et de vidéos

Le tableau suivant détaille les modèles SAM 2 disponibles, leurs poids pré-entraînés, les tâches prises en charge et la compatibilité avec différents modes opératoires comme l'Inférence, la Validation, l'Entraînement et l'Exportation.

Type de modèlePoids pré-entraînésTâches prises en chargeInférenceValidationEntraînementExportation
SAM 2 tinysam2_t.ptSegmentation d'instance
SAM 2 smallsam2_s.ptSegmentation d'instance
SAM 2 basesam2_b.ptSegmentation d'instance
SAM 2 largesam2_l.ptSegmentation d'instance
SAM 2.1 tinysam2.1_t.ptSegmentation d'instance
SAM 2.1 smallsam2.1_s.ptSegmentation d'instance
SAM 2.1 basesam2.1_b.ptSegmentation d'instance
SAM 2.1 largesam2.1_l.ptSegmentation d'instance

Exemples de prédiction SAM 2

SAM 2 peut être utilisé dans un large éventail de tâches, y compris le montage vidéo en temps réel, l'imagerie médicale et les systèmes autonomes. Sa capacité à segmenter des données visuelles statiques et dynamiques en fait un outil polyvalent pour les chercheurs et les développeurs.

Segmenter avec des prompts

Segmenter avec des prompts

Utilise des prompts pour segmenter des objets spécifiques dans des images ou des vidéos.

from ultralytics import SAM

# Load a model
model = SAM("sam2.1_b.pt")

# Display model information (optional)
model.info()

# Run inference with bboxes prompt
results = model("path/to/image.jpg", bboxes=[100, 100, 200, 200])

# Run inference with single point
results = model(points=[900, 370], labels=[1])

# Run inference with multiple points
results = model(points=[[400, 370], [900, 370]], labels=[1, 1])

# Run inference with multiple points prompt per object
results = model(points=[[[400, 370], [900, 370]]], labels=[[1, 1]])

# Run inference with negative points prompt
results = model(points=[[[400, 370], [900, 370]]], labels=[[1, 0]])

Segmenter tout

Segmenter tout

Segmente l'intégralité de l'image ou du contenu vidéo sans prompts spécifiques.

from ultralytics import SAM

# Load a model
model = SAM("sam2.1_b.pt")

# Display model information (optional)
model.info()

# Run inference
model("path/to/video.mp4")

Segmenter la vidéo et suivre les objets

Segmenter la vidéo

Segmente le contenu vidéo entier avec des prompts spécifiques et suit les objets.

from ultralytics.models.sam import SAM2VideoPredictor

# Create SAM2VideoPredictor
overrides = dict(conf=0.25, task="segment", mode="predict", imgsz=1024, model="sam2_b.pt")
predictor = SAM2VideoPredictor(overrides=overrides)

# Run inference with single point
results = predictor(source="test.mp4", points=[920, 470], labels=[1])

# Run inference with multiple points
results = predictor(source="test.mp4", points=[[920, 470], [909, 138]], labels=[1, 1])

# Run inference with multiple points prompt per object
results = predictor(source="test.mp4", points=[[[920, 470], [909, 138]]], labels=[[1, 1]])

# Run inference with negative points prompt
results = predictor(source="test.mp4", points=[[[920, 470], [909, 138]]], labels=[[1, 0]])
  • Cet exemple démontre comment SAM 2 peut être utilisé pour segmenter l'intégralité du contenu d'une image ou d'une vidéo si aucun prompt (bboxes/points/masques) n'est fourni.

Segmentation et suivi interactifs dynamiques

SAM2DynamicInteractivePredictor est une extension avancée sans entraînement de SAM2 qui permet une interaction dynamique avec plusieurs images et des capacités d'apprentissage continu. Ce prédicteur prend en charge les mises à jour des prompts en temps réel et la gestion de la mémoire pour améliorer les performances de suivi sur une séquence d'images. Par rapport au SAM2 original, SAM2DynamicInteractivePredictor reconstruit le flux d'inférence pour tirer le meilleur parti des modèles SAM2 pré-entraînés sans nécessiter d'entraînement supplémentaire.

Résultats de l'exemple SAM 2

Fonctionnalités clés

Il offre trois améliorations significatives :

  1. Interactif dynamique : Ajoute de nouveaux prompts pour fusionner/suivre de nouvelles instances dans les images suivantes à tout moment pendant le traitement vidéo
  2. Apprentissage continu : Ajoute de nouveaux prompts pour les instances existantes afin d'améliorer les performances du modèle au fil du temps
  3. Support indépendant multi-images : Traite plusieurs images indépendantes (pas nécessairement issues d'une séquence vidéo) avec partage de mémoire et suivi d'objets inter-images

Capacités principales

  • Flexibilité des prompts : Accepte des boîtes englobantes, des points et des masques comme prompts
  • Gestion de la banque de mémoire : Maintient une banque de mémoire dynamique pour stocker les états des objets à travers les images
  • Suivi multi-objets : Prend en charge le suivi simultané de plusieurs objets avec des IDs d'objet individuels
  • Mises à jour en temps réel : Permet d'ajouter de nouveaux prompts pendant l'inférence sans retraitement des images précédentes
  • Traitement d'images indépendant : Traite des images autonomes avec un contexte de mémoire partagé pour la cohérence des objets entre les images
Ajout dynamique d'objets
from ultralytics.models.sam import SAM2DynamicInteractivePredictor

# Create SAM2DynamicInteractivePredictor
overrides = dict(conf=0.01, task="segment", mode="predict", imgsz=1024, model="sam2_t.pt", save=False)
predictor = SAM2DynamicInteractivePredictor(overrides=overrides, max_obj_num=10)

# Define a category by box prompt
predictor(source="image1.jpg", bboxes=[[100, 100, 200, 200]], obj_ids=[0], update_memory=True)

# Detect this particular object in a new image
results = predictor(source="image2.jpg")

# Add new category with a new object ID
results = predictor(
    source="image4.jpg",
    bboxes=[[300, 300, 400, 400]],  # New object
    obj_ids=[1],  # New object ID
    update_memory=True,  # Add to memory
)
# Perform inference
results = predictor(source="image5.jpg")

# Add refinement prompts to the same category to boost performance
# This helps when object appearance changes significantly
results = predictor(
    source="image6.jpg",
    points=[[150, 150]],  # Refinement point
    labels=[1],  # Positive point
    obj_ids=[1],  # Same object ID
    update_memory=True,  # Update memory with new information
)
# Perform inference on new image
results = predictor(source="image7.jpg")
Remarque

Le SAM2DynamicInteractivePredictor est conçu pour fonctionner avec les modèles SAM2 et prend en charge l'ajout/le raffinement des catégories par tous les prompts boîte/point/masque que SAM2 supporte nativement. Il est particulièrement utile pour les scénarios où des objets apparaissent ou changent au fil du temps, comme dans les tâches d'annotation vidéo ou d'édition interactive.

Arguments

NomValeur par défautType de donnéesDescription
max_obj_num3intLe nombre maximum prédéfini de catégories
update_memoryFalseboolIndique s'il faut mettre à jour la mémoire avec de nouveaux prompts
obj_idsNoneList[int]Liste des IDs d'objets correspondant aux prompts

Cas d'utilisation

SAM2DynamicInteractivePredictor est idéal pour :

  • Workflows d'annotation vidéo où de nouveaux objets apparaissent durant la séquence
  • Édition vidéo interactive nécessitant l'ajout et le raffinement d'objets en temps réel
  • Applications de surveillance avec des besoins de suivi d'objets dynamiques
  • Imagerie médicale pour le suivi de structures anatomiques à travers des séries temporelles
  • Systèmes autonomes nécessitant une détection et un suivi d'objets adaptatifs
  • Datasets multi-images pour une segmentation d'objets cohérente à travers des images indépendantes
  • Analyse de collections d'images où les objets doivent être suivis à travers différentes scènes
  • Segmentation inter-domaines tirant parti de la mémoire provenant de divers contextes d'images
  • Annotation semi-automatique pour une création efficace de datasets avec une intervention manuelle minimale

Comparaison SAM vs YOLO

Ici, nous comparons les modèles SAM 2 de Meta, y compris la plus petite variante SAM2-t, avec les modèles de segmentation Ultralytics incluant YOLO26n-seg :

ModèleTaille
(Mo)
Paramètres
(M)
Vitesse (CPU)
(ms/im)
Meta SAM-b37593.741703
Meta SAM2-b16280.828867
Meta SAM2-t78.138.923430
MobileSAM40.710.123802
FastSAM-s avec backbone YOLOv823.911.858.0
Ultralytics YOLOv8n-seg7.1 (11.0x plus petit)3.4 (11.4x de moins)24.8 (945x plus rapide)
Ultralytics YOLO11n-seg6.2 (12.6x plus petit)2.9 (13.4x de moins)24.3 (964x plus rapide)
Ultralytics YOLO26n-seg6.7 (11.7x plus petit)2.7 (14.4x de moins)25.2 (930x plus rapide)

Cette comparaison démontre les différences substantielles de tailles et de vitesses de modèles entre les variantes de SAM et les modèles de segmentation YOLO. Bien que SAM offre des capacités de segmentation automatique uniques, les modèles YOLO, en particulier YOLOv8n-seg, YOLO11n-seg et YOLO26n-seg, sont significativement plus petits, plus rapides et plus efficaces sur le plan computationnel.

Vitesses SAM mesurées avec PyTorch, vitesses YOLO mesurées avec ONNX Runtime. Tests effectués sur un Apple M4 Air 2025 avec 16 Go de RAM en utilisant torch==2.10.0, ultralytics==8.4.31 et onnxruntime==1.24.4. Pour reproduire ce test :

Exemple
from ultralytics import ASSETS, SAM, YOLO, FastSAM

# Profile SAM2-t, SAM2-b, SAM-b, MobileSAM
for file in ["sam_b.pt", "sam2_b.pt", "sam2_t.pt", "mobile_sam.pt"]:
    model = SAM(file)
    model.info()
    model(ASSETS)

# Profile FastSAM-s
model = FastSAM("FastSAM-s.pt")
model.info()
model(ASSETS)

# Profile YOLO models (ONNX)
for file_name in ["yolov8n-seg.pt", "yolo11n-seg.pt", "yolo26n-seg.pt"]:
    model = YOLO(file_name)
    model.info()
    onnx_path = model.export(format="onnx", dynamic=True)
    model = YOLO(onnx_path)
    model(ASSETS)

Auto-annotation : création efficace de datasets

L'auto-annotation est une fonctionnalité puissante de SAM 2, permettant aux utilisateurs de générer rapidement et précisément des datasets de segmentation en s'appuyant sur des modèles pré-entraînés. Cette capacité est particulièrement utile pour créer de grands datasets de haute qualité sans effort manuel intensif.

Comment réaliser une auto-annotation avec SAM 2



Watch: Auto Annotation with Meta's Segment Anything 2 Model using Ultralytics | Data Labeling

Pour auto-annoter ton dataset en utilisant SAM 2, suis cet exemple :

Exemple d'auto-annotation
from ultralytics.data.annotator import auto_annotate

auto_annotate(data="path/to/images", det_model="yolo26x.pt", sam_model="sam2_b.pt")
ArgumentTypeDéfautDescription
datastrrequisChemin vers le répertoire contenant les images cibles pour l'annotation ou la segmentation.
det_modelstr'yolo26x.pt'Chemin du modèle de détection YOLO pour la détection initiale d'objets.
sam_modelstr'sam_b.pt'Chemin du modèle SAM pour la segmentation (prend en charge les variantes SAM, SAM2 et les modèles MobileSAM).
devicestr''Dispositif de calcul (par exemple, 'cuda:0', 'cpu' ou '' pour la détection automatique du dispositif).
conffloat0.25Seuil de confiance de détection YOLO pour filtrer les détections faibles.
ioufloat0.45Seuil IoU pour le NMS afin de filtrer les boîtes qui se chevauchent.
imgszint640Taille d'entrée pour le redimensionnement des images (doit être un multiple de 32).
max_detint300Nombre maximal de détections par image pour l'efficacité de la mémoire.
classeslist[int]NoneListe des indices de classe à détecter (par exemple, [0, 1] pour personne et vélo).
output_dirstrNoneRépertoire de sauvegarde pour les annotations (par défaut './labels' par rapport au chemin des données).

Cette fonction facilite la création rapide de datasets de segmentation de haute qualité, idéale pour les chercheurs et les développeurs souhaitant accélérer leurs projets.

Limites

Malgré ses points forts, SAM 2 présente certaines limites :

  • Stabilité du suivi : SAM 2 peut perdre la trace d'objets lors de séquences prolongées ou de changements de point de vue importants.
  • Confusion d'objets : Le modèle peut parfois confondre des objets similaires, particulièrement dans des scènes encombrées.
  • Efficacité avec plusieurs objets : L'efficacité de la segmentation diminue lors du traitement simultané de plusieurs objets en raison du manque de communication inter-objets.
  • Précision des détails : Peut manquer des détails fins, surtout avec des objets en mouvement rapide. Des prompts supplémentaires peuvent résoudre partiellement ce problème, mais la fluidité temporelle n'est pas garantie.

Citations et remerciements

Si SAM 2 est une partie cruciale de ton travail de recherche ou de développement, merci de le citer en utilisant la référence suivante :

Citation
@article{ravi2024sam2,
  title={SAM 2: Segment Anything in Images and Videos},
  author={Ravi, Nikhila and Gabeur, Valentin and Hu, Yuan-Ting and Hu, Ronghang and Ryali, Chaitanya and Ma, Tengyu and Khedr, Haitham and R{\"a}dle, Roman and Rolland, Chloe and Gustafson, Laura and Mintun, Eric and Pan, Junting and Alwala, Kalyan Vasudev and Carion, Nicolas and Wu, Chao-Yuan and Girshick, Ross and Doll{\'a}r, Piotr and Feichtenhofer, Christoph},
  journal={arXiv preprint},
  year={2024}
}

Nous exprimons notre gratitude à Meta AI pour leurs contributions à la communauté IA avec ce modèle et ce dataset révolutionnaires.

FAQ

Qu'est-ce que SAM 2 et comment améliore-t-il le Segment Anything Model (SAM) original ?

SAM 2, le successeur du Segment Anything Model (SAM) de Meta, est un outil de pointe conçu pour la segmentation complète d'objets dans les images et les vidéos. Il excelle dans la gestion de données visuelles complexes grâce à une architecture de modèle unifiée et adaptable qui prend en charge le traitement en temps réel et la généralisation zero-shot. SAM 2 offre plusieurs améliorations par rapport au SAM original, notamment :

  • Architecture de modèle unifiée : Combine les capacités de segmentation d'images et de vidéos dans un seul modèle.
  • Performance en temps réel : Traite environ 44 images par seconde, ce qui le rend adapté aux applications nécessitant un retour immédiat.
  • Généralisation zero-shot : Segmente des objets qu'il n'a jamais rencontrés auparavant, utile dans divers domaines visuels.
  • Raffinement interactif : Permet aux utilisateurs d'affiner itérativement les résultats de segmentation en fournissant des prompts supplémentaires.
  • Gestion avancée des défis visuels : Gère les défis courants de segmentation vidéo comme l'occlusion et la réapparition d'objets.

Pour plus de détails sur l'architecture et les capacités de SAM 2, explore le papier de recherche SAM 2.

Comment puis-je utiliser SAM 2 pour la segmentation vidéo en temps réel ?

SAM 2 peut être utilisé pour la segmentation vidéo en temps réel en tirant parti de son interface basée sur les prompts et de ses capacités d'inférence en temps réel. Voici un exemple de base :

Segmenter avec des prompts

Utilise des prompts pour segmenter des objets spécifiques dans des images ou des vidéos.

from ultralytics import SAM

# Load a model
model = SAM("sam2_b.pt")

# Display model information (optional)
model.info()

# Segment with bounding box prompt
results = model("path/to/image.jpg", bboxes=[100, 100, 200, 200])

# Segment with point prompt
results = model("path/to/image.jpg", points=[150, 150], labels=[1])

Pour une utilisation plus complète, reporte-toi à la section Comment utiliser SAM 2.

Quels datasets sont utilisés pour entraîner SAM 2, et comment améliorent-ils ses performances ?

SAM 2 est entraîné sur le dataset SA-V, l'un des datasets de segmentation vidéo les plus vastes et les plus diversifiés disponibles. Le dataset SA-V inclut :

  • 51 000+ vidéos : Capturées dans 47 pays, offrant une large gamme de scénarios du monde réel.
  • 600 000+ annotations de masques : Annotations de masques spatio-temporels détaillées, appelées "masklets", couvrant des objets entiers et des parties.
  • Échelle du dataset : Comporte 4,5 fois plus de vidéos et 53 fois plus d'annotations que les précédents plus grands datasets, offrant une diversité et une complexité sans précédent.

Ce vaste dataset permet à SAM 2 d'atteindre des performances supérieures sur les principaux benchmarks de segmentation vidéo et améliore ses capacités de généralisation zero-shot. Pour plus d'informations, voir la section Dataset SA-V.

Comment SAM 2 gère-t-il les occlusions et les réapparitions d'objets dans la segmentation vidéo ?

SAM 2 inclut un mécanisme de mémoire sophistiqué pour gérer les dépendances temporelles et les occlusions dans les données vidéo. Le mécanisme de mémoire consiste en :

  • Encodeur de mémoire et banque de mémoire : Stocke les caractéristiques des images passées.
  • Module d'attention à la mémoire : Utilise les informations stockées pour maintenir un suivi d'objet cohérent dans le temps.
  • Tête d'occlusion : Gère spécifiquement les scénarios où les objets ne sont pas visibles, prédisant la probabilité qu'un objet soit occulté.

Ce mécanisme assure la continuité même lorsque les objets sont temporairement obscurcis ou sortent et rentrent dans la scène. Pour plus de détails, reporte-toi à la section Mécanisme de mémoire et gestion de l'occlusion.

Comment SAM 2 se compare-t-il à d'autres modèles de segmentation comme YOLO26 ?

Les modèles SAM 2, tels que SAM2-t et SAM2-b de Meta, offrent de puissantes capacités de segmentation zero-shot mais sont significativement plus grands et plus lents comparés aux modèles YOLO. Par exemple, YOLO26n-seg est environ 24 fois plus petit et plus de 1145 fois plus rapide que SAM2-b sur CPU. Tandis que SAM 2 excelle dans les scénarios de segmentation polyvalents, basés sur des prompts et zero-shot, YOLO26 est optimisé pour la vitesse, l'efficacité et les applications temps réel avec une inférence de bout en bout sans NMS, ce qui le rend mieux adapté au déploiement dans des environnements aux ressources limitées.

Commentaires