Indonesia adalah bangsa yang besar, bangsa yang terdiri dari banyak pulau dari Sabang sampai Merauke dimana setiap pulau memiliki kebudayaan sendiri-sendiri, seperti alat musik, busana, bahkan juga makanan tradisional. Dengan ragam kultur budayanya, Indonesia memiliki banyak jenis makanan dan memiliki ciri khas yang berbeda antara daerah yang satu dengan yang lainnya. Makanan tradisional Jawa Tengah misalnya terkenal dengan cita rasanya yang manis, masyarakat dari kota Manado dan Lombok yang suka dengan rasa pedas, dan lain sebagainya. Makanan tradisional Indonesia sangat beragam, seiring dengan beragamnya etnik dan wilayah multikulturalnya. Makanan tradisional Indonesia mengandung beragam rempah-rempah, memiliki aneka teknik memasak dan berbahan-bahan lokal yang sebagian terpengaruh dari India, China, Timur Tengah, dan Eropa.
Menurut Marwanti (2000: 112), makanan tradisional mempunyai pengertian makanan rakyat sehari-hari, baik yang berupa makanan pokok, makanan selingan, atau sajian khusus yang sudah turun-temurun dari zaman nenek moyang. Cara pengolahan pada resep makanan tradisional dan cita rasanya umumnya sudah bersifat turun temurun sehingga makanan tradisional disetiap tempat atau daerah berbeda-beda.
Dari pengertian di atas, dapat dikatakan bahwa makanan tradisional merupakan makanan yang diperoleh secara turun temurun dan di setiap daerah mempunyai ciri khas yang berbeda-beda. Makanan tradisional Indonesia sangat banyak macamnya, berdasarkan tingkat eksistensinya dalam masyarakat hingga saat ini. Keanekaragaman makanan tradisional yang ada dipengaruhi oleh keadaan daerah atau tempat tinggal dan budaya yang ada di daerah tersebut. Dengan banyaknya keanekaragaman makanan tradisional dalam suatu daerah, tidak sedikit pula makanan tradisional yang hampir terlupakan oleh masyarakat saat ini.
Menurut Murdijati (2017), makanan tradisional ini dapat dikategorikan menjadi tiga kelompok, antara lain:
Cara pengolahan pada resep makanan tradisional dan cita rasanya umumnya sudah bersifat turun temurun, serta sedikit sekali adanya inovasi produk. Menurut Sosroningrat (1991), makanan tradisional mempunyai ciri-ciri antara lain:
Bahkan berdasarkan tulisan artikel dari website Kementerian Luar Negeri berikut ini (https://kemlu.go.id/portal/id/read/4771/berita/citra-rasa-kuliner-indonesia-menjadi-daya-tarik-tersendiri-di-tengah-perayaan-warisan-budaya-asia-amerika-di-san-francisco), Indonesia dikenal dengan kekayaan kulinernya karena memiliki lebih dari 5 ribu resep kuliner tradisional sehingga menjadikan Indonesia memiliki jumlah resep makanan terbanyak di dunia.
Makanan tradisional sebagai salah satu aspek budaya suatu bangsa dapat mencirikan identitas bangsa tersebut. Kita sebagai warga negara Indonesia perlu melakukan pelestarian makanan tradisional dengan meningkatkan kualitas produk agar mampu bersaing dan memuaskan wisatawan lokal maupun asing. Selain itu, dapat juga dilakukan dengan cara memperkenalkannya kepada generasi muda ditengah-tengah banyaknya kuliner dari kebudayaan barat yang sekarang sudah merajalela di Indonesia. Bahkan kita juga harus bangga memperkenalkan makanan tradisional ini kepada wisatawan asing karena makanan Indonesia dibuat dari rempah-rempah yang kualitasnya salah satu yang terbaik di seluruh dunia.
Sebagai warga negara Indonesia yang lahir dan besar di Indonesia, saya memiliki kecintaan dan kebanggaan kepada kebudayaan Indonesia, salah satunya adalah makanan tradisional. Menurut saya, makanan tradisional Indonesia tidak hanya enak dan istimewa, tetapi juga memiliki banyak ragam rasa dan jenis yang menjadi khas daerah masing-masing dan menjadikannya sebagai hidangan tradisional populer di daerahnya. Indonesia terus berupaya menjadi salah satu destinasi wisata dunia terus berupaya meningkatkan diri agar mampu bersaing dengan negara lain.
Oleh karena itu, saya ingin sekali memperkenalkan makanan tradisional Indonesia kepada seluruh masyarakat khususnya wisatawan lokal maupun asing yang mungkin tidak tahu banyak mengenai hal ini. Dengan demikian akan semakin banyak wisatawan yang ingin berkunjung ke Indonesia dan menikmati kebudayaan khususnya makanan tradisional Indonesia.
Seperti kita ketahui di atas bahwa makanan tradisional di Indonesia, sebagai salah satu aspek budaya Indonesia, sangat banyak dan beragam. Kita sebagai warga Indonesia mungkin hanya mengetahui beberapa jenis makanan tradisional atau makanan yang berasal dari daerah asal kita saja. Hal ini terbukti dari pengalaman pribadi saya, saat saya ingin makan salah satu makanan tradisional daerah, namun saya tidak mengetahui nama makanan tersebut. Saya percaya hal ini juga sering dialami oleh banyak orang Indonesia, apalagi generasi muda saat ini yang mungkin lebih mengenal makanan dari luar negeri.
Sebagai bentuk pelestarian budaya Indonesia yaitu makanan tradisional, saya mempunyai keinginan untuk memperkenalkan makanan tradisional Indonesia kepada masyarakat maupun wisatawan asing yang ingin mengetahui lebih dalam mengenai makanan tradisional tersebut. Inilah yang menjadi dasar bagi saya membuat sebuah dashboard yang mampu mengenali makanan tradisional Indonesia yang difoto atau di-upload gambarnya tersebut.
Dashboard yang saya buat ini akan memberitahukan nama makanan beserta informasi mengenai makanan tersebut dari gambar / foto makanan yang di-upload oleh user. Dashboard ini dikembangkan dengan menggunakan machine learning berbasis Neural Network untuk dapat melakukan klasifikasi atas gambar makanan tradisional.
Project ini menampilkan dashboard yang berisi fitur-fitur tentang makanan tradisional Indonesia beserta informasi singkat mengenai makanan tersebut dengan cara mengupload foto atau gambar makanan ke dalam dashboard.
Jika sebelumnya saat kita tidak tahu jenis makanan, kita hanya bertanya kepada orang yang tahu kemudian mencarinya di mesin pencarian seperti google. Melalui dashboard ini, user dapat dibantu untuk dapat langsung mengenali makanan yang ada terhidang di depannya dengan mengirimkan gambar makanan tersebut dan upload ke dashboard ini, untuk kemudian dapat diketahui informasi nama makanan serta informasi lain atas makanan tersebut.
Selain melakukan klasifikasi gambar makanan tradisional, project ini dapat dikembangkan lebih lanjut untuk dapat dihubungkan dengan Platform Kuliner ataupun Pariwisata (Panduan Kuliner) sehingga dapat memberikan rekomendasi Restoran untuk makanan tradisional Indonesia yang teridentifikasi. Contohnya: jika user upload makanan Ayam Betutu dan dashboard mampu mengenali makanan Ayam Betutu tersebut, dashboard juga dapat terintegrasi dengan platform kuliner sehingga memberikan rekomendasi restoran yang autentik menjual Ayam Betutu di Bali yang merupakan daerah asal dari makanan tradisional tersebut.
Target user untuk project ini adalah masyarakat umum khususnya generasi muda dan wisatawan asing yang ingin mengenal lebih dalam mengenai makanan tradisional indonesia baik itu informasi mengenai makanan tersebut maupun jika tertarik untuk membelinya pada saat berkunjung ke suatu daerah wisata.
Misalnya user adalah wisatawan asing yang baru pertama kali datang ke Indonesia dan mendapatkan makanan tradisional kemudian tertarik dengan makanan tersebut seperti namanya dan informasi lainnya, maka user dapat masuk ke dashboard ini kemudian mengupload foto dari makanan tersebut, kemudian dashboard ini akan menampilkan output berupa nama makanan beserta informasi-informasi mengenai makanan tersebut yang berguna untuk menambah pengetahuan user tentang kuliner tradisional Indonesia serta menimbulkan minat lebih terhadap makanan tradisional dari daerah-daerah lain di Indonesia dan tertarik juga untuk melakukan wisata atau kunjungan ke daerah tersebut sehingga dapat meningkatkan pariwisata Indonesia.
User yang tertarik mengetahui informasi mengenai makanan tradisional dapat menggunakan dashboard ini karena lebih efisien dalam memberikan informasi dibandingkan dengan melakukan pencarian via website seperti google atau bertanya kepada orang lain (dalam hal ini warga indonesia) yang mungkin saja juga tidak tahu detail mengenai makanan tradisional tersebut. Karena jika mencari via website maka hasil dari pencarian google terlalu luas karena hanya berdasarkan keyword yang dimasukkan. Tetapi jika menggunakan dashboard ini maka hanya dengan memasukkan foto suatu makanan maka dashboard ini dapat menampilkan informasi yang spesifik mengenai makanan tersebut.
Implementasi dashboard pengenalan gambar untuk kebudayaan Indonesia yang lain seperti alat musik tradisional, jenis-jenis batik, dan pakaian daerah.
Dashboard klasifikasi gambar untuk mengenali jenis makanan dengan langkah seperti berikut:
Saya menggunakan data gambar tentang makanan tradisional Indonesia
yang diambil dari website Kaggle dengan judul Traditional Food Knowledge
of Indonesia (https://www.kaggle.com/datasets/arizbw/traditional-food-knowledge-of-indonesia/data).
Data Food sudah terbagi ke dalam data dev, data train dan
data test. Dataset ini terdiri dari 1150 baris dan 38 kolom. 1150
menunjukkan jumlah data makanan pada dataset ini yang nantinya hanya
terbagi menjadi 35 jenis makanan saja. 38 kolom terdiri dari
image index, patient ID,
finding labels dan 35 jenis makanan.
Berikut ini merupakan data gambar dari masing-masing dataset baik itu data dev, data train, data test yang sudah dibagi ke dalam folder-folder di bawah ini:
Dan untuk setiap masing-masing folder data tersebut memiliki gambar seluruh jenis makanan yang ada pada dataset. Berikut adalah isi dari masing-masing folder tersebut:
Namun pada project ini kita hanya fokus pada data train dan data test saja.
Berikut ini salah satu contoh gambar dari salah satu jenis makanan pada dataset tersebut, yaitu gambar gado-gado.
Kita mulai dengan membaca dataset data train.csv dan test.csv dan kita simpan dalam variabel train dan test.
Kita coba lihat beberapa data pertama dari data train.
Disini kita akan menginstal package pillow di conda
environment untuk memanipulasi data gambar. Berikut instruksi singkat
tentang cara membuat conda environment baru dengan
tensorflow dan pillow di dalamnya.
conda create -n tf_image python=3.7
conda activate tf_image
conda install -c conda-forge tensorflow=2
pillow dengan menjalankan perintah
berikut:pip install pillow
reticulate::use_python() dan masukkan lokasi python
dari environment tf_image. Path atau lokasi environment dapat ditemukan
dengan cara mengetik conda env list di terminal.library(reticulate)
# Use python in your anaconda3 environment folder
reticulate::use_python("C:/Users/hp/miniconda3/envs/tf_image", required = T)Kita panggil setiap library yang dibutuhkan untuk membangun dan mengevaluasi klasifikasi gambar:
# EDA
library(dplyr)
library(tidyverse)
# Image manipulation
library(imager)
# Neural Network
library(keras)
library(tensorflow)
# Model evaluation
library(caret)Untuk memastikan berapa jumlah baris dan kolom pada data train dan data test menggunakan fungsi dim().
#> [1] 1150 38
Kemudian kita cek setiap tipe data dengan fungsi glimpse.
#> Rows: 1,150
#> Columns: 38
#> $ Image.Index <chr> "IMG_6886.jpg", "IMG_7701.jpg", "IMG_7023.jpg", "…
#> $ Patient.ID <int> 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1…
#> $ Finding.Labels <chr> "gado-gado", "soto-banjar", "rujak-cingur", "kue-…
#> $ asinan.jakarta <int> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0…
#> $ ayam.betutu <int> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0…
#> $ ayam.bumbu.rujak <int> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0…
#> $ ayam.goreng.lengkuas <int> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0…
#> $ bika.ambon <int> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0…
#> $ bir.pletok <int> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0…
#> $ bubur.manado <int> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0…
#> $ cendol <int> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0…
#> $ es.dawet <int> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0…
#> $ gado.gado <int> 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1…
#> $ gudeg <int> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0…
#> $ gulai.ikan.mas <int> 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0…
#> $ keladi <int> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0…
#> $ kerak.telor <int> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0…
#> $ klappertart <int> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0…
#> $ kolak <int> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0…
#> $ kue.lumpur <int> 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0…
#> $ kunyit.asam <int> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0…
#> $ laksa.bogor <int> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0…
#> $ lumpia.semarang <int> 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0…
#> $ mie.aceh <int> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0…
#> $ nagasari <int> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0…
#> $ nasi.goreng.kampung <int> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0…
#> $ papeda <int> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0…
#> $ pempek.palembang <int> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0…
#> $ rawon.surabaya <int> 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0…
#> $ rendang <int> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0…
#> $ rujak.cingur <int> 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0…
#> $ sate.ayam.madura <int> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0…
#> $ sate.lilit <int> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0…
#> $ sate.maranggi <int> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0…
#> $ soerabi <int> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0…
#> $ soto.ayam.lamongan <int> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0…
#> $ soto.banjar <int> 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0…
#> $ tahu.telur <int> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0…
Membuang kolom yang tidak diperlukan yaitu kolom
Patient.ID:
Berikut ini adalah penjelasan terkait variabel-variabel tersebut:
Image.Index : nama file dari gambar datasetFinding.Labels : kelas jenis makananYang menjadi target adalah kolom Finding
Labels.
Yang menjadi prediktor adalah data gambar pada folder
train yang direferensikan pada kolom Image Index.
Data tersebut sudah sesuai dengan tujuan project yang saya buat yaitu untuk melakukan klasifikasi jenis makanan dengan menggunakan data gambar
Karena data yang tersedia adalah data gambar dalam bentuk .jpg atau
.png, dan bukan dalam bentuk pixel, oleh karena itu tahapan yang
dilakukan pada proses data preparation antara lain: menggunakan fungsi
flow_images_from_directory.
Cara untuk mempersiapkan datanya adalah meletakkan gambar yang memiliki kelas yang sama di satu folder yang sama (yaitu sebanyak 34 jenis makanan sesuai dengan data). Misalnya seperti ini:
Alur untuk menggunakan flow_images_from_directory adalah
dengan membuat object image_data_generator, yaitu untuk
melakukan preprocessing data image kita. Alurnya sebagai berikut:
image_data_generator, untuk menentukan
preprocessing yang ingin dilakukanflow_images_from_directory.Tahapan lebih detail:
image_data_generator, image data generator
digunakan untuk menentukan preprocessing apa yang ingin dilakukan.flow_images_from_directory
menggunakan train_data_gen, sehingga data yang dibaca
langsung dilakukan preprocessing oleh train_data_gen.Mari kita jelajahi datanya terlebih dahulu sebelum membuat model. Dalam masalah klasifikasi gambar, merupakan praktik umum untuk meletakkan setiap gambar pada folder terpisah berdasarkan kelas/label target. Misalnya, di dalam folder train terdapat 34 folder berbeda. Dimana penjelasan mengenai proses foldering data-data tersebut sudah dijelaskan pada tahapan data collection.
Mari kita coba mendapatkan nama file setiap gambar. Pertama, kita
perlu mencari folder masing-masing kelas target. Kode berikut akan
memberikan nama folder di dalam folder train.
#> [1] "asinan-jakarta" "ayam-betutu" "ayam-bumbu-rujak"
#> [4] "ayam-goreng-lengkuas" "bika-ambon" "bir-pletok"
#> [7] "bubur-manado" "cendol" "es-dawet"
#> [10] "gado-gado" "gudeg" "gulai-ikan-mas"
#> [13] "keladi" "kerak-telor" "klappertart"
#> [16] "kolak" "kue-lumpur" "kunyit-asam"
#> [19] "laksa-bogor" "lumpia-semarang" "mie-aceh"
#> [22] "nagasari" "papeda" "pempek-palembang"
#> [25] "rawon-surabaya" "rendang" "rujak-cingur"
#> [28] "sate-ayam-madura" "sate-lilit" "sate-maranggi"
#> [31] "soerabi" "soto-ayam-lamongan" "soto-banjar"
#> [34] "tahu-telur"
Menggabungkan nama folder dengan path (lokasi file) atau direktori folder train untuk mengakses konten di dalam setiap folder.
#> [1] "data/train/asinan-jakarta/" "data/train/ayam-betutu/"
#> [3] "data/train/ayam-bumbu-rujak/" "data/train/ayam-goreng-lengkuas/"
#> [5] "data/train/bika-ambon/" "data/train/bir-pletok/"
#> [7] "data/train/bubur-manado/" "data/train/cendol/"
#> [9] "data/train/es-dawet/" "data/train/gado-gado/"
#> [11] "data/train/gudeg/" "data/train/gulai-ikan-mas/"
#> [13] "data/train/keladi/" "data/train/kerak-telor/"
#> [15] "data/train/klappertart/" "data/train/kolak/"
#> [17] "data/train/kue-lumpur/" "data/train/kunyit-asam/"
#> [19] "data/train/laksa-bogor/" "data/train/lumpia-semarang/"
#> [21] "data/train/mie-aceh/" "data/train/nagasari/"
#> [23] "data/train/papeda/" "data/train/pempek-palembang/"
#> [25] "data/train/rawon-surabaya/" "data/train/rendang/"
#> [27] "data/train/rujak-cingur/" "data/train/sate-ayam-madura/"
#> [29] "data/train/sate-lilit/" "data/train/sate-maranggi/"
#> [31] "data/train/soerabi/" "data/train/soto-ayam-lamongan/"
#> [33] "data/train/soto-banjar/" "data/train/tahu-telur/"
Kita akan menggunakan fungsi map() untuk mengulang atau mengulangi dan mengumpulkan nama file untuk setiap folder (rawon, gado-gado, rujak cingur). Map() akan mengembalikan daftar jadi jika kita ingin menggabungkan nama file dari 3 folder berbeda kita cukup menggunakan fungsi unlist().
# Get file name
file_name <- map(folder_path,
function(x) paste0(x, list.files(x))
) %>%
unlist()
# first 6 file name
head(file_name)#> [1] "data/train/asinan-jakarta/IMG_7841.jpg"
#> [2] "data/train/asinan-jakarta/IMG_7843.jpg"
#> [3] "data/train/asinan-jakarta/IMG_7844.jpg"
#> [4] "data/train/asinan-jakarta/IMG_7846.jpg"
#> [5] "data/train/asinan-jakarta/IMG_7847.jpg"
#> [6] "data/train/asinan-jakarta/IMG_7848.jpg"
Kita juga dapat memeriksa 6 gambar terakhir.
#> [1] "data/train/tahu-telur/IMG_8609.jpg" "data/train/tahu-telur/IMG_8610.jpg"
#> [3] "data/train/tahu-telur/IMG_8611.jpg" "data/train/tahu-telur/IMG_8614.jpg"
#> [5] "data/train/tahu-telur/IMG_8616.jpg" "data/train/tahu-telur/IMG_8618.jpg"
Mari kita periksa berapa banyak gambar yang kita miliki.
#> [1] 1150
Untuk memeriksa isi file, kita dapat menggunakan fungsi load.image() dari paket imager. Misalnya, mari kita visualisasikan 6 gambar dari data secara acak.
# Randomly select image
set.seed(99)
sample_image <- sample(file_name, 6)
# Load image into R
img <- map(sample_image, load.image)
# Plot image
par(mfrow = c(2, 3)) # Create 2 x 3 image grid
map(img, plot)#> [[1]]
#> Image. Width: 1326 pix Height: 711 pix Depth: 1 Colour channels: 3
#>
#> [[2]]
#> Image. Width: 1915 pix Height: 1123 pix Depth: 1 Colour channels: 3
#>
#> [[3]]
#> Image. Width: 1796 pix Height: 1682 pix Depth: 1 Colour channels: 3
#>
#> [[4]]
#> Image. Width: 2937 pix Height: 3006 pix Depth: 1 Colour channels: 3
#>
#> [[5]]
#> Image. Width: 2322 pix Height: 1643 pix Depth: 1 Colour channels: 3
#>
#> [[6]]
#> Image. Width: 2043 pix Height: 1692 pix Depth: 1 Colour channels: 3
Salah satu aspek penting dalam klasifikasi gambar adalah memahami dimensi input gambar. Anda perlu mengetahui distribusi dimensi gambar untuk membuat input dimensi yang tepat untuk membangun model pembelajaran mendalam. Mari kita periksa properti gambar pertama.
#> Image. Width: 3421 pix Height: 3046 pix Depth: 1 Colour channels: 3
Anda bisa mendapatkan informasi tentang dimensi gambar. Tinggi dan lebar mewakili tinggi dan lebar gambar dalam pixel. Colour channels mewakili apakah warna dalam format skala abu-abu (colour channels = 1) atau dalam format RGB (colour channels = 3). Untuk mendapatkan nilai setiap dimensi, kita bisa menggunakan fungsi dim(). Ini akan mengembalikan tinggi, lebar, depth, dan channels.
#> [1] 3421 3046 1 3
Jadi kita sudah berhasil memasukkan gambar dan mendapatkan dimensi
gambarnya. Pada kode berikut, kita akan membuat fungsi yang akan
langsung mendapatkan tinggi dan lebar gambar dan mengubahnya menjadi
data.frame.
# Function for acquiring width and height of an image
get_dim <- function(x){
img <- load.image(x)
df_img <- data.frame(height = height(img),
width = width(img),
filename = x
)
return(df_img)
}
get_dim(file_name[1])Sekarang kita akan mengambil sampel 100 gambar dari nama file dan mendapatkan tinggi dan lebar gambar. Kami menggunakan sampling di sini karena akan memakan waktu yang cukup lama untuk memuat semua gambar.
# Randomly get 100 sample images
set.seed(123)
sample_file <- sample(file_name, 100)
# Run the get_dim() function for each image
file_dim <- map_df(sample_file, get_dim)
head(file_dim, 10)Sekarang mari kita dapatkan statistik untuk dimensi gambar.
#> height width filename
#> Min. : 711 Min. : 902 Length:100
#> 1st Qu.:1118 1st Qu.:1600 Class :character
#> Median :1560 Median :2000 Mode :character
#> Mean :1644 Mean :2003
#> 3rd Qu.:2060 3rd Qu.:2334
#> Max. :3214 Max. :3414
Data gambar memiliki variasi dimensi yang besar. Beberapa gambar memiliki tinggi dengan minimal 711 pixel dan lebar dengan minimal 902 pixel, sementara gambar lainnya memiliki tinggi dengan maksimal hingga 3214 pixel dan lebar dengan maksimal hingga 3414 pixel. Memahami dimensi gambar akan membantu kita pada bagian proses selanjutnya yaitu data preprocessing.
Menggunakan algoritma Neural Network untuk melakukan klasifikasi gambar.
Fitur yang akan ada di dashboard adalah:
Dashboard klasifikasi gambar untuk mengenali jenis makanan dengan langkah seperti berikut:
Dashboard yang menampilkan suara pelafalan dari nama makanan yang keluar sebagai hasil klasifikasi. Skenarionya adalah ketika user memilih jenis makanan melalui dropdown menu misalnya rendang, kemudian ada tombol yang mampu mengeluarkan suara “rendang” (contohnya seperti google translate, ketika kita mengetikkan sebuah kata ada tombol icon sound dan ketika klik mengeluarkan suara pelafalan dari kata tersebut). Tujuannya adalah memudahkan wisatawan asing yang ingin membeli makanan tradisional tersebut tetapi tidak mengetahui bagaimana cara mengucapkan/melafalkan kata atau nama dari makanan tersebut.
Dashboard yang menampilkan fitur aksara bahasa lain atas hasil klasifikasi jenis makanan. Datanya akan saya ambil dengan menggunakan google translate atas 34 jenis makanan tersebut. Hasil google translatenya saya simpan dalam bentuk gambar. Jadi skenarionya, user memilih jenis makanan melalui dropdown menu, misalnya soto, kemudian akan muncul aksara bahasa lain yg ditampilkan, misalnya dalam aksara mandarin, jepang, dll. Tujuannya adalah untuk wisatawan asing yang baru berkunjung ke Indonesia yang membutuhkan nama makanan dalam tulisan asli mereka seperti jepang, mandarin, thailand, dll.
Dashboard yang menampilkan maps Indonesia. Terdapat menu untuk memilih jenis makanan, misalnya saat user memilih jenis makanan rawon, akan keluar informasi rawon berasal dari kota surabaya. Kemudian ada visualisasi yang menunjukkan titik kota surabaya pada sebuah maps. Tujuannya memberikan edukasi kepada user dimana letak kota asal dari makanan tradisional tersebut sehingga memungkinkan user yang ingin mengunjungi daerah tersebut sehingga juga mendorong pariwisata Indonesia.