IA Não é Só Chat: o Mundo de Computer Vision, 3D e IA Multimodal
DEV Community

IA Não é Só Chat: o Mundo de Computer Vision, 3D e IA Multimodal

Quando alguém fala em Computer Vision, a primeira coisa que costuma vir à cabeça é detecção de objetos. É uma parte importante, mas está longe de ser tudo. Na prática, Computer Vision reúne problemas bem diferentes: entender imagens, acompanhar objetos em vídeo, estimar profundidade, descobrir a posição de uma câmera, reconstruir ambientes em 3D, trabalhar com LiDAR, interpretar documentos e, mais recentemente, conectar visão com modelos de linguagem. Um sistema mais completo pode ter algo parecido com isto: Camera / LiDAR / IMU ↓ Preprocessing ↓ Detection / Segmentation ↓ Tracking / Pose ↓ Depth / Geometry ↓ SfM / MVS / SLAM ↓ Point Cloud ↓ Mesh / 3D Representation ↓ Scene Understanding ↓ Vision-Language Model ↓ LLM A ideia deste texto é organizar esse universo de forma prática para quem desenvolve software e quer entender como as peças se encaixam. 1. O mapa geral Uma forma simples de dividir Computer Vision é: COMPUTER VISION │ ├── Imagens │ ├── Classification │ ├── Detection │ ├── Segmentation │ ├── OCR │ ├── Image Retrieval │ ├── Image Restoration │ └── Image Generation │ ├── Vídeo │ ├── Object Tracking │ ├── Action Recognition │ ├── Optical Flow │ └── Motion Analysis │ ├── Geometria │ ├── Camera Models │ ├── Camera Calibration │ ├── Stereo Vision │ ├── Depth Estimation │ ├── Epipolar Geometry │ ├── SfM │ ├── MVS │ └── 3D Reconstruction │ ├── 3D │ ├── LiDAR │ ├── Point Clouds │ ├── Registration │ ├── SLAM │ ├── Mesh Reconstruction │ ├── NeRF │ ├── Gaussian Splatting │ └── 3D Object Detection │ ├── Humanos │ ├── Face Detection │ ├── Face Recognition │ ├── Pose Estimation │ ├── Hand Tracking │ └── Gesture Recognition │ └── IA Moderna ├── CNN ├── Vision Transformers ├── Vision-Language Models ├── Embeddings ├── Multimodal AI └── Vision + LLM O interessante é que essas áreas não ficam isoladas. Em projetos reais, normalmente existe uma combinação delas. 2. Imagem é um tensor Antes de falar de modelos, vale entender o dado de entrada. Uma imagem RGB pode ser representada como: H × W × 3 Por exemplo: 1920 × 1080 × 3 Em frameworks de Deep Learning, é comum encontrar: [B, C, H, W] onde: - B = batch; - C = canais; - H = altura; - W = largura. Uma imagem pode ser vista como uma função: I(x, y, c) onde x e y representam a posição do pixel e c o canal. Parece uma definição simples, mas praticamente todo pipeline de visão começa aqui. 3. Image Processing Antes de colocar uma imagem em uma rede neural, muitas vezes é necessário prepará-la. Algumas operações comuns: - resize; - crop; - padding; - normalização; - conversão de espaço de cor; - redução de ruído; - sharpening; - thresholding; - detecção de bordas; - operações morfológicas; - correção de distorção. Um pipeline básico: Imagem original ↓ Resize ↓ Normalização ↓ Correção / filtragem ↓ Modelo Bibliotecas muito usadas: OpenCV Pillow NumPy scikit-image Nem todo problema precisa de Deep Learning. Em alguns casos, OpenCV resolve praticamente tudo. 4. Classification Classification responde: Qual é a classe dessa imagem? Por exemplo: Imagem ↓ Modelo ↓ dog: 0.96 cat: 0.03 horse: 0.01 Formalmente: P(class | image) Arquiteturas clássicas: - LeNet; - AlexNet; - VGG; - GoogLeNet; - ResNet; - DenseNet; - EfficientNet; - ConvNeXt; - Vision Transformer. Classification é normalmente o ponto de entrada para quem começa a estudar visão computacional com Deep Learning. 5. CNNs As Convolutional Neural Networks foram responsáveis por uma grande parte da evolução inicial do Deep Learning aplicado a imagens. A convolução percorre a imagem utilizando filtros que aprendem padrões. De forma simplificada: Image ↓ Convolution ↓ Feature Map ↓ Activation ↓ Pooling ↓ More Features ↓ Classifier No começo da rede aparecem padrões mais simples: edges corners textures Nas camadas seguintes: shapes parts objects E no final: semantic representation 6. Object Detection Classification diz o que existe. Detection também precisa dizer onde. Uma saída típica contém: class confidence x1 y1 x2 y2 Ou: class confidence center_x center_y width height Visualmente: ┌──────────────────────────────┐ │ │ │ ┌───────────────┐ │ │ │ person │ │ │ └───────────────┘ │ │ │ │ ┌────────┐ │ │ │ car │ │ │ └────────┘ │ │ │ └──────────────────────────────┘ 7. Object Detection: principais abordagens Two-stage detectors Exemplos: R-CNN Fast R-CNN Faster R-CNN Mask R-CNN A ideia geral: Image ↓ Region Proposals ↓ Classification ↓ Bounding Box Refinement One-stage detectors Exemplos: YOLO SSD RetinaNet A ideia: Image ↓ Neural Network ↓ Boxes + Classes + Confidence Essa abordagem costuma ser muito interessante quando existe requisito de tempo real. Transformer-based detectors Um exemplo conhecido é o DETR. Aqui a detecção é formulada de uma maneira diferente, usando a arquitetura Transformer para prever os objetos. 8. IoU e NMS Detection gera muitas previsões. Duas bounding boxes podem representar o mesmo objeto. Para medir a sobreposição, usamos IoU: IoU = Intersection / Union Quanto mais próximo de 1 , maior a sobreposição. Depois, algoritmos como Non-Maximum Suppression (NMS) ajudam a remover previsões duplicadas. Uma versão simplificada: Detections ↓ Ordenar por confidence ↓ Escolher melhor box ↓ Comparar IoU ↓ Remover duplicatas 9. Segmentation Detection trabalha com bounding boxes. Segmentation trabalha em nível de pixel. Semantic Segmentation Cada pixel recebe uma classe: pixel → class Por exemplo: road car person sky building Instance Segmentation Aqui cada objeto é uma instância separada: person #1 person #2 person #3 Mesmo todos pertencendo à classe person . Panoptic Segmentation Combina semantic segmentation e instance segmentation para representar a cena de forma mais completa. 10. Segment Anything Modelos como SAM popularizaram uma abordagem mais geral para segmentação. Em vez de ter um modelo treinado exclusivamente para uma classe específica, podemos fornecer diferentes tipos de prompt. Por exemplo: point box mask text Um pipeline pode ser: Imagem ↓ Prompt ↓ Segmentation Model ↓ Mask Isso é útil para ferramentas interativas, edição de imagens e pipelines de anotação. 11. OCR OCR significa Optical Character Recognition. O objetivo é transformar texto presente em pixels em texto digital. Um pipeline tradicional: Image ↓ Preprocessing ↓ Text Detection ↓ Text Recognition ↓ Post-processing ↓ Text Por exemplo: Imagem de documento ↓ "NOTA FISCAL" "VALOR: R$ 1.250,00" "CNPJ: ..." OCR moderno pode combinar CNNs, LSTMs, Transformers e modelos multimodais. 12. Document AI OCR resolve apenas uma parte do problema. Um documento real também possui layout, tabelas, campos e relações entre informações. Um pipeline de Document AI pode ser: Document ↓ OCR ↓ Layout Analysis ↓ Entity Extraction ↓ Document Understanding O sistema pode identificar: invoice_number customer company date total tax items Isso aparece bastante em automação de processos, sistemas financeiros, jurídico e governo. 13. Image Retrieval Outra aplicação é encontrar imagens semelhantes. A ideia moderna é transformar uma imagem em um embedding: Image ↓ Vision Encoder ↓ Embedding Por exemplo: [0.12, -0.81, 0.43, 0.19, ...] Depois armazenamos esses vetores e fazemos busca por similaridade. Query Image ↓ Embedding ↓ Vector Database ↓ Nearest Neighbors ↓ Similar Images Tecnologias comuns: FAISS Qdrant Milvus Weaviate pgvector 14. Vídeo Um vídeo é uma sequência temporal: Frame 1 Frame 2 Frame 3 ... Frame N Então temos duas dimensões importantes: spatial information + temporal information É isso que torna vídeo mais complicado que uma imagem isolada. 15. Object Tracking Detection identifica objetos. Tracking tenta manter a identidade desses objetos ao longo dos frames. Frame 1 → person #17 Frame 2 → person #17 Frame 3 → person #17 Frame 4 → person #17 Assim podemos obter uma trajetória: (x1, y1) (x2, y2) (x3, y3) ... Algumas abordagens conhecidas: Kalman Filter SORT DeepSORT ByteTrack BoT-SORT 16. Optical Flow Optical Flow tenta estimar o movimento aparente dos pixels entre frames. Um vetor pode ser representado por: u(x,y) v(x,y) O resultado é um campo de movimento: → → → → → → → → → Aplicações: - motion estimation; - estabilização de vídeo; - tracking; - action recognition; - robótica. 17. Action Recognition Agora o objetivo não é apenas descobrir que existe uma pessoa. Queremos descobrir o que ela está fazendo: walking running jumping falling sitting Isso exige informação temporal. Arquiteturas podem utilizar: CNN + RNN 3D CNN Video Transformer 18. Motion Analysis Depois de detectar e acompanhar objetos, podemos analisar: - trajetória; - velocidade; - direção; - aceleração; - interação entre objetos; - comportamento temporal. Um pipeline: Video ↓ Detection ↓ Tracking ↓ Trajectory ↓ Motion Analysis ↓ Event Detection É uma base para aplicações como monitoramento, análise esportiva e robótica. 19. Camera Model Para entrar em visão 3D, precisamos entender como uma câmera transforma o mundo 3D em uma imagem 2D. Um ponto: P = (X, Y, Z) pode ser projetado aproximadamente como: x = fX/Z y = fY/Z onde f representa a distância focal. Uma câmera real normalmente é representada por uma matriz intrínseca: K = [ fx 0 cx ] [ 0 fy cy ] [ 0 0 1 ] Isso aparece constantemente em reconstrução 3D. 20. Camera Calibration Calibration determina os parâmetros da câmera. Intrinsics Exemplos: fx fy cx cy k1 k2 k3 p1 p2 Os primeiros representam parâmetros internos da câmera e os demais podem representar distorção. Extrinsics Representam a pose da câmera: R t onde: R = rotation t = translation Uma transformação pode ser escrita como: P_camera = R P_world + t 21. Lens Distortion Lentes reais introduzem distorções. As mais conhecidas: radial distortion tangential distortion Um pipeline pode começar com: Distorted Image ↓ Undistortion ↓ Rectified Image Isso é especialmente importante em aplicações geométricas. 22. Stereo Vision Duas câmeras permitem estimar profundidade. Left Camera Right Camera \ / \ / \ / Object A diferença entre a posição de um ponto nas duas imagens é a disparidade: disparity = d

Read on DEV Community ↗ ← Back to News

Comments

No comments yet. Start the discussion.