Learn AI with Python · Pelajaran

Menggunakan VGG16 dan ResNet50 sebagai Model Dasar

keras.applications.VGG16(weights='imagenet', include_top=False), menambahkan bagian kepala khusus.

Pelajaran 2 dari 413 langkah

Menggunakan VGG16 dan ResNet50 sebagai Model Dasar adalah pelajaran Learn AI with Python gratis di CoddyKit. Ini adalah pelajaran 2 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar Learn AI with Python, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus Learn AI with Python mencakup 4 pelajaran total.

Modul Aplikasi Keras

tf.keras.applications menyediakan puluhan arsitektur yang telah dilatih sebelumnya dan dapat Anda unduh dalam satu baris. Dua model klasik adalah VGG16 (tumpukan konvolusi 3x3 yang sederhana dan dalam) dan ResNet50 (koneksi residual, lebih dalam dan lebih akurat).

Memuat VGG16 sebagai Basis

Muat VGG16 dengan bobot ImageNet, tetapi tanpa kepala classifier miliknya, sehingga Anda dapat memasang kepala sendiri.

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
)

Memahami Argumen

  • weights="imagenet": muat bobot yang telah dilatih sebelumnya, bukan bobot acak.
  • include_top=False: hapus classifier padat asli sehingga Anda dapat menambahkan classifier milik Anda.
  • input_shape=(224,224,3): tinggi, lebar, dan 3 kanal RGB.

Pengaturan include_top=False membuat model dapat digunakan kembali untuk tugas baru.

Membekukan Basis

Tetapkan base.trainable = False agar bobot konvolusional yang telah dilatih sebelumnya tetap tidak berubah selama fase pelatihan pertama. Hanya kepala baru Anda yang akan belajar.

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

GlobalAveragePooling2D

Basis menghasilkan peta fitur 3D seperti (7, 7, 512). GlobalAveragePooling2D merata-ratakan setiap kanal pada kisi spasialnya, lalu mengubahnya menjadi satu vektor per kanal, yang di sini berukuran 512.

Lapisan ini menggantikan Flatten + Dense yang sangat besar, sehingga memangkas jumlah parameter secara drastis dan mengurangi penyesuaian berlebihan.

from tensorflow.keras.layers import GlobalAveragePooling2D

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

Menambahkan Kepala Keluaran Dense

Pasang lapisan Dense dengan ukuran yang sesuai dengan jumlah kelas Anda. Gunakan softmax untuk banyak kelas atau sigmoid untuk biner.

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)

Beralih ke ResNet50

ResNet50 menggunakan antarmuka pemrograman yang sama. Koneksi residual (lompatan) memungkinkannya dilatih jauh lebih dalam tanpa gradien yang menghilang, biasanya dengan akurasi ImageNet yang lebih tinggi daripada VGG16 pada kecepatan yang serupa.

from tensorflow.keras.applications import ResNet50

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

VGG16 vs ResNet50

  • VGG16: sekitar 138 juta parameter, tumpukan 3x3 yang seragam dan sederhana, boros memori, mudah dipahami.
  • ResNet50: sekitar 25 juta parameter, blok residual, lebih dalam, biasanya lebih akurat dan lebih hemat.

Untuk sebagian besar tugas pembelajaran transfer modern, ResNet50 merupakan pilihan bawaan yang lebih unggul.

Menyesuaikan Prapemrosesan

Setiap keluarga memiliki preprocess_input sendiri. VGG16 mengurangi nilai rata-rata RGB, sedangkan ResNet50 menggunakan penskalaan bergaya caffe yang serupa. Selalu impor yang sesuai dengan basis Anda.

from tensorflow.keras.applications.resnet50 import preprocess_input

x = preprocess_input(image_batch)  # required for correct results

Mengompilasi Model

Dengan basis yang dibekukan, lakukan compile dan latih kepala menggunakan pengoptimal biasa.

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

Memeriksa Arsitektur

Panggil model.summary() untuk memastikan basis telah dibekukan (jumlah parameter yang tidak dapat dilatih besar) dan hanya kepala yang dapat dilatih. Pemeriksaan dasar ini membantu menemukan kesalahan penyiapan sejak awal.

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

Uji Singkat

Periksa pemahaman Anda tentang pembuatan model pembelajaran transfer di Keras.

Ringkasan

Anda telah memuat VGG16 dan ResNet50 dengan weights="imagenet", include_top=False, dan input_shape=(224,224,3), membekukan basis dengan base.trainable=False, mengumpulkan fitur dengan GlobalAveragePooling2D, serta menambahkan kepala keluaran Dense.

ResNet50 merupakan pilihan bawaan yang lebih unggul. Berikutnya: mencabut pembekuan lapisan untuk melakukan penyetelan halus.

Gratis untuk memulai

Belajar Python dengan tutor AI — gratis

Tulis dan jalankan kode asli di browser kamu, dapatkan bantuan instan dari tutor AI 24/7, dan lanjutkan di mana kamu tinggalkan di web atau aplikasi.

Kursus
53
Pelajaran
225

Pertanyaan yang Sering Diajukan

Apakah pelajaran “Menggunakan VGG16 dan ResNet50 sebagai Model Dasar” gratis?

Ya — teks lengkap “Menggunakan VGG16 dan ResNet50 sebagai Model Dasar” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus Learn AI with Python, upgrade ke CoddyKit PRO. Kursus Learn AI with Python mencakup 4 pelajaran total.

Apa yang akan aku pelajari di “Menggunakan VGG16 dan ResNet50 sebagai Model Dasar”?

keras.applications.VGG16(weights='imagenet', include_top=False), menambahkan bagian kepala khusus. Kamu berlatih Learn AI with Python dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.

Apakah aku perlu pengalaman untuk memulai Learn AI with Python?

Tidak diperlukan pengalaman sebelumnya. Learn AI with Python di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 2 dari 4.

Berapa lama pelajaran “Menggunakan VGG16 dan ResNet50 sebagai Model Dasar” memakan waktu?

Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.

Bisakah aku menulis dan menjalankan kode dalam pelajaran Learn AI with Python ini?

Ya. Setiap pelajaran Learn AI with Python menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.

Semua pelajaran dalam kursus ini

  1. Konsep dan Strategi Pembelajaran Transfer
  2. Menggunakan VGG16 dan ResNet50 sebagai Model Dasar
  3. Penyetelan Halus: Membuka Pembekuan dan Melatih Ulang
  4. MobileNet dan EfficientNet untuk Penerapan di Perangkat Tepi
← Kembali ke Learn AI with Python