Utilizzo di VGG16 e ResNet50 come modelli di base
keras.applications.VGG16(weights='imagenet', include_top=False), aggiunta di una testa personalizzata
Utilizzo di VGG16 e ResNet50 come modelli di base è una lezione Learn AI with Python gratuita su CoddyKit. Questa è la lezione 2 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento Learn AI with Python, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso Learn AI with Python include 4 lezioni in totale.
Modulo Keras Applications
tf.keras.applications include decine di architetture pre-addestrate che è possibile scaricare con una sola riga. Due modelli classici sono VGG16, una struttura semplice e profonda di convoluzioni 3x3, e ResNet50, che usa connessioni residuali ed è più profonda e accurata.
Caricare VGG16 come base
Carichi VGG16 con i pesi ImageNet, ma senza la testa del classificatore, così da poterne collegare una personalizzata.
from tensorflow.keras.applications import VGG16
base = VGG16(
weights="imagenet", # download pretrained weights
include_top=False, # drop the 1000-class classifier
input_shape=(224, 224, 3) # standard ImageNet input size
)Capire gli argomenti
weights="imagenet": carica i pesi pre-addestrati invece di quelli casuali.include_top=False: rimuove il classificatore dense originale, così da poterne aggiungere uno personalizzato.input_shape=(224,224,3): altezza, larghezza e 3 canali RGB.
È l'impostazione include_top=False a rendere il modello riutilizzabile per un nuovo task.
Bloccare la base
Imposti base.trainable = False affinché i pesi convoluzionali pre-addestrati restino fissi durante la prima fase di addestramento. Soltanto la nuova testa imparerà.
base.trainable = False
print(len(base.trainable_weights)) # -> 0 when frozenGlobalAveragePooling2D
La base restituisce una mappa di feature 3D come (7, 7, 512). GlobalAveragePooling2D calcola la media di ogni canale sulla relativa griglia spaziale, riducendolo a un singolo vettore per canale, in questo caso di lunghezza 512.
Sostituisce un enorme Flatten + Dense, riducendo drasticamente il numero di parametri e l'overfitting.
from tensorflow.keras.layers import GlobalAveragePooling2D
# (batch, 7, 7, 512) -> (batch, 512)
pooled = GlobalAveragePooling2D()(base.output)Aggiungere la testa di output Dense
Colleghi un layer Dense dimensionato in base al numero di classi. Utilizzi softmax per problemi multiclass o sigmoid per problemi binari.
from tensorflow.keras import layers, Model
x = base.output
x = layers.GlobalAveragePooling2D()(x)
x = layers.Dropout(0.3)(x)
outputs = layers.Dense(10, activation="softmax")(x)
model = Model(inputs=base.input, outputs=outputs)Passare a ResNet50
ResNet50 utilizza la stessa API. Le sue connessioni residuali, dette anche connessioni skip, consentono di addestrare reti molto più profonde senza che i gradienti svaniscano; in genere offre un'accuratezza su ImageNet superiore a quella di VGG16 a una velocità simile.
from tensorflow.keras.applications import ResNet50
base = ResNet50(
weights="imagenet",
include_top=False,
input_shape=(224, 224, 3)
)
base.trainable = FalseVGG16 o ResNet50
- VGG16: circa 138 milioni di parametri, semplice struttura uniforme di convoluzioni 3x3, elevato consumo di memoria, facile da capire.
- ResNet50: circa 25 milioni di parametri, blocchi residuali, più profonda, in genere più accurata e più leggera.
Per la maggior parte dei moderni task di transfer learning, ResNet50 è la scelta predefinita più solida.
Allineare il preprocessing
Ogni famiglia dispone del proprio preprocess_input. VGG16 sottrae i valori medi RGB, mentre ResNet50 utilizza un ridimensionamento simile in stile caffe. Importi sempre quello corrispondente alla base scelta.
from tensorflow.keras.applications.resnet50 import preprocess_input
x = preprocess_input(image_batch) # required for correct resultsCompilare il modello
Con la base bloccata, compili e addestri la testa con un optimizer normale.
model.compile(
optimizer="adam",
loss="categorical_crossentropy",
metrics=["accuracy"]
)
model.fit(train_ds, validation_data=val_ds, epochs=10)Esaminare l'architettura
Chiami model.summary() per verificare che la base sia bloccata, con un numero elevato di Non-trainable params, e che sia addestrabile soltanto la testa. Questo controllo di coerenza permette di individuare tempestivamente gli errori di configurazione.
model.summary()
# Look at "Trainable params" vs "Non-trainable params"Verifica rapida
Verifichi la propria capacità di creare un modello di transfer learning in Keras.
Riepilogo
Ha caricato VGG16 e ResNet50 con weights="imagenet", include_top=False e input_shape=(224,224,3), ha bloccato la base con base.trainable=False, ha eseguito il pooling delle feature con GlobalAveragePooling2D e ha aggiunto una testa di output Dense.
ResNet50 è la scelta predefinita più solida. Prossimo argomento: sbloccare i layer per eseguire il fine-tuning.
Impara Python con un tutor IA — gratis
Scrivi ed esegui vero codice nel tuo browser, ricevi aiuto istantaneo da un tutor IA disponibile 24/7, e riprendi da dove hai lasciato sul web o nell'app.
- Corsi
- 53
- Lezioni
- 225
Domande Frequenti
La lezione «Utilizzo di VGG16 e ResNet50 come modelli di base» è gratuita?
Sì — il testo completo di «Utilizzo di VGG16 e ResNet50 come modelli di base» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso Learn AI with Python, passa a CoddyKit PRO. Il corso Learn AI with Python include 4 lezioni in totale.
Cosa imparerò in «Utilizzo di VGG16 e ResNet50 come modelli di base»?
keras.applications.VGG16(weights='imagenet', include_top=False), aggiunta di una testa personalizzata Eserciti Learn AI with Python con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.
Ho bisogno di esperienza per iniziare Learn AI with Python?
Non è richiesta alcuna esperienza precedente. Learn AI with Python su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 2 di 4.
Quanto tempo richiede la lezione «Utilizzo di VGG16 e ResNet50 come modelli di base»?
La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.
Posso scrivere ed eseguire codice in questa lezione Learn AI with Python?
Sì. Ogni lezione Learn AI with Python include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.
Tutte le lezioni di questo corso
- Concetti e strategie del transfer learning
- Utilizzo di VGG16 e ResNet50 come modelli di base
- Fine-tuning: scongelamento e riaddestramento
- MobileNet ed EfficientNet per il deployment su dispositivi edge