mon message original
https://baxin.netlify.app/how-to-run-samurai-on-google-colab/
SAMURAI : Adaptation du modèle Segment Anything pour un suivi visuel Zero-Shot avec une mémoire sensible au mouvement
Nous devrons accéder à Hugging Face pour télécharger des données.
Si vous ne savez pas comment obtenir le jeton Hugging Face, veuillez vous référer à cette page.
De plus, si vous ne savez pas comment ajouter le jeton Hugging Face à votre variable d'environnement, veuillez consulter cet article.
Pour exécuter Samurai sur Google Colab, nous devons modifier le moteur d'exécution par défaut en GPU.
Nous devons utiliser T4 (GPU gratuit).
!pip install matplotlib==3.7 tikzplotlib jpeg4py opencv-python lmdb pandas scipy loguru
!git clone https://github.com/yangchris11/samurai.git
%cd samurai/sam2 !pip install -e . !pip install -e ".[notebooks]"
%cd /content/samurai/sam2/checkpoints !./download_ckpts.sh && \ %cd ..
Dans cette partie, nous utiliserons un script Python pour configurer les données mentionnées par le repo samouraï dans la section de préparation des données.
https://github.com/yangchris11/samurai?tab=readme-ov-file#data-preparation
Les données que nous utiliserons sont l-lt/LaSOT
Dans ce cas, nous téléchargerons l'ensemble de données sur le chat, donc si vous souhaitez essayer d'autres ensembles de données, vous pouvez modifier le code en conséquence.
import os # Define the data directory data_directory = '/content/samurai/data/LaSOT' # Create the data directory if it does not exist try: os.makedirs(data_directory, exist_ok=True) print(f"Directory '{data_directory}' created successfully or already exists.") except OSError as error: print(f"Error creating directory '{data_directory}': {error}") # Define the content to be written to the file content = '''cat-1 cat-20''' # Define the file path file_path = os.path.join(data_directory, 'testing_set.txt') # Write the content to the file try: with open(file_path, 'w') as f: f.write(content) print(f"Content written to file '{file_path}' successfully.") except IOError as error: print(f"Error writing to file '{file_path}': {error}") # Print the file path print(f'File path: {file_path}')
import os from huggingface_hub import hf_hub_download import zipfile import shutil def download_and_extract(base_dir="/content/samurai/data"): try: # Create LaSOT and cat directories lasot_dir = os.path.join(base_dir, "LaSOT") cat_dir = os.path.join(lasot_dir, "cat") os.makedirs(cat_dir, exist_ok=True) # Create directory to save the ZIP file zip_dir = os.path.join(base_dir, "zips") os.makedirs(zip_dir, exist_ok=True) print("Downloading dataset...") zip_path = hf_hub_download( repo_id="l-lt/LaSOT", filename="cat.zip", repo_type="dataset", local_dir=zip_dir ) print(f"Downloaded to: {zip_path}") # Extract ZIP file to cat directory print("Extracting ZIP file to cat directory...") with zipfile.ZipFile(zip_path, 'r') as zip_ref: zip_ref.extractall(cat_dir) print("\nCreated directory structure:") print("LaSOT/") print("└── cat/") # Display the first few cat folders for item in sorted(os.listdir(cat_dir))[:6]: print(f" ├── {item}/") print(" └── ...") return lasot_dir except Exception as e: print(f"An error occurred: {str(e)}") return None if __name__ == "__main__": extract_path = download_and_extract() if extract_path: print("\nDownload and extraction completed successfully!") else: print("\nDownload and extraction failed.")
La dernière étape consiste à exécuter l'inférence Samurai.
L'inférence prendra un certain temps.
%cd /content/samurai !python scripts/main_inference.py
Si tout se passe bien, vous devriez voir le résultat suivant :
Tout le code est disponible sur ce dépôt GitHub.
Si vous aimez cet article, donnez-lui une étoile sur GitHub.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!