Views
No views yet


1import torch
2import numpy as np
3import requests
4from PIL import Image
5from transformers import CLIPModel, CLIPFeatureExtractor, AutoTokenizer
6
7model_id = "lyua1225/clip-huge-zh-75k-steps-bs4096"
8model = CLIPModel.from_pretrained(model_id)
9tokenizer = AutoTokenizer.from_pretrained(model_id, trust_remote_code=True)
10processor = CLIPFeatureExtractor.from_pretrained(model_id)
11
12# online example from OFA-Sys
13url = "https://clip-cn-beijing.oss-cn-beijing.aliyuncs.com/pokemon.jpeg"
14image = Image.open(requests.get(url, stream=True).raw).convert("RGB")
15texts = ["杰尼龟", "妙蛙种子", "皮卡丘", "小火龙"]
16
17# compute image feature
18inputs = torch.from_numpy(processor(image).pixel_values[0]).unsqueeze(0)
19image_features = model.get_image_features(pixel_values=inputs)
20image_features = image_features / image_features.norm(p=2, dim=-1, keepdim=True)
21
22# compute text features
23inputs = tokenizer(text=texts, padding="max_length", max_length=77, return_tensors="pt")
24input_ids, attention_mask = inputs.input_ids, inputs.attention_mask
25input_dict = dict(input_ids=input_ids, attention_mask=attention_mask)
26text_features = model.get_text_features(**input_dict)
27text_features = text_features / text_features.norm(p=2, dim=-1, keepdim=True) # normalize
28
29# compute probs for each class
30logit_scale = model.logit_scale.exp()
31logits_per_image = logit_scale * image_features @ text_features.t()
32logits_per_text = logits_per_image.t()
33probs = logits_per_image.softmax(dim=-1).detach().numpy()
34print(np.around(probs, 3))1import torch
2from diffusers import StableDiffusionPipeline
3from transformers import AutoTokenizer, CLIPTextModel
4
5clip_id = "lyua1225/clip-huge-zh-75k-steps-bs4096"
6sd2_id = "stabilityai/stable-diffusion-2-1"
7
8text_encoder = CLIPTextModel.from_pretrained(clip_id).half()
9tokenizer = AutoTokenizer.from_pretrained(clip_id, trust_remote_code=True)
10pipe = StableDiffusionPipeline.from_pretrained(sd2_id, torch_dtype=torch.float16, revision="fp16",
11 tokenizer=tokenizer, text_encoder=text_encoder)
12pipe.to("cuda")
13
14image = pipe("赛博朋克风格的城市街道", num_inference_steps=20).images[0]
15image.save("cyberpunk.jpeg")