label-studio-ml-backend
label-studio-ml-backend copied to clipboard
Issue running SAM 2 Video tracking
Hello, I'm trying to run Sam2 with docker compose on my local system for video tracking. However, the upstream repo for Segment anything 2 updated the checkpoints to point to Sam2.1 and as a result the default configuration does not work. Here's the contents of my docker-compose.yml file.
version: "3.8"
services:
label_studio:
image: heartexlabs/label-studio:latest
container_name: label_studio
ports:
- 8508:8080
volumes:
- ./mydata:/label-studio/data:rw
segment_anything_2_video:
container_name: segment_anything_2_video
image: humansignal/segment_anything_2_video:v0
build:
context: .
args:
TEST_ENV: ${TEST_ENV}
environment:
# specify these parameters if you want to use basic auth for the model server
- BASIC_AUTH_USER=
- BASIC_AUTH_PASS=
# set the log level for the model server
- LOG_LEVEL=DEBUG
# any other parameters that you want to pass to the model server
- ANY=PARAMETER
# specify the number of workers and threads for the model server
- WORKERS=1
- THREADS=8
# specify the model directory (likely you don't need to change this)
- MODEL_DIR=/data/models
# specify device
- DEVICE=cuda # or 'cpu' (coming soon)
# SAM2 model config
- MODEL_CONFIG=sam2.1_hiera_l.yaml
# SAM2 checkpoint
- MODEL_CHECKPOINT=sam2.1_hiera_large.pt
# Specify the Label Studio URL and API key to access
# uploaded, local storage and cloud storage files.
# Do not use 'localhost' as it does not work within Docker containers.
# Use prefix 'http://' or 'https://' for the URL always.
# Determine the actual IP using 'ifconfig' (Linux/Mac) or 'ipconfig' (Windows).
- LABEL_STUDIO_URL=http://label_studio:8080
- LABEL_STUDIO_API_KEY=
- CUDA_VISIBLE_DEVICES=0
deploy:
resources:
reservations:
devices:
- driver: nvidia
count: 1
capabilities: [gpu]
ports:
- "9090:9090"
volumes:
- "./data:/data:rw"
volumes:
mydata:
data:
I set the checkpoint and the config to Sam2.1 and on running docker compose up, i encounter this error:
segment_anything_2_video | File "<frozen importlib._bootstrap_external>", line 883, in exec_module
segment_anything_2_video | File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed
segment_anything_2_video | File "/app/_wsgi.py", line 33, in <module>
segment_anything_2_video | from model import NewModel
segment_anything_2_video | File "/app/model.py", line 39, in <module>
segment_anything_2_video | predictor = build_sam2_video_predictor(MODEL_CONFIG, sam2_checkpoint)
segment_anything_2_video | File "/segment-anything-2/sam2/build_sam.py", line 127, in build_sam2_video_predictor
segment_anything_2_video | cfg = compose(config_name=config_file, overrides=hydra_overrides)
segment_anything_2_video | File "/opt/conda/lib/python3.10/site-packages/hydra/compose.py", line 32, in compose
segment_anything_2_video | assert (
segment_anything_2_video | AssertionError: GlobalHydra is not initialized, use @hydra.main() or call one of the hydra initialization methods first
segment_anything_2_video | [2024-10-06 21:12:17 +0000] [7] [INFO] Worker exiting (pid: 7)
Anything obvious that i'm doing wrong?
Thank you!