Object Detection dengan PyTorch Detectron 2 dan Colab

Pada tutorial ini kita akan coba membuat object detection model dengan custom dataset kita sendiri menggunakan PyTorch Detectron 2.

Facebook Detectron 2 adalah salah satu python framework yang dapat digunakan untuk kasus object detection. Detectron dikembangkan oleh Facebook dengan menggunakan basis PyTorch sebagai deep learning frameworknya. Bagi yang belum tahu tentang PyTorch, bisa cek website resminya atau kunjungi tutorial kami sebelumnya di sini.

Framework lain untuk deteksi objek yang cukup populer adalah Tensorflow object-detection API (TFOD) yang dikembangkan oleh Google. Keduanya hampir memiliki fitur utama yang sama, salah satunya mereka menyediakan Model Zoo, di mana kita bisa mulai proses training menggunakan model yang sudah ada (pretrained model).

Detectron 2 Tutorial

Pada tutorial ini kita akan menggunakan Google Colab. Contoh code yang akan dibahas pada artikel ini tersedia di sini.

Detectron 2 Logo
  1. Dataset
  2. Instalasi
  3. Menyiapkan DatasetCatalog
  4. Training Model
  5. Save and Load Model

1. Dataset

Dataset yang akan kita gunakan sama dengan dataset dari tutorial sebelumnya. Kita akan mendeteksi pada suatu citra apakah ada kangguru atau rakun. Penjelasan detail format data dan bagaimana memprosesnya dapat dilihat pada artikel sebelumnya. Tapi, karena artikel sebelumnya digunakan untuk object detection dengan Tensorflow sedangkan kita di sini akan menggunakan PyTorch Detectron, maka kita tidak perlu memproses data sampai membuat file tfrecord, cukup sampai bagian membuat file csv.

Dataset latihan dapat didownload melalui github dengan menuliskan perintah berikut di google colab. Detail dataset dapat dibaca di file Readme:

! git clone https://github.com/rianrajagede/object-detection.git
Continue reading

Pengenalan Autoencoder : neural network untuk kompresi data

Autoencoder

Autoencoder adalah salah satu varian dari jaringan saraf tiruan (JST) yang secara umum digunakan untuk meng-“encode” suatu data. Berbeda dengan arsitektur JST pada umumnya yang dilatih untuk mengklasifikasi atau menghitung nilai regresi dari masukan, autoencoder dilatih untuk dapat menghasilkan output yang sama dengan inputnya. Autoencoder termasuk pada kategori Unsupervised Learning karena dilatih dengan menerima data tanpa label.

Traditional Neural Network vs Autoencoder

Pada ilustrasi tersebut, arsitektur di bagian atas adalah arsiktektur JST yang digunakan untuk mengklasifikasi citra bahan makanan di supermarket. Pada bagian bawah merupakan arsitektur autoencoder.

Lalu apa tujuannya sebuah model dilatih untuk menghasilkan citra yang sama?

Jika diperhatikan pada ilustrasi di atas, bagian yang menarik adalah bagian tengah autoencoder yang berupa sebuah vektor kumpulan neuron (ditandai dengan kotak warna kuning). Bagian tengah ini biasanya memiliki jumlah neuron yang lebih kecil dibanding layer di kanan atau kirinya (termasuk layer input dan outputnya). Sehingga jika model dapat dilatih dengan baik, bisa dikatakan bagian tengah ini merupakan representasi sederhana dari citra yang menjadi input. Apa maksud representasi sederhana? Karena vektor ini diperoleh dari citra input melalui arsitektur jaringan saraf tiruan (Encode), lalu dari vektor yang kecil ini bisa dibuat kembali citra yang serupa dengan inputnya (Decode).

Continue reading

Convolutional Neural Network (CNN) menggunakan PyTorch

Artikel ini akan langsung berfokus pada implementasi Convolutional Neural Network (CNN) menggunakan PyTorch. Bagi yang ingin memperdalam teori dibalik CNN terlebih dahulu bisa baca pada link artikel sebelumnya yang berisi kumpulan sumber belajar CNN dan jika ingin memperdalam PyTorch, juga bisa baca artikel sebelumnya tentang PyTorch.

Dataset

Kita akan menggunakan Convolutional Neural Network untuk mengklasifikasi citra barang-barang yang ada di sebuah toko (Freiburg Groceries Dataset). Dataset dan code bisa didownload di repository berikut.

Dataset yang digunakan jumlahnya akan lebih sedikit dari dataset asli agar mempercepat proses pelatihan. Dataset pada repo yang kita gunakan hanya terdiri dari 5 kelas, yakni citra produk Susu (MILK), Air mineral (WATER), soda (SODA), jus (JUICE), dan cuka (VINEGAR), dengan sekitar 900-an gambar untuk pelatihan dan 120 gambar untuk pengujian. Semua citra berukuran sama, yakni 256×256 pixel.

Convolutional Neural Network Data
salah satu citra dengan kelas “MILK”

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.

Continue reading