Blog FQSoft

Just Simple Code Documentation

Python

Python - Alur membuat CNN (Deep Leraning)

Faiq Himmah 01 November 2025

Ringkasan Singkat

Membangun model CNN untuk klasifikasi/deteksi gambar umumnya melewati tahapan: kumpulkan dataset → validasi & pra-proses gambar → pilih arsitektur / transfer learning → siapkan lingkungan (TensorFlow & GPU) → buat skrip training + checkpoint & visualisasi → evaluasi & test unit pada gambar baru. Di bawah ini setiap langkah dijabarkan dengan detail praktis dan contoh kode

Secara umum berikut langkah-langkah penting

  1. Mengumpulkan dataset
  2. validasi gambar
  3. Memilih Arsitektur
  4. Install tensorflow
  5. Membuat file .py untuk training dan tuning

Langkah 1 Mengumpulkan Dataset

Dataset bisa dibuat sendiri (foto dari kamera, smartphone) atau diambil dari penyedia publik (Kaggle, Google Dataset Search, ImageNet subset, dsb.). Pastikan label jelas, konsisten, dan jumlah data per kelas seimbang bila memungkinkan. Jaga lisensi dataset (jika ambil dari luar), dan penyebaran (privacy/face blur) bila diperlukan.

Bagi dataset menjadi dua yaitu 80% data training dan 20% data validation. contoh direktori :

project/
  dataset/
    train/
      cat/
      dog/
    val/
    test/

Langkah 2 Validasi Gambar

Sebelum training, periksa apakah ada file gambar yang korup atau tidak bisa dibuka. Gambar korup bisa menyebabkan crash saat pipeline tf.data atau ImageDataGenerator. sebelum itu install package PIL Contoh skrip :

from PIL import Image
import os

def deep_check_images(folder_path):
    for root, dirs, files in os.walk(folder_path):
        for file in files:
            if file.lower().endswith(('.jpg', '.jpeg', '.png')):
                img_path = os.path.join(root, file)
                try:
                    with Image.open(img_path) as img:
                        img.load()  # baca seluruh isi gambar
                except Exception as e:
                    print(f"Rusak: {img_path} ({e})")
                    os.remove(img_path)

deep_check_images("dataset/train")
deep_check_images("dataset/val")

def force_reencode_images(folder_path):
    for root, dirs, files in os.walk(folder_path):
        for file in files:
            if file.lower().endswith(('.jpg', '.jpeg', '.png')):
                img_path = os.path.join(root, file)
                try:
                    with Image.open(img_path) as img:
                        img = img.convert('RGB')
                        img.save(img_path, 'JPEG', quality=95)
                except:
                    os.remove(img_path)

force_reencode_images("dataset/train")
force_reencode_images("dataset/val")

Langkah 3 Memilih Arsitektur

Transfer learning mempercepat training dan meningkatkan performa bila datamu terbatas. Pilih model berdasarkan trade-off akurasi vs resource.

Contoh pilihan:

  1. MobileNet / MobileNetV2 / EfficientNet-lite: ringan, cocok untuk edge/HP, cepat.
  2. ResNet50: lebih berat, akurasi umumnya lebih baik tapi butuh GPU kuat dan lebih banyak memori.
  3. Custom small CNN: jika dataset sangat kecil atau inference di perangkat sangat terbatas.

Tips:

  1. Coba MobileNetV2 atau EfficientNetB0 dulu untuk baseline.
  2. Jika punya banyak data dan GPU kuat, coba ResNet50 / EfficientNet-B3 dan fine-tune lebih banyak layer.
  3. Gunakan include_top=False untuk mengganti classifier head sesuai jumlah kelasmu.

Langkah 4 Install TensorFlow & pastikan GPU NVIDIA terdeteksi (opsional tapi sangat disarankan)

Training di CPU bisa sangat lambat terutama untuk ResNet50. Jika ada GPU NVIDIA, install CUDA + cuDNN sesuai versi TensorFlow agar GPU dapat digunakan.

Verifikasi GPU jalankan file .py dengan kode ini :

import tensorflow as tf
print(tf.__version__)
print("GPUs:", tf.config.list_physical_devices('GPU'))

Jika muncul nama GPU berarti sudah terhubung

Untuk memilih versi CUDA dan cuDNN yang kompatibel dengan bisa jalankan perintah ini di terminal

nvidia-smi

Langkah 5 Membuat file .py untuk training & tuning

Skrip training harus reproducible: menyertakan pengaturan hyperparameter, callback checkpoint untuk resume training, log untuk visualisasi (mis. TensorBoard), dan opsi untuk fine-tuning.

Contoh skrip menggunakan MobileNetV2 disini

Langkah 6 Buat file .py untuk test unit (uji model pada gambar baru)

Contoh Test Unit disini

Langkah 7 Contoh folder akhir & file penting

project/
  dataset/
  notebooks/                # exploratory analysis
  models/
    checkpoints/
    best_model.h5
  scripts/
    validate_images.py
    train.py
    model_builder.py
    predict.py
  logs/                     # tensorboard logs
  requirements.txt
  README.md
python CNN Deep Learning Alur langkah