- Notifications
You must be signed in to change notification settings - Fork 29
Open
Description
If I want to use your model to replace evaclip, how should the following code be modified?
`
elif clip_pretrained=="EVA02-CLIP-B-16" or clip_pretrained=="EVA02-CLIP-L-14-336":
clip_model = eva_clip.create_model(model_name=clip_pretrained,
pretrained=cache_dir,
force_custom_clip=True,
precision="amp",
device=device)
self.tokenizer = open_clip.get_tokenizer(clip_pretrained)
clip_preprocess=None
def get_text_embeds(self, classnames, templates, clip_model, prompt=None):
if self.cache is not None and not self.training:
return self.cache
if self.tokens is None or prompt is not None: tokens = [] for classname in classnames: if ', ' in classname: classname_splits = classname.split(', ') texts = [template.format(classname_splits[0]) for template in templates] else: texts = [template.format(classname) for template in templates] # format with class if self.tokenizer is not None: texts = self.tokenizer(texts).cuda() else: texts = clip.tokenize(texts).cuda() tokens.append(texts) tokens = torch.stack(tokens, dim=0).squeeze(1) if prompt is None: self.tokens = tokens elif self.tokens is not None and prompt is None: tokens = self.tokens class_embeddings = clip_model.encode_text(tokens, prompt) class_embeddings = class_embeddings / class_embeddings.norm(dim=-1, keepdim=True) class_embeddings = class_embeddings.unsqueeze(1) if not self.training: self.cache = class_embeddings return class_embeddings` Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
No labels