Maison > développement back-end > Tutoriel Python > Comment exécuter Samurai sur Google Colab

Comment exécuter Samurai sur Google Colab

Barbara Streisand
Libérer: 2024-11-28 14:16:13
original
269 Les gens l'ont consulté

How to Run Samurai on Google Colab

mon message original
https://baxin.netlify.app/how-to-run-samurai-on-google-colab/

Qu’est-ce que le samouraï ?

SAMURAI : Adaptation du modèle Segment Anything pour un suivi visuel Zero-Shot avec une mémoire sensible au mouvement

Exigences

  • Compte Google pour Google Colab
  • Compte Hugging Face pour télécharger des données

Comment exécuter Samurai sur Google Colab

Étape 0. Obtenez le jeton Hugging Face et ajoutez-le à votre variable d'environnement

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.

Étape 1. Modifier le runtime par défaut

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).

Étape 2. Installer les packages

!pip install matplotlib==3.7 tikzplotlib jpeg4py opencv-python lmdb pandas scipy loguru
Copier après la connexion

Étape 3. Clonez le référentiel Samurai

!git clone https://github.com/yangchris11/samurai.git
Copier après la connexion

Étape 4. Installez Sam2

%cd samurai/sam2
!pip install -e .
!pip install -e ".[notebooks]"
Copier après la connexion

Étape 5. Téléchargez les points de contrôle

%cd /content/samurai/sam2/checkpoints
!./download_ckpts.sh && \
%cd ..
Copier après la connexion

Étape 6. Téléchargez les données depuis Hugging Face

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}')
Copier après la connexion
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.")
Copier après la connexion

Étape 7. Inférence

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
Copier après la connexion

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!

source:dev.to
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal