Skip to content

Commit 245deae

Browse files
committed
add auto download for tools
1 parent 11c6dbb commit 245deae

6 files changed

Lines changed: 21 additions & 0 deletions

File tree

hydra_vl4ai/tool/blip.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
import os
12
import torch
23
import re
34

@@ -24,6 +25,9 @@ def __init__(self, gpu_number=0, blip_v2_model_type="blip2-flan-t5-xxl"):
2425

2526
max_memory = {gpu_number: torch.cuda.mem_get_info(self.dev)[0]}
2627

28+
if not os.path.exists(get_root_folder() / "pretrained_models" / "blip2" / blip_v2_model_type):
29+
self.prepare()
30+
2731
self.processor = Blip2Processor.from_pretrained(get_root_folder() / "pretrained_models" / "blip2" / blip_v2_model_type)
2832
# Device_map must be sequential for manual GPU selection
2933
try:

hydra_vl4ai/tool/efficient_sam.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
import os
12
import cv2
23
import numpy as np
34
from ..util.misc import get_root_folder
@@ -12,6 +13,8 @@ class EfficientSam(BaseModel):
1213

1314
def __init__(self, gpu_number):
1415
super().__init__(gpu_number)
16+
if not os.path.exists(get_root_folder() / "pretrained_models" / "efficient_sam" / "efficientsam_s_gpu.jit"):
17+
self.prepare()
1518
self.model = torch.jit.load(str(get_root_folder() / "pretrained_models" / "efficient_sam" / "efficientsam_s_gpu.jit"), map_location=self.dev)
1619
self.to_tensor = ToTensor()
1720

hydra_vl4ai/tool/glip.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
import os
12
from typing import Union
23

34
from ..util.config import Config
@@ -27,6 +28,9 @@ def __init__(self, model_size='large', gpu_number=0, *args):
2728
config_file = working_dir / "configs/glip_Swin_L.yaml"
2829
weight_file = str(working_dir / "checkpoints/glip_large_model.pth")
2930

31+
if not os.path.exists(weight_file):
32+
self.prepare(model_size)
33+
3034
class OurGLIPDemo(GLIPDemo):
3135

3236
def __init__(self, dev, *args_demo):

hydra_vl4ai/tool/grounding_dino.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
import os
12
import cv2
23
import numpy as np
34
import torch
@@ -24,6 +25,8 @@ def __init__(self, gpu_number=0):
2425

2526
super().__init__(gpu_number)
2627
path_checkpoint = str(get_root_folder() / "pretrained_models" / "grounding_dino" / "groundingdino_swint_ogc.pth")
28+
if not os.path.exists(path_checkpoint):
29+
self.prepare()
2730
config_file = str(get_root_folder() / "module_repos" / "Grounded-Segment-Anything" / "GroundingDINO" / "groundingdino" / "config" / "GroundingDINO_SwinT_OGC.py")
2831
args = SLConfig.fromfile(config_file)
2932
args.device = self.dev

hydra_vl4ai/tool/llava.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,12 @@
1+
import os
12
import torch
23
import re
34
from torchvision import transforms
45
from llava.conversation import conv_templates
56
from llava.mm_utils import process_images, tokenizer_image_token, get_model_name_from_path
67
from llava.model.builder import load_pretrained_model
78
from llava.utils import disable_torch_init
9+
from huggingface_hub import snapshot_download
810

911
from ._base import BaseModel, module_registry
1012
from ..util.misc import get_root_folder
@@ -17,6 +19,8 @@ def __init__(self, gpu_number=0, model_name: str = "liuhaotian/llava-v1.5-7b"):
1719
super().__init__(gpu_number)
1820
self.model_path = get_root_folder() / "pretrained_models" / "llava" / model_name.split("/")[-1]
1921
self.model_name = get_model_name_from_path(str(self.model_path))
22+
if not os.path.exists(self.model_path):
23+
self.prepare(model_name)
2024
disable_torch_init()
2125
self.tokenizer, self.model, self.image_processor, self.context_len = load_pretrained_model(self.model_path,
2226
model_name=self.model_name, model_base=None, load_8bit=False, load_4bit=False)

hydra_vl4ai/tool/xvlm.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
import os
12
from pathlib import Path
23

34
from transformers import BertTokenizer
@@ -39,6 +40,8 @@ def __init__(self, gpu_number=0,
3940
'num_heads': [4, 8, 16, 32]
4041
}
4142
model = XVLMBase(config_xvlm, use_contrastive_loss=True, vision_config=vision_config)
43+
if not os.path.exists(path_checkpoint):
44+
self.prepare()
4245
checkpoint = torch.load(path_checkpoint, map_location='cpu')
4346
state_dict = checkpoint['model'] if 'model' in checkpoint.keys() else checkpoint
4447
msg = model.load_state_dict(state_dict, strict=False)

0 commit comments

Comments
 (0)