Yiyecek Tanıma AI Sürecinin Çalışma Prensibi: Fotoğraftan Besin Verisine

Yiyecek tanıma AI sürecinin tamamını detaylı bir şekilde açıklayan teknik bir rehber: kamera girişi, CNN özellik çıkarımı, yiyecek sınıflandırması, porsiyon tahmini, besin veritabanı sorgulaması ve nihai kalori hesaplaması.

Medically reviewed by Dr. Emily Torres, Registered Dietitian Nutritionist (RDN)

Öğle yemeğinizin fotoğrafını çektiğinizde ve iki saniye içinde tam bir makro analizi gördüğünüzde, bu sonucu sıradan bir şey olarak almak oldukça kolaydır. Ancak, o anlık okumanın arkasında, görüntünüzü kamera çekiminden, ön işleme, sinir ağı çıkarımına, sınıflandırmaya, porsiyon tahminine, veritabanı sorgulamasına ve nihai kalori hesaplamasına kadar taşıyan çok aşamalı bir süreç bulunmaktadır. Her aşama, belirli bir problemi çözer, kendi algoritma setine dayanır ve bir sonraki aşamaya belirli bir çıktı verir.

Bu makalede, deklanşöre basmaktan besin etiketine kadar olan tüm yolculuğu takip edeceğiz. Bu süreçte, her aşamanın çalışmasını sağlayan mimarileri, teknikleri ve mühendislik tercihlerini adlandıracağız ve Nutrola'nın doğruluk ve hızını sektördeki normların ötesine taşımak için sunduğu yenilikleri vurgulayacağız.

Aşama 1: Kamera Girişi ve Görüntü Alımı

Her şey, bir kullanıcının kamera vizörünü açıp bir tabak yiyecek çerçevelediği anda başlar. Modern akıllı telefonlar, 12 ila 48 megapiksel arasında çözünürlükte görüntüler yakalayarak, Bayer filtre mozaği üzerinden renk yoğunluk değerlerini kodlayan ham sensör verileri üretir. Cihazın görüntü sinyal işlemcisi (ISP), bu verileri demosaikleyerek beyaz dengesi uygular, gürültüyü azaltır ve bir JPEG veya HEIF dosyası olarak birkaç saniyenin onda biri kadar kısa bir sürede çıktı verir.

Bu aşamayı giderek daha fazla etkileyen iki donanım özelliği bulunmaktadır. İlk olarak, son iPhone Pro ve bazı Android amiral gemisi modellerinde bulunan LiDAR sensörleri, RGB görüntüsü ile birlikte bir derinlik haritası yakalayabilir. Bu derinlik verisi, porsiyon tahmini sırasında aşağı akışta değerli hale gelir. İkinci olarak, zaman-of-flight sensörlerine sahip cihazlar, LiDAR mevcut olmadığında bile sürecin kullanabileceği daha kaba derinlik bilgileri sağlar.

Süreç, RGB görüntüsünü ve mevcutsa derinlik haritasını eşleştirilmiş bir girdi olarak alır. Eğer cihazda derinlik sensörü yoksa, süreç yalnızca RGB ile devam eder ve daha sonra tek göz derinlik tahmini kullanarak telafi eder.

Bu aşamanın ana çıktısı

Kullanıcının önündeki sahneyi temsil eden yüksek çözünürlüklü bir RGB görüntüsü (ve isteğe bağlı olarak bir derinlik haritası).

Aşama 2: Görüntü Ön İşleme

Ham kamera çıktısı, sinir ağı çıkarımı için hazır değildir. Ön işleme, görüntüyü modelin beklediği standart bir tensöre dönüştürür.

Yeniden Boyutlandırma ve Kırpma

Çoğu yiyecek tanıma modeli, mimariye bağlı olarak genellikle 224x224, 384x384 veya 512x512 piksel sabit bir çözünürlükte girdi kabul eder. Süreç, görüntüyü bu hedef çözünürlüğe yeniden boyutlandırırken en boy oranını korur ve gerektiğinde harf kutusu veya merkez kırpma uygular. Bicubic interpolasyon, ince doku detaylarını daha iyi koruduğu için standart yeniden örnekleme yöntemidir.

Normalizasyon

Piksellerin değerleri, 0-255 tam sayı aralığından kayan nokta sayılarına dönüştürülür ve ardından eğitim veri setinin kanal bazında ortalaması ve standart sapması kullanılarak normalleştirilir. ImageNet üzerinde önceden eğitilmiş modeller için, standart normalizasyon değerleri (R, G ve B kanalları için sırasıyla [0.485, 0.456, 0.406] ortalaması ve [0.229, 0.224, 0.225] standart sapması) uygulanır. Bu normalizasyon, girdi dağılımını sıfır etrafında merkezler ve birim varyansa ölçekler, bu da eğitim sırasında gradyan akışını stabilize eder ve tutarlı çıkarım davranışını garanti eder.

Renk Alanı ve Artırma Hataları

Eğitim sırasında, süreç kapsamlı veri artırma uygular: rastgele döndürmeler, yatay ters çevirmeler, renk değişimleri, Gauss bulanıklığı ve kesme yamaları. Çıkarım sırasında bu artırmalar devre dışı bırakılır, ancak model, bunların simüle ettiği görsel gürültü türlerine karşı dayanıklı olmayı öğrenmiştir. Bu, sıcak restoran aydınlatmasında çekilen bir fotoğraf ile soğuk floresan ofis aydınlatmasında çekilen bir fotoğrafın her ikisinin de güvenilir özellik temsilleri üreteceği anlamına gelir.

Bu aşamanın ana çıktısı

Sinir ağı omurgası için hazır, sabit mekansal boyutlara sahip normalleştirilmiş bir kayan nokta tensörü.

Aşama 3: CNN Özellik Çıkarımı

Bu, sürecin hesaplama çekirdeğidir. Derin bir konvolüsyonel sinir ağı (veya giderek daha fazla bir görsel dönüştürücü) ön işlenmiş tensörü işler ve görüntünün görsel içeriğini aşağı akıştaki sınıflandırma ve tespit başlıklarının yorumlayabileceği bir biçimde yoğun bir özellik vektörü üretir.

Omurga Mimarileri

Yiyecek tanıma için etkili olduğu kanıtlanmış birkaç omurga mimarisi bulunmaktadır:

EfficientNet, ağ derinliği, genişliği ve girdi çözünürlüğünü dengelemek için bileşik ölçeklendirme kullanır. EfficientNet-B4 ve B5, mobil donanımda kuantizasyon ile birleştirildiğinde güçlü doğruluk sunan popüler seçimlerdir. Nutrola, özel bir yiyecek görüntü veri setinde ince ayar yapılmış EfficientNet türevi bir omurga kullanarak gecikme ve en yüksek doğruluk arasında uygun bir denge sağlamaktadır.

Görsel Dönüştürücüler (ViT), görüntüyü sabit boyutlu yamanalara (genellikle 16x16 piksel) böler, her yamanayı bir gömme alanına projekte eder ve gömme dizilerini çoklu başlık kendine dikkat katmanları aracılığıyla işler. ViT'ler, örneğin, yeşil yaprakların yanındaki kahverengi diskin bir hamburger köftesi olduğunu anlamak için uzun menzilli mekansal ilişkileri yakalamada mükemmeldir, çünkü çevresel bağlam bir ekmek ve marul içerir. DeiT (Veri Verimli Görüntü Dönüştürücüsü) ve Swin Dönüştürücü gibi hibrit modeller, saf ViT'lerin veri gereksinimlerini ve hesaplama maliyetlerini azaltarak üretim yiyecek tanıma sistemleri için uygulanabilir hale getirmiştir.

MobileNetV3, derinlik ayırıcı konvolüsyonlar ve donanım farkındalığına sahip sinir mimarisi arama ile cihazda çıkarım için optimize edilmiştir. Ağın tamamen cihaz üzerinde çalışması gereken gecikme kritik yollarında omurga olarak hizmet eder.

Özellik Piramit Ağları

Yiyecek öğeleri, bir görüntü içinde (büyük bir pizzanın yanında küçük bir sos kasesi gibi) görünür boyut açısından büyük farklılıklar gösterebileceğinden, süreç çoklu mekansal ölçeklerde özellikler çıkarmak için bir Özellik Piramit Ağı (FPN) kullanır. FPN, omurganın ara özellik haritalarından yan bağlantılarla yukarıdan aşağıya bir yol oluşturur ve küçük garnitürleri ve büyük ana yemekleri tespit etmede eşit derecede etkili çok ölçekli özellik haritaları üretir.

Bu aşamanın ana çıktısı

Görüntüdeki her bölgenin görsel anlamını kodlayan çok ölçekli özellik haritaları (veya yalnızca sınıflandırma görevleri için tek bir havuzlanmış özellik vektörü).

Aşama 4: Çoklu Etiketli Yiyecek Sınıflandırması ve Tespiti

Gerçek yemekler genellikle tek bir yiyecek öğesi içermez. Tipik bir akşam yemeği tabağı, ızgara somon, buharda pişirilmiş brokoli, kahverengi pirinç ve bir limon dilimi içerebilir. Süreç, çerçevede her bir ayrı yiyecek öğesini tespit etmeli, yerini belirlemeli ve sınıflandırmalıdır.

Nesne Tespiti ile YOLO ve DETR

Süreç, çıkarılan özellik haritalarının üzerine bir nesne tespit başlığı uygular. Bu alanda iki ana tespit ailesi bulunmaktadır:

YOLO (You Only Look Once), görüntüyü bir ızgaraya bölerek her ızgara hücresi için sınırlayıcı kutular ve sınıf olasılıklarını aynı anda tahmin ederek tek bir ileri geçişte tespit yapar. YOLOv8 ve sonraki sürümleri, tam görüntüyü bir kerede işledikleri için mobil dağıtım için özellikle uygundur. Nutrola, dünya mutfaklarını kapsayan 15,000'den fazla yiyecek sınıfı üzerinde ince ayar yapılmış bir YOLO türevi tespit başlığı kullanmaktadır.

DETR (Detection Transformer), nesne tespitini bir küme tahmin problemi olarak ele alır ve doğrudan bir dizi tespit çıktısı vermek için bir dönüştürücü kodlayıcı-dekodlayıcı mimarisi kullanır; bu, çerçeve kutuları veya maksimum dışlama gerektirmez. DETR, çakışan yiyecekleri, küme tabanlı yöntemlere göre daha iyi yönetir çünkü küme tabanlı kaybı doğal olarak tekrar eden tahminleri önler.

Karışık Yemekler için Anlamsal Segmentasyon

Salatalar, kızartmalar ve tahıl kaseleri gibi bileşik yemeklerde, ayrı bileşenler örtüşüp iç içe geçtiğinden, sınırlayıcı kutular çok kaba kalır. Süreç, her pikseli sınıflandıran bir anlamsal segmentasyon dalına geçer; bu genellikle U-Net veya DeepLabv3+ mimarisi temelinde olur. Bu piksel düzeyindeki sınıflandırma, sistemin karışık bir yemekte her bir bileşenin oranını tahmin etmesine olanak tanır, hatta net sınırlar olmadığında bile.

Güven Skoru ve Aday Sıralaması

Her tespit, bir güven skoru ile gelir. Süreç, düşük güvenli tahminleri filtrelemek için bir eşik (genellikle uygulamaya bağlı olarak 0.5 ila 0.7 arasında) uygular. En iyi tahmin belirsiz olduğunda, sistem kullanıcıya onay için en iyi üç ila beş adayı sunabilir, bu da hata oranlarını azaltır ve manuel giriş gerektirmez.

Nutrola'nın sınıflandırma motoru, kullanıcının geçmiş yemeklerini, mutfak tercihlerini, coğrafi konumunu ve günün saatini dikkate alan bir kullanıcı bağlam modülü içerir. Eğer bir kullanıcı sık sık Meksika mutfağını kaydediyorsa ve model unlu mamul ile naan arasında belirsizse, bağlam modülü olasılığı tortilla yönünde artırır. Bu kişiselleştirme katmanı, zamanla yanlış sınıflandırma oranlarını ölçülebilir şekilde azaltır.

Bu aşamanın ana çıktısı

Her biri bir sınıf etiketi, bir sınırlayıcı kutu veya piksel maskesi ve bir güven skoru ile birlikte tespit edilen yiyecek öğelerinin bir listesi.

Aşama 5: Porsiyon Boyutu Tahmini

Bir tabağın ızgara tavuk ve pirinç içerdiğini bilmek yeterli değildir. Süreç, her yiyecekten ne kadar bulunduğunu tahmin etmelidir, çünkü 100 gram tavuk göğsü ile 300 gram tavuk göğsü arasında 300 kaloriden fazla fark vardır.

Tek Göz Derinlik Tahmini

Donanım derinlik sensörü mevcut olmadığında, süreç yalnızca RGB görüntüsünden bir derinlik haritası çıkarmak için bir tek göz derinlik tahmin modeli (genellikle MiDaS veya DPT mimarisi temelinde) kullanır. Bu modeller, nesne örtüşmesi, göreceli boyut, doku gradyanları ve kaybolma noktaları gibi bağlamsal ipuçlarından derinliği tahmin etmeyi öğrenir. Çıkarılan derinlik haritası, LiDAR verilerinden daha az hassas olmasına rağmen, bir tabaktaki yiyeceklerin üç boyutlu şeklinin yaklaşık olarak tahmin edilmesi için yeterlidir.

Referans Nesne Ölçeklendirme

Bir fotoğrafın kendi içinde bir ölçeği yoktur. Süreç, çerçevede bilinen boyutlara sahip referans nesneleri tespit ederek bunu çözer. Tabaklar (genellikle 25 ila 27 cm çapında), standart çatal bıçak takımları, kaseler ve hatta akıllı telefon kenarları ölçeği sabitlemek için kullanılabilir. Tespit edilen tabak kenarına bir elips uydurarak ve projeksiyon geometrisini kullanarak bakış açısını tahmin eden süreç, piksel ölçümlerinden gerçek dünya mesafelerini yeniden oluşturur.

Hacim-Ağırlık Dönüşümü

Yiyeceğin üç boyutlu şekli tahmin edildikten sonra, süreç, yiyeceğin piksel maskesi üzerinde derinlik profilini entegre ederek hacmi hesaplar. Ardından, hacmi yiyecek türüne özgü yoğunluk tablolarını kullanarak ağırlığa dönüştürür. Bir fincan yaprak ıspanak, bir fincan humustan çok daha az ağırlığa sahiptir, bu nedenle yoğunluk sorgulaması doğruluk için önemlidir.

Nutrola, çeşitli hazırlama durumlarındaki (çiğ, pişirilmiş, karıştırılmış, dondurulmuş) binlerce yiyeceği kapsayan özel bir yoğunluk veritabanı bulundurur ve tahmin edilen hacimleri gram ağırlıklarına dönüştürmek için bunu kullanır; bu, genel yoğunluk tablolarından daha yüksek bir doğruluk sağlar.

Bu aşamanın ana çıktısı

Her tespit edilen yiyecek öğesi için tahmini gram cinsinden ağırlık.

Aşama 6: Besin Veritabanı Sorgulaması

Her yiyecek öğesi sınıflandırılıp tartıldıktan sonra, süreç bir besin veritabanını sorgulayarak o yiyeceğin 100 gramı başına makro ve mikro besin profiline ulaşır.

Veritabanı Mimarisi

Yüksek kaliteli besin veritabanları, USDA FoodData Central, Birleşik Krallık Besin Veri Bankası ve birçok ülkenin ulusal eşdeğerleri gibi devlet kaynaklarından yararlanır. Bu kaynaklar, standart formda binlerce yiyecek maddesi için laboratuvar analizi yapılmış besin değerleri sağlar.

Nutrola'nın veritabanı, 1.2 milyonun üzerinde markalı ürün, besin bilgisi doğrulanan restoran menü maddeleri ve çok katmanlı bir doğrulama sürecinden geçen topluluk tarafından gönderilen girişleri içeren üretici verilerini ekleyerek bu devlet kaynaklarını aşmaktadır. Sonuç olarak, tutarlı bir şemaya normalize edilmiş 2 milyonun üzerinde yiyecek kaydından oluşan birleşik bir veritabanı elde edilmiştir.

Bulanık Eşleştirme ve Varlık Çözümü

Sınıflandırma modeli, "derili ızgara tavuk butu" gibi bir yiyecek etiketi çıktısı verir ve bu etiketin doğru veritabanı kaydına eşleştirilmesi gerekir. Bu, aynı yiyeceğin bölgeler ve diller arasında onlarca ismi olabileceğinden, karmaşık bir varlık çözümleme problemidir. Süreç, en yakın veritabanı kaydını bulmak için gömme tabanlı anlamsal arama kullanır. İnce ayar yapılmış bir metin kodlayıcı, hem tahmin edilen yiyecek etiketini hem de her veritabanı girişi adını aynı vektör alanına haritalar ve en yakın komşu (kosinüs benzerliği ile ölçülen) seçilir.

Birden fazla yakın eşleşme mevcut olduğunda (örneğin "derili ızgara tavuk butu" ile "kızartılmış tavuk butu, derisi yenmiş" arasında), sistem, görsel ipuçlarıyla en iyi eşleşen hazırlama yöntemine sahip olan girişi seçer.

Bu aşamanın ana çıktısı

Her tespit edilen yiyecek öğesi için 100 gram başına (kalori, protein, karbonhidrat, yağ, lif ve mikro besinler) tam bir besin profili.

Aşama 7: Makro ve Kalori Hesabı

Son hesaplama aşaması basit bir aritmetik işlemdir, ancak burada her yukarı akış aşamasından gelen hatalar birikir. Süreç, her yiyecek öğesinin 100 gram başına besin değerlerini tahmini ağırlığıyla çarpar ve ardından tüm öğeler arasında toplam bir yemek analizi üretmek için sonuçları toplar.

Hesaplama

Her yiyecek öğesi için:

  • Kalori = (tahmini gram / 100) x 100 gram başına kalori
  • Protein = (tahmini gram / 100) x 100 gram başına protein
  • Karbonhidrat = (tahmini gram / 100) x 100 gram başına karbonhidrat
  • Yağ = (tahmini gram / 100) x 100 gram başına yağ

Bu öğe bazındaki değerler, yemek toplamını üretmek için toplanır.

Hata Yayılımı ve Güven Aralıkları

Her yukarı akış aşaması bir belirsizlik getirdiğinden, Nutrola tek bir nokta tahmini sunmaz. Sistem, sınıflandırma güven skoru ve porsiyon tahmin belirsizliğini hesaplama sürecine yayarak güven aralıklarını hesaplar. Eğer sınıflandırma güveni yüksek ama porsiyon tahmini belirsizse (örneğin, yiyecek derin bir kasede yığılmışsa ve hacmi gizliyse), sistem bu durumu yansıtmak için güven aralığını genişletir ve kullanıcıdan porsiyonu onaylamasını isteyebilir.

Bu şeffaflık, kasıtlı bir tasarım tercihi olarak öne çıkmaktadır. Yanlış bir hassasiyet hissi vermek yerine, Nutrola, temel tahminler bunu gerektiriyorsa bir aralık (örneğin, "420 ile 510 kcal") gösterir, bu da kullanıcılara alımlarını gerçekçi bir şekilde anlamalarına yardımcı olur.

Bu aşamanın ana çıktısı

Yemek için toplam kalori ve makro besin analizi, isteğe bağlı güven aralıkları ile birlikte.

Aşama 8: Kullanıcı Gösterimi ve Günlüğe Kaydetme

Son aşama, sonuçları kullanıcı arayüzünde sunar. Tespit edilen yiyecek öğeleri, bireysel kalori ve makro değerleri ile birlikte listelenir ve yemek toplamı belirgin bir şekilde gösterilir. Kullanıcı, herhangi bir öğeye dokunarak düzeltme yapabilir veya porsiyonu ayarlayabilir ve bu düzeltmeler, gelecekteki tahminleri iyileştirmek için kişiselleştirme modellerine geri beslenir.

Nutrola'da, gösterim, her tespit edilen yiyecek için sınırlayıcı kutular veya segment vurguları gösteren orijinal fotoğraf üzerinde bir görsel katman içerir; bu, AI'nın neyi tanımladığını ve nerede tanımladığını hemen netleştirir. Bu görsel geri bildirim, güven inşa eder ve hataların kolayca tespit edilip düzeltilmesini sağlar.

Kaydedilen yemek, kullanıcının günlük beslenme günlüğünde saklanır ve kalori, protein, karbonhidrat, yağ ve izlenen mikro besinler için sürekli toplamlar oluşturur. Veriler, standart sağlık veri API'leri aracılığıyla Apple Health, Google Fit ve diğer bağlı platformlarla senkronize edilir.

Bu aşamanın ana çıktısı

Her bir öğe ve toplam besin verisi ile birlikte tamamen işlenmiş bir yemek günlüğü girişi, görsel katmanlar ve sağlık platformlarına senkronizasyon.

Süreç Özeti Tablosu

Aşama Temel Teknoloji Girdi Çıktı
1. Kamera Girişi Cihaz ISP, LiDAR/ToF sensörleri Sahneden gelen ışık RGB görüntü + isteğe bağlı derinlik haritası
2. Görüntü Ön İşleme Bicubic yeniden boyutlandırma, kanal normalizasyonu Ham görüntü Normalleştirilmiş tensör (örn. 384x384x3)
3. Özellik Çıkarımı EfficientNet, ViT, Swin Dönüştürücü, FPN Normalleştirilmiş tensör Çok ölçekli özellik haritaları
4. Yiyecek Sınıflandırması YOLOv8, DETR, DeepLabv3+, kullanıcı bağlamı Özellik haritaları Sınıflandırıcı kutular/maskeler ile etiketlenmiş yiyecek öğeleri
5. Porsiyon Tahmini MiDaS derinlik tahmini, referans ölçekleme, yoğunluk tabloları RGB + derinlik + yiyecek maskeleri Her yiyecek öğesi için gram cinsinden ağırlık
6. Veritabanı Sorgulaması Gömme tabanlı anlamsal arama, USDA/markalı veritabanları Yiyecek etiketleri + hazırlama ipuçları 100 gram başına besin profilleri
7. Kalori Hesabı Ağırlıklı aritmetik, belirsizlik yayılımı Gram tahminleri + besin profilleri Güven aralıkları ile toplam kalori ve makrolar
8. Kullanıcı Gösterimi UI renderleme, sağlık verisi senkronizasyon API'leri Hesaplanan besin verileri Görsel katman ile yemek günlüğü girişi

Nutrola'nın Yeniliklerinin Yeri

Yukarıda açıklanan aşamaların birçoğu, Nutrola'nın uygulamasına özgü yenilikler içermektedir:

Kişiselleştirilmiş sınıflandırma bağlamı. Aşama 4'teki kullanıcı bağlam modülü, belirsiz tahminleri ayırt etmek için geçmiş yemek verilerini, mutfak tercihlerini, konumu ve günün saatini kullanır. Bu, çoğu yiyecek tanıma sürecinde standart değildir ve bağlamdan bağımsız modellere kıyasla gerçek dünyadaki doğrulukta ölçülebilir iyileşmeler sağlar.

Özel yoğunluk veritabanı. Aşama 5'teki hacim-ağırlık dönüşümü, çoklu hazırlama durumlarındaki yiyecekleri kapsayan bir yoğunluk veritabanına dayanır. Genel sistemler genellikle her yiyecek için tek bir ortalama yoğunluk kullanır; bu, pişirilmiş ve çiğ sebzeler veya süzülmüş ve süzülmemiş konserve gıdalar gibi maddeler için sistematik hatalar oluşturur.

Güven bilincine sahip gösterim. Nutrola, tek bir kalori sayısı göstermek yerine, belirsizlik olduğunda bunu ortaya çıkarır. Bu dürüst yaklaşım, tahminlerin yanlış göründüğünde kullanıcı hayal kırıklığını azaltır; çünkü aralık, sistemin belirli bir öğe hakkında daha az kesin olduğunu iletir.

Birleşik çok kaynaklı besin veritabanı. Aşama 6'daki 2 milyon kayıtlı veritabanı, devlet laboratuvarı verileri, markalı ürün verileri ve doğrulanmış topluluk gönderimlerini tek bir normalize edilmiş şemaya entegre eder; bu da sürece, herhangi bir tek kaynağın sağladığından çok daha fazla yiyecek kaydına erişim sağlar.

Düzeltmelerden sürekli öğrenme. Aşama 8'deki her kullanıcı düzeltmesi, periyodik yeniden eğitim döngüleri sırasında sınıflandırma ve porsiyon modellerine geri beslenir; bu, kullanıcı tabanı büyüdükçe doğruluğun arttığı bir döngü yaratır.

Gecikme ve Cihaz Üzerindeki Düşünceler

Uçtan uca gecikme, kullanıcı deneyimi için son derece önemlidir. Eğer süreç iki ila üç saniyeden fazla sürerse, kullanıcılar bunu yavaş olarak algılar ve manuel kayda geri dönebilirler. Gecikmeyi düşük tutmak için birkaç mühendislik stratejisi uygulanmaktadır:

Model kuantizasyonu, 32 bit kayan nokta ağırlıkları 8 bit tam sayılara dönüştürülerek model boyutunu yaklaşık 4 kat azaltır ve mobil sinir işleme birimlerinde (NPU'lar) çıkarımı hızlandırır; bu, minimal doğruluk kaybıyla gerçekleşir. Nutrola, hem özellik çıkarım omurgasında hem de tespit başlığında eğitim sonrası kuantizasyon uygular.

Cihazda çıkarım, hesaplama açısından yoğun aşamalar (özellik çıkarımı ve tespit) için ağ gidiş-dönüşünü tamamen ortadan kaldırır. Apple'ın Core ML ve Android'in NNAPI'si, sürecin hedef aldığı donanım hızlandırmalı çıkarım yolları sağlar. Sadece hafif veritabanı sorgulama ve kalori hesaplama aşamaları bir sunucu çağrısı gerektirir; bu aşamalar bile çevrimdışı işlem için yerel bir önbelleğe geri dönebilir.

Spekülatif yürütme, kullanıcı deklanşöre bastığında sürecin görüntü ön işleme ve özellik çıkarımına başlamasını sağlar; böylece kullanıcı deklanşöre bastığında süreç, çerçeveyi kısmen işleyerek birkaç yüz milisaniye kazandırır.

Doğruluk Ölçümleri ve Gerçek Dünya Performansı

Food-101, ISIA Food-500 ve Nutrition5k gibi standart akademik ölçütlerde, modern süreçler %85 ile %92 arasında en yüksek sınıflandırma doğruluğu ve gerçek ağırlığın %15 ile %25 arasında porsiyon tahmin hataları elde etmektedir. Gerçek dünya performansı, kullanıcı tarafından gönderilen fotoğrafların, iyi aydınlatma, kısmi örtüşme, alışılmadık açılar ve nadir bölgesel yemekler gibi gürültülerin daha fazla olduğu için değişiklik gösterir.

Nutrola'nın, 50,000 gerçek kullanıcı fotoğrafı üzerinde yaptığı iç testlerde, %89 en yüksek sınıflandırma doğruluğu ve %18 medyan porsiyon tahmin hatası elde edilmiştir. En iyi 3 aday dikkate alındığında, sınıflandırma doğruluğu %96'ya yükselmektedir; bu nedenle düzeltme arayüzü alternatif önerileri belirgin bir şekilde göstermektedir.

Bu rakamlar, düzeltme geri bildirim döngüsü daha fazla etiketli veri topladıkça her yeniden eğitim döngüsü ile sürekli olarak iyileşmektedir.

Sıkça Sorulan Sorular

Fotoğraftan besin verisine kadar olan süreç ne kadar sürüyor?

Modern akıllı telefonlarda, özel sinir işleme donanımı ile uçtan uca süreç genellikle 1.0 ila 2.5 saniye içinde tamamlanır. Bu sürenin çoğu, Aşama 3 ve 4'teki özellik çıkarımı ve nesne tespitinde harcanmaktadır. Ön işleme ve kalori hesaplama neredeyse anlık gerçekleşir ve veritabanı sorgulaması, ağ koşullarına veya yerel bir önbellek kullanılıp kullanılmadığına bağlı olarak yalnızca 50 ila 150 milisaniye ekler. Nutrola'nın spekülatif yürütme sistemi, kullanıcı deklanşöre basmadan önce kamera önizlemesini işlemeye başlar; bu, birçok durumda algılanan gecikmeyi bir saniyenin altına düşürebilir.

AI yiyecek sınıflandırmasının manuel kayda göre ne kadar doğru?

AI yiyecek sınıflandırması, standart ölçütlerde %85 ile %92 arasında en yüksek doğruluk elde eder ve en iyi 3 doğruluğu %95'in üzerindedir. Manuel kayıt, teorik olarak dikkatli yapıldığında kesin olsa da, yayımlanan diyet araştırmalarına göre %10 ile %45 arasında sistematik bir eksiklik yaşar. Pratikte, AI sınıflandırması ile hızlı bir kullanıcı onay adımı, özellikle günde birden fazla yemek kaydeden ve giriş yorgunluğu yaşayan kullanıcılar için, genellikle daha tutarlı ve daha az önyargılı sonuçlar üretir.

AI bir yiyecek öğesini tanımlayamadığında ne olur?

En yüksek güvenli tahmin sistemin eşik değerinin altına düştüğünde, süreç nazik bir geri dönüş yaklaşımı benimser. En iyi üç ila beş aday tanımlamasını sunar ve kullanıcının doğru olanı seçmesini veya manuel olarak bir isim yazmasını ister. Bu kullanıcı düzeltmesi kaydedilir ve bir sonraki yeniden eğitim döngüsü sırasında eğitim sürecine geri beslenir; bu da her hatanın gelecekteki tahminleri geliştiren bir eğitim sinyali haline gelmesini sağlar. Zamanla, bu düzeltmeler birikerek sistemin alışılmadık ve bölgesel yiyecekleri kapsama yeteneğini sürekli olarak artırır.

Süreç, salata veya köri gibi karışık yemekler için farklı mı çalışıyor?

Evet. Bireysel bileşenlerin mekansal olarak ayrılmadığı karışık yemekler için süreç, sınırlayıcı kutu tespitinden anlamsal segmentasyona geçer; bu genellikle DeepLabv3+ gibi mimariler temelinde olur. Bu piksel düzeyindeki sınıflandırma, karışık alan içindeki her bir bileşenin oranını tahmin etmesine olanak tanır. Görsel ayrımın imkansız olduğu yoğun karışık yemekler (örneğin, smoothie veya püre çorbalar) için süreç, tarif tabanlı ayrıştırma kullanır: yemek türünü tanımlar ve ardından muhtemel bileşen oranlarını ve birleşik besin profilini tahmin etmek için bir tarif modelini kullanır.

Derinlik sensörü olmadan porsiyon tahmini nasıl çalışır?

LiDAR veya zaman-of-flight sensörü mevcut olmadığında, süreç yalnızca RGB görüntüsünden yaklaşık derinliği çıkarmak için bir tek göz derinlik tahmin modeli (örneğin MiDaS veya DPT) kullanır. Bu modeller, milyonlarca görüntü-derinlik çiftinde eğitim almış ve yiyeceklerin üç boyutlu şeklini, tabak geometrisi, gölge desenleri ve doku gradyanları gibi bağlamsal ipuçlarından tahmin etmeyi öğrenmiştir. Sistem ayrıca, ölçeği sabitlemek için bilinen boyutlara sahip referans nesneleri, özellikle tabaklar ve çatal bıçak takımları tespit eder. Tek göz tahmini, donanım derinlik algılamasından daha az hassas olsa da, öğrenilen derinlik ipuçları ve referans ölçekleme kombinasyonu, besin takibi için pratik bir doğruluk aralığında porsiyon tahminlerini tutar.

Süreç, tek bir fotoğrafta birden fazla tabak veya yemekle başa çıkabilir mi?

Nesne tespit aşaması, birden fazla yiyecek öğesinin tek bir tabakta mı yoksa birden fazla tabakta mı olduğuna bakılmaksızın, her türlü yiyecek öğesini işleyebilecek şekilde tasarlanmıştır. YOLO ve DETR tespit başlıkları, tüm görüntüyü tarar ve bulunan her yiyecek öğesi için bağımsız tespitler üretir; bu, tek bir akşam yemeği tabağında, bir masada birden fazla yemek arasında veya bir tepside düzenlenmiş olsalar bile geçerlidir. Her tespit edilen öğe, porsiyon tahmini ve kalori hesaplama aşamalarında bağımsız olarak işlenir. En iyi doğruluk için Nutrola, her tabağı veya kasesi ayrı ayrı fotoğraflamayı önerir; böylece referans ölçekleme her tabak için kalibre edilebilir, ancak sistem, bu pratik olmadığında çoklu tabak sahnelerini de başarılı bir şekilde yönetir.

Beslenme takibinizi dönüştürmeye hazır mısınız?

Nutrola ile sağlık yolculuklarını dönüştürmüş binlerce kişiye katılın!