Articles

The Complete Beginner’s Guide to Deep Learning: convolucional Neural Networks and Image Classification

Posted by admin

“One thing that knught me early is that you don’t put into a photograph what’s going to come out. Ou vice-versa, o que sai não é o que se põe.”

― Diane Arbus

uma notificação aparece em sua rede social favorita que alguém postou uma imagem que pode tê-lo nela.está certo.é a pior foto tua de sempre.

GIF via GIPHY

Como foi que isso aconteceu?classificação da imagem!a rede neural convolucional (CNN) é uma classe de redes neurais de aprendizagem profunda. A CNNs representa um enorme avanço no reconhecimento de imagens. Eles são mais comumente usados para analisar imagens visuais e estão frequentemente trabalhando nos bastidores na classificação de imagens. Eles podem ser encontrados no núcleo de tudo, desde a marcação de fotos do Facebook para auto-condução carros. Estão a trabalhar muito nos bastidores em tudo, desde a saúde à segurança.são rápidos e eficientes. Mas como funcionam?

Imagem de classificação é o processo de tomar uma entrada (como uma imagem) e a saída de uma classe (como “gato”) ou a probabilidade de que a entrada é uma classe particular (“há 90% de probabilidade de que esta entrada é um gato”). Você pode olhar para uma foto e saber que você está olhando para uma foto terrível de seu próprio rosto, mas como um computador pode aprender a fazer isso?com uma rede neural convolucional!

uma CNN tem camadas convolucionais camadas Relucionais camadas Relucionaiscamadas Poolantes uma camada totalmente conectada

uma arquitectura clássica da CNN seria semelhante a esta:

Input ->Convolution ->ReLU ->Convolution ->ReLU ->Pooling ->
ReLU ->Convolution ->ReLU ->Pooling ->Fully Connected

A CNN convolves (not convolutes…) learned features with input data and uses 2D convolutional layers. This means that this type of network is ideal for processing 2D images. Em comparação com outros algoritmos de classificação de imagens, a CNNs realmente usa muito pouco pré-processamento. Isto significa que eles podem aprender os filtros que têm que ser feitos à mão em outros algoritmos. CNNs pode ser usado em toneladas de aplicações de reconhecimento de imagem e vídeo, classificação de imagem, e sistemas de recomendação para processamento de linguagem natural e análise de imagem médica.

CNNs são inspirados por processos biológicos. Eles são baseados em alguma pesquisa legal feita por Hubel e Wiesel na década de 60 sobre visão em gatos e macacos. O padrão de conectividade em uma CNN vem de suas pesquisas sobre a organização do córtex visual. No olho de um mamífero, neurônios individuais respondem a estímulos visuais apenas no campo receptivo, que é uma região restrita. Os campos receptivos de diferentes regiões sobrepõem-se parcialmente de modo que todo o campo de visão é coberto. É assim que funciona a CNN!

Imagem de NatWhitePhotography no

CNNs tem uma camada de entrada, e a camada de saída, e camadas ocultas. As camadas ocultas geralmente consistem em camadas convolucionais, camadas de Reflu, camadas em comum e camadas totalmente conectadas.

  • camadas convolucionais aplicam uma operação de convolução à entrada. Isto passa a informação para a próxima camada.
  • O agrupamento combina as saídas de aglomerados de neurônios em um único neurônio na próxima camada.camadas totalmente conectadas conectam cada neurônio em uma camada a cada neurônio na próxima camada.

numa camada convolucional, os neurónios só recebem entrada de uma subzona da camada anterior. Em uma camada totalmente conectada, cada neurônio recebe entrada de cada elemento da camada anterior.a CNN funciona extraindo recursos de imagens. Isso elimina a necessidade de extração manual de recursos. As características não são treinadas! São aprendidas enquanto a rede treina num conjunto de imagens. Isso faz com que modelos de aprendizagem profunda extremamente preciso para tarefas de visão de computador. CNNs aprendem a detecção de recursos através de dezenas ou centenas de camadas escondidas. Cada camada aumenta a complexidade das características aprendidas.

GIF via GIPHY

UM CNN

  • começa com uma imagem de entrada
  • aplica-se muitos filtros diferentes para criar um recurso de mapa
  • aplica-se uma ReLU função de aumentar a não-linearidade
  • aplica-se a um agrupamento de camada para cada recurso de mapa
  • achata o pool de imagens em um longo vetor.
  • introduz o vetor em uma rede neural artificial totalmente conectada.
  • processa as características através da rede. A camada final totalmente conectada fornece o “voto” das classes que estamos atrás.
  • trens through forward propagation and backpropagation for many, many epochs. Isto repete-se até Termos uma rede neural bem definida com pesos treinados e detectores de recursos.o que significa isso?

    no início deste processo, uma imagem de entrada é dividida em pixels.

    GIF via GIPHY

    Para uma imagem em preto e branco, os pixels são interpretados como um array 2D (por exemplo, 2×2 pixels). Cada pixel tem um valor entre 0 e 255. (Zero é completamente preto e 255 é completamente branco. A escala de cinza existe entre esses números. Com base nessa informação, o computador pode começar a trabalhar nos dados.

    para uma imagem de cor, este é um array 3D com uma camada azul, uma camada verde e uma camada vermelha. Cada uma dessas cores tem seu próprio valor entre 0 e 255. A cor pode ser encontrada combinando os valores em cada uma das três camadas.

    convolução

    o principal objectivo da etapa de convolução é extrair características da imagem de entrada. A camada convolucional é sempre o primeiro passo de um CNN.

    Você tem uma imagem de entrada, um detector de recursos, e um mapa de recursos. Pega no filtro e aplica-o bloco de pixels por bloco de pixels à imagem de entrada. Você faz isso através da multiplicação das matrizes.digamos que tem uma lanterna e uma folha de plástico bolha. A tua lanterna brilha uma área de 5 bolhas x 5 bolhas. Para olhar para todo o lençol, você deslizaria sua lanterna através de cada 5×5 quadrado até que você tinha visto todas as bolhas.

    Foto stux no

    A luz da lanterna aqui é o seu filtro e a região em que você está deslizando sobre é o receptivo e o campo. A luz deslizando através dos Campos receptivos é a sua lanterna convolvendo. O seu filtro é um conjunto de números (também chamados de pesos ou parâmetros). A distância a luz de sua lanterna escorrega enquanto ele viaja (você está movendo o seu filtro sobre uma linha de bolhas de cada vez? Dois?) é chamado de stride. Por exemplo, um passo de um significa que você está movendo seu filtro sobre um pixel de cada vez. A convenção é um passo de dois.

    a profundidade do filtro tem que ser a mesma que a profundidade da entrada, então se estivéssemos olhando para uma imagem de cor, a profundidade seria 3. Isso faz com que as dimensões deste filtro 5x5x3. Em cada posição, o filtro multiplica os valores no filtro com os valores originais no pixel. Esta é a multiplicação do elemento sábio. As multiplicações são resumidas, criando um único número. Se você começou no canto superior esquerdo do seu plástico bolha, este número é representativo do canto superior esquerdo. Agora você move o seu filtro para a próxima posição e repete o processo em torno do plástico bolha. O array que você acaba com é chamado de mapa de recursos ou um mapa de ativação! Você pode usar mais de um filtro, o que fará um melhor trabalho de preservar relações espaciais.

    GIF via GIPHY

    Você irá especificar parâmetros como o número de filtros, o filtro de tamanho, a arquitetura da rede, e assim por diante. A CNN aprende os valores dos filtros sozinho durante o processo de treinamento. Você tem um monte de opções que você pode trabalhar com para fazer o melhor classifier de imagem possível para a sua tarefa. Você pode optar por preencher a matriz de entrada com zeros (enchimento zero) para aplicar o filtro aos elementos limítrofes da matriz de imagem de entrada. Isso também permite que você controle o tamanho dos mapas de recursos. Adicionar enchimento zero é uma ampla convolução. Não adicionar enchimento zero é uma convolução estreita.

    isto é basicamente como detectamos imagens! Não olhamos para cada pixel de uma imagem. Nós vemos características como um chapéu, um vestido vermelho, uma tatuagem, e assim por diante. Há tanta informação a entrar nos nossos olhos em todos os momentos que não conseguimos lidar com cada pixel dela. Estamos a permitir que o nosso modelo faça a mesma coisa.

    O resultado disso é o mapa de recursos convolvidos. É menor que a imagem de entrada original. Isso torna mais fácil e mais rápido lidar com isso. Perdemos informação? Algumas, sim. Mas ao mesmo tempo, o propósito do detector de características é detectar características, que é exatamente o que isso faz.

    criamos muitos mapas de recursos para obter a nossa primeira camada convolucional. Isso nos permite identificar muitas características diferentes que o programa pode usar para aprender.

    Detectores de características podem ser configurados com valores diferentes para obter resultados diferentes. Por exemplo, um filtro pode ser aplicado que pode afiar e focar uma imagem ou borrá-la. Isso daria igual importância a todos os valores. Você pode fazer aprimoramento de borda, detecção de borda, e muito mais. Você faria isso aplicando diferentes detectores de recursos para criar diferentes mapas de recursos. O computador é capaz de determinar quais filtros fazem mais sentido e aplicá-los.

    O objectivo principal aqui é encontrar funcionalidades na sua imagem, colocá-las num mapa de funcionalidades e ainda preservar a relação espacial entre pixels. Isso é importante para que os pixels não fiquem confusos.vamos visualizar isto!

    diga olá ao meu amiguinho:

    Photo by Kirgiz03 on

    We’re going to use this guy for our input image.

    We’ll make him black and white

    Let’s define and visualize our filters

    import numpy as npfilter_vals = np.array(, , , ])print('Filter shape: ', filter_vals.shape)

    Filter shape: (4, 4)

    e podemos ver:

    Filter 1: 



    ]

    Aqui está uma visualização de nossos quatro filtros

    Agora vamos definir uma convolucionais camada (estou amando PyTorch agora, isso é o que estamos usando aqui.)

    vamos ver

    Net(
    (conv): Conv2d(1, 4, kernel_size=(4, 4), stride=(1, 1), bias=False)
    )

    Adicionar um pouco mais de código

    em Seguida, um pouco mais

    E podemos visualizar a saída de um convolucionais camada antes de um ReLu função de ativação é aplicada!

    Agora vamos criar um kernel personalizado usando um operador de Sobel como um filtro de detecção de bordas. O filtro Sobel é muito comumente usado na detecção de bordas. Ele faz um bom trabalho de encontrar padrões de intensidade em uma imagem. Aplicar um filtro Sobel a uma imagem é uma maneira de tomar uma aproximação da derivada da imagem separadamente na direção x – ou y -.

    vamos converter o nosso pouco cara para tons de cinza para a filtragem

    gray = cv2.cvtColor(image, cv2.COLOR_RGB2GRAY)plt.imshow(gray, cmap='gray')

    Aqui vamos nós!

    confira a matemática? Dê uma olhada na introdução às redes neurais convolucionais por Jianxin Wu

    camada ReLU

    a camada ReLU (unidade linear retificada) é mais um passo para a nossa camada de convolução. Você está aplicando uma função de ativação em seus mapas de recursos para aumentar a não linearidade na rede. Isto é porque as próprias imagens são altamente não-lineares! Ele remove valores negativos de um mapa de ativação, definindo-os para zero.convolução é uma operação linear com coisas como multiplicação e adição de matriz sábia de elementos. Os dados do mundo real que queremos que a CNN Aprenda não serão lineares. Podemos explicar isso com uma operação como a ReLU. Você pode usar outras operações como tanh ou sigmoid. ReLU, no entanto, é uma escolha popular porque pode treinar a rede mais rápido, sem qualquer penalidade maior para a precisão da generalização.

    confira C.-C. Jay Kuo entendendo redes neurais convolucionais com um modelo matemático.queres ir mais fundo? Tenta o Kaiming He, et al. Mergulhar profundamente em retificadores: superando o desempenho de nível humano na classificação ImageNet.

    Se precisar de um pouco mais de informação sobre as bases absolutas das funções de activação, pode encontrar isso aqui!

    Aqui está como nosso amiguinho está cuidando de uma função de ativação de ReLU gira todos os valores negativos de pixels preto

    viz_layer(activated_layer)

Related Post

Leave A Comment