Blip2

Blip2 Blip2

Aviso: Este post foi traduzido para o português usando um modelo de tradução automática. Por favor, me avise se encontrar algum erro.

Introduçãolink image 13

Blip2 é uma inteligência artificial capaz de receber uma imagem ou vídeo como entrada e ter uma conversa, respondendo perguntas ou fornecendo contexto do que essa entrada mostra de maneira muito precisa 🤯

GitHub

Paper

Instalaçãolink image 14

Para poder instalar esta ferramenta o melhor é criar um novo ambiente do Anaconda

	
!$ conda create -n blip2 python=3.9
Copied

Agora vamos entrar no ambiente

	
!$ conda activate blip2
Copied

Instalamos todos os módulos necessários

	
!$ conda install pytorch torchvision torchaudio pytorch-cuda=11.7 -c pytorch -c nvidia
Copied
	
!$ conda install -c anaconda pillow
Copied
	
!$ conda install -y -c anaconda requests
Copied
	
!$ conda install -y -c anaconda jupyter
Copied

Por fim, instalamos Blip2

	
!$ pip install salesforce-lavis
Copied

Usolink image 15

Carregamos as bibliotecas necessárias

	
import torch
from PIL import Image
import requests
from lavis.models import load_model_and_preprocess
Copied

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)))
Copied
	
<PIL.Image.Image image mode=RGB size=500x500>

Estabelecemos a GPU se houver.

	
device = torch.device("cuda" if torch.cuda.is_available() else 'cpu')
device
Copied
	
device(type='cuda')

Atribuímos um modelo. No meu caso, com um computador com 32 GB de RAM e uma GPU 3060 com 12 GB de VRAM, não posso usar todos, então coloquei ao lado um comentário ok com os modelos que consegui usar, e para os que não, o erro que recebi. Se você tem um computador com a mesma quantidade de RAM e VRAM, já sabe quais pode usar; caso contrário, você precisa testar.

	
# 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()
Copied
	
Loading checkpoint shards: 0%| | 0/2 [00:00<?, ?it/s]
	
dict_keys(['train', 'eval'])

Preparamos a imagem para colocá-la no modelo

	
image = vis_processors["eval"](raw_image).unsqueeze(0).to(device)
Copied

Analisamos a imagem sem perguntar nadalink image 16

	
model.generate({"image": image})
Copied
	
['a black and white snake']

Analisamos a imagem fazendo perguntaslink image 17

	
prompt = None
Copied
	
def prepare_prompt(prompt, question):
if prompt is None:
prompt = question + " Answer:"
else:
prompt = prompt + " " + question + " Answer:"
return prompt
Copied
	
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
Copied
	
question = "What's in the picture?"
prompt, answer = get_answer(prompt, question, model)
print(f"Question: {question}")
print(f"Answer: {answer}")
Copied
	
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}")
Copied
	
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}")
Copied
	
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}")
Copied
	
Question: If it bites me, can I die?
Answer: yes

Continuar lendo

MCP Durabilidade: Servidor e Cliente com Persistência para Tarefas de Longa Duração

MCP Durabilidade: Servidor e Cliente com Persistência para Tarefas de Longa Duração

Aprenda a construir servidor e cliente MCP com durabilidade para tarefas de longa duração. Tutorial completo do Model Context Protocol com persistência de dados usando SQLite, gerenciamento de tarefas em background e monitoramento em tempo real. Implemente migração de dados, processamento em lote e treinamento de modelos ML que sobrevivem a reinicializações do servidor. Código Python com FastMCP, recursos, ferramentas e padrões de durabilidade para aplicações enterprise.

Últimos posts -->

Você viu esses projetos?

Horeca chatbot

Horeca chatbot Horeca chatbot
Python
LangChain
PostgreSQL
PGVector
React
Kubernetes
Docker
GitHub Actions

Chatbot conversacional para cozinheiros de hotéis e restaurantes. Um cozinheiro, gerente de cozinha ou serviço de quarto de um hotel ou restaurante pode falar com o chatbot para obter informações sobre receitas e menus. Mas também implementa agentes, com os quais pode editar ou criar novas receitas ou menus

Naviground

Naviground Naviground

Subtify

Subtify Subtify
Python
Whisper
Spaces

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 -->