Waiting
Login processing...

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

Engineering

Dybe neurale netværk til billedbaseret diætvurdering

Published: March 13, 2021 doi: 10.3791/61906

Summary

Målet med det arbejde, der præsenteres i denne artikel, er at udvikle teknologi til automatiseret genkendelse af mad- og drikkevarer fra billeder taget af mobile enheder. Teknologien består af to forskellige tilgange - den første udfører genkendelse af madbilleder, mens den anden udfører segmentering af madbilleder.

Abstract

På grund af de problemer og omkostninger, der er forbundet med manuelle kostvurderingsmetoder, er automatiserede løsninger nødvendige for at lette og fremskynde arbejdet og øge dets kvalitet. I dag er automatiserede løsninger i stand til at registrere en persons kostindtag på en meget enklere måde, såsom ved at tage et billede med et smartphone-kamera. I denne artikel vil vi fokusere på sådanne billedbaserede tilgange til kostvurdering. For mad image anerkendelse problem, dybe neurale netværk har opnået det nyeste niveau i de seneste år, og vi præsenterer vores arbejde på dette område. Vi beskriver især først metoden til billedgenkendelse af mad og drikke ved hjælp af en dyb neural netværksarkitektur, kaldet NutriNet. Denne metode, som de fleste forskning udført i de tidlige dage af deep learning-baseret mad billede anerkendelse, er begrænset til en produktion pr billede, og derfor uegnet til billeder med flere fødevarer eller drikkevarer. Derfor er tilgange, der udfører segmentering af madbilleder, betydeligt mere robuste, da de er i stand til at identificere et vilkårligt antal mad- eller drikkevare i billedet. Vi præsenterer derfor også to metoder til segmentering af fødevarebilled - den ene er baseret på fuldt konvulsionelle netværk (FCN'er) og den anden på dybe resterende netværk (ResNet).

Introduction

Kostvurdering er et afgørende skridt i fastsættelsen af handlingsrettede områder af en persons kost. Men at udføre kostvurdering ved hjælp af traditionelt manuelle tilgange er forbundet med betydelige omkostninger. Disse tilgange er også tilbøjelige til fejl, da de ofte er afhængige af selvrapportering af den enkelte. Automatiseret kostvurdering løser disse problemer ved at give en enklere måde at kvantificere og kvalificere fødeindtagelse på. En sådan tilgang kan også afhjælpe nogle af de fejl, der er til stede i manuelle tilgange, såsom ubesvarede måltider, manglende evne til nøjagtigt at vurdere fødevarevolumen osv. Derfor er der klare fordele ved at automatisere kostvurderingen ved at udvikle løsninger, der identificerer forskellige fødevarer og drikkevarer og kvantificerer fødeindtagelse1. Disse løsninger kan også anvendes til at muliggøre en vurdering af næringsværdierne af fødevarer og drikkevarer (fremover »fødevarer«). Derfor er automatiseret kostvurdering nyttig til flere applikationer - fra strengt medicinske anvendelser, såsom at tillade diætister lettere og mere præcist at spore og analysere deres patienters kostvaner, til brugen inde i trivselsapps rettet mod den almindelige befolkning.

Automatisk genkendelse af fødevarer fra billeder er et udfordrende computersynsproblem. Dette skyldes, at fødevarer typisk er deformerbare genstande, og på grund af det faktum, at en stor mængde af fødevarens visuelle oplysninger kan gå tabt under forberedelsen. Derudover kan forskellige fødevarer synes at være meget lig hinanden, og den samme mad kan synes at være væsentligt forskellige på flere billeder2. Desuden afhænger anerkendelsesnøjagtigheden af mange flere faktorer, såsom billedkvalitet, om fødevaren er blokeret af en anden vare, afstand fra hvilket billedet blev taget osv. Anerkendelse af drikkevarer præsenterer sit eget sæt af udfordringer, hvoraf den vigtigste er den begrænsede mængde visuel information, der er tilgængelig i et billede. Disse oplysninger kan være drikkevarefarven, drikkevarebeholderens farve og struktur og under optimale billedforhold drikkevaretætheden2.

For at kunne genkende madvarer fra billeder er det nødvendigt at lære funktioner i hver mad- og drikkevareklasse. Dette blev traditionelt gjort ved hjælp af manuelt definerede funktionsudsugning3,4,5,6, der udfører genkendelse baseret på specifikke elementfunktioner som farve, tekstur, størrelse osv., eller en kombination af disse funktioner. Eksempler på disse funktionsudsugningsmodeller omfatter flere kernelæring4, lokale funktioner med parvis5 og model6med posefunktioner . På grund af kompleksiteten af madbilleder opnåede disse tilgange for det meste en lav klassificeringsnøjagtighed - mellem 10% og 40%3,4,5. Årsagen til dette er, at den manuelle tilgang ikke er robust nok til at være tilstrækkelig præcis. Da en fødevare kan variere betydeligt i udseende, er det ikke muligt at omfatte alle disse afvigelser manuelt. Højere klassifikationsnøjagtighed kan opnås med manuelt definerede funktionsudsugning, når enten antallet af fødevareklasser reduceres5, eller forskellige billedfunktioner kombineres6, hvilket indikerer, at der er behov for mere komplekse løsninger på dette problem.

Dette er grunden til deep learning viste sig at være så effektiv til mad billede anerkendelse problem. Deep learning, eller dybe neurale netværk, var inspireret af biologiske hjerner, og giver beregningsmæssige modeller bestående af flere behandlingslag til automatisk at lære funktioner gennem uddannelse på et sæt input billeder7,8. På grund af dette har deep learning væsentligt forbedret det nyeste inden for en række forskningsområder7, med computersyn og efterfølgende anerkendelse af madbillede, som en af dem2.

Især er dybe convolutional neurale netværk (DCNNs) mest populære til anerkendelse af madbilleder - disse netværk er inspireret af dyrs visuelle system, hvor individuelle neuroner forsøger at få en forståelse af det visuelle input ved at reagere på overlappende regioner i synsfeltet9. Et convolutional neuralt netværk tager inputbilledet og udfører en række operationer i hvert af netværkslagene, hvoraf de mest almindelige er convolutional, fuldt tilsluttet og puljende lag. Konvulsionelle lag indeholder lærevillige filtre, der reagerer på bestemte funktioner i inputdataene, mens fuldt forbundne lag opretter outputdata fra andre lag for at få viden på højere niveau fra dem. Målet med at samle lag er at ned-prøve input data2. Der er to tilgange til at bruge deep learning-modeller, der viste sig at være populære: at tage en eksisterende dyb neural netværksdefinition10,11, benævnt en dyb læringsarkitektur i denne artikel, eller definere en ny deep learning-arkitektur12,13, og træne enten en af disse på et datasæt til madbillede. Der er styrker og svagheder ved begge tilgange - når man bruger en eksisterende deep learning-arkitektur, kan en arkitektur, der klarede sig godt for andre problemer, vælges og finjusteres til det ønskede problem, hvilket sparer tid og sikrer, at der er valgt en valideret arkitektur. At definere en ny deep learning-arkitektur er på den anden side mere tidskrævende, men gør det muligt at udvikle arkitekturer, der specifikt er lavet til at tage højde for detaljerne i et problem og dermed teoretisk klare sig bedre for dette problem.

I denne artikel præsenterer vi begge tilgange. Til problemet med genkendelse af madbilleder udviklede vi en ny DCNN-arkitektur kaldet NutriNet2, som er en ændring af den velkendte AlexNet-arkitektur14. Der er to hovedforskelle sammenlignet med AlexNet: NutriNet accepterer 512x512-pixel billeder som input (i modsætning til 256x256-pixel billeder til AlexNet), og NutriNet har et ekstra convolutional lag i begyndelsen af det neurale netværk. Disse to ændringer blev indført for at udtrække så mange oplysninger fra genkendelsesdatasættet billeder som muligt. At have billeder i højere opløsning betød, at der er mere information til stede på billeder, og at have mere konvulsionelle lag betød, at yderligere viden kunne udtrækkes fra billederne. Sammenlignet med AlexNets omkring 60 millioner parametre indeholder NutriNet færre parametre: ca. 33 millioner. Dette skyldes forskellen i dimensionalitet ved det første fuldt forbundne lag forårsaget af det ekstra konvulsionelle lag2. Figur 1 indeholder et diagram over NutriNet-arkitekturen. De madbilleder, der blev brugt til at træne NutriNet-modellen, blev indsamlet fra internettet - proceduren er beskrevet i protokolteksten.

Til problemet med segmentering af fødevarebilledet brugte vi to forskellige eksisterende arkitekturer: fuldt konvulsionelle netværk (FCNs)15 og dybe resterende netværk (ResNet)16, som begge repræsenterede det adelige for billedsegmentering, da vi brugte dem til at udvikle deres respektive løsninger til segmentering af madbilleder. Der er flere FCN varianter, der blev indført ved Long et al.: FCN-32s, FCN-16s og FCN-8s15. FCN-32s udsender et pixelkort baseret på forudsigelserne fra FCN's sidste lag, mens FCN-16s-varianten kombinerer disse forudsigelser med dem fra et tidligere lag. FCN-8s overvejer endnu et lags forudsigelser og er derfor i stand til at lave forudsigelser på det fineste korn, hvorfor det er egnet til anerkendelse af madbillede. DEN FCN-8s, som vi brugte var pre-uddannet på PASCAL Visual Object Classes (PASCAL VOC) datasæt17 og uddannet og testet på billeder af fødevarer reproduktioner (fremover 'fake food')18 på grund af deres visuelle lighed med rigtig mad og på grund af manglende kommenterede billeder af rigtig mad på en pixel niveau. Falske fødevarer bruges i forskellige adfærdsmæssige undersøgelser og billeder er taget for alle retter fra alle undersøgelsens deltagere. Da fødevareindholdet i disse billeder er kendt, gør det billeddatasættet nyttigt til træning i deep learning-modeller. Datasætbehandlingstrin er beskrevet i protokolteksten.

Den ResNet-baserede løsning blev udviklet inden for rammerne af Food Recognition Challenge (FRC)19. Det bruger Hybrid Task Cascade (HTC)20 metode med en ResNet-10116 rygrad. Dette er en state-of-the-art tilgang til billedet segmentering problem, der kan bruge forskellige funktion udsugninger, eller rygrade. Vi overvejede også andre backbonenetværk, især andre ResNet-varianter som ResNet-5016, men ResNet-101 var den mest egnede på grund af dens dybde og evne til at repræsentere inputbilleder på en kompleks nok måde. Det datasæt, der blev brugt til træning af HTC ResNet-101-modellen, var FRC-datasættet med tilføjede forstærkede billeder. Disse udvidelser præsenteres i protokolteksten.

Denne artikel er tænkt som en ressource for maskinlæringseksperter, der leder efter oplysninger om, hvilke deep learning-arkitekturer og dataforstørrelsestrin der klarer sig godt for problemerne med anerkendelse og segmentering af madbilleder, samt for ernæringsforskere, der ønsker at bruge vores tilgang til automatisering af fødevarebilledgenkendelse til brug i kostvurdering. I afsnittene nedenfor præsenteres deep learning-løsninger og datasæt fra feltet til genkendelse af madbilleder. I protokolteksten beskriver vi, hvordan hver af de tre tilgange blev brugt til at træne dybe neurale netværksmodeller, der kan bruges til automatiseret diætvurdering. Derudover indeholder hvert protokolafsnit en beskrivelse af, hvordan de datasæt til madbilleder, der bruges til træning og test, blev anskaffet og behandlet.

DCNN'er opnåede generelt væsentligt bedre resultater end andre metoder til anerkendelse og segmentering af fødevarebilleder, hvorfor langt størstedelen af den seneste forskning på området er baseret på disse netværk. Kawano et al. brugte DCNN'er til at supplere manuelle tilgange21 og opnåede en klassificeringsnøjagtighed på 72,26 % på UEC-FOOD100-datasættet22. Christodoulidis et al. brugte dem udelukkende til at opnå en højere nøjagtighed på 84,90% på et selverhvervet datasæt23. Tanno et al. udviklede DeepFoodCam - en smartphone-app til genkendelse af madbilleder, der bruger DCNNs24. Liu et al. præsenterede et system, der udfører en Internet of Things-baseret diætvurdering ved hjælp af DCNN'er25. Martinel et al. indført en DCNN-baseret tilgang, der udnytter detaljerne i fødevarer billeder26 og rapporterede en nøjagtighed på 90,27% på Food-101 datasæt27. Zhou et al. forfattet en gennemgang af deep learning løsninger i fødevarer domæne28.

For nylig foreslog Zhao et al. et netværk specifikt til anerkendelse af madbilleder i mobile applikationer29. Denne tilgang bruger et mindre "elevnetværk", der lærer af et større "lærernetværk". Med det lykkedes det dem at opnå en nøjagtighed på 84% på UEC-FOOD25630 og en nøjagtighed på 91,2% på Food-101 datasættet27. Hafiz et al. brugte DCNN'er til at udvikle en billedgenkendelsesløsning kun til drikkevarer og rapporterede en meget høj nøjagtighed på 98,51%31. Shimoda et al. beskrev en ny metode til påvisning af pladeregioner i madbilleder uden brug af pixelvis anmærkning32. Ciocca et al. introducerede et nyt datasæt, der indeholder fødevarer fra 20 forskellige fødevareklasser i 11 forskellige tilstande (fast, skåret, cremet pasta osv.) og præsenterede deres tilgang til uddannelse af anerkendelsesmodeller, der er i stand til at genkende fødevaretilstanden, ud over fødevareklasse33. Knez et al. evaluerede løsninger til genkendelse af madbilleder til mobile enheder34. Endelig Furtado et al. gennemført en undersøgelse af, hvordan det menneskelige visuelle system sammenligner med udførelsen af DCNN'er og fandt, at menneskelig anerkendelse stadig overgår DCNN'er med en nøjagtighed på 80% versus 74,5%35. Forfatterne bemærkede, at med et lille antal fødevareklasser klarer DCNN'erne sig godt, men på et datasæt med hundreder af klasser er nøjagtigheden af menneskelig anerkendelse højere35, hvilket fremhæver problemets kompleksitet.

På trods af sine avancerede resultater har deep learning en stor ulempe - det kræver et stort inputdatasæt at træne modellen på. I tilfælde af genkendelse af madbilleder kræves der et stort datasæt for madbillede, og dette datasæt skal omfatte så mange forskellige scenarier fra den virkelige verden som muligt. I praksis betyder det, at der for hver enkelt mad- eller drikkevare kræves en stor samling billeder, og så mange forskellige genstande som muligt skal være til stede i datasættet. Hvis der ikke er nok billeder til et bestemt element i datasættet, er det usandsynligt, at elementet genkendes korrekt. På den anden side, hvis kun et lille antal varer er omfattet af datasættet, vil løsningen være begrænset i omfang og kun i stand til at genkende en håndfuld forskellige fødevarer og drikkevarer.

Flere datasæt blev tidligere gjort tilgængelige. Pittsburgh Fast-Food Image Dataset (PFID)3 blev indført for at tilskynde til mere forskning inden for anerkendelse af madbilleder. University of Electro-Communications Food 100 (UEC-FOOD100)22 og University of Electro-Communications Food 256 (UEC-FOOD256)30 datasæt indeholder japanske retter, udvidet med nogle internationale retter i tilfælde af UEC-FOOD256 datasæt. Food-101 datasættet indeholder populære retter erhvervet fra en hjemmeside27. Food-5036 og Video Retrieval Group Food 172 (VireoFood-172)37 datasæt er kinesisk-baserede samlinger af madbilleder. Datasættet University of Milano-Bicocca 2016 (UNIMIB2016) består af billeder af madbakker fra en italiensk kantine38. Recipe1M er et stort datasæt af madlavning opskrifter og mad billeder39. Food-475 datasættet40 indsamler fire tidligere offentliggjorte datasæt for madbilleder27,30,36,37 til en. Beijing Technology and Business University Food 60 (BTBUFood-60) er et datasæt af billeder beregnet til fødevaredetektion41. For nylig blev ISIA Food-500 datasættet42 af diverse madbilleder stillet til rådighed. I forhold til andre offentligt tilgængelige datasæt for madbilleder indeholder den et stort antal billeder, opdelt i 500 fødevareklasser, og er beregnet til at fremme udviklingen af multimediefødevaregenkendelsesløsninger42.

Protocol

1. Anerkendelse af madbillede med NutriNet

  1. Indhentning af datasættet for madbilledet
    1. Saml en liste over forskellige fødevarer og drikkevarer, der vil være output af mad billede anerkendelse model. En varieret liste over populære fødevarer og drikkevarer foretrækkes, da det vil gøre det muligt at træne en robust madbilledgenkendelsesmodel.
    2. Gem mad- og drikkevarelisten i en tekstfil (f.eks. 'txt' eller 'csv').
      BEMÆRK: Den tekstfil, der anvendes af forfatterne af denne artikel, findes i de supplerende filer ("food_items.txt" og indeholder en liste over 520 slovenske fødevarer.
    3. Skriv eller download et Python43-script, der bruger Google Custom Search API44 til at downloade billeder af hver fødevare fra listen og gemmer dem i en separat mappe for hver fødevare.
      BEMÆRK: Python-scriptet, der bruges af forfatterne til denne artikel, findes i de supplerende filer ('download_images.py'). Hvis dette script bruges, skal udviklernøglen (variablen 'developerKey', linje 8 i Python-scriptkoden) og custom search engine-id'et (variabel 'cx', linje 28 i Python-scriptkoden) erstattes med værdier, der er specifikke for den Google-konto, der bruges.
    4. Kør Python-scriptet fra trin 1.1.3 (f.eks. med kommandoen: 'python download_images.py').
  2. (Valgfrit) Rengøring af datasættet til madbilledet
    1. Træn en model til påvisning af fødevarebilleder på samme måde som i punkt 1.4, bortset fra kun at anvende to udgange (fødevarer, nonfoodproduktioner) i modsætning til listen over udgange fra trin 1.1.1.
      BEMÆRK: Forfatterne af denne artikel brugte billeder kombineret fra opskriftswebsteder og ImageNet-datasættet45 til at træne modellen til registrering af madbilleder. Da fokus her er på genkendelse af madbilleder, og dette er et valgfrit trin til rengøring af genkendelsesdatasættet, udelades yderligere detaljer. I stedet kan flere detaljer om denne tilgang findes i Mezgec et al.2.
    2. Kør registreringsmodellen fra trin 1.2.1 på datasættet til madbilleder, der er resultatet af trin 1.1.4.
    3. Slet alle billeder, der er mærket som nonfood af detektionsmodellen, fra trin 1.2.1.
    4. Kontroller manuelt madbilleddatasættet for andre fejlagtige billeder eller billeder i lav kvalitet og for billedkopier.
    5. Slet billeder, der blev fundet i trin 1.2.4.
  3. Forøgelse af datasættet for madbilledet
    1. Opret en ny version af hvert billede fra datasættet med madbilleder ved at rotere det med 90° ved hjælp af CLoDSA-bibliotek46 (linje 19 til 21 i det medfølgende Python-script).
      BEMÆRK: Python-scriptet, der indeholder alle de CLoDSA-kommandoer, der bruges af forfatterne af denne artikel, findes i en fil, der er inkluderet i de supplerende filer ('nutrinet_augmentation.py'). Hvis dette script bruges, skal inputstien (variablen 'INPUT_PATH', linje 8 i Python-scriptkoden) og outputstien (variablen 'OUTPUT_PATH', linje 11 i Python-scriptkoden) erstattes med stier til de ønskede mapper.
    2. Opret en ny version af hvert billede fra datasættet med madbilleder ved at rotere det med 180° ved hjælp af CLoDSA-biblioteket (linje 19 til 21 i det medfølgende Python-script).
    3. Opret en ny version af hvert billede fra madbillededatasættet ved at rotere det med 270° ved hjælp af CLoDSA-biblioteket (linje 19 til 21 i det medfølgende Python-script).
    4. Opret en ny version af hvert billede fra datasættet med madbilleder ved at spejlvende det vandret ved hjælp af CLoDSA-biblioteket (linje 23 og 24 i det medfølgende Python-script).
    5. Opret en ny version af hvert billede fra madbillededatasættet ved at tilføje tilfældig farvestøj til det ved hjælp af CLoDSA-biblioteket (linje 26 og 27 i det medfølgende Python-script).
    6. Opret en ny version af hvert billede fra datasættet med madbilleder ved at zoome ind på det med 25 % ved hjælp af CLoDSA-biblioteket (linje 29 og 30 i det medfølgende Python-script).
    7. Gem billeder fra trin 1.3.1-1.3.6 sammen med de originale billeder (linje 16 og 17 i det medfølgende Python-script) i et nyt datasæt til madbilleder (i alt 7 varianter pr. madbillede). Dette gøres ved at udføre kommandoen i linje 32 i det medfølgende Python-script.
  4. Udførelse af genkendelse af madbillede
    1. Importér datasættet til madbilleder fra trin 1.3.7 til NVIDIA DIGITS-miljøet47, og del datasættet opdeles i trænings-, validerings- og testundersæt i NVIDIA DIGITS-brugergrænsefladen.
    2. Kopier og indsæt definitionsteksten i NutriNet-arkitekturen2 i NVIDIA DIGITS som et brugerdefineret netværk.
      BEMÆRK: NutriNet-arkitekturdefinitionsteksten findes i de supplerende filer ('nutrinet.prototxt').
    3. (Valgfrit) Definer hyperparametre for træning i NVIDIA DIGITS-brugergrænsefladen.
      BEMÆRK: Hyperparametre er parametre, der bruges til at definere træningsprocessen før starten. De hyperparametre, der bruges af forfatterne af denne artikel, findes i en fil, der er inkluderet i de supplerende filer ('nutrinet_hyperparameters.prototxt'). Mens eksperimenter er nødvendige for hvert datasæt for at finde de optimale hyperparametre, indeholder filen en hyperparameterkonfiguration, som kan kopieres til NVIDIA DIGITS-brugergrænsefladen. Desuden udfylder NVIDIA DIGITS hyperparametrene med standardværdier, der kan bruges som basislinje. Dette trin er derfor valgfrit.
    4. Kør træningen af NutriNet-modellen.
    5. Når træningen er fuldført, skal du tage den bedst præsterende NutriNet-model iteration. Denne model bruges derefter til at teste udførelsen af denne tilgang.
      BEMÆRK: Der er flere måder at bestemme den mest effektive model iteration. En enkel måde at gøre dette på er som følger. NVIDIA DIGITS udsender en graf over nøjagtighedsmål for hver trænings epoke. Kontroller, hvilken epoke der opnåede den laveste tabsværdi for valideringsundersættet i datasættet for fødevarebilledet - at model iteration kan betragtes som bedst fungerende. Et valgfrit trin i fastsættelsen af den bedst ydende model iteration er at observere, hvordan tabsværdien for uddannelsen delmængden ændringer fra epoke til epoke, og hvis det begynder at falde kontinuerligt, mens tabsværdien for valideringen delmængde forbliver den samme eller stiger kontinuerligt, tage epoke forud for dette fald i uddannelse tab værdi, som det kan signalere, når modellen begyndte overfitting på uddannelse billeder.

2. Segmentering af fødevarebillede med FCN'er

  1. Indhentning af datasættet med falske fødevarer
    1. Få et datasæt af falske madbilleder. Fake-food billeder er indsamlet af forskere, der udfører adfærdsmæssige undersøgelser ved hjælp af fødevarer reproduktioner.
      BEMÆRK: Forfatterne af denne artikel modtaget billeder af falske fødevarer, der blev indsamlet i et laboratorium miljø18.
    2. Anmærke hvert madbillede manuelt på pixelniveau - hver pixel i billedet skal indeholde oplysninger om, hvilken fødevareklasse det tilhører. Resultatet af dette trin er et anmærkningsbillede for hvert billede fra datasættet til madbilledet, hvor hver pixel repræsenterer en af fødevareklasserne.
      BEMÆRK: Der er mange værktøjer til at opnå dette - forfatterne af denne artikel, der anvendes JavaScript Segment Annotator48.
  2. Udvidelse af datasættet med falske fødevarer
    1. Udfør de samme trin som i afsnit 1.3, men kun på billeder fra træningsundersættet i datasættet til madbilledet.
      BEMÆRK: Med undtagelse af trin 1.3.5 skal alle dataforstørrelsestrin også udføres på tilsvarende anmærkningsbilleder. Hvis scriptet fra afsnit 1.3 bruges, skal inputstien (variablen 'INPUT_PATH', linje 8 i Python43-scriptkoden) og outputstien (variablen 'OUTPUT_PATH', linje 11 i Python-scriptkoden) erstattes med stier til de ønskede mapper. Derudover skal du indstille problemet (variabel 'PROBLEM', linje 6 i Python-scriptkoden) til 'instance_segmentation' og anmærkningstilstanden (variabel 'ANNOTATION_MODE', linje 7 i Python-scriptkoden) og outputtilstand (variabel 'OUTPUT_MODE', linje 10 i Python-scriptkoden) til 'coco'.
  3. Udførelse af segmentering af falske fødevarer
    1. Udfør de samme trin som i afsnit 1.4 med undtagelse af trin 1.4.2. I stedet for dette trin skal du udføre trin 2.3.2 og 2.3.3.
      BEMÆRK: Hyperparametre er parametre, der bruges til at definere træningsprocessen før starten. De uddannelseshyperparametre, som forfatterne af denne artikel anvender til det valgfrie trin 1.4.3, findes i en fil, der er inkluderet i de supplerende filer (»fcn-8s_hyperparameters.prototxt«). Mens eksperimenter er nødvendige for hvert datasæt for at finde det optimale sæt hyperparametre, indeholder filen en hyperparameterkonfiguration, der kan kopieres til NVIDIA DIGITS47-brugergrænsefladen. Desuden udfylder NVIDIA DIGITS hyperparametrene med standardværdier, der kan bruges som basislinje.
    2. Kopier og indsæt definitionsteksten i FCN-8s arkitektur15 i NVIDIA DIGITS-miljøet som et brugerdefineret netværk.
      BEMÆRK: Teksten til FCN-8s arkitekturdefinition er offentligt tilgængelig på GitHub49.
    3. Angiv stien til den forududdannede FCN-8s-modelvægte i NVIDIA DIGITS-brugergrænsefladen.
      BEMÆRK: Disse modelvægte er forudtrænet i PASCAL VOC-datasættet17 og findes på Internettet49.

3. Segmentering af madbillede med HTC ResNet

  1. Indhentning af datasættet for madbilledet
    1. Download datasættet for madbilleder fra FRC's websted19.
  2. Forøgelse af datasættet for madbilledet
    1. Udfør trin 1.3.1-1.3.4.
      BEMÆRK: Python43-scriptet, der indeholder alle de CLoDSA46-kommandoer, der bruges af forfatterne af denne artikel, findes i en fil, der er inkluderet i de supplerende filer ('frc_augmentation.py'). Hvis dette script bruges, skal inputstien (variablen 'INPUT_PATH', linje 8 i Python-scriptkoden) og outputstien (variablen 'OUTPUT_PATH', linje 11 i Python-scriptkoden) erstattes med stier til de ønskede mapper.
    2. Opret en ny version af hvert billede fra madbillededatasættet ved at tilføje gaussisk sløring til det ved hjælp af CLoDSA-biblioteket (linje 26 og 27 i det medfølgende Python-script).
    3. Opret en ny version af hvert billede fra madbillededatasættet ved at gøre det skarpere ved hjælp af CLoDSA-biblioteket (linje 29 og 30 i det medfølgende Python-script).
    4. Opret en ny version af hvert billede fra datasættet med madbilleder ved at anvende gammakorrektion på det ved hjælp af CLoDSA-biblioteket (linje 32 og 33 i det medfølgende Python-script).
    5. Gem billeder fra trin 3.2.1-3.2.4 sammen med de originale billeder (linje 16 og 17 i det medfølgende Python-script) i et nyt datasæt til madbilleder (i alt 8 varianter pr. madbillede). Dette gøres ved at udføre kommandoen i linje 35 i det medfølgende Python-script.
    6. Gem billeder fra trin 3.2.2-3.2.4 sammen med de originale billeder (linje 16 og 17 i det medfølgende Python-script) i et nyt datasæt til madbillede (i alt 4 varianter pr. madbillede). Dette gøres ved at slette linje 19 til 24 i det medfølgende Python-script og udføre kommandoen i linje 35.
  3. Udførelse af segmentering af madbilleder
    1. Rediger den eksisterende HTC20 ResNet-101-arkitektur16-definition fra MMDetection-biblioteket50 i afsnittene 'modelindstillinger' og 'datasætindstillinger' for arkitekturdefinitionsfilen, så den accepterer datasæt til madbilleder fra trin 3.1.1, 3.2.5 og 3.2.6.
    2. (Valgfrit) Rediger HTC ResNet-101-arkitekturdefinitionen fra trin 3.3.1 for at definere træningshyperparametre: batchstørrelse i afsnittet 'datasætindstillinger', problemløsertype og læringshastighed i afsnittet 'optimizer', læringspolitik i afsnittet 'læringspolitik' og antallet af trænings epoker i afsnittet 'kørselsindstillinger' i arkitekturdefinitionsfilen.
      BEMÆRK: Den ændrede HTC ResNet-101 arkitekturdefinitionsfil findes i de supplerende filer ('htc_resnet-101.py'). Hyperparametre er parametre, der bruges til at definere træningsprocessen, før den startes. Mens eksperimenter er nødvendige for hvert datasæt for at finde det optimale sæt hyperparametre, indeholder filen allerede en hyperparameterkonfiguration, som kan bruges uden ændringer. Dette trin er derfor valgfrit.
    3. Kør træningen af HTC ResNet-101-modellen på madbilleddatasættet fra trin 3.1.1 ved hjælp af MMDetection-biblioteket (f.eks. med kommandoen: 'python mmdetection/tools/train.py htc_resnet-101.py').
    4. Når træningen fra trin 3.3.3 er fuldført, skal du tage den bedst ydende HTC ResNet-101-model iteration og finjustere den ved at køre den næste fase af træningen på madbilleddatasættet fra trin 3.2.5.
      BEMÆRK: Der er flere måder at bestemme den mest effektive model iteration. En enkel måde at gøre dette på er som følger. MMDetection-biblioteket udsender værdier for nøjagtighedsmål for hver trænings epoke i kommandolinjegrænsefladen. Kontroller, hvilken epoke der opnåede den laveste tabsværdi for valideringsundersættet i datasættet for fødevarebilledet - at model iteration kan betragtes som bedst fungerende. Et valgfrit trin i fastsættelsen af den bedst ydende model iteration er at observere, hvordan tabsværdien for uddannelsen delmængden ændringer fra epoke til epoke, og hvis det begynder at falde kontinuerligt, mens tabsværdien for valideringen delmængde forbliver den samme eller stiger kontinuerligt, tage epoke forud for dette fald i uddannelse tab værdi, som det kan signalere, når modellen begyndte overfitting på uddannelse billeder.
    5. Når træningen fra trin 3.3.4 er fuldført, skal du tage den bedst ydende HTC ResNet-101-model iteration og finjustere den ved at køre den næste fase af træningen på madbilleddatasættet fra trin 3.2.6.
      BEMÆRK: Se bemærkningen til trin 3.3.4.
    6. Når træningen fra trin 3.3.5 er fuldført, skal du tage den bedst ydende HTC ResNet-101-model iteration og finjustere den ved igen at køre den næste fase af træningen på madbilleddatasættet fra trin 3.2.5.
      BEMÆRK: Se bemærkningen til trin 3.3.4.
    7. Når træningen fra trin 3.3.6 er fuldført, skal du tage den bedst præsterende HTC ResNet-101-model iteration. Denne model bruges derefter til at teste udførelsen af denne tilgang.
      BEMÆRK: Se bemærkningen til trin 3.3.4. Trin 3.3.3-3.3.7 gav de bedste resultater til de formål, der er defineret af forfatterne af denne artikel. Eksperimenter er nødvendige for hvert datasæt for at finde den optimale sekvens af trænings- og dataforstørrelsestrin.

Representative Results

NutriNet blev testet mod tre populære deep learning arkitekturer af tiden: AlexNet14, GoogLeNet51 og ResNet16. Flere træningsparametre blev også testet for alle arkitekturer for at definere de optimale værdier2. Blandt disse er valget af problemløsertype, som bestemmer, hvordan tabsfunktionen minimeres. Denne funktion er den primære kvalitetsforanstaltning til træning af neurale netværk, da den er bedre egnet til optimering under træning end klassificeringsnøjagtighed. Vi testede tre problemløsere: Stokastisk Gradient Descent (SGD)52, Nesterovs Accelererede Gradient (NAG)53 og Adaptive Gradient algorithm (AdaGrad)54. Den anden parameter er batchstørrelse, som definerer antallet af billeder, der behandles på samme tid. Dybden af deep learning-arkitekturen bestemte værdien af denne parameter, da dybere arkitekturer kræver mere plads i GPU-hukommelsen - konsekvensen af denne tilgang var, at hukommelsen var helt fyldt med billeder til alle arkitekturer, uanset dybde. Den tredje parameter er læringshastighed, som definerer den hastighed, hvormed de neurale netværksparametre ændres under træningen. Denne parameter blev sat i kor med batchstørrelsen, da antallet af samtidig behandlede billeder dikterer konvergensraten. AlexNet-modeller blev trænet ved hjælp af en batchstørrelse på 256 billeder og en basislæringshastighed på 0,02; NutriNet brugte en batchstørrelse på 128 billeder og en hastighed på 0,01; GoogLeNet 64 billeder og en hastighed på 0,005; og ResNet 16 billeder og en hastighed på 0,00125. Der blev fastsat tre andre parametre for alle arkitekturer: politik for indlæringshastighed (step-down), trinstørrelse (30 %) og gamma (0,1). Disse parametre beskriver i fællesskab, hvordan læringshastigheden ændrer sig i enhver epoke. Ideen bag denne tilgang er, at læringshastigheden gradvist sænkes for at finjustere modellen, jo tættere den kommer på den optimale tabsværdi. Endelig blev antallet af uddannelses epoker også fastsat til 150 for alle dyblæringsarkitekturer2.

Det bedste resultat blandt alle de testede parametre, som NutriNet opnåede, var en klassificeringsnøjagtighed på 86,72% på genkendelsesdatasættet, hvilket var omkring 2% højere end det bedste resultat for AlexNet og lidt højere end GoogLeNets bedste resultat. Den bedst præsterende arkitektur generelt var ResNet (med omkring 1 %), men træningstiden for ResNet er betydeligt højere sammenlignet med NutriNet (med en faktor på ca. fem), hvilket er vigtigt, hvis modellerne løbende omskoles for at forbedre nøjagtigheden og antallet af genkendelige fødevarer. NutriNet, AlexNet og GoogLeNet opnåede deres bedste resultater ved hjælp af AdaGrad-problemløseren, mens ResNets bedste model brugte NAG-løseren. NutriNet blev også testet på det offentligt tilgængelige UNIMIB2016-datasæt for madbillederfra 38. Dette datasæt indeholder 3.616 billeder af 73 forskellige fødevarer. NutriNet opnåede en genkendelsesnøjagtighed på 86,39% på dette datasæt, hvilket lidt overgik det oprindelige anerkendelsesresultat for forfatterne af datasættet, som var 85,80%. Derudover blev NutriNet testet på et lille datasæt med 200 billeder fra den virkelige verden af 115 forskellige føde- og drikkevarevarer, hvor NutriNet opnåede en top-5 nøjagtighed på 55%.

For at træne FCN-8s fake-food billedsegmenteringsmodel brugte vi Adam55 som problemløsertype, da vi fandt ud af, at den fungerede optimalt til denne opgave. Basislæringshastigheden blev sat meget lavt - til 0,0001. Årsagen til det lave tal er, at kun ét billede kan behandles ad gangen, hvilket er en konsekvens af klassificeringsprocessen på pixelniveau. GPU-hukommelseskravene til denne fremgangsmåde er betydeligt større end klassificering på billedniveau. Læringshastigheden måtte således sættes lavt, så parametrene ikke blev ændret for hurtigt og konvergerer til mindre optimale værdier. Antallet af trænings epoker blev sat til 100, mens læringshastighedspolitikken, trinstørrelsen og gammaen blev sat til at træde tilbage, henholdsvis 34% og 0,1, da disse parametre producerede de mest nøjagtige modeller.

Nøjagtighedsmålinger af FCN-8s-modellen blev udført ved hjælp af pixelnøjagtighedsmålet15, hvilket svarer til klassificeringsnøjagtigheden af traditionelle deep learning-netværk, hvor den største forskel er, at nøjagtigheden beregnes på pixelniveau i stedet for på billedniveau:

Equation 1

hvor PA er målet for pixelnøjagtighed, nij er antallet af pixel fra klasse i, der forventes at tilhøre klasse j og ti = Σj nij, er det samlede antal pixel fra klassen i jord-sandhedsetiketterne1. Med andre ord beregnes målet for pixelnøjagtighed ved at dividere korrekt forudsagte pixel med det samlede antal pixel. Den endelige nøjagtighed af den uddannede FCN-8s model var 92,18%. Figur 2 viser tre eksempelbilleder fra datasættet med falske fødevarer (et fra hvert af trænings-, validerings- og testundersæt) sammen med de tilsvarende jord-sandheds- og modelforudsigelsesetiketter.

Parametrene til at træne HTC20 ResNet-101-modellen til segmentering af madbilleder blev angivet som følger: Den anvendte problemløsertype var SGD, fordi den overgik andre problemløsertyper. Basislæringshastigheden blev indstillet til 0,00125 og batchstørrelsen til 2 billeder. Antallet af trænings epoker blev sat til 40 pr. træningsfase, og der blev udført flere træningsfaser - først på det oprindelige FRC-datasæt uden forstærkede billeder, derefter på 8x-forstærket og 4x-forstærket FRC-datasæt flere gange på skiftevis måde, hver gang du tager den bedst fungerende model og finjusterer den i den næste træningsfase. Yderligere oplysninger om uddannelsesfaserne findes i protokoltekstens afsnit 3.3. Endelig blev step-down-læringspolitikken anvendt med faste epoker til, hvornår indlæringshastigheden faldt (epoker 28 og 35 for den første uddannelsesfase). En vigtig ting at bemærke er, at mens denne sekvens af træningsfaser producerede de bedste resultater i vores test inden for FRC's rækkevidde, kan brug af et andet datasæt kræve en anden sekvens for at producere optimale resultater.

Denne ResNet-baserede løsning til segmentering af fødevarebilleder blev evalueret ved hjælp af følgende præcisionsmål19:

Equation 2

hvor P er præcision, TP er antallet af sande positive forudsigelser af fødevarebilledet segmentering model, FP er antallet af falske positive forudsigelser og IoU er skæringspunktet over Unionen, som er beregnet med denne ligning:

Equation 3

hvor Overlappende område repræsenterer antallet af forudsigelser fra den model, der overlapper med jorden sandheden, og Area of Union repræsenterer det samlede antal forudsigelser af modellen sammen med jorden sandheden, både på en pixel niveau og for hver enkelt fødevare klasse. Tilbagekaldelse bruges som et sekundært målpunkt og beregnes på samme måde ved hjælp af følgende formel19:

Equation 4

hvor R er tilbagekaldelse og FN er antallet af falske negative forudsigelser af fødevarer billede segmentering model. Præcisions- og tilbagekaldelsesforanstaltningerne er derefter gennemsnit på tværs af alle klasser i jorden sandhed. Ved hjælp af disse foranstaltninger opnåede vores model en gennemsnitlig præcision på 59,2% og en gennemsnitlig tilbagekaldelse på 82,1%, som rangerede på andenpladsen i anden runde af Food Recognition Challenge19. Dette resultat var 4,2% bagud i forhold til førstepladsen og 5,3% foran tredjepladsen med hensyn til den gennemsnitlige præcisionsforanstaltning. Tabel 1 indeholder resultaterne for de 4 bedste deltagere i konkurrencen.

Figure 1
Figur 1: Diagram over NutriNets dybe neurale netværksarkitektur. Dette tal er offentliggjort i Mezgec et al.2. Klik her for at se en større version af dette tal.

Figure 2
Figur 2: Billeder fra datasættet med falske fødevarer. Originale billeder (til venstre), manuelt mærkede jord-sandhed etiketter (midten) og forudsigelser fra FCN-8s model (højre). Dette tal er offentliggjort i Mezgec et al.1. Klik her for at se en større version af dette tal.

Teamnavn Placering Gennemsnitlig præcision Gennemsnitlig tilbagekaldelse
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%

Tabel 1: Top-4 resultater fra anden runde af Food Recognition Challenge. Gennemsnitlig præcision tages som det primære mål for ydeevne og gennemsnitlig tilbagekaldelse som et sekundært målpunkt. Resultaterne er taget fra den officielle konkurrence leaderboard19.

Supplerende filer. Klik her for at hente denne fil.

Discussion

I de senere år er dybe neurale netværk blevet valideret flere gange som en passende løsning til anerkendelse af madbilleder10,11,12,21,23,25,26,29,31,33. Vores arbejde præsenteret i denne artikel tjener til yderligere at bevise dette1,2. Tilgangen til genkendelse af madbilleder med et enkelt output er ligetil og kan bruges til enkle applikationer, hvor der forventes billeder med kun én fødevare - eller drikkevare2.

Tilgangen til segmentering af fødevarebilledet synes at være særlig velegnet til at genkende fødevarebilleder generelt uden nogen begrænsning af antallet af fødevarer1. Fordi det fungerer ved at klassificere hver enkelt pixel i billedet, er det i stand til ikke kun at genkende et vilkårligt antal fødevarer i billedet, men også angive, hvor en fødevare er placeret, samt hvor stor den er. Sidstnævnte kan derefter bruges til at udføre estimering af fødevarevægten, især hvis det bruges sammen med enten et referenceobjekt eller et kamera med fast afstand.

Der er gjort noget arbejde med tilgængeligheden af datasæt for madbilleder3,22,27,30,36,37,38,39,40,41,42, og vi håber, at der vil blive gjort mere i fremtiden, især når det kommer til at samle datasæt for fødevarer fra forskellige regioner over hele verden, hvilket ville gøre det muligt at udvikle mere robuste løsninger. I øjeblikket har nøjagtigheden af automatiske løsninger til genkendelse af madbilleder endnu ikke nået nøjagtigheden på menneskeligt niveau35, og dette skyldes sandsynligvis i vid udstrækning brugen af datasæt for madbilleder af utilstrækkelig størrelse og kvalitet.

I fremtiden vil vores mål være at evaluere de udviklede procedurer på billeder fra den virkelige verden yderligere. Generelt indeholder datasæt i dette felt ofte billeder taget i kontrollerede miljøer eller billeder, der manuelt er optimeret til genkendelse. Derfor er det vigtigt at indsamle et stort og mangfoldigt madbilleddatasæt fra den virkelige verden for at omfatte alle de forskellige mad- og drikkevarevarer, som enkeltpersoner måske ønsker at genkende. Det første skridt i den retning blev leveret af Food Recognition Challenge, som omfattede et datasæt af den virkelige verden mad billeder19, men der skal gøres yderligere arbejde for at validere denne tilgang til fødevarer billeder fra hele verden og i samarbejde med diætister.

Disclosures

Forfatterne har intet at afsløre.

Acknowledgments

Forfatterne vil gerne takke Tamara Bucher fra University of Newcastle, Australien, for at levere datasættet med falske fødevarer. Dette arbejde blev støttet af EU's Horizon 2020 forsknings- og innovationsprogrammer (tilskudsnumre 863059 - FNS-Cloud, 769661 - SAAM); og det slovenske forskningsagentur (tilskudsnummer P2-0098). Den Europæiske Union og Det Slovenske Forskningsagentur spillede ingen rolle i udformningen, analysen eller skrivningen af denne artikel.

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 mad billede anerkendelse mad billede segmentering dybe neurale netværk deep learning convolutional neurale netværk kosten vurdering
Dybe neurale netværk til billedbaseret diætvurdering
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