Visão Computacional

O que é Visão Computacional?

Visão computacional (computer vision) é a área da IA (AI) que permite que máquinas entendam imagens e vídeo — não apenas reconhecer pixels, mas inferir objetos, relações, ações e a estrutura de uma cena. A visão computacional moderna abrange:

  • Entendimento de imagens: classificação, detecção, segmentação, percepção 3D e mais
  • Entendimento de vídeo: ações, rastreamento, eventos temporais e reconhecimento de atividades de longo alcance
  • Visão-linguagem multimodal (multimodal vision-language): conectar imagens/vídeo com texto para recuperação, geração de legendas, resposta a perguntas visuais (visual question answering, VQA) e assistentes “habilitados por visão”
  • Avaliação (evaluation): métricas, benchmarks, robustez e confiabilidade no mundo real

A visão computacional é um componente central de percepção para sistemas maiores — especialmente agentes interativos (interactive agents) que precisam ver e agir no mundo (por exemplo, robótica, agentes de interface do usuário), conectando-se a Agentes e Planejamento.

Tarefas Centrais de Visão (Imagem e Vídeo)

Classificação de imagens

Objetivo: atribuir um ou mais rótulos a uma imagem.

  • Rótulo único: “isto é um gato”
  • Múltiplos rótulos: “gato, sofá, interior”

Métricas comuns: acurácia Top-1/Top-5, F1 (para múltiplos rótulos), erros de calibração.

Uso prático: categorização de produtos, triagem médica, moderação de conteúdo.

Detecção de objetos

Objetivo: encontrar quais objetos estão presentes e onde eles estão por meio de caixas delimitadoras (bounding boxes).

  • Saída: (classe, confiança, coordenadas da caixa) para cada objeto
  • Principal desafio: balancear qualidade de localização e de classificação

Métricas comuns: mAP (precisão média, mean average precision), frequentemente COCO mAP com média em limiares de IoU (0.50–0.95).

Uso prático: direção autônoma (veículos/pedestres), monitoramento de prateleiras no varejo, sistemas de segurança.

Segmentação

Objetivo: atribuir rótulos no nível de pixel.

  • Segmentação semântica: cada pixel recebe uma classe (todos os “carros” compartilham o mesmo rótulo)
  • Segmentação por instância: separa cada instância do objeto (carro #1 vs carro #2)
  • Segmentação panóptica: combina semântica + instância em uma única saída

Métricas comuns: IoU / mIoU, Dice/F1, PQ (Panoptic Quality).

Uso prático: imagens médicas (contornos de tumores), remoção de fundo, entendimento de cena para robôs.

Pontos-chave e estimação de pose

Objetivo: localizar marcos estruturados (por exemplo, articulações humanas, marcos faciais).

Métricas: PCK, OKS/AP (pontos-chave COCO).

Uso prático: análise esportiva, ergonomia, animação, interfaces por gestos.

Rastreamento, movimento e fluxo óptico (vídeo)

Objetivo: acompanhar objetos ao longo de quadros (rastreamento) e estimar movimento de pixels (fluxo óptico).

  • O rastreamento produz “trajetórias” (IDs consistentes ao longo do tempo)
  • Pistas de movimento ajudam a inferir ações e interações

Métricas: MOTA/MOTP, HOTA, IDF1 (rastreamento), erro de ponto final (fluxo).

Uso prático: análises de vigilância, análise de transmissão esportiva, navegação robótica.

Reconhecimento de ações e entendimento temporal (vídeo)

Objetivo: reconhecer ações (“abrindo uma porta”), localizar eventos (“de 12.3s a 14.1s”) e raciocinar sobre atividades mais longas.

Subtarefas principais:

  • Classificação de ações (um rótulo por clipe)
  • Localização temporal de ações (segmentos de tempo)
  • Detecção espaço-temporal (caixas + tempo)

Métricas: Top-1, mAP ao longo do IoU temporal, precisão/recall por evento.

Visão 3D e profundidade

Objetivo: inferir geometria a partir de imagens/vídeo.

  • Estimação de profundidade monocular
  • Estéreo multivista / localização e mapeamento simultâneos (Simultaneous Localization and Mapping, SLAM)
  • Detecção de objetos em 3D (frequentemente com LiDAR + câmeras)

Métricas: erro de profundidade (RMSE, AbsRel), IoU/AP em 3D.

Uso prático: AR/VR, robótica, navegação autônoma.

Fundamentos: De Pixels a Representações

Intuição da visão clássica (ainda útil)

Antes do aprendizado profundo (deep learning), a visão dependia de características projetadas manualmente (hand-crafted features):

  • Convoluções e filtros (bordas, cantos)
  • Descritores SIFT/HOG
  • Segmentação baseada em grafos, algoritmos de fluxo óptico

Essas ideias permanecem conceitualmente importantes porque redes profundas modernas ainda:

  • Aprendem características parecidas com bordas no início
  • Constroem representações hierárquicas
  • Usam invariâncias (translação, escala, iluminação) como viés indutivo

Redes Neurais Convolucionais (Convolutional Neural Networks, CNNs)

Redes neurais convolucionais usam convolução + subamostragem (pooling) para aprender hierarquias espaciais com eficiência.

Por que redes neurais convolucionais funcionaram tão bem:

  • Campos receptivos locais capturam estrutura próxima
  • Compartilhamento de pesos reduz parâmetros
  • Equivariância à translação combina com as estatísticas de imagens

O treinamento depende de Retropropagação (backpropagation) e Descida do Gradiente (gradient descent). Arquiteturas-base (backbones) de redes neurais convolucionais (ResNet, EfficientNet) ainda são amplamente usadas, especialmente em dispositivos de borda (edge devices).

Transformers Visuais (Vision Transformers, ViTs)

Transformers visuais aplicam a Arquitetura Transformer (Transformer Architecture) a imagens, dividindo-as em blocos (patches) e usando autoatenção (self-attention).

Pontos fortes:

  • Forte escalabilidade com dados e computação
  • Modelagem flexível de contexto global
  • Frequentemente melhor transferência para novas tarefas quando pré-treinados em escala

Variantes comuns:

  • ViT (transformer puro por blocos)
  • Swin Transformer (hierárquico, autoatenção em janelas)
  • Arquiteturas-base híbridas CNN+Transformer

Arquiteturas de detecção/segmentação (por que a estrutura importa)

Em detecção e segmentação, o modelo precisa produzir predições estruturadas (caixas/máscaras), não apenas um rótulo.

Famílias representativas:

  • Detectores de duas etapas: Faster R-CNN (propostas de região → classificação/refinamento)
  • Detectores de uma etapa: YOLO/RetinaNet (predições densas)
  • Detectores baseados em transformers: estilo DETR (predição por conjuntos via pareamento bipartido)
  • Segmentação: U-Net (médica), Mask R-CNN (por instância), DeepLab (semântica)

Um tema recorrente: viés indutivo vs flexibilidade. Algumas arquiteturas embutem priors (âncoras, pirâmides de características), enquanto designs mais novos baseados em transformers aprendem mais a partir dos dados.

Paradigmas de Aprendizado e Modelos Fundacionais

Aprendizado supervisionado (supervised learning) (dados rotulados)

O sucesso tradicional em visão (por exemplo, pré-treinamento no ImageNet) veio de grandes conjuntos de dados rotulados. A limitação é custo e viés: rotular tarefas densas (máscaras, pontos-chave) é caro e inconsistente.

Aprendizado auto-supervisionado (self-supervised learning, SSL)

O aprendizado auto-supervisionado aprende com imagens sem rótulos criando sinais de treinamento a partir dos próprios dados, por exemplo:

  • Aprendizado contrastivo (contrastive learning) (SimCLR, MoCo)
  • Modelagem de imagem mascarada (masked image modeling) (MAE)
  • Destilação sem rótulos (distillation without labels) (DINO)

Isso frequentemente produz representações fortes que transferem bem para tarefas a jusante (downstream tasks). Veja Aprendizado Auto-Supervisionado.

Modelos visuais fundacionais

Nos últimos anos surgiram arquiteturas-base visuais de uso geral e modelos multimodais pré-treinados com dados em escala da web (web-scale data). Propriedades comuns:

  • Forte transferência zero-shot (zero-shot) ou few-shot (few-shot)
  • Representações vetoriais (embeddings) robustas para recuperação e agrupamento (clustering)
  • Melhor alinhamento com linguagem quando treinados de forma multimodal

Essa tendência espelha o pré-treinamento de modelos de linguagem (ver Modelos de Linguagem de Grande Porte).

Visão-Linguagem Multimodal (Multimodal Vision-Language, VLMs)

Modelos visão-linguagem conectam imagens/vídeo com texto para permitir:

  • Recuperação imagem-texto (“encontrar imagens que correspondem a esta legenda”)
  • Classificação zero-shot (instruções do tipo “uma foto de um(a) {rótulo}”)
  • Geração de legendas (descrever a imagem)
  • VQA (responder perguntas ancoradas no conteúdo visual)
  • Ancoragem (grounding) / expressão referencial (referring expression) (“aponte para a caneca vermelha”)
  • Assistentes multimodais que raciocinam sobre imagens (frequentemente um modelo de linguagem de grande porte com um codificador visual)

Dois padrões centrais: codificador duplo vs fusão

  1. Modelos de codificador duplo (dual-encoder) (contrastivos)
    Exemplo: modelos no estilo CLIP aprendem um codificador de imagem e um codificador de texto cujas representações vetoriais se alinham.

    • Recuperação eficiente via vizinhos mais próximos (nearest neighbors)
    • Classificação zero-shot forte ao comparar com instruções de texto
    • Limitação: raciocínio detalhado limitado, a menos que combinado com outros módulos
  2. Modelos de fusão / codificador-decodificador (encoder-decoder)
    Eles combinam tokens visuais com tokens de texto para que a atenção possa misturar modalidades.

    • Melhores para geração de legendas, VQA e raciocínio ancorado
    • Mais caros do que codificadores duplos

Modelos de linguagem de grande porte multimodais

Uma abordagem moderna comum:

  • Um codificador visual (ViT/CNN) produz representações vetoriais visuais
  • Uma camada de projeção mapeia isso para o espaço de tokens de um modelo de linguagem de grande porte
  • Um modelo de linguagem de grande porte faz geração/raciocínio condicionado aos tokens visuais

Esses sistemas permitem Q&A conversacional sobre imagens, entendimento de documentos e agentes multimodais “que usam ferramentas”. Quando integrados a ciclos de ação (por exemplo, robótica, automação de UI), tornam-se módulos de percepção para Agentes e Planejamento.

Onde sistemas multimodais falham (importante na prática)

Modos de falha comuns:

  • Alucinação: descrever objetos que não estão presentes
  • Contagem fraca e baixa precisão espacial (melhorando, mas ainda frágil)
  • Desafios com texto em imagem a menos que sejam usados modelos especializados de OCR/documentos
  • Correlações espúrias a partir de dados de pré-treinamento em escala da web
  • Sensibilidade a instruções e ancoragem inconsistente

Mitigações incluem melhores objetivos de ancoragem, aumento com recuperação (retrieval augmentation), decodificação calibrada e ajuste fino (fine-tuning) específico por tarefa.

Exemplos Práticos

Exemplo 1: Inferência de classificação de imagens (PyTorch + torchvision)

import torch
from PIL import Image
from torchvision import transforms
from torchvision.models import resnet50, ResNet50_Weights

weights = ResNet50_Weights.DEFAULT
model = resnet50(weights=weights).eval()

preprocess = weights.transforms()
img = Image.open("cat.jpg").convert("RGB")
x = preprocess(img).unsqueeze(0)  # [1,3,H,W]

with torch.no_grad():
    logits = model(x)
probs = logits.softmax(dim=1)[0]
topk = probs.topk(5)

for idx, p in zip(topk.indices.tolist(), topk.values.tolist()):
    print(weights.meta["categories"][idx], p)

O que isso mostra:

  • Pré-processamento padronizado importa (normalização, redimensionamento/recorte)
  • Predições Top-k fornecem mais informação do que um único rótulo

Exemplo 2: Classificação de imagens zero-shot com embeddings imagem-texto (estilo CLIP)

Conceitualmente, você:

  1. Calcula o embedding da imagem
  2. Calcula o embedding de instruções candidatas de rótulo
  3. Escolhe o rótulo com maior similaridade cosseno

Isso é amplamente usado para prototipagem rápida e classificação com vocabulário aberto.

from transformers import CLIPProcessor, CLIPModel
from PIL import Image
import torch

model = CLIPModel.from_pretrained("openai/clip-vit-base-patch32")
processor = CLIPProcessor.from_pretrained("openai/clip-vit-base-patch32")

image = Image.open("mystery.jpg").convert("RGB")
labels = ["a photo of a cat", "a photo of a dog", "a photo of a bicycle"]

inputs = processor(text=labels, images=image, return_tensors="pt", padding=True)

with torch.no_grad():
    outputs = model(**inputs)
    logits = outputs.logits_per_image  # [1, num_labels]
probs = logits.softmax(dim=1)[0]

for label, p in sorted(zip(labels, probs.tolist()), key=lambda x: -x[1]):
    print(f"{label}: {p:.3f}")

Na prática, engenharia de prompts (prompt engineering) (múltiplos templates, ensembling) pode alterar significativamente a acurácia.

Considerações de Dados, Treinamento e Implantação

Coleta de dados e rotulagem

Principais questões:

  • Viés de conjunto de dados: viés geográfico, demográfico, de dispositivo, de iluminação, socioeconômico
  • Ruído de rótulo: classes ambíguas, políticas de anotação inconsistentes
  • Distribuições de cauda longa: muitas categorias raras, poucas frequentes

Abordagens:

  • Aprendizado ativo (rotular as amostras mais informativas)
  • Supervisão fraca e pseudo-rotulagem (pseudo-labeling)
  • Dados sintéticos + randomização de domínio (domain randomization) (comum em robótica)

Aumento de dados e regularização

Aumentos padrão:

  • Recorte/redimensionamento aleatório, espelhamentos, variação de cor
  • MixUp/CutMix (classificação)
  • Políticas RandAugment/AutoAugment

Aumentos para vídeo incluem jitter temporal e estratégias de amostragem de quadros.

Aprendizado por transferência e ajuste fino

Arquiteturas-base de visão pré-treinadas são comumente adaptadas via:

  • Ajuste fino completo
  • Sondagem linear (congelar a arquitetura-base)
  • Ajuste eficiente em parâmetros (adaptadores, LoRA; ver Ajuste Fino)

Restrições de implantação

Sistemas reais devem considerar:

  • Latência e vazão
  • Consumo de memória
  • Quantização e aceleração em GPUs/NPUs (ver Quantização)
  • Robustez a artefatos reais de câmera (desfoque, exposição, obturador rolante)

Avaliação: Métricas, Benchmarks e o que “Bom” Significa

A avaliação em visão computacional é sutil: pontuações altas em benchmarks nem sempre se traduzem em confiabilidade no mundo real.

Métricas específicas por tarefa (comuns e práticas)

Classificação

  • Acurácia (Top-1/Top-5)
  • F1 macro/micro para multilabel desbalanceado
  • Calibração: ECE (expected calibration error)

Detecção

  • AP/mAP ao longo de limiares de IoU (estilo COCO)
  • AP separado para objetos pequenos/médios/grandes
  • Latência/vazão se usado em tempo real

Segmentação

  • mIoU (semântica)
  • Dice/F1 (comum em medicina)
  • PQ para segmentação panóptica

Pontos-chave

  • AP baseado em OKS (COCO), PCK

Rastreamento

  • HOTA, MOTA, IDF1 (faz trade-off entre detecção vs consistência de identidade)

Recuperação (imagem-texto, cruzado-modal)

  • Recall@K (R@1, R@5, R@10)
  • Ranking mediano, nDCG (se relevância graduada)

Geração de legendas / geração de texto

  • BLEU, METEOR, ROUGE (legado, limitado)
  • CIDEr, SPICE (mais semântico)
  • Cada vez mais: preferência humana ou avaliação baseada em tarefas (porque métricas podem ser “otimizadas para o placar”)

VQA

  • Acurácia (frequentemente com normalização de respostas)
  • Quebra por subtipo (sim/não vs contagem vs abertas)

Por que métricas no estilo de linguagem podem ser enganosas

Geração de legendas e VQA podem ter muitas saídas válidas. Métricas de sobreposição de n-gramas:

  • Penalizam paráfrases corretas
  • Recompensam formulações comuns
  • Deixam passar erros factuais que “soam parecidos”

A prática moderna frequentemente adiciona:

  • Avaliação humana (cara, mas informativa)
  • Juízes baseados em modelo (rápidos, mas podem ser enviesados)
  • Checagens de ancoragem: a afirmação é suportada pela imagem?

Robustez e mudança de distribuição

Um modelo de visão implantado no mundo real enfrenta:

  • Iluminação/clima/câmeras diferentes
  • Desfoque de movimento, artefatos de compressão
  • Objetos e contextos fora da distribuição (out-of-distribution, OOD)

A avaliação de robustez inclui:

  • Benchmarks de corrupções (ruído, desfoque, neblina)
  • Testes de mudança de domínio (treinar em um ambiente, testar em outro)
  • Robustez adversarial (adversarial robustness) (importante em contextos sensíveis à segurança)

Avaliação de equidade, privacidade e segurança

Visão está fortemente ligada a aplicações sensíveis (vigilância, biometria, imagens médicas). Uma avaliação responsável pode incluir:

  • Desempenho estratificado por grupos demográficos (quando apropriado e legal)
  • Análise de custo de falsos positivos/negativos (por exemplo, alarmes de segurança)
  • Avaliação de impacto à privacidade (reconhecimento facial, riscos de reidentificação)

Vazamento e contaminação de benchmarks

Com pré-treinamento em escala da web, é fácil que dados de treinamento incluam imagens de teste ou quase duplicatas, inflando resultados. Boas práticas:

  • Deduplicar em escala (hashing perceptual / embeddings)
  • Usar conjuntos de teste privados e reservados para afirmações sérias
  • Reportar fontes de dados e filtragem

Avaliação em nível de sistema (o que os usuários sentem)

Em muitos produtos, a métrica correta não é apenas acurácia:

  • Sucesso de tarefa ponta a ponta (por exemplo, “encontrar todos os defeitos”)
  • Tempo humano economizado
  • Comportamento de recuperação de erro
  • Latência, estabilidade e interpretabilidade

Isso é especialmente verdadeiro quando modelos de visão são componentes de sistemas agênticos (agentic systems) (ver Agentes e Planejamento).

Aplicações e Padrões do Mundo Real

Modelos comuns de aplicação incluem:

  • Percepção para sistemas autônomos: detecção + rastreamento + profundidade + integração com planejamento
  • Imagens médicas: segmentação + estimação de incerteza + fluxos de trabalho com clínico no circuito (clinician-in-the-loop)
  • Inspeção industrial: detecção de anomalias com poucos exemplos de defeitos
  • Varejo e logística: código de barras/OCR + detecção + contagem
  • IA para documentos (Document AI): análise de layout + OCR + extração multimodal
  • Entendimento de conteúdo: moderação, busca, recomendação e recuperação multimodal

Um padrão recorrente de engenharia é recuperação + verificação:

  1. Recuperar candidatos usando embeddings (rápido)
  2. Verificar com um modelo mais forte (mais lento, mais preciso)
  3. Adicionar revisão humana para decisões de alto risco

Resumo

A visão computacional evoluiu de características projetadas manualmente para aprendizado profundo em larga escala e modelos fundacionais multimodais. Hoje, o campo é melhor entendido como um espectro:

  • Tarefas de percepção (classificação, detecção, segmentação, rastreamento, 3D)
  • Entendimento de vídeo (raciocínio temporal e eventos)
  • Visão-linguagem (recuperação, geração de legendas, VQA, assistentes ancorados)
  • Avaliação que vai além de placares para incluir robustez, calibração, equidade e resultados em nível de sistema

Em sistemas modernos de IA — especialmente assistentes multimodais e agentes corporificados — a visão não é um módulo isolado, mas uma interface crítica entre modelos e o mundo real.