Caffe Deep Learning Framework



Caffe Deep Learning Framework (http://caffe.berkeleyvision.org/) merupakan salah satu dari sekian banyak deep learning framework yang dapat digunakan untuk merancang dan menjalankan klasifier neural network. Mengapa Caffe saya pilih? Kembali ke pertengahan tahun 2014, ketika pertama kali saya melakukan penelitian tentang deep learning dan hanya beberapa framework yang tersedia, diantaranya adalah Caffe, Theano, dan DeepLearning4J. DeepLearning4J tidak mungkin saya pilih karena pada waktu itu hanya terdapat interface ke Java dan C++. Theano merupakan kandidat kedua dan saya menggunakannya dalam beberapa bulan, tetapi saya cukup mempelajari bagaimana menggunakan Theano untuk merancang suatu neural network klasifier. Pilihan terakhir adalah Caffe dan ternyata saya cukup mudah mempelajari bagaimana Caffe bekerja. Dari akhir tahun 2014 hingga tahun 2017, cukup banyak pula para peneliti yang menggunakan framework tersebut sehingga tersedia banyak dukungan untuk troubleshooting. Hingga saat ini, Caffe masih merupakan deep learning framework yang paling banyak digunakan oleh para peneliti.


Saya cukup jabarkan beberapa keuntungan menggunakan Caffe,
  • Instalasi mudah. Saya sangat familiar dengan Linux dan pengembang Caffe pada saat itu juga menggunakan Linux, sehingga bugs yang timbul sangat minim dan instalasi cukup mudah karena saya telah familiar dengan lingkungan OS Linux.
  • Perancangan klasifier mudah. Yang Anda butuhkan adalah mengubah file prototxt, yaitu file dengan format google protobuf (format penulisan kurang lebih mirip dengan JSON) dan klasifier siap untuk digunakan.
  • Tools cukup lengkap. Tools yang tersedia dalam standard Caffe framework sangat cukup untuk melakukan penilitian, terutama untuk penelitian tentang klasifikasi (pengenalan) citra. Untuk melakukan training (pelatihan), yang diperlukan hanya konversi data ke format yang didukung (LMDB atau LEVELDB) dan training siap dilakukan dengan menggunakan command line saja (tanpa coding sedikit pun).
  • Interface ke python dan C++. Interface ke python dan C++ merupakan salah keuntungan yang banyak saya gunakan. Meskipun saya lebih banyak menggunakan python untuk melakukan interface dengan Caffe, tetapi dalam beberapa kesempatan dan implementasi akhir produk, C++ merupakan bahasa pemrograman yang akan dipilih.
Tidak fair rasanya jika kelemahan dari Caffe juga dijabarkan,
  • Beberapa fitur neural network tidak tersedia. Dalam versi awalnya, Caffe hanya mendukung fasilitas neural network yang digunakan untuk citra saja. Fitur untuk data, seperti teks dan korpus, tidak tersedia, sehingga para peneliti harus mengembangkan sendiri fitur yang dibutuhkan. Seiring dengan perkembangannya, fitur-fitur custom yang dikembangkan juga dapat ditemukan di situs repository, seperti github.com.
  • LMDB dan LEVELDB. Pengubahan training data ke format LMDB atau LEVELDB merupakan salah satu cara yang digunakan Caffe untuk mereduksi I/O cost dalam membaca data. LMDB dan LEVELDB memang terkenal sangat cepat dalam melakukan pembacaan dari harddisk, tetapi juga sangat boros memori (^_^) dan akan menambah storage harddisk (karena ada dua data dengan format berbeda, data training mentah dan data training LMDB atau LEVELDB). Dalam beberapa kesempatan saya juga mengembangkan sendiri fitur untuk membaca data custom, tetapi hasil akhirnya adalah I/O deadlock, yaitu ketika waktu untuk membaca data lebih lama daripada mengeksekusi data tersebut untuk training.
  • Dokumentasi tidak terlalu lengkap. Untuk masalah dokumentasi, Caffe mempunyai dokumentasi cukup lengkap yang dapat dibuat dengan menggunakan aplikasi doxygen. Hanya saja dokumentasi tersebut bersifat seadanya dan para pengguna lebih mengandalkan forum dan situs-situs pertanyaan seperti stackoverflow.com.
Untuk perbandingan fitur pada saat ini, Caffe telah kalah dengan beberapa framework yang dikembangkan oleh perusahaan besar, seperti Caffe2 (Facebook), TensorFlow(Google), dan CNTK (Microsoft). Untuk lebih lengkap tentang perbandingan fitur deep learning framework dapat dilihat di halaman wikipedia berikut: https://en.wikipedia.org/wiki/Comparison_of_deep_learning_software


Komentar

Postingan populer dari blog ini

Deskripsi: Fine-Grained Classification

Pengacakan List / Array