Transfer Learning: Solusi Deep Learning dengan Data Sedikit

Salah satu permasalahan yang sering dialami ketika menggunakan deep learning adalah jumlah data yang sedikit. Di luar sana, sebenernya ada banyak solusi yang ditawarkan untuk mengatasi masalah ini. Nah, di sini kita akan bahas salah satunya, yakni Transfer Learning. Artikel ini akan berfokus pada teori di baliknya, sedangkan untuk implementasi akan ada di artikel selanjutnya.

Model Deep Learning

Sebelum masuk lebih dalam ke transfer learning, saya ingin mengingatkan sedikit tentang bagaimana konsep deep learning (secara umum machine learning) bekerja.

Suatu agen cerdas yang menggunakan deep learning bekerja menggunakan data. Kita berikan data yang banyak untuk dipelajari, kita lakukan proses training/belajar, lalu kita akan mendapat model/agen yang cerdas.

Lalu muncul pertanyaan..

Proses pencarian data itu rumit, proses training itu makan waktu, kenapa kita tidak download saja model cerdas yang ada di internet lalu kita gunakan untuk masalah kita? tidak perlu train, dan tidak perlu ada data, beres kan?

Transfer Learning

Ide utama dari transfer learning ini kira-kira seperti ini,

Kita gunakan model yang sudah dicerdaskan orang lain untuk permasalahan kita, yang bahkan bisa jadi berbeda

Sebagai contoh, kita mau membuat sistem untuk menghitung kendaraan beserta jenisnya menggunakan kamera CCTV. Jika jenis kendaraannya yang ingin dideteksi cukup umum, semisal “mobil” atau “truk”, kita bisa jadi cukup browsing-browsing, dan kita akan menemukan orang yang sudah membuat model deep learningnya. Kita tinggal download, pakai, dan selesai! Kita telah memiliki model cerdas deep learning yang mampu mendeteksi mobil atau truk. Tanpa perlu mencari data, tanpa perlu melatih model.

Tapi seringnya permasalahan yang kita miliki sedikit berbeda. Sedikit saja perbedaan, maka kita sudah tidak bisa lagi pakai model orang lain ini. Contohnya, kita tidak hanya ingin mendeteksi “mobil” dan “truk” tapi juga “becak”. Permasalahannya, “becak” itu bukan kendaraan yang di mana-mana ada. Sangat mungkin model yang kita download tadi belum bisa mendeteksi becak.

Di sinilah, kita butuh transfer learning. Kembali ke ide utama di atas, dengan transfer learning, kita bisa memanfaatkan model orang lain yang sudah dilatih, untuk permasalahan kita yang berbeda.

Jadi ada 3 poin yang kita bahas di sini:

  • Model yang sudah dicerdaskan
  • Cara menggunakan model tersebut
  • Permasalahan yang (bisa jadi) berbeda

Oh ya, sebelum masuk lebih dalam, konsep Transfer Learning ini berlaku tidak hanya untuk arsitektur CNN saja. Tapi pada tutorial ini saya akan banyak mencontohkan menggunakan CNN karena lebih mudah dibayangkan.

Continue reading

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

Software for online teaching for Ubuntu users

Last semester all lectures were 100% online. Very challenging, especially for me, who uses a computer with the Ubuntu operating system. It isn’t very easy when recommended online teaching software only compatible with Windows/macOS. In this article, I will share some useful software for teaching online for Ubuntu users. While teaching online during this pandemic, I have been greatly helped by this software. Hopefully, it is useful for readers out there.

Simple Screen Recorder

The first software I want to share is screen recording software. Because when teaching online, sometimes I have to make video tutorials for my classes. In my opinoin, Simple Screen Recorder is the best choice. The features I want to highlight:

  • Simple. Super simple. I have tried several other screen recording software on Ubuntu, but none are as complete and straightforward as a simple screen recorder.
  • Can record by a window, follow the mouse, or a specific area on the screen. Another alternative that I’ve ever done to make a recorded video is to use Zoom. But in the zoom, there is no option to capture a particular area. It’s quite useful when we want to record with a “cheat sheet” on the screen.
  • Video quality settings are also very easy. I usually use “youtube” quality with a frame rate of 30. The resulting video will have reasonable quality with reasonable file size. A video of approximately 10 minutes will be around 25 MB in size.
  • The feature I like the most is their short cut. Yups, I can set my short cut so that the record-stop-save process can quickly be done behind the scenes. As long as the application is running, even though it is in a minimized state, I just need to press my shortcut button, and then the software will start recording the screen. I press it again, and then the video will be saved. Super simple.

I experienced the drawback with Simple Screen Recorder when I wanted to record an audio source from a laptop (e.g., I want to displayed sound/video). The audio source cannot be changed in the middle of the recording. For example, suppose you want to record audio from a computer and a mic. In that case, you have to separate it into two different videos or use other software, for example, Zoom or Kazam (which, in my opinion, is not simple).

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