Mostrando postagens com marcador redes neurais. Mostrar todas as postagens
Mostrando postagens com marcador redes neurais. 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

domingo, 29 de janeiro de 2023

Redes Neurais 2022.1

 Eu me propus a resumir algumas disciplinas que cursei recentemente. Tanto como forma de avaliar a assimilação quanto para fins de registro pessoal. Afinal é preciso ajudar a memória.

No primeiro semestre de 2022 cursei a disciplina de Redes Neurais de 60h como parte do programa de pós-graduação DCCMAPI, como aluno especial. A disciplina foi ministrada pelo Prof. Dr. Areolino de Almeida Neto.

Os tópicos da disciplina foram:

- Redes Neurais Artificiais (RNA). Neste tópico foram apresentadas as RNAs (inicialmente redes rasas), estrutura, arquitetura, tipos e usos de RNA. 

Figura 1 - Modelo básico de uma RNA

 
Figura 2 - Tipos de topologia

Figura 3 - Casos de topologia

Além da definição, tipos e regra de aprendizado computacional. As definições apresentadas foram:

“Aprendizagem é um processo no qual os parâmetros livres de uma rede neural são adaptados através de um processo de estimulação do meio-ambiente no qual a rede está inserida. O tipo de aprendizagem é determinado pela maneira que ocorrem as mudanças nos parâmetros" (S. Haykin)

“Aprendizagem é vista como processo de otimização. Isto é, aprendizagem consiste em um processo de busca de solução em um espaço multidimensional de parâmetros, em geral os pesos das conexões, que
otimize uma dada função objetivo.” (M. Hassoun)

Tipos de aprendizado

Os tipos de aprendizado de aprendizado de máquina pode ser resumido pela imagem abaixo. Há três tipos principais e cada um é mais indicado para lidar com tipos específicos de problemas.


 Tipos de redes neurais

Os tipos de redes neurais abordados de fato foram as Redes MLP, RBF e a CollabNet. Porém há muitos tipos de redes e as foram mencionadas as redes Kohonen, Elman, CMAC, Hopfield, Stacked Autoencoder, Convolucional, Time-delay NN, etc.

Entretanto o gráfico abaixo dá uma ideia mais próxima da variedade das redes neurais.


Atividades da disciplina

As atividades da disciplina foram as listadas abaixo com o respectivo link no GitHub. Clique nos links para ser redirecionado.

Atividade 01 - Lista de exercícios de MathLab - Objetivando conhecer os recursos básicos da ferramenta.

Atividade 02 - Reconhecimento de padrões via RNA tipo MLP (MultiLayer Perceptron) com o objetivo de avaliar carros.

Atividade 03 - Reconhecimento de padrões via RNA tipo RBF (Radial Base Function) com o objetivo de avaliar carros.

Atividade 04 -  Reconhecimento de fonemas via RNA tipo MLP

Atividade 05 - Reconhecimento de fonemas com múltiplas RNA tipo MLP.