Blip2

Blip2 Blip2

Blip 2link image 12

Introduçãolink image 13

Este caderno foi traduzido automaticamente para torná-lo acessível a mais pessoas, por favor me avise se você vir algum erro de digitação..

Blip2 é uma inteligência artificial capaz de pegar uma imagem ou vídeo como entrada e ter uma conversa e responder perguntas ou fornecer contexto ao que essa entrada mostra de uma maneira muito precisa 🤯

GitHub

Papel

Instalaçãolink image 14

A fim de instalar esta ferramenta é melhor criar um novo ambiente anaconda.

	
!$ conda create -n blip2 python=3.9
Copy

Agora vamos para o meio ambiente

	
!$ conda create -n blip2 python=3.9
!$ conda activate blip2
Copy

Instalamos todos os módulos necessários

	
!$ conda create -n blip2 python=3.9
!$ conda activate blip2
!$ conda install pytorch torchvision torchaudio pytorch-cuda=11.7 -c pytorch -c nvidia
Copy
	
!$ conda create -n blip2 python=3.9
!$ conda activate blip2
!$ conda install pytorch torchvision torchaudio pytorch-cuda=11.7 -c pytorch -c nvidia
!$ conda install -c anaconda pillow
Copy
	
!$ conda create -n blip2 python=3.9
!$ conda activate blip2
!$ conda install pytorch torchvision torchaudio pytorch-cuda=11.7 -c pytorch -c nvidia
!$ conda install -c anaconda pillow
!$ conda install -y -c anaconda requests
Copy
	
!$ conda create -n blip2 python=3.9
!$ conda activate blip2
!$ conda install pytorch torchvision torchaudio pytorch-cuda=11.7 -c pytorch -c nvidia
!$ conda install -c anaconda pillow
!$ conda install -y -c anaconda requests
!$ conda install -y -c anaconda jupyter
Copy

Finalmente instalamos o blip2

	
!$ conda create -n blip2 python=3.9
!$ conda activate blip2
!$ conda install pytorch torchvision torchaudio pytorch-cuda=11.7 -c pytorch -c nvidia
!$ conda install -c anaconda pillow
!$ conda install -y -c anaconda requests
!$ conda install -y -c anaconda jupyter
!$ pip install salesforce-lavis
Copy

Usolink image 15

Carregamos as bibliotecas necessárias

	
!$ conda create -n blip2 python=3.9
!$ conda activate blip2
!$ conda install pytorch torchvision torchaudio pytorch-cuda=11.7 -c pytorch -c nvidia
!$ conda install -c anaconda pillow
!$ conda install -y -c anaconda requests
!$ conda install -y -c anaconda jupyter
!$ pip install salesforce-lavis
import torch
from PIL import Image
import requests
from lavis.models import load_model_and_preprocess
Copy

Nós carregamos uma imagem de exemplo

img_url = 'https://upload.wikimedia.org/wikipedia/commons/thumb/4/4d/12_-_The_Mystical_King_Cobra_and_Coffee_Forests.jpg/800px-12_-_The_Mystical_King_Cobra_and_Coffee_Forests.jpg'
      raw_image = Image.open(requests.get(img_url, stream=True).raw).convert('RGB')   
      display(raw_image.resize((500, 500)))
      
image blip2 1

Configuramos a GPU, se houver

	
!$ conda create -n blip2 python=3.9
!$ conda activate blip2
!$ conda install pytorch torchvision torchaudio pytorch-cuda=11.7 -c pytorch -c nvidia
!$ conda install -c anaconda pillow
!$ conda install -y -c anaconda requests
!$ conda install -y -c anaconda jupyter
!$ pip install salesforce-lavis
import torch
from PIL import Image
import requests
from lavis.models import load_model_and_preprocess
img_url = 'https://upload.wikimedia.org/wikipedia/commons/thumb/4/4d/12_-_The_Mystical_King_Cobra_and_Coffee_Forests.jpg/800px-12_-_The_Mystical_King_Cobra_and_Coffee_Forests.jpg'
raw_image = Image.open(requests.get(img_url, stream=True).raw).convert('RGB')
display(raw_image.resize((500, 500)))
device = torch.device("cuda" if torch.cuda.is_available() else 'cpu')
device
Copy
	
device(type='cuda')

Nós designamos um modelo. No meu caso, tenho um computador com 32 GB de RAM e uma GPU 3060 com 12 GB de VRAM que não posso utilizar todos eles, por isso coloquei ao lado de um comentário ok com os modelos que pude utilizar, e aqueles que não pude utilizar, o erro que me deu. Se você tem um computador com a mesma RAM e VRAM, você já sabe quais você pode utilizar, se não tiver que tentar

# name = "blip2_opt"; model_type = "pretrain_opt2.7b"           # ok
      # name = "blip2_opt"; model_type = "caption_coco_opt2.7b"       # FAIL VRAM
      # name = "blip2_opt"; model_type = "pretrain_opt6.7b"           # FAIL RAM
      # name = "blip2_opt"; model_type = "caption_coco_opt6.7b"       # FAIL RAM
      
      # name = "blip2"; model_type = "pretrain"                       # FAIL type error
      # name = "blip2"; model_type = "coco"                           # ok
      
      name = "blip2_t5"; model_type = "pretrain_flant5xl"           # ok
      # name = "blip2_t5"; model_type = "caption_coco_flant5xl"       # FAIL VRAM
      # name = "blip2_t5"; model_type = "pretrain_flant5xxl"          # FAIL
      
      model, vis_processors, _ = load_model_and_preprocess(
          name=name, model_type=model_type, is_eval=True, device=device
      )
      
      vis_processors.keys()
      
Loading checkpoint shards:   0%|          | 0/2 [00:00<?, ?it/s]
Out[4]:
dict_keys(['train', 'eval'])

Nós preparamos a imagem para inserção no modelo.

	
# name = "blip2_opt"; model_type = "pretrain_opt2.7b" # ok
# name = "blip2_opt"; model_type = "caption_coco_opt2.7b" # FAIL VRAM
# name = "blip2_opt"; model_type = "pretrain_opt6.7b" # FAIL RAM
# name = "blip2_opt"; model_type = "caption_coco_opt6.7b" # FAIL RAM
# name = "blip2"; model_type = "pretrain" # FAIL type error
# name = "blip2"; model_type = "coco" # ok
name = "blip2_t5"; model_type = "pretrain_flant5xl" # ok
# name = "blip2_t5"; model_type = "caption_coco_flant5xl" # FAIL VRAM
# name = "blip2_t5"; model_type = "pretrain_flant5xxl" # FAIL
model, vis_processors, _ = load_model_and_preprocess(
name=name, model_type=model_type, is_eval=True, device=device
)
vis_processors.keys()
image = vis_processors["eval"](raw_image).unsqueeze(0).to(device)
Copy

Analisamos a imagem sem fazer nenhuma perguntalink image 16

	
# name = "blip2_opt"; model_type = "pretrain_opt2.7b" # ok
# name = "blip2_opt"; model_type = "caption_coco_opt2.7b" # FAIL VRAM
# name = "blip2_opt"; model_type = "pretrain_opt6.7b" # FAIL RAM
# name = "blip2_opt"; model_type = "caption_coco_opt6.7b" # FAIL RAM
# name = "blip2"; model_type = "pretrain" # FAIL type error
# name = "blip2"; model_type = "coco" # ok
name = "blip2_t5"; model_type = "pretrain_flant5xl" # ok
# name = "blip2_t5"; model_type = "caption_coco_flant5xl" # FAIL VRAM
# name = "blip2_t5"; model_type = "pretrain_flant5xxl" # FAIL
model, vis_processors, _ = load_model_and_preprocess(
name=name, model_type=model_type, is_eval=True, device=device
)
vis_processors.keys()
image = vis_processors["eval"](raw_image).unsqueeze(0).to(device)
model.generate({"image": image})
Copy
	
Loading checkpoint shards: 0%| | 0/2 [00:00<?, ?it/s]
['a black and white snake']

Analisamos a imagem perguntandolink image 17

	
prompt = None
Copy
	
prompt = None
def prepare_prompt(prompt, question):
if prompt is None:
prompt = question + " Answer:"
else:
prompt = prompt + " " + question + " Answer:"
return prompt
Copy
	
prompt = None
def prepare_prompt(prompt, question):
if prompt is None:
prompt = question + " Answer:"
else:
prompt = prompt + " " + question + " Answer:"
return prompt
def get_answer(prompt, question, model):
prompt = prepare_prompt(prompt, question)
answer = model.generate(
{
"image": image,
"prompt": prompt
}
)
answer = answer[0]
prompt = prompt + " " + answer + "."
return prompt, answer
Copy
	
prompt = None
def prepare_prompt(prompt, question):
if prompt is None:
prompt = question + " Answer:"
else:
prompt = prompt + " " + question + " Answer:"
return prompt
def get_answer(prompt, question, model):
prompt = prepare_prompt(prompt, question)
answer = model.generate(
{
"image": image,
"prompt": prompt
}
)
answer = answer[0]
prompt = prompt + " " + answer + "."
return prompt, answer
question = "What's in the picture?"
prompt, answer = get_answer(prompt, question, model)
print(f"Question: {question}")
print(f"Answer: {answer}")
Copy
	
Question: What's in the picture?
Answer: a snake
	
question = "What kind of snake?"
prompt, answer = get_answer(prompt, question, model)
print(f"Question: {question}")
print(f"Answer: {answer}")
Copy
	
Question: What kind of snake?
Answer: cobra
	
question = "Is it poisonous?"
prompt, answer = get_answer(prompt, question, model)
print(f"Question: {question}")
print(f"Answer: {answer}")
Copy
	
Question: Is it poisonous?
Answer: yes
	
question = "If it bites me, can I die?"
prompt, answer = get_answer(prompt, question, model)
print(f"Question: {question}")
print(f"Answer: {answer}")
Copy
	
Question: If it bites me, can I die?
Answer: yes

Continuar lendo

Últimos posts -->

Você viu esses projetos?

Subtify

Subtify Subtify

Gerador de legendas para vídeos no idioma que você desejar. Além disso, coloca uma legenda de cor diferente para cada pessoa

Ver todos os projetos -->

Quer aplicar IA no seu projeto? Entre em contato!

Quer melhorar com essas dicas?

Últimos tips -->

Use isso localmente

Os espaços do Hugging Face nos permitem executar modelos com demos muito simples, mas e se a demo quebrar? Ou se o usuário a deletar? Por isso, criei contêineres docker com alguns espaços interessantes, para poder usá-los localmente, aconteça o que acontecer. Na verdade, se você clicar em qualquer botão de visualização de projeto, ele pode levá-lo a um espaço que não funciona.

Flow edit

Flow edit Flow edit

Edite imagens com este modelo de Flow. Baseado em SD3 ou FLUX, você pode editar qualquer imagem e gerar novas

FLUX.1-RealismLora

FLUX.1-RealismLora FLUX.1-RealismLora
Ver todos os contêineres -->

Quer aplicar IA no seu projeto? Entre em contato!

Você quer treinar seu modelo com esses datasets?

short-jokes-dataset

Dataset com piadas em inglês

opus100

Dataset com traduções de inglês para espanhol

netflix_titles

Dataset com filmes e séries da Netflix

Ver mais datasets -->