Journal
/
/
Diepe neurale netwerken voor op afbeeldingen gebaseerde dieetbeoordeling
JoVE Journal
Engineering
Author Produced
This content is Free Access.
JoVE Journal Engineering
Deep Neural Networks for Image-Based Dietary Assessment

Diepe neurale netwerken voor op afbeeldingen gebaseerde dieetbeoordeling

Please note that all translations are automatically generated. Click here for the English version.

8,796 Views

13:19 min

March 13, 2021

DOI:

13:19 min
March 13, 2021

30 Views
,

Transcript

Automatically generated

Vanwege de problemen en kosten in verband 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 met behulp van diepe neurale netwerken, die de stand van de techniek in het veld vertegenwoordigen.

In het bijzonder zullen we drie oplossingen presenteren, een voor voedselimagoherkenning, een voor beeldsegmentatie van voedselreplica’s of nepvoedsel, en een voor beeldsegmentatie van echt voedsel. Verzamel een lijst met verschillende voedingsmiddelen en dranken die de outputs van het voedselbeeldherkenningsmodel zullen zijn. Sla de lijst met eten en drinken op in een tekstbestand, zoals TXT of CSV.

Merk op dat het tekstbestand dat door de auteurs van dit artikel wordt gebruikt, te vinden is in de aanvullende bestanden onder voedselitems dot TXT en een lijst met 520 Sloveense voedselproducten bevat. Schrijf of download een Python-script dat de aangepaste zoek-API van Google gebruikt om afbeeldingen van elk voedselitem uit de lijst te downloaden en ze op te slaan in een aparte map voor elk voedselitem. Merk op dat het Python-script dat door de auteurs van dit artikel wordt gebruikt, te vinden is in de aanvullende bestanden onder downloadafbeeldingen dot pi.

Als dit script wordt gebruikt, moeten de sleutelregel acht van de ontwikkelaarssleutelvariabele in de Python-scriptcode en aangepaste zoekmachine-ID-variabele CX-regel 28 in de Python-scriptcode worden vervangen door waarden die specifiek zijn voor het Google-account dat wordt gebruikt. Voer het Python-script uit vanaf stap 1.1.3. Maak een nieuwe versie van elke afbeelding op de voedselafbeeldingsgegevens die zijn ingesteld door deze 90 graden te roteren met behulp van de CLoDSA-bibliotheek.

Merk op dat het Python-script met alle CLoDSA-opdrachten die door de auteurs van dit artikel worden gebruikt, te vinden is in een bestand dat is opgenomen in de aanvullende bestanden onder NutriNet-onderstrepingspunt pi. Maak een nieuwe versie van elke afbeelding op de voedselafbeeldingsgegevensset door deze 180 graden te roteren met behulp van de CLoDSA-bibliotheek. Maak een nieuwe versie van elke afbeelding op de voedselafbeeldingsgegevensset door deze 270 graden te roteren met behulp van de CLoDSA-bibliotheek.

Maak een nieuwe versie van elke afbeelding op de voedselafbeeldingsgegevensset door deze horizontaal om te draaien met behulp van de CLoDSA-bibliotheek. Maak een nieuwe versie van elke afbeelding op de voedselafbeeldingsgegevens die zijn ingesteld door er willekeurige kleurruis aan toe te voegen met behulp van de CLoDSA-bibliotheek. Maak een nieuwe versie van elke afbeelding op de voedselafbeeldingsgegevensset door er met 25% op in te zoomen met behulp van de CLoDSA-bibliotheek.

Sla afbeeldingen uit stap 1.3.1 tot en met 1.3.6 samen met de originele afbeeldingen op in een nieuwe gegevensset voor voedselafbeeldingen. In totaal zeven varianten per voedselbeeld. Importeer de voedselimagegegevensset vanaf stap 1.3.7 in de NVIDI-cijferomgeving en verdeel de gegevensset in subsets voor training, validatie en testen.

Kopieer en plak de definitietekst van de NutriNet-architectuur in NVIDIA-cijfers. Merk op dat de NutriNet-architectuurdefinitie te vinden is in de aanvullende bestanden onder NutriNet dot proto TXT. Definieer optioneel trainingshyperparameters in NVIDIA-cijfers of gebruik de standaardwaarden.

De hyperparameters die door de auteurs van dit artikel worden gebruikt, zijn te vinden in een bestand dat is opgenomen in de aanvullende bestanden onder NutriNet onderstreping hyperparameters dot proto TXT. Voer de training van het NutriNet-model uit. Nadat de training is voltooid, neemt u de best presterende NutriNet-model iteratie.

Dit model wordt vervolgens gebruikt voor het testen van de prestaties van deze aanpak. Houd er rekening mee dat er meerdere manieren zijn om de best presterende model iteratie te bepalen. Raadpleeg de artikelteksten voor meer informatie.

Verkrijg een gegevensset van nepvoedselafbeeldingen. Merk op dat de auteurs van dit artikel afbeeldingen ontvingen van nepvoedsel dat werd verzameld in een labomgeving. Maak handmatig aantekeningen bij elke voedselafbeelding op pixelniveau.

Elke pixel in de afbeelding moet informatie bevatten over tot welke voedselklasse deze behoort. Merk op dat er veel tools zijn om dit te bereiken. De auteurs van dit artikel gebruikten JavaScript-segmentannotator.

Het resultaat van deze stap is één annotatieafbeelding voor elke afbeelding uit de gegevensset van de voedselafbeelding, waarbij elke pixel een van de voedselklassen vertegenwoordigt. Voer dezelfde stappen uit als in sectie 1.3, maar alleen op afbeeldingen uit de trainingssubset van de gegevensset met voedselafbeeldingen. Houd er rekening mee dat, met uitzondering van stap 1.3.5, alle stappen voor gegevensvergroting ook moeten worden uitgevoerd op overeenkomstige annotatieafbeeldingen.

Voer dezelfde stappen uit als in punt 1.4, met uitzondering van stap 1.4.2. Voer in plaats van die stap de stappen 2.3.2 en 2.3.3 uit. Merk op dat de trainingshyperparameters die door de auteurs van dit artikel worden gebruikt, te vinden zijn in het bestand dat is opgenomen in de aanvullende bestanden onder FCN-8S onderstrepingsteken hyperparameters dot proto TXT.

Kopieer en plak de definitietekst van de FCN-8S-architectuur in NVIDIA-cijfers. Voer de voorgetrainde FCN-8S-modelgewichten in NVIDIA-cijfers in. Houd er rekening mee dat deze modelgewichten vooraf zijn getraind op de gegevensset van de pascal visuele objectklassen en te vinden zijn op internet.

Download de voedselafbeeldingsgegevensset van de website van de Food Recognition Challenge. Voer de stappen 1.3.1 tot en met 1.3.4 uit. Merk op dat het Python-script met alle CLoDSA-opdrachten die door de auteurs van dit artikel worden gebruikt, te vinden is in het bestand dat is opgenomen in de aanvullende bestanden onder FRC-onderstreping augmentatie dot pi.

Maak een nieuwe versie van elke afbeelding op de voedselafbeeldingsgegevensset door er gaussiaanse vervaging aan toe te voegen met behulp van de CLoDSA-bibliotheek. Maak een nieuwe versie van elke afbeelding op de voedselafbeeldingsgegevensset door deze te verscherpen met behulp van de CLoDSA-bibliotheek. Maak een nieuwe versie van elke afbeelding op de voedselimagegegevensset door er gammacorrectie op toe te passen met behulp van de CLoDSA-bibliotheek.

Sla afbeeldingen uit stap 3.2.1 tot en met 3.2.4 samen met de originele afbeeldingen op in een nieuwe gegevensset voor voedselafbeeldingen. In totaal acht varianten per voedselbeeld. Sla afbeeldingen uit stap 3.2.2 tot en met 3.2.4 samen met de originele afbeeldingen op in een nieuwe gegevensset voor voedselafbeeldingen.

In totaal vier varianten per voedselbeeld. Wijzig de bestaande HTC ResNet 101-architectuurdefinitie uit de MM Detection-bibliotheek zodat deze de gegevenssets voor voedselafbeeldingen accepteert uit stap 3.1.1, 3.2.5 en 3.2.6. Wijzig optioneel de architectuurdefinitie htc ResNet 101 uit stap 3.3.1 om hyperparameters voor training te definiëren of gebruik de standaardwaarden.

Merk op dat de gewijzigde HTC ResNet 101 architectuur definitie kan worden gevonden in de aanvullende bestanden onder HTC onderstrepen ResNet 101 dot pi. Voer de training van het HTC ResNet 101-model uit op de gegevenssets voor voedselafbeeldingen vanaf stap 3.1.1 met behulp van de MM Detection-bibliotheek. Nadat de training van stap 3.3.3 is voltooid, neemt u de best presterende HTC ResNet 101-model iteratie en verfijnt u deze door de volgende fase van de training uit te voeren op de voedselafbeeldingsgegevensset van stap 3.2.5.

Houd er rekening mee dat er meerdere manieren zijn om de best presterende model iteratie te bepalen. Raadpleeg de artikelteksten voor meer informatie. Dit is ook relevant voor de volgende stappen.

Nadat de training van stap 3.3.4 is voltooid, neemt u de best presterende HTC ResNet 101-model iteratie en verfijnt u deze door de volgende fase van de training uit te voeren op de voedselafbeeldingsgegevensset van stap 3.2.6. Nadat de training van stap 3.3.5 is voltooid, neemt u de best presterende HTC ResNet 101-model iteratie en verfijnt u deze door opnieuw de volgende fase van de training uit te voeren op de voedselafbeeldingsgegevensset van stap 3.2.5. Nadat de training van stap 3.3.6 is voltooid, neemt u de best presterende HTC ResNet 101-model iteratie.

Dit model wordt vervolgens gebruikt voor het testen van de prestaties van deze aanpak. Houd er rekening mee dat de stappen 3.3.3 tot en met 3.3.7 de beste resultaten hebben opgeleverd voor de doeleinden die door de auteurs van dit artikel zijn gedefinieerd. Experimenten zijn nodig voor elke gegevensset om de optimale volgorde van trainings- en gegevensvergrotingsstappen te vinden.

Na het testen van het trendmodel bereikte NutriNet een classificatienauwkeurigheid van 86,72% op de herkenningsgegevensset, die ongeveer 2% hoger was dan AlexNet en iets hoger dan GoogLeNet, wat populaire diepe neurale netwerkarchitecturen van die tijd waren. Om de nauwkeurigheid van het FCN-8S nep food image segmentatiemodel te meten, werd de pixelnauwkeurigheidsmaat gebruikt. De nauwkeurigheid van het getrainde FCN-8S-model was 92,18%De op ResNet gebaseerde oplossing voor segmentatie van voedselimage werd geëvalueerd met behulp van de precisiemeting die werd gedefinieerd in de Food Recognition Challenge.

Met deze maatregel behaalde het treinmodel een gemiddelde precisie van 59,2%, wat op de tweede plaats stond in de Food Recognition Challenge. In de afgelopen jaren zijn diepe neurale netwerken meerdere keren gevalideerd als een geschikte oplossing voor het herkennen van voedselbeelden. Ons werk in dit artikel dient om dit verder te bewijzen.

De benadering van voedselbeeldherkenning met één uitgang is eenvoudig en kan worden gebruikt voor eenvoudige toepassingen. Terwijl de benadering van voedselbeeldsegmentatie meer werk vereist bij het maken van geannoteerde afbeeldingen, maar het is veel meer van toepassing op afbeeldingen uit de echte wereld. In de toekomst zal ons doel zijn om de ontwikkelde procedures voor beelden uit de echte wereld verder te evalueren.

De eerste stap naar validatie in de echte wereld werd geleverd door de Food Recognition Challenge, die een dataset van echte voedselafbeeldingen bevatte. Maar er moet verder worden gewerkt aan het valideren van deze benadering van voedselbeelden van over de hele wereld en in samenwerking met diëtisten.

Summary

Automatically generated

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.

Related Videos

Read Article