Rumah >pembangunan bahagian belakang >Tutorial Python >Cara Menjalankan Samurai di Google Colab

Cara Menjalankan Samurai di Google Colab

Barbara Streisand
Barbara Streisandasal
2024-11-28 14:16:13216semak imbas

How to Run Samurai on Google Colab

siaran asal saya
https://baxin.netlify.app/how-to-run-samurai-on-google-colab/

Apa itu Samurai?

SAMURAI: Menyesuaikan Model Apa-apa Segmen untuk Penjejakan Visual Tangkapan Sifar dengan Memori Sedar Pergerakan

Keperluan

  • Akaun Google untuk Google Colab
  • Memeluk akaun Face untuk memuat turun data

Cara Menjalankan Samurai di Google Colab

Langkah 0. Dapatkan token Memeluk Wajah dan tambahkannya pada pembolehubah persekitaran anda

Kami perlu mengakses kepada Memeluk Wajah untuk memuat turun data.

Jika anda tidak tahu cara mendapatkan token Memeluk Wajah, sila rujuk halaman ini.
Selain itu, jika anda tidak tahu cara menambahkan token Memeluk Wajah pada pembolehubah persekitaran anda, sila semak siaran ini.

Langkah 1. Tukar masa jalan lalai

Untuk menjalankan Samurai di Google Colab, kita perlu menukar masa jalan lalai kepada GPU.
Kita perlu menggunakan T4 (GPU peringkat bebas).

Langkah 2. Pasang pakej

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

Langkah 3. Klonkan repositori Samurai

!git clone https://github.com/yangchris11/samurai.git

Langkah 4. Pasang Sam2

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

Langkah 5. Muat turun pusat pemeriksaan

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

Langkah 6. Muat turun data daripada Muka Memeluk

Dalam bahagian ini kita akan menggunakan skrip python untuk menyediakan data yang disebut repo samurai dalam bahagian penyediaan data.
https://github.com/yangchris11/samurai?tab=readme-ov-file#data-preparation

Data yang akan kami gunakan ialah l-lt/LaSOT

Dalam kes ini, kami akan memuat turun set data kucing, jadi jika anda ingin mencuba set data lain, anda boleh menukar kod tersebut dengan sewajarnya.

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

Langkah 7. Inferens

Langkah terakhir ialah menjalankan inferens Samurai.
Inferens akan mengambil sedikit masa.

%cd /content/samurai
!python scripts/main_inference.py

Jika semuanya berjalan lancar, anda seharusnya melihat output berikut:

Semua kod tersedia pada repositori GitHub ini.

Jika anda menyukai siaran ini, sila berikan bintang pada GitHub.

Atas ialah kandungan terperinci Cara Menjalankan Samurai di Google Colab. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn