Deteksi Objek dengan Tensorflow Object Detection API

Penulis: Ahmad Syaikhoni, Aris Ariyadi

Pembimbing/Editor: Amalia Zahra, S.Kom., Ph.D.

 

Kecerdasan buatan merupakan salah satu terobosan teknologi dalam ilmu pengetahuan, khususnya di bidang komputer. Deteksi dan pengenalan objek memberikan tantangan baru tentang bagaimana membuat mesin dapat mendeteksi objek secara otomatis. Membuat model machine learning yang memiliki fungsi untuk menentukan posisi dan mengidentifikasi banyak objek dalam sebuah gambar masih menjadi tantangan utama dalam computer vision. Saat ini, banyak sumber daya komputasi dan algoritma cerdas yang dapat melakukan hal tersebut, tetapi fitur ini hanya bisa diperoleh dengan melakukan konfigurasi mesin khusus untuk mendeteksi objek.

Gambar 1. Contoh deteksi objek dengan menggunakan Tensorflow Object Detection API

Pada tahun 2016, IEEE mempublikasikan jurnal berjudul “You Only Look Once: Unified, Real-Time Object Detection”. Jurnal tersebut memperkenalkan pendekatan baru untuk mendeteksi suatu objek pada gambar. Pada penelitian sebelumnya, metode yang digunakan adalah mengunakan pengklasifikasian ulang untuk melakukan deteksi.  Untuk mendeteksi suatu objek, sistem sebelumnya akan mengambil pengklasifikasi suatu objek dan mengevaluasinya di berbagai lokasi dan berbagai skala dalam gambar.

Pada pendekatan yang baru, pendeteksian objek dilakukan dengan membingkai/ framing objek yang akan dideteksi sebagai regression problem dan memisahkan spasial pada bounding boxes dan probabilities. Dengan mengunakan single neural network untuk memprediksi bounding boxes dan class probabilities dari seluruh gambar pada satu kali evaluasi. Karena  metode ini mengunakan single neural network untuk semua detection pipeline,  maka perfoma deteksi tersebut bisa dioptimasi dari endto-end (Redmon, Divvala, Girshick, & Farhadi, 2015) .

Sistem deteksi ini diberi nama “You Only Look Once (YOLO) Detection System” dengan kemampuan pada base model yang bisa memproses 45 frame per second secara realtime dan pada versi yang lebih kecil bisa memproses 155 frame per second secara real-time.

Pada jurnal European Conference on Computer Vision yang berjudul  “SSD: Single Shot MultiBox Detector”, diajukan sebuah metode untuk mengenali atau mendeteksi objek pada suatu gambar dengan mengunakan single deep neural network  dan menamakannya  single-shot detector (SSD) (Liu et al., 2016). SSD bekerja dengan algoritma yang relatif sederhana karena tidak melalui tahapan pembuatan proposal dan tahap feature resampling, melainkan melalui tahapan merangkum semua perhitungan dalam satu jaringan. Hal ini membuat metode SSD mudah untuk dilatih dan dapat langsung diintegrasikan ke sistem.

Google telah merilis Tensorflow Object Detection API untuk mempermudah pengembangan aplikasi Deep learning dengan menggunakan Tensorflow Object Detection API. TensorFlow Object Detection API adalah open source framework yang dapat digunakan untuk mengembangkan, melatih, dan menggunakan model deteksi objek.  Sistem ini sudah banyak diterapkan pada berbagai produk Google antara lain pencarian image,  deteksi wajah dan plat nomor kendaraan pada Google Streetview, Google Assistant, Waymo atau Self Driving Car, dan lain-lain (“Tensorflow Object Detection API,” n.d.)

API yang disediakan telah dilatih dengan dataset Common Object in Context (COCO)  yang terdiri 300.000 gambar berisi 90 jenis objek contoh dari objek tersebut, yang dapat dilihat pada Gambar 2 berikut ini.

Gambar 2. Klasifikasi dataset pada Common Object in Context (COCO)

API ini juga menyediakan  lima model berbeda yang masing-masing mempunyai trade-off antara kecepatan dan akurasi dalam mendeteksi objek. Model SSD dengan menggunakan MobileNet dapat berjalan dengan komputasi ringan, sehingga dapat dijalankan secara real time di perangkat seluler (Liu et al., 2016). Sedangkan model Faster-RCNN  lebih berat secara komputasi, tetapi menghasilkan pendeteksian yang jauh lebih akurat (Huang et al., 2017).

Tabel 1. Perbandingan Berbagai Model Deteksi Objek dan Performanya

Nilai mAP (mean Average Precision) menunjukkan tingkat akurasi deteksi objek dan letaknya. Nilai ini menjadi parameter utama untuk mengukur akurasi suatu model yang diaplikasikan dan seberapa bagus model tersebut untuk menangani objek tanpa ada kesalahan. Semakin tinggi nilai mAP, semakin tinggi pula akurasi yang didapat, namun sebagai konsekuensinya, kecepatan komputasi menjadi lebih rendah.

Tensorflow detection model terdiri dari:

  1. Model deteksi yang bisa dilatih:
    • Single Shot Multibox Detector (SSD) with MobileNet (Howard et al., 2017),
    • SSD with Inception V2,
    • Region-Based Fully Convolutional Networks (R-FCN) with Resnet 101,
    • Faster RCNN with Resnet 101,
    • Faster RCNN with Inception Resnet v2
  2. Frozen weights (yang di-training dengan COCO dataset) untuk masing-masing model untuk digunakan dalam inference out-of-the-box.
  3. Jupyter notebook untuk melakukan inferensi out-of-the-box dengan suatu model.
  4. Local training scripts, distributed training, dan evaluation pipelines dengan Google Cloud.

 

Cara Menggunakan API

Untuk tahap awal, percobaan dapat dimulai dengan menggunakan model yang paling ringan (ssd_mobilenet). Langkah-langkah utamanya adalah:

  1. Unduh frozen model (.pb – protobuf) dan load ke dalam memori.
  2. Gunakan built in helper code untuk me-load labels, categories, visualization tools, dan lain-lain.
  3. Buka sesi baru dan jalankan model pada suatu gambar.
  4. Keseluruhan tahapan yang harus dilakukan cukup sederhana. Dokumentasi API juga menyediakan Jupyter Notebook yang dapat digunakan untuk mempermudah mempelajari cara kerja program melalui catatan di setiap langkah yang ditempuh.
  5. Model ini memiliki kinerja yang cukup baik pada gambar sampel (Gambar 3).

Gambar 3. Deteksi Objek melalui Video

 

Untuk mengaplikasikan pendeteksi dalam objek video dapat menggunakan library OpenCV dengan langkah-langkah sebagai berikut:

  1. Gunakan fungsi VideoCapture() pada OpenCV untuk mengekstrak gambar dari video.
  2. Fungsi tersebut adalah dapat mengubah video menjadi potongan gambar (frame) untuk menjalankan deteksi objek pada setiap gambar yang diekstraksi dari video.
  3. Akhirnya semua gambar dari video yang telah diproses digabungkan menjadi video baru.

Kode ini membutuhkan waktu selama kurang lebih satu menit untuk dijalankan dan  dapat dilakukan di komputer tanpa GPU. Dengan hanya sedikit koding menggunakan Tensorflow API, kita dapat mendeteksi dan membuat bounding box pada sejumlah besar objek yang biasa ditemukan dengan akurasi yang baik.

Beberapa hal yang bisa dikembangkan lebih lanjut dari API ini adalah sebagai berikut:

  • Mencoba model overhead yang lebih akurat, tetapi beban komputasi lebih tinggi, lalu lihat berapa banyak perbedaan yang mereka buat.
  • Mencari tahu cara mempercepat API, sehingga dapat digunakan untuk deteksi objek secara real-time pada perangkat seluler.
  • Google juga menyediakan kemampuan untuk menggunakan model ini untuk melakukan transfer learning yaitu, memuat frozen models dan menambahkan lapisan output lain dengan kategori gambar yang berbeda.

 

Referensi

Howard, A. G., Zhu, M., Chen, B., Kalenichenko, D., Wang, W., Weyand, T., … Adam, H. (2017). MobileNets: Efficient Convolutional Neural Networks for Mobile Vision Applications. https://doi.org/arXiv:1704.04861

Huang, J., Rathod, V., Sun, C., Zhu, M., Korattikara, A., Fathi, A., … Murphy, K. (2017). Speed/accuracy trade-offs for modern convolutional object detectors. Proceedings – 30th IEEE Conference on Computer Vision and Pattern Recognition, CVPR 2017, 2017Janua, 3296–3305. https://doi.org/10.1109/CVPR.2017.351

Liu, W., Anguelov, D., Erhan, D., Szegedy, C., Reed, S., Fu, C. Y., & Berg, A. C. (2016). SSD: Single shot multibox detector. Lecture Notes in Computer Science (Including Subseries Lecture Notes in Artificial Intelligence and Lecture Notes in Bioinformatics), 9905 LNCS, 21–37. https://doi.org/10.1007/978-3-319-46448-0_2

Redmon, J., Divvala, S., Girshick, R., & Farhadi, A. (2015). You Only Look Once: Unified, Real-Time Object Detection. https://doi.org/10.1109/CVPR.2016.91

Tensorflow Object Detection API. (n.d.). Retrieved from https://github.com/tensorflow/models/tree/master/research/object_detection

Amalia Zahra