Het doel van het werk dat in dit artikel wordt gepresenteerd, is het ontwikkelen van technologie voor geautomatiseerde herkenning van voedsel- en drankartikelen uit afbeeldingen die door mobiele apparaten zijn gemaakt. De technologie bestaat uit twee verschillende benaderingen – de eerste voert voedselbeeldherkenning uit terwijl de tweede voedselbeeldsegmentatie uitvoert.
Vanwege de problemen en kosten die gepaard gaan met handmatige dieetbeoordelingsbenaderingen, zijn geautomatiseerde oplossingen nodig om het werk te vergemakkelijken en te versnellen en de kwaliteit ervan te verhogen. Tegenwoordig zijn geautomatiseerde oplossingen in staat om de voedingsinname van een persoon op een veel eenvoudigere manier vast te leggen, bijvoorbeeld door een foto te maken met een smartphonecamera. In dit artikel zullen we ons richten op dergelijke op afbeeldingen gebaseerde benaderingen van dieetbeoordeling. Voor het voedselbeeldherkenningsprobleem hebben diepe neurale netwerken de afgelopen jaren de state of the art bereikt en presenteren we ons werk op dit gebied. In het bijzonder beschrijven we eerst de methode voor beeldherkenning van eten en drinken met behulp van een diepe neurale netwerkarchitectuur, NutriNet genaamd. Deze methode is, zoals het meeste onderzoek gedaan in de begindagen van deep learning-gebaseerde voedselbeeldherkenning, beperkt tot één uitvoer per afbeelding en daarom ongeschikt voor afbeeldingen met meerdere voedsel- of drankproducten. Daarom zijn benaderingen die segmentatie van voedselimago’s uitvoeren aanzienlijk robuuster, omdat ze in staat zijn om een willekeurig aantal voedsel- of drankproducten in het beeld te identificeren. We presenteren daarom ook twee methoden voor segmentatie van voedselimago’ s – de ene is gebaseerd op volledig convolutionele netwerken (FCN’s) en de andere op diepe restnetwerken (ResNet).
Dieetbeoordeling is een cruciale stap in het bepalen van bruikbare gebieden van het dieet van een individu. Het uitvoeren van dieetbeoordelingen met behulp van traditioneel handmatige benaderingen gaat echter gepaard met aanzienlijke kosten. Deze benaderingen zijn ook gevoelig voor fouten, omdat ze vaak vertrouwen op zelfrapportage door het individu. Geautomatiseerde dieetbeoordeling pakt deze problemen aan door een eenvoudigere manier te bieden om voedselinname te kwantificeren en te kwalificeren. Een dergelijke aanpak kan ook een aantal van de fouten in handmatige benaderingen verlichten, zoals gemiste maaltijden, onvermogen om het voedselvolume nauwkeurig te beoordelen, enz. Daarom zijn er duidelijke voordelen aan het automatiseren van voedingsbeoordeling door oplossingen te ontwikkelen die verschillende voedingsmiddelen en dranken identificeren en voedselinname kwantificeren1. Deze oplossingen kunnen ook worden gebruikt om een schatting van de voedingswaarden van voedsel- en drankproducten (voortaan ‘voedingsmiddelen’) mogelijk te maken. Bijgevolg is geautomatiseerde dieetbeoordeling nuttig voor meerdere toepassingen – van strikt medisch gebruik, zoals het toestaan van diëtisten om gemakkelijker en nauwkeuriger de diëten van hun patiënten te volgen en te analyseren, tot het gebruik in welzijnsapps gericht op de algemene bevolking.
Het automatisch herkennen van voedingsmiddelen uit afbeeldingen is een uitdagend computervisieprobleem. Dit komt doordat voedingsmiddelen meestal vervormbare objecten zijn en vanwege het feit dat een grote hoeveelheid visuele informatie van het voedselitem verloren kan gaan tijdens de bereiding. Bovendien kunnen verschillende voedingsmiddelen erg op elkaar lijken en kan hetzelfde voedsel op meerdere afbeeldingen aanzienlijk verschillen2. Bovendien hangt de herkenningsnauwkeurigheid af van veel meer factoren, zoals beeldkwaliteit, of het voedselartikel wordt belemmerd door een ander item, afstand van waaruit het beeld is genomen, enz. Het herkennen van drankartikelen brengt zijn eigen uitdagingen met zich mee, met als belangrijkste de beperkte hoeveelheid visuele informatie die beschikbaar is in een afbeelding. Deze informatie kan de drankkleur, de kleur en de structuur van de drankcontainer zijn, en, onder optimale beeldvoorwaarden, de drankdichtheid2.
Om voedselproducten uit afbeeldingen met succes te herkennen, is het noodzakelijk om functies van elke eet- en drinkles te leren. Dit werd traditioneel gedaan met behulp van handmatig gedefinieerde functie-extractors3,4,5,6 dieherkenning uitvoeren op basis van specifieke itemfuncties zoals kleur, textuur, grootte, enz., of een combinatie van deze functies. Voorbeelden van deze functie-extractors zijn meerdere kernel learning4,pairwise lokale functies5 en de bag-of-features model6. Vanwege de complexiteit van voedselbeelden bereikten deze benaderingen meestal een lage classificatienauwkeurigheid – tussen 10% en 40%3,4,5. De reden hiervoor is dat de handmatige aanpak niet robuust genoeg is om voldoende nauwkeurig te zijn. Omdat een voedingsartikel qua uiterlijk aanzienlijk kan variëren, is het niet haalbaar om al deze verschillen handmatig te omvatten. Een hogere classificatienauwkeurigheid kan worden bereikt met handmatig gedefinieerde functie-extractors wanneer het aantal voedselklassen wordt verminderdmet 5, of verschillende afbeeldingskenmerken worden gecombineerd6, wat aangeeft dat er behoefte is aan complexere oplossingen voor dit probleem.
Daarom bleek deep learning zo effectief te zijn voor het voedselimagoherkenningsprobleem. Deep learning, of diepe neurale netwerken, is geïnspireerd door biologische hersenen en stelt computationele modellen bestaande uit meerdere verwerkingslagen in staat om automatisch functies te leren door training op een set invoerafbeeldingen7,8. Hierdoor heeft deep learning de stand van de techniek op verschillende onderzoeksgebieden7aanzienlijk verbeterd, met computervisie en vervolgens voedselbeeldherkenning, als een van hen2.
Met name diepe convolutionele neurale netwerken (DCNN’s) zijn het meest populair voor voedselbeeldherkenning – deze netwerken zijn geïnspireerd op het visuele systeem van dieren, waar individuele neuronen proberen inzicht te krijgen in de visuele input door te reageren op overlappende gebieden in het visuele veld9. Een convolutioneel neuraal netwerk neemt het invoerbeeld en voert een reeks bewerkingen uit in elk van de netwerklagen, waarvan de meest voorkomende convolutionele, volledig verbonden en poolinglagen zijn. Convolutionele lagen bevatten leerbare filters die reageren op bepaalde functies in de invoergegevens, terwijl volledig verbonden lagen uitvoergegevens uit andere lagen samenstellen om er kennis op een hoger niveau van te verkrijgen. Het doel van het groeperen van lagen is om de invoergegevens te down-samplen2. Er zijn twee benaderingen voor het gebruik van deep learning-modellen die populair bleken: het nemen van een bestaande deep neurale netwerkdefinitie10,11, in dit artikel een deep learning-architectuur genoemd, of het definiëren van een nieuwe deep learning-architectuur12,13, en het trainen van een van deze op een voedselimagegegevensset. Er zijn sterke en zwakke punten aan beide benaderingen – bij het gebruik van een bestaande deep learning-architectuur kan een architectuur worden gekozen en verfijnd voor het gewenste probleem, waardoor tijd wordt bespaard en ervoor wordt gezorgd dat een gevalideerde architectuur is gekozen. Het definiëren van een nieuwe deep learning-architectuur is daarentegen tijdintensiever, maar maakt de ontwikkeling van architecturen mogelijk die specifiek zijn gemaakt om rekening te houden met de specifieke kenmerken van een probleem en dus theoretisch beter presteren voor dat probleem.
In dit artikel presenteren we beide benaderingen. Voor het probleem van voedselimagoherkenning ontwikkelden we een nieuwe DCNN-architectuur genaamd NutriNet2, een wijziging van de bekende AlexNet-architectuur14. Er zijn twee belangrijke verschillen ten opzichte van AlexNet: NutriNet accepteert afbeeldingen van 512×512 pixels als invoer (in tegenstelling tot afbeeldingen van 256×256 pixels voor AlexNet) en NutriNet heeft een extra convolutionele laag aan het begin van het neurale netwerk. Deze twee wijzigingen zijn ingevoerd om zoveel mogelijk informatie uit de afbeeldingen van de herkenningsgegevensset te extraheren. Het hebben van afbeeldingen met een hogere resolutie betekende dat er meer informatie op afbeeldingen aanwezig was en het hebben van meer convolutionele lagen betekende dat extra kennis uit de afbeeldingen kon worden gehaald. Vergeleken met de ongeveer 60 miljoen parameters van AlexNet bevat NutriNet minder parameters: ongeveer 33 miljoen. Dit komt door het verschil in dimensionaliteit bij de eerste volledig verbonden laag veroorzaakt door de extra convolutionele laag2. Figuur 1 bevat een diagram van de NutriNet-architectuur. De voedselafbeeldingen die werden gebruikt om het NutriNet-model te trainen, werden verzameld van internet – de procedure wordt beschreven in de protocoltekst.
Voor het probleem van voedselimagesegmentatie gebruikten we twee verschillende bestaande architecturen: volledig convolutienetwerken (FCN’s)15 en diepe restnetwerken (ResNet)16, die beide de state of the art vertegenwoordigden voor beeldsegmentatie toen we ze gebruikten om hun respectieve oplossingen voor voedselimagosegmentatie te ontwikkelen. Er zijn meerdere FCN varianten die werden geïntroduceerd door Long et al.: FCN-32s, FCN-16s en FCN-8s15. FCN-32s voert een pixelkaart uit op basis van de voorspellingen van de laatste laag van de FCN, terwijl de FCN-16s-variant deze voorspellingen combineert met die van een eerdere laag. FCN-8s overweegt de voorspellingen van nog een andere laag en is daarom in staat om voorspellingen te doen bij de fijnste korrel, daarom is het geschikt voor voedselbeeldherkenning. De FCN-8’s die we gebruikten, werden vooraf getraind op de PASCAL Visual Object Classes (PASCAL VOC) dataset17 en getraind en getest op afbeeldingen van voedselreplica’s (voortaan ‘nepvoedsel’)18 vanwege hun visuele gelijkenis met echt voedsel en vanwege een gebrek aan geannoteerde afbeeldingen van echt voedsel op pixelniveau. Nepvoedsel wordt gebruikt in verschillende gedragsstudies en er worden afbeeldingen gemaakt voor alle gerechten van alle deelnemers aan de studie. Omdat de voedselinhoud van deze afbeeldingen bekend is, maakt het de afbeeldingsgegevensset nuttig voor deep learning-modeltraining. Verwerkingsstappen voor gegevenssets worden beschreven in de protocoltekst.
De op ResNet gebaseerde oplossing is ontwikkeld in het kader van de Food Recognition Challenge (FRC)19. Het maakt gebruik van de Hybrid Task Cascade (HTC)20-methode met een ResNet-10116-backbone. Dit is een state-of-the-art aanpak voor het probleem met beeldsegmentatie dat verschillende functie-extractors of backbones kan gebruiken. We hebben ook andere backbone-netwerken overwogen, met name andere ResNet-varianten zoals ResNet-5016,maar ResNet-101 was het meest geschikt vanwege de diepte en het vermogen om invoerafbeeldingen op een complexe manier weer te geven. De dataset die werd gebruikt voor het trainen van het HTC ResNet-101-model was de FRC-dataset met toegevoegde augmented images. Deze uitbreidingen worden gepresenteerd in de protocoltekst.
Dit artikel is bedoeld als een bron voor machine learning-experts die op zoek zijn naar informatie over welke deep learning-architecturen en stappen voor gegevensvergroting goed presteren voor de problemen van voedselbeeldherkenning en segmentatie, evenals voor voedingsonderzoekers die onze aanpak willen gebruiken om voedselbeeldherkenning te automatiseren voor gebruik bij dieetbeoordeling. In de onderstaande paragrafen worden deep learning-oplossingen en datasets uit het veld voedselimageherkenning gepresenteerd. In de protocoltekst beschrijven we hoe elk van de drie benaderingen werd gebruikt om diepe neurale netwerkmodellen te trainen die kunnen worden gebruikt voor geautomatiseerde dieetbeoordeling. Bovendien bevat elke protocolsectie een beschrijving van hoe de gegevenssets voor voedselafbeeldingen die worden gebruikt voor training en testen zijn verkregen en verwerkt.
DCNN’s behaalden over het algemeen aanzienlijk betere resultaten dan andere methoden voor herkenning en segmentatie van voedselimago’ s, daarom is het overgrote deel van het recente onderzoek in het veld gebaseerd op deze netwerken. Kawano et al. gebruikten DCNN’s als aanvulling op handmatige benaderingen21 en bereikten een classificatienauwkeurigheid van 72,26% op de UEC-FOOD100 dataset22. Christodoulidis et al. gebruikten ze uitsluitend om een hogere nauwkeurigheid van 84,90% te bereiken op een zelf verworven dataset23. Tanno et al. ontwikkelden DeepFoodCam – een smartphone-app voor voedselbeeldherkenning die DCNNs24 gebruikt. Liu et al. presenteerden een systeem dat een op Internet of Things gebaseerde dieetbeoordeling uitvoert met behulp van DCNNs25. Martinel et al. introduceerden een dcnn-gebaseerde aanpak die de details van voedselafbeeldingen26 benut en een nauwkeurigheid van 90,27% rapporteerde op de Food-101-dataset27. Zhou et al. hebben een overzicht geschreven van deep learning-oplossingen in het voedseldomein28.
Onlangs stelden Zhao et al. een netwerk voor dat specifiek is bedoeld voor voedselimagoherkenning in mobiele toepassingen29. Deze aanpak maakt gebruik van een kleiner ‘studenten’-netwerk dat leert van een groter ‘docentennetwerk’. Hiermee slaagden ze erin om een nauwkeurigheid van 84% te bereiken op de UEC-FOOD25630 en een nauwkeurigheid van 91,2% op de Food-101 dataset27. Hafiz et al. gebruikten DCNNs om een drank-only beeldherkenningsoplossing te ontwikkelen en rapporteerden een zeer hoge nauwkeurigheid van 98,51%31. Shimoda et al. beschreven een nieuwe methode voor het detecteren van plaatgebieden in voedselafbeeldingen zonder het gebruik van pixelgewijze annotatie32. Ciocca et al. introduceerden een nieuwe dataset met voedingsmiddelen uit 20 verschillende voedselklassen in 11 verschillende toestanden (vaste, gesneden, romige pasta, enz.) en presenteerden hun aanpak voor trainingsherkenningsmodellen die de voedseltoestand kunnen herkennen, naast de voedselklasse33. Knez et al. evalueerde oplossingen voor voedselbeeldherkenning voor mobiele apparaten34. Ten slotte hebben Furtado et al. een studie uitgevoerd naar hoe het menselijke visuele systeem zich verhoudt tot de prestaties van DCNN’s en ontdekten dat menselijke herkenning nog steeds beter presteert dan DCNN’s met een nauwkeurigheid van 80% versus 74,5%35. De auteurs merkten op dat met een klein aantal voedselklassen de DCNN’s goed presteren, maar op een dataset met honderden klassen is de nauwkeurigheid van menselijke herkenning hogerdan 35, wat de complexiteit van het probleem benadrukt.
Ondanks de state-of-the-art resultaten heeft deep learning een groot nadeel – het vereist een grote invoergegevensset om het model op te trainen. In het geval van voedselimagoherkenning is een grote voedselimagegegevensset vereist en deze gegevensset moet zoveel mogelijk verschillende scenario’s in de echte wereld omvatten. In de praktijk betekent dit dat voor elk individueel voedsel- of drankartikel een grote verzameling afbeeldingen nodig is en dat er zoveel mogelijk verschillende items in de dataset aanwezig moeten zijn. Als er niet genoeg afbeeldingen zijn voor een specifiek item in de gegevensset, is het onwaarschijnlijk dat dat item met succes wordt herkend. Aan de andere kant, als slechts een klein aantal items onder de dataset valt, zal de oplossing beperkt zijn in omvang en slechts in staat zijn om een handvol verschillende voedingsmiddelen en dranken te herkennen.
In het verleden zijn meerdere datasets beschikbaar gesteld. De Pittsburgh Fast-Food Image Dataset (PFID)3 werd geïntroduceerd om meer onderzoek op het gebied van voedselbeeldherkenning aan te moedigen. De University of Electro-Communications Food 100 (UEC-FOOD100)22 en University of Electro-Communications Food 256 (UEC-FOOD256)30 datasets bevatten Japanse gerechten, uitgebreid met enkele internationale gerechten in het geval van de UEC-FOOD256 dataset. De Food-101 dataset bevat populaire gerechten verkregen van een website27. De Food-5036 en Video Retrieval Group Food 172 (VireoFood-172)37 datasets zijn in China gevestigde collecties van voedselafbeeldingen. De dataset van de Universiteit van Milaan-Bicocca 2016 (UNIMIB2016) bestaat uit afbeeldingen van voedselbakken uit een Italiaanse kantine38. Recipe1M is een grootschalige dataset van kookrecepten en voedselafbeeldingen39. De Food-475 dataset40 verzamelt vier eerder gepubliceerde voedselbeeld datasets27,30,36,37 in één. De Beijing Technology and Business University Food 60 (BTBUFood-60) is een dataset van afbeeldingen bedoeld voor voedseldetectie41. Onlangs is de ISIA Food-500 dataset42 van diverse voedselafbeeldingen beschikbaar gesteld. In vergelijking met andere openbaar beschikbare gegevenssets voor voedselafbeeldingen bevat het een groot aantal afbeeldingen, verdeeld in 500 voedselklassen, en is het bedoeld om de ontwikkeling van multimediale voedselherkenningsoplossingen te bevorderen42.
In de afgelopen jaren zijn diepe neurale netwerken meerdere keren gevalideerd als een geschikte oplossing voor het herkennen van voedselbeelden10,11,12,21,23,25,26,29,31,33. Ons werk gepresenteerd in dit artikel dient om dit verder te bewijzen1,2. De benadering voor het herkennen van voedselafbeeldingen met één uitvoer is eenvoudig en kan worden gebruikt voor eenvoudige toepassingen waarbij afbeeldingen met slechts één voedsel- of drankartikel worden verwacht2.
De benadering van voedselimagosegmentatie lijkt bijzonder geschikt voor het herkennen van voedselafbeeldingen in het algemeen, zonder enige beperking van het aantal levensmiddelen1. Omdat het werkt door elke afzonderlijke pixel van de afbeelding te classificeren, kan het niet alleen een willekeurig aantal voedselitems in de afbeelding herkennen, maar ook opgeven waar een voedselitem zich bevindt en hoe groot het is. Dit laatste kan vervolgens worden gebruikt om voedselgewichtsschatting uit te voeren, vooral als het wordt gebruikt met een referentieobject of een camera met vaste afstand.
Er is wat werk verricht met betrekking tot de beschikbaarheid van voedselbeeldgegevenssets3,22,27,30,36,37,38,39,40,41,42, en we hopen dat er in de toekomst meer zal worden gedaan, vooral als het gaat om het aggregeren van voedselbeeldgegevenssets uit verschillende regio’s over de hele wereld, waardoor robuustere oplossingen kunnen worden ontwikkeld. Momenteel heeft de nauwkeurigheid van automatische oplossingen voor voedselbeeldherkenning de nauwkeurigheid op menselijk niveau nog niet bereikt35, en dit is waarschijnlijk voor een groot deel te wijten aan het gebruik van voedselbeeldgegevenssets van onvoldoende grootte en kwaliteit.
In de toekomst zal ons doel zijn om de ontwikkelde procedures voor echte beelden verder te evalueren. Over het algemeen bevatten gegevenssets in dit veld vaak afbeeldingen die zijn gemaakt in gecontroleerde omgevingen of afbeeldingen die handmatig zijn geoptimaliseerd voor herkenning. Daarom is het belangrijk om een grote en diverse dataset voor voedselafbeeldingen in de echte wereld te verzamelen om alle verschillende voedsel- en drankproducten te omvatten die individuen misschien willen herkennen. De eerste stap hiertoe werd gezet door de Food Recognition Challenge, die een dataset van echte voedselbeelden19bevatte, maar er moet verder worden gewerkt aan het valideren van deze aanpak op voedselbeelden van over de hele wereld en in samenwerking met diëtisten.
The authors have nothing to disclose.
De auteurs willen Tamara Bucher van de Universiteit van Newcastle, Australië, bedanken voor het verstrekken van de dataset met nep-voedselafbeeldingen. Dit werk werd ondersteund door de onderzoeks- en innovatieprogramma’s horizon 2020 van de Europese Unie (subsidienummers 863059 – FNS-Cloud, 769661 – SAAM); en het Sloveense onderzoeksbureau (subsidienummer P2-0098). De Europese Unie en het Sloveense Onderzoeksbureau hadden geen rol bij het ontwerp, de analyse of het schrijven van dit artikel.
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 | 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 |