Esploriamo il trasferimento di apprendimento…
Esploriamo il trasferimento di apprendimento nel mondo della bellezza e della moda
Avviciniamoci a questo utilizzando alcune domande semplici.
- Cosa è il trasferimento di apprendimento?
- Perché viene utilizzato e quali sono i suoi benefici?
- 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.
- 5 Migliori Strumenti AI per Parlare in Pubblico (Dicembre 2023)
- Questo articolo sull’IA esplora il piano cerebrale tramite l’apprendimento profondo avanzando le reti neurali con le intuizioni delle neuroscienze e i tutorial della libreria snnTorch in Python.
- Questo articolo sull’IA presenta un metodo rivoluzionario per modellare la dinamica delle scene 3D utilizzando video multi-vista
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…
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.
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…
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
Per capire chiaramente l’architettura…
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
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()
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……..