3.4 KiB
3.4 KiB
Documentation
- Class name: WAS_BLIP_Model_Loader
- Category: WAS Suite/Loaders
- Output node: False
- Repo Ref: https://github.com/WASasquatch/was-node-suite-comfyui
WAS_BLIP_Model_Loader节点旨在高效地加载和管理用于标题生成和询问任务的BLIP模型。它确保必要的包已安装,并处理BLIP模型的检索和初始化,在WAS套件内提供模型访问的简化接口。
Input types
Required
- blip_model
- 参数'blip_model'对于指定要加载的BLIP模型类型至关重要。它决定了节点将初始化用于标题生成还是询问的模型,从而影响整体功能和预期结果。
- Comfy dtype: str
- Python dtype: str
Output types
- BLIP_MODEL
- 输出BLIP_MODEL代表已加载的BLIP模型,准备用于标题生成或询问任务。它封装了模型的功能,是应用程序内进一步处理的中心组件。
- Comfy dtype: torch.nn.Module
- Python dtype: torch.nn.Module
Usage tips
- Infra type: GPU
Source code
class WAS_BLIP_Model_Loader:
def __init__(self):
pass
@classmethod
def INPUT_TYPES(cls):
return {'required': {'blip_model': (['caption', 'interrogate'],)}}
RETURN_TYPES = ('BLIP_MODEL',)
FUNCTION = 'blip_model'
CATEGORY = 'WAS Suite/Loaders'
def blip_model(self, blip_model):
if 'timm' not in packages() or 'transformers' not in packages() or 'fairscale' not in packages():
cstr(f"Modules or packages are missing to use BLIP models. Please run the `{os.path.join(WAS_SUITE_ROOT, 'requirements.txt')}` through ComfyUI's python executable.").error.print()
exit
if 'transformers==4.26.1' not in packages(True):
cstr(f"`transformers==4.26.1` is required for BLIP models. Please run the `{os.path.join(WAS_SUITE_ROOT, 'requirements.txt')}` through ComfyUI's python executable.").error.print()
exit
device = 'cpu'
conf = getSuiteConfig()
size = 384
if blip_model == 'caption':
from .modules.BLIP.blip_module import blip_decoder
blip_dir = os.path.join(MODELS_DIR, 'blip')
if not os.path.exists(blip_dir):
os.makedirs(blip_dir, exist_ok=True)
torch.hub.set_dir(blip_dir)
if conf.__contains__('blip_model_url'):
model_url = conf['blip_model_url']
else:
model_url = 'https://storage.googleapis.com/sfr-vision-language-research/BLIP/models/model_base_capfilt_large.pth'
model = blip_decoder(pretrained=model_url, image_size=size, vit='base')
model.eval()
model = model.to(device)
elif blip_model == 'interrogate':
from .modules.BLIP.blip_module import blip_vqa
blip_dir = os.path.join(MODELS_DIR, 'blip')
if not os.path.exists(blip_dir):
os.makedirs(blip_dir, exist_ok=True)
torch.hub.set_dir(blip_dir)
if conf.__contains__('blip_model_vqa_url'):
model_url = conf['blip_model_vqa_url']
else:
model_url = 'https://storage.googleapis.com/sfr-vision-language-research/BLIP/models/model_base_vqa_capfilt_large.pth'
model = blip_vqa(pretrained=model_url, image_size=size, vit='base')
model.eval()
model = model.to(device)
result = (model, blip_model)
return (result,)