Journal
/
/
Dype nevrale nettverk for bildebasert kostholdsvurdering
JoVE Journal
Engineering
Author Produced
This content is Free Access.
JoVE Journal Engineering
Deep Neural Networks for Image-Based Dietary Assessment

Dype nevrale nettverk for bildebasert kostholdsvurdering

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

8,790 Views

13:19 min

March 13, 2021

DOI:

13:19 min
March 13, 2021

30 Views
,

Transcript

Automatically generated

På grunn av problemer og kostnader forbundet med manuelle kostholdsvurdering tilnærminger automatiserte løsninger er nødvendig for å lette og fremskynde arbeidet og øke kvaliteten. I dag kan automatiserte løsninger registrere en persons diettinntak på en mye enklere måte, for eksempel ved å ta et bilde med et smarttelefonkamera. I denne artikkelen vil vi fokusere på slike bildebaserte tilnærminger til kostholdsvurdering ved hjelp av dype nevrale nettverk, som representerer toppmoderne i feltet.

Spesielt vil vi presentere tre løsninger, en for matbildegjenkjenning, en for bildesegmentering av matkopier, eller falsk mat, og en for bildesegmentering av ekte mat. Samle en liste over ulike matvarer og drikkevarer som vil være utgangene på matbildegjenkjenningsmodellen. Lagre mat- og drikkelisten i en tekstfil, for eksempel TXT eller CSV.

Legg merke til at tekstfilen som brukes av forfatterne av denne artikkelen kan bli funnet i tilleggsfilene under matvarer dot TXT og inneholder en liste over 520 slovenske matvarer. Skriv eller last ned et Python-skript som bruker Googles api for egendefinert søk til å laste ned bilder av hvert matelement fra listen og lagre dem i en egen mappe for hver matvare. Vær oppmerksom på at Python-skriptet som brukes av forfatterne av denne artikkelen, finner du i tilleggsfilene under nedlasting av bilder dot pi.

Hvis dette skriptet brukes utviklernøkkel variabel utvikler nøkkellinje åtte i Python skriptkode og tilpasset søkemotor-ID variabel CX linje 28 i Python skriptkoden må erstattes med verdier som er spesifikke for Google-kontoen som brukes. Kjør Python-skriptet fra trinn 1.1.3. Opprett en ny versjon av hvert bilde fra matbildedatasettet ved å rotere det med 90 grader ved hjelp av CLoDSA-biblioteket.

Vær oppmerksom på at Python-skriptet som inneholder alle CLoDSA-kommandoene som brukes av forfatterne av denne artikkelen, finnes i en fil som er inkludert i tilleggsfilene under NutriNet understreker augmentation dot pi. Opprett en ny versjon av hvert bilde fra matbildedatasettet ved å rotere det med 180 grader ved hjelp av CLoDSA-biblioteket. Opprett en ny versjon av hvert bilde fra matbildedatasettet ved å rotere det med 270 grader ved hjelp av CLoDSA-biblioteket.

Opprett en ny versjon av hvert bilde fra matbildedatasettet ved å vende det horisontalt ved hjelp av CLoDSA-biblioteket. Opprett en ny versjon av hvert bilde fra matbildedatasettet ved å legge til tilfeldig fargestøy i det ved hjelp av CLoDSA-biblioteket. Opprett en ny versjon av hvert bilde fra matbildedatasettet ved å zoome inn i det med 25 % ved hjelp av CLoDSA-biblioteket.

Lagre bilder fra trinn 1.3.1 til 1.3.6 sammen med de opprinnelige bildene i et nytt datasett for matbilde. Totalt syv varianter per matbilde. Importer datasettet for matbilde fra trinn 1.3.7 til NVIDI-sifremiljøet, og del datasettet i undersett for opplæring, validering og testing.

Kopier og lim inn definisjonsteksten til NutriNet-arkitekturen i NVIDIA-sifre. Legg merke til at NutriNet arkitekturdefinisjonen finnes i tilleggsfilene under NutriNet dot proto TXT. Du kan eventuelt definere treningshyperparametere i NVIDIA-sifre eller bruke standardverdiene.

Hyper-parametrene som brukes av forfatterne av denne artikkelen kan bli funnet i en fil som er inkludert i tilleggsfilene under NutriNet understreker hyper-parametere dot proto TXT. Kjør treningen av NutriNet-modellen. Etter at treningen er fullført, ta den beste NutriNet-modellens iterasjon.

Denne modellen brukes deretter til å teste ytelsen til denne tilnærmingen. Vær oppmerksom på at det finnes flere måter å finne den beste modell iterasjonen på. Se artikkeltekstene for mer informasjon.

Få et datasett med falske matbilder. Merk at forfatterne av denne artikkelen mottok bilder av falsk mat som ble samlet inn i et laboratoriemiljø. Komnter hvert matbilde manuelt på pikselnivå.

Hver piksel i bildet må inneholde informasjon om hvilken matvareklasse den tilhører. Vær oppmerksom på at det er mange verktøy for å oppnå dette. Forfatterne av denne artikkelen brukte JavaScript-segmentets merknad.

Resultatet av dette trinnet er ett merknadsbilde for hvert bilde fra datasettet for matbilde, der hver piksel representerer en av matklassene. Utfør de samme trinnene som i del 1.3, men bare på bilder fra opplæringsdelsettet i datasettet for matbilde. Vær oppmerksom på at med unntak av trinn 1.3.5 må alle dataforstørrelsestrinn utføres på tilsvarende merknadsbilder også.

Utfør de samme trinnene som i del 1.4 med unntak av trinn 1.4.2. I stedet for dette trinnet utfører du trinn 2.3.2 og 2.3.3. Vær oppmerksom på at opplæring hyper-parametere som brukes av forfatterne av denne artikkelen kan bli funnet i filen som er inkludert i tilleggsfilene under FCN-8S understreker hyper-parametere dot proto TXT.

Kopier og lim inn definisjonsteksten til FCN-8S-arkitekturen i NVIDIA-sifre. Skriv inn de forhåndstrente FCN-8S-modellvektene i NVIDIA-sifrene. Vær oppmerksom på at disse modellvektene var forhåndsuttrent på datasettet Pascal visuelle objektklasser og finnes på Internett.

Last ned matbildedatasettet fra nettstedet Food Recognition Challenge. Utfør trinn 1.3.1 til 1.3.4. Vær oppmerksom på at Python-skriptet som inneholder alle CLoDSA-kommandoene som brukes av forfatterne av denne artikkelen, finnes i filen som er inkludert i tilleggsfilene under FRC, understreker augmentation dot pi.

Opprett en ny versjon av hvert bilde fra datasettet for matbilde ved å legge til gaussisk uskarphet i det ved hjelp av CLoDSA-biblioteket. Opprett en ny versjon av hvert bilde fra matbildedatasettet ved å skjerpe det ved hjelp av CLoDSA-biblioteket. Opprett en ny versjon av hvert bilde fra datasettet for matbilde ved å bruke gammakorrigering på det ved hjelp av CLoDSA-biblioteket.

Lagre bilder fra trinn 3.2.1 til 3.2.4 sammen med de opprinnelige bildene i et nytt datasett for matbilde. Totalt åtte varianter per matbilde. Lagre bilder fra trinn 3.2.2 til 3.2.4 sammen med de opprinnelige bildene i et nytt datasett for matbilde.

Totalt fire varianter per matbilde. Endre den eksisterende HTC ResNet 101-arkitekturdefinisjonen fra MM Detection-biblioteket slik at den godtar datasettene for matvarebilde fra trinn 3.1.1, 3.2.5 og 3.2.6. Du kan eventuelt endre HTC ResNet 101-arkitekturdefinisjonen fra trinn 3.3.1 for å definere hyperparametere for opplæring eller bruke standardverdiene.

Vær oppmerksom på at den endrede HTC ResNet 101-arkitekturdefinisjonen finnes i tilleggsfilene under HTC understrekingstegn ResNet 101 dot pi. Kjør opplæringen av HTC ResNet 101-modellen på matbildedatasettene fra trinn 3.1.1 ved hjelp av MM Detection-biblioteket. Når treningen fra trinn 3.3.3 er fullført, kan du ta den beste HTC ResNet 101-modell iterasjonen og finjustere den ved å kjøre neste fase av treningen på matbildedatasettet fra trinn 3.2.5.

Vær oppmerksom på at det finnes flere måter å finne den beste modell iterasjonen på. Se artikkeltekstene for mer informasjon. Dette er relevant for de neste trinnene også.

Når treningen fra trinn 3.3.4 er fullført, kan du ta den beste HTC ResNet 101-modell iterasjonen og finjustere den ved å kjøre neste fase av treningen på matbildedatasettet fra trinn 3.2.6. Når treningen fra trinn 3.3.5 er fullført, kan du ta den beste HTC ResNet 101-modell iterasjonen og finjustere den ved å kjøre neste fase av treningen på matbildedatasettet fra trinn 3.2.5. Når treningen fra trinn 3.3.6 er fullført, kan du ta den beste HTC ResNet 101-modell iterasjonen.

Denne modellen brukes deretter til å teste ytelsen til denne tilnærmingen. Vær oppmerksom på at trinn 3.3.3 til 3.3.7 ga de beste resultatene for formålene som er definert av forfatterne av denne artikkelen. Eksperimentering er nødvendig for hvert datasett for å finne den optimale sekvensen av trenings- og dataforstørrelsestrinn.

Etter å ha testet trendmodellen nutrinet oppnådd en klassifisering nøyaktighet på 86,72% på gjenkjenning datasettet, som var rundt 2% høyere enn AlexNet og litt høyere enn GoogLeNet, som var populære dype nevrale nettverksarkitekturer av den tiden. For å måle nøyaktigheten til FCN-8S falsk mat bilde segmentering modell, pixel nøyaktighet tiltaket ble brukt. Nøyaktigheten av den trente FCN-8S-modellen var 92,18 %Den ResNet-baserte løsningen for segmentering av matbilde ble evaluert ved hjelp av presisjonsmålet som er definert i Food Recognition Challenge.

Ved hjelp av dette tiltaket oppnådde togmodellen en gjennomsnittlig presisjon på 59,2%, som rangerte som nummer to i Food Recognition Challenge. De siste årene har dype nevrale nettverk blitt validert flere ganger som en passende løsning for å gjenkjenne matbilder. Vårt arbeid presentert i denne artikkelen tjener til å ytterligere bevise dette.

Den enkle utgangen mat bildegjenkjenning tilnærming er grei og kan brukes til enkle applikasjoner. Mens matbildesegmenteringstilnærmingen krever mer arbeid med å forberede kommenterte bilder, men det er mye mer aktuelt for virkelige bilder. I fremtiden vil vårt mål være å videre evaluere de utviklede prosedyrene på virkelige bilder.

Det første skrittet mot validering i den virkelige verden ble levert av Food Recognition Challenge, som inkluderte et datasett med matbilder fra den virkelige verden. Men det må jobbes videre for å validere denne tilnærmingen på matbilder fra hele verden og i samarbeid med ernæringsfysiologer.

Summary

Automatically generated

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

Related Videos

Read Article