Usando VGG16 e ResNet50 como modelos-base
keras.applications.VGG16(weights='imagenet', include_top=False) e adição de uma cabeça personalizada.
Usando VGG16 e ResNet50 como modelos-base é uma aula grátis de Learn AI with Python no CoddyKit. Esta é a aula 2 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de Learn AI with Python, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de Learn AI with Python inclui 4 aulas no total.
Módulo de aplicações do Keras
tf.keras.applications oferece dezenas de arquiteturas pré-treinadas que você pode baixar com uma única linha. Duas opções clássicas são VGG16 (uma pilha simples e profunda de convoluções 3x3) e ResNet50 (conexões residuais, mais profunda e mais precisa).
Carregando VGG16 como base
Carregue o VGG16 com os pesos do ImageNet, mas sem sua camada classifier, para que você possa adicionar a sua.
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
)Entendendo os argumentos
weights="imagenet": carrega pesos pré-treinados em vez de pesos aleatórios.include_top=False: remove o classifier denso original para que você possa adicionar o seu.input_shape=(224,224,3): altura, largura e 3 canais RGB.
Definir include_top=False é o que torna o modelo reutilizável para uma nova tarefa.
Congelando a base
Defina base.trainable = False para que os pesos convolucionais pré-treinados permaneçam fixos durante a primeira fase de treinamento. Somente sua nova camada final aprenderá.
base.trainable = False
print(len(base.trainable_weights)) # -> 0 when frozenGlobalAveragePooling2D
A base produz um mapa de características 3D, como (7, 7, 512). GlobalAveragePooling2D calcula a média de cada canal em sua grade espacial, reduzindo-a a um único vetor por canal, neste caso com comprimento 512.
Ele substitui uma combinação enorme de Flatten + Dense, reduzindo drasticamente a quantidade de parâmetros e o sobreajuste.
from tensorflow.keras.layers import GlobalAveragePooling2D
# (batch, 7, 7, 512) -> (batch, 512)
pooled = GlobalAveragePooling2D()(base.output)Adicionando a camada de saída Dense
Adicione uma camada Dense dimensionada de acordo com o número de classes. Use softmax para várias classes ou sigmoid para classificação binária.
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)Mudando para ResNet50
ResNet50 usa a mesma interface. Suas conexões residuais (de atalho) permitem treinar uma rede muito mais profunda sem que os gradientes desapareçam, geralmente alcançando maior precisão no ImageNet do que VGG16 com velocidade semelhante.
from tensorflow.keras.applications import ResNet50
base = ResNet50(
weights="imagenet",
include_top=False,
input_shape=(224, 224, 3)
)
base.trainable = FalseVGG16 versus ResNet50
- VGG16: aproximadamente 138 milhões de parâmetros, uma pilha uniforme e simples de convoluções 3x3, grande consumo de memória e fácil compreensão.
- ResNet50: aproximadamente 25 milhões de parâmetros, blocos residuais, mais profunda, geralmente mais precisa e mais leve.
Para a maioria das tarefas modernas de aprendizagem por transferência, ResNet50 é a opção padrão mais forte.
Correspondendo o pré-processamento
Cada família tem seu próprio preprocess_input. VGG16 subtrai valores médios de RGB, enquanto ResNet50 usa uma normalização semelhante ao estilo caffe. Sempre importe aquele que corresponde à sua base.
from tensorflow.keras.applications.resnet50 import preprocess_input
x = preprocess_input(image_batch) # required for correct resultsCompilando o modelo
Com a base congelada, use compile e treine a camada final com um otimizador normal.
model.compile(
optimizer="adam",
loss="categorical_crossentropy",
metrics=["accuracy"]
)
model.fit(train_ds, validation_data=val_ds, epochs=10)Inspecionando a arquitetura
Chame model.summary() para confirmar que a base está congelada (Non-trainable params is large) e que apenas a camada final é treinável. Essa verificação detecta erros de configuração logo no início.
model.summary()
# Look at "Trainable params" vs "Non-trainable params"Verificação rápida
Verifique sua compreensão sobre como criar um modelo de aprendizagem por transferência no Keras.
Resumo
Você carregou VGG16 e ResNet50 com weights="imagenet", include_top=False e input_shape=(224,224,3), congelou a base com base.trainable=False, agrupou as características com GlobalAveragePooling2D e adicionou uma camada de saída Dense.
ResNet50 é a opção padrão mais forte. Em seguida: descongelar camadas para fazer o ajuste fino.
Perguntas Frequentes
A aula “Usando VGG16 e ResNet50 como modelos-base” é grátis?
Sim — o texto completo de “Usando VGG16 e ResNet50 como modelos-base” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de Learn AI with Python, atualize para CoddyKit PRO. O curso de Learn AI with Python inclui 4 aulas no total.
O que vou aprender em “Usando VGG16 e ResNet50 como modelos-base”?
keras.applications.VGG16(weights='imagenet', include_top=False) e adição de uma cabeça personalizada. Você pratica Learn AI with Python com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.
Preciso ter experiência prévia para começar Learn AI with Python?
Nenhuma experiência prévia é necessária. Learn AI with Python no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 2 de 4.
Quanto tempo leva a aula “Usando VGG16 e ResNet50 como modelos-base”?
A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.
Posso escrever e executar código nesta aula de Learn AI with Python?
Sim. Cada aula de Learn AI with Python inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.
Todas as aulas deste curso
- Conceitos e estratégias de aprendizado por transferência
- Usando VGG16 e ResNet50 como modelos-base
- Ajuste fino: descongelamento e retreinamento
- MobileNet e EfficientNet para implantação na borda