Image Classification dengan CNN dan Tensorflow

Pada artikel ini saya akan menjelaskan secara ringkas langkah-langkah penggunaan Tensorflow untuk Image Classification / Klasifikasi Citra. Perlu dicatat, saya menggunakan Tensorflow versi 2 yang mungkin berbeda dengan Tensorflow versi 1. Selain itu, saya garis bawahi lagi artikel ini membahas image classification (menentukan ini gambar apa), bukan detection (menentukan objek apa dan di mana pada gambar). Secara alur, pada artikel ini saya mengembangkan dari artikel sebelumnya tentang implementasi CNN menggunakan PyTorch

Dataset

Dataset yang akan kita gunakan adalah citra barang-barang yang ada di sebuah toko (dimodifikasi dari Freiburg Groceries Dataset) yang terdiri dari 5 kelas, yakni citra produk Susu (MILK), Air mineral (WATER), soda (SODA), jus (JUICE), dan cuka (VINEGAR). Total terdapat sekitar 900-an gambar untuk pelatihan dan 120 gambar untuk pengujian. Semua citra berukuran sama, yakni 256×256 pixel. Dataset dan code bisa di-download di repository berikut.

salah satu citra dengan kelas “Juice”

Kita akan menggunakan dataset yang ada pada folder “train” untuk pelatihan dan yang ada pada folder “test” untuk pengujian. Pada tutorial ini kita masih belum menggunakan teknik validasi seperti menggunakan data validasi atau cross-validation.

Pre-Processing

Jika diperhatikan, format folder dataset yang telah di-download adalah seperti berikut.

dataset/
   train/
      kelas_1/
         citra_103.png
         citra_22.png
         ...
      kelas_2/
         citra_123.png
         citra_324.png
         ...
      ...
   test/
      ...

Format tersebut adalah format standar untuk image classification. Ketika format foldernya sudah seperti itu, beberapa framework seperti Tenorsflow atau PyTorch sudah menyediakan cara mudah untuk meload data. Pada Tensorflow kita bisa menggunakan perintah berikut untuk meload dataset.

from tensorflow.keras.preprocessing.image import ImageDataGenerator

datagen = ImageDataGenerator(rescale=1/255.) # pre-processor
datatrain = DirectoryIterator('train', datagen) # load data train dari folder train/
datatest = DirectoryIterator('test', datagen) # load data test dari folder test/
Continue reading

Review software untuk mengajar online di Ubuntu

Semester ganjil perkuliahan 2020/2021 Informatika UII dilalui dengan 100% online. Penuh tantangan, khususnya bagi saya yang menggunakan komputer dengan sistem operasi Ubuntu. Sulit sekali ketika ada software-software yang disarankan teman untuk digunakan tetapi tidak bisa digunakan karena terkendala OS. Pada artikel ini saya akan sharing, beberapa software yang bermanfaat untuk mengajar online di Ubuntu. Selama mengajar online semasa pandemi ini, saya sangat terbantu dengan software-software ini. Semoga bermanfaat juga untuk pembaca di luar sana.

Simple Screen Recorder

Software pertama yang ingin saya share adalah software untuk merekam layar. Karena ketika mengajar online saya beberapa kali harus membuat video tutorial, simple screen recorder adalah aplikasi terbaik menurut saya. Beberapa fitur yang ingin saya highlight:

pengaturan simple screen recorder
  • Simpel. Super simpel. Saya sudah coba beberapa software perekam layar lain di Ubuntu tetapi tidak ada yang sesimpel dan selengkap simple screen recorder.
  • Bisa merekam berdasarkan jendela, mengikuti mouse, atau area tertentu pada layar. Sebenarnya alternatif lain yang pernah saya lakukan untuk membuat video rekaman adalah menggunakan Zoom. Tapi di zoom tidak ada pilihan untuk merekampada area tertentu. Lumayan bermanfaat ketika kita mau merekam dengan “contekan” di layar.
  • Pengaturan kualitas video juga sangat mudah. Settingan yang saya pakai biasanya adalah kualitas “youtube” dengan frame rate 30. Video yang dihasilkan akan berada pada kualitas wajar dengan ukuran file yang juga wajar. Video sekitar 10 menit akan berukuran sekitar 25 MB.
  • Fitur yang paling saya suka adalah short cut. Yups, saya bisa mengatur short cut saya sendiri sehingga proses rekam-stop-simpan bisa dengan mudah dilakukan dibalik layar. Selama aplikasi sudah jalan, meskipun dalam keadaan minimize saya tinggal pencet short cut saya, maka layar akan terekam, saya pencet lagi, video akan tersimpan. Super simpel.

Kekurangan yang saya alami di Simple Screen Recorder adalah ketika saya ingin merekam audio dari laptop (misalnya ada suara/video yang saya tampilkan juga). Pemilihan sumber audio yang akan digunakan tidak bisa diubah-ubah ditengah-tengah perekaman, jadi semisal mau merekam audio dari komputer sekaligus dari mic, harus terpisah jadi dua video berbeda atau menggunakan software lain, Zoom misalnya atau Kazam (yang menurut saya tidak simpel).

Continue reading

Istilah penting di Neural Network dan Deep Learning (bagian 2)

Artikel ini adalah kelanjutan dari artikel sebelumnya tentang istilah-istilah di neural network ataupun deep learning bagian kedua. Sama seperti artikel sebelumnya, artikel ini bertujuan untuk menjelaskan istilah-istilah penting di neural network.

Error vs Akurasi

Error dan akurasi adalah 2 metode pengukuran performa model machine learning. Model machine learning pada umumnya akan menggunakan fungsi error (atau sering disebut juga loss/cost function) sebagai acuan untuk memperbaiki modelnya (a.k.a belajar). Hampir kebanyakan model machine learning termasuk deep learning menggunakan algoritma optimasi untuk meminimalkan error yang dihasilkan. Artinya, semakin kecil error yang dihasilkan akan semakin baik.

Pada proses training yang benar, grafik eror akan turun dan grafik akurasi akan naik

Sedangkan akurasi adalah pengukuran yang lebih “mudah” dipahami manusia. Biasanya akurasi tidak digunakan untuk acuan model belajar melainkan hanya untuk membantu manusia memahami sebaik apa model yang telah dihasilkan. Misalnya jika diketahui ada model yang mampu mendeteksi suatu penyakit dengan akurasi 90%, maka kita langsung bisa paham artinya dalam 100 kali percobaan ada kemungkinan sekitar 10 percobaan akan gagal. Hal tersebut lebih mudah dipahami oleh manusia ketimbang kita bliang: suatu model memiliki error 0.002 ._. Dari definisi tersebut, dapat dilihat semakin tinggi nilai akurasi akan semakin baik.

Juga perlu diketahui, ketika kita bilang “akurasi”, sebenarnya kita merujuk ke suatu rumus yang spesifik. Sedangkan istilah “error” adalah istilah yang lebih lebih umum, rumusnya ada banyak, misalnya log-likelihood. Metode pengukuran lain yang mudah dipahami selain akurasi adalah F1-Score yang biasa digunakan untuk mengevaluasi model dengan data yang classnya tidak seimbang (imbalance)

oh ya, saya juga dulu pernah bertanya di AI.SE tentang pemilihan model berdasar akurasi atau error di sini

Continue reading

Tips Mengerjakan TOEFL ITP Online

Sebelumnya saya menulis pengalaman mendaftar dan mengikuti TOEFL ITP Online pada artikel Pengalaman TOEFL ITP Online. Kali ini akan saya share tips mengerjakan TOEFL ITP Online dan detil tiap sesinya!

1. Section 1 Listening Comprehension

Waktu : 35 menit, Jumlah : 50 soal.
Ketika memulai sesi ini, waktu akan berjalan dan audio soal akan berbunyi (Jika waktu sudah jalan, tapi tidak terdengar audio, langsung lambai-lambai ke webcam agar tes bisa dipause oleh proctor). Meskipun disebutkan maksimal pengerjaan sesi listening 35 menit, namun pada tiap soal dibatasi waktu pengerjaannya, mungkin sekitar 5-10 detik saya agak lupa. Akan ada notif semacam loading bar tertampil di layar untuk setiap soal. Jika waktu per soal habis (loading bar sudah mentok), maka otomatis layar menampilkan soal selanjutnya. Pastikan menjawab semua soal, karena setelah sampai di soal terakhir kita tidak bisa mengulang mendengarkan audio soal, meskipun waktu pengerjaan kita belum sampai 35 menit.

Continue reading
memahami istilah-istilah deep learning

Istilah-Istilah di Neural Network ataupun Deep Learning (bagian 1)

Semester ini saya dapat kesempatan mengajar kelas Deep Learning di Program Studi S1 Informatika UII. Selama mengajari mahasiswa yang mayoritas masih awam dengan Deep Learning, bahkan Neural Network, saya merasakan ternyata banyak sekali istilah-istilah di Neural Network ataupun Deep Learning yang mungkin sulit untuk dipahami.

Karenanya, artikel ini saya buat dengan harapan dapat membantu teman-teman yang sedang belajar Neural Network ataupun Deep Learning untuk memahami istilah-istilah tersebut. Jika ada istilah-istilah yang belum tersampaikan / kurang jelas / malah salah maknanya silakan tulis di komentar ya 🙂

AI vs Machine Learning vs Neural Network vs Deep Learning

Kalau di kelas, saya menggambarkan diagram venn hubungan keempatnya seperti berikut ini.

John McCarthy, orang pertama yang memunculkan istilah Artificial Intelligence (AI) memberi definisi AI adalah “Science and engineering of making intelligent machines”1 atau saya sering mendefinisikan sendiri sebagai sekumpulan metode yang digunakan agar komputer dapat meniru atau bahkan melampaui kecerdasan manusia2.

Nah, Machine Learning merupakan salah satu teknik di bidang AI untuk membuat mesin mampu belajar dari data tanpa perlu diprogram secara eksplisit. Salah satu algoritma machine learning yang bisa digunakan adalah Neural Network (jaringan saraf tiruan). Suatu program yang memiliki banyak if-else, dapat meniru kecerdasan manusia (AI), namun bukan termasuk machine learning karena program tidak belajar dari data, melainkan dengan ditulis secara ekspliti oleh programmer.

Neural Network (NN) mencerdaskan mesin dengan membangun model matematika yang (berusaha) meniru bagaimana sel saraf bekerja. Pada NN bagian-bagian kecil (sel saraf) dirangkai untuk menciptakan arsitektur jaringan saraf yang sesuai untuk suatu masalah.

Continue reading