Bu makalede sunulan çalışmanın amacı, mobil cihazlar tarafından çekilen görüntülerden yiyecek ve içecek öğelerinin otomatik olarak tanınması için teknoloji geliştirmektir. Teknoloji iki farklı yaklaşımdan oluşur – birincisi gıda görüntüsü tanımayı gerçekleştirirken ikincisi gıda görüntüsü segmentasyonunu gerçekleştirir.
Manuel diyet değerlendirme yaklaşımları ile ilgili sorunlar ve maliyetler nedeniyle, işi kolaylaştırmak ve hızlandırmak ve kalitesini artırmak için otomatik çözümler gereklidir. Bugün, otomatik çözümler, bir kişinin diyet alımını akıllı telefon kamerasıyla görüntü çekmek gibi çok daha basit bir şekilde kaydedebilir. Bu yazıda, diyet değerlendirmesine yönelik bu tür görüntü tabanlı yaklaşımlara odaklanacağız. Gıda görüntü tanıma sorunu için derin sinir ağları son yıllarda en son teknolojiye ulaştı ve bu alandaki çalışmalarımızı sunuyoruz. Özellikle, ilk olarak NutriNet adı verilen derin bir sinir ağı mimarisi kullanarak yiyecek ve içecek görüntü tanıma yöntemini açıklıyoruz. Bu yöntem, derin öğrenme tabanlı yiyecek görüntüsü tanımanın ilk günlerinde yapılan çoğu araştırma gibi, görüntü başına bir çıktı ile sınırlıdır ve bu nedenle birden fazla yiyecek veya içecek öğesine sahip görüntüler için uygun değildir. Bu nedenle, gıda görüntüsü segmentasyonunu gerçekleştiren yaklaşımlar, görüntüdeki herhangi bir sayıda yiyecek veya içecek öğesini tanımlayabildikleri için önemli ölçüde daha sağlamdır. Bu nedenle, gıda görüntüsü segmentasyonu için iki yöntem de sunuyoruz – biri tamamen konvolüsyonal ağlara (FCN’ler) ve diğeri derin artık ağlara (ResNet) dayanmaktadır.
Diyet değerlendirmesi, bireyin diyetinin eyleme geçilebilir alanlarını belirlemede önemli bir adımdır. Bununla birlikte, geleneksel manuel yaklaşımlar kullanarak diyet değerlendirmesi yapmak önemli maliyetlerle ilişkilidir. Bu yaklaşımlar, genellikle birey tarafından kendi kendini raporlamaya dayandığı için hatalara da eğilimlidir. Otomatik diyet değerlendirmesi, gıda alımını ölçmek ve nitelemenin daha basit bir yolunu sağlayarak bu sorunları ele eder. Böyle bir yaklaşım, kaçırılan yemekler, gıda hacmini doğru bir şekilde değerlendirememe gibi manuel yaklaşımlarda bulunan bazı hataları da hafifletebilir. Bu nedenle, farklı yiyecek ve içecekleri tanımlayan ve gıda alımını ölçen çözümler geliştirerek diyet değerlendirmesini otomatikleştirmenin açık yararları vardır1. Bu çözümler, yiyecek ve içecek öğelerinin (bundan böyle ‘gıda maddeleri’) besin değerlerinin tahmin edilmesini sağlamak için de kullanılabilir. Sonuç olarak, otomatik diyet değerlendirmesi birden fazla uygulama için yararlıdır – diyetisyenlerin hastalarının diyetlerini daha kolay ve doğru bir şekilde izlemelerine ve analiz etmelerine izin vermek gibi kesinlikle tıbbi kullanımlardan, genel popülasyonu hedefleyen refah uygulamalarının içindeki kullanıma kadar.
Gıda maddelerini görüntülerden otomatik olarak tanımak zorlu bir bilgisayar görme sorunudur. Bunun nedeni, yiyeceklerin tipik olarak deforme olabilen nesneler olması ve gıda maddesinin görsel bilgilerinin büyük bir kısmının hazırlanması sırasında kaybedilebilmesidir. Ek olarak, farklı yiyecekler birbirine çok benzer görünebilir ve aynı yiyecek birden fazla görüntüde önemli ölçüde farklı görünebilir2. Ayrıca, tanıma doğruluğu görüntü kalitesi, gıda maddesinin başka bir öğe tarafından engellenip engellenmediği, görüntünün çekildiği mesafe vb. İçecek öğelerini tanımak, bir görüntüde bulunan sınırlı miktarda görsel bilgi olan kendi zorluk kümesini sunar. Bu bilgiler içecek rengi, içecek kabı rengi ve yapısı ve optimum görüntü koşullarında içecek yoğunluğu2olabilir.
Yiyecek öğelerini görüntülerden başarıyla tanımak için, her yiyecek ve içecek sınıfının özelliklerini öğrenmek gerekir. Bu geleneksel olarak,renk, doku,boyutvb. Bu özellik çıkarıcılara örnek olarak birden çok çekirdek öğrenimi4, çift yönlü yerel özellikler5 ve özellikler torbası model6 verilebilir. Gıda görüntülerinin karmaşıklığı nedeniyle, bu yaklaşımlar çoğunlukla düşük bir sınıflandırma doğruluğu elde etti -% 10 ila% 40arasında 3,4,5. Bunun nedeni, manuel yaklaşımın yeterince doğru olacak kadar sağlam olmamasıdır. Bir gıda maddesi görünüşte önemli ölçüde değişebileceğinden, tüm bu varyansları manuel olarak kapsamak mümkün değildir. Gıda sınıflarının sayısı 5 azaltıldığında veya farklı görüntü özellikleribirleştirildiğinde manuelolarak tanımlanmış özellik çıkarıcılarla daha yüksek sınıflandırma doğruluğu elde edilebilir6, böylece bu soruna daha karmaşık çözümlere ihtiyaç olduğunu gösterir.
Bu nedenle derin öğrenmenin gıda imaj tanıma sorunu için çok etkili olduğu kanıtlanmıştır. Derin öğrenme veya derin sinir ağları, biyolojik beyinlerden esinlendi ve birden fazla işlem katmanından oluşan hesaplama modellerinin, bir dizi giriş görüntüsü7,8üzerinde eğitim yoluyla özellikleri otomatik olarak öğrenmesine izin verir. Bu nedenle, derin öğrenme, çeşitli araştırma alanlarında sanatın durumunu önemli ölçüdegeliştirmiştir 7Bilgisayar görüşü ve daha sonra gıda görüntüsü tanıma ile bunlardan biriolmak 2.
Özellikle, derin konvolüsyonel sinir ağları (DCNN’ler) yiyecek görüntü tanıma için en popüler olanıdır – bu ağlar, bireysel nöronların görsel alanda çakışan bölgelere tepki vererek görsel girdiyi anlamaya çalıştıkları hayvanların görsel sisteminden esinlenir9. Bir convolutional sinir ağı giriş görüntüsünü alır ve ağ katmanlarının her birinde, en yaygın olanı konvolüsyonel, tam bağlı ve havuza alma katmanları olan bir dizi işlem gerçekleştirir. Evrişimsel katmanlar, giriş verilerindeki belirli özelliklere yanıt veren öğrenilebilir filtreler içerirken, tam bağlı katmanlar, ondan daha üst düzey bilgi edinmek için diğer katmanlardan çıktı verileri besteler. Katmanları havuzu oluşturmanın amacı, giriş verilerini aşağıörneklemektir 2. Popüler olduğu kanıtlanan derin öğrenme modellerini kullanmaya yönelik iki yaklaşım vardır: bu makalede derin öğrenme mimarisi olarak adlandırılan mevcut bir derin sinir ağı tanımı10,11‘ i almak veya yeni bir derin öğrenme mimarisi tanımlamak12,13ve bunlardan herhangi birini bir gıda görüntüsü veri kümesinde eğitmek. Her iki yaklaşımın da güçlü ve zayıf yönleri vardır – mevcut bir derin öğrenme mimarisini kullanırken, diğer sorunlar için iyi performans gösteren bir mimari seçilebilir ve istenen sorun için ince ayar yapılabilir, böylece zamandan tasarruf edilebilir ve doğrulanmış bir mimarinin seçilmesini sağlar. Öte yandan, yeni bir derin öğrenme mimarisi tanımlamak daha yoğundur, ancak özellikle bir sorunun özelliklerini dikkate almak ve böylece teorik olarak bu sorun için daha iyi performans gösteren mimarilerin geliştirilmesine izin verir.
Bu yazıda her iki yaklaşımı da sunuyoruz. Gıda görüntü tanıma sorunu için, yeni bir DCNN mimarisi geliştirdik NutriNet2, tanınmış AlexNet mimarisinin bir modifikasyonu14. AlexNet’e kıyasla iki ana fark vardır: NutriNet, 512×512 piksel görüntüleri giriş olarak kabul eder (AlexNet için 256×256 piksel görüntülerin aksine) ve NutriNet sinir ağının başında ek bir evlilik katmanına sahiptir. Bu iki değişiklik, tanıma veri kümesi görüntülerinden mümkün olduğunca fazla bilgi ayıklamak için tanıtıldı. Daha yüksek çözünürlüklü görüntülere sahip olmak, görüntülerde daha fazla bilgi olduğu ve daha fazla konvoksiyon katmanına sahip olduğu anlamına geliyordu, bu da görüntülerden ek bilgi çıkarabileceği anlamına geliyordu. AlexNet’in yaklaşık 60 milyon parametresine kıyasla NutriNet daha az parametre içerir: yaklaşık 33 milyon. Bunun nedeni, ek eşlem katmanı2’ninneden olduğu ilk tam bağlı katmandaki boyutsallık farkıdır. Şekil 1, NutriNet mimarisinin bir diyagramını içerir. NutriNet modelini eğitmek için kullanılan yemek görüntüleri internetten toplanmıştır – prosedür protokol metninde açıklanmıştır.
Gıda görüntüsü segmentasyon sorunu için iki farklı mevcut mimari kullandık: tamamen konvolüsyonal ağlar (FCN’ler)15 ve derin artık ağlar (ResNet)16, her ikisi de ilgili gıda görüntü segmentasyon çözümlerini geliştirmek için kullandığımızda görüntü segmentasyonu için en son teknolojiyi temsil ediyordu. Long ve ark.: FCN-32s, FCN-16s ve FCN-8s15tarafından tanıtılan birden fazla FCN varyantı vardır. FCN-32s, FCN’nin son katmanının tahminlerine göre bir piksel haritası oluştururken, FCN-16s varyantı bu tahminleri önceki bir katmandakilerle birleştirir. FCN-8s başka bir katmanın tahminlerini dikkate alıyor ve bu nedenle en iyi tahılda tahminlerde bulunabiliyor, bu yüzden gıda görüntüsü tanıma için uygun. Kullandığımız FCN-8’ler PASCAL Görsel Nesne Sınıfları (PASCAL VOC) veri kümesi17 üzerinde önceden eğitildi ve gerçek gıdaya görsel benzerlikleri ve piksel seviyesindeki gerçek gıdanın açıklamalı görüntülerinin olmaması nedeniyle gıda replikalarının (bundan böyle ‘sahte gıda’)18 görüntüleri üzerinde eğitildi ve test edildi. Farklı davranışsal çalışmalarda sahte yiyecekler kullanılmakta ve tüm çalışma katılımcılarından tüm yemekler için görüntüler alınmaktadır. Bu görüntülerin gıda içeriği bilindiğinden, görüntü veri kümesini derin öğrenme modeli eğitimi için kullanışlı hale getirir. Veri kümesi işleme adımları protokol metninde açıklanmıştır.
ResNet tabanlı çözüm, Gıda Tanıma Mücadelesi (FRC)19kapsamında geliştirilmiştir. ResNet-10116 omurgalı Karma Görev Basamaklı (HTC)20 yöntemini kullanır. Bu, farklı özellik çıkarıcıları veya omurgaları kullanabilen görüntü segmentasyon sorunu için son teknoloji ürünü bir yaklaşımdır. Diğer omurga ağlarını da, özellikle ResNet-5016gibi diğer ResNet varyantlarını da göz önünde bulundurduk, ancak ResNet-101, giriş görüntülerini yeterince karmaşık bir şekilde temsil etme derinliği ve yeteneği nedeniyle en uygun olanıydı. HTC ResNet-101 modelini eğitmek için kullanılan veri kümesi, artırılmış görüntüler eklenmiş FRC veri kümesiydi. Bu büyütmeler protokol metninde sunulur.
Bu makale, hangi derin öğrenme mimarilerinin ve veri büyütme adımlarının gıda görüntüsü tanıma ve segmentasyon sorunları için iyi performans gösterdiği hakkında bilgi arayan makine öğrenimi uzmanlarının yanı sıra, diyet değerlendirmesinde kullanılmak üzere gıda görüntüsü tanıma yaklaşımımızı kullanmak isteyen beslenme araştırmacıları için bir kaynak olarak tasarlanmıştır. Aşağıdaki paragraflarda, gıda görüntü tanıma alanından derin öğrenme çözümleri ve veri kümeleri sunulmuştur. Protokol metninde, üç yaklaşımın her birinin otomatik diyet değerlendirmesi için kullanılabilecek derin sinir ağı modellerini eğitmek için nasıl kullanıldığını detaylandırıyoruz. Ayrıca, her protokol bölümü, eğitim ve test için kullanılan gıda görüntüsü veri kümelerinin nasıl alındığını ve işlendiğinin açıklamasını içerir.
DCNN’ler genellikle gıda görüntüsü tanıma ve segmentasyon için diğer yöntemlerden önemli ölçüde daha iyi sonuçlar elde etti, bu yüzden alandaki son araştırmaların büyük çoğunluğu bu ağlara dayanıyor. Kawano ve arkadaşları manuel yaklaşımları tamamlamak için DCNN’leri kullandı21 ve UEC-FOOD100 veri kümesinde% 72.26 sınıflandırma doğruluğuelde etti 22. Christodoulidis ve ark. bunları sadece kendi edindiği bir veri kümesinde% 84.90 daha yüksek bir doğruluk elde etmek için kullandı23. Tanno ve arkadaşları DeepFoodCam geliştirdi – DCNNs24kullanan gıda görüntüsü tanıma için bir akıllı telefon uygulaması . Liu ve arkadaşları, DCNNs25kullanarak Nesnelerin İnterneti tabanlı bir diyet değerlendirmesi yapan bir sistem sundu. Martinel ve arkadaşları, gıda görüntüleri26’nın özelliklerinden yararlanan ve Food-101 verikümesi27’de% 90.27 doğruluk bildiren DCNN tabanlı bir yaklaşım sundu. Zhou ve arkadaşları, gıda alanında derin öğrenme çözümlerinin bir incelemesini yaptı28.
Son zamanlarda, Zhao ve arkadaşları özellikle mobil uygulamalarda gıda görüntüsü tanıma için bir ağ önerdi29. Bu yaklaşım, daha büyük bir ‘öğretmen’ ağından öğrenen daha küçük bir ‘öğrenci’ ağı kullanır. Bununla birlikte, UEC-FOOD25630’da% 84 doğruluk ve Food-101 veri kümesinde% 91.2 doğruluk elde etmeyi başardılar27. Hafız ve arkadaşları, yalnızca içecek görüntü tanıma çözümü geliştirmek için DCNN’leri kullandı ve% 98.5131gibi çok yüksek bir doğruluk bildirdi. Shimoda ve arkadaşları, piksel açısından ek açıklama kullanmadan gıda görüntülerindeki plaka bölgelerini tespit etmek için yeni bir yöntem tanımladı32. Ciocca ve arkadaşları, 11 farklı durumda (katı, dilimlenmiş, kremalı macun vb.) 20 farklı gıda sınıfından gıda maddelerini içeren yeni bir veri kümesi tanıttı ve gıda sınıfı33’eek olarak gıda durumunu tanıyabilen eğitim tanıma modelleri için yaklaşımlarını sundu. Knez ve ark. mobil cihazlar için gıda görüntü tanıma çözümlerini değerlendirdi34. Son olarak, Furtado ve arkadaşları, insan görsel sisteminin DCNN’lerin performansına kıyasla nasıl olduğu üzerine bir çalışma yaptı ve insan tanımanın hala % 80’e karşı% 74.535doğrulukla DCNN’lerden daha iyi performans gösterdi. Yazarlar, az sayıda gıda sınıfı ile DCNN’lerin iyi performans gösterdiğini, ancak yüzlerce sınıfa sahip bir veri kümesinde, insan tanıma doğruluğunun35’inüzerinde olduğunu belirterek sorunun karmaşıklığını vurguladı.
Son teknoloji sonuçlarına rağmen, derin öğrenmenin büyük bir dezavantajı vardır – modeli eğitmek için büyük bir giriş veri kümesi gerektirir. Gıda görüntüsü tanıma durumunda, büyük bir gıda görüntüsü veri kümesi gereklidir ve bu veri kümesinin mümkün olduğunca çok farklı gerçek dünya senaryosunu kapsaması gerekir. Pratikte bu, her bir yiyecek veya içecek öğesi için büyük bir görüntü koleksiyonu gerektiği ve veri kümesinde mümkün olduğunca çok sayıda farklı öğenin bulunması gerektiği anlamına gelir. Veri kümesinde belirli bir öğe için yeterli görüntü yoksa, bu öğenin başarıyla tanınması olası değildir. Öte yandan, veri kümesi tarafından sadece az sayıda öğe kapsanırsa, çözüm kapsam olarak sınırlanacak ve yalnızca bir avuç farklı yiyecek ve içeceği tanıyabilecektir.
Geçmişte birden çok veri kümesi kullanılabilir hale getirildi. Pittsburgh Fast-Food Image Dataset (PFID)3, gıda görüntü tanıma alanında daha fazla araştırmayı teşvik etmek için tanıtıldı. Elektro-İletişim Üniversitesi Gıda 100 (UEC-FOOD100)22 ve Elektro İletişim Üniversitesi Gıda 256 (UEC-FOOD256)30 veri kümesi, UEC-FOOD256 veri kümesi durumunda bazı uluslararası yemeklerle genişletilen Japon yemekleri içerir. Food-101 veri kümesi, bir web sitesinden edinilen popüler yemekleri içerir27. Food-5036 ve Video Alma Grubu Gıda 172 (VireoFood-172)37 veri kümesi, Çin merkezli gıda görüntüleri koleksiyonlarıdır. Milano-Bicocca Üniversitesi 2016 (UNIMIB2016) veri kümesi, bir İtalyan kantininden yemek tepsilerinin görüntülerinden oluşur38. Recipe1M, yemek tarifleri ve yemek görüntülerinin geniş ölçekli bir verikümesidir 39. Food-475 veri kümesi40, daha önce yayımlanan dört gıda görüntü veri kümesi27,30,36,37’yi bir arada toplar. Pekin Teknoloji ve İşletme Üniversitesi Gıda 60 (BTBUFood-60), gıda tespiti için bir görüntü veri kümesidir41. Son zamanlarda, ISIA Food-500 veri kümesi42 çeşitli gıda görüntüleri kullanıma sunuldu. Kamuya açık diğer gıda görüntü veri kümelerine kıyasla, 500 gıda sınıfına ayrılmış çok sayıda görüntü içerir ve multimedya gıda tanıma çözümlerinin geliştirilmesini ilerletmek içindir42.
Son yıllarda, derin sinir ağları gıda görüntülerini tanımak için uygun bir çözüm olarak birçok kez doğrulanmıştır10,11,12,21,23,25,26,29,31,33. Bu makalede sunulan çalışmamız, bu1,2. Tek çıkışlı gıda görüntü tanıma yaklaşımı basittir ve yalnızca bir yiyecek veya içecek öğesine sahip görüntülerin beklendiği basit uygulamalar için kullanılabilir2.
Gıda görüntüsü segmentasyon yaklaşımı, gıda maddelerinin sayısında herhangi bir kısıtlama olmaksızın, genel olarak gıda görüntülerini tanımak için özellikle uygun görünmektedir1. Görüntünün her bir pikselini sınıflandırarak çalıştığından, yalnızca görüntüdeki herhangi bir sayıda gıda öğesini tanımakla kalmaz, aynı zamanda bir gıda öğesinin nerede bulunduğunu ve ne kadar büyük olduğunu da belirtebilirsiniz. İkincisi daha sonra, özellikle bir referans nesnesi veya sabit mesafeli bir kamera ile kullanılıyorsa, gıda ağırlığı tahminini gerçekleştirmek için kullanılabilir.
3 , 22,27,30 , 36,37,38,39,40,41,42yiyecek görüntü kümelerinin kullanılabilirliği ile ilgili bazı çalışmalar yapılmıştır ve özellikle dünyanın farklı bölgelerinden gıda görüntü veri kümelerinin toplanması söz konusu olduğunda, gelecekte daha sağlam çözümler geliştirilmesini sağlayacak daha fazlasının yapılmasını umuyoruz. Şu anda, otomatik gıda görüntü tanıma çözümlerinin doğruluğu henüz insan düzeyinde doğruluğa ulaşmamıştır35ve bu büyük ölçüde yetersiz boyut ve kalitede gıda görüntü veri kümelerinin kullanımı nedeniyle muhtemeldir.
Gelecekte, amacımız gerçek dünyadaki görüntüler üzerinde geliştirilen prosedürleri daha fazla değerlendirmek olacaktır. Genel olarak, bu alandaki veri kümeleri genellikle kontrollü ortamlarda çekilen görüntüleri veya tanıma için el ile en iyi duruma getirilmiş görüntüleri içerir. Bu nedenle, bireylerin tanımak isteyebileceği tüm farklı yiyecek ve içecek öğelerini kapsayacak şekilde geniş ve çeşitli bir gerçek dünya gıda görüntü veri kümesi toplamak önemlidir. Bu yöndeki ilk adım, gerçek dünyadaki gıda görüntülerinin bir veri kümesini içeren Food Recognition Challenge tarafından sağlandı19, ancak dünyanın dört bir yanından gelen gıda görüntüleri ve diyetisyenlerle işbirliği içinde bu yaklaşımı doğrulamak için daha fazla çalışma yapılması gerekiyor.
The authors have nothing to disclose.
Yazarlar, Sahte gıda görüntü veri kümesini sağladığı için Avustralya Newcastle Üniversitesi’nden Tamara Bucher’e teşekkür etmek istiyor. Bu çalışma Avrupa Birliği’nin Horizon 2020 araştırma ve inovasyon programları (hibe numaraları 863059 – FNS-Cloud, 769661 – SAAM) tarafından desteklendi; ve Sloven Araştırma Ajansı (hibe numarası P2-0098). Avrupa Birliği ve Sloven Araştırma Ajansı’nın bu makalenin tasarımında, analizinde veya yazılmasında hiçbir rolü yoktur.
HARDWARE | |||
NVIDIA GPU | NVIDIA | N/A | An NVIDIA GPU is needed as some of the software frameworks below will not work otherwise. https://www.nvidia.com |
SOFTWARE | |||
Caffe | Berkeley AI Research | N/A | Caffe is a deep learning framework. https://caffe.berkeleyvision.org |
CLoDSA | Jónathan Heras | N/A | CLoDSA is a Python image augmentation library. https://github.com/joheras/CLoDSA |
Google API Client | N/A | Google API Client is a Python client library for Google's discovery based APIs. https://github.com/googleapis/google-api-python-client | |
JavaScript Segment Annotator | Kota Yamaguchi | N/A | JavaScript Segment Annotator is a JavaScript image annotation tool. https://github.com/kyamagu/js-segment-annotator |
MMDetection | Multimedia Laboratory, CUHK | N/A | MMDetection is an object detection toolbox based on PyTorch. https://github.com/open-mmlab/mmdetection |
NVIDIA DIGITS | NVIDIA | N/A | NVIDIA DIGITS is a wrapper for Caffe that provides a graphical web interface. https://developer.nvidia.com/digits |
OpenCV | Intel | N/A | OpenCV is a library for computer vision. https://opencv.org |
Python | Python Software Foundation | N/A | Python is a programming language. https://www.python.org |
PyTorch | Facebook AI Research | N/A | PyTorch is a machine learning framework. https://pytorch.org |
Ubuntu OS | Canonical | N/A | Ubuntu 14.04 is the OS used by the authors and offers compatibility with all of the software frameworks and tools above. https://ubuntu.com |