moqingyan123 commited on
Commit
c77348c
·
1 Parent(s): 888f9e4

fixed vine for hf spaces compatibility

Browse files
Files changed (3) hide show
  1. .gitignore +54 -0
  2. requirements.txt +20 -0
  3. setup.sh +37 -300
.gitignore ADDED
@@ -0,0 +1,54 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # Python
2
+ __pycache__/
3
+ *.py[cod]
4
+ *$py.class
5
+ *.so
6
+ .Python
7
+ build/
8
+ develop-eggs/
9
+ dist/
10
+ downloads/
11
+ eggs/
12
+ .eggs/
13
+ lib/
14
+ lib64/
15
+ parts/
16
+ sdist/
17
+ var/
18
+ wheels/
19
+ *.egg-info/
20
+ .installed.cfg
21
+ *.egg
22
+
23
+ # Virtual environments
24
+ venv/
25
+ ENV/
26
+ env/
27
+
28
+ # Gradio
29
+ gradio_temp/
30
+
31
+ # Outputs and visualizations
32
+ outputs/
33
+ *.mp4
34
+ *.avi
35
+ *.mov
36
+
37
+ # IDE
38
+ .vscode/
39
+ .idea/
40
+ *.swp
41
+ *.swo
42
+
43
+ # OS
44
+ .DS_Store
45
+ Thumbs.db
46
+
47
+ # Model checkpoints (too large for git)
48
+ *.pth
49
+ *.pt
50
+ *.ckpt
51
+ *.safetensors
52
+
53
+ # Logs
54
+ *.log
requirements.txt CHANGED
@@ -0,0 +1,20 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ gradio>=4.0.0
2
+ spaces>=0.24.0
3
+
4
+ transformers>=4.40.0
5
+ huggingface-hub>=0.23.0
6
+ safetensors>=0.4.2
7
+ accelerate>=0.30.0
8
+
9
+ --extra-index-url https://download.pytorch.org/whl/cu121
10
+ torch==2.2.1
11
+ torchvision==0.17.1
12
+
13
+ numpy
14
+ opencv-python
15
+ pillow
16
+ matplotlib
17
+ seaborn
18
+ pandas
19
+ tqdm
20
+ scikit-learn
setup.sh CHANGED
@@ -1,320 +1,57 @@
1
  #!/bin/bash
2
- set -e # Exit on any error
3
 
4
- echo "============================================================================"
5
- echo "VINE Model - Complete Setup Script"
6
- echo "This script sets up everything needed to use the VINE model from HuggingFace"
7
- echo "Model: https://huggingface.co/video-fm/vine"
8
- echo "============================================================================"
9
-
10
- # Get the directory where this script is located
11
- SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
12
- cd "$SCRIPT_DIR"
13
-
14
- # ============================================================================
15
- # Step 2: Install PyTorch
16
- # ============================================================================
17
- echo ""
18
  echo "=========================================="
19
- echo "Step 2: Installing PyTorch 2.7.1 with CUDA 12.6 support..."
20
  echo "=========================================="
21
- pip install torch==2.7.1 torchvision==0.22.1 --index-url https://download.pytorch.org/whl/cu126
22
-
23
- # Upgrade pip
24
- pip install --upgrade pip
25
-
26
- # ============================================================================
27
- # Step 3: Install Core Dependencies
28
- # ============================================================================
29
- echo ""
30
- echo "=========================================="
31
- echo "Step 3: Installing core dependencies..."
32
- echo "=========================================="
33
-
34
- # Install transformers and HuggingFace tools
35
- pip install transformers>=4.40.0
36
- pip install huggingface-hub
37
- pip install safetensors
38
- pip install accelerate
39
 
40
- # Install video processing dependencies
41
- pip install opencv-python
42
- pip install pillow
43
- pip install matplotlib
44
- pip install seaborn
45
- pip install pandas
46
- pip install numpy
47
- pip install tqdm
48
- pip install scikit-learn
49
 
50
- # Install Gradio for demos (optional)
51
- pip install gradio
 
 
 
52
 
53
- echo "✓ Core dependencies installed"
 
 
54
 
55
- # ============================================================================
56
- # Step 4: Clone Required Repositories
57
- # ============================================================================
58
- echo ""
59
- echo "=========================================="
60
- echo "Step 4: Cloning required repositories..."
61
- echo "=========================================="
62
 
63
- mkdir -p src
64
- cd src
65
-
66
- # Clone SAM2
67
- if [ ! -d "video-sam2" ]; then
68
- echo "Cloning video-sam2..."
69
- git clone https://github.com/video-fm/video-sam2.git
70
- else
71
- echo "video-sam2 already exists, skipping clone"
72
  fi
73
 
74
- # Clone GroundingDINO
75
- if [ ! -d "GroundingDINO" ]; then
76
- echo "Cloning GroundingDINO..."
77
- git clone https://github.com/video-fm/GroundingDINO.git
78
- else
79
- echo "GroundingDINO already exists, skipping clone"
80
  fi
81
 
82
- # Clone LASER
83
- if [ ! -d "LASER" ]; then
84
- echo "Cloning LASER..."
85
- git clone https://github.com/kevinxuez/LASER.git
86
- else
87
- echo "LASER already exists, skipping clone"
88
  fi
89
 
90
- # Clone vine_hf
91
- if [ ! -d "vine_hf" ]; then
92
- echo "Cloning vine_hf..."
93
- git clone https://github.com/kevinxuez/vine_hf.git
94
- else
95
- echo "vine_hf already exists, skipping clone"
96
- fi
97
-
98
- echo "✓ Repositories cloned"
99
-
100
- # ============================================================================
101
- # Step 5: Install Packages in Editable Mode
102
- # ============================================================================
103
- echo ""
104
- echo "=========================================="
105
- echo "Step 5: Installing packages in editable mode..."
106
- echo "=========================================="
107
-
108
- echo "Installing video-sam2..."
109
- pip install --no-cache-dir -e ./video-sam2
110
-
111
- echo "Installing GroundingDINO..."
112
- pip install --no-cache-dir --use-pep517 -e ./GroundingDINO
113
-
114
- echo "Installing LASER..."
115
- pip install --no-cache-dir -e ./LASER
116
-
117
- echo "Installing vine_hf..."
118
- pip install --no-cache-dir -e ./vine_hf
119
-
120
- echo "✓ Packages installed"
121
-
122
- # ============================================================================
123
- # Step 6: Build GroundingDINO Extensions
124
- # ============================================================================
125
- echo ""
126
- echo "=========================================="
127
- echo "Step 6: Building GroundingDINO native extensions..."
128
- echo "=========================================="
129
- cd GroundingDINO
130
- python setup.py build_ext --force --inplace
131
- cd ..
132
-
133
- # Return to main directory
134
- cd "$SCRIPT_DIR"
135
-
136
- echo "✓ Extensions built"
137
-
138
- # ============================================================================
139
- # Step 7: Download Model Checkpoints
140
- # ============================================================================
141
- echo ""
142
- echo "=========================================="
143
- echo "Step 7: Downloading model checkpoints..."
144
- echo "=========================================="
145
 
146
- # Create checkpoints directory
147
- mkdir -p checkpoints
148
- cd checkpoints
149
-
150
- # Download SAM2 checkpoint (~149 MB)
151
- if [ ! -f "sam2_hiera_tiny.pt" ]; then
152
- echo "Downloading SAM2 checkpoint (sam2_hiera_tiny.pt ~149 MB)..."
153
- wget -q --show-progress https://dl.fbaipublicfiles.com/segment_anything_2/072824/sam2_hiera_tiny.pt
154
- echo "✓ SAM2 checkpoint downloaded"
155
- else
156
- echo "✓ SAM2 checkpoint already exists"
157
- fi
158
-
159
- # Download SAM2 config
160
- if [ ! -f "sam2_hiera_t.yaml" ]; then
161
- echo "Downloading SAM2 config (sam2_hiera_t.yaml)..."
162
- wget -q --show-progress https://raw.githubusercontent.com/facebookresearch/sam2/main/sam2/configs/sam2.1/sam2.1_hiera_t.yaml -O sam2_hiera_t.yaml
163
- echo "✓ SAM2 config downloaded"
164
- else
165
- echo "✓ SAM2 config already exists"
166
- fi
167
-
168
- # Download GroundingDINO checkpoint (~662 MB)
169
- if [ ! -f "groundingdino_swint_ogc.pth" ]; then
170
- echo "Downloading GroundingDINO checkpoint (groundingdino_swint_ogc.pth ~662 MB)..."
171
- wget -q --show-progress https://github.com/IDEA-Research/GroundingDINO/releases/download/v0.1.0-alpha/groundingdino_swint_ogc.pth
172
- echo "✓ GroundingDINO checkpoint downloaded"
173
- else
174
- echo "✓ GroundingDINO checkpoint already exists"
175
- fi
176
-
177
- # Download GroundingDINO config
178
- if [ ! -f "GroundingDINO_SwinT_OGC.py" ]; then
179
- echo "Downloading GroundingDINO config (GroundingDINO_SwinT_OGC.py)..."
180
- wget -q --show-progress https://raw.githubusercontent.com/IDEA-Research/GroundingDINO/main/groundingdino/config/GroundingDINO_SwinT_OGC.py
181
- echo "✓ GroundingDINO config downloaded"
182
- else
183
- echo "✓ GroundingDINO config already exists"
184
  fi
185
 
186
- # Return to main directory
187
- cd "$SCRIPT_DIR"
188
-
189
- echo ""
190
- echo "✓ All checkpoints downloaded to: $SCRIPT_DIR/checkpoints/"
191
-
192
- # ============================================================================
193
- # Step 8: Create Test Script
194
- # ============================================================================
195
- echo ""
196
  echo "=========================================="
197
- echo "Step 8: Creating test script..."
198
  echo "=========================================="
199
-
200
- cat > test_vine.py << 'TESTEOF'
201
- """
202
- Test script for VINE model loaded from HuggingFace Hub
203
- """
204
- import os
205
- import sys
206
- from pathlib import Path
207
-
208
- os.environ['OPENAI_API_KEY'] = "dummy-key"
209
-
210
- # Add src to path
211
- sys.path.insert(0, str(Path(__file__).parent / "src"))
212
-
213
- print("=" * 80)
214
- print("Testing VINE Model from video-fm/vine")
215
- print("=" * 80)
216
-
217
- # Load VINE from HuggingFace
218
- print("\n1. Loading VINE model from HuggingFace Hub...")
219
- from transformers import AutoModel
220
- model = AutoModel.from_pretrained('video-fm/vine', trust_remote_code=True)
221
- print("✓ Model loaded successfully")
222
-
223
- # Verify checkpoint files
224
- print("\n2. Verifying checkpoint files...")
225
- checkpoint_dir = Path(__file__).parent / "checkpoints"
226
- checkpoints = {
227
- "SAM2 config": checkpoint_dir / "sam2_hiera_t.yaml",
228
- "SAM2 checkpoint": checkpoint_dir / "sam2_hiera_tiny.pt",
229
- "GroundingDINO config": checkpoint_dir / "GroundingDINO_SwinT_OGC.py",
230
- "GroundingDINO checkpoint": checkpoint_dir / "groundingdino_swint_ogc.pth",
231
- }
232
-
233
- all_exist = True
234
- for name, path in checkpoints.items():
235
- if path.exists():
236
- size_mb = path.stat().st_size / (1024 * 1024)
237
- print(f"✓ {name}: {path.name} ({size_mb:.1f} MB)")
238
- else:
239
- print(f"✗ {name}: NOT FOUND at {path}")
240
- all_exist = False
241
-
242
- # Create pipeline
243
- print("\n3. Creating VINE pipeline...")
244
- from vine_hf import VinePipeline
245
-
246
- pipeline = VinePipeline(
247
- model=model,
248
- tokenizer=None,
249
- sam_config_path=str(checkpoints["SAM2 config"]),
250
- sam_checkpoint_path=str(checkpoints["SAM2 checkpoint"]),
251
- gd_config_path=str(checkpoints["GroundingDINO config"]),
252
- gd_checkpoint_path=str(checkpoints["GroundingDINO checkpoint"]),
253
- device="cuda",
254
- trust_remote_code=True
255
- )
256
- print("✓ Pipeline created successfully")
257
-
258
- print("\n" + "=" * 80)
259
- print("✅ VINE Setup Complete and Working!")
260
- print("=" * 80)
261
- print("\nYou can now use the model for video understanding:")
262
- print("""
263
- from transformers import AutoModel
264
- from vine_hf import VinePipeline
265
-
266
- model = AutoModel.from_pretrained('video-fm/vine', trust_remote_code=True)
267
- pipeline = VinePipeline(model=model, ...)
268
- results = pipeline('video.mp4', categorical_keywords=['person', 'dog'], ...)
269
- """)
270
- TESTEOF
271
-
272
- echo "✓ Test script created: test_vine.py"
273
-
274
- # ============================================================================
275
- # Step 9: Test the Installation
276
- # ============================================================================
277
- echo ""
278
- echo "=========================================="
279
- echo "Step 9: Testing installation..."
280
- echo "=========================================="
281
-
282
- echo "Checking PyTorch and CUDA..."
283
- python -c "import torch; print(f'PyTorch version: {torch.__version__}'); print(f'CUDA available: {torch.cuda.is_available()}'); print(f'CUDA version: {torch.version.cuda if torch.cuda.is_available() else \"N/A\"}')"
284
-
285
- echo ""
286
- echo "Running VINE model test..."
287
- python test_vine.py
288
-
289
- # ============================================================================
290
- # Final Summary
291
- # ============================================================================
292
- echo ""
293
- echo "============================================================================"
294
- echo "✅ VINE Setup Complete!"
295
- echo "============================================================================"
296
- echo ""
297
- echo "What was installed:"
298
- echo " ✓ Conda environment: vine_demo"
299
- echo " ✓ PyTorch 2.7.1 with CUDA 12.6"
300
- echo " ✓ Required packages: laser, sam2, groundingdino, vine_hf"
301
- echo " ✓ Model checkpoints downloaded to: checkpoints/"
302
- echo ""
303
- echo "Checkpoint files:"
304
- echo " ✓ checkpoints/sam2_hiera_tiny.pt (~149 MB)"
305
- echo " ✓ checkpoints/sam2_hiera_t.yaml"
306
- echo " ✓ checkpoints/groundingdino_swint_ogc.pth (~662 MB)"
307
- echo " ✓ checkpoints/GroundingDINO_SwinT_OGC.py"
308
- echo ""
309
- echo "To use VINE:"
310
- echo " 1. Activate environment: conda activate vine_demo"
311
- echo " 2. Run your script or test_vine.py"
312
- echo ""
313
- echo "Example usage:"
314
- echo " python test_vine.py"
315
- echo ""
316
- echo "Model URL: https://huggingface.co/video-fm/vine"
317
- echo "Documentation: See README.md on HuggingFace Hub"
318
- echo ""
319
- echo "🎉 Happy video understanding with VINE!"
320
- echo "============================================================================"
 
1
  #!/bin/bash
2
+ set -e
3
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
4
  echo "=========================================="
5
+ echo "VINE Demo Setup Script for HuggingFace Spaces"
6
  echo "=========================================="
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
7
 
8
+ # Install system dependencies
9
+ echo "Installing system dependencies..."
10
+ apt-get update -qq
11
+ apt-get install -y -qq ffmpeg
 
 
 
 
 
12
 
13
+ # Install additional required packages
14
+ echo "Installing additional Python packages..."
15
+ pip install --no-cache-dir flax openai
16
+ pip install --no-cache-dir spacy spacy_fastlang
17
+ pip install --no-cache-dir decord
18
 
19
+ # Download spacy language model
20
+ echo "Downloading spacy language model..."
21
+ python -m spacy download en_core_web_lg
22
 
23
+ # Install local packages in editable mode from src/
24
+ echo "Installing local packages in editable mode..."
 
 
 
 
 
25
 
26
+ # Install video-sam2
27
+ if [ -d "src/video-sam2" ]; then
28
+ echo "Installing video-sam2..."
29
+ pip install --no-cache-dir -e src/video-sam2
 
 
 
 
 
30
  fi
31
 
32
+ # Install LASER
33
+ if [ -d "src/LASER" ]; then
34
+ echo "Installing LASER..."
35
+ pip install --no-cache-dir -e src/LASER
 
 
36
  fi
37
 
38
+ # Install vine_hf
39
+ if [ -d "src/vine_hf" ]; then
40
+ echo "Installing vine_hf..."
41
+ pip install --no-cache-dir -e src/vine_hf
 
 
42
  fi
43
 
44
+ # Install GroundingDINO and build C++ extensions
45
+ if [ -d "src/GroundingDINO" ]; then
46
+ echo "Installing GroundingDINO..."
47
+ pip install --no-cache-dir -e src/GroundingDINO
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
48
 
49
+ echo "Building GroundingDINO C++ extensions (will show warnings if CUDA unavailable)..."
50
+ cd src/GroundingDINO
51
+ python setup.py build_ext --inplace 2>&1 | tail -20
52
+ cd ../..
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
53
  fi
54
 
 
 
 
 
 
 
 
 
 
 
55
  echo "=========================================="
56
+ echo "Setup complete!"
57
  echo "=========================================="