Mostrando postagens com marcador visão computacional. Mostrar todas as postagens
Mostrando postagens com marcador visão computacional. Mostrar todas as postagens

domingo, 31 de dezembro de 2023

Visão Computacional 2023.1


Cursei Visão Computacional em 2023. A disciplina é muito importante e abrangente para ingressar apropriadamente nas áreas de aquisição, tratamento, interpretação de imagens e vídeos e tudo que está associado tais como redes neurais. Impossível abranger toda a área e aqui é somente uma visão super sumarizada. Para uma das várias opções mais aprofundadas tem a playlist com as aulas do Prof. Aldo von Wangenheim nas referência ao final do post.

Pois bem, para mim e num aspecto mais prático para um iniciante no campo de estudo, Visão Computacional independente de seus fundamentos, história, inovações pode ser dividida em três grandes abordagens: Classificação, Detecção e Segmentação de imagens. Vamos a cada uma delas.

Classificação de Imagens

A classificação de imagens é atribuição de categorias (ou designação ou rótulos) a objetos, dados ou fenômenos com base em suas características e atributos estão presentes na imagem. A Visão Computacional se propõe a extrair as melhores características das imagens com o intuito de classificar, detectar (localizar) ou segmentar (identificar) objetos. A aplicação de tal recurso é bastante ampla se propondo a resolver problemas nos múltiplos domínios tais como: Medicina, exploração de recursos (petróleo, minerais, etc), sensoriamento remoto, controle de qualidade, etc.

O processo de extração que se repetirá nas outras abordagens (detecção e segmentação) pode ser descrito como:

1. Obtenção do conjunto de dados e sua preparação (divisão em conjuntos de treinamento, validação e teste, augmentation, pré-processamento, etc);

2. Aplicação das técnicas de extração de características. Há muitas operações e formas de extrair características, aqui listo algumas poucas técnicas:

Análise de histograma (distribuição das cores e intensidade); Co-ocorrência de escala de cinza (características de textura); Padrão Binário Local (LBP - Características de textura); Histograma de Gradiente Orientado (HOG); filtros convolucionais, pooling, flattening em redes neurais profundas ou em combinação com redes rasas.

3. Validação dos resultados. Aqui busca-se garantir que os resultados sejam os mais legítimos possível não sofrendo de tendências decorrente do conjunto de dados enviesado. Assim diferentes técnicas e métricas são utilizadas tais como (algumas):

Técnicas de divisão dos dados são formas de garantir que os resultados automáticos obtidos foram legítimos e que o treinamentos entrega resultados melhores do que os resultados feitos por especialistas (custosos) : hold-out, cross-validation de vários tipos: K-folds, Stratified K-fold, Leave-p-out, Leave-one-out e Monte Carlo (shuffle-split) ou ainda uma combinação de hold-out e cross-validation

Métricas são valores numéricos pelos quais se interpretam quão bons são os resultados obtidos: acurácia, precisão, recall, f1-score (dice), intersection over union - IoU (índice Jaccard), sensibilidade, especificidade e a matriz de confusão.

Cada uma dessas técnicas ou recursos possui detalhamentos específicos que fogem ao escopo do post. Eles também não são obrigatórios ou exaustivos e podem ser recombinados de diferentes formas para ao final dentro do conjunto de dados se obtenha a classificação automática das imagens.

Pode ser encontrado no Kaggle (abordado neste post), diferentes desafios e datasets prontos para serem testados e assim se desenvolver o aprendização em Classificação de Imagens.

Detecção de Imagens

Enquanto a classificação de imagens se propõe a dizer o que tem na imagem, a detecção marca a localização do objeto, em geral destacando-o com um retângulo ou no jargão técnico uma bounding box. Esta bounding box deve conter todo objeto procurado independente da forma do mesmo. Daí técnicas de reconhecimento são aplicadas em imagens estáticas ou em vídeos de modo a localizar os objetos. Há bastante aplicações desta técnica em diversas áreas. 



Segmentação de Imagens

A segmentação vai além da classificação na medida em que não apenas identifica o objeto, mas também delimita sua forma e posição dentro da imagem. Essa abordagem tem aplicações cruciais em diversos campos. A segmentação desempenha um papel fundamental na capacidade de máquinas "interpretarem" o mundo visual como os humanos o fazem, o que a torna um tópico relevante em nosso cenário atual. Exemplificando:

Tipos de segmentação
A segmentação pode ser de 4 tipos:
Segmentação de bordas: A segmentação de bordas se concentra na detecção e delimitação das bordas dos objetos na imagem. Ela não atribui rótulos semânticos aos objetos.

Segmentação Semântica: Na segmentação semântica ocorre a atribuição de sentidos/significados a cada  pixel rotulado na imagem. 

Segmentação de instância: A segmentação de instância é um passo além da segmentação semântica, neste tipo se faz a separação de instâncias da mesma classe presente na imagem.

Segmentação panóptica: A segmentação panóptica é a união entre os objetos identificados nas segmentações anteriores.


==========

Referências

Playlist das videoaulas das disciplinas INE410121 - Visão Computacional, INE 5443 - Reconhecimento de Padrões e EEL110021 - Visão Computacional e Inteligência Artificial para Veículos Autônomos da UFSC  (português)

Dive into Deep Learning 

Computer Vision: Algorithms and Applications by Richard Szeliski

Deep Learning, by Goodfellow, Bengio, and Courville

Classification in Data Science

Feature Engineering for Computer Vision

O que são redes convolucionais: uma breve explicação (português)

Deep Learning Book (português)

Hold-out vs. Cross-validation in Machine Learning

An overview of semantic image segmentation

Semantic Segmentation — Popular Architectures

A 2021 guide to Semantic Segmentation