Spaces:
Build error
Build error
import PIL | |
import torch | |
import numpy as np | |
from transformers import AutoProcessor, LlavaForConditionalGeneration | |
class Llava(): | |
def __init__(self,device='cuda', | |
llava_ckpt='llava-hf/bakLlava-v1-hf') -> None: | |
self.device = device | |
self.model_id = llava_ckpt | |
self.model = LlavaForConditionalGeneration.from_pretrained( | |
self.model_id, | |
torch_dtype=torch.float16, | |
low_cpu_mem_usage=True, | |
).to(self.device) | |
self.processor = AutoProcessor.from_pretrained(self.model_id) | |
def __call__(self,image:PIL.Image, prompt=None): | |
# input check | |
if not isinstance(image,PIL.Image.Image): | |
if np.amax(image) < 1.1: | |
image = image * 255 | |
image = image.astype(np.uint8) | |
image = PIL.Image.fromarray(image) | |
prompt = '<image>\n USER: Detaily imagine and describe the scene this image taken from? \n ASSISTANT: This image is taken from a scene of ' if prompt is None else prompt | |
inputs = self.processor(prompt, image, return_tensors='pt').to(self.model.device,torch.float16) | |
output = self.model.generate(**inputs, max_new_tokens=200, do_sample=False) | |
answer = self.processor.decode(output[0][2:], skip_special_tokens=True) | |
return answer |