Derin Öğrenme Kullanarak Görüntü Tabanlı Kalori Tahmini

WHO’ya göre dünya çapında ölümlerin neredeyse% 20’si sağlıksız beslenmeye bağlanabilir. 2016 yılında 18 yaş ve üzeri yetişkinlerin% 39’u fazla kilolu ve% 13’ü obezdi. Dünya nüfusunun çoğu fazla kilolu ve obezitenin düşük kilolu olmaktan çok insanı öldürdüğü ülkelerde yaşıyor.

Buradaki sorun, yeterli yiyeceğe sahip olmakla ilgili değil, i insanların diyetlerinde ne olduğunu bilmemeleri ile ilgili. İnsanlar yiyeceklerinin resimlerini kullanarak kalori alımlarını tahmin edebilirlerse, tüketmek istedikleri kalori miktarına kolayca karar verebilirler. Derin öğrenme kullanılarak oluşturulan görüntü tabanlı bir Kalori tahmincisi, bir bireyin diyet planının neler içerdiğini takip etmek için kullanışlı bir uygulama olabilir

İnsanlar yiyeceklerinin ne kadar kalori içerdiğini bilirlerse, bu sorun bir şekilde kontrol altına alınacaktır.

Önerilen Çözüm

İnsanlar genellikle yemek yemeden önce yemeklerinin fotoğrafını çeker ve sosyal medyaya koyar, çözüm tam da bu süreçte yatıyor. Derin öğrenmeyi kullanarak yiyeceği tanımlayarak ve miktarı tahmin ederek, kullanıcı tarafından sağlanan görüntüdeki kalori içeriğini tahmin etmeyi öneriyoruz.

Kalori tahminini vermek için, doğru IoU (birleşim üzerinde kesişme) ile birlikte doğru nesne algılamasına ihtiyacımız var. Muadillerinden daha hızlı olan Tek Atış Algılamaları kullanılarak etkileyici miktarda IoU elde edilebilir, ancak sorun segmentasyondadır. Sınırlama Kutusu çıktısı ile miktarı kestiremiyoruz, daha fazla hassasiyete ihtiyacımız var. Dolayısıyla çözüm, Örnek Segmentasyonunu kullanmak olacaktır. En kolay örnek segmentasyonlarından biri, Maske RCNN kullanılarak elde edilebilir.

Nasıl Yapıldı?

Öncelikle, görüntü tanıma modeline uyacak bazı verilere ihtiyacımız vardı. Verilerin bir tabaktaki her gıda maddesi için sınırlar ve sınıflarla açıklanması gerekiyordu. Bir süre etrafa baktıktan sonra, İtalya Milano-Bicocca Üniversitesi tarafından hazırlanan yemek resimleri veri kümesinin gereksinimlerimize uygun olduğunu buldum, veri kümesinin adı UNIMIB-2016 idi. Bir miktar ön işlemden sonra, gıda görseli veri seti Mask R-CNN ile eğitilmeye hazırdı.

Yiyecek Öğesi Tanımlama Sorunu

Tabakta ne olduğunu belirlemek için, verilen yiyecek görselini olası yiyecek kategorilerine ayırmalıyız. Örnek Segmentasyon, verilen resimdeki tek tek pikseli olası sınıflara, yani. bizim durumumuzda yiyecekler. Örnek bölümleme sorunu göz önüne alındığında, Maske R-CNN mimarisi eşleşen bir çözüm olacaktır. Maske R-CNN bir görüntüyü alır ve tespit edilen her maske için üç çıktı, tanımlanan öğelerin maskeleri, sınırlayıcı kutular ve sınıflar çıkarır. Maskeler, tanımlanan nesnenin sınırlarını belirten giriş görüntüsünün boyutunun ikili kodlu tek kanallı matrisleridir.

Mask R-CNN, bölge tabanlı bir Convolutional Neural Network olan Faster R-CNN temel alınarak geliştirilmiştir. Bir Evrişimli Sinir Ağı (ConvNet / CNN), bir girdi görüntüsünü alabilen, görüntüdeki çeşitli yönlere / nesnelere önem atayabilen (öğrenilebilir ağırlıklar ve önyargılar) ve bir görüntü türünü diğerinden ayırt edebilen bir Derin Öğrenme algoritmasıdır. Nesne algılamaya sahip olmak için nesnenin sınıfını ve ayrıca sınırlayıcı kutu boyutunu ve konumunu bilmemiz gerekir. Geleneksel olarak, her görüntü için, aşağıdaki görüntüdeki her konumu aramak için bir kayan pencere vardır. Bu basit bir çözüm. Bununla birlikte, farklı nesneler ve hatta aynı tür nesneler, nesnenin boyutuna ve kameradan uzaklığına bağlı olarak farklı en boy oranlarına ve boyutlarına sahip olabilir. Farklı görüntü boyutları da etkili pencere boyutunu etkiler. Her konumda görüntü sınıflandırması için derin öğrenme CNN kullanırsak bu süreç son derece yavaş olacaktır.

Çok sayıda bölge seçme sorununu aşmak için Ross Girshick ve diğerleri. görüntüden yalnızca 2000 bölgeyi çıkarmak için seçici aramayı kullandığımız bir yöntem önerdi ve o, onlara bölge önerileri adını verdi. Mimariye R-CNN denir.

Önceki makalenin (R-CNN) aynı yazarı, daha hızlı bir nesne algılama algoritması oluşturmak için R-CNN’nin bazı dezavantajlarını çözdü ve buna Hızlı R-CNN adı verildi. Yaklaşım, R-CNN algoritmasına benzer. Ancak, bölge tekliflerini CNN’e beslemek yerine, evrişimli bir özellik haritası oluşturmak için giriş görüntüsünü CNN’e besliyoruz.

Mask R-CNN, Faster R-CNN’deki 2 şubeye kıyasla başlığı 3 şubeye kadar genişletir, Faster R-CNN mimarisine bir ek maske tanımlama dalı eklenir. Bir maske görüntüsü, bir nesnenin sınırlarını belirleyen bazı piksel yoğunluğu değerlerinin sıfır ve diğerlerinin sıfır olmadığı bir görüntüdür. Bunun dışında, Maske R-CNN, Çıktılarda maskeleri büyük ölçüde yanlış yerleştiren ancak sınırlayıcı kutu tahmini için yeterli doğruluk sağlayan Hızlı R-CNN’de kullanılan taban bölmesine kıyasla İlgi Bölgesi (ROI) için bilineer enterpolasyon kullanan ROI hizalamasını kullanır.>

Yiyecek nesnesini ve maskeyi aldıktan sonra, tespit edilen yiyeceğin boyutunu da tahmin etmek için kusursuz bir plana ihtiyacımız var. Bu nedenle, yiyecek boyutunu elde etmek ve böylece kaloriyi tahmin etmek için bir nesne boyutu tahminine ihtiyacımız var. Bir iğne deliği kamerasıyla nesne boyutunu tahmin etmek zor bir iştir, birden fazla kamera kullanmadan boyut tahmini için bir referans nesneye ihtiyaç vardır.

Yiyecek Kalori Tahmini

Aynı yiyecek, farklı resim boyutları oluşturmak için farklı derinliklerde alınabildiğinden, gerçek dünya senaryosunda kalori hesaplamak veya yiyeceğin boyutunu tahmin etmek için bir yönteme ihtiyacımız var. İstenilen yiyecek maddelerini maskeleriyle birlikte tespit ettikten sonra, yalnızca iğne deliği kamera görüntüleri ile mümkün olmayan gerçek nesne boyutlarına ihtiyacımız var. Bu nedenle, belirli bir görüntüde bulunan yiyeceğin gerçek boyutunu çıkarmak için gıda nesnelerini önceden bilinen nesnenin boyutuna atıfta bulunan bir referans yaklaşımı kullanıyoruz.

Yukarıdaki gösterim madeni parayı bir referans nesnesi olarak kullandığından, görüntülerde tespit edilen yiyeceğin tahmini için referans nesne olarak bir plaka kullanmayı öneriyoruz. Plakalar, kenar algılama kullanılarak tespit edilebilir veya tek bir ağ ile gıdalarla birlikte tespit etmek için eğitim verilerine dahil edilebilir. Plakaları tespit ettikten sonra pixel_per_inch_sq , plakanın gerçek yaşamdaki gerçek boyutu kullanılarak hesaplanır.

pixel_per_inch_sq = plate_pixels_area / actual_plate_area

real_food_area = masked_food_pixel_area / pixel_per_inch_sq


Sonuç

Mask R-CNN ile gıda görüntüleri veri kümesinin bu kısa testiyle, yiyecek görüntülerinden kalori tahmin edebilen bir uygulama elde etmenin oldukça mümkün olduğu sonucuna varabiliriz. Uygulama, insanların bir tabak yemeği nasıl algıladıkları üzerinde muazzam bir etkiye sahip olacak ve aynı zamanda kilo verme ve kilo yönetimi pazarını da etkileyecektir.

Çıkarımlarım

Bu proje üzerinde çalıştıktan sonra, derin öğrenmeye hızlı bir giriş yaptım. Mask R-CNN’in yeteneklerinden yararlanabileceğimiz birçok uygulama alanı olduğunu anlayabildim.

Geriye dönüp baktığımızda, Leapfrog’a bize bu fırsatı verdiği için kesinlikle teşekkür ederiz ve bu kesinlikle kariyerlerimiz için harika bir temel olacaktır. Ayrıca, makine öğrenimi projem için olağanüstü akıl hocaları oldukları için KC ikilisine (Aviskar KC ve Bipin KC) teşekkür etmek istiyorum.

Yazar hakkında

Leapfrog Technology’de tam zamanlı Makine Öğrenimi Mühendisiyim. Makale yazmak zordur, ancak sorunları çözmek için uygulamalar geliştirmek gerçekten harika, bu yüzden her iki şeyi de yapmak ve ondan edindiğim fikri ve deneyimi paylaşmak istedim. Yapay zekaya derin bir hayranlığım var; Köklü bir sorunu tespit etmek ve onu ne gerekiyorsa onu çözmek beni harekete geçiriyor.

Yemek kalori tahmini projemi GitHub’da bulabilirsiniz. Bu proje Leapfrog’daki staj projemin bir parçasıydı. 6 haftalık program, veri analizinden tahmine dayalı modellemeden makine öğreniminin özüne ve derin öğrenme algoritmalarına kadar geniş bir alanı kapsıyordu. Programın yoğunluğu ve edindiğimiz bilgi hacmi ilgimizi çekti.