Lär Er AI med Python · Lektion

Använda VGG16 och ResNet50 som basmodeller

keras.applications.VGG16(weights='imagenet', include_top=False), lägga till ett anpassat huvud.

Lektion 2 av 413 steg

Använda VGG16 och ResNet50 som basmodeller är en gratis lektion i Lär Er AI med Python på CoddyKit. Detta är lektion 2 av 4. Du kan läsa vilka 3 lektioner som helst i den här lärvägen kostnadsfritt i sin helhet – därefter låser CoddyKit PRO upp alla lektioner, plus praktisk övning med en inbyggd kodredigerare och en AI-lärare dygnet runt. Den ingår i lärvägen för Lär Er AI med Python, och Era framsteg synkroniseras mellan webben och CoddyKit-appen. Kursen i Lär Er AI med Python innehåller totalt 4 lektioner.

Modulen Keras Applications

tf.keras.applications innehåller dussintals förtränade arkitekturer som du kan hämta med en enda rad. Två klassiker är VGG16 (en enkel, djup stapel av 3x3-konvolutioner) och ResNet50 (residual connections, djupare och mer träffsäker).

Läsa in VGG16 som basmodell

Läs in VGG16 med ImageNet-vikter men utan klassificeringshuvudet, så att du kan koppla till ett eget.

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
)

Förstå argumenten

  • weights="imagenet": läs in förtränade vikter i stället för slumpmässiga.
  • include_top=False: ta bort den ursprungliga täta klassificeraren så att du kan lägga till din egen.
  • input_shape=(224,224,3): höjd, bredd och 3 RGB-kanaler.

Det är inställningen include_top=False som gör modellen återanvändbar för en ny uppgift.

Frysa basmodellen

Ange base.trainable = False så att de förtränade konvolutionsvikterna förblir oförändrade under den första träningsfasen. Endast ditt nya huvud kommer att lära sig.

base.trainable = False
print(len(base.trainable_weights))  # -> 0 when frozen

GlobalAveragePooling2D

Basmodellen producerar en tredimensionell särdragskarta, till exempel (7, 7, 512). GlobalAveragePooling2D beräknar medelvärdet för varje kanal över dess rumsliga rutnät och reducerar det till en enda vektor per kanal, här med längden 512.

Det ersätter en enorm kombination av Flatten och Dense, vilket drastiskt minskar antalet parametrar och reducerar överanpassning.

from tensorflow.keras.layers import GlobalAveragePooling2D

# (batch, 7, 7, 512) -> (batch, 512)
pooled = GlobalAveragePooling2D()(base.output)

Lägga till ett tätt utdatahuvud

Koppla till ett Dense-lager med en storlek som motsvarar antalet klasser. Använd softmax för flerk lassificering eller sigmoid för binär klassificering.

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)

Byta till ResNet50

ResNet50 använder samma API. Dess residual connections (skip connections) gör att den kan tränas mycket djupare utan att gradienterna försvinner, och ger vanligtvis högre träffsäkerhet på ImageNet än VGG16 vid liknande hastighet.

from tensorflow.keras.applications import ResNet50

base = ResNet50(
    weights="imagenet",
    include_top=False,
    input_shape=(224, 224, 3)
)
base.trainable = False

VGG16 jämfört med ResNet50

  • VGG16: cirka 138 miljoner parametrar, enkel och enhetlig stapel av 3x3-lager, minneskrävande och lätt att förstå.
  • ResNet50: cirka 25 miljoner parametrar, residualblock, djupare, vanligtvis högre träffsäkerhet och mindre resurskrävande.

För de flesta moderna uppgifter inom transfer learning är ResNet50 det starkare standardvalet.

Matcha förbehandlingen

Varje modellfamilj har sin egen preprocess_input. VGG16 subtraherar genomsnittliga RGB-värden, medan ResNet50 använder en liknande skalning i caffe-stil. Importera alltid den som motsvarar din basmodell.

from tensorflow.keras.applications.resnet50 import preprocess_input

x = preprocess_input(image_batch)  # required for correct results

Kompilera modellen

När basmodellen är fryst kompilerar och tränar du huvudet med en normal optimerare.

model.compile(
    optimizer="adam",
    loss="categorical_crossentropy",
    metrics=["accuracy"]
)
model.fit(train_ds, validation_data=val_ds, epochs=10)

Granska arkitekturen

Anropa model.summary() för att bekräfta att basmodellen är fryst (antalet icke-träningsbara parametrar är stort) och att endast huvudet kan tränas. Denna rimlighetskontroll upptäcker konfigurationsfel tidigt.

model.summary()
# Look at "Trainable params" vs "Non-trainable params"

Snabbtest

Kontrollera hur väl du behärskar att bygga en modell med transfer learning i Keras.

Sammanfattning

Du läste in VGG16 och ResNet50 med weights="imagenet", include_top=False och input_shape=(224,224,3), frös basmodellen med base.trainable=False, poolade särdrag med GlobalAveragePooling2D och lade till ett tätt utdatahuvud.

ResNet50 är det starkare standardvalet. Nästa steg är att låsa upp lager för fine-tuning.

Gratis att börja

Lär dig Python med en AI-lärare – gratis

Skriv och kör riktig kod i webbläsaren, få omedelbar hjälp av en AI-lärare dygnet runt och fortsätt där du slutade – på webben eller i appen.

Kurser
53
Lektioner
225

Vanliga frågor

Är lektionen ”Använda VGG16 och ResNet50 som basmodeller” gratis?

Ja – du kan läsa vilka 3 lektioner som helst i lärvägen Lär Er AI med Python, inklusive ”Använda VGG16 och ResNet50 som basmodeller”, kostnadsfritt i sin helhet här på webben. Därefter låser CoddyKit PRO upp alla lektioner, plus interaktiv övning med en inbyggd kodredigerare och en AI-lärare dygnet runt. Kursen i Lär Er AI med Python innehåller totalt 4 lektioner.

Vad lär jag mig i ”Använda VGG16 och ResNet50 som basmodeller”?

keras.applications.VGG16(weights='imagenet', include_top=False), lägga till ett anpassat huvud. Ni övar på Lär Er AI med Python med praktisk kod som körs direkt i webbläsaren, medan en AI-handledare som är tillgänglig dygnet runt svarar på Era frågor under lektionen.

Behöver jag någon erfarenhet för att börja lära mig Lär Er AI med Python?

Du behöver inga förkunskaper. Utbildningen i Lär Er AI med Python på CoddyKit är upplagd för allt från nybörjare till avancerade elever, så att du kan börja här eller från början och gå fram i din egen takt. Detta är lektion 2 av 4.

Hur lång tid tar lektionen ”Använda VGG16 och ResNet50 som basmodeller”?

De flesta CoddyKit-lektioner tar cirka 5–10 minuter. Varje lektion är kort och interaktiv, så att du gör stadiga framsteg och kan fortsätta precis där du slutade – på webben eller i appen.

Kan jag skriva och köra kod i den här Lär Er AI med Python-lektionen?

Ja. Varje Lär Er AI med Python-lektion innehåller en inbyggd kodredigerare, så att du kan skriva och köra riktig kod direkt i webbläsaren och få omedelbar AI-feedback – utan lokal installation.

Alla lektioner i den här kursen

  1. Koncept och strategier för transfer learning
  2. Använda VGG16 och ResNet50 som basmodeller
  3. Finjustering: tina upp och träna om
  4. MobileNet och EfficientNet för edge-distribution
← Tillbaka till Lär Er AI med Python