Home > Backend Development > Python Tutorial > How to Run Samurai on Google Colab

How to Run Samurai on Google Colab

Barbara Streisand
Release: 2024-11-28 14:16:13
Original
271 people have browsed it

How to Run Samurai on Google Colab

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

What is Samurai?

SAMURAI: Adapting Segment Anything Model for Zero-Shot Visual Tracking with Motion-Aware Memory

Requirements

  • Google account for Google Colab
  • Hugging Face account to download data

How to Run Samurai on Google Colab

Step 0. Get Hugging Face token and add it to your environment variable

We will need to access to Hugging Face to download data.

If you don't know how to get Hugging Face token, please refer to this page.
Also, if you don't know how to add Hugging Face token to your environment variable, please check this post.

Step 1. Change the default runtime

To run Samurai on Google Colab, we need to change the default runtime to GPU.
We need to use T4 (free-tier GPU).

Step 2. Install packages

!pip install matplotlib==3.7 tikzplotlib jpeg4py opencv-python lmdb pandas scipy loguru
Copy after login

Step 3. Clone the Samurai repository

!git clone https://github.com/yangchris11/samurai.git
Copy after login

Step 4. Install Sam2

%cd samurai/sam2
!pip install -e .
!pip install -e ".[notebooks]"
Copy after login

Step 5. Download checkpoints

%cd /content/samurai/sam2/checkpoints
!./download_ckpts.sh && \
%cd ..
Copy after login

Step 6. Download data from Hugging Face

In this part we will use python script to set up the data that samurai repo mentioned in data preparation section.
https://github.com/yangchris11/samurai?tab=readme-ov-file#data-preparation

The data we will use is l-lt/LaSOT

In this case, we will download cat dataset, so if you want to try other datasets, you can change the code accordingly.

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}')
Copy after login
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.")
Copy after login

Step 7. Inference

The last step is to run Samurai inference.
Inference will take a while.

%cd /content/samurai
!python scripts/main_inference.py
Copy after login

If everything goes well, you should see the following output:

All the code is available on this GitHub repository.

If you like this post, please give it a star on GitHub.

The above is the detailed content of How to Run Samurai on Google Colab. For more information, please follow other related articles on the PHP Chinese website!

source:dev.to
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Latest Articles by Author
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template