
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.
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:
| Kelas | Deskripsi | Jumlah Citra |
|---|---|---|
| Positive | Permukaan retak | 20.000 |
| Negative | Permukaan utuh/aman | 20.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:
| Parameter | Nilai |
|---|---|
| Input Size | 128 × 128 piksel |
| Base Model | MobileNetV2 (Frozen weights) |
| Custom Head | GlobalAveragePooling2D → Dropout(0.2) → Dense(1, Sigmoid) |
| Optimizer | Adam (Learning Rate: 0.0005) |
| Loss Function | Binary 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.

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.
| Kelas | Precision | Recall | F1-Score | Support |
|---|---|---|---|---|
| Negative (Aman) | 1.00 | 1.00 | 1.00 | 4080 |
| Positive (Retak) | 1.00 | 1.00 | 1.00 | 3920 |
| Accuracy | 1.00 | 8000 | ||
| Macro Avg | 1.00 | 1.00 | 1.00 | 8000 |
| Weighted Avg | 1.00 | 1.00 | 1.00 | 8000 |

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.

Teknologi yang Digunakan
| Teknologi | Kegunaan |
|---|---|
| Python 3 | Bahasa pemrograman utama |
| TensorFlow & Keras | Framework deep learning dan API model |
| MobileNetV2 | Arsitektur CNN untuk transfer learning |
| NumPy | Manipulasi array dan data numerik |
| Matplotlib & Seaborn | Visualisasi data dan metrik evaluasi |
| Scikit-learn | Evaluasi model (confusion matrix, ROC, dll) |
| Kaggle API | Mengunduh dataset dari Kaggle |
Cara Menjalankan
Google Colab (Direkomendasikan)
Cara paling mudah adalah menggunakan Google Colab — cukup klik badge di atas atau buka link berikut:
Pastikan:
- Runtime Anda diatur ke GPU (T4 GPU) untuk pelatihan yang lebih cepat.
- Siapkan API Key Kaggle Anda (
kaggle.json) untuk mengunduh dataset. - 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! ⭐