Initial snapshot: hand motion pipeline (Dyn-HaMR + dex-retargeting + SPIDER)
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,42 @@
|
||||
"""Prepare project-local Hugging Face cache metadata and resumable downloads."""
|
||||
import json
|
||||
import subprocess
|
||||
from pathlib import Path
|
||||
ROOT = Path(__file__).resolve().parents[1]
|
||||
CACHE = ROOT / '.hf_cache' / 'hub'
|
||||
|
||||
def fetch(url, target):
|
||||
target.parent.mkdir(parents=True, exist_ok=True)
|
||||
subprocess.run(['curl', '-fsSL', '--retry', '3', '--retry-all-errors', '--max-time', '45', url, '-o', str(target)], check=True)
|
||||
|
||||
manifest = []
|
||||
for repo, files, aliases in [
|
||||
('google-bert/bert-base-uncased', ['config.json', 'tokenizer.json', 'tokenizer_config.json', 'vocab.txt', 'model.safetensors'], ['bert-base-uncased']),
|
||||
('lpiccinelli/unidepth-v2-vitl14', ['config.json', 'model.safetensors'], []),
|
||||
('Rain729/Prior-Depth-Anything', ['depth_anything_v2_vitb.pth', 'prior_depth_anything_vitb.pth'], []),
|
||||
]:
|
||||
meta = ROOT / 'output' / (repo.replace('/', '_') + '_metadata.json')
|
||||
fetch('https://hf-mirror.com/api/models/' + repo, meta)
|
||||
revision = json.loads(meta.read_text())['sha']
|
||||
cache = CACHE / ('models--' + repo.replace('/', '--'))
|
||||
snapshot = cache / 'snapshots' / revision
|
||||
snapshot.mkdir(parents=True, exist_ok=True)
|
||||
(cache / 'refs').mkdir(exist_ok=True)
|
||||
(cache / 'refs' / 'main').write_text(revision)
|
||||
for name in files:
|
||||
target = snapshot / name
|
||||
url = 'https://hf-mirror.com/' + repo + '/resolve/' + revision + '/' + name
|
||||
if repo.startswith('lpiccinelli/'):
|
||||
local = ROOT / 'weights' / 'unidepth-v2-vitl14' / name
|
||||
if not target.exists() and not target.is_symlink():
|
||||
target.symlink_to(local)
|
||||
elif name.endswith(('.json', '.txt')):
|
||||
fetch(url, target)
|
||||
else:
|
||||
manifest.extend([url, ' dir=' + str(snapshot), ' out=' + name])
|
||||
for alias in aliases:
|
||||
alias_path = CACHE / ('models--' + alias.replace('/', '--'))
|
||||
if not alias_path.exists():
|
||||
alias_path.symlink_to(cache, target_is_directory=True)
|
||||
(ROOT / 'output' / 'vipe_weights_downloads.txt').write_text('\n'.join(manifest) + '\n')
|
||||
print('Prepared', len(manifest) // 3, 'weight downloads')
|
||||
Reference in New Issue
Block a user