L’obiettivo del lavoro presentato in questo articolo è quello di sviluppare una tecnologia per il riconoscimento automatizzato di prodotti alimentari e bevande da immagini scattate da dispositivi mobili. La tecnologia comprende due diversi approcci: il primo esegue il riconoscimento delle immagini alimentari mentre il secondo esegue la segmentazione delle immagini alimentari.
A causa dei problemi e dei costi associati agli approcci manuali di valutazione dietetica, sono necessarie soluzioni automatizzate per facilitare e accelerare il lavoro e aumentarne la qualità. Oggi, le soluzioni automatizzate sono in grado di registrare l’assunzione alimentare di una persona in un modo molto più semplice, ad esempio scattando un’immagine con una fotocamera per smartphone. In questo articolo, ci concentreremo su tali approcci basati su immagini alla valutazione dietetica. Per il problema del riconoscimento delle immagini alimentari, le reti neurali profonde hanno raggiunto lo stato dell’arte negli ultimi anni e presentiamo il nostro lavoro in questo campo. In particolare, descriviamo prima il metodo per il riconoscimento delle immagini di alimenti e bevande utilizzando un’architettura di rete neurale profonda, chiamata NutriNet. Questo metodo, come la maggior parte delle ricerche fatte nei primi giorni del riconoscimento delle immagini alimentari basato sul deep learning, è limitato a un output per immagine e quindi inadatto per immagini con più alimenti o bevande. Ecco perché gli approcci che eseguono la segmentazione delle immagini alimentari sono considerevolmente più robusti, in quanto sono in grado di identificare qualsiasi numero di alimenti o bevande nell’immagine. Presentiamo quindi anche due metodi per la segmentazione delle immagini alimentari: uno si basa su reti completamente convoluzionali (FCN) e l’altro su reti residue profonde (ResNet).
La valutazione dietetica è un passo cruciale per determinare le aree utilizzabili della dieta di un individuo. Tuttavia, l’esecuzione di una valutazione dietetica utilizzando approcci tradizionalmente manuali è associata a costi considerevoli. Questi approcci sono anche soggetti a errori in quanto spesso si basano sull’auto-segnalazione da parte dell’individuo. La valutazione dietetica automatizzata affronta questi problemi fornendo un modo più semplice per quantificare e qualificare l’assunzione di cibo. Tale approccio può anche alleviare alcuni degli errori presenti negli approcci manuali, come i pasti persi, l’incapacità di valutare con precisione il volume del cibo, ecc. Pertanto, ci sono chiari benefici nell’automatizzare la valutazione dietetica sviluppando soluzioni che identificano diversi alimenti e bevande e quantificano l’assunzione di cibo1. Queste soluzioni possono anche essere utilizzate per consentire una stima dei valori nutrizionali degli alimenti e delle bevande (d’ora in poi “prodotti alimentari”). Di conseguenza, la valutazione dietetica automatizzata è utile per molteplici applicazioni, dagli usi strettamente medici, come consentire ai dietologi di tracciare e analizzare in modo più semplice e accurato le diete dei loro pazienti, all’uso all’interno di app di benessere rivolte alla popolazione generale.
Riconoscere automaticamente gli alimenti dalle immagini è un problema di visione artificiale impegnativo. Ciò è dovuto al fatto che gli alimenti sono in genere oggetti deformabili e al fatto che una grande quantità di informazioni visive dell’alimento può essere persa durante la sua preparazione. Inoltre, diversi alimenti possono sembrare molto simili tra loro e lo stesso cibo può sembrare sostanzialmente diverso su più immagini2. Inoltre, l’accuratezza del riconoscimento dipende da molti altri fattori, come la qualità dell’immagine, se l’alimento è ostruito da un altro articolo, la distanza da cui è stata scattata l’immagine, ecc. Riconoscere gli articoli per bevande presenta la propria serie di sfide, la principale delle seguenti è la quantità limitata di informazioni visive disponibili in un’immagine. Queste informazioni potrebbero essere il colore della bevanda, il colore e la struttura del contenitore delle bevande e, in condizioni di immagine ottimali, la densità dellebevande 2.
Per riconoscere con successo gli alimenti dalle immagini, è necessario apprendere le caratteristiche di ogni classe di cibo e bevande. Questa procedura viene tradizionalmente eseguita utilizzando estrattori di funzionalitàdefiniti manualmente 3,4,5,6 che eseguono il riconoscimento in base a funzionalità di elemento specifiche come colore, trama, dimensioni e così via o una combinazione di queste funzionalità. Esempi di questi estrattori di funzionalità includono più kernel learning4, pairwise local features5 e bag-of-features modello6. A causa della complessità delle immagini alimentari, questi approcci hanno raggiunto principalmente una bassa precisione di classificazione – tra il 10% e il 40%3,4,5. La ragione di ciò è che l’approccio manuale non è abbastanza robusto da essere sufficientemente accurato. Poiché un alimento può variare in modo significativo nell’aspetto, non è possibile includere manualmente tutte queste varianze. Una maggiore precisione di classificazione può essere ottenuta con estrattori di funzionalità definiti manualmente quando il numero di classi alimentariè ridotto di 5o diverse funzionalità di immaginesono combinate 6, indicando così che è necessario trovare soluzioni più complesse a questo problema.
Questo è il motivo per cui il deep learning si è dimostrato così efficace per il problema del riconoscimento delle immagini alimentari. Il deep learning, o reti neurali profonde, è stato ispirato dal cervello biologico e consente ai modelli computazionali composti da più strati di elaborazione di apprendere automaticamente le funzionalità attraverso l’allenamento su una serie di immagini di input7,8. Per questo motivo, il deep learning ha notevolmente migliorato lo stato dell’arte in una varietà di campi diricerca 7, con visione artificiale e successivamente riconoscimento delle immagini alimentari, essendo uno di questi2.
In particolare, le reti neurali convoluzionali profonde (DCNN) sono più popolari per il riconoscimento delle immagini alimentari – queste reti sono ispirate al sistema visivo degli animali, dove i singoli neuroni cercano di acquisire una comprensione dell’input visivo reagendo alle regioni sovrapposte nel campo visivo9. Una rete neurale convoluzionale prende l’immagine di input ed esegue una serie di operazioni in ciascuno dei livelli di rete, i più comuni dei quali sono livelli convoluzionali, completamente connessi e di pooling. I livelli convoluzionali contengono filtri apprendibili che rispondono a determinate funzionalità nei dati di input, mentre i livelli completamente connessi compongono i dati di output da altri livelli per ottenere conoscenze di livello superiore da esso. L’obiettivo del pooling dei livelli è quello di campionare i dati di input2. Esistono due approcci all’utilizzo di modelli di deep learning che si sono rivelati popolari: prendere una definizione di rete neurale profondaesistente 10,11, definita architettura di deep learning in questo articolo o definire una nuova architettura di deep learning12,13e training di uno di questi su un set di dati di immagini alimentari. Ci sono punti di forza e di debolezza in entrambi gli approcci: quando si utilizza un’architettura di deep learning esistente, è possibile scegliere un’architettura che ha funzionato bene per altri problemi e perfezionare il problema desiderato, risparmiando così tempo e garantendo che sia stata scelta un’architettura convalidata. Definire una nuova architettura di deep learning, d’altra parte, richiede più tempo, ma consente lo sviluppo di architetture che sono specificamente fatte per tenere conto delle specifiche di un problema e quindi teoricamente funzionare meglio per quel problema.
In questo articolo, presentiamo entrambi gli approcci. Per il problema del riconoscimento delle immagini alimentari, abbiamo sviluppato una nuova architettura DCNN chiamata NutriNet2, che è una modifica della nota architettura AlexNet14. Ci sono due differenze principali rispetto ad AlexNet: NutriNet accetta immagini da 512×512 pixel come input (rispetto alle immagini da 256×256 pixel per AlexNet) e NutriNet ha un livello convoluzionale aggiuntivo all’inizio della rete neurale. Queste due modifiche sono state introdotte al fine di estrarre il più possibile le informazioni dalle immagini del set di dati di riconoscimento. Avere immagini a risoluzione più elevata significava che c’erano più informazioni presenti sulle immagini e avere più livelli convoluzionali significava che ulteriori conoscenze potevano essere estratte dalle immagini. Rispetto ai circa 60 milioni di parametri di AlexNet, NutriNet contiene meno parametri: circa 33 milioni. Ciò è dovuto alla differenza di dimensionalità nel primo livello completamente connesso causata dal livello convoluzionale aggiuntivo2. La figura 1 contiene un diagramma dell’architettura NutriNet. Le immagini alimentari utilizzate per addestrare il modello NutriNet sono state raccolte da Internet – la procedura è descritta nel testo del protocollo.
Per il problema della segmentazione delle immagini alimentari, abbiamo utilizzato due diverse architetture esistenti: reti completamente convoluzionali (FCN)15 e reti residue profonde (ResNet)16,che rappresentavano entrambe lo stato dell’arte per la segmentazione delle immagini quando le abbiamo utilizzate per sviluppare le rispettive soluzioni di segmentazione delle immagini alimentari. Ci sono più varianti FCN che sono state introdotte da Long et al.: FCN-32s, FCN-16s e FCN-8s15. FCN-32s emette una mappa pixel in base alle previsioni del livello finale della FCN, mentre la variante FCN-16s combina queste previsioni con quelle di un livello precedente. FCN-8s considera le previsioni di un altro strato ed è quindi in grado di fare previsioni al grano più fine, motivo per cui è adatto per il riconoscimento delle immagini alimentari. Gli FCN-8 che abbiamo usato sono stati pre-addestrati sul set di dati PASCAL Visual Object Classes (PASCAL VOC)17 e addestrati e testati su immagini di repliche di cibo (d’ora in poi “cibo falso”)18 a causa della loro somiglianza visiva con il cibo reale e a causa della mancanza di immagini annotate di cibo reale a livello di pixel. Il cibo falso viene utilizzato in diversi studi comportamentali e le immagini vengono prese per tutti i piatti di tutti i partecipanti allo studio. Poiché i contenuti alimentari di queste immagini sono noti, rende il set di dati dell’immagine utile per il training del modello di deep learning. I passaggi di elaborazione del set di dati sono descritti nel testo del protocollo.
La soluzione basata su ResNet è stata sviluppata nell’ambito del Food Recognition Challenge (FRC)19. Utilizza il metodo Hybrid Task Cascade (HTC)20 con una dorsale ResNet-10116. Si tratta di un approccio all’avanguardia per il problema della segmentazione delle immagini che può utilizzare diversi estrattori di funzionalità o dorsali. Abbiamo preso in considerazione anche altre reti backbone, in particolare altre varianti ResNet come ResNet-5016, ma ResNet-101 era il più adatto per la sua profondità e capacità di rappresentare le immagini di input in modo abbastanza complesso. Il set di dati utilizzato per il training del modello HTC ResNet-101 era il set di dati FRC con immagini aumentate aggiunte. Questi aumenti sono presentati nel testo del protocollo.
Questo articolo è inteso come una risorsa per gli esperti di machine learning alla ricerca di informazioni su quali architetture di deep learning e passaggi di aumento dei dati funzionano bene per i problemi di riconoscimento e segmentazione delle immagini alimentari, nonché per i ricercatori di nutrizione che cercano di utilizzare il nostro approccio per automatizzare il riconoscimento delle immagini alimentari da utilizzare nella valutazione dietetica. Nei paragrafi seguenti vengono presentate soluzioni di deep learning e set di dati dal campo del riconoscimento delle immagini alimentari. Nel testo del protocollo, dettagliamo come ciascuno dei tre approcci è stato utilizzato per addestrare modelli di rete neurale profonda che possono essere utilizzati per la valutazione dietetica automatizzata. Inoltre, ogni sezione del protocollo contiene una descrizione di come sono stati acquisiti ed elaborati i set di dati delle immagini alimentari utilizzati per il training e il test.
I DCN hanno generalmente ottenuto risultati sostanzialmente migliori rispetto ad altri metodi per il riconoscimento e la segmentazione delle immagini alimentari, motivo per cui la stragrande maggioranza delle recenti ricerche sul campo si basa su queste reti. ha utilizzato DCNN per integrare gli approcci manuali21 e ha raggiunto una precisione di classificazione del 72,26% sul set di dati UEC-FOOD10022. li ha utilizzati esclusivamente per ottenere una maggiore precisione dell’84,90% su un set di dati auto-acquisito23. ha sviluppato DeepFoodCam – un’app per smartphone per il riconoscimento delle immagini alimentari che utilizza DCNN24. ha presentato un sistema che esegue una valutazione dietetica basata sull’Internet of Things utilizzando DCNN25. ha introdotto un approccio basato su DCNN che sfrutta le specifiche delle immagini alimentari26 e ha riportato una precisione del 90,27% sul set di dati Food-10127. autore di una revisione delle soluzioni di deep learning nel settore alimentare28.
Recentemente, Zhao et al. Questo approccio utilizza una rete “studentesca” più piccola che impara da una rete più ampia di “insegnanti”. Con esso, sono riusciti a raggiungere una precisione dell’84% sull’UEC-FOOD25630 e una precisione del 91,2% sul set di dati Food-10127. hafiz et al. ha descritto un nuovo metodo per rilevare le regioni delle lastre nelle immagini alimentari senza l’uso di annotazioni in pixel32. ha introdotto un nuovo set di dati contenente prodotti alimentari provenienti da 20 diverse classi alimentari in 11 stati diversi (solido, affettato, pasta cremosa, ecc.) e ha presentato il loro approccio per modelli di riconoscimento della formazione in grado di riconoscere lo stato alimentare, oltre alla classealimentare 33. ha valutato le soluzioni di riconoscimento delle immagini alimentari per dispositivi mobili34. Infine, Furtado et al. Gli autori hanno notato che con un piccolo numero di classi alimentari, i DCNN funzionano bene, ma su un set di dati con centinaia di classi, l’accuratezza del riconoscimento umano è superiore a35, evidenziando la complessità del problema.
Nonostante i suoi risultati all’avanguardia, il deep learning ha un grosso inconveniente: richiede un set di dati di input di grandi dimensioni su cui addestrare il modello. Nel caso del riconoscimento delle immagini alimentari, è necessario un set di dati di immagini alimentari di grandi dimensioni e questo set di dati deve includere il maggior numero possibile di scenari del mondo reale diversi. In pratica ciò significa che per ogni singolo alimento o bevanda è necessaria una vasta raccolta di immagini e il maggior numero possibile di elementi diversi deve essere presente nel set di dati. Se nel set di dati non sono disponibili immagini sufficienti per un elemento specifico, è improbabile che tale elemento venga riconosciuto correttamente. D’altra parte, se solo un piccolo numero di elementi è coperto dal set di dati, la soluzione avrà un ambito limitato e sarà in grado di riconoscere solo una manciata di cibi e bevande diversi.
In passato sono stati resi disponibili più set di dati. Il Pittsburgh Fast-Food Image Dataset (PFID)3 è stato introdotto per incoraggiare ulteriori ricerche nel campo del riconoscimento delle immagini alimentari. L’Università di Elettro-Comunicazioni Alimentari 100 (UEC-FOOD100)22 e l’Università di Electro-Communications Food 256 (UEC-FOOD256)30 dataset contengono piatti giapponesi, ampliati con alcuni piatti internazionali nel caso del set di dati UEC-FOOD256. Il set di dati Food-101 contiene piatti popolari acquisiti da un sitoWeb 27. I set di datiFood-50 36 e Video Retrieval Group Food 172 (VireoFood-172)37 sono raccolte cinesi di immagini alimentari. Il dataset dell’Università degli Studi di Milano-Bicocca 2016 (UNIMIB2016) è composto da immagini di vassoi alimentari provenienti da una mensaitaliana 38. Recipe1M è un set di dati su larga scala di ricette di cucina e immagini dicibo 39. Il set di dati Food-47540 raccoglie quattro set di dati di immagini alimentari pubblicati inprecedenza 27,30,36,37 in uno. La Beijing Technology and Business University Food 60 (BTBUFood-60) è un set di dati di immagini destinato al rilevamento dialimenti 41. Recentemente, è stato reso disponibile il set di dati ISIA Food-50042 di varie immagini alimentari. Rispetto ad altri set di dati di immagini alimentari disponibili al pubblico, contiene un gran numero di immagini, suddivise in 500 classi di cibo, ed è destinato a promuovere lo sviluppo di soluzioni multimediali di riconoscimento alimentare42.
Negli ultimi anni, le reti neurali profonde sono state convalidate più volte come soluzione adatta per riconoscere le immaginialimentari 10,11,12,21,23,25,26,29,31,33. Il nostro lavoro presentato in questo articolo serve a dimostrare ulteriormente questo1,2. L’approccio di riconoscimento delle immagini alimentari a singolo output è semplice e può essere utilizzato per semplici applicazioni in cui sono previste immagini con un solo alimento o bevanda2.
L’approccio di segmentazione delle immagini alimentari sembra particolarmente adatto per riconoscere le immagini degli alimenti in generale, senza alcuna restrizione sul numero di prodotti alimentari1. Poiché funziona classificando ogni singolo pixel dell’immagine, è in grado non solo di riconoscere un numero qualsiasi di alimenti nell’immagine, ma anche di specificare dove si trova un alimento, nonché quanto è grande. Quest’ultimo può quindi essere utilizzato per eseguire la stima del peso alimentare, in particolare se utilizzato con un oggetto di riferimento o una telecamera a distanza fissa.
C’è stato un lavoro fatto per quanto riguarda la disponibilità di set di dati di immagini alimentari3,22,27,30, 36,37,38,39,40,41,42, e speriamo che in futuro si farà di più, in particolare quando si tratta di aggregare set di dati di immagini alimentari provenienti da diverse regioni del mondo, il che consentirebbe di sviluppare soluzioni più robuste. Attualmente, l’accuratezza delle soluzioni automatiche di riconoscimento delle immagini alimentari non ha ancora raggiunto l’accuratezza a livelloumano 35, e questo è probabilmente in gran parte dovuto all’uso di set di dati di immagini alimentari di dimensioni e qualità insufficienti.
In futuro, il nostro obiettivo sarà quello di valutare ulteriormente le procedure sviluppate sulle immagini del mondo reale. In generale, i set di dati in questo campo contengono spesso immagini scattate in ambienti controllati o immagini ottimizzate manualmente per il riconoscimento. Ecco perché è importante raccogliere un set di dati di immagini alimentari del mondo reale ampio e diversificato per includere tutti i diversi prodotti alimentari e bevande che gli individui potrebbero voler riconoscere. Il primo passo in questa direzione è stato fornito dal Food Recognition Challenge, che includeva un set di dati di immagini alimentari del mondo reale19, ma è necessario lavorare ulteriormente per convalidare questo approccio sulle immagini alimentari provenienti da tutto il mondo e in collaborazione con dietologi.
The authors have nothing to disclose.
Gli autori ringraziano Tamara Bucher dell’Università di Newcastle, in Australia, per aver fornito il set di dati sulle immagini di cibo falso. Questo lavoro è stato supportato dai programmi di ricerca e innovazione Horizon 2020 dell’Unione Europea (numeri di sovvenzione 863059 – FNS-Cloud, 769661 – SAAM); e l’Agenzia slovena per la ricerca (numero di sovvenzione P2-0098). L’Unione europea e l’Agenzia slovena per la ricerca non hanno avuto alcun ruolo nella progettazione, nell’analisi o nella stesura di questo articolo.
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 |