Waiting
Login processing...

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

Engineering

Djupa neurala nätverk för bildbaserad kostbedömning

Published: March 13, 2021 doi: 10.3791/61906

Summary

Målet med det arbete som presenteras i denna artikel är att utveckla teknik för automatiserad igenkänning av mat och dryck från bilder tagna av mobila enheter. Tekniken består av två olika metoder - den första utför matbildsigenkänning medan den andra utför segmentering av matbilder.

Abstract

På grund av de problem och kostnader som är förknippade med manuella kostbedömningsmetoder krävs automatiserade lösningar för att underlätta och påskynda arbetet och öka dess kvalitet. Idag kan automatiserade lösningar spela in en persons kostintag på ett mycket enklare sätt, till exempel genom att ta en bild med en smartphone-kamera. I den här artikeln kommer vi att fokusera på sådana bildbaserade metoder för kostbedömning. För problemet med erkännande av matbilder har djupa neurala nätverk uppnått den senaste tidens tillstånd, och vi presenterar vårt arbete inom detta område. I synnerhet beskriver vi först metoden för mat- och dryckesbildigenkänning med hjälp av en djup neural nätverksarkitektur, kallad NutriNet. Denna metod, som de flesta forskning som gjorts i början av djupinlärningsbaserad matbildsigenkänning, är begränsad till en utgång per bild och därför olämplig för bilder med flera mat- eller dryckesartiklar. Det är därför metoder som utför segmentering av matbilder är betydligt mer robusta, eftersom de kan identifiera valfritt antal mat- eller dryckesartiklar i bilden. Vi presenterar därför också två metoder för segmentering av livsmedelsbilder - den ena är baserad på helt invecklade nätverk (FCN) och den andra på djupa restnät (ResNet).

Introduction

Kostbedömning är ett avgörande steg för att bestämma handlingsbara områden i en individs kost. Att utföra kostbedömning med traditionellt manuella metoder är dock förknippat med betydande kostnader. Dessa tillvägagångssätt är också benägna att fel eftersom de ofta förlitar sig på självrapportering av individen. Automatiserad kostbedömning tar itu med dessa problem genom att tillhandahålla ett enklare sätt att kvantifiera och kvalificera matintag. Ett sådant tillvägagångssätt kan också lindra några av de fel som finns i manuella tillvägagångssätt, såsom missade måltider, oförmåga att noggrant bedöma matvolym etc. Därför finns det tydliga fördelar med att automatisera kostbedömning genom att utveckla lösningar som identifierar olika livsmedel och drycker och kvantifierar matintag1. Dessa lösningar kan också användas för att möjliggöra en uppskattning av näringsvärdena för livsmedel och drycker (hädanefter "livsmedel"). Följaktligen är automatiserad kostbedömning användbar för flera applikationer - från strikt medicinsk användning, till exempel att tillåta dietister att lättare och mer exakt spåra och analysera sina patienters dieter, till användningen inuti välbefinnandeappar riktade mot den allmänna befolkningen.

Att automatiskt känna igen matvaror från bilder är ett utmanande datorseendeproblem. Detta beror på att livsmedel vanligtvis är deformerbara föremål, och på grund av det faktum att en stor del av matartikelns visuella information kan gå förlorad under beredningen. Dessutom kan olika livsmedel tyckas vara mycket lika varandra, och samma mat kan tyckas vara väsentligt annorlunda på flera bilder2. Dessutom beror igenkänningsnoggrannheten på många fler faktorer, till exempel bildkvalitet, om livsmedelsartikeln hindras av ett annat föremål, avstånd från vilket bilden togs etc. Att känna igen dryckesartiklar innebär sin egen uppsättning utmaningar, den viktigaste är den begränsade mängden visuell information som finns tillgänglig i en bild. Denna information kan vara dryckesfärgen, dryckesbehållarens färg och struktur, och under optimala bildförhållanden dryckestätheten2.

För att framgångsrikt känna igen matvaror från bilder är det nödvändigt att lära sig funktioner i varje mat- och dryckesklass. Detta gjordes traditionellt med hjälp av manuellt definierade funktionsutdragare3,4,5,6 som utförigenkänning baserat på specifika objektfunktioner som färg, textur, storlek etc., eller en kombination av dessa funktioner. Exempel på dessa funktionsutdragare är flera kernel learning4, parvis lokalafunktioner 5 och påsen med funktioner modell6. På grund av komplexiteten hos matbilder uppnådde dessa metoder mestadels en låg klassificeringsnoggrannhet - mellan 10% och 40%3,4,5. Anledningen till detta är att det manuella tillvägagångssättet inte är tillräckligt robust för att vara tillräckligt exakt. Eftersom en matvara kan variera avsevärt i utseende är det inte möjligt att omfatta alla dessa avvikelser manuellt. Högre klassificeringsnoggrannhet kan uppnås med manuellt definierade funktionsextraktorer när antingen antalet matklasserminskas 5, eller olika bildfunktioner kombineras6, vilket indikerar att det finns ett behov av mer komplexa lösningar på detta problem.

Det är därför djupinlärning visade sig vara så effektivt för problemet med erkännande av livsmedelsbilder. Djupinlärning, eller djupa neurala nätverk, inspirerades av biologiska hjärnor och gör det möjligt för beräkningsmodeller som består av flera bearbetningslager att automatiskt lära sig funktioner genom träning på en uppsättningindatabilder 7,8. På grund av detta har djupinlärning avsevärt förbättrat den senaste tekniken inom en mängd olika forskningsområden7, med datorseende, och därefter erkännande av matbilder, som en av dem2.

I synnerhet är djupa invecklade neurala nätverk (DCNN) mest populära för erkännande av matbilder - dessa nätverk är inspirerade av djurens visuella system, där enskilda neuroner försöker få en förståelse för den visuella ingången genom att reagera på överlappande regioner i synfältet9. Ett invecklat neuralt nätverk tar indatabilden och utför en serie åtgärder i vart och ett av nätverksskikten, varav de vanligaste är invecklade, fullt anslutna och poolande lager. Convolutional layers innehåller lärbara filter som svarar på vissa funktioner i indata, medan helt anslutna lager komponerar utdata från andra lager för att få kunskap på högre nivå från den. Målet med att slå samman lager är att nedprova indata2. Det finns två metoder för att använda djupinlärningsmodeller som visade sig vara populära: att ta en befintlig djup neural nätverksdefinition10,11, kallad en djupinlärningsarkitektur i den här artikeln, eller definiera en ny djupinlärningsarkitektur12,13, och träna någon av dessa på en matbildsdatauppsättning. Det finns styrkor och svagheter i båda metoderna - när man använder en befintlig djupinlärningsarkitektur kan en arkitektur som fungerade bra för andra problem väljas och finjusteras för det önskade problemet, vilket sparar tid och säkerställer att en validerad arkitektur har valts. Att definiera en ny djupinlärningsarkitektur är å andra sidan mer tidsintensivt, men gör det möjligt att utveckla arkitekturer som är specifikt gjorda för att ta hänsyn till detaljerna i ett problem och därmed teoretiskt prestera bättre för det problemet.

I den här artikeln presenterar vi båda metoderna. För problemet med igenkänning av matbilder utvecklade vi en ny DCNN-arkitektur som heter NutriNet2, som är en modifiering av den välkända AlexNet-arkitekturen14. Det finns två huvudsakliga skillnader jämfört med AlexNet: NutriNet accepterar 512x512-pixelbilder som indata (i motsats till 256x256-pixelbilder för AlexNet), och NutriNet har ytterligare ett faltningslager i början av det neurala nätverket. Dessa två ändringar infördes för att extrahera så mycket information från igenkänningsdatauppsättningsbilderna som möjligt. Att ha bilder med högre upplösning innebar att det finns mer information om bilder och att ha mer invecklade lager innebar att ytterligare kunskap kunde extraheras från bilderna. Jämfört med AlexNets cirka 60 miljoner parametrar innehåller NutriNet färre parametrar: cirka 33 miljoner. Detta beror på skillnaden i dimensionalitet vid det första helt anslutna skiktet som orsakas av det extra faltningsskiktet2. Bild 1 innehåller ett diagram över NutriNet-arkitekturen. Matbilderna som användes för att träna NutriNet-modellen samlades in från Internet - proceduren beskrivs i protokolltexten.

För problemet med segmentering av livsmedelsbilder använde vi två olika befintliga arkitekturer: helt invecklade nätverk (FCN)15 och djupa restnätverk (ResNet)16, som båda representerade den senaste tekniken för bildsegmentering när vi använde dem för att utveckla sina respektive lösningar för segmentering av livsmedelsbilder. Det finns flera FCN-varianter som introducerades av Long et al.: FCN-32s, FCN-16s och FCN-8s15. FCN-32s matar ut en pixelkarta baserat på förutsägelserna från FCN: s sista lager, medan FCN-16s-varianten kombinerar dessa förutsägelser med de med de med ett tidigare lager. FCN-8s överväger ännu ett lagers förutsägelser och kan därför göra förutsägelser vid det finaste kornet, varför det är lämpligt för igenkänning av matbilder. FCN-8:orna som vi använde var förtränade på PASCAL Visual Object Classes (PASCAL VOC) datauppsättning17 och tränades och testades på bilder av matrepliker (hädanefter "falsk mat")18 på grund av deras visuella likhet med riktig mat och på grund av brist på kommenterade bilder av riktig mat på pixelnivå. Falsk mat används i olika beteendestudier och bilder tas för alla rätter från alla studiedeltagare. Eftersom matinnehållet i dessa bilder är känt gör det bild datauppsättningen användbar för djup inlärnings modell utbildning. Bearbetningssteg för datauppsättning beskrivs i protokolltexten.

Den ResNet-baserade lösningen utvecklades inom ramen för Food Recognition Challenge (FRC)19. Den använder Hybrid Task Cascade (HTC)20-metoden med en ResNet-10116-stamnät. Detta är en toppmodern metod för bildsegmenteringsproblemet som kan använda olika funktionsutdragare eller stamnät. Vi övervägde andra stamnät också, särskilt andra ResNet-varianter som ResNet-5016, men ResNet-101 var den mest lämpliga på grund av dess djup och förmåga att representera indatabilder på ett tillräckligt komplext sätt. Datauppsättningen som användes för att träna HTC ResNet-101-modellen var FRC-datauppsättningen med tillagda förstärkta bilder. Dessa förstärkningar presenteras i protokolltexten.

Denna artikel är avsedd som en resurs för maskininlärningsexperter som letar efter information om vilka djupinlärningsarkitekturer och dataförstoringssteg som fungerar bra för problemen med igenkänning och segmentering av livsmedelsbilder, samt för näringsforskare som vill använda vår metod för att automatisera erkännande av matbilder för användning i kostbedömning. I punkterna nedan presenteras djupinlärningslösningar och datamängder från området för igenkänning av livsmedelsbilder. I protokolltexten beskriver vi hur var och en av de tre metoderna användes för att träna djupa neurala nätverksmodeller som kan användas för automatiserad kostbedömning. Dessutom innehåller varje protokoll avsnitt en beskrivning av hur mat bild data uppsättningar som används för utbildning och testning förvärvades och bearbetades.

DCN uppnådde i allmänhet betydligt bättre resultat än andra metoder för erkännande och segmentering av livsmedelsbilder, varför den stora majoriteten av den senaste forskningen på området bygger på dessa nätverk. Kawano et al. använde DCNN för att komplettera manuellametoder 21 och uppnådde en klassificeringsnoggrannhet på 72,26% på UEC-FOOD100-datauppsättningen22. Använde dem uteslutande för att uppnå en högre noggrannhet på 84,90% på en självförvärvad datauppsättning23. Tanno et al. utvecklade DeepFoodCam - en smartphone-app för igenkänning av matbilder som använder DCNNs24. Liu et al. presenterade ett system som utför en Internet of Things-baserad kostbedömning med dcnn25. Martinel et al. introducerade en DCNN-baserad metod som utnyttjar detaljerna i matbilder26 och rapporterade en noggrannhet på 90,27% på Mat-101-datauppsättningen27. Zhou et al. författade en genomgång av djupinlärningslösningar inom livsmedelsområdet28.

Nyligen föreslog Zhao et al. ett nätverk specifikt för erkännande av livsmedelsbilder i mobila applikationer29. Den här metoden använder ett mindre "student"-nätverk som lär sig av ett större "lärarnätverk". Med det lyckades de uppnå en noggrannhet på 84% på UEC-FOOD25630 och en noggrannhet på 91,2% på Mat-101-datauppsättningen27. Hafiz et al. använde DCNNs för att utveckla en dryck-endast bildigenkänning lösning och rapporterade en mycket hög noggrannhet på 98.51%31. Shimoda et al. beskrev en ny metod för att upptäcka tallriksregioner i matbilder utan användning av pixelvis anteckning32. Ciocca m.fl. introducerade en ny datauppsättning som innehåller livsmedel från 20 olika livsmedelsklasser i 11 olika tillstånd (fast, skivad, krämig pasta etc.) och presenterade sin metod för utbildningsigenkänningsmodeller som kan känna igen livsmedelstillståndet, förutom livsmedelsklass33. utvärderade lösningar för igenkänning av livsmedelsbilder för mobila enheter34. Slutligen genomförde Furtado et al. en studie om hur det mänskliga visuella systemet jämförs med prestandan hos DCNN och fann att mänskligt erkännande fortfarande överträffar DCNN med en noggrannhet på 80% jämfört med 74,5%35. Författarna noterade att med ett litet antal matklasser fungerar DCN: erna bra, men på en datauppsättning med hundratals klasser är mänsklig igenkänningsnoggrannhethögre 35, vilket belyser problemets komplexitet.

Trots sina senaste resultat har djupinlärning en stor nackdel - det kräver en stor indatauppsättning för att träna modellen på. När det gäller igenkänning av livsmedelsbilder krävs en stor mat avbildnings datauppsättning, och den här datauppsättningen måste omfatta så många olika verkliga scenarier som möjligt. I praktiken innebär detta att för varje enskild mat eller dryck krävs en stor samling bilder, och så många olika föremål som möjligt måste finnas i datauppsättningen. Om det inte finns tillräckligt med bilder för ett visst objekt i datauppsättningen är det osannolikt att det objektet kommer att kännas igen. Å andra sidan, om endast ett litet antal artiklar omfattas av datauppsättningen, kommer lösningen att begränsas i omfattning och endast kunna känna igen en handfull olika livsmedel och drycker.

Flera datamängder har gjorts tillgängliga tidigare. Pittsburgh Fast-Food Image Dataset (PFID)3 introducerades för att uppmuntra mer forskning inom området igenkänning av livsmedelsbilder. University of Electro-Communications Food 100 (UEC-FOOD100)22 och University of Electro-Communications Food 256 (UEC-FOOD256)30 datamängder innehåller japanska rätter, utökade med några internationella rätter när det gäller UEC-FOOD256-datauppsättningen. Mat-101-datauppsättningen innehåller populära rätter som förvärvats från en webbplats27. Mat-5036 och Video Retrieval Group Food 172 (VireoFood-172)37 datamängder är kinabaserade samlingar av matbilder. Datauppsättningen University of Milano-Bicocca 2016 (UNIMIB2016) består av bilder av matbrickor från en italiensk matsal38. Recipe1M är en storskalig datauppsättning av matlagningsrecept och matbilder39. Datamängden Food-47540 samlar in fyra tidigare publicerade matbildsdatamängder27,30,36,37 till en. Beijing Technology and Business University Food 60 (BTBUFood-60) är en datauppsättning bilder avsedda för livsmedelsdetektering41. Nyligen gjordes ISIA Food-500 dataset42 av diverse matbilder tillgängliga. I jämförelse med andra offentligt tillgängliga datamängder för livsmedelsbilder innehåller den ett stort antal bilder, indelade i 500 livsmedelsklasser, och är avsedd att främja utvecklingen av multimedialösningar för livsmedelsigenkänning42.

Protocol

1. Igenkänning av matbilder med NutriNet

  1. Hämta datauppsättningen för matbilder
    1. Samla en lista över olika livsmedel och drycker som kommer att vara utdata från matbildigenkänningsmodellen. En varierad lista över populära livsmedel och drycker föredras, eftersom det kommer att möjliggöra träning av en robust modell för erkännande av matbilder.
    2. Spara mat- och dryckeslistan i en textfil (t.ex. "txt" eller "csv").
      OBS: Textfilen som används av författarna till denna artikel finns i tilläggsfilerna ("food_items.txt") och innehåller en lista över 520 slovenska livsmedel.
    3. Skriv eller ladda ned ett Python43-skript som använder Google Custom Search API44 för att ladda ned bilder av varje matobjekt från listan och sparar dem i en separat mapp för varje matställe.
      OBS: Python-skriptet som används av författarna till den här artikeln finns i tilläggsfilerna ("download_images.py"). Om det här skriptet används måste utvecklarnyckeln (variabeln "developerKey", rad 8 i Python-skriptkoden) och anpassat sökmotor-ID (variabeln "cx", rad 28 i Python-skriptkoden) ersättas med värden som är specifika för Det Google-konto som används.
    4. Kör Python-skriptet från steg 1.1.3 (t.ex. med kommandot: "python download_images.py").
  2. (Valfritt) Rengöring av matbildsdatauppsättningen
    1. Träna en modell för identifiering av livsmedelsbilder på samma sätt som i avsnitt 1.4, förutom att endast använda två utgångar (livsmedel, icke-livsmedel) i motsats till listan över utgångar från steg 1.1.1.
      Författarna till den här artikeln använde bilder kombinerade från receptwebbplatser och ImageNet-datauppsättningen45 för att träna modellen för identifiering av matbilder. Eftersom fokus här ligger på igenkänning av matbilder och detta är ett valfritt steg för rengöring av igenkänningsdatauppsättningen utelämnas ytterligare detaljer. Istället finns mer information om detta tillvägagångssätt i Mezgec et al.2.
    2. Kör identifieringsmodellen från steg 1.2.1 i matavbildningsdatauppsättningen som är resultatet av steg 1.1.4.
    3. Ta bort alla bilder som har taggats som icke-livsmedel av identifieringsmodellen från steg 1.2.1.
    4. Kontrollera manuellt matbildsdatauppsättningen för andra felaktiga eller lågknyta bilder och för bild dubbletter.
    5. Ta bort bilder som finns i steg 1.2.4.
  3. Öka datauppsättningen för matbilder
    1. Skapa en ny version av varje bild från matbildsdatauppsättningen genom att rotera den med 90° med CLoDSA-biblioteket46 (raderna 19 till 21 i det medföljande Python-skriptet).
      OBS: Python-skriptet som innehåller alla CLoDSA-kommandon som används av författarna till den här artikeln finns i en fil som ingår i tilläggsfilerna ("nutrinet_augmentation.py"). Om det här skriptet används måste indatasökvägen (variabeln "INPUT_PATH", rad 8 i Python-skriptkoden) och utdatasökvägen (variabeln "OUTPUT_PATH", rad 11 i Python-skriptkoden) ersättas med sökvägar till önskade mappar.
    2. Skapa en ny version av varje bild från matbildsdatauppsättningen genom att rotera den med 180° med CLoDSA-biblioteket (raderna 19 till 21 i det medföljande Python-skriptet).
    3. Skapa en ny version av varje bild från matbildsdatauppsättningen genom att rotera den med 270° med CLoDSA-biblioteket (raderna 19 till 21 i det medföljande Python-skriptet).
    4. Skapa en ny version av varje bild från matbildsdatauppsättningen genom att vända den vågrätt med CLoDSA-biblioteket (raderna 23 och 24 i det medföljande Python-skriptet).
    5. Skapa en ny version av varje bild från matbildsdatauppsättningen genom att lägga till slumpmässigt färgljud i den med CLoDSA-biblioteket (raderna 26 och 27 i det medföljande Python-skriptet).
    6. Skapa en ny version av varje bild från matbildsdatauppsättningen genom att zooma in på den med 25 % med CLoDSA-biblioteket (raderna 29 och 30 i det medföljande Python-skriptet).
    7. Spara bilder från steg 1.3.1-1.3.6, tillsammans med originalbilderna (raderna 16 och 17 i det medföljande Python-skriptet), i en ny matbildsdatauppsättning (totalt 7 varianter per matbild). Detta görs genom att köra kommandot på rad 32 i det medföljande Python-skriptet.
  4. Utföra igenkänning av matbilder
    1. Importera matavbildningsdatauppsättningen från steg 1.3.7 till NVIDIA DIGITS-miljön47och dela upp datauppsättningen i tränings-, validerings- och testunderenheter i NVIDIA DIGITS-användargränssnittet.
    2. Kopiera och klistra in definitionstexten för NutriNet-arkitekturen2 i NVIDIA DIGITS som ett anpassat nätverk.
      OBS: NutriNet arkitektur definition text finns i tilläggsfilerna ("nutrinet.prototxt").
    3. (Valfritt) Definiera utbildningshyperparametrar i NVIDIA DIGITS-användargränssnittet.
      Hyperparametrar är parametrar som används för att definiera träningsprocessen innan den startas. De hyperparametrar som används av författarna till denna artikel finns i en fil som ingår i tilläggsfilerna ("nutrinet_hyperparameters.prototxt"). Medan experiment behövs för varje datauppsättning för att hitta de optimala hyperparametrarna, innehåller filen en hyperparameterkonfiguration som kan kopieras till NVIDIA DIGITS-användargränssnittet. Dessutom fyller NVIDIA DIGITS hyperparametrarna med standardvärden som kan användas som baslinje. Detta steg är därför frivilligt.
    4. Kör träningen av NutriNet-modellen.
    5. När träningen är klar bör du ta den bäst presterande NutriNet-modell iterationen. Den här modellen används sedan för att testa prestanda för den här metoden.
      Det finns flera sätt att avgöra den bäst presterande modell iterationen. Ett enkelt sätt att göra detta är följande. NVIDIA DIGITS ger ett diagram med noggrannhetsåtgärder för varje träningsepoken. Kontrollera vilken epok som uppnådde det lägsta förlustvärdet för valideringsunderuppsättningen i matbildsdatauppsättningen - den modell iterationen kan anses vara bäst presterande. Ett valfritt steg för att bestämma den bäst presterande modell iterationen är att observera hur förlustvärdet för träningsunderuppsättningen ändras från epok till epok och om det börjar sjunka kontinuerligt medan förlustvärdet för valideringsunderuppsättningen förblir detsamma eller stiger kontinuerligt, ta epoken före denna minskning av träningsförlustvärdet, som det kan signalera när modellen började övermontera på träningsbilderna.

2. Segmentering av livsmedelsbilder med FCN

  1. Hämta datauppsättningen för falska livsmedel
    1. Få en datauppsättning med falska matbilder. Falska matbilder samlas in av forskare som genomför beteendestudier med hjälp av matrepliker.
      OBS: Författarna till denna artikel fick bilder av falsk mat som samlades in i en labbmiljö18.
    2. Kommentera varje matbild manuellt på pixelnivå - varje pixel i bilden måste innehålla information om vilken matklass den tillhör. Resultatet av det här steget är en anteckningsbild för varje bild från matbildsdatauppsättningen, där varje pixel representerar en av matklasserna.
      Obs: Det finns många verktyg för att uppnå detta - författarna till den här artikeln använde JavaScript Segment Annotator48.
  2. Förstärkning av datauppsättningen för falska livsmedel
    1. Utför samma steg som i avsnitt 1.3, men bara på bilder från träningsundergruppen i matbildsdatauppsättningen.
      Obs: Med undantag för steg 1.3.5 måste alla dataförstoringssteg också utföras på motsvarande anteckningsbilder. Om skriptet från avsnitt 1.3 används måste indatasökvägen (variabeln "INPUT_PATH", rad 8 i Python43-skriptkoden) och Utdatasökvägen (variabeln "OUTPUT_PATH", rad 11 i Python-skriptkoden) ersättas med sökvägar till önskade mappar. Ställ dessutom in problemet (variabeln "PROBLEM", rad 6 i Python-skriptkoden) på "instance_segmentation" och anteckningsläget (variabeln "ANNOTATION_MODE", rad 7 i Python-skriptkoden) och utdataläget (variabeln "OUTPUT_MODE", rad 10 i Python-skriptkoden) till "coco".
  3. Utföra bildsegmentering av falska livsmedel
    1. Utför samma steg som i avsnitt 1.4, med undantag för steg 1.4.2. Utför steg 2.3.2 och 2.3.3 i stället för det steget.
      Hyperparametrar är parametrar som används för att definiera träningsprocessen innan den startas. De träningshyperparametrar som används av författarna till denna artikel för det valfria steg 1.4.3 finns i en fil som ingår i tilläggsfilerna ("fcn-8s_hyperparameters.prototxt"). Medan experiment behövs för varje datauppsättning för att hitta den optimala uppsättningen hyperparametrar, innehåller filen en hyperparameterkonfiguration som kan kopieras till NVIDIA DIGITS47-användargränssnittet. Dessutom fyller NVIDIA DIGITS hyperparametrarna med standardvärden som kan användas som baslinje.
    2. Kopiera och klistra in definitionstexten för FCN-8s-arkitekturen15 i NVIDIA DIGITS-miljön som ett anpassat nätverk.
      FCN-8s arkitekturdefinitionstext är offentligt tillgänglig på GitHub49.
    3. Ange sökvägen till de förtränade FCN-8s-modellvikterna i NVIDIA DIGITS-användargränssnittet.
      OBS: Dessa modellvikter var förutbildade på PASCAL VOC-datauppsättningen17 och finns på Internet49.

3. Segmentering av matbilder med HTC ResNet

  1. Hämta datauppsättningen för matbilder
    1. Ladda ner matbildsdatauppsättningen från FRC:s webbplats19.
  2. Öka datauppsättningen för matbilder
    1. Utför steg 1.3.1-1.3.4.
      OBS: Python43-skriptet som innehåller alla CLoDSA46-kommandon som används av författarna till den här artikeln finns i en fil som ingår i tilläggsfilerna ("frc_augmentation.py"). Om det här skriptet används måste indatasökvägen (variabeln "INPUT_PATH", rad 8 i Python-skriptkoden) och utdatasökvägen (variabeln "OUTPUT_PATH", rad 11 i Python-skriptkoden) ersättas med sökvägar till önskade mappar.
    2. Skapa en ny version av varje bild från matbildsdatauppsättningen genom att lägga till gaussisk oskärpa i den med CLoDSA-biblioteket (raderna 26 och 27 i det medföljande Python-skriptet).
    3. Skapa en ny version av varje bild från matbildsdatauppsättningen genom att skärpa den med CLoDSA-biblioteket (raderna 29 och 30 i det medföljande Python-skriptet).
    4. Skapa en ny version av varje bild från matbildsdatauppsättningen genom att tillämpa gammakorrigering på den med CLoDSA-biblioteket (raderna 32 och 33 i det medföljande Python-skriptet).
    5. Spara bilder från steg 3.2.1-3.2.4, tillsammans med originalbilderna (raderna 16 och 17 i det medföljande Python-skriptet), i en ny matbildsdatauppsättning (totalt 8 varianter per matbild). Detta görs genom att köra kommandot på rad 35 i det medföljande Python-skriptet.
    6. Spara bilder från steg 3.2.2-3.2.4, tillsammans med originalbilderna (raderna 16 och 17 i det medföljande Python-skriptet), i en ny matbildsdatauppsättning (totalt 4 varianter per matbild). Detta görs genom att ta bort raderna 19 till 24 i det medföljande Python-skriptet och köra kommandot på rad 35.
  3. Utföra segmentering av matbilder
    1. Ändra den befintliga HTC20 ResNet-101-arkitekturen16-definitionen från MMDetection-biblioteket50 i avsnitten "modellinställningar" och "datauppsättningsinställningar" i arkitekturdefinitionsfilen så att den accepterar matbildsdatauppsättningarna från steg 3.1.1, 3.2.5 och 3.2.6.
    2. (Valfritt) Ändra HTC ResNet-101-arkitekturdefinitionen från steg 3.3.1 för att definiera utbildningshyperparametrar: batchstorlek i avsnittet "datauppsättningsinställningar", problemlösartyp och inlärningshastighet i avsnittet "optimering", inlärningsprincip i avsnittet "inlärningsprincip" och antal utbildningsepoken i avsnittet "körningsinställningar" i arkitekturdefinitionsfilen.
      OBS: Den modifierade HTC ResNet-101 arkitekturdefinitionsfilen finns i tilläggsfilerna ("htc_resnet-101.py"). Hyperparametrar är parametrar som används för att definiera träningsprocessen innan den startas. Även om experiment behövs för varje data uppsättning för att hitta den optimala uppsättningen hyperparametrar, innehåller filen redan en hyperparameter konfiguration som kan användas utan ändringar. Detta steg är därför frivilligt.
    3. Kör utbildningen av HTC ResNet-101-modellen på matbildsdatauppsättningen från steg 3.1.1 med MMDetection-biblioteket (t.ex. med kommandot: "python mmdetection/tools/train.py htc_resnet-101.py").
    4. När träningen från steg 3.3.3 är klar, ta den bäst presterande HTC ResNet-101-modell iterationen och finjustera den genom att köra nästa fas av träningen på matbildsdatauppsättningen från steg 3.2.5.
      Det finns flera sätt att avgöra den bäst presterande modell iterationen. Ett enkelt sätt att göra detta är följande. MMDetection-biblioteket matar ut värden för noggrannhetsmått för varje träningsepoken i kommandoradsgränssnittet. Kontrollera vilken epok som uppnådde det lägsta förlustvärdet för valideringsunderuppsättningen i matbildsdatauppsättningen - den modell iterationen kan anses vara bäst presterande. Ett valfritt steg för att bestämma den bäst presterande modell iterationen är att observera hur förlustvärdet för träningsunderuppsättningen ändras från epok till epok och om det börjar sjunka kontinuerligt medan förlustvärdet för valideringsunderuppsättningen förblir detsamma eller stiger kontinuerligt, ta epoken före denna minskning av träningsförlustvärdet, som det kan signalera när modellen började övermontera på träningsbilderna.
    5. När träningen från steg 3.3.4 är klar, ta den bäst presterande HTC ResNet-101-modell iterationen och finjustera den genom att köra nästa fas av träningen på matbildsdatauppsättningen från steg 3.2.6.
      OBS: Se anmärkning för steg 3.3.4.
    6. När träningen från steg 3.3.5 är klar, ta den bäst presterande HTC ResNet-101-modell iterationen och finjustera den genom att återigen köra nästa fas av träningen på matbildsdatauppsättningen från steg 3.2.5.
      OBS: Se anmärkning för steg 3.3.4.
    7. När utbildningen från steg 3.3.6 är klar, ta den bäst presterande HTC ResNet-101-modell iterationen. Den här modellen används sedan för att testa prestanda för den här metoden.
      OBS: Se anmärkning för steg 3.3.4. Steg 3.3.3-3.3.7 gav de bästa resultaten för de ändamål som definieras av författarna till denna artikel. Experiment behövs för varje datauppsättning för att hitta den optimala sekvensen av utbildnings- och dataförstoringssteg.

Representative Results

NutriNet testades mot tre populära djupinlärningsarkitekturer på den tiden: AlexNet14, GoogLeNet51 och ResNet16. Flera träningsparametrar testades också för alla arkitekturer för att definiera de optimalavärdena 2. Bland dessa är valet av problemlösartyp, som bestämmer hur förlustfunktionen minimeras. Denna funktion är det primära kvalitetsmåttet för träning av neurala nätverk eftersom den är bättre lämpad för optimering under träning än klassificeringsnoggrannhet. Vi testade tre problemlösare: Stokastisk gradientnedstigning (SGD)52, Nesterovs accelererade gradient (NAG)53 och adaptiv gradientalgoritm (AdaGrad)54. Den andra parametern är batchstorlek, som definierar antalet bilder som bearbetas samtidigt. Djupet i djupinlärningsarkitekturen bestämde värdet av denna parameter, eftersom djupare arkitekturer kräver mer utrymme i GPU-minnet - konsekvensen av denna metod var att minnet var helt fyllt med bilder för alla arkitekturer, oavsett djup. Den tredje parametern är inlärningshastighet, som definierar hur snabbt de neurala nätverksparametrarna ändras under träningen. Den här parametern har angetts i samklang med batchstorleken, eftersom antalet bearbetade bilder samtidigt dikterar konvergensfrekvensen. AlexNet-modeller tränades med en batchstorlek på 256 bilder och en bas inlärnings frekvens på 0,02; NutriNet använde en batchstorlek på 128 bilder och en hastighet på 0,01; GoogLeNet 64-bilder och en hastighet på 0,005; och ResNet 16-bilder och en hastighet på 0,00125. Tre andra parametrar fastställdes för alla arkitekturer: policy för inlärningsfrekvens (steg-down), stegstorlek (30 %) och gamma (0,1). Dessa parametrar beskriver gemensamt hur inlärningshastigheten förändras i varje epok. Tanken bakom detta tillvägagångssätt är att inlärningshastigheten gradvis sänks för att finjustera modellen ju närmare det kommer det optimala förlustvärdet. Slutligen fastställdes antalet träningsepoker också till 150 för alla djupinlärningsarkitekturer2.

Det bästa resultatet bland alla testade parametrar som NutriNet uppnådde var en klassificeringsnoggrannhet på 86,72% på igenkänningsdatauppsättningen, som var cirka 2% högre än det bästa resultatet för AlexNet och något högre än GoogLeNets bästa resultat. Den bäst presterande arkitekturen totalt sett var ResNet (med cirka 1%), men träningstiden för ResNet är betydligt högre jämfört med NutriNet (med en faktor på cirka fem), vilket är viktigt om modellerna kontinuerligt tränas om för att förbättra noggrannheten och antalet igenkännliga livsmedel. NutriNet, AlexNet och GoogLeNet uppnådde sina bästa resultat med hjälp av AdaGrad-problemlösaren, medan ResNets bästa modell använde NAG-problemlösaren. NutriNet testades också på den allmänt tillgängliga UNIMIB2016 matbildsdatauppsättningen38. Den här datauppsättningen innehåller 3 616 bilder av 73 olika livsmedel. NutriNet uppnådde en igenkänningsnoggrannhet på 86,39% på denna datauppsättning, något bättre än baslinjeigenkänningsresultatet för författarna till datauppsättningen, som var 85,80%. Dessutom testades NutriNet på en liten datauppsättning med 200 verkliga bilder av 115 olika mat- och dryckesartiklar, där NutriNet uppnådde en topp-5-noggrannhet på 55%.

För att träna FCN-8s modell för segmentering av falska livsmedel använde vi Adam55 som problemlösartyp, eftersom vi fann att den presterade optimalt för denna uppgift. Basinlärningsgraden sattes mycket lågt - till 0,0001. Anledningen till det låga talet är det faktum att endast en bild kan bearbetas åt gången, vilket är en följd av klassificeringsprocessen på pixelnivå. GPU-minneskraven för den här metoden är betydligt större än klassificeringen på bildnivå. Inlärningshastigheten måste därför sättas lågt så att parametrarna inte ändrades för snabbt och konvergera till mindre optimala värden. Antalet utbildningsepoken fastställdes till 100, medan inlärningsfrekvenspolicyn, stegstorleken och gamma var inställda på att minska, 34% respektive 0,1, eftersom dessa parametrar producerade de mest exakta modellerna.

Noggrannhetsmätningar av FCN-8s-modellen utfördes medpixelnoggrannhetsmåttet 15, vilket är analogt med klassificeringsnoggrannheten i traditionella djupinlärningsnätverk, den största skillnaden är att noggrannheten beräknas på pixelnivån istället för på bildnivå:

Equation 1

där PA är pixelnoggrannhetsmåttet är nij antalet pixlar från klass I som förutspås tillhöra klass j och ti = Σj nij är det totala antalet pixlar från klassen i marksanningetiketterna 1. Med andra ord beräknas pixelnoggrannhetsmåttet genom att dividera korrekt förutsagda pixlar med det totala antalet pixlar. Den slutliga noggrannheten hos den utbildade FCN-8s-modellen var 92,18%. Figur 2 visar tre exempelbilder från datauppsättningen för falska livsmedel (en från var och en av delmängderna utbildning, validering och testning), tillsammans med motsvarande mark-sannings- och modellförutsägelseetiketter.

Parametrarna för att träna HTC20 ResNet-101-modellen för segmentering av matbilder sattes enligt följande: problemlösartypen som användes var SGD eftersom den överträffade andra problemlösartyper. Bas inlärnings frekvensen var inställd på 0.00125 och batch storleken till 2 bilder. Antalet träningsepoken var inställt på 40 per träningsfas, och flera träningsfaser utfördes - först på den ursprungliga FRC-datauppsättningen utan förstärkta bilder, sedan på den 8x-förstärkta och 4x-förstärkta FRC-datauppsättningen flera gånger på ett alternerande sätt, varje gång med den bäst presterande modellen och finjustera den i nästa träningsfas. Mer information om utbildningsfaserna finns i avsnitt 3.3 i protokolltexten. Slutligen användes politiken för steg-down-lärande, med fasta epoker för när inlärningsfrekvensen minskade (epokerna 28 och 35 för den första utbildningsfasen). En viktig sak att notera är att även om denna sekvens av utbildnings faser producerade de bästa resultaten i vår testning i omfattningen av FRC, med hjälp av en annan datauppsättning kan kräva en annan sekvens för att ge optimala resultat.

Denna ResNet-baserade lösning för segmentering av livsmedelsbilder utvärderades med följande precisionsmått19:

Equation 2

Där P är precision är TP antalet sanna positiva förutsägelser från modellen för segmentering av livsmedelsbilder, FP är antalet falska positiva förutsägelser och IoU är skärningspunkt över union, som beräknas med den här ekvationen:

Equation 3

där Överlappningsområdet representerar antalet förutsägelser från modellen som överlappar marksanningen, och unionsområdet representerar det totala antalet förutsägelser från modellen tillsammans med grundsanningen, både på pixelnivå och för varje enskild livsmedelsklass. Återkallelse används som ett sekundärt mått och beräknas på liknande sätt med hjälp av följande formel19:

Equation 4

där R återkallas och FN är antalet falska negativa förutsägelser från modellen för segmentering av livsmedelsbilder. Precisions- och återkallelsemåtten är sedan genomsnittliga över alla klasser i grundsanning. Med hjälp av dessa åtgärder uppnådde vår modell en genomsnittlig precision på 59,2% och en genomsnittlig återkallelse på 82,1%, som rankades som tvåa i den andra omgången av Food Recognition Challenge19. Resultatet var 4,2 procent efter förstaplatsen och 5,3 procent före tredjeplatsen när det gäller det genomsnittliga precisionsmåttet. Tabell 1 innehåller resultaten för de fyra bästa deltagarna i tävlingen.

Figure 1
Bild 1: Diagram över NutriNets djupa neurala nätverksarkitektur. Denna siffra har publicerats i Mezgec et al.2. Klicka här om du vill visa en större version av den här figuren.

Figure 2
Bild 2: Bilder från datauppsättningen för falska livsmedel. Originalbilder (vänster), manuellt märkta mark-sanningsetiketter (mitten) och förutsägelser från FCN-8s-modellen (höger). Denna siffra har publicerats i Mezgec et al.1. Klicka här om du vill visa en större version av den här figuren.

Lagets namn Placering Genomsnittlig precision Genomsnittlig återkallelse
rssfete (rssfete) 1 63.4% 88.6%
simon_mezgec 2 59.2% 82.1%
arimboux (olika betydelser) 3 53.9% 73.5%
latentvec (på senare tid) 4 48.7% 71.1%

Tabell 1: Topp-4 resultat från den andra omgången av Food Recognition Challenge. Genomsnittlig precision används som det primära prestandamåttet och genomsnittlig återkallelse som ett sekundärt mått. Resultaten är tagna från den officiella topplistanför tävlingen 19.

Kompletterande filer. Klicka här för att ladda ner den här filen.

Discussion

Under de senaste åren har djupa neurala nätverk validerats flera gånger som en lämplig lösning för att känna igen matbilder10,11,12,21,23,25,26,29,31,33. Vårt arbete som presenteras i den här artikeln tjänar till att ytterligare bevisadenna 1,2. Metoden med enkelmatsigenkänning av livsmedel är enkel och kan användas för enkla applikationer där bilder med endast en mat- eller dryckesartikel förväntas2.

Metoden för segmentering av livsmedelsbilder verkar särskilt lämplig för att känna igen matbilder i allmänhet, utan någon begränsning av antalet livsmedel1. Eftersom det fungerar genom att klassificera varje enskild pixel i bilden kan den inte bara känna igen ett antal matvaror i bilden, utan också ange var en matartikel finns, liksom hur stor den är. Den senare kan sedan användas för att utföra uppskattning av livsmedelsvikt, särskilt om den används med antingen ett referensobjekt eller en kamera med fast avstånd.

Det har gjorts en del arbete när det gäller tillgången på matbildsdatamängder3,22,27,30,36,37,38,39,40,41,42, och vi hoppas att mer kommer att göras i framtiden, särskilt när det gäller att aggregera matbildsdatauppsättningar från olika regioner över hela världen, vilket skulle göra det möjligt att utveckla mer robusta lösningar. För närvarande har noggrannheten hos automatiska lösningar för igenkänning av livsmedelsbilder ännu inte nått noggrannhet påmänsklig nivå 35, och detta beror sannolikt till stor del på användningen av matbildsdatauppsättningar av otillräcklig storlek och kvalitet.

I framtiden kommer vårt mål att vara att ytterligare utvärdera de utvecklade procedurerna för verkliga bilder. I allmänhet innehåller data uppsättningar i det här fältet ofta bilder tagna i kontrollerade miljöer eller avbildningar som optimerades manuellt för igenkänning. Det är därför det är viktigt att samla in en stor och mångsidig verklig matbildsdatauppsättning för att omfatta alla olika mat- och dryckesartiklar som individer kanske vill känna igen. Det första steget mot detta tillhandahölls av Food Recognition Challenge, som inkluderade en datauppsättning av verkliga matbilder19, men ytterligare arbete måste göras för att validera detta tillvägagångssätt på matbilder från hela världen och i samarbete med dietister.

Disclosures

Författarna har inget att avslöja.

Acknowledgments

Författarna vill tacka Tamara Bucher från University of Newcastle, Australien, för att ha tillhandahållit datauppsättningen för falska livsmedel. Detta arbete stöddes av EU:s forsknings- och innovationsprogram Horisont 2020 (bidragsnummer 863059 - FNS-Cloud, 769661 - SAAM); och slovenska forskningsbyrån (bidragsnummer P2-0098). Europeiska unionen och Sloveniens forskningsbyrå hade ingen roll i utformningen, analysen eller skrivandet av denna 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

Teknik Nummer 169 igenkänning av matbilder segmentering av matbilder djupa neurala nätverk djupinlärning invecklade neurala nätverk kostbedömning
Djupa neurala nätverk för bildbaserad kostbedömning
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