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
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
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ê:
- Calcula o embedding da imagem
- Calcula o embedding de instruções candidatas de rótulo
- 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:
- Recuperar candidatos usando embeddings (rápido)
- Verificar com um modelo mais forte (mais lento, mais preciso)
- 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.