Kemajuan teknologi kecerdasan buatan atau Artificial Intelligence telah mendorong perkembangan yang pesat dalam berbagai bidang, termasuk pengenalan pola (pattern recognition), pengolahan citra digital (digital image processing), pengenalan wajah, diagnosis medis berbasis citra, kendaraan otonom, hingga sistem rekomendasi berbasis visual. Salah satu faktor utama yang mendukung perkembangan tersebut adalah meningkatnya kemampuan komputasi serta ketersediaan data dalam jumlah besar yang memungkinkan pengembangan model pembelajaran mesin dengan tingkat akurasi yang semakin tinggi. Dalam beberapa tahun terakhir, pendekatan Deep Learning menjadi salah satu metode yang paling banyak digunakan karena mampu mempelajari pola dan representasi data secara otomatis tanpa memerlukan proses ekstraksi fitur yang kompleks [1].
Deep Learning merupakan cabang dari pembelajaran mesin (machine learning) yang memanfaatkan jaringan saraf tiruan berlapis (artificial neural networks) untuk mempelajari hubungan yang kompleks antara data masukan dan keluaran. Berbeda dengan metode pembelajaran mesin tradisional yang umumnya membutuhkan proses feature engineering secara manual, Deep Learning mampu mengekstraksi fitur secara otomatis melalui serangkaian lapisan tersembunyi (hidden layers) sehingga lebih efektif dalam menangani data berdimensi tinggi dan tidak terstruktur seperti citra, audio, maupun teks [1]. Kemampuan tersebut menjadikan Deep Learning sebagai pendekatan yang sangat populer dalam berbagai permasalahan klasifikasi dan prediksi modern.
Dalam bidang klasifikasi citra, salah satu arsitektur Deep Learning yang paling banyak digunakan adalah Convolutional Neural Network (CNN). arstitektur ini dirancang khusus untuk mengenali pola spasial pada citra dengan memanfaatkan operasi konvolusi, fungsi aktivasi nonlinier, dan proses pooling [2]. Melalui mekanisme tersebut, CNN mampu mendeteksi berbagai karakteristik visual seperti tepi, sudut, tekstur, bentuk, hingga objek yang lebih kompleks secara bertahap. Pada lapisan awal, CNN akan mengenali fitur-fitur sederhana, sedangkan pada lapisan yang lebih dalam jaringan akan membentuk representasi yang lebih abstrak dan informatif. Keunggulan ini membuat CNN mampu menghasilkan performa yang lebih baik dibandingkan banyak metode klasifikasi tradisional pada berbagai permasalahan pengenalan citra [3].
Klasifikasi citra merupakan salah satu permasalahan penting dalam bidang computer vision karena bertujuan mengidentifikasi objek atau kategori yang terdapat pada suatu gambar. Berbagai aplikasi nyata memanfaatkan klasifikasi citra, seperti pengenalan produk pada platform e-commerce, sistem keamanan berbasis pengenalan objek, diagnosis penyakit melalui citra medis, hingga pengelompokan data visual secara otomatis. Oleh karena itu, diperlukan metode yang mampu mengenali karakteristik visual objek secara akurat dan efisien. CNN menjadi salah satu solusi yang banyak digunakan karena kemampuannya dalam mengekstraksi informasi visual secara otomatis dan menghasilkan tingkat akurasi yang tinggi.
Salah satu dataset yang sering digunakan untuk mengevaluasi kemampuan algoritma klasifikasi citra adalah Fashion-MNIST. Dataset ini dikembangkan oleh Zalando Research sebagai alternatif yang lebih menantang dibandingkan dataset MNIST yang berisi digit tulisan tangan [4]. Fashion-MNIST terdiri atas 70.000 citra grayscale berukuran 28×28 piksel yang terbagi menjadi 60.000 data pelatihan dan 10.000 data pengujian. Setiap citra dikelompokkan ke dalam sepuluh kategori pakaian, yaitu T-shirt/top, Trouser, Pullover, Dress, Coat, Sandal, Shirt, Sneaker, Bag, dan Ankle Boot. Keberagaman bentuk serta kemiripan visual antar beberapa kategori menjadikan Fashion-MNIST sebagai dataset yang sesuai untuk menguji kemampuan model klasifikasi berbasis Deep Learning.
Pemilihan arsitektur jaringan yang tepat merupakan faktor penting dalam klasifikasi citra. CNN memiliki kemampuan mengekstraksi fitur secara bertahap dari pola sederhana hingga kompleks, sehingga sesuai untuk mengklasifikasikan citra Fashion-MNIST yang memiliki beberapa kategori dengan karakteristik visual yang mirip. Meskipun CNN telah banyak digunakan dalam berbagai penelitian klasifikasi citra, evaluasi terhadap performa model tetap diperlukan untuk memahami kemampuan generalisasi model pada data yang belum pernah dilihat sebelumnya. Pemilihan arsitektur jaringan yang tepat merupakan faktor penting dalam klasifikasi citra. CNN memiliki kemampuan mengekstraksi fitur secara bertahap dari pola sederhana hingga kompleks, sehingga sesuai untuk mengklasifikasikan citra Fashion-MNIST yang memiliki beberapa kategori dengan karakteristik visual yang mirip. sehingga berpotensi menyebabkan kesalahan klasifikasi. Oleh karena itu, diperlukan analisis yang tidak hanya berfokus pada nilai akurasi, tetapi juga pada pola kesalahan klasifikasi yang terjadi pada setiap kategori pakaian.
Berdasarkan latar belakang masalah tersebut, diperlukan sebuah rumusan masalah yang jelas untuk menguji sejauh mana kapabilitas arsitektur yang dirancang dalam mengatasi tantangan tersebut. Dari batasan masalah ini, muncul pertanyaan analisis berikut:
Dapatkah arsitektur Convolutional Neural Network mengklasifikasikan citra pakaian Fashion-MNIST ke dalam sepuluh kategori dengan tingkat akurasi yang baik?
Untuk menjawab pertanyaan tersebut, penelitian ini dilakukan dengan beberapa target capaian utama, yaitu:
Membangun model CNN untuk klasifikasi Fashion-MNIST.
Mengevaluasi performa model menggunakan data pengujian.
Menganalisis hubungan kurva training dan validation.
Mengidentifikasi kategori dengan tingkat kesalahan klasifikasi terbesar.
Dataset yang digunakan dalam penelitian ini adalah Fashion-MNIST bersumber dari pustaka Keras [5] yang tersedia melalui Keras Dataset API https://keras.io/api/datasets/fashion_mnist/. Setiap observasi merupakan satu citra pakaian grayscale berukuran 28 × 28 piksel dan prediktor berupa nilai intensitas piksel sebanyak 28 × 28 = 784 piksel. Variabel respons berupa kategori pakaian yang terdiri atas sepuluh kelas, sebagai berikut.
| Label | Kategori |
|---|---|
| 0 | T-shirt/top |
| 1 | Trouser |
| 2 | Pullover |
| 3 | Dress |
| 4 | Coat |
| 5 | Sandal |
| 6 | Shirt |
| 7 | Sneaker |
| 8 | Bag |
| 9 | Ankle Boot |
Dataset Fashion-MNIST telah menyediakan data pelatihan sebanyak 60.000 citra dan data pengujian sebanyak 10.000 citra. Selain itu digunakan validation set sebesar 20% dari data pelatihan untuk mengevaluasi performa model selama proses training, dengan R sebagai berikut.
fashion = dataset_fashion_mnist()
x_train = fashion$train$x / 255
x_test = fashion$test$x / 255
y_train = fashion$train$y
y_test = fashion$test$y
Nilai piksel awal berada pada rentang:
\[ 0 \le x \le 255 \]
Selanjutnya dilakukan normalisasi:
\[ x' = \frac{x}{255} \]
sehingga seluruh piksel berada pada rentang:
\[ 0 \le x' \le 1 \]
dengan R sebagai berikut.
x_train = array_reshape(x_train, c(nrow(x_train), 28, 28, 1))
x_test = array_reshape(x_test, c(nrow(x_test), 28, 28, 1))
class_names = c("T-shirt/top","Trouser","Pullover","Dress","Coat",
"Sandal","Shirt","Sneaker","Bag","Ankle boot")
setelah itu pengecekkan missing values pada data latih dan data uji dengan R sebagai berikut.
anyNA(x_train)
## [1] FALSE
anyNA(x_test)
## [1] FALSE
berdasarkan hasil di atas terlihat bahwa tidak terdapat missing values baik pada data latih maupun data uji.
Berikut beberapa gambar citra dari Fashion-MNIST
Arsitektur model yang digunakan terdiri atas dua lapisan konvolusi (convolution layer), dua lapisan max pooling, satu dense layer, satu lapisan dropout, dan satu lapisan keluaran (output layer) dengan fungsi aktivasi softmax.
mengekstraksi fitur lokal dari citra menggunakan kernel atau filter melalui persamaan berikut
\[ Z_{ij}^{(k)} = \sum_{m=1}^{f} \sum_{n=1}^{f} X_{(i+m-1)(j+n-1)} K_{mn}^{(k)} + b^{(k)} \]
\(\begin{aligned}X &= \text{citra input} \\K &= \text{kernel} \\b &= \text{bias} \\Z &= \text{feature map}\end{aligned}\)
Dalam model ini, digunakan 32 filter pada convolution pertama, 64 filter pada convolution kedua, dan ukuran kernel sebesar 3×3.
mentransformasikan output dari convolution layer.
\[ \text{ReLU}(x) = \max(0, x) \]
Fungsi ini mempertahankan nilai positif dan mengubah nilai negatif menjadi nol sehingga mempercepat proses pembelajaran jaringan [1].
mereduksi dimensi.
\[ P_{ij} = \max(z_{11}, z_{12}, z_{21}, z_{22}) \]
Pooling membantu mengurangi jumlah parameter dan meningkatkan efisiensi komputasi.
Output hasil ekstraksi fitur dihitung menggunakan:
\[ a_j = f \left( \sum_{i=1}^{n} w_{ij} x_i + b_j \right) \]
\(\begin{aligned}w_{ij} &= \text{bobot} \\x_i &= \text{input neuron} \\b_j &= \text{bias}\end{aligned}\)
mengurangi overfitting menggunakan:
\[ \tilde{x}_i = r_i x_i \]
dengan;
\[ r_i \sim \text{Bernoulli}(p) \]
pada:
\[ \begin{aligned} p &= 0.30 \\ p &= 0.50 \end{aligned} \]
lapisan output menggunakan fungsi softmax:
\[ P(y = j \mid x) = \frac{e^{z_j}}{\sum_{k=1}^{K} e^{z_k}} \]
dengan \(K=10\) karena terdapat sepuluh kategori pakaian.
Model dioptimasi menggunakan Sparse Categorical Crossentropy:
\[ L = - \sum_{i=1}^{N} \sum_{j=1}^{K} y_{ij} \log(\hat{y}_{ij}) \]
Untuk memperoleh model yang memiliki kemampuan generalisasi terbaik, dilakukan proses tuning terhadap parameter dropout yaitu 0,30 dan 0,50. Pemilihan model dilakukan menggunakan validation set sebesar 20% dari data pelatihan. Kriteria pemilihan model didasarkan pada nilai validation accuracy tertinggi.
set.seed(15062026)
build_model = function(dropout_rate) {
model = keras_model_sequential(input_shape = c(28, 28, 1)) |>
layer_conv_2d(32, c(3,3), activation = "relu") |>
layer_max_pooling_2d(c(2,2)) |>
layer_conv_2d(64, c(3,3), activation = "relu") |>
layer_max_pooling_2d(c(2,2)) |>
layer_flatten() |>
layer_dense(64, activation = "relu") |>
layer_dropout(dropout_rate) |>
layer_dense(10, activation = "softmax")
model |> compile(
optimizer = "adam",
loss = "sparse_categorical_crossentropy",
metrics = c("accuracy")
)
return(model)
}
model_03 = build_model(0.3)
history_03 = model_03 |> fit(
x_train, y_train,
epochs = 10,
batch_size = 128,
validation_split = 0.2,
verbose = 0
)
model_05 = build_model(0.5)
history_05 = model_05 |> fit(
x_train, y_train,
epochs = 10,
batch_size = 128,
validation_split = 0.2,
verbose = 0
)
val_acc_03 = max(history_03$metrics$val_accuracy)
val_acc_05 = max(history_05$metrics$val_accuracy)
data.frame(Dropout = c(0.3, 0.5), Val_Accuracy = c(val_acc_03, val_acc_05))
## Dropout Val_Accuracy
## 1 0.3 0.9050000
## 2 0.5 0.9008333
Hasil tuning menunjukkan bahwa model dengan nilai validation accuracy tertinggi dipilih sebagai model final. Pada penelitian ini, model dengan dropout sebesar 0,30 digunakan pada tahap pelatihan akhir karena memberikan kemampuan generalisasi yang lebih baik dibandingkan dropout sebesar 0,50.
model = keras_model_sequential(input_shape = c(28, 28, 1)) |>
layer_conv_2d(32, c(3,3), activation = "relu") |>
layer_max_pooling_2d(c(2,2)) |>
layer_conv_2d(64, c(3,3), activation = "relu") |>
layer_max_pooling_2d(c(2,2)) |>
layer_flatten() |>
layer_dense(64, activation = "relu") |>
layer_dropout(0.3) |>
layer_dense(10, activation = "softmax")
model |> compile(
optimizer = "adam",
loss = "sparse_categorical_crossentropy",
metrics = c("accuracy")
)
Model final dilatih menggunakan optimizer Adam dengan batch size sebesar 128 dan validation split sebesar 20%. Proses pelatihan dilakukan selama 15 epoch untuk mempelajari pola visual pada citra Fashion-MNIST. Optimizer Adam dipilih karena mampu melakukan pembaruan parameter secara adaptif sehingga proses konvergensi berlangsung lebih cepat dan stabil [2].
accuracy curve menunjukkan perkembangan kemampuan model dalam mengklasifikasikan citra selama proses pelatihan. Sementara itu, loss curve menggambarkan tingkat kesalahan prediksi yang dihasilkan model pada setiap epoch. Apabila kurva training accuracy dan validation accuracy meningkat secara bersamaan serta memiliki jarak yang relatif kecil, maka model memiliki kemampuan generalisasi yang baik. Sebaliknya, apabila training accuracy terus meningkat tetapi validation accuracy menurun, maka terdapat indikasi overfitting.
## $accuracy
## [1] 0.903
##
## $loss
## [1] 0.2853541
Grafik di atas menunjukkan tren pergerakan nilai accuracy (akurasi) dan loss (kerugian) model selama 15 epoch untuk data training dan validation. Berdasarkan kurva akurasi pada bagian atas, terlihat bahwa akurasi data training (garis oranye) dan validation (garis biru) mengalami peningkatan yang stabil seiring bertambahnya iterasi, di mana nilai akhir akurasi keduanya konvergen di kisaran 0.91 hingga 0.92. Sementara itu, pada grafik loss, nilai loss untuk kedua data menunjukkan penurunan yang konsisten, menandakan bahwa model berhasil mempelajari pola data dengan baik. Karakteristik kedua kurva yang saling berdekatan dan tidak menunjukkan celah (gap) yang lebar hingga epoch ke-15 mengindikasikan bahwa model memiliki generalisasi yang sangat baik dan terhindar dari masalah overfitting maupun underfitting.
Evaluasi dilakukan menggunakan data pengujian yang tidak pernah digunakan selama proses pelatihan maupun tuning. Nilai testing accuracy digunakan sebagai indikator utama dalam menilai kemampuan model melakukan generalisasi terhadap data baru. Semakin tinggi nilai testing accuracy maka semakin baik kemampuan model dalam mengklasifikasikan citra Fashion-MNIST.
## Predicted
## Actual T-shirt/top Trouser Pullover Dress Coat Sandal Shirt Sneaker Bag
## T-shirt/top 900 0 17 8 3 0 67 0 5
## Trouser 7 970 0 20 1 0 1 0 1
## Pullover 18 0 888 10 43 0 39 0 2
## Dress 22 0 13 915 18 0 30 0 2
## Coat 1 1 60 46 841 0 51 0 0
## Sandal 0 0 0 1 0 973 0 15 0
## Shirt 165 2 98 23 78 0 630 0 4
## Sneaker 0 0 0 0 0 12 0 971 0
## Bag 6 1 4 1 3 2 4 4 975
## Ankle boot 1 0 0 0 0 3 0 29 0
## Predicted
## Actual Ankle boot
## T-shirt/top 0
## Trouser 0
## Pullover 0
## Dress 0
## Coat 0
## Sandal 11
## Shirt 0
## Sneaker 17
## Bag 0
## Ankle boot 967
Confusion matrix digunakan untuk mengevaluasi performa klasifikasi pada masing-masing kategori pakaian. Elemen diagonal menunjukkan jumlah observasi yang berhasil diklasifikasikan dengan benar, sedangkan elemen di luar diagonal menunjukkan kesalahan klasifikasi. Berdasarkan karakteristik Fashion-MNIST, kesalahan klasifikasi umumnya terjadi antara kategori yang memiliki bentuk visual serupa, seperti Shirt, T-shirt/top, Coat, dan Pullover.
## T-shirt/top Trouser Pullover Dress Coat Sandal
## 0.900 0.970 0.888 0.915 0.841 0.973
## Shirt Sneaker Bag Ankle boot
## 0.630 0.971 0.975 0.967
Accuracy per class digunakan untuk mengetahui kemampuan model pada masing-masing kategori pakaian. Kategori dengan bentuk visual yang unik seperti Bag, Sneaker, Sandal, dan Ankle Boot memiliki nilai akurasi yang lebih tinggi. Sebaliknya kategori Shirt, Coat, dan Pullover cenderung memiliki tingkat akurasi yang lebih rendah karena memiliki karakteristik visual yang saling menyerupai.
Visualisasi citra salah klasifikasi digunakan untuk memahami penyebab kesalahan prediksi yang dilakukan model. Analisis ini penting karena nilai akurasi yang tinggi tidak selalu menunjukkan bahwa seluruh kategori telah dikenali dengan baik.
Berdasarkan citra yang salah diklasifikasikan di atas, sebagian besar kesalahan terjadi pada kategori pakaian yang memiliki bentuk dan siluet yang hampir sama. Misalnya, Shirt sering diprediksi sebagai T-shirt/top atau Coat karena batas visual antar kelas tersebut tidak selalu jelas pada citra grayscale berukuran 28×28 piksel. Rendahnya resolusi spasial ini menyebabkan detail mikro seperti keberadaan kancing, bentuk kerah, atau jenis potongan lengan yang membedakan antar-kategori pakaian menjadi samar dan hilang saat proses konvolusi. Hal ini menunjukkan bahwa keterbatasan tidak hanya berasal dari model, tetapi juga dari karakteristik dataset yang memiliki kemiripan visual antarkategori. Selain itu, penggunaan dropout sebesar 0,30 terbukti membantu mengurangi risiko overfitting sehingga performa model pada validation set dan testing set tetap terjaga. Mekanisme eliminasi neuron acak ini secara efektif memaksa jaringan saraf untuk mempelajari representasi fitur yang lebih kokoh (robust) dan tidak bergantung pada piksel tertentu saja
Berdasarkan hasil analisis menunjukkan bahwa CNN mampu melakukan klasifikasi dengan baik melalui proses ekstraksi fitur otomatis menggunakan lapisan konvolusi dan pooling. Proses tuning menunjukkan bahwa dropout sebesar 0,30 menghasilkan performa validasi yang lebih baik dibandingkan dropout sebesar 0,50 sehingga dipilih sebagai model terbaik.
Evaluasi pada data pengujian menunjukkan bahwa model memiliki kemampuan generalisasi yang baik, yang ditunjukkan oleh kesesuaian antara kurva training dan validation serta dominasi prediksi benar pada confusion matrix. Kategori seperti Bag, Sneaker, Sandal, Trouser, dan Ankle Boot memiliki tingkat klasifikasi yang tinggi, sedangkan Shirt, Pullover, Coat, dan T-shirt/top masih sering tertukar karena memiliki karakteristik visual yang mirip.
Dengan demikian, pertanyaan analisis dapat dijawab bahwa arsitektur CNN mampu mengklasifikasikan citra Fashion-MNIST ke dalam sepuluh kategori dengan tingkat akurasi yang baik. Untuk meningkatkan performa model pada penelitian selanjutnya, disarankan menerapkan data augmentation, batch normalization, melakukan tuning hyperparameter yang lebih luas, serta menggunakan arsitektur CNN yang lebih kompleks seperti ResNet atau EfficientNet.
Goodfellow, I., Bengio, Y., & Courville, A. (2016). Deep Learning. MIT Press.
LeCun, Y., Bottou, L., Bengio, Y., & Haffner, P. (1998). Gradient-Based Learning Applied to Document Recognition. Proceedings of the IEEE, 86(11), 2278–2324.
Chollet, F. (2021). Deep Learning with Python (2nd Edition). Manning Publications.
Xiao, H., Rasul, K., & Vollgraf, R. (2017). Fashion-MNIST: A Novel Image Dataset for Benchmarking Machine Learning Algorithms. arXiv:1708.07747.
Keras Team. Fashion-MNIST Dataset Documentation. https://keras.io/api/datasets/fashion_mnist/