Back to blog
Jul 03, 2026
5 min read

Deteksi Keretakan Permukaan Beton Secara Otomatis Menggunakan CNN dan MobileNetV2

Membangun model Deep Learning berbasis Transfer Learning dengan arsitektur MobileNetV2 untuk mendeteksi keretakan pada permukaan beton menggunakan dataset Surface Crack Detection dari Kaggle.

Deteksi Keretakan Permukaan Beton Menggunakan CNN

Inspeksi keretakan pada infrastruktur beton — seperti jembatan, gedung, dan jalan raya — secara tradisional dilakukan secara manual oleh tenaga ahli. Proses ini memakan waktu, mahal, dan rentan terhadap kesalahan manusia. Bagaimana jika kita bisa mengotomatisasi proses ini menggunakan Deep Learning?

Dalam artikel ini, saya akan membagikan pengalaman membangun model Convolutional Neural Network (CNN) dengan arsitektur MobileNetV2 untuk mendeteksi secara otomatis keretakan pada permukaan beton. Pendekatan ini sangat relevan untuk inspeksi infrastruktur berbasis citra visual, misalnya dari drone.

Seluruh kode tersedia di repositori GitHub dan bisa langsung dijalankan di Google Colab.

Open In Colab

Tentang Dataset

Dataset yang digunakan adalah Surface Crack Detection Dataset yang bersumber dari Kaggle. Dataset ini terdiri dari 40.000 citra berukuran 227×227 piksel yang terbagi menjadi dua kelas seimbang:

KelasDeskripsiJumlah Citra
PositivePermukaan retak20.000
NegativePermukaan utuh/aman20.000

Distribusi kelas yang seimbang (50:50) sangat ideal untuk pelatihan model klasifikasi biner, karena model tidak akan bias terhadap salah satu kelas.

Arsitektur Model: Transfer Learning dengan MobileNetV2

Pendekatan yang digunakan adalah Transfer Learning — memanfaatkan model MobileNetV2 yang sudah di-pretrain pada dataset ImageNet. Arsitektur ini dipilih karena memiliki efisiensi komputasi yang tinggi (jumlah parameter sedikit), sehingga sangat ideal untuk di-deploy pada perangkat tepi (edge devices) seperti drone atau perangkat IoT.

Input (128, 128, 3)

    ├── MobileNetV2 (Pre-trained, Frozen Weights)
    │       └── Feature Extraction dari ImageNet
    ├── GlobalAveragePooling2D
    ├── Dropout (0.2)
    └── Dense (1 unit, Sigmoid)

Berikut konfigurasi pelatihan model:

ParameterNilai
Input Size128 × 128 piksel
Base ModelMobileNetV2 (Frozen weights)
Custom HeadGlobalAveragePooling2D → Dropout(0.2) → Dense(1, Sigmoid)
OptimizerAdam (Learning Rate: 0.0005)
Loss FunctionBinary Crossentropy

Mengapa MobileNetV2?

MobileNetV2 menggunakan arsitektur inverted residual blocks dengan depthwise separable convolutions, yang secara signifikan mengurangi jumlah parameter dan komputasi dibanding arsitektur CNN konvensional. Hal ini membuatnya:

  • Ringan — cocok untuk perangkat dengan sumber daya terbatas
  • Cepat — waktu inferensi yang rendah
  • Akurat — tetap mempertahankan performa tinggi meskipun arsitekturnya ringan

Hasil Evaluasi

Model dievaluasi menggunakan 8.000 citra validasi (Validation Set) yang belum pernah dilihat sebelumnya. Hasilnya menunjukkan performa klasifikasi yang sangat presisi.

Learning Curves (Akurasi & Loss)

Grafik di bawah menunjukkan proses konvergensi model selama pelatihan. Kurva Validation Loss terus menurun dan stabil mengikuti Training Loss, membuktikan bahwa model terhindar dari overfitting.

Grafik Akurasi dan Loss selama Pelatihan

Confusion Matrix & Classification Report

Untuk inspeksi infrastruktur, metrik Recall pada deteksi retakan sangat krusial — kita ingin meminimalkan False Negatives (retakan yang tidak terdeteksi). Model ini mencatatkan nilai metrik klasifikasi mendekati sempurna.

KelasPrecisionRecallF1-ScoreSupport
Negative (Aman)1.001.001.004080
Positive (Retak)1.001.001.003920
Accuracy1.008000
Macro Avg1.001.001.008000
Weighted Avg1.001.001.008000

Confusion Matrix

Catatan: Dari 8.000 data uji, model hanya keliru mendeteksi 6 gambar saja — tingkat kesalahan yang sangat rendah.

Kurva ROC & AUC

Tingkat ketangguhan (robustness) model dalam membedakan dua kelas divisualisasikan menggunakan kurva ROC. Dengan skor AUC mencapai 1.000, model diklasifikasikan sebagai perfect classifier pada kondisi lingkungan dataset ini.

Kurva ROC dan AUC

Teknologi yang Digunakan

TeknologiKegunaan
Python 3Bahasa pemrograman utama
TensorFlow & KerasFramework deep learning dan API model
MobileNetV2Arsitektur CNN untuk transfer learning
NumPyManipulasi array dan data numerik
Matplotlib & SeabornVisualisasi data dan metrik evaluasi
Scikit-learnEvaluasi model (confusion matrix, ROC, dll)
Kaggle APIMengunduh dataset dari Kaggle

Cara Menjalankan

Google Colab (Direkomendasikan)

Cara paling mudah adalah menggunakan Google Colab — cukup klik badge di atas atau buka link berikut:

Buka di Google Colab →

Pastikan:

  1. Runtime Anda diatur ke GPU (T4 GPU) untuk pelatihan yang lebih cepat.
  2. Siapkan API Key Kaggle Anda (kaggle.json) untuk mengunduh dataset.
  3. Jalankan sel kode (Run All) secara berurutan.

Lingkungan Lokal

# Clone repositori
git clone https://github.com/achmadhadikurnia/concrete-crack-detection-cnn.git
cd concrete-crack-detection-cnn

# Instal dependensi
pip install tensorflow numpy matplotlib seaborn scikit-learn kaggle

# Jalankan notebook
jupyter notebook Concrete_Crack_Detection_CNN.ipynb

Kesimpulan

Dengan memanfaatkan Transfer Learning menggunakan arsitektur MobileNetV2, kita berhasil membangun model deteksi keretakan beton yang memiliki performa near-perfect — akurasi 100% pada validation set dengan hanya 6 kesalahan dari 8.000 data uji. Pendekatan ini menunjukkan bahwa deep learning sangat potensial untuk mengotomatisasi inspeksi infrastruktur sipil.

Beberapa ide pengembangan lanjutan:

  • Deployment ke edge device — menggunakan TensorFlow Lite untuk menjalankan model pada drone atau perangkat IoT
  • Multi-class detection — membedakan jenis retakan (hairline, structural, dll)
  • Segmentasi semantik — menandai area spesifik retakan pada gambar, bukan hanya klasifikasi
  • Data augmentation — menambah variasi data pelatihan untuk meningkatkan generalisasi model

Kode sumber lengkap tersedia di GitHub. Silakan fork, modifikasi, dan bereksperimen! ⭐