Esploriamo il trasferimento di apprendimento…

Esploriamo il trasferimento di apprendimento nel mondo della bellezza e della moda

Avviciniamoci a questo utilizzando alcune domande semplici.

  1. Cosa è il trasferimento di apprendimento?
  2. Perché viene utilizzato e quali sono i suoi benefici?
  3. Esempio per questi modelli di trasferimento di apprendimento?

Cosa è il trasferimento di apprendimento?

Ci sono molte definizioni che descrivono il trasferimento di apprendimento – essenzialmente si tratta di utilizzare la conoscenza di modelli preaddestrati per risolvere nuovi problemi.

Cosa è un modello preaddestrato?

I modelli preaddestrati sono quelli che sono già stati addestrati su un grande dataset.

Perché viene utilizzato e quali sono i suoi benefici?

Ci sono numerosi benefici nel trasferimento di apprendimento. Tipicamente, quando si utilizzano reti neurali profonde, addestrare da zero richiede un dataset molto grande e una potenza di calcolo significativa. Per superare queste sfide, il trasferimento di apprendimento si rivela estremamente utile.

I benefici di questo sono…

  • Richiedendo meno potenza di calcolo, le tecniche di trasferimento di apprendimento possono essere eseguite utilizzando risorse esistenti e una piccola quantità di dati di addestramento locali. Questo approccio risparmia spazio di archiviazione e tempo di esecuzione.
  • Può essere addestrato su una piccola quantità di dati perché è stato già addestrato su un grande dataset. Utilizzando un modello del genere, è necessaria solo una piccola quantità di dati.
  • Risparmia tempo e migliora anche la velocità di apprendimento.

Per approfondire la comprensione…

Immagine dell'autore @tejasrimasina2002
Immagine dell'autore @tejasrimasina2002

In questo, abbiamo osservato che possiamo modificare i livelli densi secondo le esigenze della nostra applicazione.

Esempio per questi modelli di trasferimento di apprendimento?

Eseistono molti modelli preaddestrati, come…

  • Xception, ResNet, VGG, MobileNet, Efficient Net, AlexNet, ecc…

Puoi controllare qui

Approfondiamo un esempio di un modello di trasferimento e esploriamo la sua architettura.

Immagine dell'autore @tejasrimasina2002

I modelli VGG rappresentano un tipo di architettura CNN sviluppata da Karen Simonyan e Andrew Zisserman del Visual Geometry Group (VGG) presso l’Università di Oxford. Hanno ottenuto risultati notevoli nella sfida ImageNet. Ci sono due principali variazioni: VGG16 e VGG19. L’esperimento ha coinvolto sei modelli con diversi numeri di livelli addestrabili, e tra questi, i più popolari sono VGG16 e VGG19.

VGG è stato addestrato sul dataset ImageNet, composto da 1,2 milioni di immagini per l’addestramento su 1000 categorie.

Se esaminiamo l’architettura di VGG16…

Fonte: researchgate.net

Layer convoluzionale: il layer convoluzionale è composto da una collezione di filtri apprendibili che subiscono un’operazione di convoluzione sui dati di input. La rete può apprendere rappresentazioni gerarchiche dei dati grazie a tali filtri, che identificano le caratteristiche dell’input. Per estrarre modelli locali, come bordi o texture, ogni filtro scorre sull’input e applica un’operazione matematica per aiutare l’estrazione delle caratteristiche nelle reti neurali.

In VGG16

Tutti i strati convoluzionali hanno

  • Dimensione del filtro = 3×3
  • Passo = 1
  • Padding = same

Max Pooling: Il max-pooling riduce la quantità di dati mantenendo le informazioni essenziali per un apprendimento efficace, evitando piccole variazioni nei dati scegliendo i valori più alti da segmenti dei dati.

Il max pooling layers ha

  • Dimensione del filtro = 2×2
  • Passo = 2

Nel primo strato convoluzionale, la dimensione dell’immagine è 224x224x64. Dopo di che si riduce a 112×112

Immagine di autore @tejasrimasina2002

Per capire chiaramente l’architettura…

Immagine di autore @tejasrimasina2002

Questo riguarda Vgg16.

Per una comprensione più approfondita di come funziona VGG16, consiglio di consultare questa risorsa.

Architettura di VGGNet-16: Una guida completa

Esplora ed esegui il codice di apprendimento automatico con Kaggle Notebooks | Utilizzando dati provenienti da diverse fonti

www.kaggle.com

Trasformiamo tutto ciò in codice per una migliore comprensione.

Qui, mi piacerebbe dimostrarlo con del codice.

Qui, ho utilizzato il dataset di Mais o Granturco per un compito di classificazione che coinvolge quattro tipi di classi.

  • Marchio
  • Ruggine comune
  • Macchia fogliare grigia
  • Sano

Fonte: Immagini dal dataset Kaggle

Dataset sulle malattie delle foglie di mais o granturco

Classificazione anticipata di malattie nelle piante di mais/granturco basata su intelligenza artificiale

www.kaggle.com

Il dataset che ho usato

Ora la parte di implementazione

Passaggio 1: Importa tutte le librerie necessarie

import numpy as npfrom glob import globimport randomimport splitfoldersimport osimport matplotlib.pyplot as pltimport warningswarnings.filterwarnings("ignore", category=FutureWarning)

Ho diviso il dataset in tre parti: train, validation e test.

os.makedirs('output1')os.makedirs('output1/train')os.makedirs('output1/val')os.makedirs('output1/test')loc = "/kaggle/input/corn-or-maize-leaf-disease-dataset/data"splitfolders.ratio(loc,output ="output1",ratio = (0.80,.1,.1))

train_path = '/kaggle/working/output1/train'val_path = '/kaggle/working/output1/val'

Ridimensiona tutte le dimensioni delle immagini a 224×224.

IMAGE_SIZE = [224, 224]

Passaggio 2: Importazione del modello e delle sue librerie

import tensorflow as tf
from keras.layers import Input, Lambda, Dense, Flatten
from keras.models import Model
from keras.applications.vgg16 import VGG16
from keras.applications.vgg16 import preprocess_input
from keras.preprocessing import image
from keras.preprocessing.image import ImageDataGenerator
from keras.models import Sequential

Passaggio 3: Allenamento del modello

model = VGG16(input_shape=IMAGE_SIZE + [3], weights='imagenet', include_top=False)

IMAGE_SIZE + [3]

Qui, stiamo includendo il canale RGB perché le nostre immagini sono a colori.

weights=’imagenet’

Stiamo utilizzando i pesi da ImageNet.

include_top=False

In quanto VGG16 di solito si aspetta immagini di dimensioni 224×224, possiamo adattare diverse dimensioni di pixel includendo il livello superiore.

for layer in model.layers:
    layer.trainable = False

Questo passaggio è cruciale perché non vogliamo rieseguire il training dei livelli già allenati nel modello, quindi impostiamo a false.

In seguito, possiamo aggiungere i nostri livelli densi.

x = Flatten()(model.output)
prediction = Dense(len(folders), activation='softmax')(x)
model = Model(inputs=model.input, outputs=prediction)
model.summary()
Immagine di Autore @tejasrimasina2002

Dopo questo, compiliamo e adattiamo il modello.

model.compile(optimizer=tf.keras.optimizers.Adam(),
              loss='categorical_crossentropy',
              metrics=['accuracy'])

r = model.fit_generator(training_set, validation_data=val_set, epochs=10, steps_per_epoch=len(training_set), validation_steps=len(val_set))

Risultato

Ho ottenuto una precisione di validazione del 89,92%.

Per comprendere meglio l’implementazione di questa classificazione del granturco utilizzando il modello di trasferimento, puoi consultarla sul mio GitHub. Ho testato il modello con un’immagine ed è stato predetto correttamente.

GitHub – Tejasri-123/Corn-Classification

github.com

Nel repository GitHub troverai tutti i file inclusi in questo articolo.

Grazie per la lettura……..

Foto di Jon Tyson su Unsplash