Waiting
Login processing...

Trial ends in Request Full Access Tell Your Colleague About Jove
Click here for the English version

Engineering

Dype nevrale nettverk for bildebasert kostholdsvurdering

Published: March 13, 2021 doi: 10.3791/61906

Summary

Målet med arbeidet som presenteres i denne artikkelen er å utvikle teknologi for automatisert anerkjennelse av mat og drikke elementer fra bilder tatt av mobile enheter. Teknologien består av to forskjellige tilnærminger - den første utfører matbildegjenkjenning mens den andre utfører matbildesegmentering.

Abstract

På grunn av problemene og kostnadene forbundet med manuelle kostholdsvurderingstilnærminger, er automatiserte løsninger nødvendig for å lette og øke hastigheten på arbeidet og øke kvaliteten. I dag kan automatiserte løsninger registrere en persons diettinntak på en mye enklere måte, for eksempel ved å ta et bilde med et smarttelefonkamera. I denne artikkelen vil vi fokusere på slike bildebaserte tilnærminger til kostholdsvurdering. For problemet med matbildegjenkjenning har dype nevrale nettverk oppnådd toppmoderne de siste årene, og vi presenterer vårt arbeid på dette feltet. Spesielt beskriver vi først metoden for mat- og drikkebildegjenkjenning ved hjelp av en dyp nevrale nettverksarkitektur, kalt NutriNet. Denne metoden, som de fleste undersøkelser gjort i de tidlige dagene av dyp læringsbasert matbildegjenkjenning, er begrenset til en utgang per bilde, og derfor uegnet for bilder med flere mat- eller drikkeartikler. Det er derfor tilnærminger som utfører mat bilde segmentering er betydelig mer robust, som de er i stand til å identifisere en rekke mat eller drikke elementer i bildet. Vi presenterer derfor også to metoder for matbildesegmentering - den ene er basert på fullt konveksjonelle nettverk (FCNer), og den andre på dype gjenværende nettverk (ResNet).

Introduction

Kostholdsvurdering er et avgjørende skritt for å bestemme handlingsbare områder av en persons diett. Men å utføre kostholdsvurdering ved hjelp av tradisjonelt manuelle tilnærminger er forbundet med betydelige kostnader. Disse tilnærmingene er også utsatt for feil, da de ofte er avhengige av selvrapportering av den enkelte. Automatisert kostholdsvurdering løser disse problemene ved å gi en enklere måte å kvantifisere og kvalifisere matinntaket på. En slik tilnærming kan også lindre noen av feilene som finnes i manuelle tilnærminger, for eksempel tapte måltider, manglende evne til å nøyaktig vurdere matvolum, etc. Derfor er det klare fordeler ved å automatisere kostholdsvurdering ved å utvikle løsninger som identifiserer ulike matvarer og drikkevarer og kvantifiserer matinntak1. Disse løsningene kan også brukes til å muliggjøre en estimering av næringsverdier av mat og drikke (heretter "matvarer").). Følgelig er automatisert kostholdsvurdering nyttig for flere applikasjoner - fra strengt medisinsk bruk, for eksempel å tillate dietitians å lettere og nøyaktig spore og analysere pasientenes dietter, til bruk inne i velværeapper rettet mot den generelle befolkningen.

Automatisk gjenkjenne matvarer fra bilder er et utfordrende datasyn problem. Dette skyldes at matvarer vanligvis er deformerbare gjenstander, og på grunn av det faktum at en stor mengde av matvarens visuelle informasjon kan gå tapt under forberedelsen. I tillegg kan forskjellige matvarer synes å være svært lik hverandre, og den samme maten kan synes å være vesentlig forskjellig på flere bilder2. Videre avhenger gjenkjenningsnøyaktigheten av mange flere faktorer, for eksempel bildekvalitet, om matvaren er blokkert av et annet element, avstand som bildet ble tatt fra, etc. Gjenkjenne drikkevarer presenterer sitt eget sett med utfordringer, den viktigste er den begrensede mengden visuell informasjon som er tilgjengelig i et bilde. Denne informasjonen kan være drikkefarge, drikkebeholderfarge og struktur, og under optimale bildeforhold er drikketettheten2.

For å kunne gjenkjenne matvarer fra bilder, er det nødvendig å lære funksjoner i hver mat- og drikkeklasse. Dette ble tradisjonelt gjort ved hjelp av manuelt definertefunksjonsekstraktorer 3,4,5,6 somutfører anerkjennelse basert på bestemte elementfunksjoner som farge, tekstur, størrelse, etc., eller en kombinasjon av disse funksjonene. Eksempler på disse funksjonsekstraktorene inkluderer flerekjernelæring 4,parvis lokalefunksjoner 5 og bag-of-features modell6. På grunn av kompleksiteten i matbilder oppnådde disse tilnærmingene for det meste en lav klassifiseringsnøyaktighet - mellom 10% og 40%3,4,5. Årsaken til dette er at den manuelle tilnærmingen ikke er robust nok til å være tilstrekkelig nøyaktig. Fordi en matvare kan variere betydelig i utseende, er det ikke mulig å omfatte alle disse avvikene manuelt. Høyere klassifiseringsnøyaktighet kan oppnås med manuelt definerte funksjonsekstraktorer når enten antall matklasser reduseres5, eller forskjellige bildefunksjoner kombineres6, noe som indikerer at det er behov for mer komplekse løsninger på dette problemet.

Dette er grunnen til at dyp læring viste seg å være så effektiv for matbildegjenkjenningsproblemet. Dyp læring, eller dype nevrale nettverk, var inspirert av biologiske hjerner, og gjør det mulig for beregningsmodeller bestående av flere behandlingslag å automatisk lære funksjoner gjennom trening på et sett medinndatabilder 7,8. På grunn av dette har dyp læring vesentlig forbedret toppmoderne i en rekke forskningsfelt7, med datasyn, og deretter mat bildegjenkjenning, å være en av dem2.

Spesielt er dype convolutional nevrale nettverk (DCNNer) mest populære for matbildegjenkjenning - disse nettverkene er inspirert av det visuelle systemet av dyr, hvor individuelle nevroner prøver å få en forståelse av de visuelle inngangene ved å reagere på overlappende regioner i det visuellefeltet 9. Et convolutional nevrale nettverk tar inndatabildet og utfører en rekke operasjoner i hvert av nettverkslagene, hvorav de vanligste er convolutional, fullt tilkoblet og pooling lag. Konvolutional lag inneholder lærelige filtre som reagerer på visse funksjoner i inndata, mens fullt tilkoblede lag komponerer utdata fra andre lag for å få kunnskap på høyere nivå fra den. Målet med å slå sammen lag er å nedsempel på inndata2. Det er to tilnærminger til å bruke dyplæringsmodeller som viste seg populære: å ta en eksisterende dyp nevralenettverksdefinisjon 10,11, referert til som en dyp læringsarkitektur i denne artikkelen, eller definere en ny dyplæringsarkitektur12,13, og trene en av disse på et matbildedatasett. Det er styrker og svakheter ved begge tilnærmingene - når man bruker en eksisterende dyplæringsarkitektur, kan en arkitektur som gjorde det bra for andre problemer velges og finjusteres for ønsket problem, og dermed spare tid og sikre at en validert arkitektur er valgt. Å definere en ny dyplæringsarkitektur, derimot, er mer tidkrevende, men gjør det mulig å utvikling av arkitekturer som er spesielt laget for å ta hensyn til detaljene i et problem og dermed teoretisk yte bedre for dette problemet.

I denne artikkelen presenterer vi begge tilnærmingene. For mat bildegjenkjenning problemet, utviklet vi en ny DCNN arkitektur kalt NutriNet2, som er en modifikasjon av den velkjente AlexNet arkitektur14. Det er to hovedforskjeller sammenlignet med AlexNet: NutriNet godtar 512x512-pikselbilder som inngang (i motsetning til 256x256-pixel bilder for AlexNet), og NutriNet har et ekstra konvolutional lag i begynnelsen av det nevrale nettverket. Disse to endringene ble innført for å trekke ut så mye informasjon fra gjenkjenningsdatasettbildene som mulig. Å ha bilder med høyere oppløsning betydde at det er mer informasjon til stede på bilder og å ha mer konveksjonelle lag betydde at ytterligere kunnskap kunne hentes ut fra bildene. Sammenlignet med AlexNets rundt 60 millioner parametere inneholder NutriNet mindre parametere: ca. 33 millioner. Dette skyldes forskjellen i dimensjonalitet ved det første fullstendig tilkoblede laget forårsaket av det ekstra konvolutionale lag2. Figur 1 inneholder et diagram over NutriNet-arkitekturen. Matbildene som ble brukt til å trene NutriNet-modellen ble hentet fra Internett - prosedyren er beskrevet i protokollteksten.

For problemet med matbildesegmentering brukte vi to forskjellige eksisterende arkitekturer: fullt konveksjonelle nettverk (FCN)15 og dype restnettverk (ResNet)16, som begge representerte toppmoderne for bildesegmentering da vi brukte dem til å utvikle sine respektive løsninger for segmentering av matbilder. Det finnes flere FCN varianter som ble introdusert av Long et al.: FCN-32s, FCN-16s og FCN-8s15. FCN-32s sender ut et pikselkart basert på spådommene fra FCNs siste lag, mens FCN-16s-varianten kombinerer disse spådommene med de med et tidligere lag. FCN-8s vurderer enda et lags spådommer og er derfor i stand til å gjøre spådommer på det fineste kornet, og derfor er det egnet for matbildegjenkjenning. FCN-8s som vi brukte var forhåndstrent på PASCAL Visual Object Classes (PASCAL VOC) datasett17 og trent og testet på bilder av matkopier (heretter "falsk mat")18 på grunn av deres visuelle likhet med ekte mat og på grunn av mangel på kommenterte bilder av ekte mat på et pikselnivå. Falsk mat brukes i ulike atferdsstudier og bilder er tatt for alle retter fra alle studiedeltakere. Fordi matinnholdet i disse bildene er kjent, gjør det bildedatasettet nyttig for dyp læringsmodelltrening. Behandlingstrinn for datasett er beskrevet i protokollteksten.

Den ResNet-baserte løsningen ble utviklet i omfanget av Food Recognition Challenge (FRC)19. Den bruker Hybrid Task Cascade (HTC)20-metoden med en ResNet-10116 ryggrad. Dette er en toppmoderne tilnærming for bildesegmenteringsproblemet som kan bruke forskjellige funksjonsekstraktorer eller ryggrad. Vi vurderte også andre ryggradsnettverk, spesielt andre ResNet-varianter som ResNet-5016,men ResNet-101 var den mest passende på grunn av dybden og evnen til å representere inndatabilder på en kompleks nok måte. Datasettet som ble brukt til opplæring av HTC ResNet-101-modellen var FRC-datasettet med ekstra utvidede bilder. Disse forsterkningene presenteres i protokollteksten.

Denne artikkelen er ment som en ressurs for maskinlæringseksperter på jakt etter informasjon om hvilke dyplæringsarkitekturer og dataforstørrelsestrinn som fungerer bra for problemene med matbildegjenkjenning og segmentering, samt for ernæringsforskere som ønsker å bruke vår tilnærming til å automatisere matbildegjenkjenning for bruk i kostholdsvurdering. I avsnittene nedenfor presenteres dype læringsløsninger og datasett fra feltet for matbildegjenkjenning. I protokollteksten beskriver vi hvordan hver av de tre tilnærmingene ble brukt til å trene dype nevrale nettverksmodeller som kan brukes til automatisert kostholdsvurdering. I tillegg inneholder hver protokolldel en beskrivelse av hvordan datasettene for matbilde som brukes til opplæring og testing, ble anskaffet og behandlet.

DCNN oppnådde generelt vesentlig bedre resultater enn andre metoder for matbildegjenkjenning og segmentering, og derfor er det store flertallet av nyere forskning på feltet basert på disse nettverkene. Kawano et al. brukte DCNNer til å utfylle manuelletilnærminger 21 og oppnådde en klassifiseringsnøyaktighet på 72,26% på UEC-FOOD100-datasettet22. Christodoulidis et al. brukte dem utelukkende for å oppnå en høyere nøyaktighet på 84,90% på et selververvet datasett23. Tanno et al. utviklet DeepFoodCam - en smarttelefon app for mat bildegjenkjenning som bruker DCNNs24. Liu et al. presenterte et system som utfører en Internett-basert diettvurdering ved hjelp av DCNNs25. Martinel et al. introduserte en DCNN-basert tilnærming som utnytter detaljene i matbilder26 og rapporterte en nøyaktighet på 90,27% på Food-101-datasettet27. Zhou et al. forfattet en gjennomgang av dyp læringsløsninger i matdomenet28.

Nylig foreslo Zhao et al. et nettverk spesielt for matbildegjenkjenning i mobilapplikasjoner29. Denne tilnærmingen bruker et mindre "student" nettverk som lærer av et større "lærer" nettverk. Med det klarte de å oppnå en nøyaktighet på 84% på UEC-FOOD25630 og en nøyaktighet på 91,2% på Food-101-datasettet27. Hafiz et al. brukte DCNNer til å utvikle en bildegjenkjenningsløsning kun for drikkevarer og rapporterte en svært høy nøyaktighet på 98,51 %31. Shimoda et al. beskrev en ny metode for å oppdage plateregioner i matbilder uten bruk av pikselmessig merknad32. Ciocca et al. introduserte et nytt datasett som inneholder matvarer fra 20 forskjellige matklasser i 11 forskjellige tilstander (solid, skiver, kremet pasta, etc.) og presenterte sin tilnærming til treningsgjenkjenningsmodeller som er i stand til å gjenkjenne mattilstanden, i tillegg til matklasse33. Knez et al. evaluerte løsninger for matbildegjenkjenning for mobile enheter34. Til slutt gjennomførte Furtado et al. en studie om hvordan det menneskelige visuelle systemet sammenlignet med ytelsen til DCNNer og fant at menneskelig anerkjennelse fortsatt overgår DCNNer med en nøyaktighet på 80% versus 74,5%35. Forfatterne bemerket at med et lite antall matklasser, dcnnner fungerer bra, men på et datasett med hundrevis av klasser, menneskelig anerkjennelse nøyaktighet erhøyere 35, fremhever kompleksiteten i problemet.

Til tross for sine toppmoderne resultater, har dyp læring en stor ulempe - det krever et stort inndatasett for å trene modellen på. Når det gjelder matbildegjenkjenning, er det nødvendig med et stort datasett for matbilde, og dette datasettet må omfatte så mange forskjellige virkelige scenarier som mulig. I praksis betyr dette at for hver enkelt mat eller drikke element, en stor samling av bilder er nødvendig, og så mange forskjellige elementer som mulig må være til stede i datasettet. Hvis det ikke er nok bilder for et bestemt element i datasettet, er det lite sannsynlig at elementet gjenkjennes. På den annen side, hvis bare et lite antall elementer er dekket av datasettet, vil løsningen være begrenset i omfang, og bare i stand til å gjenkjenne en håndfull forskjellige matvarer og drikkevarer.

Flere datasett ble gjort tilgjengelig tidligere. Pittsburgh Fast-Food Image Dataset (PFID)3 ble introdusert for å oppmuntre til mer forskning innen matbildegjenkjenning. University of Electro-Communications Food 100 (UEC-FOOD100)22 og University of Electro-Communications Food 256 (UEC-FOOD256)30 datasett inneholder japanske retter, utvidet med noen internasjonale retter i tilfelle av UEC-FOOD256 datasett. Food-101-datasettet inneholder populære retter kjøpt fra et nettsted27. Food-5036 og Video Retrieval Group Food 172 (VireoFood-172)37 datasett er kinesiskbaserte samlinger av matbilder. Universitetet i Milano-Bicocca 2016 (UNIMIB2016) datasett består av bilder av mat skuffer fra en italiensk kantine38. Recipe1M er et stort datasett av matlagingsoppskrifter og matbilder39. Food-475-datasettet40 samler fire tidligere publiserte matbildedatasett27,30,36,37 til en. Beijing Technology and Business University Food 60 (BTBUFood-60) er et datasett av bilder ment for matdeteksjon41. Nylig ble ISIA Food-500-datasettet42 av diverse matbilder gjort tilgjengelig. Sammenlignet med andre offentlig tilgjengelige matbildedatasett inneholder den et stort antall bilder, delt inn i 500 matklasser, og er ment å fremme utviklingen av multimedia matgjenkjenningsløsninger42.

Protocol

1. Matbildegjenkjenning med NutriNet

  1. Innhenting av datasettet for matbilde
    1. Samle en liste over ulike matvarer og drikkevarer som vil være utgangene på matbildegjenkjenningsmodellen. En variert liste over populære matvarer og drikkevarer foretrekkes, da det vil tillate opplæring av en robust matbildegjenkjenningsmodell.
    2. Lagre mat- og drikkelisten i en tekstfil (f.eks. 'txt' eller 'csv').
      MERK: Tekstfilen som brukes av forfatterne av denne artikkelen finner du i tilleggsfilene ('food_items.txt') og inneholder en liste over 520 slovenske matvarer.
    3. Skriv eller last ned et Python43-skript som bruker Google Custom Search API44 til å laste ned bilder av hvert matelement fra listen og lagre dem i en egen mappe for hver matvare.
      MERK: Python-skriptet som brukes av forfatterne av denne artikkelen, finnes i tilleggsfilene ('download_images.py'). Hvis dette skriptet brukes, må utviklernøkkelen (variabel 'developerKey', linje 8 i Python-skriptkoden) og Custom Search Engine ID (variabel 'cx', linje 28 i Python-skriptkoden) erstattes med verdier som er spesifikke for Google-kontoen som brukes.
    4. Kjør Python-skriptet fra trinn 1.1.3 (f.eks. med kommandoen: 'python download_images.py').
  2. (Valgfritt) Rengjøre datasettet for matbilde
    1. Tren en modell for gjenkjenning av matbilder på samme måte som i avsnitt 1.4, bortsett fra å bruke bare to utganger (mat, ikke-mat) i motsetning til listen over utganger fra trinn 1.1.1.
      MERK: Forfatterne av denne artikkelen brukte bilder kombinert fra oppskriftsnettsteder og ImageNet-datasettet45 for å trene modellen for gjenkjenning av matbilder. Siden fokuset her er på matbildegjenkjenning og dette er et valgfritt skritt for rengjøring av gjenkjenningsdatasettet, utelates ytterligere detaljer. I stedet finner du flere detaljer om denne tilnærmingen i Mezgec et al.2.
    2. Kjør gjenkjenningsmodellen fra trinn 1.2.1 på datasettet for matbilde som er et resultat av trinn 1.1.4.
    3. Slett hvert bilde som ble merket som ikke-mat av gjenkjenningsmodellen fra trinn 1.2.1.
    4. Kontroller datasettet for matbilde manuelt etter andre feilaktige bilder eller bilder av lav kvalitet, og for bilde duplikater.
    5. Slett bilder som ble funnet i trinn 1.2.4.
  3. Øke datasettet for matbilde
    1. Opprett en ny versjon av hvert bilde fra matbildedatasettet ved å rotere det med 90° ved hjelp av CLoDSA-biblioteket46 (linje 19 til 21 i det medfølgende Python-skriptet).
      MERK: Python-skriptet som inneholder alle CLoDSA-kommandoene som brukes av forfatterne av denne artikkelen, finnes i en fil som er inkludert i tilleggsfilene ('nutrinet_augmentation.py'). Hvis dette skriptet brukes, må inndatabanen (variabelen INPUT_PATH», linje 8 i Python-skriptkoden) og Utdatabanen (variabelen OUTPUT_PATH», linje 11 i Python-skriptkoden) erstattes med baner til de ønskede mappene.
    2. Opprett en ny versjon av hvert bilde fra matbildedatasettet ved å rotere det med 180° ved hjelp av CLoDSA-biblioteket (linje 19 til 21 i det medfølgende Python-skriptet).
    3. Opprett en ny versjon av hvert bilde fra matbildedatasettet ved å rotere det med 270° ved hjelp av CLoDSA-biblioteket (linje 19 til 21 i det medfølgende Python-skriptet).
    4. Opprett en ny versjon av hvert bilde fra matbildedatasettet ved å vende det horisontalt ved hjelp av CLoDSA-biblioteket (linje 23 og 24 i det medfølgende Python-skriptet).
    5. Opprett en ny versjon av hvert bilde fra matbildedatasettet ved å legge til tilfeldig fargestøy ved hjelp av CLoDSA-biblioteket (linje 26 og 27 i det medfølgende Python-skriptet).
    6. Opprett en ny versjon av hvert bilde fra matbildedatasettet ved å zoome inn i det med 25 % ved hjelp av CLoDSA-biblioteket (linje 29 og 30 i det medfølgende Python-skriptet).
    7. Lagre bilder fra trinn 1.3.1-1.3.6, sammen med de opprinnelige bildene (linje 16 og 17 i det inkluderte Python-skriptet), i et nytt matbildedatasett (totalt 7 varianter per matbilde). Dette gjøres ved å utføre kommandoen i linje 32 av det inkluderte Python-skriptet.
  4. Utføre bildegjenkjenning av mat
    1. Importer matbildedatasettet fra trinn 1.3.7 til NVIDIA DIGITS-miljøet47, og del datasettet i opplæring, validering og testing av delsett i NVIDIA DIGITS-brukergrensesnittet.
    2. Kopier og lim inn definisjonsteksten til NutriNet-arkitekturen2 i NVIDIA DIGITS som et tilpasset nettverk.
      MERK: NutriNet arkitekturdefinisjonsteksten finnes i tilleggsfilene ('nutrinet.prototxt').
    3. (Valgfritt) Definer treningshyperparametere i NVIDIA DIGITS-brukergrensesnittet.
      Merk: Hyperparametere er parametere som brukes til å definere opplæringsprosessen før starten. Hyperparameterne som brukes av forfatterne av denne artikkelen finnes i en fil som er inkludert i tilleggsfilene ('nutrinet_hyperparameters.prototxt'). Mens eksperimentering er nødvendig for hvert datasett for å finne de optimale hyperparameterne, inneholder filen en hyperparameterkonfigurasjon som kan kopieres til NVIDIA DIGITS-brukergrensesnittet. Videre fyller NVIDIA DIGITS hyperparameterne med standardverdier som kan brukes som en opprinnelig plan. Dette trinnet er derfor valgfritt.
    4. Kjør treningen av NutriNet-modellen.
    5. Når treningen er fullført, kan du ta den best presterende NutriNet-modell iterasjonen. Denne modellen brukes deretter til å teste ytelsen til denne tilnærmingen.
      MERK: Det finnes flere måter å fastslå den beste modell iterasjonen på. En enkel måte å gjøre dette på er som følger. NVIDIA DIGITS sender ut en graf over nøyaktighetstiltak for hver treningsegang. Sjekk hvilken epoke som oppnådde den laveste tapsverdien for valideringsundersettet av matbildedatasettet - at modell iterasjon kan betraktes som best ytelse. Et valgfritt skritt for å bestemme den beste modell iterasjonen er å observere hvordan tapsverdien for treningsundersettet endres fra epoke til epoke, og hvis den begynner å falle kontinuerlig mens tapsverdien for valideringsundersettet forblir den samme eller stiger kontinuerlig, ta epoken før denne nedgangen i treningstapsverdi, som det kan signalisere når modellen begynte å overfitting på treningsbildene.

2. Segmentering av matbilde med FCNer

  1. Få falske-mat bildedatasett
    1. Få et datasett av falske matbilder. Falske matbilder er samlet av forskere som utfører atferdsstudier ved hjelp av matkopier.
      MERK: Forfatterne av denne artikkelen mottok bilder av falsk mat som ble samlet inn i et laboratoriemiljø18.
    2. Komnter hvert matbilde manuelt på pikselnivå – hver piksel i bildet må inneholde informasjon om hvilken matvareklasse det tilhører. Resultatet av dette trinnet er ett merknadsbilde for hvert bilde fra datasettet for matbilde, der hver piksel representerer en av matklassene.
      MERK: Det er mange verktøy for å oppnå dette - forfatterne av denne artikkelen brukte JavaScript Segment Annotator48.
  2. Øke bildedatasettet for falske matvarer
    1. Utfør de samme trinnene som i del 1.3, men bare på bilder fra opplæringsdelsettet i datasettet for matbilde.
      MERK: Med unntak av trinn 1.3.5 må alle dataforstørrelsestrinn utføres også på tilsvarende merknadsbilder. Hvis skriptet fra del 1.3 brukes, må inndatabanen (variabelen INPUT_PATH», linje 8 i Python43-skriptkoden) og Utdatabanen (variabel 'OUTPUT_PATH', linje 11 i Python-skriptkoden) erstattes med baner til de ønskede mappene. I tillegg setter du problemet (variabel 'PROBLEM', linje 6 i Python-skriptkoden) til 'instance_segmentation' og merknadsmodus (variabel 'ANNOTATION_MODE', linje 7 i Python-skriptkoden) og Utgangsmodus (variabel 'OUTPUT_MODE', linje 10 i Python-skriptkoden) til 'coco'.
  3. Utføre forfalskning-mat bilde segmentering
    1. Utfør de samme trinnene som i del 1.4, med unntak av trinn 1.4.2. I stedet for dette trinnet utfører du trinn 2.3.2 og 2.3.3.
      Merk: Hyperparametere er parametere som brukes til å definere opplæringsprosessen før starten. Opplæring hyperparametere som brukes av forfatterne av denne artikkelen for valgfri trinn 1.4.3 finnes i en fil som er inkludert i tilleggsfilene ('fcn-8s_hyperparameters.prototxt'). Mens eksperimentering er nødvendig for hvert datasett for å finne det optimale settet med hyperparametere, inneholder filen en hyperparameterkonfigurasjon som kan kopieres til NVIDIA DIGITS47-brukergrensesnittet. Videre fyller NVIDIA DIGITS hyperparameterne med standardverdier som kan brukes som en opprinnelig plan.
    2. Kopier og lim inn definisjonsteksten i FCN-8s-arkitekturen15 i NVIDIA DIGITS-miljøet som et tilpasset nettverk.
      MERK: FCN-8s arkitekturdefinisjonsteksten er offentlig tilgjengelig på GitHub49.
    3. Skriv inn banen til den forhåndstrente FCN-8s-modellen vekter inn i NVIDIA DIGITS-brukergrensesnittet.
      MERK: Disse modellvektene ble forhåndstrent på PASCAL VOC-datasettet17 og finnes på Internett49.

3. Matbildesegmentering med HTC ResNet

  1. Innhenting av datasettet for matbilde
    1. Last ned datasettet for matbilde fra FRC-nettstedet19.
  2. Øke datasettet for matbilde
    1. Utfør trinn 1.3.1-1.3.4.
      MERK: Python43-skriptet som inneholder alle CLoDSA46-kommandoene som brukes av forfatterne av denne artikkelen, finnes i en fil som er inkludert i tilleggsfilene ('frc_augmentation.py'). Hvis dette skriptet brukes, må inndatabanen (variabelen INPUT_PATH», linje 8 i Python-skriptkoden) og Utdatabanen (variabelen OUTPUT_PATH», linje 11 i Python-skriptkoden) erstattes med baner til de ønskede mappene.
    2. Opprett en ny versjon av hvert bilde fra datasettet for matbilde ved å legge til gaussisk uskarphet i det ved hjelp av CLoDSA-biblioteket (linje 26 og 27 i det medfølgende Python-skriptet).
    3. Opprett en ny versjon av hvert bilde fra matbildedatasettet ved å skjerpe det ved hjelp av CLoDSA-biblioteket (linje 29 og 30 i det medfølgende Python-skriptet).
    4. Opprett en ny versjon av hvert bilde fra datasettet for matbilde ved å bruke gammakorrigering på det ved hjelp av CLoDSA-biblioteket (linje 32 og 33 i det medfølgende Python-skriptet).
    5. Lagre bilder fra trinn 3.2.1-3.2.4, sammen med de opprinnelige bildene (linje 16 og 17 i det inkluderte Python-skriptet), i et nytt matbildedatasett (totalt 8 varianter per matbilde). Dette gjøres ved å utføre kommandoen i linje 35 av det inkluderte Python-skriptet.
    6. Lagre bilder fra trinn 3.2.2-3.2.4, sammen med de opprinnelige bildene (linje 16 og 17 i det inkluderte Python-skriptet), i et nytt matbildedatasett (totalt 4 varianter per matbilde). Dette gjøres ved å slette linje 19 til 24 av det medfølgende Python-skriptet og utføre kommandoen i linje 35.
  3. Utføre segmentering av matbilde
    1. Endre den eksisterende HTC20 ResNet-101-arkitekturen16-definisjonen fra MMDetection-biblioteket50 i avsnittene "modellinnstillinger" og "datasettinnstillinger" for arkitekturdefinisjonsfilen slik at den godtar matbildedatasettene fra trinn 3.1.1, 3.2.5 og 3.2.6.
    2. (Valgfritt) Endre HTC ResNet-101 arkitekturdefinisjonen fra trinn 3.3.1 for å definere opplæringshyperparametere: batchstørrelse i avsnittet "datasettinnstillinger", problemløsertype og læringsfrekvens i avsnittet "optimizer", læringspolicy i avsnittet "læringspolitikk" og antall opplæringseposer i avsnittet "kjøretidsinnstillinger" i arkitekturdefinisjonsfilen.
      MERK: Den endrede HTC ResNet-101 arkitekturdefinisjonsfilen finnes i tilleggsfilene ('htc_resnet-101.py'). Hyperparametere er parametere som brukes til å definere opplæringsprosessen før starten. Mens eksperimentering er nødvendig for hvert datasett for å finne det optimale settet med hyperparametere, inneholder filen allerede en hyperparameterkonfigurasjon som kan brukes uten endring. Dette trinnet er derfor valgfritt.
    3. Kjør opplæringen av HTC ResNet-101-modellen på matbildedatasettet fra trinn 3.1.1 ved hjelp av MMDetection-biblioteket (f.eks. med kommandoen: 'python mmdetection/tools/train.py htc_resnet-101.py').
    4. Når treningen fra trinn 3.3.3 er fullført, kan du ta den beste HTC ResNet-101-modell iterasjonen og finjustere den ved å kjøre neste fase av treningen på matbildedatasettet fra trinn 3.2.5.
      MERK: Det finnes flere måter å fastslå den beste modell iterasjonen på. En enkel måte å gjøre dette på er som følger. MMDetection-biblioteket sender ut verdier av nøyaktighetstiltak for hver treningseksjon i kommandolinjegrensesnittet. Sjekk hvilken epoke som oppnådde den laveste tapsverdien for valideringsundersettet av matbildedatasettet - at modell iterasjon kan betraktes som best ytelse. Et valgfritt skritt for å bestemme den beste modell iterasjonen er å observere hvordan tapsverdien for treningsundersettet endres fra epoke til epoke, og hvis den begynner å falle kontinuerlig mens tapsverdien for valideringsundersettet forblir den samme eller stiger kontinuerlig, ta epoken før denne nedgangen i treningstapsverdi, som det kan signalisere når modellen begynte å overfitting på treningsbildene.
    5. Når treningen fra trinn 3.3.4 er fullført, kan du ta den beste HTC ResNet-101-modell iterasjonen og finjustere den ved å kjøre neste fase av treningen på matbildedatasettet fra trinn 3.2.6.
      MERK: Se merknad for trinn 3.3.4.
    6. Når treningen fra trinn 3.3.5 er fullført, kan du ta den beste HTC ResNet-101-modell iterasjonen og finjustere den ved å kjøre neste fase av treningen på matbildedatasettet fra trinn 3.2.5.
      MERK: Se merknad for trinn 3.3.4.
    7. Når treningen fra trinn 3.3.6 er fullført, tar du den beste HTC ResNet-101-modell iterasjonen. Denne modellen brukes deretter til å teste ytelsen til denne tilnærmingen.
      MERK: Se merknad for trinn 3.3.4. Trinn 3.3.3-3.3.7 ga de beste resultatene for formålene som er definert av forfatterne av denne artikkelen. Eksperimentering er nødvendig for hvert datasett for å finne den optimale sekvensen av trenings- og dataforstørrelsestrinn.

Representative Results

NutriNet ble testet mot tre populære dyplæringsarkitekturer på den tiden: AlexNet14, GoogLeNet51 og ResNet16. Flere opplæringsparametere ble også testet for alle arkitekturer for å definere de optimale verdiene2. Blant disse er valget av problemløsertype, som bestemmer hvordan tapsfunksjonen minimeres. Denne funksjonen er det primære kvalitetsmålet for trening av nevrale nettverk, da den er bedre egnet for optimalisering under trening enn klassifiseringsnøyaktighet. Vi testet tre problemløsere: Stokastisk gradient nedstigning (SGD)52,Nesterov's Accelerated Gradient (NAG)53 og Adaptive Gradient algorithm (AdaGrad)54. Den andre parameteren er partistørrelse, som definerer antall bilder som behandles samtidig. Dybden av den dype læringsarkitekturen bestemte verdien av denne parameteren, da dypere arkitekturer krever mer plass i GPU-minnet - konsekvensen av denne tilnærmingen var at minnet var helt fylt med bilder for alle arkitekturer, uavhengig av dybde. Den tredje parameteren er læringsfrekvens, som definerer hastigheten som nevrale nettverksparametere endres under trening. Denne parameteren ble satt sammen med batchstørrelsen, da antall samtidig behandlede bilder dikterer konvergenshastigheten. AlexNet-modellene ble opplært ved hjelp av en batchstørrelse på 256 bilder og en grunnleggende læringsfrekvens på 0,02; NutriNet brukte en batchstørrelse på 128 bilder og en hastighet på 0,01; GoogLeNet 64 bilder og en hastighet på 0,005; og ResNet 16 bilder og en hastighet på 0,00125. Tre andre parametere ble fastsatt for alle arkitekturer: læringsfrekvenspolicy (step-down), trinnstørrelse (30%) gamma (0,1). Disse parametrene beskriver i fellesskap hvordan læringsfrekvensen endrer seg i hver epoke. Tanken bak denne tilnærmingen er at læringsfrekvensen gradvis senkes for å finjustere modellen jo nærmere den kommer til den optimale tapsverdien. Til slutt ble antall treningsemoker også festet til 150 for alle dyplæringsarkitekturer2.

Det beste resultatet blant alle parametrene som ble testet som NutriNet oppnådde var en klassifiseringsnøyaktighet på 86,72% på gjenkjenningsdatasettet, som var rundt 2% høyere enn det beste resultatet for AlexNet og litt høyere enn GoogLeNets beste resultat. Den beste arkitekturen generelt var ResNet (med rundt 1%), men treningstiden for ResNet er vesentlig høyere sammenlignet med NutriNet (med en faktor på ca fem), noe som er viktig hvis modellene kontinuerlig re-trent for å forbedre nøyaktigheten og antall gjenkjennelige matvarer. NutriNet, AlexNet og GoogLeNet oppnådde sine beste resultater ved hjelp av AdaGrad-problemløseren, mens ResNets beste modell brukte NAG-problemløseren. NutriNet ble også testet på det offentlig tilgjengelige UNIMIB2016 matbildedatasettet38. Dette datasettet inneholder 3616 bilder av 73 forskjellige matvarer. NutriNet oppnådde en gjenkjenningsnøyaktighet på 86,39 % på dette datasettet, noe som ut overstrikk resultatet av grunnlinjegjenkjenningsresultatet av forfatterne av datasettet, som var 85,80 %. I tillegg ble NutriNet testet på et lite datasett av 200 virkelige bilder av 115 forskjellige mat- og drikkeartikler, hvor NutriNet oppnådde en topp-5 nøyaktighet på 55%.

For å trene FCN-8s fake-food bildesegmenteringsmodell, brukte vi Adam55 som problemløsertype, da vi fant ut at den fungerte optimalt for denne oppgaven. Grunnlæringsfrekvensen ble satt svært lav - til 0,0001. Årsaken til det lave tallet er det faktum at bare ett bilde kan behandles om gangen, noe som er en konsekvens av klassifiseringsprosessen på pikselnivå. Kravene til GPU-minne for denne tilnærmingen er betydelig større enn klassifiseringen på bildenivå. Læringsfrekvensen måtte derfor settes lavt slik at parametrene ikke ble endret for fort og konvergerer til mindre optimale verdier. Antall treningsemoker ble satt til 100, mens læringsfrekvenspolitikken, trinnstørrelsen og gamma ble satt til å gå ned, henholdsvis 34% og 0,1, da disse parametrene produserte de mest nøyaktige modellene.

Nøyaktighetsmålinger av FCN-8s-modellen ble utført ved hjelp av pikselnøyaktigheten15, som er analog med klassifiseringsnøyaktigheten til tradisjonelle dyplæringsnettverk, den største forskjellen er at nøyaktigheten beregnes på pikselnivået i stedet for på bildenivå:

Equation 1

der PA er pikselnøyaktighetsmålet, er nij antall piksler fra klassen jeg spådde å tilhøre klasse j og ti = Σj nij er det totale antall piksler fra klassen i bakken-sannhet etiketter1. Med andre ord beregnes pikselnøyaktigheten ved å dele riktig anslåtte piksler med totalt antall piksler. Den endelige nøyaktigheten av den trente FCN-8s modellen var 92,18%. Figur 2 viser tre eksempelbilder fra bildedatasettet for falske matvarer (ett fra hver av undersettene for opplæring, validering og testing), sammen med de tilsvarende etikettene for grunnsannhet og modellforutsigelse.

Parametrene for å trene HTC20 ResNet-101-modellen for matbildesegmentering ble satt som følger: problemløseren som ble brukt var SGD fordi den overgikk andre problemløsertyper. Basislæringsfrekvensen ble satt til 0,00125 og batchstørrelsen til 2 bilder. Antall treningsemoker ble satt til 40 per treningsfase, og flere treningsfaser ble utført - først på det opprinnelige FRC-datasettet uten utvidede bilder, deretter på det 8x-utvidede og 4x-utvidede FRC-datasettet flere ganger på en vekslende måte, hver gang du tar den beste modellen og finjusterer det i neste treningsfase. Du finner mer informasjon om opplæringsfasene i avsnitt 3.3 i protokollteksten. Til slutt ble den nedstemte læringspolitikken brukt, med faste epoker for når læringsfrekvensen gikk ned (epoker 28 og 35 for den første treningsfasen). En viktig ting å merke seg er at selv om denne sekvensen av treningsfaser ga de beste resultatene i testingen i omfanget av FRC, kan bruk av et annet datasett kreve en annen sekvens for å gi optimale resultater.

Denne ResNet-baserte løsningen for segmentering av matbilde ble evaluert ved hjelp av følgende presisjonsmål19:

Equation 2

der P er presisjon, er TP antall sanne positive spådommer av matbildesegmenteringsmodellen, FP er antall falske positive spådommer og IoU er skjæringspunktet over Union, som beregnes med denne ligningen:

Equation 3

der Area of Overlap representerer antall spådommer av modellen som overlapper med grunnsannhet, og Area of Union representerer det totale antall spådommer av modellen sammen med bakken sannheten, både på et pikselnivå og for hver enkelt matklasse. Tilbakekalling brukes som et sekundært mål og beregnes på en lignende måte ved hjelp av følgende formel19:

Equation 4

hvor R er tilbakekalling og FN er antall falske negative spådommer av mat bilde segmentering modell. Presisjons- og tilbakekallingstiltakene blir deretter gjennomsnittet på tvers av alle klasser i grunnsannhet. Ved hjelp av disse tiltakene oppnådde vår modell en gjennomsnittlig presisjon på 59,2% og en gjennomsnittlig tilbakekalling på 82,1%, som rangerte andre i andre runde av Food Recognition Challenge19. Dette resultatet var 4,2% bak første omgang og 5,3% foran tredjeplass i form av gjennomsnittlig presisjon mål. Tabell 1 inneholder resultatene for de 4 beste deltakerne i konkurransen.

Figure 1
Figur 1: Diagram over NutriNet dyp nevrale nettverksarkitektur. Dette tallet er publisert i Mezgec et al.2. Vennligst klikk her for å se en større versjon av denne figuren.

Figure 2
Figur 2: Bilder fra bildedatasettet for falsk mat. Originale bilder (venstre), manuelt merkede ground-truth etiketter (midten) og spådommer fra FCN-8s modell (høyre). Dette tallet er publisert i Mezgec et al.1. Vennligst klikk her for å se en større versjon av denne figuren.

Navn på team Plassering Gjennomsnittlig presisjon Gjennomsnittlig tilbakekalling
rssfete 1 63.4% 88.6%
simon_mezgec 2 59.2% 82.1%
Arimboux 3 53.9% 73.5%
latentvec 4 48.7% 71.1%

Tabell 1: Topp 4 resultater fra andre runde av Food Recognition Challenge. Gjennomsnittlig presisjon tas som det primære ytelsesmålet og gjennomsnittlig tilbakekalling som sekundært mål. Resultatene er hentet fra den offisielle konkurransen leaderboard19.

Tilleggsfiler. Vennligst klikk her for å laste ned denne filen.

Discussion

I de senere årene har dype nevrale nettverk blitt validert flere ganger som en passende løsning for å gjenkjenne matbilder10,11,12,21,23,25,26,29,31,33. Vårt arbeid presentert i denne artikkelen tjener til å ytterligere bevisedette 1,2. Den enkle matbildegjenkjenningstilnærmingen er enkel og kan brukes til enkle bruksområder der bilder med bare én mat- eller drikkevare forventes2.

Matbildesegmenteringstilnærmingen virker spesielt egnet for å gjenkjenne matbilder generelt, uten noen begrensning på antall matvarer1. Fordi det fungerer ved å klassifisere hver enkelt piksel av bildet, er det i stand til ikke bare å gjenkjenne et hvilket som helst antall matvarer i bildet, men også angi hvor en matvare er plassert, samt hvor stor den er. Sistnevnte kan deretter brukes til å utføre matvektestimering, spesielt hvis det brukes med enten et referanseobjekt eller et fast avstandskamera.

Det har vært noe arbeid med hensyn til tilgjengeligheten av matbildedatasett3,22,27,30,36,37,38,39,40,41,42, og vi håper mer vil bli gjort i fremtiden, spesielt når det gjelder å samle matbildedatasett fra forskjellige regioner over hele verden, noe som vil muliggjøre mer robuste løsninger som skal utvikles. For tiden har nøyaktigheten av automatiske matbildegjenkjenningsløsninger ennå ikke nådd nøyaktighet på menneskelignivå 35,og dette skyldes sannsynligvis i stor grad bruk av matbildedatasett av utilstrekkelig størrelse og kvalitet.

I fremtiden vil vårt mål være å evaluere de utviklede prosedyrene på virkelige bilder ytterligere. Generelt inneholder datasett i dette feltet ofte bilder tatt i kontrollerte miljøer eller bilder som ble optimalisert manuelt for anerkjennelse. Derfor er det viktig å samle et stort og mangfoldig datasett for matbilde i den virkelige verden for å omfatte alle de forskjellige mat- og drikkeelementene som enkeltpersoner kanskje vil gjenkjenne. Det første skrittet mot dette ble levert av Food Recognition Challenge, som inkluderte et datasett av virkelige matbilder19, men videre arbeid må gjøres for å validere denne tilnærmingen på matbilder fra hele verden og i samarbeid med dietitians.

Disclosures

Forfatterne har ingenting å avsløre.

Acknowledgments

Forfatterne vil gjerne takke Tamara Bucher fra University of Newcastle, Australia, for å ha gitt falske mat bildedatasett. Dette arbeidet ble støttet av EUs Horizon 2020 forskning og innovasjonsprogrammer (tilskudd tall 863059 - FNS-Cloud, 769661 - SAAM); og det slovenske forskningsbyrået (tilskuddsnummer P2-0098). Den europeiske union og slovenske forskningsbyrået hadde ingen rolle i utformingen, analysen eller skrivingen av denne artikkelen.

Materials

Name Company Catalog Number Comments
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 Google 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

DOWNLOAD MATERIALS LIST

References

  1. Mezgec, S., Eftimov, T., Bucher, T., Koroušić Seljak, B. Mixed Deep Learning and Natural Language Processing Method for Fake-Food Image Recognition and Standardization to Help Automated Dietary Assessment. Public Health Nutrition. 22 (7), 1193-1202 (2019).
  2. Mezgec, S., Koroušić Seljak, B. NutriNet: A Deep Learning Food and Drink Image Recognition System for Dietary Assessment. Nutrients. 9 (7), 657 (2017).
  3. Chen, M., et al. PFID: Pittsburgh Fast-Food Image Dataset. Proceedings of the ICIP 2009. , 289-292 (2009).
  4. Joutou, T., Yanai, K. A Food Image Recognition System with Multiple Kernel Learning. Proceedings of the ICIP 2009. , 285-288 (2009).
  5. Yang, S., Chen, M., Pomerlau, D., Sukthankar, R. Food Recognition using Statistics of Pairwise Local Features. Proceedings of the CVPR 2010. , 2249-2256 (2010).
  6. Anthimopoulos, M. M., Gianola, L., Scarnato, L., Diem, P., Mougiakakou, S. G. A Food Recognition System for Diabetic Patients Based on an Optimized Bag-of-Features Model. IEEE Journal of Biomedical and Health Informatics. 18 (4), 1261-1271 (2014).
  7. LeCun, Y., Bengio, Y., Hinton, G. Deep Learning. Nature. 521, 436-444 (2015).
  8. Deng, L., Yu, D. Deep Learning: Methods and Applications. Foundations and Trends in Signal Processing. 7 (3-4), 197 (2014).
  9. Hubel, D. H., Wiesel, T. N. Receptive Fields, Binocular Interaction and Functional Architecture in the Cat's Visual Cortex. The Journal of Physiology. 160 (1), 106-154 (1962).
  10. Singla, A., Yuan, L., Ebrahimi, T. Food/Non-Food Image Classification and Food Categorization using Pre-Trained GoogLeNet Model. Proceedings of the MADiMa'16. , 3-11 (2016).
  11. Yanai, K., Kawano, Y. Food Image Recognition using Deep Convolutional Network with Pre-Training and Fine-Tuning. Proceedings of the ICMEW 2015. , 1-6 (2015).
  12. Liu, C., et al. DeepFood: Deep Learning-Based Food Image Recognition for Computer-Aided Dietary Assessment. Proceedings of the ICOST 2016. , 37-48 (2016).
  13. De Sousa Ribeiro, F., et al. An End-to-End Deep Neural Architecture for Optical Character Verification and Recognition in Retail Food Packaging. Proceedings of the ICIP 2018. , 2376-2380 (2018).
  14. Krizhevsky, A., Sutskever, I., Hinton, G. ImageNet Classification with Deep Convolutional Neural Networks. Proceedings of the NIPS'12. , 1097-1105 (2012).
  15. Long, J., Shelhamer, E., Darrell, T. Fully Convolutional Networks for Semantic Segmentation. Proceedings of the CVPR 2015. , 3431-3440 (2015).
  16. He, K., Zhang, X., Ren, S., Sun, J. Deep Residual Learning for Image Recognition. Proceedings of the CVPR 2016. , 770-778 (2016).
  17. PASCAL VOC Project. PASCAL Visual Object Classes. , Available from: http://host.robots.ox.ac.uk/pascal/VOC (2020).
  18. Bucher, T., vander Horst, K., Siegrist, M. Fruit for Dessert. How People Compose Healthier Meals. Appetite. 60 (1), 74-80 (2013).
  19. Food Recognition Challenge. AICrowd. , Available from: https://www.aicrowd.com/challenges/food-recognition-challenge (2020).
  20. Chen, K., et al. Hybrid Task Cascade for Instance Segmentation. Proceedings of the CVPR 2019. , 4974-4983 (2019).
  21. Kawano, Y., Yanai, K. Food Image Recognition with Deep Convolutional Features. Proceedings of the UbiComp 2014. , 589-593 (2014).
  22. Matsuda, Y., Hoashi, H., Yanai, K. Recognition of Multiple-Food Images by Detecting Candidate Regions. Proceedings of the ICME 2012. , 25-30 (2012).
  23. Christodoulidis, S., Anthimopoulos, M. M., Mougiakakou, S. G. Food Recognition for Dietary Assessment using Deep Convolutional Neural Networks. Proceedings of the ICIAP 2015. , 458-465 (2015).
  24. Tanno, R., Okamoto, K., Yanai, K. DeepFoodCam: A DCNN-Based Real-Time Mobile Food Recognition System. Proceedings of the MADiMa'16. , 89-89 (2016).
  25. Liu, C., et al. A New Deep Learning-Based Food Recognition System for Dietary Assessment on An Edge Computing Service Infrastructure. IEEE Transactions on Services Computing. 11 (2), 249-261 (2017).
  26. Martinel, N., Foresti, G. L., Micheloni, C. Wide-Slice Residual Networks for Food Recognition. Proceedings of the IEEE WACV 2018. , 567-576 (2018).
  27. Bossard, L., Guillaumin, M., Van Gool, L. Food-101-Mining Discriminative Components with Random Forests. Proceedings of the ECCV'14. , 446-461 (2014).
  28. Zhou, L., Zhang, C., Liu, F., Qiu, Z., He, Y. Application of Deep Learning in Food: A Review. Comprehensive Reviews in Food Science and Food Safety. 18, 1793-1811 (2019).
  29. Zhao, H., Yap, K. -H., Kot, A. C., Duan, L. JDNet: A Joint-Learning Distilled Network for Mobile Visual Food Recognition. IEEE Journal of Selected Topics in Signal Processing. 14 (4), 665-675 (2020).
  30. Kawano, Y., Yanai, K. Automatic Expansion of a Food Image Dataset Leveraging Existing Categories with Domain Adaptation. Proceedings of the ECCV'14. , 3-17 (2014).
  31. Hafiz, R., Haque, M. R., Rakshit, A., Uddin, M. S. Image-Based Soft Drink Type Classification and Dietary Assessment System using Deep Convolutional Neural Network with Transfer Learning. Journal of King Saud University - Computer and Information Sciences. , (2020).
  32. Shimoda, W., Yanai, K. Weakly-Supervised Plate and Food Region Segmentation. Proceedings of the ICME 2020. , 1-6 (2020).
  33. Ciocca, G., Micali, G., Napoletano, P. State Recognition of Food Images using Deep Features. IEEE Access. 8, 32003-32017 (2020).
  34. Knez, S., Šajn, L. Food Object Recognition using a Mobile Device: Evaluation of Currently Implemented Systems. Trends in Food Science & Technology. 99, 460-471 (2020).
  35. Furtado, P., Caldeira, M., Martins, P. Human Visual System vs Convolution Neural Networks in Food Recognition Task: An Empirical Comparison. Computer Vision and Image Understanding. 191, 102878 (2020).
  36. Chen, M. -Y., et al. Automatic Chinese Food Identification and Quantity Estimation. SA'12 Technical Briefs. , 1-4 (2012).
  37. Chen, J., Ngo, C. -W. Deep-Based Ingredient Recognition for Cooking Recipe Retrieval. Proceedings of the MM'16. , 32-41 (2016).
  38. Ciocca, G., Napoletano, P., Schettini, R. Food Recognition: A New Dataset, Experiments, and Results. IEEE Journal of Biomedical and Health Informatics. 21 (3), 588-598 (2017).
  39. Salvador, A., et al. Learning Cross-Modal Embeddings for Cooking Recipes and Food Images. Proceedings of the IEEE CVPR 2017. , 3020-3028 (2017).
  40. Ciocca, G., Napoletano, P., Schettini, R. CNN-Based Features for Retrieval and Classification of Food Images. Computer Vision and Image Understanding. 176-177, 70-77 (2018).
  41. Cai, Q., Li, J., Li, H., Weng, Y. BTBUFood-60: Dataset for Object Detection in Food Field. Proceedings of the IEEE BigComp 2019. , 1-4 (2019).
  42. Min, W., et al. ISIA Food-500: A Dataset for Large-Scale Food Recognition via Stacked Global-Local Attention Network. Proceedings of the MM'20. , 393-401 (2020).
  43. Python Software Foundation. Python. , Available from: https://www.python.org (2020).
  44. Google Custom Search API. Google. , Available from: https://developers.google.com/resources/api-libraries/documentation/customsearch/v1/python/latest/customsearch_v1.cse.html (2020).
  45. Stanford Vision Lab. ImageNet. , Available from: http://www.image-net.org (2020).
  46. Heras, J. CLoDSA. , Available from: https://github.com/joheras/CLoDSA (2020).
  47. NVIDIA DIGITS. NVIDIA. , Available from: https://developer.nvidia.com/digits (2020).
  48. Yamaguchi, K. JavaScript Segment Annotator. , Available from: https://github.com/kyamagu/js-segment-annotator (2020).
  49. Shelhamer, E. Fully Convolutional Networks for Semantic Segmentation. , Available from: https://github.com/shelhamer/fcn.berkeleyvision.org (2020).
  50. Multimedia Laboratory, CUHK. MMDetection. , Available from: https://github.com/open-mmlab/mmdetection (2020).
  51. Szegedy, C., et al. Going Deeper with Convolutions. Proceedings of the CVPR 2015. , 1-9 (2015).
  52. Bottou, L. Large-Scale Machine Learning with Stochastic Gradient Descent. Proceedings of the COMPSTAT'2010. , 177-186 (2010).
  53. Nesterov, Y. A Method of Solving a Convex Programming Problem with Convergence Rate O(1/k2). Doklady Akademii Nauk SSSR. 27, 372-376 (1983).
  54. Duchi, J., Hazan, E., Singer, Y. Adaptive Subgradient Methods for Online Learning and Stochastic Optimization. Journal of Machine Learning Research. 12, 2121-2159 (2011).
  55. Kingma, D. P., Ba, J. Adam: A Method for Stochastic Optimization. arXiv Preprint. , (2017).

Tags

Engineering mat bildegjenkjenning mat bilde segmentering dype nevrale nettverk dyp læring convolutional nevrale nettverk kosttilskudd vurdering
Dype nevrale nettverk for bildebasert kostholdsvurdering
Play Video
PDF DOI DOWNLOAD MATERIALS LIST

Cite this Article

Mezgec, S., KoroušićMore

Mezgec, S., Koroušić Seljak, B. Deep Neural Networks for Image-Based Dietary Assessment. J. Vis. Exp. (169), e61906, doi:10.3791/61906 (2021).

Less
Copy Citation Download Citation Reprints and Permissions
View Video

Get cutting-edge science videos from JoVE sent straight to your inbox every month.

Waiting X
Simple Hit Counter