Este artigo foi publicado como parte do Data Science Blogathon
Oi, pessoal! Neste blog, Vou discutir tudo sobre classificação de imagens.
Nos últimos anos, O Deep Learning provou ser uma ferramenta muito poderosa devido à sua capacidade de lidar com grandes quantidades de dados. O uso de camadas ocultas excede as técnicas tradicionais, especialmente para reconhecimento de padrões. Uma das redes neurais profundas mais populares são as redes neurais convolucionais (CNN).

UMA convolucional neuronal vermelhoRedes Neurais Convolucionais (CNN) são um tipo de arquitetura de rede neural projetada especialmente para processamento de dados com uma estrutura de grade, como fotos. Eles usam camadas de convolução para extrair recursos hierárquicos, o que os torna especialmente eficazes em tarefas de reconhecimento e classificação de padrões. Graças à sua capacidade de aprender com grandes volumes de dados, As CNNs revolucionaram campos como a visão computacional.. (CNN) é um tipo de Neuronal vermelhoAs redes neurais são modelos computacionais inspirados no funcionamento do cérebro humano. Eles usam estruturas conhecidas como neurônios artificiais para processar e aprender com os dados. Essas redes são fundamentais no campo da inteligência artificial, permitindo avanços significativos em tarefas como reconhecimento de imagem, Processamento de linguagem natural e previsão de séries temporais, entre outros. Sua capacidade de aprender padrões complexos os torna ferramentas poderosas.. artificial (ANN) usado no reconhecimento e processamento de imagem, que é especialmente projetado para processar dados (píxeis).

Fonte da imagem: Google.com
Antes de seguir em frente, devemos entender o que é a rede neural. Vamos lá…
Neuronal vermelho:
Uma rede neural é construída a partir de vários nós interconectados chamados “Neurônios”. Os neurônios são organizados em camada de entradao "camada de entrada" refere-se ao nível inicial em um processo de análise de dados ou em arquiteturas de redes neurais. Sua principal função é receber e processar informações brutas antes de serem transformadas por camadas subsequentes. No contexto do aprendizado de máquina, A configuração adequada da camada de entrada é crucial para garantir a eficácia do modelo e otimizar seu desempenho em tarefas específicas...., Camada oculta e Camada de saídao "Camada de saída" é um conceito utilizado no campo da tecnologia da informação e design de sistemas. Refere-se à última camada de um modelo ou arquitetura de software que é responsável por apresentar os resultados ao usuário final. Essa camada é crucial para a experiência do usuário, uma vez que permite a interação direta com o sistema e a visualização dos dados processados..... A camada de entrada corresponde aos nossos preditores / características e a camada de saída para nossas variáveis de resposta.

Fonte da imagem: Google.com
Perceptron Multicamadas (MLP):
A rede neural com uma camada de entrada, uma ou mais camadas ocultas e uma camada de saída é chamada perceptron multicamadas (MLP). MLP é inventado por Frank Rosenblatt No ano de 1957. MLP mostrado abaixo tem 5 nós de entrada, 5 nós ocultos com duas camadas ocultas e um nóO Nodo é uma plataforma digital que facilita a conexão entre profissionais e empresas em busca de talentos. Através de um sistema intuitivo, permite que os usuários criem perfis, Compartilhar experiências e acessar oportunidades de trabalho. Seu foco em colaboração e networking torna o Nodo uma ferramenta valiosa para quem deseja expandir sua rede profissional e encontrar projetos que se alinhem com suas habilidades e objetivos.... Saída

Fonte da imagem: Google.com
Como esta rede neural?
– Os neurônios da camada de entrada recebem informações dos dados que eles processam e distribuem para o camadas escondidas.
– Essa informação, na sua vez, é processado por camadas ocultas e passado para a saída. neurônios.
– As informações desta rede neural artificial (ANN) é processado em termos de um função de despertarA função de ativação é um componente chave em redes neurais, uma vez que determina a saída de um neurônio com base em sua entrada. Seu principal objetivo é introduzir não linearidades no modelo, permitindo que você aprenda padrões complexos em dados. Existem várias funções de ativação, como o sigmóide, ReLU e tanh, cada um com características particulares que afetam o desempenho do modelo em diferentes aplicações..... Esta função realmente imita os neurônios do cérebro.
– Cada neurônio contém um valor de funções de gatilho e um valor limiar.
– o valor limiar é o valor mínimo que a entrada deve ter para ser ativada.
– A tarefa do neurônio é realizar uma soma ponderada de todos os sinais de entrada e aplicar a função de ativação na soma antes de passá-la para a próxima camada. (escondido ou sair).
Vamos entender o que é a soma de ponderação.
Digamos que temos valores 𝑎1, 𝑎2, 𝑎3, 𝑎4 para entrada e pesos como 𝑤1, 𝑤2, 𝑤3, 𝑤4 como entrada para um dos neurônios da camada oculta, digamos 𝑛𝑗, então a soma ponderada é representada como
𝑆𝑗 = σ 𝑖 = 1to4 𝑤𝑖 * 𝑎𝑖 + 𝑏𝑗
onde 𝑏𝑗: viés devido ao nó

Fonte da imagem: Google.com
Quais são as funções de ativação?
Essas funções são necessárias para introduzir uma não linearidade na rede. A função de gatilho é aplicada e a saída é passada para a próxima camada.
* Possíveis funções *
• Sigmoide: função sigmóide é diferenciável. Produz uma saída entre 0 e 1.
• Tangente hiperbólica: A tangente hiperbólica também é diferenciável. Isso produz uma saída entre -1 e 1.
• retomarA função de ativação do ReLU (Unidade linear retificada) É amplamente utilizado em redes neurais devido à sua simplicidade e eficácia. Definido como ( f(x) = máx.(0, x) ), O ReLU permite que os neurônios disparem apenas quando a entrada é positiva, o que ajuda a mitigar o problema do desbotamento do gradiente. Seu uso demonstrou melhorar o desempenho em várias tarefas de aprendizado profundo, tornando o ReLU uma opção...: ReLU é a função mais popular. ReLU é amplamente utilizado no aprendizado profundoAqui está o caminho de aprendizado para dominar o aprendizado profundo em, Uma subdisciplina da inteligência artificial, depende de redes neurais artificiais para analisar e processar grandes volumes de dados. Essa técnica permite que as máquinas aprendam padrões e executem tarefas complexas, como reconhecimento de fala e visão computacional. Sua capacidade de melhorar continuamente à medida que mais dados são fornecidos a ele o torna uma ferramenta fundamental em vários setores, da saúde....
• Softmax: a Função SoftMaxA função softmax é uma ferramenta matemática usada no campo do aprendizado de máquina, especialmente em redes neurais. Converte um vetor de valor em uma distribuição de probabilidade, Atribuindo probabilidades a cada classe em problemas de classificação múltipla. Sua fórmula normaliza as saídas, garantir que a soma de todas as probabilidades seja igual a um, permitindo que os resultados sejam interpretados de forma eficaz. É essencial na otimização de... Usado para problemas de classificação multiclasse. É uma generalização da função sigmóide. Ele também produz uma saída entre 0 e 1
Agora, vamos com o nosso tema da CNN …
CNN:
Agora imagine que há uma foto de um pássaro, e você deseja identificá-lo se é realmente um pássaro ou outra coisa. A primeira coisa que você precisa fazer é alimentar os pixels da imagem na forma de matrizes para a camada de entrada da rede neural (Redes MLP são usadas para classificar essas coisas). Camadas ocultas realizam extração de recursos realizando vários cálculos e operações. Existem várias camadas ocultas, como convolução, o ReLU e a camada de agrupamento que executa a extração de recursos de sua imagem. Então, Finalmente, há uma camada totalmente conectada que você pode ver que identifica o objeto exato na imagem. Você pode entender muito facilmente no seguinte figura"Figura" é um termo usado em vários contextos, Da arte à anatomia. No campo artístico, refere-se à representação de formas humanas ou animais em esculturas e pinturas. Em anatomia, designa a forma e a estrutura do corpo. O que mais, em matemática, "figura" está relacionado a formas geométricas. Sua versatilidade o torna um conceito fundamental em várias disciplinas....:

Fonte da imagem: Google.com
Convolução:-
A operação de convolução envolve operações aritméticas de matriz e cada imagem é representada como um array de valores (píxeis).
Vamos entender o exemplo:
a = [2,5,8,4,7,9]
b = [1,2,3]
Na operação de convolução, matrizes são multiplicadas uma a uma em termos de elementos, e o produto é agrupado ou somado para criar uma nova matriz que representa uma * b.
Os primeiros três elementos da matriz uma agora multiplique pelos elementos da matriz B. O produto é adicionado para obter o resultado e é armazenado em uma nova matriz de uma * b.
Este processo permanece contínuo até que a operação seja concluída..

Fonte da imagem: Google.com
Agrupamento:
Depois da convolução, existe outra operação chamada agrupamento. Então, Na corrente, convolução e agrupamento são aplicados sequencialmente nos dados, a fim de extrair algumas características dos dados. Após as camadas sequenciais agrupadas e convolucionais, os dados são achatados
em uma rede neural de feedback, também chamada de perceptron multicamadas.

Fonte da imagem: Google.com
Até aqui, vimos conceitos que são importantes para o nosso modelo de construção CNN.
Agora vamos seguir em frente para ver um estudo de caso da CNN.
1) Aqui vamos importar as bibliotecas necessárias que são necessárias para executar tarefas cnn.
import NumPy as np
%matplotlib inline
import matplotlib.image as mpimg
import matplotlib.pyplot as plt
import TensorFlow as tf
tf.compat.v1.set_random_seed(2019)
2) Aqui exigimos o seguinte código para formar o modelo CNN
model = tf.keras.models.Sequential([
tf.keras.layers.Conv2D(16,(3,3),ativação = "retomar" , input_shape = (180,180,3)) ,
tf.keras.layers.MaxPooling2D(2,2),
tf.keras.layers.Conv2D(32,(3,3),ativação = "retomar") ,
tf.keras.layers.MaxPooling2D(2,2),
tf.keras.layers.Conv2D(64,(3,3),ativação = "retomar") ,
tf.keras.layers.MaxPooling2D(2,2),
tf.keras.layers.Conv2D(128,(3,3),ativação = "retomar"),
tf.keras.layers.MaxPooling2D(2,2),
tf.keras.layers.Flatten(),
tf.hard.layers.Dense(550,ativação ="retomar"), #Adding the Hidden layer
tf.keras.layers.Dropout(0.1,semente = 2019),
tf.hard.layers.Dense(400,ativação ="retomar"),
tf.keras.layers.Dropout(0.3,semente = 2019),
tf.hard.layers.Dense(300,ativação ="retomar"),
tf.keras.layers.Dropout(0.4,semente = 2019),
tf.hard.layers.Dense(200,ativação ="retomar"),
tf.keras.layers.Dropout(0.2,semente = 2019),
tf.hard.layers.Dense(5,ativação = "softmax") #Adicionando a camada de saída
])
Uma imagem complicada pode ser muito grande e, portanto, encolhe sem perder características ou padrões, para que o agrupamento seja feito.
Aqui, Criar uma rede neural é inicializar a rede usando o modelo sequencial Keras.
Achatar (): o achatamento transforma uma matriz bidimensional de recursos em um vetor de características.
3) Agora vamos olhar para um resumo do modelo da CNN
model.summary()
Você imprimirá a seguinte saída
Modelo: "sequencial" _________________________________________________________________ Camada (modelo) Parâmetros de forma de saída # ================================================================= conv2d (Conv2D) (Nenhum, 178, 178, 16) 448 _________________________________________________________________ max_pooling2d (MaxPooling2D) (Nenhum, 89, 89, 16) 0 _________________________________________________________________ conv2d_1 (Conv2D) (Nenhum, 87, 87, 32) 4640 _________________________________________________________________ max_pooling2d_1 (MaxPooling2 (Nenhum, 43, 43, 32) 0 _________________________________________________________________ conv2d_2 (Conv2D) (Nenhum, 41, 41, 64) 18496 _________________________________________________________________ max_pooling2d_2 (MaxPooling2 (Nenhum, 20, 20, 64) 0 _________________________________________________________________ conv2d_3 (Conv2D) (Nenhum, 18, 18, 128) 73856 _________________________________________________________________ max_pooling2d_3 (MaxPooling2 (Nenhum, 9, 9, 128) 0 _________________________________________________________________ flatten (Achatar) (Nenhum, 10368) 0 _________________________________________________________________ dense (Denso) (Nenhum, 550) 5702950 _________________________________________________________________ dropout (Cair fora) (Nenhum, 550) 0 _________________________________________________________________ dense_1 (Denso) (Nenhum, 400) 220400 _________________________________________________________________ dropout_1 (Cair fora) (Nenhum, 400) 0 _________________________________________________________________ denso_2 (Denso) (Nenhum, 300) 120300 _________________________________________________________________ dropout_2 (Cair fora) (Nenhum, 300) 0 _________________________________________________________________ denso_3 (Denso) (Nenhum, 200) 60200 _________________________________________________________________ dropout_3 (Cair fora) (Nenhum, 200) 0 _________________________________________________________________ dense_4 (Denso) (Nenhum, 5) 1005 ========================================================== =============== Params totais: 6,202,295 Parâmetros treináveis: 6,202,295 Params não treináveis: 0
4) Então agora somos obrigados a especificar otimizadores.
de tensorflow.keras.optimizers importar RMSprop,SGD,Adam
adam=Adam(lr=0,001)
model.compile(otimizador ="Adão", perda ="categorical_crossentropy", metrics = ['acc'])
O otimizador é usado para reduzir o custo calculado por entropia cruzada
o Função de perdaA função de perda é uma ferramenta fundamental no aprendizado de máquina que quantifica a discrepância entre as previsões do modelo e os valores reais. Seu objetivo é orientar o processo de treinamento, minimizando essa diferença, permitindo assim que o modelo aprenda de forma mais eficaz. Existem diferentes tipos de funções de perda, como erro quadrático médio e entropia cruzada, cada um adequado para diferentes tarefas e... se utiliza para calcular el error.
O termo métricas é usado para representar a eficiência do modelo.
5) Nesta etapa, veremos como configurar o diretório de dados e gerar dados de imagem.
bs=30 #Setting batch size train_dir = "D:/Conjuntos de dados de ciência de dados/imagem/FastFood/trem/" #Setting training directory validation_dir = "D:/Data Science/Image Datasets/FastFood/test/" #Setting testing directory from tensorflow.keras.preprocessing.image import ImageDataGenerator # Todas as imagens serão redimensionadas por 1./255. train_datagen = ImageDataGenerator( reescalou = 1.0/255. ) test_datagen = ImageDataGenerator( reescalou = 1.0/255. ) # Vaze imagens de treinamento em lotes de 20 using train_datagen generator #Flow_from_directory function lets the classifier directly identify the labels from the name of the directories the image lies in train_generator=train_datagen.flow_from_directory(train_dir,batch_size=bs,class_mode="categórico",target_size=(180,180)) # Imagens de validação de fluxo em lotes de 20 using test_datagen generator validation_generator = test_datagen.flow_from_directory(validation_dir, batch_size=bs, class_mode="categórico", target_size=(180,180))
La salida será:
Fundar 1465 imagens pertencentes a 5 Classes. Fundar 893 imagens pertencentes a 5 Classes.
6) Paso final del modelo de ajuste.
history = model.fit(train_generator,
validation_data=validation_generator,
steps_per_epoch=150 // Bs,
épocas=30,
validation_steps=50 // Bs,
verboso = 2)
La salida será:
Época 1/30 5/5 - 4s - perda: 0.8625 - acc: 0.6933 - val_loss: 1.1741 - val_acc: 0.5000 Época 2/30 5/5 - 3s - perda: 0.7539 - acc: 0.7467 - val_loss: 1.2036 - val_acc: 0.5333 Época 3/30 5/5 - 3s - perda: 0.7829 - acc: 0.7400 - val_loss: 1.2483 - val_acc: 0.5667 Época 4/30 5/5 - 3s - perda: 0.6823 - acc: 0.7867 - val_loss: 1.3290 - val_acc: 0.4333 Época 5/30 5/5 - 3s - perda: 0.6892 - acc: 0.7800 - val_loss: 1.6482 - val_acc: 0.4333 Época 6/30 5/5 - 3s - perda: 0.7903 - acc: 0.7467 - val_loss: 1.0440 - val_acc: 0.6333 Época 7/30 5/5 - 3s - perda: 0.5731 - acc: 0.8267 - val_loss: 1.5226 - val_acc: 0.5000 Época 8/30 5/5 - 3s - perda: 0.5949 - acc: 0.8333 - val_loss: 0.9984 - val_acc: 0.6667 Época 9/30 5/5 - 3s - perda: 0.6162 - acc: 0.8069 - val_loss: 1.1490 - val_acc: 0.5667 Época 10/30 5/5 - 3s - perda: 0.7509 - acc: 0.7600 - val_loss: 1.3168 - val_acc: 0.5000 Época 11/30 5/5 - 4s - perda: 0.6180 - acc: 0.7862 - val_loss: 1.1918 - val_acc: 0.7000 Época 12/30 5/5 - 3s - perda: 0.4936 - acc: 0.8467 - val_loss: 1.0488 - val_acc: 0.6333 Época 13/30 5/5 - 3s - perda: 0.4290 - acc: 0.8400 - val_loss: 0.9400 - val_acc: 0.6667 Época 14/30 5/5 - 3s - perda: 0.4205 - acc: 0.8533 - val_loss: 1.0716 - val_acc: 0.7000 Época 15/30 5/5 - 4s - perda: 0.5750 - acc: 0.8067 - val_loss: 1.2055 - val_acc: 0.6000 Época 16/30 5/5 - 4s - perda: 0.4080 - acc: 0.8533 - val_loss: 1.5014 - val_acc: 0.6667 Época 17/30 5/5 - 3s - perda: 0.3686 - acc: 0.8467 - val_loss: 1.0441 - val_acc: 0.5667 Época 18/30 5/5 - 3s - perda: 0.5474 - acc: 0.8067 - val_loss: 0.9662 - val_acc: 0.7333 Época 19/30 5/5 - 3s - perda: 0.5646 - acc: 0.8138 - val_loss: 0.9151 - val_acc: 0.7000 Época 20/30 5/5 - 4s - perda: 0.3579 - acc: 0.8800 - val_loss: 1.4184 - val_acc: 0.5667 Época 21/30 5/5 - 3s - perda: 0.3714 - acc: 0.8800 - val_loss: 2.0762 - val_acc: 0.6333 Época 22/30 5/5 - 3s - perda: 0.3654 - acc: 0.8933 - val_loss: 1.8273 - val_acc: 0.5667 Época 23/30 5/5 - 3s - perda: 0.3845 - acc: 0.8933 - val_loss: 1.0199 - val_acc: 0.7333 Época 24/30 5/5 - 3s - perda: 0.3356 - acc: 0.9000 - val_loss: 0.5168 - val_acc: 0.8333 Época 25/30 5/5 - 3s - perda: 0.3612 - acc: 0.8667 - val_loss: 1.7924 - val_acc: 0.5667 Época 26/30 5/5 - 3s - perda: 0.3075 - acc: 0.8867 - val_loss: 1.0720 - val_acc: 0.6667 Época 27/30 5/5 - 3s - perda: 0.2820 - acc: 0.9400 - val_loss: 2.2798 - val_acc: 0.5667 Época 28/30 5/5 - 3s - perda: 0.3606 - acc: 0.8621 - val_loss: 1.2423 - val_acc: 0.8000 Época 29/30 5/5 - 3s - perda: 0.2630 - acc: 0.9000 - val_loss: 1.4235 - val_acc: 0.6333 Época 30/30 5/5 - 3s - perda: 0.3790 - acc: 0.9000 - val_loss: 0.6173 - val_acc: 0.8000
La función anterior entrena la red neuronal utilizando el conjunto de TreinamentoO treinamento é um processo sistemático projetado para melhorar as habilidades, Conhecimento ou habilidades físicas. É aplicado em várias áreas, como esporte, Educação e desenvolvimento profissional. Um programa de treinamento eficaz inclui planejamento de metas, prática regular e avaliação do progresso. A adaptação às necessidades individuais e a motivação são fatores-chave para alcançar resultados bem-sucedidos e sustentáveis em qualquer disciplina.... y evalúa su rendimiento en el conjunto de prueba. As funções retornam duas métricas para cada época 'acc’ y ‘val_acc’ quais são a precisão das previsões obtidas no conjunto de treinamento e a precisão alcançada no conjunto de teste, respectivamente.
conclusão:
Por tanto, vemos que foi cumprido com precisão suficiente. Porém, qualquer um pode executar este modelo aumentando o número de épocas ou qualquer outro parâmetro.
Espero que tenha gostado do meu artigo. Compartilhe com os seus amigos, colegas.
A mídia mostrada neste artigo não é propriedade da DataPeaker e é usada a critério do autor.



