Kursus
Convolutional neural networks menggerakkan beberapa kemampuan AI paling mengesankan saat ini, mulai dari pengenalan wajah di smartphone hingga deteksi tumor dalam pencitraan medis.
Dalam tutorial ini, saya membahas apa itu CNN, cara kerjanya, komponen utamanya, strategi melawan overfitting, serta kerangka kerja paling populer untuk membangunnya.
Untuk praktik langsung dengan deep learning, lihat kursus Introduction to Deep Learning in Python dari DataCamp.
Ringkasnya
- Convolutional neural network (CNN) adalah arsitektur deep learning yang dirancang untuk tugas seperti klasifikasi gambar, deteksi objek, dan segmentasi.
- CNN memiliki empat komponen kunci: convolutional layer (ekstraksi fitur), fungsi aktivasi seperti ReLU (non-linearitas), pooling layer (reduksi dimensi), dan fully connected layer (klasifikasi).
- Desainnya terinspirasi oleh struktur hierarkis korteks visual manusia.
- Overfitting adalah tantangan besar; teknik seperti dropout, batch normalization, augmentasi data, dan early stopping membantu menguranginya.
- TensorFlow, PyTorch, dan Keras adalah kerangka kerja paling populer untuk membangun CNN.
Apa itu Convolutional Neural Network (CNN)?
Convolutional Neural Network (CNN), juga dikenal sebagai ConvNet, adalah jenis algoritma deep learning khusus yang terutama dirancang untuk tugas yang memerlukan pengenalan objek, termasuk klasifikasi, deteksi, dan segmentasi gambar. CNN digunakan dalam berbagai skenario praktis, seperti kendaraan otonom, sistem kamera keamanan, dan lain-lain.
Pentingnya CNN
Ada beberapa alasan mengapa CNN penting di dunia modern, seperti disorot di bawah ini:
- CNN dibedakan dari algoritma machine learning klasik seperti SVM dan decision tree melalui kemampuannya mengekstrak fitur secara mandiri dalam skala besar, sehingga tidak memerlukan rekayasa fitur manual dan pada akhirnya meningkatkan efisiensi.
- Convolutional layer memberikan karakteristik invarian translasi pada CNN, memungkinkannya mengidentifikasi dan mengekstrak pola serta fitur dari data terlepas dari variasi posisi, orientasi, skala, atau translasi.
- Beragam arsitektur CNN pra-latih, termasuk VGG-16, ResNet50, Inceptionv3, dan EfficientNet, telah menunjukkan performa kelas atas. Model-model ini dapat disesuaikan untuk tugas baru dengan data yang relatif sedikit melalui proses yang dikenal sebagai fine-tuning.
- Di luar tugas klasifikasi gambar, CNN bersifat serbaguna dan dapat diterapkan pada berbagai domain lainnya, seperti pemrosesan bahasa alami, analisis deret waktu, dan pengenalan suara.
Inspirasi di Balik CNN dan Keterkaitan dengan Sistem Visual Manusia
Convolutional neural networks terinspirasi oleh arsitektur berlapis korteks visual manusia, dan berikut beberapa kesamaan serta perbedaannya:

Ilustrasi kesesuaian antara area yang terkait dengan korteks visual primer dan layer dalam convolutional neural network (sumber)
- Arsitektur hierarkis: Baik CNN maupun korteks visual memiliki struktur hierarkis, dengan fitur sederhana diekstrak di layer awal dan fitur lebih kompleks dibangun di layer yang lebih dalam. Ini memungkinkan representasi input visual yang semakin canggih.
- Konektivitas lokal: Neuron di korteks visual hanya terhubung ke wilayah lokal dari input, bukan seluruh bidang visual. Demikian pula, neuron di suatu layer CNN hanya terhubung ke wilayah lokal dari volume input melalui operasi konvolusi. Konektivitas lokal ini meningkatkan efisiensi.
- Invariansi translasi: Neuron korteks visual dapat mendeteksi fitur terlepas dari lokasinya pada bidang visual. Pooling layer dalam CNN memberikan tingkat invariansi translasi dengan meringkas fitur lokal.
- Peta fitur berganda: Pada setiap tahap pemrosesan visual, banyak peta fitur berbeda diekstrak. CNN menirunya melalui banyak peta filter di setiap convolution layer.
- Non-linearitas: Neuron dalam korteks visual menunjukkan sifat respons non-linear. CNN mencapai non-linearitas melalui fungsi aktivasi seperti ReLU yang diterapkan setelah setiap konvolusi.
CNN meniru sistem visual manusia namun lebih sederhana, tidak memiliki mekanisme umpan balik kompleks dan bergantung pada pembelajaran terawasi alih-alih tanpa pengawasan, tetap mendorong kemajuan visi komputer meski ada perbedaan ini.
Komponen Utama CNN
Convolutional neural network terdiri dari empat bagian utama.
Lalu bagaimana CNN belajar dengan bagian-bagian tersebut?
Bagian-bagian ini membantu CNN meniru cara kerja otak manusia dalam mengenali pola dan fitur pada gambar:
- Convolutional layer
- Rectified Linear Unit (disingkat ReLU)
- Pooling layer
- Fully connected layer
Bagian ini membahas definisi masing-masing komponen melalui contoh klasifikasi digit tulisan tangan berikut.

Arsitektur CNN yang diterapkan pada pengenalan digit (sumber)
Convolution layer
Ini adalah blok bangunan pertama dari CNN. Sesuai namanya, tugas matematis utama yang dilakukan disebut konvolusi, yaitu penerapan fungsi jendela geser pada matriks piksel yang merepresentasikan sebuah gambar. Fungsi geser yang diterapkan pada matriks disebut kernel atau filter, dan keduanya dapat digunakan secara bergantian.
Dalam convolution layer, beberapa filter berukuran sama diterapkan, dan setiap filter digunakan untuk mengenali pola tertentu dari gambar, seperti lengkungan digit, tepi, bentuk keseluruhan digit, dan lainnya.
Sederhananya, di convolution layer, kita menggunakan kisi-kisi kecil (disebut filter atau kernel) yang bergerak di atas gambar. Setiap kisi kecil seperti kaca pembesar mini yang mencari pola tertentu pada foto, seperti garis, kurva, atau bentuk. Saat bergerak melintasi foto, ia membuat kisi baru yang menyoroti tempat ditemukannya pola-pola tersebut.
Misalnya, satu filter mungkin bagus dalam menemukan garis lurus, lainnya menemukan kurva, dan seterusnya. Dengan menggunakan beberapa filter berbeda, CNN dapat memperoleh gambaran yang baik tentang berbagai pola yang membentuk gambar.
Mari kita pertimbangkan gambar skala abu-abu 32x32 dari sebuah digit tulisan tangan. Nilai dalam matriks diberikan untuk tujuan ilustrasi.

Ilustrasi gambar input dan representasi pikselnya
Selain itu, mari kita pertimbangkan kernel yang digunakan untuk konvolusi. Ini adalah matriks berdimensi 3x3. Bobot setiap elemen kernel direpresentasikan dalam kisi. Bobot nol direpresentasikan pada kisi berwarna hitam dan bobot satu pada kisi berwarna putih.
Apakah kita harus menemukan bobot ini secara manual?
Dalam praktik, bobot kernel ditentukan selama proses pelatihan jaringan saraf.
Dengan menggunakan dua matriks ini, kita dapat melakukan operasi konvolusi dengan menerapkan dot product, dan bekerja sebagai berikut:
- Terapkan matriks kernel dari sudut kiri atas ke kanan.
- Lakukan perkalian per elemen.
- Jumlahkan nilai hasil perkalian.
- Nilai yang dihasilkan sesuai dengan nilai pertama (sudut kiri atas) pada matriks hasil konvolusi.
- Geser kernel ke bawah sesuai ukuran jendela geser.
- Ulangi langkah 1 hingga 5 sampai matriks gambar tertutup sepenuhnya.
Dimensi matriks hasil konvolusi bergantung pada ukuran jendela geser. Semakin besar jendela geser, semakin kecil dimensinya.

Penerapan tugas konvolusi dengan stride 1 menggunakan kernel 3x3
Nama lain yang terkait dengan kernel dalam literatur adalah feature detector karena bobotnya dapat di-fine-tune untuk mendeteksi fitur tertentu pada gambar input.
Sebagai contoh:
- Kernel perataan piksel tetangga dapat digunakan untuk mengaburkan gambar input.
- Kernel pengurangan tetangga digunakan untuk melakukan deteksi tepi.
Semakin banyak convolution layer yang dimiliki jaringan, semakin baik layer tersebut dalam mendeteksi fitur yang lebih abstrak.
Fungsi aktivasi
Sebuah fungsi aktivasi ReLU diterapkan setelah setiap operasi konvolusi. Fungsi ini membantu jaringan mempelajari hubungan non-linear antar fitur pada gambar, sehingga membuat jaringan lebih andal dalam mengenali berbagai pola. Fungsi ini juga membantu mengurangi masalah vanishing gradient.
Pooling layer
Tujuan pooling layer adalah mengambil fitur paling signifikan dari matriks hasil konvolusi. Ini dilakukan dengan menerapkan beberapa operasi agregasi, yang mengurangi dimensi peta fitur (matriks hasil konvolusi), sehingga mengurangi memori yang digunakan saat melatih jaringan. Pooling juga relevan untuk mengurangi overfitting.
Fungsi agregasi yang paling umum diterapkan adalah:
- Max pooling, yaitu nilai maksimum dari peta fitur
- Sum pooling, yaitu jumlah semua nilai pada peta fitur
- Average pooling, yaitu rata-rata semua nilai.
Di bawah ini ilustrasi dari masing-masing contoh sebelumnya:

Penerapan max pooling dengan stride 2 menggunakan filter 2x2
Selain itu, dimensi peta fitur menjadi lebih kecil saat fungsi pooling diterapkan.
Pooling layer terakhir meratakan peta fiturnya agar dapat diproses oleh fully connected layer.
Fully connected layer
Layer-layer ini berada pada bagian akhir convolutional neural network, dan inputnya berupa matriks satu dimensi yang telah diratakan yang dihasilkan oleh pooling layer terakhir. Fungsi aktivasi ReLU diterapkan untuk memberi sifat non-linear.
Terakhir, softmax prediction layer digunakan untuk menghasilkan nilai probabilitas bagi setiap label keluaran yang mungkin, dan label akhir yang diprediksi adalah yang memiliki skor probabilitas tertinggi.
Overfitting dan Regularisasi pada CNN
Overfitting adalah tantangan umum dalam model machine learning dan proyek deep learning berbasis CNN. Ini terjadi ketika model mempelajari data pelatihan terlalu baik (“menghafal”), termasuk noise dan outlier-nya. Pembelajaran seperti ini menghasilkan model yang berkinerja baik pada data pelatihan namun buruk pada data baru yang belum pernah dilihat.
Hal ini dapat diamati ketika model mencapai akurasi yang jauh lebih tinggi pada data pelatihan dibandingkan data validasi atau pengujian, dan ilustrasi grafisnya diberikan di bawah:

Underfitting vs. Overfitting
Model deep learning, terutama Convolutional Neural Networks (CNN), sangat rentan terhadap overfitting karena kapasitasnya yang tinggi untuk kompleksitas dan kemampuannya mempelajari pola terperinci pada data berskala besar.
Beberapa teknik regularisasi dapat diterapkan untuk mengurangi overfitting pada CNN, dan beberapa diilustrasikan di bawah:

7 strategi untuk mengurangi overfitting pada CNN
- Dropout: Ini terdiri dari menjatuhkan beberapa neuron secara acak selama proses pelatihan, yang memaksa neuron yang tersisa untuk mempelajari fitur baru dari data input.
- Batch normalization: Overfitting dikurangi sampai batas tertentu dengan menormalkan layer input melalui penyesuaian dan penskalaan aktivasi. Pendekatan ini juga digunakan untuk mempercepat dan menstabilkan proses pelatihan.
- Pooling layer: Ini dapat digunakan untuk mengurangi dimensi spasial gambar input guna memberikan representasi yang lebih abstrak kepada model, sehingga mengurangi peluang overfitting.
- Early stopping: Ini terdiri dari memantau kinerja model pada data validasi secara konsisten selama pelatihan dan menghentikan pelatihan kapan pun kesalahan validasi tidak lagi membaik.
- Penyuntikan noise: Proses ini terdiri dari menambahkan noise pada input atau keluaran layer tersembunyi selama pelatihan untuk membuat model lebih tangguh dan mencegah generalisasi yang lemah.
- Regularisasi L1 dan L2: Baik L1 maupun L2 digunakan untuk menambahkan penalti pada fungsi loss berdasarkan besarnya bobot. Secara khusus, L1 mendorong bobot menjadi jarang, yang mengarah pada pemilihan fitur yang lebih baik. Sementara itu, L2 (juga disebut weight decay) mendorong bobot menjadi kecil, mencegahnya terlalu memengaruhi prediksi.
- Augmentasi data: Ini adalah proses meningkatkan ukuran dan keragaman dataset pelatihan secara artifisial dengan menerapkan transformasi acak seperti rotasi, penskalaan, flipping, atau cropping pada gambar input.
Aplikasi Praktis CNN
Convolutional Neural Networks merevolusi bidang visi komputer, memicu kemajuan signifikan pada banyak aplikasi dunia nyata. Berikut beberapa contohnya.

Beberapa aplikasi praktis CNN
- Klasifikasi gambar: Convolutional neural networks digunakan untuk kategorisasi gambar, di mana gambar diberi label ke dalam kategori yang telah ditentukan. Salah satu contohnya adalah pengorganisasian foto otomatis di platform media sosial.
- Deteksi objek: CNN mampu mengidentifikasi dan menemukan beberapa objek dalam sebuah gambar. Kemampuan ini penting dalam berbagai skenario pemindaian rak di ritel untuk mengidentifikasi barang yang habis stok.
- Pengenalan wajah: ini juga merupakan salah satu industri utama penerapan CNN. Misalnya, teknologi ini dapat ditanamkan ke dalam sistem keamanan untuk kontrol akses yang efisien berdasarkan fitur wajah.
Untuk implementasi yang lebih praktis, tutorial kami Convolutional Neural Networks (CNN) with TensorFlow mengajarkan cara membangun dan mengimplementasikan CNN di Python dengan TensorFlow 2.
Arsitektur CNN Populer
Selama bertahun-tahun, peneliti telah mengembangkan arsitektur CNN yang semakin kuat. Berikut beberapa yang paling berpengaruh:
- LeNet-5 (1998): Salah satu CNN pertama, dirancang untuk pengenalan digit tulisan tangan.
- AlexNet (2012): Memenangkan kompetisi ImageNet dan memopulerkan CNN dalam-dalam dengan pelatihan GPU.
- VGGNet (2014): Menunjukkan bahwa jaringan yang lebih dalam dengan filter 3x3 kecil meningkatkan akurasi.
- GoogLeNet/Inception (2014): Memperkenalkan modul inception dengan ukuran filter paralel untuk ekstraksi fitur multi-skala.
- ResNet (2015): Memperkenalkan skip connection, memungkinkan pelatihan jaringan dengan 100+ layer.
- EfficientNet (2019): Menggunakan compound scaling untuk menyeimbangkan kedalaman, lebar, dan resolusi jaringan.
- ConvNeXt (2022): Desain CNN modern yang bersaing dengan Vision Transformer.
Walaupun Vision Transformer (ViT) muncul sebagai alternatif kuat sejak 2020, CNN tetap banyak digunakan karena efisien, membutuhkan data lebih sedikit, dan matang di lingkungan produksi.
Kerangka Deep Learning untuk CNN
Pertumbuhan pesat deep learning terutama disebabkan oleh kerangka kerja andal seperti TensorFlow, PyTorch, dan Keras, yang memudahkan pelatihan convolutional neural networks dan model deep learning lainnya.
Mari kita tinjau singkat masing-masing kerangka kerja.
TensorFlow
TensorFlow adalah kerangka kerja deep learning open-source yang dikembangkan oleh Google dan dirilis pada 2015. Kerangka ini menawarkan beragam alat untuk pengembangan dan penerapan machine learning. Introduction to Deep Neural Networks kami menyediakan panduan lengkap untuk memahami jaringan saraf dalam dan signifikansinya di dunia kecerdasan buatan berbasis deep learning modern, beserta implementasi nyata di TensorFlow.
Keras
Keras adalah kerangka jaringan saraf tingkat tinggi di Python yang memungkinkan eksperimen dan pengembangan cepat. Keras bersifat open-source dan menjadi API tingkat tinggi resmi TensorFlow (sejak versi 2.0), yang merampingkan pengembangan model dalam ekosistem TensorFlow. Kursus kami, Image Processing with Keras in Python, mengajarkan cara melakukan analisis gambar menggunakan Keras dengan Python melalui pembuatan, pelatihan, dan evaluasi convolutional neural networks.
PyTorch
Dirilis oleh Meta (sebelumnya Facebook) AI Research pada 2017, PyTorch adalah kerangka deep learning serbaguna yang dikenal dengan computational graph dinamis, sintaks Pythonic, dan komunitas riset yang kuat. Jika Anda tertarik memulai pemrosesan bahasa alami, NLP with PyTorch: A Comprehensive Guide kami adalah titik awal yang bagus.
Setiap proyek berbeda, jadi keputusan sangat bergantung pada karakteristik apa yang paling penting untuk kasus penggunaan tertentu. Untuk membantu pengambilan keputusan, tabel berikut memberikan perbandingan singkat ketiga kerangka kerja ini, menyoroti fitur uniknya.
Tensorflow | Pytorch | Keras | |
Tingkat API | Keduanya (Tinggi dan Rendah) | Rendah | Tinggi |
Arsitektur | Tidak mudah digunakan | Sintaks Pythonic, intuitif | Sederhana, ringkas, mudah dibaca |
Dataset | Dataset besar, performa tinggi | Dataset besar, performa tinggi | Dataset lebih kecil |
Debugging | Sulit melakukan debugging | Kemampuan debugging yang baik | Jaringan sederhana, sehingga debugging jarang diperlukan |
Model pra-latih? | Ya | Ya | Ya |
Popularitas | Paling populer kedua dari ketiganya | Paling banyak digunakan untuk riset dan semakin untuk produksi | Terintegrasi ke TensorFlow sebagai API tingkat tinggi resminya |
Kecepatan | Cepat, performa tinggi | Cepat, performa tinggi | Sama seperti TensorFlow (berjalan di backend TF) |
Ditulis dalam | C++, CUDA, Python | C++, Python | Python |
Tabel perbandingan antara Tensorflow, Pytorch, dan Keras (sumber)
Kesimpulan
Artikel ini memberikan gambaran lengkap tentang apa itu CNN dalam deep learning, beserta peran krusialnya dalam tugas pengenalan dan klasifikasi gambar.
Artikel dimulai dengan menyoroti inspirasi dari sistem visual manusia untuk desain CNN lalu mengeksplorasi komponen kunci yang memungkinkan jaringan ini belajar dan membuat prediksi.
Masalah overfitting diakui sebagai tantangan signifikan bagi kemampuan generalisasi CNN. Untuk mengatasinya, diuraikan berbagai strategi relevan untuk mengurangi overfitting dan meningkatkan kinerja CNN secara keseluruhan.
Terakhir, beberapa kerangka kerja CNN deep learning utama disebutkan, beserta fitur unik masing-masing dan bagaimana perbandingannya satu sama lain.
Ingin menyelami lebih jauh dunia AI dan machine learning? Tingkatkan keahlian Anda dengan mendaftar kursus Deep Learning with PyTorch hari ini.
Seorang data scientist serbabisa yang senang berbagi pengetahuan dan memberi dampak bagi orang lain, Zoumana adalah pembuat konten di YouTube dan penulis teknologi teratas di Medium. Ia menikmati berbicara di depan umum, ngoding, dan mengajar. Zoumana meraih dua gelar magister: yang pertama di bidang ilmu komputer dengan fokus Machine Learning di Paris, Prancis, dan yang kedua di bidang Data Science dari Texas Tech University di AS. Kariernya dimulai sebagai Pengembang Perangkat Lunak di Groupe OPEN, Prancis, lalu bergabung dengan IBM sebagai Konsultan Machine Learning, di mana ia mengembangkan solusi AI end-to-end untuk perusahaan asuransi. Zoumana kemudian bergabung dengan Axionable, startup AI Berkelanjutan pertama yang berbasis di Paris dan Montreal. Di sana, ia berperan sebagai Data Scientist dan mengimplementasikan produk AI, terutama use case NLP, untuk klien dari Prancis, Montreal, Singapura, dan Swiss. Selain itu, 5% dari waktunya didedikasikan untuk Riset dan Pengembangan. Saat ini, ia bekerja sebagai Senior Data Scientist di IFC - World Bank Group.
FAQ CNN
Apa perbedaan antara CNN dan jaringan saraf biasa?
Jaringan saraf biasa (fully connected) menghubungkan setiap neuron ke setiap neuron di layer berikutnya, yang menjadi mahal secara komputasi untuk data gambar. CNN menggunakan convolutional layer yang menerapkan filter kecil ke wilayah lokal input, secara drastis mengurangi jumlah parameter sekaligus mempertahankan hubungan spasial. Ini membuat CNN jauh lebih efisien dan efektif untuk tugas terkait gambar.
Apa arsitektur CNN yang paling umum?
Arsitektur CNN paling berpengaruh meliputi LeNet-5 (1998), AlexNet (2012), VGGNet (2014), ResNet (2015), dan EfficientNet (2019). Baru-baru ini, ConvNeXt (2022) memodernisasi pendekatan CNN untuk bersaing dengan Vision Transformer. Setiap arsitektur memperkenalkan inovasi kunci seperti skip connection (ResNet) atau compound scaling (EfficientNet).
Apakah CNN masih relevan pada 2026?
Ya, CNN tetap sangat relevan pada 2026. Meski Vision Transformer (ViT) semakin populer untuk beberapa tugas, CNN masih lebih disukai di banyak lingkungan produksi karena efisiensi komputasi, performa kuat dengan data pelatihan terbatas, dan pipeline penerapan yang sudah mapan. Arsitektur modern seperti ConvNeXt menunjukkan bahwa CNN dapat menyamai performa transformer saat menggunakan teknik pelatihan yang diperbarui.
Bagaimana saya memilih antara TensorFlow, PyTorch, dan Keras untuk membangun CNN?
PyTorch adalah pilihan paling populer untuk riset dan prototipe cepat karena sintaks Pythonic dan computational graph dinamisnya. TensorFlow unggul dalam penerapan produksi dengan alat seperti TensorFlow Serving dan TensorFlow Lite untuk seluler. Keras, kini terintegrasi sebagai API tingkat tinggi resmi TensorFlow, ideal bagi pemula yang ingin membangun dan melatih CNN dengan kode minimal.
Apa tujuan pooling layer dalam CNN?
Pooling layer mengurangi dimensi spasial (tinggi dan lebar) peta fitur sambil mempertahankan informasi terpenting. Ini melayani tiga tujuan: mengurangi biaya komputasi dengan menurunkan jumlah parameter, memberikan tingkat invariansi translasi (kemampuan mengenali fitur terlepas dari posisi persisnya), dan membantu mencegah overfitting dengan menyediakan representasi input yang lebih abstrak.

