Menghasilkan Resep dari Gambar Makanan
Menghasilkan Resep dari Gambar Makanan
Pernahkah Anda melihat foto makanan dan bertanya-tanya bagaimana cara membuatnya? Namun sayangnya resep dari makanan tersebut tidak tersedia secara langsung dan Anda tidak mengetahui nama dari makanan tersebut sehingga Anda kesulitan mencari bahan dan cara membuat makanan tersebut secara manual. Bayangkan alangkah mudahnya jikalau Anda bisa dengan mudah mengetahui resep dari foto makanan yang Anda suka dan Anda dapat membuatnya sendiri.
Penelitian mengenai makanan dalam konteks visual baik dari citra maupun video sebenarnya sudah menjadi tantangan bagi para peneliti di computer vision. Prosenya tidak hanya sekedar image detection dan image recognition saja tetapi lebih daripada itu. Contohnya apabila Anda berhasil mendeteksi selada atau tomat pada citra burger, hal tersebut tidaklah cukup untuk membuat Anda mengerti berapa banyak kalori dalam makanan tersebut atau apakah makanan tersebut termasuk vegan atau tidak. Selain itu, makanan dan bahannya termasuk high intra class variability dan dapat terjadi perubahan bentuk/warna/ukuran dari bahan makanan setelah proses memasak.
Recipe1M (Mar´ın, et al., 2017) merupakan dataset yang sering digunakan untuk penelitian yang berhubungan dengan makanan. Dataset ini terdiri dari 1 juta resep masakan dan 800 ribu citra makanan, dimana tidak semua resep akan memiliki citra namun terdapat beberapa citra untuk resep yang sama. Gambar 1 menunjukkan persebaran data dari Recipe1M+. Dikarenakan ukuran dataset yang besar, mempermudah untuk melakukan penelitian mengenai makanan menggunakan deep learning yang membutuhkan data yang banyak seperti pada dataset ini.
Gambar 1 Statistik dari Recipe1M+ dataset.
Sumber: (Mar´ın, et al., 2017)
Amaia Salvador bersama tim dari MIT mengembangkan im2recipe retrieval (Salvador, et al., 2017) yang menggunakan pendekatan image retrieval. Pada penelitian ini setiap sampel disatu sisi akan tersusun dari resep makanan yang terdiri dari kumpulan bahan makanan serta cara memasaknya dan disisi lain juga akan tersusun dari citra makanan. Nantinya akan dilakukan encoding pada bahan makanan dan encoding pada cara memasaknya yang nantinya akan digunakan untuk membangun representasi pada resep makanan dengan ukuran tetap seperti Gambar 2 pada sisi kiri. Proses encoding pada bahan makanan dilakukan dengan menggabungkan urutan vektor dari kata-kata pada bahan makanan menggunakan bidirectional LSTM. Sedangkan proses encoding pada cara memasak dilakukan menggunakan model forward LSTM melalui vektor skip-instructions. Pada representasi citra makanan dilakukan dengan linear transformation menggunakan CNN seperti Gambar 2 pada sisi kanan. Tujuannya adalah mempelajari transformasi dari keduanya untuk dipetakan pada joint embedding space dari pasangan resep-citra yang berdekatan.
Gambar 2 Joint neural embedding model with semantic regularization
(Salvador, et al., 2017)
Namun sayangnya pendekatan menggunakan image retrieval memiliki kekurangan seperti Anda tidak dapat mengetahui resep dari citra yang Anda inginkan jika tidak tersedia di dalam database, Anda juga tidak dapat memanipulasi data yang telah ada seperti menggabungkan resep dari dua jenis makanan, dan juga Anda tidak bisa untuk mengubah resep yang telah ada. Satu citra makanan hanya akan mendapatkan satu resep atau list dari ranking yang ada di database. Maka dari itulah Amaia Salvador bersama tim Facebook AI mengembangkan ide untuk menghasilkan resep dari citra makanan dengan pendekatan generation problem.
Inverse cooking (Salvador, Drozdzal, Giro-i-Nieto, & Romero, 2019) merupakan recipe generation pertama yang berhasil menghasilkan resep masakan yang terdiri dari judul, bahan masakan dan cara memasaknya dari sebuah citra makanan. Penelitian ini menggunakan citra makanan sebagai input dan akan mengeluarkan output berupa serangkaian cara memasak dari hasil instruction decoder. Pertama input citra akan dilakukan pemrosesan ekstraksi fitur yang kemudian menjadi input pada ingredient decoder akan memprediksi bahan masakan yang digunakan. Hasil ekstraksi fitur sebelumnya dan gabungan dari fitur citra dan fitur bahan masakan akan menjadi input pada instruction decoder yang akan menghasilkan resep masakan tersebut.
Gambar 3 Recipe Generation Model
Sumber: (Salvador, Drozdzal, Giro-i-Nieto, & Romero, 2019)
Proses instruction decoder terinspirasi dari The Transformer Model (Vaswani, et al., 2017) yang berbasis pada attention. Proses ini memiliki 2 input yang berasal dari representasi citra dengan ResNet-50 dan ingredient embedding berdasarkan hasil decoding prediksi bahan masakan dan single embedding layer dari setiap bahan yang dipetakan kedalam vektor dengan ukuran tetap. Dikarenakan penerapan attention pada kedua modalitas yang bersamaan maka akan dibagi menjadi 3 strategi: concatenated attention (menggabungkan kedua embedding lalu diaplikasikan attention), independent attention (attention diaplikasikan sendiri-sendiri baik pada image embedding maupun ingredient embedding lalu digabungkan dengan operasi pertambahan), dan sequential attention (attention diterapkan satu per satu seperti mengaplikasikan attention pada image embedding terlebih dahulu baru setelahnya diterapkan di ingredient embedding, begitu juga sebaliknya).
Gambar 4 Instruction decoder
Sumber: (Salvador, Drozdzal, Giro-i-Nieto, & Romero, 2019)
Gambar 5 adalah contoh dari hasil recipe generation oleh sistem dimana terlihat bahwa sistem cukup berhasil untuk memprediksi resep yang digunakan untuk membuat minuman martini tersebut. Disini sistem berhasil memprediksi bahan yang ada pada minuman tersebut walaupun warna maupun bentuk masing-masing bahan sebelum tercampur berbeda dan hasil akhir minuman menghasilkan warna yang berbeda setelah dicampur, namun sistem masih dapat mengenali bahan utama dari resep minuman tersebut. Walaupun terdapat beberapa bahan yang memang tidak digunakan pada resep asli namun tidak mengurangi esensi dari bahan utama yang digunakan pada pembuatan minuman martini tersebut.
Dengan adanya penelitian ini diharapkan akan membukakan jalan untuk beberapa topik penelitian lainnya pada bidang makanan seperti jumlah/berat/banyaknya bahan makanan yang digunakan berdasarkan gambar makanan tersebut, jumlah kalori yang dihasilkan dari gambar makanan, dll.
Gambar 5 Perbandingan hasil resep asli dan resep dari recipe generation model
(Salvador, Drozdzal, Giro-i-Nieto, & Romero, 2019)
Gambar 6 adalah bentuk keisengan salah satu pengguna twitter @jonathanfly yang untuk mencoba memasukkan gambar selain gambar makanan pada sistem recipe generation tersebut.
Gambar 6 Pikachu di Facebook Recipe AI.
Sumber: @jonathanfly
Untuk mencoba kedua penelitian tersebut, dapat mengunjungi link berikut untuk mendapatkan dataset dan code github:
im2recipe: http://im2recipe.csail.mit.edu/
Inverse cooking: https://github.com/facebookresearch/inversecooking
References
Fly, J. (2019, Juni 18). @jonathanfly. Retrieved from Twitter: https://twitter.com/jonathanfly/status/1140817123754893312
Mar´ın, J., Biswas, A., Ofli, F., Hynes, N., Salvador, A., Aytar, Y., . . . Torralba, A. (2017). Recipe1M+: A Dataset for Learning Cross-Modal Embeddings for Cooking Recipes and Food Images. IEEE TRANSACTIONS ON PATTERN ANALYSIS AND MACHINE INTELLIGENCE.
Salvador, A., Drozdzal, M., Giro-i-Nieto, X., & Romero, A. (2019). Inverse Cooking: Recipe Generation from Food Images. The IEEE Conference on Computer Vision and Pattern Recognition (CVPR).
Salvador, A., Hynes, N., Aytar, Y., Marin, J., Ofl, F., Weber, I., & Torralba, A. (2017). Learning Cross-modal Embeddings for Cooking Recipes and Food Images. IEEE Conference on Computer Vision and Pattern Recognition.
Synced. (2019, June 21). From Foodie Pic to Your Plate: Generating Recipes With Facebook AI. Retrieved from Medium: https://medium.com/syncedreview/from-foodie-pic-to-your-plate-generating-recipes-with-facebook-ai-bd1d83c8e22a
Vaswani, A., Shazeer, N., Parmar, N., Uszkoreit, J., Jones, L., Gomez, A. N., . . . Polosukhin, I. (2017). Attention Is All You Need. 31st Conference on Neural Information Processing Systems (NIPS 2017). Long Beach, CA, USA.