Baixe o app para aproveitar ainda mais
Prévia do material em texto
14/02/2024, 19:44 Redes Neurais Convolucionais https://stecine.azureedge.net/repositorio/00212ti/04164/index.html# 1/67 Redes neurais convolucionais Prof. Sérgio Assunção Monteiro false Descrição Conceitos sobre as redes neurais de convolução e suas aplicações no contexto de aprendizado de máquina profundo. Propósito Compreender os fundamentos das redes de convolução ou convolucionais (CNN – Convolutional Neural Networks) e as principais arquiteturas e aplicações para classificação de imagens em aprendizado de máquina profundo. Preparação É necessário criar uma conta no Google Colab para executar os exemplos desenvolvidos na linguagem Python. Objetivos Módulo 1 Fundamentos de redes convolucionais https://colab.research.google.com/notebooks/welcome.ipynb?hl=pt-BR 14/02/2024, 19:44 Redes Neurais Convolucionais https://stecine.azureedge.net/repositorio/00212ti/04164/index.html# 2/67 Identificar fundamentos de redes convolucionais e suas aplicações. Módulo 2 Arquiteturas de redes convolucionais Distinguir as principais variações de arquiteturas de redes convolucionais e suas aplicações. Módulo 3 Classi�cação de imagens com rede convolucional Empregar rede convolucional para classificação de imagens. As redes neurais artificiais são aplicadas com sucesso em diferentes contextos. De modo geral, elas simulam aspectos da biologia que são representados por meio de modelos computacionais. Recentemente, elas ganharam mais destaque com a utilização do termo “Aprendizado Profundo” em que as arquiteturas das redes possuem camadas ocultas que se conectam para extrair características dos dados de treinamento. As redes de aprendizado profundo possuem categorias que são mais adequadas para determinadas situações, como é o caso das redes neurais de convolução ou convolucionais (CNN – Convolutional Neural Networks). As redes CNN têm sido empregadas com sucesso para aplicações de visão computacional. São estruturas elaboradas com diversos aspectos que devem ser parametrizados. Felizmente, existem frameworks e bibliotecas computacionais que facilitam o trabalho de desenvolvimento. Essa área é muito relevante e tem crescido bastante nos últimos anos e ainda tem muito espaço para avançar. Introdução 14/02/2024, 19:44 Redes Neurais Convolucionais https://stecine.azureedge.net/repositorio/00212ti/04164/index.html# 3/67 1 - Fundamentos de redes convolucionais Ao �nal deste módulo, você será capaz de identi�car fundamentos de redes convolucionais e suas aplicações. Ligando os pontos Você sabe o que é aprendizado de máquina profundo? Sabia que existem modelos computacionais voltados para visão computacional? Para respondermos a essas perguntas, vamos analisar algumas situações práticas. A Enxergue Mais S.A. (empresa fictícia) atua no ramo de segurança privada. Ela desenvolve soluções de software utilizados para aumentar os controles de proteção de pessoas e recursos patrimoniais. Entre as soluções desenvolvidas, estão: detecção de movimentos suspeitos; identificação de pessoas em imagens estáticas e dinâmicas; detecção de objetos que ofereçam riscos à segurança. Essas aplicações constituem apenas uma parte das suas soluções, pois, depois que quaisquer uma delas é acionada, são enviados alertas para os responsáveis por garantir que a segurança seja mantida. Hoje, as soluções da Enxergue Mais possuem um altíssimo padrão de qualidade, mas no início não foi bem assim. Seus sócios fundadores foram colegas de um curso de aprendizado profundo no qual estudaram alguns modelos muito interessantes, mas o que mais lhes chamou a atenção foi o modelo de rede neural de convolução, conhecido como rede CNN em referência à expressão em inglês convolutional neural network. Essa rede tem vários casos de sucesso aplicados para visão computacional. 14/02/2024, 19:44 Redes Neurais Convolucionais https://stecine.azureedge.net/repositorio/00212ti/04164/index.html# 4/67 Então, após dominarem os conceitos da CNN, os dois colegas enxergaram uma oportunidade de negócio: aplicar a CNN para visão computacional voltada para segurança. No entanto, ao realizar as implementações, não foram bem-sucedidos inicialmente, pois as redes CNN, semelhante aos demais tipos de redes neurais, têm um comportamento fortemente influenciado por sua arquitetura, seus valores dos parâmetros e dos dados fornecidos para treinamento. A estratégia que adotaram foi aprofundar mais os estudos desses modelos computacionais e realizar mais testes. Como consequência, fundaram a Enxergue Mais S.A. e, hoje, estão à procura de pessoas para compor os quadros da empresa e ajudá-la a evoluir ainda mais. E você, o que acha do caminho que os fundadores da Enxergue Mais tomaram? Após a leitura do case, é hora de aplicar seus conhecimentos! Vamos ligar esses pontos? Questão 1 Como visto, a Enxergue Mais S.A. encontrou nas redes CNN uma oportunidade de melhorar a qualidade de suas soluções. O que essas redes têm de especial que você poderia aplicar em sua empresa? Parabéns! A alternativa A está correta. As redes CNNs são aplicadas para problemas de visão computacional com muito sucesso. No caso da Enxergue Mais S.A., A Funcionam muito bem para aplicações de visão computacional. B São redes modernas que ajudam a fortalecer a marca da empresa. C São muito simples de serem usadas. D Foi uma tentativa da empresa que deu certo. E São o único modelo computacional adequado para o tipo de problema da empresa. 14/02/2024, 19:44 Redes Neurais Convolucionais https://stecine.azureedge.net/repositorio/00212ti/04164/index.html# 5/67 os tomadores de decisão aprenderam isso e tiveram de trabalhar bastante para viabilizar o uso no dia a dia da empresa. Questão 2 Considere a seguinte situação: você é responsável por demonstrar a eficácia de uma rede CNN sobre outros modelos existentes na Enxergue Mais S.A. Como faria essa tarefa? Parabéns! A alternativa C está correta. Para testar a eficácia de um modelo em relação a outros, é preciso utilizar uma métrica comum. No caso da Enxergue Mais S.A., é necessário realizar testes em massas de dados aleatórios que combinem situações muito simples e muito complexas para verificar qual a resposta que os modelos produzem. Questão 3 Considere a seguinte situação: você foi convidado para participar de um treinamento da Enxergue Mais S.A. cujo objetivo é qualificar profissionais para trabalhar nas soluções dela. Como você se comportaria nesse curso para conseguir se destacar? A Através de métricas específicas de qualidade específica para cada modelo. B Com a aplicação de testes em um conjunto específico de dados. C Através de testes que utilizassem uma medida de qualidade comum para os modelos. D Não é possível realizar esse tipo de teste, pois cada modelo tem seus pontos fortes e fracos. E Os modelos devem ser testados através das soluções oferecidas por bibliotecas de linguagens de programação. 14/02/2024, 19:44 Redes Neurais Convolucionais https://stecine.azureedge.net/repositorio/00212ti/04164/index.html# 6/67 Digite sua resposta aqui Chave de resposta Uma empresa como a Enxergue Mais S.A. está à procura, constantemente, de pessoas talentosas e que possam contribuir para a expansão dos negócios. Portanto, um curso de qualificação deve ser visto como uma ótima oportunidade de demonstrar interesse por redes CNN aplicadas aos problemas da empresa. Estudar, fazer os exercícios e apresentar propostas de soluções é uma excelente forma de se destacar. Introdução às redes neurais convolucionais (CNN) As redes neurais artificiais são modelos computacionais baseados na estrutura de uma rede de neurônios biológicos. Elas são usadas com bastante sucesso no reconhecimento de padrões e, por isso, são utilizadas para resolver muitos problemas práticos. Com o avanço das aplicações das redes neurais, foram feitas adaptações das arquiteturas dos modelos que tinham como objetivo tratar, de forma mais especializada, determinadosdomínios de problemas. 14/02/2024, 19:44 Redes Neurais Convolucionais https://stecine.azureedge.net/repositorio/00212ti/04164/index.html# 7/67 Um desses domínios de problemas é a visão computacional, a qual trata das técnicas para que um sistema computacional possa distinguir objetos em cenários que podem ser estáticos ou dinâmicos e, dessa maneira, fornecer dados para que outras estruturas sistêmicas possam analisar as propriedades desses objetos ou, ainda, acionar outras ações. Nesse sentido, surgiram as redes neurais de convolução, mais conhecidas pela sigla CNN, que é uma abreviação do termo original em inglês: Convolutional Neural Network. As CNN são uma classe de redes neurais artificiais que é aplicada com sucesso para visão computacional. O projeto da CNN foi desenvolvido para que ela extraia características dos objetos de forma automática e adaptativa, por meio de algoritmo de treinamento de retropropagação, usando, para isso, vários blocos de construção como: Camadas de convolução; Camadas de pool; Camadas totalmente conectadas em estruturas de hierarquias espaciais. Vamos abordar esses conceitos para entendermos, com mais clareza, os fundamentos das CNN. Arquitetura do córtex visual Veja agora como surgiu essa arquitetura. A origem das redes convolucionais está nos trabalhos de David H. Hubel e Torsten Wiesel, nos anos de 1958 e 1959, quando fizeram vários i t t l d i 14/02/2024, 19:44 Redes Neurais Convolucionais https://stecine.azureedge.net/repositorio/00212ti/04164/index.html# 8/67 Dentro dos aspectos diretamente relacionados às redes CNN modernas, está o fato de que muitos neurônios no córtex visual têm um pequeno campo receptor local. E o que isso implica? Resposta A reação desses neurônios é limitada a estímulos visuais localizados em determinada região do campo visual. Entre os fatos importantes que David H. Hubel e Torsten Wiesel descobriram, está a capacidade de os campos receptivos de diferentes neurônios poderem se combinar por meio de sobreposição e, juntos, revestirem todo o campo visual. Além disso, eles conseguiram mostrar que alguns neurônios reagem apenas a imagens de linhas horizontais, enquanto outros reagem apenas a linhas com outras orientações. Dessa maneira, a arquitetura do córtex visual é capaz de detectar quaisquer tipos de padrões complexos do campo visual. Esses estudos e, em especial, um trabalho sobre a rede neocognitron (FUKUSHIMA, 1980), evoluíram para as redes convolucionais modernas. Camada de convolução A camada de convolução é responsável por mapear as características da imagem que vamos fornecer para a CNN. Cabe ressaltar que a camada de convolução é referida pela expressão CONV. Então, a camada CONV faz uso de filtros que realizam operações de convolução enquanto ela processa a imagem de entrada. Veja um exemplo de uma camada de convolução. experimentos com gatos e, alguns anos depois, com macacos (HUBEL; WIESEL, 1968). Por trabalhos nesse campo de conhecimento, ou seja, sobre a estrutura do córtex visual, os autores receberam o Prêmio Nobel de Medicina e Fisiologia em 1981. 14/02/2024, 19:44 Redes Neurais Convolucionais https://stecine.azureedge.net/repositorio/00212ti/04164/index.html# 9/67 Camada de convolução. Vamos entender melhor? Temos uma imagem de entrada que é representada por uma matriz de valores binários (valores 0 ou 1) de seis linhas e seis colunas. Em seguida, selecionamos um bloco da imagem para aplicar um filtro. O operador “*” representa a operação de convolução. No caso, o valor “25” na matriz de resultado foi obtido a partir do seguinte cálculo: O processo deve continuar até que todos os quadros da imagem sejam tratados. Esses deslocamentos na imagem de entrada são chamados de tamanho do passo, que, em inglês, é referenciado como stride. Atenção A camada de convolução tem como hiperparâmetros os tamanhos do filtro e do passo. A saída resultante é chamada de mapa de características, ou mapa de ativação. Camada de preenchimento (Padding) Um aspecto que a CNN trata é que o centro de cada kernel possa se sobrepor ao elemento mais externo da submatriz de entrada. Isso é feito por meio de uma técnica chamada de preenchimento, mais conhecida pelo nome original em inglês (padding), sendo mais comumente usada a de preenchimento com zeros. Na imagem a seguir, apresentamos um exemplo de padding. f = 1 × 1 + 0 × 2 + 0 × 3 + 1 × 4 + 1 × 5 + 1 × 6 + 0 × 7 + 0 × 8 + 1 × 9 = 1 + 4 + 5 + 6 + 9 = 25 14/02/2024, 19:44 Redes Neurais Convolucionais https://stecine.azureedge.net/repositorio/00212ti/04164/index.html# 10/67 Exemplo de padding. Comentário As arquiteturas CNN utilizam o preenchimento zero para manter as dimensões da matriz de entrada e aplicar mais camadas no modelo. Sem o preenchimento de zero, cada mapa de características sucessivo ficaria menor após a aplicação da operação de convolução. Função de ativação Após a aplicação da operação de convolução, os resultados são passados como entrada para uma função de ativação não linear. Existem algumas funções não lineares suaves que representam bem um comportamento de neurônio biológico. A seguir, apresentamos algumas das funções mais comumente aplicadas: 14/02/2024, 19:44 Redes Neurais Convolucionais https://stecine.azureedge.net/repositorio/00212ti/04164/index.html# 11/67 Função sigmoide A função, também chamada de função logística, é dada pela fórmula: Função Tanh A função tangente hiperbólica utiliza a função sigmoide na sua composição. Sua fórmula é dada por: Função ReLU A função de ativação linear retificada é dada por: A função ReLU é a mais utilizada na prática como função de ativação na camada de convolução. Outra função de ativação muito importante é a Softmax, utilizada no final da CNN. Ela é definida como: Em que: representa o i-ésimo resultado da função Softmax; representa o resultado para o i-ésimo neurônio de saída; representa a quantidade de neurônios de saída. Comentário A função Softmax pode ser vista como uma função logística generalizada que toma como entrada um vetor de pontuações z e produz um vetor de probabilidade de saída p. σ(s) = 1 1 + e−s tanh(s) = 2σ(2s) − 1 ReLU(s) = max{0, s} pi = ezi ∑nj=1 ezj pi zi n 14/02/2024, 19:44 Redes Neurais Convolucionais https://stecine.azureedge.net/repositorio/00212ti/04164/index.html# 12/67 Camada de aglomeração (Pooling layer) A camada de aglomeração – normalmente referenciada por (POOL) – é uma operação que tem por objetivo a redução da quantidade de neurônios para as camadas posteriores. A POOL, em geral, é aplicada após uma camada de convolução. A ideia da redução da imagem de entrada é diminuir a carga computacional, o uso de memória e o número de parâmetros. É uma forma de se prevenir em relação a um problema dos modelos de aprendizado de máquina supervisionado: o risco de sobreajuste, mais conhecido como overfitting, que ocorre quando o modelo fica superespecializado nos dados de treinamento e não consegue generalizar os resultados. As duas principais operações pooling são: Max pooling Obtém o maior valor de uma submatriz. Ela preserva os recursos detectados. Average pooling Obtém a média dos valores de uma submatriz. Logo, ela não preserva os recursos detectados. Na imagem a seguir, mostramos um exemplo das duas operações de pooling. Camada de pooling. No caso da imagem de exemplo, observe o seguinte: 14/02/2024, 19:44 Redes Neurais Convolucionais https://stecine.azureedge.net/repositorio/00212ti/04164/index.html# 13/67 Da mesma forma que tivemos que definir o parâmetro do tamanho do passo da camada de convolução, também precisamos fazer o mesmo para a camada de aglomeração, além de definir as dimensões da matriz de saída. Comentário Então, pelo que vimos, cabe destacar que um neurônio de pooling não tem pesos. O que ele faz é agregar as entradas por intermédio de uma função de agregação, como o máximo ou a média. Camada totalmente conectadaCamada que, normalmente, é aplicada no final de uma CNN. Ela opera sobre uma entrada plana e cada uma das entradas é conectada a todos os nós da camada consecutiva de neurônios. Veja: Para calcular o max pooling, tivemos que verificar quem era o maior elemento dentro de uma submatriz e colocar o valor na saída correspondente. No caso do average pooling, tivemos que calcular a média dos elementos de cada submatriz e associá- la à respectiva posição de saída. Devemos notar que a matriz de entrada possuía quatro linhas e quatro colunas, ou seja, dezesseis elementos. Agora, a matriz resultante de cada operação de aglomeração possui duas linhas e dois elementos, ou seja, um total de quatro elementos em cada matriz. 14/02/2024, 19:44 Redes Neurais Convolucionais https://stecine.azureedge.net/repositorio/00212ti/04164/index.html# 14/67 Camada totalmente conectada. Analisando a imagem da esquerda para a direita, vemos uma imagem retangular que é transformada para uma matriz coluna. Em seguida, cada célula de entrada é conectada a todos os neurônios da camada seguinte. As camadas totalmente conectadas também são chamadas de camadas densas. Parâmetros e hiperparâmetros da rede CNN Como vimos até agora, quando trabalhamos com redes CNN, precisamos nos preocupar com diversos aspectos, tais como a quantidade de camadas de convolução e o dimensionamento das matrizes de deslocamento para aplicar a operação de convolução, por exemplo. Como diferenciar parâmetro de hiperparâmetro? Parâmetro Quando uma variável é otimizada automaticamente durante o processo de treinamento. Hiperparâmetro Quando uma variável precisa ser definida com antecedência. 14/02/2024, 19:44 Redes Neurais Convolucionais https://stecine.azureedge.net/repositorio/00212ti/04164/index.html# 15/67 É importante dedicarmos um pouco mais de atenção para essas variáveis, para dimensionarmos corretamente a rede e compreendermos quais são os recursos que vamos precisar para o funcionamento adequado do modelo. Entre os principais parâmetros da rede CNN, temos (ASZEMI; DOMINIC, 2019): As matrizes de filtros, chamada de kernels, que ficam na camada de convolução; Os pesos sinápticos que ficam na camada totalmente conectada. Já nos hiperparâmetros da rede, temos as seguintes situações: Dimensões das matrizes de filtro (kernel), quantidade de filtros, dimensões do deslocamento (stride), tipo de preenchimento (padding) e funções de ativação. Método de agrupamento, tamanho do filtro, deslocamento (stride) e tipo de preenchimento. Quantidade de pesos e função de ativação. Arquitetura de modelo, método de otimização, taxa de aprendizagem, função de perda, tamanho do lote (batch size), épocas, regularização, método de pesos iniciais e forma de divisão de conjunto de dados. Os hiperparâmetros podem ser divididos em duas categorias: Camada de convolução Camada de aglomeração Camada totalmente conectada Outros aspectos 14/02/2024, 19:44 Redes Neurais Convolucionais https://stecine.azureedge.net/repositorio/00212ti/04164/index.html# 16/67 Os que determinam a estrutura da rede; Os que caracterizam o treinamento da rede. Vamos analisar essas categorias com mais detalhes. Hiperparâmetros que determinam a estrutura da rede Trata-se dos parâmetros que são usados para construir o modelo computacional da rede. Os principais hiperparâmetros são: Dimensionamento da matriz de filtros (kernel): a matriz de filtros é aplicada na camada de convolução. Por meio da operação de convolução entre a matriz de entrada (imagem) e o kernel é que serão extraídas características da imagem e repassadas para a próxima camada; Tipo de kernel: as características que o kernel pode extrair de uma imagem se referem à borda, detecção, nitidez; Stride: é a distância, ou número de pixels, que o kernel se move sobre a matriz de entrada. Quanto maior for o stride – ou, ainda, quanto maiores forem as dimensões do stride –, menor será a sobreposição das entradas de uma imagem e, além disso, menor será a matriz de características resultante; Preenchimento (padding): é a adição de camadas com valores de zero (0) para garantir que o kernel passe além da borda da imagem. Observe que o preenchimento pode ser de três tipos: Preenchimento válido (Valid Padding) Esta opção não faz preenchimento de zeros na imagem, o que implica, ao longo da operação de convolução, a redução das dimensões do mapa de características em relação à imagem de entrada. Opção O preenchimento válido também é chamado de “sem preenchimento”. 14/02/2024, 19:44 Redes Neurais Convolucionais https://stecine.azureedge.net/repositorio/00212ti/04164/index.html# 17/67 Mesmo preenchimento (same padding) Este preenchimento garante que a camada de saída tenha o mesmo tamanho que a camada de entrada. Preenchimento completo (full padding) É o tipo de preenchimento que aumenta o tamanho da saída adicionando zeros à borda da entrada. Agora, podemos calcular as dimensões da saída, ou seja, do mapa de características. A fórmula é dada por: Em que: representa a dimensão largura (ou comprimento) da imagem de entrada; representa a dimensão largura (ou comprimento) da matriz de filtro (kernel); representa a dimensão largura (ou comprimento) do preenchimento (padding); representa a dimensão largura (ou comprimento) do passo (stride). Vamos entender melhor com um exemplo: O = (I − K + 2P) S + 1 I K P S 14/02/2024, 19:44 Redes Neurais Convolucionais https://stecine.azureedge.net/repositorio/00212ti/04164/index.html# 18/67 Exemplo para dimensionar a matriz de saída. Temos as seguintes dimensões: Stride: Padding: Kernel: Imagem: Concluímos, portanto, que a dimensão horizontal da matriz resultante é dada por: Seguimos vendo outros hiperparâmetros: Camadas e unidades ocultas: entre as camadas de entrada e saída, podemos adicionar camadas e unidades ocultas. Para encontrar a quantidade ideal de camadas e unidades ocultas, precisamos realizar testes. Trabalhar com uma quantidade inadequada pode reduzir a capacidade da rede de fazer classificações corretas, ou aumentar o custo computacional para treinar a rede. Funções de ativação: como vimos, essas funções introduzem não linearidade ao modelo. Ao final da camada de convolução, normalmente, aplicamos a função ReLU por produzir melhores resultados, mas também podemos usar as funções sigmoide e tanh, por Sh = 2, Sv = 2 Ph = 1, Pv = 1 Kh = 2, Kv = 2 Ih = 4, Iv = 4 oh = (4 − 2 + 2) 2 + 1 = 3 14/02/2024, 19:44 Redes Neurais Convolucionais https://stecine.azureedge.net/repositorio/00212ti/04164/index.html# 19/67 exemplo. Já na camada de saída do modelo, aplicamos a função de ativação Softmax. Camada dropout: é uma técnica de regularização usada para aumentar a precisão da rede no processo de validação. Isso implica que a rede aumente sua capacidade de generalização, evitando a superespecialização, que é o problema conhecido por overfitting. A ideia é que, no processo de treinamento, alguns nós serão “esquecidos”, ou seja, não serão levados em consideração no processo de aprendizado. Esse hiperparâmetro é indicado para redes de grandes dimensões, pois o efeito esperado é que o modelo tenha mais oportunidade de aprender representações independentes. Hiperparâmetros que determinam o treinamento da rede As redes CNN são utilizadas, principalmente, para aplicações de visão computacional. Isso significa que elas são treinadas para reconhecer padrões complexos de imagens. Para poderem ser aplicadas com essa finalidade, elas precisam passar por um processo de treinamento que seja eficiente, que inclui os ajustes de diversos parâmetros, sendo os mais comuns: taxa de aprendizagem, momentum, quantidade de épocas, tamanho do lote e pesos iniciais para rede. Vejamos, a seguir, detalhes sobre cada um deles. Taxa de aprendizagem Define a velocidade com que a rede faz a atualização dos seus parâmetros. É um valor numérico pertencenteao conjunto dos números reais positivos. Quando a taxa de aprendizagem é baixa, o processo de aprendizagem é lento, porém o algoritmo de treinamento converge suavemente. Por outro lado, quando a taxa de aprendizagem é alta, ela acelera o aprendizado, mas o algoritmo de treinamento pode não convergir. A formulação matemática para atualização dos pesos sinápticos é dada por: 14/02/2024, 19:44 Redes Neurais Convolucionais https://stecine.azureedge.net/repositorio/00212ti/04164/index.html# 20/67 Em que: : representa o peso sináptico na iteração t; : representa o peso sináptico na iteração t-1, ou seja, é o peso para a conexão (i,j) na iteração anterior à iteração t; : representa o incremento do peso sináptico na iteração t-1. Sendo que sua fórmula é dada por: : é a função erro, ou seja, ela mede a diferença entre os resultados esperados e obtidos para o conjunto de treinamento; : é a taxa de aprendizagem positiva e constante. Momentum É um valor numérico positivo. Ele ajuda a atualizar os pesos sinápticos da rede fazendo uso das informações das iterações anteriores, como uma maneira de prevenir que eles tenham grandes oscilações. A fórmula para incremento dos pesos com o Momentum é dada por: Sendo que é o Momentum. O valor usado na prática varia entre 0,5 e 0,9. Quantidade de épocas wtji = w t−1 ji + Δw t−1 ji wtji wt−1ji Δwt−1ji Δwt−1ji = η ∂E∂wji E η Δwtji = η ∂E ∂wji + γΔwt−1ji γ 14/02/2024, 19:44 Redes Neurais Convolucionais https://stecine.azureedge.net/repositorio/00212ti/04164/index.html# 21/67 É a quantidade de vezes que todos os dados de treinamento são fornecidos para a rede durante o treinamento. Dependendo da quantidade de épocas, podem ocorrer duas situações: Under�tting Expressão utilizada para indicar que a rede não foi capaz de extrair as características dos dados de treinamento. Uma quantidade pequena de épocas pode ser insuficiente para que a rede aprenda, levando a uma situação de underfitting. Over�tting Termo que indica uma superespecialização da rede para os dados de treinamento, o que significa que a rede está muito ajustada para os dados de treinamento, mas não é capaz de generalizar os resultados. A utilização de muitas épocas no treinamento pode causar a situação de overfitting. Tamanho do lote Esse hiperparâmetro é mais conhecido pelo termo em inglês: batch size, que define a quantidade de amostras que serão propagadas pela rede. Por exemplo, imagine que tenhamos 1000 amostras de treinamento e configuremos o batch size igual a 100. O algoritmo de treinamento trabalhará com as primeiras 100 amostras do conjunto de dados de treinamento e treinará a rede. Em seguida, processará as segundas 100 amostras e, novamente, treinará a rede. Esse processo será repetido até que todos os dados de treinamento sejam processados pela rede. Ainda nesse exemplo, devemos observar que, para completar uma época com o batch size igual a 100, o algoritmo precisa de dez iterações. Pesos iniciais para rede A rede precisa de pesos iniciais para começar a ser treinada. E essa escolha pode influenciar a convergência do algoritmo de treinamento. No entanto, é difícil definir qual a melhor estratégia. O mais comum é escolher um esquema para obter valores iniciais de acordo com a função de ativação usada em cada camada. Normalmente, é aplicada a distribuição uniforme. 14/02/2024, 19:44 Redes Neurais Convolucionais https://stecine.azureedge.net/repositorio/00212ti/04164/index.html# 22/67 Treinamento da rede CNN O treinamento de uma rede neural, geralmente, é um processo que tem como objetivo fazer com que a rede extraia informações dos dados de treinamento e, desse modo, generalize seus resultados. No caso das redes CNN, para atingir esse objetivo, o treinamento precisa encontrar: Os kernels das camadas de convolução, ou seja, o resultado da aplicação dos filtros de convolução nas entradas de dados e das funções de ativação – normalmente, é a função ReLU, como já mencionamos. Os pesos sinápticos nas camadas totalmente conectadas que minimizam as diferenças entre as previsões de saída – que são os dados rotulados – e os resultados obtidos para um conjunto de dados de treinamento. O método mais utilizado para treinar redes neurais é o algoritmo de retropropagação de erro, mais conhecido pelo termo em inglês backpropagation. Esse algoritmo consiste em duas etapas distintas: Etapa de avanço Nesta etapa, as ativações são propagadas da camada de entrada para a camada de saída. Etapa de retrocesso Nesta etapa, os pesos sinápticos são atualizados. O erro (a diferença) entre os valores obtidos e o de referência da camada de saída é propagado para trás. Comentário Uma informação interessante a respeito do valor de referência é que ele pode receber outros nomes: valor nominal e valor alvo. Função de perda A função de perda é usada para medir a compatibilidade entre as previsões de saída da rede e os valores obtidos. Ela também é conhecida como função de custo. A ideia básica é bem simples: Quanto menor for o erro, significa que a rede está bem treinada para o conjunto de treinamento. 14/02/2024, 19:44 Redes Neurais Convolucionais https://stecine.azureedge.net/repositorio/00212ti/04164/index.html# 23/67 Infelizmente, isso não significa que a qualidade de generalização da rede é garantida. Mas por que isso acontece? Resposta Porque podem ocorrer diversos problemas com os dados de treinamento, levando ao overfitting. Devemos lembrar, ainda, que a função de perda é aplicada depois da função de ativação da camada de saída. Como aplicamos a função Softmax, os valores de saída estarão entre 0 e 1. As funções de perda são escolhidas conforme o seu contexto de aplicação. Veja a seguir os dois casos mais comuns: A entropia cruzada para classi�cação multiclasse Cuja fórmula é dada por: O erro quadrático médio para regressão de valores contínuos Cuja fórmula é dada por: Sendo MSE um acrônimo para o nome em inglês do erro quadrático médio: mean square error. Além disso, , e são definidos H(y, ŷ) = − 1 N N ∑ i=1 yi ⋅ log (ŷi) MSE(y, ŷ) = 1 N N ∑ i=1 (yi − ŷi) 2 ŷ γ N 14/02/2024, 19:44 Redes Neurais Convolucionais https://stecine.azureedge.net/repositorio/00212ti/04164/index.html# 24/67 exatamente como no caso do erro de entropia cruzada. Algoritmos de otimização No treinamento da rede, precisamos aplicar um algoritmo de otimização para minimizar a função de erro. Entre os algoritmos de otimização mais comuns, estão: Aplicações das redes CNN A combinação de todos os aspectos que apresentamos até agora é a base para o sucesso da aplicação das redes de convolução para tratar problemas de visão computacional. Podemos encontrar, então, exemplos de aplicações de redes CNN para os seguintes domínios de visão computacional: Classi�cação Gradiente de descida É o método que calcula o gradiente da função de custo e o utiliza para atualizar os pesos sinápticos da rede. Gradiente de descida estocástico O método é semelhante ao gradiente de descida que usa apenas um subconjunto dos exemplos de treinamento de cada vez. Gradiente acelerado de Nesterov Este método dá um “salto” na direção do gradiente acumulado anterior e depois faz uma correção antes de atualizar os pesos. 14/02/2024, 19:44 Redes Neurais Convolucionais https://stecine.azureedge.net/repositorio/00212ti/04164/index.html# 25/67 Destaca categorias de objetos em uma imagem. Localização Destaca o objeto alvo da imagem dentro de uma moldura. Detecção Faz a localização de múltiplos objetos em uma imagem. Segmentação Classifica e localiza o objeto de interesse dentro da imagem. Sabemos que as redes CNN são aplicações de aprendizado supervisionado, portanto, a classificação atribui um objeto de entrada a uma categoria das que foram fornecidas como alvo (ou rótulo) para a rede. Fundamentos das redes de convolução No vídeo a seguir, abordamos os aspectos fundamentais das redesde convolução. Falta pouco para atingir seus objetivos. Vamos praticar alguns conceitos? Questão 1 14/02/2024, 19:44 Redes Neurais Convolucionais https://stecine.azureedge.net/repositorio/00212ti/04164/index.html# 26/67 As redes neurais convolucionais são um exemplo da aplicação de redes neurais para aprendizado profundo. Elas são utilizadas, especialmente, para aplicações de visão computacional. Em relação ao princípio de funcionamento das redes convolucionais, selecione a opção correta. Parabéns! A alternativa A está correta. Os neurônios do córtex visual têm a capacidade de reconhecer imagens através da combinação entre eles. Os pesquisadores David H. Huber e Torsten Wiesel observaram em alguns animais que os neurônios responsáveis pelo campo de visão reagiam de forma especializada para determinadas características das imagens. Questão 2 As redes neurais convolucionais são muito conhecidas. Isso se justifica devido ao seu sucesso para resolver muitas situações práticas, como o reconhecimento de imagens. Por outro lado, implementar uma rede neural convolucional implica ajuste de diversos hiperparâmetros. Em relação aos hiperparâmetros das redes convolucionais, selecione a opção correta. A São baseadas no comportamento dos neurônios do córtex visual de se combinarem para visualizar uma imagem. B São baseadas nos neurônios artificiais, consistindo no uso de mais camadas ocultas. C As redes convolucionais foram desenvolvidas no ano de 1958 por pesquisadores que realizavam trabalhos sobre a arquitetura do córtex visual. D São abstrações da arquitetura do córtex visual dos animais. E São representações do comportamento probabilístico das redes neurais artificiais que, quando aplicadas para reconhecimento de imagens, são chamadas de redes convolucionais. 14/02/2024, 19:44 Redes Neurais Convolucionais https://stecine.azureedge.net/repositorio/00212ti/04164/index.html# 27/67 Parabéns! A alternativa B está correta. Existem duas categorias para os hiperparâmetros: os estruturais e os de treinamento. Os estruturais dão forma à arquitetura da rede, enquanto os hiperparâmetros de treinamento são relacionados às características dos algoritmos de aprendizado. A camada dropout faz parte da categoria dos hiperparâmetros estruturais. Ela é aplicada como uma tentativa de prevenir o overfitting da rede. A O batch size é usado para limitar a quantidade de iterações que o algoritmo de treinamento vai utilizar para treinar a rede. B A camada dropout é usada para prevenir que a rede fique superespecializada nos dados de treinamento. C Os hiperparâmetros são limitados à camada completamente conectada, uma vez que é nela que ficam os pesos sinápticos. D Os filtros de convolução são utilizados para evitar a sobreposição de informações dos dados de entrada. E O hiperparâmetro de tipo de preenchimento é utilizado para preservar as características dos dados de entrada. 14/02/2024, 19:44 Redes Neurais Convolucionais https://stecine.azureedge.net/repositorio/00212ti/04164/index.html# 28/67 2 - Arquiteturas de redes convolucionais Ao �nal do módulo, você será capaz de distinguir as principais variações de arquiteturas de redes convolucionais e suas aplicações. Ligando os pontos Você já ouviu falar sobre arquitetura de rede neural? Sabia que essas arquiteturas são construídas para melhorar o tratamento de um problema? Para respondermos a essas perguntas, vamos analisar algumas situações práticas. A Estrutura Neural S.A. (empresa fictícia) trabalha em um ramo muito específico: elaborar e testar a eficiência das arquiteturas de redes neurais. Essa área de atuação surgiu de maneira bastante curiosa. O fundador da empresa trabalhava como professor universitário. Uma de suas atividades era orientar os estudantes na condução dos trabalhos de projetos finais de curso. Um dos assuntos recorrentes desses projetos era aplicação de redes neurais para visão computacional. E o tipo de rede mais comum era a rede neural de convolução, mais conhecida como rede CNN. O professor observou que os resultados obtidos por essas redes eram muito influenciados pela forma como eram estruturadas e pelos valores dados aos seus parâmetros. Esse processo sempre foi muito complexo, pois possui muitos detalhes e exige bastante experimentação. Então, depois de ver esse cenário se repetir continuamente, ele teve a seguinte percepção: “da mesma forma que essas dificuldades ocorrem com meus alunos e alunas de projeto final, também deve ocorrer com muitas empresas que utilizam essas redes para resolver problemas de visão computacional”. A conclusão do professor estava certa, pois é bastante comum que as pessoas utilizem funções de bibliotecas como caixas pretas, especialmente, para resolver problemas do dia a dia. Obviamente, é importante usar os recursos oferecidos pelas bibliotecas, mas, no caso das redes neurais, é essencial entender como as engrenagens funcionam. E foi isso que o professor fez. Ele elaborou um processo para arquitetar, parametrizar e testar as redes CNNs para trabalhar com problemas práticos relacionados às empresas interessadas em aplicações de visão computacional. Hoje em dia, a Estrutura Neural S.A. tem um portfólio de clientes engajados e possui no seu corpo funcional muitos dos ex-orientandos do professor. E você, o que achou do caminho que o professor trilhou até fundar a Estrutura Neural S.A.? Após a leitura do case, é hora de aplicar seus conhecimentos! Vamos ligar esses pontos? 14/02/2024, 19:44 Redes Neurais Convolucionais https://stecine.azureedge.net/repositorio/00212ti/04164/index.html# 29/67 Questão 1 Como visto, a arquitetura de uma rede CNN faz toda a diferença sobre o desempenho dela. Pensando na importância da arquitetura para essas redes e considerando o texto, qual a oportunidade de negócio que você vislumbra para a Estrutura Neural S.A. em relação às redes CNNs? Parabéns! A alternativa B está correta. A oportunidade que a Estrutura Neural S.A. encontrou foi a de melhorar a qualidade das redes CNNs e aperfeiçoar os testes para construir parametrizações eficientes. Isso é fundamental, pois essas redes são muito sensíveis à forma como são estruturadas e aos valores iniciais de seus parâmetros. Questão 2 Como visto, o processo de criação da Estrutura Neural S.A. não foi trivial, e sim foi consistente. Na sua opinião como membro da equipe da referida empresa, qual foi a grande ideia que o fundador teve? A Realizar aplicações de visão computacional. B Desenvolver arquiteturas e parametrizações eficientes. C Agregar valor para o negócio dos clientes através de técnicas de inteligência artificial. D Encontrar novas oportunidades de negócio. E Desenvolver projetos de pesquisa em parceria com instituições de ensino. A As redes CNNs são excelentes para aplicações de visão computacional. 14/02/2024, 19:44 Redes Neurais Convolucionais https://stecine.azureedge.net/repositorio/00212ti/04164/index.html# 30/67 Parabéns! A alternativa E está correta. O fundador da empresa era um professor que trabalhava com as redes CNN com objetivos acadêmicos, mas, ainda assim, percebeu que as dificuldades pelas quais passava não eram triviais e que era muito provável que outros também as tivesse. Questão 3 Considere o seguinte cenário: você foi um dos orientandos do fundador da Estrutura Neural S.A. e, ao desenvolver o seu projeto, percebeu a oportunidade de acrescentar uma solução que pode ser útil para a empresa do professor. Nesse cenário, você faria para mostrar o potencial do seu projeto? Digite sua resposta aqui Chave de resposta Um bom projeto passa por diversas etapas, sendo a primeira delas uma boa documentação. A ideia do que o projeto faz e como pode ser útil precisa estar bem documentada, para que a pessoa que vai avaliá-lo possa entender bem. No caso de uma rede CNN, é fundamental, além da documentação, apresentar exemplos práticos que demonstre a eficiência do projeto.B As redes CNNs são úteis para questões de segurança. C Uma das aplicações das redes CNN é para identificação de objetos. D Muitas empresas ainda vão investir no uso de redes CNNs, portanto é muito importante ser pioneiro. E Que outros tinham as mesmas dificuldades para construir redes CNN. 14/02/2024, 19:44 Redes Neurais Convolucionais https://stecine.azureedge.net/repositorio/00212ti/04164/index.html# 31/67 Arquiteturas de redes neurais de convolução A arquitetura básica da rede neural de convolução (CNN) é composta por várias camadas: Camadas de convolução; Camadas de pooling; Camadas totalmente conectadas. Vejamos a representação geral da arquitetura da CNN. Esquema conceitual de uma CNN. As camadas de convolução, normalmente, são seguidas por uma camada ReLU, ou seja, a função de ativação ReLU é aplicada para cada entrada resultante da aplicação da operação de convolução para a entrada de dados. Em seguida, vem a camada de pooling, com a aplicação de uma função de max pooling, ou average pooling. Na sequência, é aplicada outra camada de convolução com aplicação da função de ativação e, depois, outra camada de pooling. Veja, a seguir, os detalhes de cada etapa de processamento. 14/02/2024, 19:44 Redes Neurais Convolucionais https://stecine.azureedge.net/repositorio/00212ti/04164/index.html# 32/67 Banco de dados de dígitos manuscritos Um dos fatores que influenciaram o avanço das arquiteturas das redes CNN foi a disponibilidade de banco de dados, no qual os pesquisadores pudessem realizar testes e comparar resultados de modo confiável. Uma dessas bases de dados muito utilizadas para aplicações de visão computacional é a MNIST (THE MNIST DATABASE). Vejamos um exemplo do banco de dados MNIST. A imagem diminui à medida que é processada pela rede No final da rede, são adicionadas uma ou mais camadas totalmente conectadas, em que os pesos sinápticos são calculados. Ao final de cada camada totalmente conectada estão as funções de ativação, geralmente, as ReLUs. Por fim, a camada final produz a predição com a aplicação de uma função de ativação que, nesse caso, comumente é a função Softmax. Por fim, a camada final produz a predição com a aplicação de uma função de ativação que, nesse caso, usualmente é a função Softmax. 14/02/2024, 19:44 Redes Neurais Convolucionais https://stecine.azureedge.net/repositorio/00212ti/04164/index.html# 33/67 Exemplo de banco de dados MNIST. A MNIST é uma base formada por um conjunto de dados de imagens em tons de cinza de caracteres numéricos escritos à mão. Cada imagem é formada por um caractere no centro com 28 × 28 pixels. O conjunto de dados possui um total de 70.000 imagens que cobrem os dígitos de 0 a 9. Desse total, 50.000 imagens são usadas para treinamento, 10.000 para teste e 10.000 para validação. Dica Devido à padronização de como os dados são armazenados, ou seja, tamanhos constantes, escalas e escrita das imagens, esse banco de dados é um ótimo recurso para estudar e testar algoritmos de aprendizado de máquina, em especial, os que utilizam redes CNN. Variações da arquitetura das redes CNN Ao longo dos anos, as arquiteturas das redes CNN evoluíram bastante. Além de muita pesquisa sobre o assunto, o que ajudou bastante nessa evolução foram competições como o ILSVRC (ImageNet Large Scale Visual Recognition Challenge), que faz a avaliação dos algoritmos para detecção de objetos e classificação de imagens (IMAGENET). Vamos explorar algumas dessas arquiteturas para entendermos suas variações e aplicações. Especificamente, vamos abordar as arquiteturas: LeNet-5, AlexNet, GoogLeNet, VGGNet, ResNet, Xception e SENet. LeNet-5 A arquitetura LeNet-5 foi desenvolvida por Yann LeCun em 1998. Ela faz a classificação de dígitos e foi aplicada para reconhecer números 14/02/2024, 19:44 Redes Neurais Convolucionais https://stecine.azureedge.net/repositorio/00212ti/04164/index.html# 34/67 escritos à mão em cheques digitalizados em imagens de entrada em escala de cinza de 32 × 32 pixels. Essa arquitetura é composta pelas camadas mostradas na tabela a seguir. Número da camada Dimensões da entrada de dados Dimensões do kernel 1 32 × 32 - 2 28 × 28 5 × 5 3 14 × 14 2 × 2 4 10 × 10 5 × 5 5 5 × 5 2 × 2 6 1 × 1 5 × 5 7 84 - 8 10 - Tabela: Arquitetura da LeNet-5. Adaptada de Lecun et al., 1998. Os dados da tabela referem-se às imagens da base de dados MNIST. Devemos lembrar que as imagens do MNIST possuem 28 × 28 pixels, então, para aplicar a LeNet-5, elas são preenchidas com zeros até 32 × 32 pixels, que é o que ocorre na Camada 1. Além disso, elas precisam ser normalizadas. A normalização consiste em transformar os valores de entrada para uma escala de números entre 0 e 1 que, no caso da base MNIST, basta dividir os valores por 255, uma vez que as imagens estão em tons de cinza. Em seguida, os dados são fornecidos para a rede. Nas próximas etapas, a LeNet-5 não faz uso nenhum de preenchimento e, por isso, o tamanho da imagem diminui à medida que avança pela rede. De forma resumida, as demais camadas (de 2 a 8) têm a seguintes funções: Camada 2 Camada de convolução com seis kernels de convolução de dimensões 5 × 5, e as dimensões do d t í ti ã d 28 28 14/02/2024, 19:44 Redes Neurais Convolucionais https://stecine.azureedge.net/repositorio/00212ti/04164/index.html# 35/67 mapa de características são de 28 × 28. Camada 3 Camada de agrupamento (pooling) que faz a subamostragem dos dados de entrada por meio do método Average pooling. Camada 4 Camada de convolução que abrange dezesseis kernels de convolução de dimensões 5 × 5. Camada 5 Semelhante à camada 3 com os kernels de dimensões 2 × 2 e uma saída de dezesseis mapas de características 5 × 5. Camada 6 Também é uma camada de convolução com cento e vinte kernels de convolução de dimensões 5 × 5. Camada 7 É uma camada totalmente conectada. 14/02/2024, 19:44 Redes Neurais Convolucionais https://stecine.azureedge.net/repositorio/00212ti/04164/index.html# 36/67 Devemos observar ainda mais alguns pontos sobre essa arquitetura LeNet-5: Das camadas de 2 a 8, as funções de ativação aplicadas são do tipo ReLU; Na camada de saída, é aplicada a função de ativação Softmax. AlexNet A arquitetura AlexNet foi desenvolvida por Alex Krizhevsky, Ilya Sutskever e Geoffrey Hinton, e venceu, em 2012, o desafio ImageNet ILSVRC, obtendo uma taxa de erro de 17%, enquanto o segundo lugar obteve uma taxa de 26%. Comentário Em muitos aspectos, ela é parecida com a LeNet-5. Entre as diferenças, estão o fato de a AlexNet ser mais profunda – ter mais camadas ocultas – e empilhar camadas convolucionais diretamente umas sobre as outras. Na tabela a seguir, podemos ver a arquitetura da AlexNet. Número da camada Dimensões do kernel Stride 1 - - 2 11 × 11 4 3 3 × 3 2 4 5 × 5 1 5 3 × 3 2 6 3 × 3 1 7 3 × 3 1 Camada 8 É a camada de saída também do tipo totalmente conectada. 14/02/2024, 19:44 Redes Neurais Convolucionais https://stecine.azureedge.net/repositorio/00212ti/04164/index.html# 37/67 Número da camada Dimensões do kernel Stride 8 3 × 3 1 9 - - 10 - - 11 - - Tabela: Arquitetura da AlexNet. Adaptada de Krizhevsky et al., 2012. A arquitetura da AlexNet consiste em: Camadas de convolução de dimensões 11 × 11, 5 × 5, 3 × 3; Camadas com pooling máximo; Camadas com dropout; Aumento de dados; Funções de ativação ReLU após cada camada convolucional e totalmente conectada; Método de otimização SGD (Gradiente de Descida Estocástico) com momentum. Comentário Uma rede semelhante à AlexNet, chamada ZF Net, foi desenvolvida por Matthew Zeiler e Rob Fergus, e venceu o desafio ILSVRC de 2013. Basicamente, ela é AlexNet com alguns hiperparâmetros ajustados, como: Quantidade de mapas de características; Dimensões do kernel etc. GoogLeNet Na competição ILSVRC 2014, o vencedor foi GoogLeNet. Essa arquitetura também é conhecida como Inception V1 do Google. Desenvolvidapor Christian Szegedy, obteve um desempenho muito próximo do nível humano, com uma taxa de erro abaixo de 6,67%. 14/02/2024, 19:44 Redes Neurais Convolucionais https://stecine.azureedge.net/repositorio/00212ti/04164/index.html# 38/67 Um dos fatores que influenciou o ótimo desempenho da rede GoogLeNet foi o fato de ser muito mais profunda do que as CNN anteriores, o que possibilitou a utilização mais eficiente de parâmetros por meio de sub-redes chamadas de módulos de iniciação – mais conhecidos pelo termo original em inglês, inception modules. Vejamos a arquitetura básica de um módulo de iniciação na imagem a seguir. Módulo de iniciação. Atenção A notação “3 × 3” significa que a camada usa um kernel de dimensões 3 × 3. Todas as camadas convolucionais usam a função de ativação ReLU. Precisamos observar algumas questões importantes nessa arquitetura: Ponto 1 No segundo conjunto de camadas convolucionais, a rede usa kernels de dimensões diferentes: 1 × 1, 3 × 3 e 5 × 5. O objetivo é que eles capturem padrões em escalas diferentes. Ponto 2 As camadas utilizam o tipo de preenchimento (padding) igual a “mesmo” e stride igual a 1. Isso significa que todas as suas saídas têm as mesmas dimensões de suas entradas. VGGNet A VGGNet é um modelo de rede neural convolucional proposto por Simonyan e Zisserman. Essa arquitetura obteve o segundo lugar na competição ILSVRC 2014 e alcançou a precisão de 92,7% no ImageNet. Sua arquitetura é considerada muito simples, seguindo padrão com uma sequência com 2 ou 3 camadas convolucionais, e uma camada de aglomeração (pooling) com um total de 16 camadas convolucionais 14/02/2024, 19:44 Redes Neurais Convolucionais https://stecine.azureedge.net/repositorio/00212ti/04164/index.html# 39/67 mais 2 camadas ocultas completamente conectadas e a camada de saída. A VGGNet utiliza muitos filtros, mas apenas com dimensões 3 × 3. ResNet No desafio ILSVRC 2015, a ResNet, ou, ainda, rede residual, foi a grande vencedora. Com isso, foi dado mais um passo na evolução das redes CNN. Ela foi desenvolvida por pesquisadores da Microsoft e obteve uma taxa de erro abaixo de 3,6%, usando uma CNN composta por 152 camadas. Com essa taxa de erro tão baixa, ficou confirmada uma tendência geral: cada vez mais, os modelos de sucesso possuem menos parâmetros e mais camadas. Comentário A principal característica dessa rede são as conexões de salto — também chamadas de conexões de atalho — que compõem os blocos residuais. A ideia é simples: o sinal que entra em uma camada também é adicionado à saída de uma camada localizada um pouco mais acima na pilha. Vejamos a seguir um diagrama de um bloco residual. Bloco residual. A conexão de salto previne que alguma camada prejudique o desempenho da arquitetura. Xception 14/02/2024, 19:44 Redes Neurais Convolucionais https://stecine.azureedge.net/repositorio/00212ti/04164/index.html# 40/67 O Xception é uma evolução da arquitetura GoogLeNet. Ele explora a ideia de convolução separável em profundidade. Desenvolvida por François Chollet, a arquitetura Xception possui 36 camadas convolucionais que formam a base de extração de características da rede. Essas camadas convolucionais, por sua vez, são estruturadas em 14 módulos, todos com conexões residuais lineares ao seu redor, exceto o primeiro e o último módulos. Resumindo O Xception é uma arquitetura baseada no empilhamento linear de camadas de convolução separáveis em profundidade com conexões residuais. SENet A arquitetura que venceu o desafio ILSVRC 2017, obtendo uma taxa de erro de 2,25%, foi a SENet – acrônimo do termo: Squeeze-and-Excitation Network, que em tradução literal significa “rede de compressão e excitação”. A SENet faz uma extensão das arquiteturas existentes, como as das redes ResNets. A ideia principal da arquitetura dela é adicionar parâmetros a cada canal de um bloco convolucional, a fim de que a rede possa fazer ajustes para ponderar, de forma adaptativa, cada mapa de características. Curiosidade Os blocos convolucionais da arquitetura SENet são chamados de “blocos SE”, sendo S = Squeeze e E = Excitation. Modelos pré-treinados para transferência de aprendizado Vimos vários exemplos de arquiteturas de redes convolucionais, sendo impressionante notarmos como elas continuam evoluindo. Basta acompanharmos algumas competições, como a do ILSVRC (IMAGENET). Um ponto bastante interessante do ponto de vista prático é que podemos utilizar redes pré-treinadas nessas arquiteturas para desenvolvermos nossos projetos. É o que chamamos de transferência de aprendizado. Isso não significa que não vamos precisar treinar nossos modelos, mas facilita bastante a etapa inicial do projeto. Em especial, quando 14/02/2024, 19:44 Redes Neurais Convolucionais https://stecine.azureedge.net/repositorio/00212ti/04164/index.html# 41/67 trabalhamos com ciclos ágeis de desenvolvimento como no RAD (Rapid Application Development), no qual temos que fazer entregas com curtos ciclos de desenvolvimento. As principais arquiteturas de redes de convolução No vídeo a seguir, apresentamos as principais arquiteturas das redes de convolução, com destaque para a rede LeNet-5. Falta pouco para atingir seus objetivos. Vamos praticar alguns conceitos? Questão 1 As redes neurais convolucionais (CNN) são compostas por diversas camadas. Essas camadas têm finalidades distintas e o modo como podem ser estruturadas caracteriza a arquitetura de uma rede CNN. Em relação à arquiteturas das redes CNN, selecione a opção correta. A As camadas têm objetivos distintos, mas podem ser combinadas e mudar sua funcionalidade básica. B As camadas podem ser organizadas de diferentes formas, inclusive camadas do mesmo tipo podem aparecer mais de uma vez. 14/02/2024, 19:44 Redes Neurais Convolucionais https://stecine.azureedge.net/repositorio/00212ti/04164/index.html# 42/67 Parabéns! A alternativa B está correta. A arquitetura das redes CNN possuem camadas de convolução, de pooling e totalmente conectadas, além das camadas de entrada e de saída. Essas camadas têm objetivos distintos e bem determinados e podem aparecer diversas vezes ao longo do modelo. Questão 2 Cada vez mais a demanda por aplicações de visão computacional aumenta, como nas áreas de segurança, saúde e entretenimento. As redes neurais de convolução (CNN) são aplicadas com sucesso, especialmente para visão computacional, e possuem diversas arquiteturas que estão em constante evolução. Em relação às arquiteturas das redes CNN, selecione a opção correta. C A arquitetura das redes convolucionais é dinâmica, o que siginifica que as camadas podem mudar as ligações entre si durante a execução. D O treinamento das redes neurais CNN pode reduzir o tamanho dos dados de uma entrada, por isso é necessário aplicar a camada de preenchimento. E A quantidade de camadas de uma arquitetura de rede CNN é limitada a oito níveis, pois, do contrário, seria necessário muito tempo para serem treinadas. A As arquiteturas das redes de convolução dependem de informações dos dados de entrada, nesse sentido, as competições contribuem para a padronização desses dados. B As arquiteturas das redes neurais de convolução têm evoluído para modelos de camadas lineares, uma vez que são mais semelhantes com o córtex visual. C As redes de convolução podem ter diferentes arquiteturas, mas todas precisam utilizar a função de ativação ReLU na camada de convolução. 14/02/2024, 19:44 Redes Neurais Convolucionais https://stecine.azureedge.net/repositorio/00212ti/04164/index.html# 43/67 Parabéns! A alternativa D está correta. As redes de convolução são bastante conhecidas como modelos de aprendizado profundo devido ao seu sucesso para aplicações de visão computacional. Os desafios organizados sobre essa área ajudam a divulgar novas arquiteturas e a atrair profissionais que, ao longo dos anos, têm conseguido melhorar a taxa de acerto dos modelos. 3 - Classi�cação de imagenscom rede convolucional Ao �nal deste módulo, você será capaz de empregar rede convolucional para classi�cação de imagens. Ligando os pontos Você sabia que a rede de convolução é usada com sucesso para problemas de visão computacional? Sabe que existem bibliotecas que D As competições de visão computacional são um dos fatores que auxiliam na padronização de bases de dados que são usadas para testar as arquiteturas das redes CNN. E Um dos importantes fatores que influenciaram o avanço das arquiteturas das redes CNN foi a limitação de camadas ocultas. 14/02/2024, 19:44 Redes Neurais Convolucionais https://stecine.azureedge.net/repositorio/00212ti/04164/index.html# 44/67 podem ajudar bastante para construção de soluções práticas? Para entendermos sobre os conceitos na prática, vamos analisar uma situação. A Enxergue Mais S.A. (empresa fictícia) utiliza redes neurais de convolução (CNNs) como a base de suas soluções de visão computacional. Essas redes fazem parte de uma área conhecida como aprendizado profundo (deep learning). O portfólio de clientes da empresa é formado, principalmente, por companhias que possuem lojas físicas que atuam na área de vendas de vestuário, acessórios e utensílios para casa e escritório. Os clientes da Enxergue Mais utilizam as aplicações dela de um modo muito interessante. Quando o público-alvo da Enxergue Mais entra nas lojas, o sistema identifica e classifica cada uma das peças vestidas tanto pelos clientes e quanto por quem os acompanha. Em seguida, traça um perfil dessas pessoas e constrói uma lista de opções de peças que melhor se adequam a elas. O próximo passo é oferecer para esses clientes ofertas personalizadas. Obviamente, isso não extingue o processo de um cliente experimentar uma roupa ou um acessório, mas, agora, isso ocorre de um modo que aumenta as chances de satisfazer o cliente e concretizar as vendas. A escolha da Enxergue Mais pelas redes CNNs foi realizada devido a alguns motivos, entre os quais estão: O fato conhecido de que essas redes têm um excelente desempenho para aplicações de visão computacional. A flexibilidade da estrutura da rede que permite que ela possa produzir respostas muito rapidamente. A convicção dos tomadores de decisão da empresa que utilizar as redes CNNs pode ajudar a empresa a expandir sua área de atuação. Um dos grandes investimentos atualmente da Enxergue Mais é a captação de pessoas ainda nas salas de aula para aprender como seus sistemas funcionam e, claro, colaborar para a expansão da empresa. E você, o que pensa sobre os planos de expansão da Enxergue Mais? Após a leitura do case, é hora de aplicar seus conhecimentos! Vamos ligar esses pontos? Questão 1 Como visto, a Enxergue Mais S.A. utiliza as redes CNNs para construir suas soluções. Imagine que você é um integrante da equipe de engenharia de software dessa empresa. Como justificaria o motivo dessa escolha? 14/02/2024, 19:44 Redes Neurais Convolucionais https://stecine.azureedge.net/repositorio/00212ti/04164/index.html# 45/67 Parabéns! A alternativa E está correta. A escolha da Enxergue Mais S.A. pelas redes CNNs deve-se ao fato de que elas funcionam bem para aplicações de visão computacional e são suficientemente adaptáveis para situações práticas que fazem parte do negócio da empresa. Questão 2 Como visto, o tipo de serviço oferecido pela Enxergue Mais S.A. é muito interessante, mas bastante complexo de ser realizado. Como você justificaria o emprego das redes CNNs na identificação das roupas que as pessoas estão usando? A As redes CNNs são o único tipo de modelo computacional que pode ser aplicado para problemas de visão computacional. B Para se posicionar no mercado como uma empresa inovadora. C Por ser o modelo computacional que as pessoas da empresa dominam. D Devido à grande popularização dos métodos de aprendizado de máquina. E As redes CNNs são adequadas para visão computacional e oferecem flexibilidade. A As redes CNNs utilizam um grande banco de dados de imagens das roupas que os clientes possam vir a utilizar. B As redes CNNs precisam ser treinadas para reconhecer características que auxiliem na identificação das roupas. 14/02/2024, 19:44 Redes Neurais Convolucionais https://stecine.azureedge.net/repositorio/00212ti/04164/index.html# 46/67 Parabéns! A alternativa B está correta. Semelhante ao que ocorre com as demais redes neurais, as redes CNNs devem ser treinadas com vários tipos de imagens a respeito das possíveis roupas que os clientes podem utilizar. De fato, essa etapa de treinamento foi um grande desafio enfrentado pela Enxergue Mais S.A. Questão 3 Considere o seguinte cenário: você foi contratado pela Enxergue Mais S.A. para encontrar novas aplicações das redes CNNs e, assim, auxiliar a empresa a expandir os negócios dela. Com base em sua experiência, como você cumpriria essa missão? Digite sua resposta aqui Chave de resposta A Enxergue Mais S.A. possui excelência na identificação de peças de vestuário. Mais do que isso, ela identifica as peças enquanto os clientes as vestem, o que torna a situação muito mais complexa. Portanto, a proposta de expansão dos negócios tem de estar relacionada às competências que a empresa já possui e manter o mesmo padrão de qualidade. Um exemplo de área de atuação é na C Através de técnicas de processamento de imagens que permitem destacar características específicas das roupas dos clientes. D As redes CNNs utilizam elementos de uma base histórica de imagens dos clientes para traçar perfis. E As redes CNNs são utilizadas em conjunto com especialistas que identificam as roupas dos clientes e auxiliam na classificação do perfil deles. 14/02/2024, 19:44 Redes Neurais Convolucionais https://stecine.azureedge.net/repositorio/00212ti/04164/index.html# 47/67 de segurança patrimonial, que poderia ajudar a identificar objetos usados por pessoas mal-intencionadas para cometer crimes. Redes CNN na prática Como vimos, as redes de convolução são excelentes para aplicações em projetos de visão computacional. Para podermos desenvolver projetos com elas, temos à disposição alguns recursos computacionais que nos ajudam bastante nesse processo. Aqui, vamos desenvolver um exemplo completo da arquitetura LeNet-5 usando, para isso, a linguagem de programação Python e o framework TensorFlow. Python é uma linguagem de uso geral bastante utilizada para aplicações de Ciência de Dados e Aprendizado de Máquina. Essa linguagem tem muita documentação disponível na internet e diversas comunidades ativas que participam de fóruns onde compartilham informações. Outro fator muito atrativo do Python é a disponibilidade de plataformas on-line como o Google Colab, que facilita muito o trabalho, pois nos poupa de fazer configurações locais que, normalmente, são trabalhosas. Junto com o Python, vamos utilizar o framework TensorFlow, muito utilizado para a criação de aplicações de aprendizado de máquina, pois disponibiliza diversos recursos, algoritmos e funções que nos ajudam a colocar foco no projeto e nos libera de preocupações de como implementar detalhes de tratamento de dados e dos algoritmos. Google Colab Plataforma que utilizamos para desenvolver o nosso projeto. Atenção O Tensorflow não fará escolhas do projeto por nós! Para implementar um projeto de rede de convolução, precisamos ter conhecimento sobre as camadas, os hiperparâmetros e toda a teoria que estudamos. 14/02/2024, 19:44 Redes Neurais Convolucionais https://stecine.azureedge.net/repositorio/00212ti/04164/index.html# 48/67 Implementação da arquitetura LeNet-5 Agora, vamos estudar o passo a passo de uma implementação da arquitetura LeNet-5, aplicada a reconhecer imagens na base de dados MNIST, que é uma das mais utilizadas para testes de algoritmos de aprendizado de máquina. Comentário Como estamos utilizando o Google Colab, o projeto está dividido em blocos, o que facilita a compreensão de cada etapa. Na nossa implementação,optamos por importar as bibliotecas nos blocos de programação em que elas são necessárias, pois fica mais claro entendermos a necessidade de utilizá-las. O projeto está dividido da seguinte maneira: Carregamento dos dados Fazemos a importação dos dados da base MNIST. Visualização dos dados Apresentamos as imagens que carregamos no passo anterior. Separação dos conjuntos de dados Fazemos a divisão dos dados que serão usados para treinamento, validação e teste do modelo. Preenchimento (padding) Fazemos ajustes no preenchimento dos dados. Normalização dos dados É um ajuste importante para evitar erros. Arquitetura LeNet É a implementação da arquitetura, conforme a especificação. Visualização da arquitetura do modelo 14/02/2024, 19:44 Redes Neurais Convolucionais https://stecine.azureedge.net/repositorio/00212ti/04164/index.html# 49/67 Apresentamos a arquitetura implementada. Treinamento do modelo Fazemos a implementação do treinamento do modelo com os dados que fornecemos. Avaliação do modelo Verificamos a qualidade do modelo. Predição de dados Aplicamos o modelo na prática para fazer classificações. Recuperação do modelo Recuperamos o modelo que salvamos depois do treinamento. Impressão do treinamento Mostramos como a função de erro se comportou ao longo do treinamento. Carregamento dos dados A base de dados MNIST já está disponível no Tensorflow, inclusive, com a separação dos dados para treinamento e teste. O que precisamos é importar o Tensorflow e, depois, carregar os dados. O código que implementamos para visualização dos dados é expresso por: Python 14/02/2024, 19:44 Redes Neurais Convolucionais https://stecine.azureedge.net/repositorio/00212ti/04164/index.html# 50/67 Perceba que, quando carregamos os dados, temos dois pares ordenados: um de treinamento e outro de testes. Outro ponto a se observar é que as variáveis “x_treino” e “x_teste” se referem aos dados das imagens, enquanto as variáveis “y_treino” e “y_teste” se referem aos rótulos das variáveis. Visualização dos dados Agora que já temos nossos dados carregados na memória, podemos visualizá-los para verificar se tudo aconteceu corretamente até determinado momento. Para isso, vamos utilizar a biblioteca “matplotlib.pyplot” para imprimir os dados. O código que implementamos para visualização dos dados é fornecido por: Python Logo no início do código, importamos a biblioteca “matplotlib.pyplot”. Em seguida, usamos um laço para imprimir os cinco primeiros registros do conjunto de dados de treinamento. Veja a seguir a saída do programa, onde são apresentados o rótulo e a imagem. 14/02/2024, 19:44 Redes Neurais Convolucionais https://stecine.azureedge.net/repositorio/00212ti/04164/index.html# 51/67 Cinco registros da base de treinamento. Separação dos conjuntos de dados O próximo passo consiste em organizar os dados em três subconjuntos. Veja a seguir quais são eles. Dados de treinamento São usados para o modelo extrair as características dos dados e fazer generalizações. Dados de validação São usados (ainda na fase de treinamento) para que o modelo possa se ajustar. Dados de testes São utiizados para verificarmos a qualidade do modelo para fazer predições. O código para separação dos conjuntos de dados é fornecido por: Python Logo no início do código, importamos o pacote “numpy” que faz a manipulação de vetores. A base MNIST possui um total de 70.000 registros, sendo que 60.000 são separados para treinamento e 10.000 para testes. Aqui, nós separamos os dados de treinamento em duas partes: 55.000 registros para treinamento e 5.000 para validação do modelo. 14/02/2024, 19:44 Redes Neurais Convolucionais https://stecine.azureedge.net/repositorio/00212ti/04164/index.html# 52/67 O resultado da execução do código é: Formato da Imagem: (28, 28, 1); Conjunto de Treinamento: 55000 registros; Conjunto de Validação: 5000 registros; Conjunto de Testes: 10000 registros. Preenchimento (padding) dos dados de entrada Agora, precisamos fazer um ajuste nos dados de entrada. A camada de entrada da arquitetura LeNet-5 consiste em imagens com dimensões de 32 × 32. Como vimos da execução do bloco anterior, as imagens do MNIST têm dimensões 28 × 28. Então, para aplicar a LeNet-5, precisamos preencher a entrada com zeros (0) a fim de torná-la 32 × 32. Para isso, vamos usar a função “pad” da biblioteca numpy. O código para preenchimento dos dados fica assim: Python Veja a seguir como é dado o resultado da execução do código. Informações sobre as mudanças dos dados de entrada: Conjunto de Treinamento: (55000, 32, 32, 1). Conjunto de Validação: (5000, 32, 32, 1). Conjunto de Testes: (10000, 32, 32, 1). 14/02/2024, 19:44 Redes Neurais Convolucionais https://stecine.azureedge.net/repositorio/00212ti/04164/index.html# 53/67 Normalização dos dados Os dados de entrada do MNIST estão em escalas de cinza, ou seja, vão de 0 a 255. Então vamos transformá-los para dados no intervalo de 0 a 1. Para isso, basta dividirmos os valores das variáveis por 255. O código para normalização dos dados é: Python No início do código, usamos uma função “lambda” que recebe um parâmetro “t” de entrada e retorna os valores divididos por 255. Arquitetura LeNet Até o momento, o que fizemos foi manipular os dados de entrada: carregar, visualizar, separar e fazer ajustes. Agora, vamos implementar a arquitetura da rede de convolução LeNet-5. Lembre-se de que a LeNet tem 8 camadas: 1 de entrada, 3 de convolução, 2 de aglomeração (pooling) e 2 totalmente conectadas, sendo uma delas a de saída. Como se trata de uma arquitetura de modelo sequencial, precisamos importar o pacote “Sequential” do tensorflow.keras. Em seguida, precisamos importar os pacotes para cada camada do modelo. O código que implementamos é dado por: Python 14/02/2024, 19:44 Redes Neurais Convolucionais https://stecine.azureedge.net/repositorio/00212ti/04164/index.html# 54/67 Fizemos a implementação de uma função: Ela recebe como parâmetro o nome da função de ativação que utilizamos nas camadas. Como podemos ver, cada trecho do código precedido por “modelo.add” é responsável pela implementação de uma camada. Para ficar mais claro: Conv2D No caso das camadas de convolução. AveragePooling2D No caso das camadas de aglomeração (pooling). 14/02/2024, 19:44 Redes Neurais Convolucionais https://stecine.azureedge.net/repositorio/00212ti/04164/index.html# 55/67 Dense No caso das camadas completamente conectadas. Ainda há a situação em que precisamos “vetorizar” a camada de convolução para poder se conectar com a penúltima camada completamente conectada que é dada por Flatten. Agora, vem uma parte muito importante! Precisamos lembrar que o cálculo das dimensões da saída de uma camada é dado pela fórmula: Assim, temos: Camada 1 Recebe uma imagem de dimensões 32 × 32, kernel com dimensões 5 × 5, padding igual a válido – que numericamente é igual a zero – e stride igual a 1. Portanto, temos: Camada 2 Recebe uma entrada de dimensões 28 × 28, kernel com dimensões 2 × 2, padding igual a válido e stride igual a 1. Logo: Camada 3 Recebe uma entrada de dimensões 14 × 14, kernel com dimensões 5 × 5, padding igual a válido e stride igual a 1. Então, temos: Camada 4 O = (I − K + 2P) S + 1 O1 = (32 − 5 + 2(0)) 1 + 1 = 28 o2 = (28 − 2 + 2(0)) 1 + 1 = 14 o3 = (14 − 5 + 2(0)) 1 + 1 = 10 14/02/2024, 19:44 Redes Neurais Convolucionais https://stecine.azureedge.net/repositorio/00212ti/04164/index.html# 56/67 Recebe uma entrada de dimensões 10 × 10, kernel com dimensões 2 × 2, padding igual a válido e stride igual a 1. Assim: Da camada anterior temos 400 (= 5 × 5 × 16) nós com 120 filtros. Conectamos esses 400 nós da camada anterior a 84 nós da próxima camada. Por fim, temos uma camada de saída com dez neurônios, já que os dados da base MNIST possuem dez categorias. Atenção Lembre-se de que as categorias dos dados da base MNIST se referem aos dígitos 0, 1, 2,3, 4, 5, 6, 7, 8 e 9. Visualização da arquitetura do modelo Agora, podemos visualizar a arquitetura da nossa implementação do LeNet. Primeiro, precisamos chamar a função “arquitetura_LeNet_5” e, em seguida, solicitar ao Python que queremos ver um resumo do modelo. O código é dado por: Python Perceba que passamos o nome ‘relu’ como parâmetro para a função que vai montar a arquitetura do modelo. O resultado da execução do código é dado pela imagem a seguir. O4 = (10 − 2 + 2(0)) 2 + 1 = 5 14/02/2024, 19:44 Redes Neurais Convolucionais https://stecine.azureedge.net/repositorio/00212ti/04164/index.html# 57/67 Arquitetura da nossa implementação do LeNet-5. Treinamento do modelo Depois de estruturar a arquitetura do modelo, podemos iniciar a etapa de treinamento. Para isso, precisamos compilar o modelo por meio da função “compile” e, em seguida, treiná-lo com a função “fit”. A seguir, apresentamos o código de compilação e treinamento do modelo. Python Vamos destacar alguns aspectos da implementação: Os parâmetros de compilação: da função de perda, otimizador e a métrica para validação do modelo; No treinamento do modelo, guardamos o histórico para analisá- lo posteriormente; 14/02/2024, 19:44 Redes Neurais Convolucionais https://stecine.azureedge.net/repositorio/00212ti/04164/index.html# 58/67 E, ainda, salvamos o modelo para poder carregá-lo em outro momento. Atenção Salvar o modelo é importante quando queremos armazenar os dados de treinamento. A saída do treinamento é dada por: Atenção Perceba algumas informações muito importantes em cada iteração da saída: época, valor da função de perda e valor da métrica de avaliação, no caso, acurácia. Avaliação do modelo Já fizemos o treinamento do modelo, então, precisamos testá-lo. Para isso, vamos chamar a função “evaluate”, passando para ela os valores de teste como parâmetros. O código que implementamos é dado por: Python 14/02/2024, 19:44 Redes Neurais Convolucionais https://stecine.azureedge.net/repositorio/00212ti/04164/index.html# 59/67 Após a execução do código, obtemos: Isso significa que o modelo tem um erro de “0.0845” e acurácia de “0.9742”. Um modelo de boa qualidade vai produzir um erro próximo de zero e acurácia perto de um. Predição de dados O nosso modelo já está treinado e fizemos uma avaliação da qualidade dele. Agora, queremos ver na prática como ele faz a predição dos dados. Vamos usar um dos dados que separamos para fazer o teste e ver como o modelo se comporta. O código que fizemos é dado por: Python 14/02/2024, 19:44 Redes Neurais Convolucionais https://stecine.azureedge.net/repositorio/00212ti/04164/index.html# 60/67 Como resultado, o programa mostra o vetor de predição a seguir. Perceba que o maior valor do vetor é o da posição 4: 9.9373490e-01. Quer dizer que o modelo tem maior confiança nessa categoria para fazer a predição da entrada. Atenção Devemos notar que cada posição do vetor corresponde a uma categoria: posição 1 corresponde ao dígito 0, posição 2 corresponde ao dígito 1 e assim por diante. Na imagem a seguir, mostramos a entrada que fornecemos para o modelo e como o modelo fez a predição. 14/02/2024, 19:44 Redes Neurais Convolucionais https://stecine.azureedge.net/repositorio/00212ti/04164/index.html# 61/67 Imagem usada para teste. Recuperação do modelo Aqui, mostramos como recuperar o modelo que salvamos anteriormente. Para isso, carregamos o modelo com o nome que usamos para salvá-lo. Veja o nosso código. Python Impressão do treinamento Já treinamos e testamos nosso modelo. Agora, vamos visualizar como ele se comportou ao longo do treinamento. Para isso, vamos trabalhar com a variável “historico_treinamento” que utilizamos para guardar as informações do histórico do modelo durante a fase de treinamento. Veja, a seguir, o nosso código. Python 14/02/2024, 19:44 Redes Neurais Convolucionais https://stecine.azureedge.net/repositorio/00212ti/04164/index.html# 62/67 Vamos detalhar um pouco mais os dados que escolhemos exibir: val_loss: É o valor da função de custo para os dados de validação cruzada. Perda (loss) É o valor da função de custo para os dados de treinamento. Veja a seguir o resultado da execução do programa. Gráfico do histórico de treinamento. Redes de convolução na prática Um exemplo prático de redes de convolução usando a linguagem de programação Python e o framework Tensorflow é apresentado no vídeo a seguir. 14/02/2024, 19:44 Redes Neurais Convolucionais https://stecine.azureedge.net/repositorio/00212ti/04164/index.html# 63/67 Falta pouco para atingir seus objetivos. Vamos praticar alguns conceitos? Questão 1 Existem muitos pontos que devem ser considerados no desenvolvimento de um projeto que utiliza redes de convolução (CNN). Um dos fatores que facilita esse processo é o uso de frameworks, como o Tensorflow. Em relação ao desenvolvimento de um projeto de redes CNN, selecione a opção correta: Parabéns! A alternativa C está correta. A O principal aspecto que deve ser considerado em um projeto de redes CNN é a organização das camadas. B Frameworks como o Tensorflow evitam que o desenvolvedor tenha que se preocupar com a organização dos dados. C É fundamental fazer a separação dos dados para avaliar a qualidade do modelo. D Existe uma proporção ideal para a separação dos dados de treinamento e testes. E As redes CNN possuem estruturas rígidas quanto à sua arquitetura, o que reduz as possibilidades de erro ao longo do desenvolvimento. 14/02/2024, 19:44 Redes Neurais Convolucionais https://stecine.azureedge.net/repositorio/00212ti/04164/index.html# 64/67 As redes de convolução, como as demais redes neurais, são modelos probabilísticos. Portanto, para que possam extrair as características dos dados de treinamento e fazer generalizações, é preciso separar os dados para treinamento, validação e teste. Questão 2 As funções de ativação são um dos aspectos de um projeto que utiliza redes de convolução (CNN). O framework Tensorflow já disponibiliza essas funções, o que facilita bastante o trabalho de desenvolvimento. Em relação às funções de ativação de redes CNN, selecione a opção correta. Parabéns! A alternativa E está correta. As redes de convolução podem utilizar funções ReLu e tanh ao longo do modelo, porém, na camada de saída, precisamos utilizar a função de ativação SoftMax. O que vai definir qual é a melhor função que deve ser aplicada é o contexto em que aplicamos o modelo. A As funções de ativação devem ser escolhidas levando em consideração as camadas completamente conectadas do modelo. B A escolha da função de ativação está relacionada aos hiperparâmetros do modelo, como stride e padding. C As camadas das redes CNN estão habilitadas para trabalhar apenas com determinadas funções de ativação. D As funções de ativação não influenciam o tempo de treinamento de um modelo. E As camadas ao longo do modelo podem combinar funções ReLU e tanh. 14/02/2024, 19:44 Redes Neurais Convolucionais https://stecine.azureedge.net/repositorio/00212ti/04164/index.html# 65/67 Considerações �nais Ao longo do texto, abordamos conceitos sobre as redes neurais de convolução e vimos aspectos sobre suas camadas de convolução, preenchimento (padding), aglomeração (pooling) e totalmente conectadas. Em especial, estudamos como as operações de convolução, os filtros e outros hiperparâmetros são importantes para o funcionamento dos modelos. Focamos ainda as arquiteturas das redes CNN, que, ao longo dos anos, evoluíram para modelos mais elaborados com taxas de erros muito baixas, tornando mais evidente o potencial de aplicação dessas redes para visão computacional. Por fim, abordamos um exemplo prático com o uso da linguagem de programação Python e o framework Tensorflow para implementar a arquitetura LeNet-5. É importante tentar executar os exemplos e fazer neles modificações para estudar o comportamento do modelo. Como estudamos
Compartilhar