foundationpose / verify_weights.py
Georg
now with real weights
e15abf5
Raw
History Blame
3.63 kB
#!/usr/bin/env python3
"""
Verify that FoundationPose weights are accessible from Hugging Face model repository.
This script checks:
1. Model repo exists and is accessible
2. Required weight files are present
3. Files can be downloaded successfully
"""
import os
import sys
from pathlib import Path
try:
from huggingface_hub import list_repo_files, hf_hub_download
except ImportError:
print("❌ huggingface_hub not installed")
print("Install with: pip install huggingface_hub")
sys.exit(1)
# Configuration
MODEL_REPO = os.environ.get("FOUNDATIONPOSE_MODEL_REPO", "gpue/foundationpose-weights")
# Required files
REQUIRED_FILES = [
"2023-10-28-18-33-37/config.yml",
"2023-10-28-18-33-37/model_best.pth",
"2024-01-11-20-02-45/config.yml",
"2024-01-11-20-02-45/model_best.pth",
]
def verify_repo_access():
"""Verify model repository is accessible."""
print(f"Checking repository: {MODEL_REPO}")
print("-" * 60)
try:
files = list_repo_files(repo_id=MODEL_REPO, repo_type="model")
print(f"✓ Repository accessible")
print(f"✓ Found {len(files)} files")
return files
except Exception as e:
print(f"❌ Cannot access repository: {e}")
return None
def verify_required_files(repo_files):
"""Verify all required weight files are present."""
print("\nChecking required files:")
print("-" * 60)
all_present = True
for required_file in REQUIRED_FILES:
if required_file in repo_files:
print(f"✓ {required_file}")
else:
print(f"❌ Missing: {required_file}")
all_present = False
return all_present
def test_download():
"""Test downloading a small file."""
print("\nTesting download:")
print("-" * 60)
try:
# Download a small config file to test connectivity
test_file = "2023-10-28-18-33-37/config.yml"
print(f"Downloading {test_file}...")
downloaded = hf_hub_download(
repo_id=MODEL_REPO,
filename=test_file,
repo_type="model"
)
print(f"✓ Download successful: {downloaded}")
# Check file size
size = Path(downloaded).stat().st_size
print(f"✓ File size: {size:,} bytes")
return True
except Exception as e:
print(f"❌ Download failed: {e}")
return False
def main():
"""Run all verification checks."""
print("=" * 60)
print("FoundationPose Model Repository Verification")
print("=" * 60)
print()
# Check 1: Repository access
repo_files = verify_repo_access()
if repo_files is None:
print("\n❌ Verification failed: Cannot access repository")
sys.exit(1)
# Check 2: Required files
has_all_files = verify_required_files(repo_files)
if not has_all_files:
print("\n❌ Verification failed: Missing required files")
sys.exit(1)
# Check 3: Download test
can_download = test_download()
if not can_download:
print("\n❌ Verification failed: Cannot download files")
sys.exit(1)
# All checks passed
print()
print("=" * 60)
print("✓ All verification checks passed!")
print("=" * 60)
print()
print(f"Model repository '{MODEL_REPO}' is ready to use.")
print()
print("To use in your Space:")
print(" 1. Set environment variable:")
print(f" FOUNDATIONPOSE_MODEL_REPO={MODEL_REPO}")
print(" 2. Set USE_HF_WEIGHTS=true")
print(" 3. Set USE_REAL_MODEL=true")
print()
return 0
if __name__ == "__main__":
sys.exit(main())