AI-For-Beginners/translations/id/lessons/4-ComputerVision/08-TransferLearning
leestott 2555d81160 🌐 Update translations via Co-op Translator 2025-08-29 16:53:37 +00:00
..
lab 🌐 Update translations via Co-op Translator 2025-08-29 16:53:37 +00:00
AdversarialCat_TF.ipynb 🌐 Update translations via Co-op Translator 2025-08-29 16:53:37 +00:00
Dropout.ipynb 🌐 Update translations via Co-op Translator 2025-08-29 16:53:37 +00:00
README.md 🌐 Update translations via Co-op Translator 2025-08-29 16:53:37 +00:00
TrainingTricks.md 🌐 Update translations via Co-op Translator 2025-08-29 16:53:37 +00:00
TransferLearningPyTorch.ipynb 🌐 Update translations via Co-op Translator 2025-08-29 16:53:37 +00:00
TransferLearningTF.ipynb 🌐 Update translations via Co-op Translator 2025-08-29 16:53:37 +00:00

README.md

Jaringan Pra-Latih dan Transfer Learning

Melatih CNN dapat memakan banyak waktu, dan membutuhkan banyak data untuk melakukannya. Namun, sebagian besar waktu dihabiskan untuk mempelajari filter tingkat rendah terbaik yang dapat digunakan jaringan untuk mengekstrak pola dari gambar. Pertanyaan alami muncul - bisakah kita menggunakan jaringan neural yang telah dilatih pada satu dataset dan menyesuaikannya untuk mengklasifikasikan gambar yang berbeda tanpa memerlukan proses pelatihan penuh?

Kuis Pra-Kuliah

Pendekatan ini disebut transfer learning, karena kita mentransfer sebagian pengetahuan dari satu model jaringan neural ke model lainnya. Dalam transfer learning, kita biasanya memulai dengan model pra-latih, yang telah dilatih pada dataset gambar besar, seperti ImageNet. Model-model tersebut sudah cukup baik dalam mengekstrak berbagai fitur dari gambar umum, dan dalam banyak kasus, hanya dengan membangun pengklasifikasi di atas fitur-fitur yang diekstrak tersebut dapat memberikan hasil yang baik.

Transfer Learning adalah istilah yang juga ditemukan di bidang akademik lain, seperti Pendidikan. Istilah ini merujuk pada proses mengambil pengetahuan dari satu domain dan menerapkannya ke domain lain.

Model Pra-Latih sebagai Ekstraktor Fitur

Jaringan konvolusi yang telah kita bahas di bagian sebelumnya terdiri dari sejumlah lapisan, yang masing-masing dirancang untuk mengekstrak beberapa fitur dari gambar, mulai dari kombinasi piksel tingkat rendah (seperti garis horizontal/vertikal atau goresan), hingga kombinasi fitur tingkat tinggi, seperti mata api. Jika kita melatih CNN pada dataset gambar yang cukup besar dan beragam, jaringan tersebut seharusnya dapat mempelajari cara mengekstrak fitur-fitur umum tersebut.

Baik Keras maupun PyTorch memiliki fungsi untuk memuat bobot jaringan neural pra-latih dengan mudah untuk beberapa arsitektur umum, yang sebagian besar dilatih pada gambar ImageNet. Model yang paling sering digunakan dijelaskan pada halaman Arsitektur CNN dari pelajaran sebelumnya. Secara khusus, Anda mungkin ingin mempertimbangkan menggunakan salah satu dari berikut ini:

  • VGG-16/VGG-19 adalah model yang relatif sederhana tetapi tetap memberikan akurasi yang baik. Sering kali menggunakan VGG sebagai percobaan pertama adalah pilihan yang baik untuk melihat bagaimana transfer learning bekerja.
  • ResNet adalah keluarga model yang diusulkan oleh Microsoft Research pada tahun 2015. Model ini memiliki lebih banyak lapisan, sehingga membutuhkan lebih banyak sumber daya.
  • MobileNet adalah keluarga model dengan ukuran yang lebih kecil, cocok untuk perangkat seluler. Gunakan model ini jika Anda memiliki keterbatasan sumber daya dan dapat mengorbankan sedikit akurasi.

Berikut adalah contoh fitur yang diekstrak dari gambar kucing oleh jaringan VGG-16:

Fitur yang diekstrak oleh VGG-16

Dataset Kucing vs. Anjing

Dalam contoh ini, kita akan menggunakan dataset Kucing dan Anjing, yang sangat mirip dengan skenario klasifikasi gambar di dunia nyata.

✍️ Latihan: Transfer Learning

Mari kita lihat transfer learning dalam aksi di notebook berikut:

Visualisasi Kucing Adversarial

Jaringan neural pra-latih mengandung berbagai pola di dalam "otaknya", termasuk konsep tentang kucing ideal (serta anjing ideal, zebra ideal, dll.). Akan menarik untuk memvisualisasikan gambar ini. Namun, ini tidak sederhana, karena pola-pola tersebut tersebar di seluruh bobot jaringan, dan juga terorganisir dalam struktur hierarkis.

Salah satu pendekatan yang dapat kita lakukan adalah memulai dengan gambar acak, lalu mencoba menggunakan teknik optimisasi gradient descent untuk menyesuaikan gambar tersebut sedemikian rupa sehingga jaringan mulai menganggapnya sebagai kucing.

Loop Optimisasi Gambar

Namun, jika kita melakukan ini, kita akan mendapatkan sesuatu yang sangat mirip dengan noise acak. Hal ini terjadi karena ada banyak cara untuk membuat jaringan berpikir bahwa gambar input adalah kucing, termasuk beberapa yang tidak masuk akal secara visual. Meskipun gambar-gambar tersebut mengandung banyak pola khas kucing, tidak ada yang membatasi mereka untuk menjadi visual yang khas.

Untuk meningkatkan hasilnya, kita dapat menambahkan istilah lain ke dalam fungsi loss, yang disebut variation loss. Ini adalah metrik yang menunjukkan seberapa mirip piksel-piksel yang berdekatan dalam gambar. Meminimalkan variation loss membuat gambar lebih halus, dan menghilangkan noise - sehingga mengungkapkan pola yang lebih menarik secara visual. Berikut adalah contoh gambar "ideal" seperti itu, yang diklasifikasikan sebagai kucing dan zebra dengan probabilitas tinggi:

Kucing Ideal Zebra Ideal
Kucing Ideal Zebra Ideal

Pendekatan serupa dapat digunakan untuk melakukan apa yang disebut serangan adversarial pada jaringan neural. Misalkan kita ingin mengelabui jaringan neural dan membuat gambar anjing terlihat seperti kucing. Jika kita mengambil gambar anjing, yang dikenali oleh jaringan sebagai anjing, kita kemudian dapat sedikit menyesuaikannya menggunakan optimisasi gradient descent, hingga jaringan mulai mengklasifikasikannya sebagai kucing:

Gambar Anjing Gambar anjing yang diklasifikasikan sebagai kucing
Gambar asli anjing Gambar anjing yang diklasifikasikan sebagai kucing

Lihat kode untuk mereproduksi hasil di atas di notebook berikut:

Kesimpulan

Dengan menggunakan transfer learning, Anda dapat dengan cepat membuat pengklasifikasi untuk tugas klasifikasi objek khusus dan mencapai akurasi tinggi. Anda dapat melihat bahwa tugas yang lebih kompleks yang kita selesaikan sekarang membutuhkan daya komputasi yang lebih tinggi, dan tidak dapat dengan mudah diselesaikan di CPU. Pada unit berikutnya, kita akan mencoba menggunakan implementasi yang lebih ringan untuk melatih model yang sama menggunakan sumber daya komputasi yang lebih rendah, yang menghasilkan akurasi yang hanya sedikit lebih rendah.

🚀 Tantangan

Dalam notebook yang menyertai, terdapat catatan di bagian bawah tentang bagaimana transfer knowledge bekerja paling baik dengan data pelatihan yang agak mirip (mungkin jenis hewan baru). Lakukan beberapa eksperimen dengan jenis gambar yang benar-benar baru untuk melihat seberapa baik atau buruk model transfer knowledge Anda bekerja.

Kuis Pasca-Kuliah

Tinjauan & Studi Mandiri

Baca TrainingTricks.md untuk memperdalam pengetahuan Anda tentang cara lain melatih model Anda.

Tugas

Dalam lab ini, kita akan menggunakan dataset hewan peliharaan Oxford-IIIT yang nyata dengan 35 ras kucing dan anjing, dan kita akan membangun pengklasifikasi transfer learning.


Penafian:
Dokumen ini telah diterjemahkan menggunakan layanan penerjemahan AI Co-op Translator. Meskipun kami berupaya untuk memberikan hasil yang akurat, harap diperhatikan bahwa terjemahan otomatis mungkin mengandung kesalahan atau ketidakakuratan. Dokumen asli dalam bahasa aslinya harus dianggap sebagai sumber yang berwenang. Untuk informasi yang bersifat kritis, disarankan menggunakan jasa penerjemahan manusia profesional. Kami tidak bertanggung jawab atas kesalahpahaman atau penafsiran yang keliru yang timbul dari penggunaan terjemahan ini.