Multimodal AI Intermediario ~35 min

Image Understanding

Topico 34 de 35
visao imagem multimodal
AÇÕES
Progresso do Topico 0%

Image Understanding

Image Understanding em IA multimodal refere-se a capacidade de modelos de interpretar, analisar e extrair informacoes de imagens. Combinando dados visuais com outras modalidades como texto, sistemas de IA podem reconhecer objetos, cenas e acoes enquanto entendem contexto e conceitos relacionados.

O Que e Image Understanding?#

Vai alem de simplesmente "ver" uma imagem. Envolve:

  • Reconhecimento: Identificar objetos, pessoas, lugares
  • Compreensao: Entender relacoes entre elementos
  • Raciocinio: Inferir informacoes nao explicitas
  • Descricao: Gerar texto que descreve a imagem

Niveis de Compreensao Visual#

1. Baixo Nivel (Low-Level)#

  • Bordas, texturas, cores
  • Formas geometricas basicas

2. Medio Nivel (Mid-Level)#

  • Objetos individuais
  • Partes de objetos

3. Alto Nivel (High-Level)#

  • Cenas completas
  • Acoes e eventos
  • Emocoes e intencoes

APIs de Vision#

OpenAI Vision API#

Python
from openai import OpenAI

client = OpenAI()

# Analise basica
response = client.chat.completions.create(
    model="gpt-4-vision-preview",
    messages=[
        {
            "role": "user",
            "content": [
                {
                    "type": "text",
                    "text": "Descreva detalhadamente o que voce ve nesta imagem."
                },
                {
                    "type": "image_url",
                    "image_url": {
                        "url": "https://exemplo.com/foto.jpg",
                        "detail": "high"  # low, high, ou auto
                    }
                }
            ]
        }
    ],
    max_tokens=500
)

print(response.choices[0].message.content)

Modos de Fidelidade#

Low Fidelity (detail: "low"):

  • Imagem redimensionada para 512x512
  • Mais rapido e barato
  • Bom para visao geral

High Fidelity (detail: "high"):

  • Processa imagem em resolucao maior
  • Divide em tiles de 512x512
  • Melhor para detalhes finos
Python
# Exemplo com multiplas imagens
messages = [
    {
        "role": "user",
        "content": [
            {"type": "text", "text": "Compare estas duas imagens:"},
            {
                "type": "image_url",
                "image_url": {"url": url1, "detail": "low"}
            },
            {
                "type": "image_url",
                "image_url": {"url": url2, "detail": "low"}
            }
        ]
    }
]

Casos de Uso Praticos#

1. Analise de Documentos#

Python
prompt = """
Analise este documento e extraia:
1. Titulo
2. Data
3. Valores monetarios
4. Assinaturas (se houver)

Retorne em formato JSON.
"""

2. Descricao para Acessibilidade#

Python
prompt = """
Crie uma descricao detalhada desta imagem para uma pessoa
com deficiencia visual. Inclua:
- Elementos principais
- Cores predominantes
- Atmosfera/emocao transmitida
- Texto visivel
"""

3. Analise de Produtos#

Python
prompt = """
Analise esta foto de produto e identifique:
- Tipo de produto
- Marca (se visivel)
- Condicao aparente
- Defeitos visiveis
"""

4. Moderacao de Conteudo#

Python
prompt = """
Analise esta imagem quanto a:
- Conteudo adulto
- Violencia
- Discurso de odio
- Informacoes sensiveis visiveis

Classifique como: seguro, sensivel, ou inadequado.
"""

Integracao com RAG Visual#

Python
from langchain.vectorstores import Chroma
from langchain.embeddings import OpenAIEmbeddings

# 1. Processar imagens e gerar descricoes
def process_image_for_rag(image_path):
    # Gerar descricao com Vision API
    description = analyze_image(image_path)

    # Criar embedding da descricao
    embedding = embeddings.embed_query(description)

    return {
        "image_path": image_path,
        "description": description,
        "embedding": embedding
    }

# 2. Indexar no vector store
vectorstore = Chroma.from_texts(
    texts=[img["description"] for img in processed_images],
    metadatas=[{"path": img["image_path"]} for img in processed_images]
)

# 3. Buscar imagens relevantes
results = vectorstore.similarity_search("foto de praia ao por do sol")

Limitacoes e Cuidados#

O Que Modelos NAO Fazem Bem#

  • Contar objetos com precisao
  • Ler texto muito pequeno ou distorcido
  • Entender relacoes espaciais complexas
  • Identificar pessoas especificas (por design)

Consideracoes Eticas#

  • Privacidade de pessoas nas imagens
  • Vieses em reconhecimento facial
  • Uso indevido para vigilancia

Otimizacao de Custos#

Python
# Reduzir tamanho antes de enviar
from PIL import Image

def optimize_for_vision(image_path, max_size=1024):
    img = Image.open(image_path)
    img.thumbnail((max_size, max_size))
    # Salvar em buffer e enviar

Boas Praticas#

  1. Seja especifico no prompt: Diga exatamente o que procura
  2. Use fidelidade apropriada: low para tarefas gerais, high para detalhes
  3. Combine com texto: Forneca contexto junto com a imagem
  4. Valide outputs criticos: Modelos podem alucinar detalhes
  5. Respeite privacidade: Cuidado com imagens de pessoas

Resources#


Checklist#

3 recursos

Este topico tambem pode ser acessado em /topicos/image-understanding