Tutorial Image Classification dengan Transfer Learning: ResNet, EfficientNet, ViT

# Klasifikasi Gambar dengan Transfer Learning: Tutorial Komprehensif ## Daftar Isi 1. [Pendahuluan](#pendahuluan) 2. [Prasyarat](#prasyarat) 3. [Memahami Transfer Learning](#memahami-transfer-learni...

By Ruby Abdullah · · tutorial
Transfer LearningImage ClassificationResNetEfficientNetViTPyTorch

Klasifikasi Gambar dengan Transfer Learning: Tutorial Komprehensif

Daftar Isi

  • Pendahuluan
  • Prasyarat
  • Memahami Transfer Learning
  • Memilih Model Pre-trained
  • Pemuatan dan Persiapan Data
  • Fine-tuning dengan PyTorch
  • Implementasi Training Loop
  • Evaluasi dan Metrik
  • Ekspor dan Deployment Model
  • Praktik Terbaik
  • Kesimpulan

  • Pendahuluan

    Transfer learning adalah teknik machine learning di mana model yang telah dilatih pada dataset besar digunakan kembali untuk tugas yang berbeda namun terkait. Dalam computer vision, teknik ini biasanya melibatkan pengambilan model yang telah dilatih sebelumnya pada ImageNet (1,4 juta gambar, 1000 kelas) dan mengadaptasinya untuk masalah klasifikasi spesifik Anda. Pendekatan ini secara dramatis mengurangi kebutuhan data dan komputasi untuk mencapai akurasi tinggi.

    Tutorial ini mencakup alur kerja lengkap: memilih model pre-trained, menyiapkan data, fine-tuning dengan PyTorch, mengevaluasi performa, dan melakukan deployment model akhir.


    Prasyarat

    pip install torch torchvision
    

    pip install timm # PyTorch Image Models - koleksi model yang luas

    pip install albumentations # Augmentasi lanjutan

    pip install scikit-learn # Metrik evaluasi

    pip install matplotlib seaborn # Visualisasi

    pip install onnx onnxruntime # Ekspor dan deployment

    Persyaratan sistem:
    • Python 3.8 atau lebih tinggi
    • GPU dengan minimal 6 GB VRAM (untuk pelatihan), CPU cukup untuk inferensi
    • Pemahaman dasar tentang jaringan saraf dan PyTorch

    import torch
    

    import torchvision

    import timm

    print(f"PyTorch: {torch.version}")

    print(f"Torchvision: {torchvision.version}")

    print(f"CUDA: {torch.cuda.isavailable()}")

    print(f"Timm: {timm.version}")

    print(f"Model timm tersedia: {len(timm.listmodels())}")


    Memahami Transfer Learning

    Transfer learning berhasil karena layer-layer awal pada CNN mempelajari fitur universal (tepi, tekstur, pola) yang berlaku untuk hampir semua tugas vision. Hanya layer-layer akhir yang menjadi spesifik terhadap tugas tertentu.

    Ada dua strategi utama:

  • Ekstraksi Fitur (Feature Extraction): Bekukan seluruh model pre-trained dan hanya latih classification head yang baru. Metode ini cepat, membutuhkan data minimal, dan bekerja dengan baik ketika tugas Anda mirip dengan ImageNet.
  • Fine-tuning: Buka beberapa atau seluruh layer model pre-trained dan latih dengan learning rate yang rendah. Ini memungkinkan model mengadaptasi fitur-fiturnya ke domain spesifik Anda dan umumnya menghasilkan hasil yang lebih baik, terutama dengan data yang lebih banyak.
  • # Strategi 1: Ekstraksi fitur
    

    def buatekstraktorfitur(namamodel, jumlahkelas):

    """Bekukan semua layer kecuali classification head."""

    model = timm.createmodel(namamodel, pretrained=True, numclasses=jumlahkelas)

    # Bekukan semua parameter

    for param in model.parameters():

    param.requiresgrad = False

    # Buka kunci classification head

    if hasattr(model, 'classifier'):

    for param in model.classifier.parameters():

    param.requiresgrad = True

    elif hasattr(model, 'fc'):

    for param in model.fc.parameters():

    param.requiresgrad = True

    elif hasattr(model, 'head'):

    for param in model.head.parameters():

    param.requiresgrad = True

    return model

    Strategi 2: Fine-tuning penuh dengan learning rate diskriminatif

    def buatmodelfinetuning(namamodel, jumlahkelas):

    """Semua layer dapat dilatih, tetapi dengan learning rate berbeda."""

    model = timm.createmodel(namamodel, pretrained=True, numclasses=jumlahkelas)

    # Semua parameter dapat dilatih secara default

    return model

    Artikel Terkait

    Tutorial Ray Train & Ray Tune: Training Terdistribusi dan Tuning Hyperparameter

    Ray Train & Ray Tune: Pelatihan Terdistribusi dan Penyetelan Hiperparameter Sebagian besar proyek machine learning dimul...

    Tutorial Albumentations: Advanced Image Augmentation untuk Computer Vision

    Albumentations - Augmentasi Gambar Tingkat Lanjut Daftar Isi Pendahuluan Prasyarat Instalasi dan Pengaturan [Memahami Pi...

    Tutorial Reflex: Membangun Web App Full-Stack dengan Python Murni

    Reflex: Membangun Aplikasi Web Full-Stack dengan Python Murni Reflex memungkinkan Anda membangun aplikasi web lengkap — ...

    Tutorial ColBERT & RAGatouille: Late-Interaction Retrieval untuk RAG

    ColBERT & RAGatouille: Retrieval Late-Interaction untuk RAG yang Lebih Baik Sebagian besar sistem RAG mengandalkan dense...