Segment Anything Model (SAM) est un modèle de segmentation d’images développé par Meta (anciennement Facebook). Pour utiliser SAM2, vous devez suivre plusieurs étapes, y compris l’installation des bibliothèques nécessaires, le chargement du modèle, et l’exécution de la segmentation sur vos images. Voici un guide général pour vous aider à démarrer :
Étape 1 : Installation des dépendances
- Installer Python et les bibliothèques nécessaires :
- Assurez-vous d’avoir Python installé sur votre machine.
- Installez les bibliothèques nécessaires, telles que PyTorch, OpenCV, et d’autres dépendances spécifiques à SAM2.
pip install torch torchvision torchaudio pip install opencv-python pip install numpy
Cloner le dépôt SAM2 :
- Clonez le dépôt GitHub de SAM2 pour obtenir le code source et les modèles pré-entraînés.
git clone https://github.com/facebookresearch/segment-anything.git cd segment-anything
Installer les dépendances spécifiques à SAM2 :
-
pip install -e . -q
Étape 2 : Charger le modèle
- Importer les bibliothèques nécessaires :
-
import cv2 import torch import base64 import numpy as np from PIL import Image import matplotlib.pyplot as plt from sam2.build_sam import build_sam2 from sam2.sam2_image_predictor import SAM2ImagePredictor from sam2.automatic_mask_generator import SAM2AutomaticMaskGenerator
Charger le modèle SAM2 :
-
torch.autocast(device_type="cuda", dtype=torch.bfloat16).__enter__() if torch.cuda.get_device_properties(0).major >= 8: torch.backends.cuda.matmul.allow_tf32 = True torch.backends.cudnn.allow_tf32 = True DEVICE = torch.device('cuda' if torch.cuda.is_available() else 'cpu') CHECKPOINT = f"{HOME}/checkpoints/sam2_hiera_small.pt" CONFIG = "sam2_hiera_s.yaml" sam2_model = build_sam2(CONFIG, CHECKPOINT, device=DEVICE, apply_postprocessing=False)
Étape 3 : Préparer l’image
- Charger et préparer l’image :
image_bgr = cv2.imread("/content/de1.PNG") image_rgb = cv2.cvtColor(image_bgr, cv2.COLOR_BGR2RGB) sam2_result = mask_generator.generate(image_rgb)
Étape 4 : Exécuter la segmentation
-
mask_generator = SAM2AutomaticMaskGenerator(sam2_model) sam2_result = mask_generator.generate(image_rgb)
Étape 5 : Visualiser les résultats
- Afficher les masques de segmentation :
-
# Process results to extract masks masks = [mask["segmentation"] for mask in sam2_result] # Create an overlay of the masks on the original image overlay_image = image_rgb.copy() # Assign colors to each mask colors = [(255, 0, 0), (0, 255, 0), (0, 0, 255), (255, 255, 0)] # Add more colors if needed for i, mask in enumerate(masks): color = colors[i % len(colors)] # Loop through colors if there are more masks than colors colored_mask = np.zeros_like(image_rgb, dtype=np.uint8) colored_mask[mask] = color overlay_image = cv2.addWeighted(overlay_image, 1, colored_mask, 0.5, 0) # Plot images using Matplotlib plt.figure(figsize=(10, 5)) # Display original image plt.subplot(1, 2, 1) plt.imshow(cv2.cvtColor(image_bgr, cv2.COLOR_BGR2RGB)) plt.title('Source Image') plt.axis('off') # Display overlay image plt.subplot(1, 2, 2) plt.imshow(overlay_image) plt.title('Segmented Image') plt.axis('off') plt.tight_layout() plt.show()
Conclusion
En suivant ces étapes, vous pouvez utiliser SAM2 pour segmenter des images. Assurez-vous de consulter la documentation officielle et les exemples fournis dans le dépôt GitHub pour des instructions plus détaillées et des options avancées.
- Charger et préparer l’image :
Related Posts