Summary

Réseaux neuronaux profonds pour l’évaluation alimentaire basée sur l’image

Published: March 13, 2021
doi:

Summary

L’objectif des travaux présentés dans cet article est de développer une technologie de reconnaissance automatisée des aliments et des boissons à partir d’images prises par des appareils mobiles. La technologie comprend deux approches différentes – la première effectue la reconnaissance de l’image alimentaire tandis que la seconde effectue la segmentation de l’image alimentaire.

Abstract

En raison des problèmes et des coûts associés aux approches manuelles d’évaluation diététique, des solutions automatisées sont nécessaires pour faciliter et accélérer le travail et augmenter sa qualité. Aujourd’hui, les solutions automatisées sont en mesure d’enregistrer l’apport alimentaire d’une personne d’une manière beaucoup plus simple, par exemple en prenant une image avec un appareil photo smartphone. Dans cet article, nous nous concentrerons sur de telles approches basées sur l’image de l’évaluation alimentaire. Pour le problème de la reconnaissance de l’image alimentaire, les réseaux neuronaux profonds ont atteint l’état de l’art ces dernières années, et nous présentons notre travail dans ce domaine. En particulier, nous décrivons d’abord la méthode de reconnaissance de l’image des aliments et des boissons à l’aide d’une architecture réseau neuronale profonde, appelée NutriNet. Cette méthode, comme la plupart des recherches effectuées dans les premiers jours de la reconnaissance de l’image alimentaire basée sur l’apprentissage profond, est limitée à une sortie par image, et donc impropre aux images avec plusieurs aliments ou boissons. C’est pourquoi les approches qui effectuent la segmentation de l’image des aliments sont beaucoup plus robustes, car elles sont en mesure d’identifier n’importe quel nombre d’aliments ou de boissons dans l’image. Nous présentons donc également deux méthodes de segmentation de l’image alimentaire – l’une est basée sur des réseaux entièrement convolutionnels (FCN), et l’autre sur des réseaux résiduels profonds (ResNet).

Introduction

L’évaluation alimentaire est une étape cruciale dans la détermination des zones actionnables de l’alimentation d’une personne. Toutefois, l’évaluation alimentaire à l’aide d’approches traditionnellement manuelles est associée à des coûts considérables. Ces approches sont également sujettes à des erreurs car elles reposent souvent sur l’auto-déclaration de l’individu. L’évaluation alimentaire automatisée aborde ces questions en fournissant un moyen plus simple de quantifier et de qualifier l’apport alimentaire. Une telle approche peut également atténuer certaines des erreurs présentes dans les approches manuelles, telles que les repas manqués, l’incapacité d’évaluer avec précision le volume des aliments, etc. Par conséquent, il y a des avantages évidents à automatiser l’évaluation alimentaire en développant des solutions qui identifient différents aliments et boissons et quantifient l’apportalimentaire 1. Ces solutions peuvent également être utilisées pour permettre une estimation des valeurs nutritionnelles des aliments et des boissons (désormais des « aliments »). Par conséquent, l’évaluation alimentaire automatisée est utile pour de multiples applications – des utilisations strictement médicales, telles que permettre aux diététistes de suivre et d’analyser plus facilement et avec précision le régime alimentaire de leurs patients, à l’utilisation à l’intérieur d’applications de bien-être destinées à la population en général.

Reconnaître automatiquement les aliments à partir d’images est un problème de vision par ordinateur difficile. Cela est dû au fait que les aliments sont généralement des objets déformables, et en raison du fait qu’une grande quantité de l’information visuelle de l’aliment peut être perdue au cours de sa préparation. En outre, différents aliments peuvent sembler très similaires les uns aux autres, et la même nourriture peut sembler être sensiblement différente sur plusieurs images2. En outre, l’exactitude de la reconnaissance dépend de beaucoup plus de facteurs, tels que la qualité de l’image, si l’aliment est obstrué par un autre élément, la distance à partir de laquelle l’image a été prise, etc. La reconnaissance des boissons présente son propre ensemble de défis, le principal étant la quantité limitée d’informations visuelles disponibles dans une image. Cette information pourrait être la couleur de boisson, la couleur et la structure de récipient de boisson, et, dans des conditions optimales d’image, la densité deboisson 2.

Pour reconnaître avec succès les aliments à partir d’images, il est nécessaire d’apprendre les caractéristiques de chaque classe d’aliments et de boissons. Cela a été traditionnellement fait en utilisant des extracteurs de fonctionnalitésdéfinis manuellement 3,4,5,6 qui effectuent la reconnaissance basée sur des caractéristiques spécifiques de l’élément comme la couleur, la texture, la taille, etc, ou une combinaison de ces caractéristiques. Des exemples de ces extracteurs de fonctionnalités incluent l’apprentissage de noyau multiple4,les caractéristiques locales pairwise5 et le modèle de sac-de-dispositifs6. En raison de la complexité des images alimentaires, ces approches ont surtout atteint une faible précision de classification – entre 10% et 40%3,4,5. La raison en est que l’approche manuelle n’est pas suffisamment robuste pour être suffisamment précise. Étant donné qu’un aliment peut varier considérablement en apparence, il n’est pas possible d’englober tous ces écarts manuellement. Une plus grande précision de classification peut être obtenue avec des extracteurs de fonctionnalités définis manuellement lorsque soit le nombre de classes alimentairesest réduit de 5,soit différentes caractéristiques d’imagesont combinées 6, ce qui indique qu’il est nécessaire de trouver des solutions plus complexes à ce problème.

C’est pourquoi l’apprentissage profond s’est avéré si efficace pour le problème de reconnaissance de l’image alimentaire. L’apprentissage profond, ou réseaux neuronaux profonds, a été inspiré par les cerveaux biologiques, et permet aux modèles informatiques composés de plusieurs couches de traitement d’apprendre automatiquement des fonctionnalités grâce à la formation sur un ensemble d’imagesd’entrée 7,8. Pour cette raison, l’apprentissage profond a considérablement amélioré l’état de l’art dans une variété de domaines derecherche 7, avec la vision par ordinateur, et par la suite la reconnaissance de l’image alimentaire, étant l’und’eux 2.

En particulier, les réseaux neuronaux convolutionnels profonds (DCNN) sont les plus populaires pour la reconnaissance de l’image alimentaire – ces réseaux sont inspirés par le système visuel des animaux, où les neurones individuels tentent de comprendre l’entrée visuelle en réagissant aux régions qui se chevauchent dans le champ visuel9. Un réseau neuronal convolutionnel prend l’image d’entrée et effectue une série d’opérations dans chacune des couches réseau, dont les plus courantes sont des couches convolutionnelles, entièrement connectées et de mise en commun. Les couches convolutionnelles contiennent des filtres learnables qui répondent à certaines fonctionnalités des données d’entrée, tandis que les couches entièrement connectées composent des données de sortie provenant d’autres couches pour en tirer des connaissances de plus haut niveau. L’objectif de la mise en commun des couches est de réduire l’échantillon des donnéesd’entrée 2. Il existe deux approches pour utiliser des modèles d’apprentissage profond qui se sont avérés populaires: prendre une définition existante réseau neuronalprofond 10,11, appelé une architecture d’apprentissage profond dans cet article, ou la définition d’une nouvelle architecture d’apprentissageprofond 12,13, et la formation soit l’un d’eux sur un ensemble de données d’image alimentaire. Il y a des forces et des faiblesses dans les deux approches – lors de l’utilisation d’une architecture d’apprentissage profond existante, une architecture qui a bien fonctionné pour d’autres problèmes peut être choisie et affinée pour le problème souhaité, ce qui permet de gagner du temps et de s’assurer qu’une architecture validée a été choisie. La définition d’une nouvelle architecture d’apprentissage profond, d’autre part, est plus longue, mais permet le développement d’architectures qui sont spécifiquement faites pour prendre en compte les spécificités d’un problème et donc théoriquement mieux performer pour ce problème.

Dans cet article, nous présentons les deux approches. Pour le problème de reconnaissance de l’image alimentaire, nous avons développé une nouvelle architecture DCNN appelée NutriNet2, qui est une modification de la célèbre architecture AlexNet14. Il y a deux différences principales par rapport à AlexNet : NutriNet accepte les images de 512×512 pixels comme entrée (par opposition aux images de 256×256 pixels pour AlexNet), et NutriNet a une couche convolutionnelle supplémentaire au début du réseau neuronal. Ces deux modifications ont été introduites afin d’extraire autant d’informations que possible des images du jeu de données de reconnaissance. Le fait d’avoir des images à résolution plus élevée signifiait qu’il y avait plus d’informations présentes sur les images et qu’avoir plus de couches convolutionnelles signifiait que des connaissances supplémentaires pouvaient être extraites des images. Par rapport aux quelque 60 millions de paramètres d’AlexNet, NutriNet contient moins de paramètres : environ 33 millions. C’est en raison de la différence de dimensionnalité à la première couche entièrement connectée causée par la couche convolutionnelle supplémentaire2. La figure 1 contient un diagramme de l’architecture NutriNet. Les images alimentaires qui ont été utilisées pour former le modèle NutriNet ont été recueillies à partir d’Internet – la procédure est décrite dans le texte du protocole.

Pour le problème de segmentation de l’image alimentaire, nous avons utilisé deux architectures existantes différentes : les réseaux entièrement convolutionnels (FCN)15 et les réseaux résiduels profonds (ResNet)16, qui représentaient tous deux l’état de l’art pour la segmentation de l’image lorsque nous les avons utilisés pour développer leurs solutions respectives de segmentation de l’image alimentaire. Il existe plusieurs variantes FCN qui ont été introduites par Long et coll.: FCN-32s, FCN-16s et FCN-8s15. FCN-32s produit une carte pixel basée sur les prédictions de la dernière couche du FCN, tandis que la variante FCN-16 combine ces prédictions avec celles d’une couche antérieure. FCN-8s prend en compte les prédictions d’une autre couche et est donc capable de faire des prédictions au meilleur grain, c’est pourquoi il convient à la reconnaissance de l’image alimentaire. Les FCN-8 que nous avons utilisés ont été pré-formés sur l’ensemble de données PASCAL Visual Object Classes (PASCAL VOC)17 et formés et testés sur des images de répliques alimentaires (désormais des « faux aliments »)18 en raison de leur ressemblance visuelle avec la nourriture réelle et en raison d’un manque d’images annotées de la nourriture réelle au niveau pixel. Les aliments contrefaits sont utilisés dans différentes études comportementales et des images sont prises pour tous les plats de tous les participants à l’étude. Étant donné que le contenu alimentaire de ces images est connu, il rend l’ensemble de données d’image utile pour la formation des modèles d’apprentissage profond. Les étapes de traitement des ensembles de données sont décrites dans le texte du protocole.

La solution resNet a été développée dans le cadre du Food Recognition Challenge (FRC)19. Il utilise la méthode Hybrid Task Cascade (HTC)20 avec une colonne vertébrale ResNet-10116. Il s’agit d’une approche de pointe pour le problème de segmentation d’image qui peut utiliser différents extracteurs de fonctionnalités, ou épines dorsales. Nous avons également examiné d’autres réseaux épines dorsales, en particulier d’autres variantes resNet telles que ResNet-5016, mais ResNet-101 était le plus approprié en raison de sa profondeur et de sa capacité à représenter les images d’entrée d’une manière suffisamment complexe. L’ensemble de données utilisé pour la formation du modèle HTC ResNet-101 était l’ensemble de données FRC avec des images augmentées ajoutées. Ces augmentations sont présentées dans le texte du protocole.

Cet article est conçu comme une ressource pour les experts en apprentissage automatique à la recherche d’informations sur les architectures d’apprentissage profond et les étapes d’augmentation des données qui fonctionnent bien pour les problèmes de reconnaissance et de segmentation de l’image alimentaire, ainsi que pour les chercheurs en nutrition qui cherchent à utiliser notre approche pour automatiser la reconnaissance de l’image alimentaire pour une utilisation dans l’évaluation alimentaire. Dans les paragraphes ci-dessous, des solutions d’apprentissage profond et des ensembles de données provenant du domaine de la reconnaissance de l’image alimentaire sont présentés. Dans le texte du protocole, nous détaillons comment chacune des trois approches a été utilisée pour former des modèles de réseau neuronal profond qui peuvent être utilisés pour l’évaluation alimentaire automatisée. En outre, chaque section du protocole contient une description de la façon dont les ensembles de données sur l’image des aliments utilisés pour la formation et les tests ont été acquis et traités.

Les DCNN ont généralement obtenu des résultats nettement meilleurs que d’autres méthodes de reconnaissance et de segmentation de l’image alimentaire, c’est pourquoi la grande majorité des recherches récentes dans le domaine sont basées sur ces réseaux. Kawano et coll. ont utilisé les DCNN pour compléter les approchesmanuelles 21 et ont obtenu une précision de classification de 72,26 % sur l’ensemble de données UEC-FOOD10022. Christodoulidis et coll. les ont utilisés exclusivement pour atteindre une précision plus élevée de 84,90 % sur un ensemble de données auto-acquis23. Tanno et coll. ont développé DeepFoodCam – une application pour smartphone pour la reconnaissance de l’image alimentaire qui utilise DCNNs24. Liu et coll. ont présenté un système qui effectue une évaluation alimentaire fondée sur l’Internet des objets à l’aide de DCNN25. Martinel et coll. ont introduit une approche basée sur le DCNN qui exploite les spécificités des imagesalimentaires 26 et a rapporté une précision de 90,27 % sur l’ensemble de données Food-10127. Zhou et coll. sont l’auteur d’un examen des solutions d’apprentissage profond dans le domainealimentaire 28.

Récemment, Zhao et coll. ont proposé un réseau spécifiquement pour la reconnaissance de l’image alimentaire dans les applicationsmobiles 29. Cette approche utilise un réseau « étudiant » plus petit qui apprend d’un réseau plus vaste d’enseignants. Avec elle, ils ont réussi à atteindre une précision de 84% sur l’UEC-FOOD25630 et une précision de 91,2% sur l’ensemble de données Food-10127. Hafiz et coll. ont utilisé les DCNN pour développer une solution de reconnaissance d’image uniquement pour les boissons et ont signalé une très grande précision de 98,51% 31. Shimoda et coll. ont décrit une nouvelle méthode pour détecter les régions des plaques dans les images alimentaires sans l’utilisation de l’annotation pixel-sage32. Ciocca et coll. ont introduit un nouvel ensemble de données contenant des aliments provenant de 20 classes alimentaires différentes dans 11 États différents (pâte solide, tranchée, crémeuse, etc.) et ont présenté leur approche pour la formation de modèles de reconnaissance capables de reconnaître l’état alimentaire, en plus de la classealimentaire 33. Knez et coll. ont évalué les solutions de reconnaissance de l’image alimentaire pour lesappareils mobiles 34. Enfin, Furtado et coll. ont mené une étude sur la façon dont le système visuel humain se compare aux performances des DCNN et ont constaté que la reconnaissance humaine surpasse toujours les DCN avec une précision de 80 % contre 74,5 %35. Les auteurs ont noté qu’avec un petit nombre de classes alimentaires, les DCNN fonctionnent bien, mais sur un ensemble de données avec des centaines de classes, la précision de reconnaissancehumaine est plus élevée 35, soulignant la complexité du problème.

Malgré ses résultats à la fine pointe de la technologie, l’apprentissage profond présente un inconvénient majeur : il nécessite un vaste ensemble de données d’entrée pour former le modèle. Dans le cas de la reconnaissance de l’image alimentaire, un grand ensemble de données sur l’image alimentaire est nécessaire, et cet ensemble de données doit englober autant de scénarios réels différents que possible. Dans la pratique, cela signifie que pour chaque aliment ou boisson, une grande collection d’images est nécessaire, et autant d’éléments différents que possible doivent être présents dans l’ensemble de données. S’il n’y a pas suffisamment d’images pour un élément spécifique dans l’ensemble de données, il est peu probable que cet élément soit reconnu avec succès. D’autre part, si seulement un petit nombre d’articles est couvert par l’ensemble de données, la solution sera limitée dans la portée, et seulement en mesure de reconnaître une poignée d’aliments et de boissons différents.

Plusieurs ensembles de données ont été mis à disposition dans le passé. Le Pittsburgh Fast-Food Image Dataset (PFID)3 a été introduit pour encourager davantage de recherche dans le domaine de la reconnaissance de l’image alimentaire. L’University of Electro-Communications Food 100 (UEC-FOOD100)22 et l’University of Electro-Communications Food 256 (UEC-FOOD256)30 ensembles de données contiennent des plats japonais, élargis avec certains plats internationaux dans le cas de l’ensemble de données UEC-FOOD256. L’ensemble de données Food-101 contient des plats populaires acquis à partir d’unsite Web 27. Les ensembles de données Food-5036 et Video Retrieval Group Food 172 (VireoFood-172)37 sont des collections chinoises d’images alimentaires. L’ensemble de données 2016 de l’Université de Milano-Bicocca (UNIMIB2016) est composé d’images de plateaux alimentaires provenant d’une cantineitalienne 38. Recipe1M est un ensemble de données à grande échelle de recettes de cuisine et d’images alimentaires39. L’ensemble de données Food-47540 recueille quatre ensembles de données d’image alimentaireprécédemment publiés 27,30,36,37 en un seul. Le Beijing Technology and Business University Food 60 (BTBUFood-60) est un ensemble de données d’images destinées à la détection des aliments41. Récemment, l’ensemble de données ISIA Food-50042 d’images alimentaires diverses a été mis à disposition. Par rapport à d’autres ensembles de données sur l’image alimentaire accessibles au public, il contient un grand nombre d’images, divisées en 500 classes alimentaires, et vise à faire progresser le développement de solutions multimédias de reconnaissancealimentaire 42.

Protocol

1. Reconnaissance de l’image alimentaire avec NutriNet Obtention de l’ensemble de données sur l’image alimentaire Rassemblez une liste des différents aliments et boissons qui seront les sorties du modèle de reconnaissance de l’image alimentaire. Une liste variée d’aliments et de boissons populaires est préférable, car cela permettra la formation d’un modèle robuste de reconnaissance de l’image des aliments. Enregistrez la liste des aliments et des boissons dans un fichier texte (p. ex., « txt » ou « csv »).REMARQUE: Le fichier texte utilisé par les auteurs de cet article peut être trouvé dans les fichiers supplémentaires (‘food_items.txt’) et comprend une liste de 520 produits alimentaires slovènes. Écrivez ou téléchargez un script Python43 qui utilise l’API de recherchepersonnalisée Google 44 pour télécharger des images de chaque aliment de la liste et les enregistre dans un dossier distinct pour chaque aliment.REMARQUE : Le script Python utilisé par les auteurs de cet article se trouve dans les fichiers supplémentaires (« download_images.py »). Si ce script est utilisé, la clé développeur (variable ‘developerKey’, ligne 8 dans le code de script Python) et l’ID personnalisé du moteur de recherche (variable ‘cx’, ligne 28 dans le code de script Python) doivent être remplacés par des valeurs spécifiques au compte Google utilisés. Exécutez le script Python à partir de l’étape 1.1.3 (par exemple, avec la commande : « python download_images.py »). (Facultatif) Nettoyage de l’ensemble de données sur l’image des aliments Former un modèle de détection d’image alimentaire de la même manière qu’à la section 1.4, sauf utiliser seulement deux sorties (aliments, non alimentaires) par opposition à la liste des extrants de l’étape 1.1.1.REMARQUE : Les auteurs de cet article ont utilisé des images combinées à partir de sites Web de recettes et de l’ensemble de données ImageNet45 pour former le modèle de détection d’image alimentaire. Étant donné que l’accent est mis ici sur la reconnaissance de l’image alimentaire et qu’il s’agit d’une étape facultative pour le nettoyage de l’ensemble de données de reconnaissance, d’autres détails sont omis. Au lieu de cela, plus de détails sur cette approche peuvent être trouvés dans Mezgec et coll.2. Exécutez le modèle de détection à partir de l’étape 1.2.1 sur l’ensemble de données d’image alimentaire qui est le résultat de l’étape 1.1.4. Supprimez chaque image qui a été étiquetée comme non alimentaire par le modèle de détection de l’étape 1.2.1. Vérifiez manuellement l’ensemble de données d’image alimentaire pour d’autres images erronées ou de mauvaise qualité, et pour les doublons d’image. Supprimez les images trouvées à l’étape 1.2.4. Augmentation de l’ensemble de données sur l’image des aliments Créez une nouvelle version de chaque image à partir de l’ensemble de données de l’image alimentaire en la faisant pivoter de 90° à l’aide de la bibliothèque CLoDSA46 (lignes 19 à 21 dans le script Python inclus).REMARQUE : Le script Python contenant toutes les commandes CLoDSA utilisées par les auteurs de cet article se trouve dans un fichier inclus dans les fichiers supplémentaires (« nutrinet_augmentation.py »). Si ce script est utilisé, le chemin d’entrée (variable ‘INPUT_PATH’, ligne 8 dans le code de script Python) et le chemin de sortie (variable ‘OUTPUT_PATH’, ligne 11 dans le code de script Python) doivent être remplacés par des chemins vers les dossiers désirés. Créez une nouvelle version de chaque image à partir de l’ensemble de données de l’image alimentaire en la faisant pivoter à 180° à l’aide de la bibliothèque CLoDSA (lignes 19 à 21 dans le script Python inclus). Créez une nouvelle version de chaque image à partir de l’ensemble de données de l’image alimentaire en la faisant pivoter à 270° à l’aide de la bibliothèque CLoDSA (lignes 19 à 21 dans le script Python inclus). Créez une nouvelle version de chaque image à partir de l’ensemble de données de l’image alimentaire en la renversant horizontalement à l’aide de la bibliothèque CLoDSA (lignes 23 et 24 dans le script Python inclus). Créez une nouvelle version de chaque image à partir de l’ensemble de données de l’image alimentaire en y ajoutant du bruit de couleur aléatoire à l’aide de la bibliothèque CLoDSA (lignes 26 et 27 dans le script Python inclus). Créez une nouvelle version de chaque image à partir de l’ensemble de données de l’image alimentaire en zoomant dessus de 25 % à l’aide de la bibliothèque CLoDSA (lignes 29 et 30 dans le script Python inclus). Enregistrez des images des étapes 1.3.1-1.3.6, ainsi que des images originales (lignes 16 et 17 dans le script Python inclus), dans un nouvel ensemble de données d’image alimentaire (au total, 7 variantes par image alimentaire). Ceci est fait en exécutant la commande dans la ligne 32 du script Python inclus. Reconnaissance de l’image alimentaire Importez l’ensemble de données d’image alimentaire de l’étape 1.3.7 dans l’environnement NVIDIA DIGITS47,divisant l’ensemble de données en sous-ensembles de formation, de validation et de test dans l’interface utilisateur NVIDIA DIGITS. Copiez et coller le texte de définition de l’architecture NutriNet2 en NVIDIA DIGITS en tant que réseau personnalisé.REMARQUE : Le texte de définition de l’architecture NutriNet se trouve dans les fichiers complémentaires (‘nutrinet.prototxt’). (Facultatif) Définissez les hyperparamètres de formation dans l’interface utilisateur NVIDIA DIGITS.REMARQUE : Les hyperparamètres sont des paramètres qui sont utilisés pour définir le processus de formation avant son début. Les hyperparamètres utilisés par les auteurs de cet article peuvent être trouvés dans un fichier inclus dans les fichiers supplémentaires (‘nutrinet_hyperparameters.prototxt’). Alors que l’expérimentation est nécessaire pour chaque ensemble de données pour trouver les hyperparamètres optimaux, le fichier contient une configuration hyperparamètre qui peut être copiée dans l’interface utilisateur NVIDIA DIGITS. En outre, NVIDIA DIGITS peuple les hyperparamètres avec des valeurs par défaut qui peuvent être utilisées comme base de référence. Cette étape est donc facultative. Exécutez la formation du modèle NutriNet. Une fois la formation terminée, prenez l’itération de modèle NutriNet la plus performante. Ce modèle est ensuite utilisé pour tester les performances de cette approche.REMARQUE : Il existe plusieurs façons de déterminer l’itération du modèle la plus performante. Une façon simple de le faire est la suivante. NVIDIA DIGITS produit un graphique des mesures de précision pour chaque époque de formation. Vérifiez quelle époque a atteint la valeur de perte la plus basse pour le sous-ensemble de validation de l’ensemble de données d’image alimentaire – que l’itération du modèle peut être considérée comme la plus performante. Une étape facultative dans la détermination de l’itération modèle la plus performante est d’observer comment la valeur de perte pour le sous-ensemble de formation change d’époque en époque et si elle commence à baisser continuellement tandis que la valeur de perte pour le sous-ensemble de validation reste la même ou augmente continuellement, prenez l’époque avant cette baisse de la valeur de perte de formation, car cela peut signaler quand le modèle a commencé à suramener sur les images de formation. 2. Segmentation de l’image alimentaire avec les FCN Obtention de l’ensemble de données d’image de faux aliments Obtenez un ensemble de données d’images de faux aliments. Des images de faux aliments sont recueillies par des chercheurs qui mènent des études comportementales à l’aide de répliques alimentaires.NOTE: Les auteurs de cet article ont reçu des images de faux aliments qui ont été recueillis dans un environnement delaboratoire 18. Annotez manuellement chaque image alimentaire au niveau des pixels – chaque pixel de l’image doit contenir des informations sur la classe alimentaire à laquelle il appartient. Le résultat de cette étape est une image d’annotation pour chaque image de l’ensemble de données d’image alimentaire, où chaque pixel représente l’une des classes alimentaires.NOTE: Il existe de nombreux outils pour y parvenir – les auteurs de cet article utilisé JavaScript Segment Annotator48. Augmenter l’ensemble de données d’image des faux aliments Effectuez les mêmes étapes que dans la section 1.3, mais uniquement sur les images du sous-ensemble de formation du jeu de données sur l’image alimentaire.REMARQUE : À l’exception de l’étape 1.3.5, toutes les étapes d’augmentation des données doivent également être effectuées sur les images d’annotation correspondantes. Si le script de la section 1.3 est utilisé, le chemin d’entrée (variable ‘INPUT_PATH’, ligne 8 dans le code de script Python43) et le chemin de sortie (variable ‘OUTPUT_PATH’, ligne 11 dans le code de script Python) doivent être remplacés par des chemins vers les dossiers désirés. En outre, réglez le problème (variable ‘PROBLEM’, ligne 6 dans le code de script Python) à ‘instance_segmentation’ et le mode Annotation (variable ‘ANNOTATION_MODE’, ligne 7 dans le code de script Python) et le mode sortie (variable ‘OUTPUT_MODE’, ligne 10 dans le code de script Python) à ‘coco’. Effectuer la segmentation de l’image des faux aliments Effectuez les mêmes étapes qu’à la section 1.4, à l’exception de l’étape 1.4.2. Au lieu de cette étape, effectuez les étapes 2.3.2 et 2.3.3.REMARQUE : Les hyperparamètres sont des paramètres qui sont utilisés pour définir le processus de formation avant son début. Les hyperparamètres de formation utilisés par les auteurs de cet article pour l’étape facultative 1.4.3 peuvent être trouvés dans un fichier inclus dans les fichiers supplémentaires (‘fcn-8s_hyperparameters.prototxt’). Alors que l’expérimentation est nécessaire pour chaque ensemble de données pour trouver l’ensemble optimal d’hyperparamètres, le fichier contient une configuration hyperparamètre qui peut être copié dans l’interface utilisateur NVIDIA DIGITS47. En outre, NVIDIA DIGITS peuple les hyperparamètres avec des valeurs par défaut qui peuvent être utilisées comme base de référence. Copiez et coller le texte de définition de l’architecture FCN-8s15 dans l’environnement DIGITS NVIDIA en tant que réseau personnalisé.REMARQUE : Le texte de définition de l’architecture FCN-8s est accessible au public sur GitHub49. Entrez le chemin vers les poids pré-formés du modèle FCN-8s dans l’interface utilisateur NVIDIA DIGITS.REMARQUE : Ces poids de modèle ont été pré-formés sur l’ensemble de données PASCAL VOC17 et peuvent être trouvés sur Internet49. 3. Segmentation de l’image alimentaire avec HTC ResNet Obtention de l’ensemble de données sur l’image alimentaire Téléchargez l’ensemble de données sur l’image alimentaire à partir du site Web duFRC 19. Augmentation de l’ensemble de données sur l’image des aliments Effectuez les étapes 1.3.1-1.3.4.REMARQUE : Le script Python43 contenant toutes les commandes CLoDSA46 utilisées par les auteurs de cet article se trouve dans un fichier inclus dans les fichiers supplémentaires (« frc_augmentation.py »). Si ce script est utilisé, le chemin d’entrée (variable ‘INPUT_PATH’, ligne 8 dans le code de script Python) et le chemin de sortie (variable ‘OUTPUT_PATH’, ligne 11 dans le code de script Python) doivent être remplacés par des chemins vers les dossiers désirés. Créez une nouvelle version de chaque image à partir de l’ensemble de données de l’image alimentaire en y ajoutant du flou gaussien à l’aide de la bibliothèque CLoDSA (lignes 26 et 27 dans le script Python inclus). Créez une nouvelle version de chaque image à partir de l’ensemble de données de l’image alimentaire en l’aiguisant à l’aide de la bibliothèque CLoDSA (lignes 29 et 30 dans le script Python inclus). Créez une nouvelle version de chaque image à partir de l’ensemble de données de l’image alimentaire en y appliquant une correction gamma à l’aide de la bibliothèque CLoDSA (lignes 32 et 33 dans le script Python inclus). Enregistrez des images des étapes 3.2.1-3.2.4, ainsi que des images originales (lignes 16 et 17 dans le script Python inclus), dans un nouvel ensemble de données d’image alimentaire (au total, 8 variantes par image alimentaire). Ceci est fait en exécutant la commande dans la ligne 35 du script Python inclus. Enregistrez des images des étapes 3.2.2-3.2.4, ainsi que des images originales (lignes 16 et 17 dans le script Python inclus), dans un nouvel ensemble de données d’image alimentaire (au total, 4 variantes par image alimentaire). Ceci est fait en supprimant les lignes 19 à 24 du script Python inclus et en exécutant la commande dans la ligne 35. Segmentation de l’image alimentaire performante Modifiez l’architecture HTC20 ResNet-101existante 16 définition de la bibliothèque MMDetection50 dans les sections « paramètres de modèle » et « paramètres de jeu de données » du fichier de définition d’architecture afin qu’il accepte les ensembles de données d’image alimentaire à partir des étapes 3.1.1, 3.2.5 et 3.2.6. (Facultatif) Modifiez la définition de l’architecture HTC ResNet-101 à partir de l’étape 3.3.1 pour définir les hyperparamètres de formation : taille des lots dans la section « paramètres de jeu de données », type de solveur et taux d’apprentissage dans la section « optimiseur », politique d’apprentissage dans la section « politique d’apprentissage » et nombre d’époques de formation dans la section « paramètres de temps d’exécution » du fichier de définition de l’architecture.REMARQUE : Le fichier de définition d’architecture HTC ResNet-101 modifié se trouve dans les fichiers supplémentaires (« htc_resnet-101.py »). Les hyperparamètres sont des paramètres qui sont utilisés pour définir le processus de formation avant son début. Alors que l’expérimentation est nécessaire pour chaque ensemble de données pour trouver l’ensemble optimal d’hyperparamètres, le fichier contient déjà une configuration hyperparamètre qui peut être utilisé sans modification. Cette étape est donc facultative. Exécutez la formation du modèle HTC ResNet-101 sur l’ensemble de données sur l’image alimentaire à partir de l’étape 3.1.1 à l’aide de la bibliothèque MMDetection (p. ex., avec la commande : « python mmdetection/tools/train.py htc_resnet-101.py »). Une fois la formation de l’étape 3.3.3 terminée, prenez l’itération du modèle HTC ResNet-101 la plus performante et peaufinez-la en exécutant la prochaine phase de formation sur l’ensemble de données sur l’image alimentaire à partir de l’étape 3.2.5.REMARQUE : Il existe plusieurs façons de déterminer l’itération du modèle la plus performante. Une façon simple de le faire est la suivante. La bibliothèque MMDetection produit des valeurs de mesures de précision pour chaque époque de formation dans l’interface de la ligne de commande. Vérifiez quelle époque a atteint la valeur de perte la plus basse pour le sous-ensemble de validation de l’ensemble de données d’image alimentaire – que l’itération du modèle peut être considérée comme la plus performante. Une étape facultative dans la détermination de l’itération modèle la plus performante est d’observer comment la valeur de perte pour le sous-ensemble de formation change d’époque en époque et si elle commence à baisser continuellement tandis que la valeur de perte pour le sous-ensemble de validation reste la même ou augmente continuellement, prenez l’époque avant cette baisse de la valeur de perte de formation, car cela peut signaler quand le modèle a commencé à suramener sur les images de formation. Une fois la formation de l’étape 3.3.4 terminée, prenez l’itération du modèle HTC ResNet-101 la plus performante et peaufinez-la en exécutant la prochaine phase de formation sur l’ensemble de données sur l’image alimentaire à partir de l’étape 3.2.6.REMARQUE : Voir note pour l’étape 3.3.4. Une fois la formation de l’étape 3.3.5 terminée, prenez l’itération du modèle HTC ResNet-101 la plus performante et peaufinez-la en exécutant à nouveau la prochaine phase de formation sur l’ensemble de données sur l’image alimentaire à partir de l’étape 3.2.5.REMARQUE : Voir note pour l’étape 3.3.4. Une fois la formation de l’étape 3.3.6 terminée, prenez l’itération du modèle HTC ResNet-101 la plus performante. Ce modèle est ensuite utilisé pour tester les performances de cette approche.REMARQUE : Voir note pour l’étape 3.3.4. Les étapes 3.3.3-3.3.7 ont donné les meilleurs résultats aux fins définies par les auteurs de cet article. L’expérimentation est nécessaire pour chaque ensemble de données afin de trouver la séquence optimale des étapes de formation et d’augmentation des données.

Representative Results

NutriNet a été testé contre trois architectures populaires d’apprentissage profond de l’époque: AlexNet14, GoogLeNet51 et ResNet16. Plusieurs paramètres de formation ont également été testés pour toutes les architectures afin de définir les valeurs optimales2. Parmi ceux-ci est le choix de type solveur, qui détermine comment la fonction de perte est réduite au minimum. Cette fonction est la principale mesure de qualité pour la formation des réseaux neuronaux car elle est mieux adaptée à l’optimisation pendant l’entraînement que la précision de classification. Nous avons testé trois solveurs : Stochastic Gradient Descent (SGD)52, Nesterov’s Accelerated Gradient (NAG)53 et adaptive gradient algorithm (AdaGrad)54. Le deuxième paramètre est la taille du lot, qui définit le nombre d’images traitées en même temps. La profondeur de l’architecture d’apprentissage profond a déterminé la valeur de ce paramètre, car les architectures plus profondes nécessitent plus d’espace dans la mémoire GPU – la conséquence de cette approche a été que la mémoire a été complètement remplie d’images pour toutes les architectures, indépendamment de la profondeur. Le troisième paramètre est le taux d’apprentissage, qui définit la vitesse à laquelle les paramètres du réseau neuronal sont modifiés pendant la formation. Ce paramètre a été défini à l’unisson avec la taille du lot, car le nombre d’images traitées simultanément dicte le taux de convergence. Les modèles AlexNet ont été formés en utilisant une taille de lot de 256 images et un taux d’apprentissage de base de 0,02; NutriNet a utilisé une taille de lot de 128 images et un taux de 0,01; GoogLeNet 64 images et un taux de 0,005; et ResNet 16 images et un taux de 0,00125. Trois autres paramètres ont été fixés pour toutes les architectures : la politique des taux d’apprentissage (step-down), la taille des pas (30%) gamma (0,1). Ces paramètres décrivent conjointement comment le taux d’apprentissage change à chaque époque. L’idée derrière cette approche est que le taux d’apprentissage est progressivement abaissé pour affiner le modèle plus il se rapproche de la valeur de perte optimale. Enfin, le nombre d’époques de formation a également été fixé à 150 pour toutes les architectures d’apprentissage profond2. Le meilleur résultat parmi tous les paramètres testés que NutriNet a obtenus a été une précision de classification de 86,72% sur l’ensemble de données de reconnaissance, ce qui était environ 2% plus élevé que le meilleur résultat pour AlexNet et légèrement supérieur au meilleur résultat de GoogLeNet. L’architecture la plus performante dans l’ensemble a été ResNet (d’environ 1%), mais le temps de formation de ResNet est sensiblement plus élevé par rapport à NutriNet (par un facteur d’environ cinq), ce qui est important si les modèles sont continuellement re-formés pour améliorer la précision et le nombre d’aliments reconnaissables. NutriNet, AlexNet et GoogLeNet ont obtenu leurs meilleurs résultats en utilisant le solveur AdaGrad, tandis que le meilleur modèle de ResNet utilisait le solveur NAG. NutriNet a également été testé sur l’ensemble de données sur l’image alimentaire38de l’UNIMIB2016, accessible au public. Cet ensemble de données contient 3 616 images de 73 aliments différents. NutriNet a obtenu une précision de reconnaissance de 86,39 % sur cet ensemble de données, surpassant légèrement le résultat de reconnaissance de référence des auteurs de l’ensemble de données, qui était de 85,80 %. En outre, NutriNet a été testé sur un petit ensemble de données de 200 images réelles de 115 aliments et boissons différents, où NutriNet a atteint un top-5 de précision de 55%. Pour former le modèle de segmentation d’images de faux aliments FCN-8s, nous avons utilisé Adam55 comme type de solveur, car nous avons constaté qu’il a effectué de manière optimale pour cette tâche. Le taux d’apprentissage de base a été fixé très bas – à 0,0001. La raison du faible nombre est le fait qu’une seule image pourrait être traitée à la fois, ce qui est une conséquence du processus de classification au niveau des pixels. Les exigences de mémoire GPU pour cette approche sont significativement supérieures à la classification au niveau de l’image. Le taux d’apprentissage a donc dû être bas afin que les paramètres ne soient pas modifiés trop rapidement et convergent vers des valeurs moins optimales. Le nombre d’époques de formation a été fixé à 100, tandis que la politique de taux d’apprentissage, la taille des étapes et le gamma ont été mis à la baisse, 34% et 0,1, respectivement, que ces paramètres ont produit les modèles les plus précis. Des mesures de précision du modèle FCN-8s ont été effectuées à l’aide de la mesure de précision des pixels15, ce qui est analogue à la précision de classification des réseaux traditionnels d’apprentissage profond, la principale différence étant que la précision est calculée au niveau des pixels plutôt qu’au niveau de l’image : où PA est la mesure de précision pixel, nij est le nombre de pixels de classe i prédit d’appartenir à la classe j et ti = Ρj n ij est le nombre total de pixels de la classe dans les étiquettes de vérité au sol1. En d’autres termes, la mesure de précision des pixels est calculée en divisant correctement les pixels prédits par le nombre total de pixels. La précision finale du modèle FCN-8 formés était de 92,18 %. La figure 2 montre trois exemples d’images de l’ensemble de données d’images de faux aliments (une de chacun des sous-ensembles de formation, de validation et de test), ainsi que les étiquettes correspondantes de vérité au sol et de prédiction de modèles. Les paramètres de formation du modèle HTC20 ResNet-101 pour la segmentation de l’image alimentaire ont été définis comme suit : le type de solveur utilisé était SGD parce qu’il surpassait les autres types de solveurs. Le taux d’apprentissage de base a été fixé à 0,00125 et la taille du lot à 2 images. Le nombre d’époques de formation a été fixé à 40 par phase de formation, et plusieurs phases de formation ont été réalisées – d’abord sur l’ensemble de données FRC original sans images augmentées, puis sur le jeu de données FRC 8x-augmenté et 4x-augmenté plusieurs fois en alternance, chaque fois en prenant le modèle le plus performant et en le peaufinant dans la phase de formation suivante. Plus de détails sur les phases de formation se trouvent à la section 3.3 du texte du protocole. Enfin, la politique d’apprentissage progressive a été utilisée, avec des époques fixes pour le moment où le taux d’apprentissage a diminué (époques 28 et 35 pour la première phase de formation). Une chose importante à noter est que, bien que cette séquence de phases de formation a produit les meilleurs résultats dans nos tests dans la portée du FRC, l’utilisation d’un autre ensemble de données pourrait nécessiter une séquence différente pour produire des résultats optimaux. Cette solution resNet pour la segmentation de l’image alimentaire a été évaluée à l’aide de la mesure de précisionsuivante 19: où P est la précision, TP est le nombre de prédictions positives vrai par le modèle de segmentation de l’image alimentaire, FP est le nombre de prédictions faussement positives et IoU est intersection au-dessus de l’Union, qui est calculé avec cette équation: où Area of Overlap représente le nombre de prédictions par le modèle qui chevauchent la vérité du sol, et area of Union représente le nombre total de prédictions par le modèle ainsi que la vérité au sol, à la fois au niveau des pixels et pour chaque classe alimentaire individuelle. Le rappel est utilisé comme mesure secondaire et est calculé de la même manière, en utilisant la formulesuivante 19: où R est rappel et FN est le nombre de prédictions négatives fausses par le modèle de segmentation de l’image alimentaire. Les mesures de précision et de rappel sont ensuite moyennes dans toutes les classes dans la vérité du sol. À l’aide de ces mesures, notre modèle a obtenu une précision moyenne de 59,2 % et un rappel moyen de 82,1 %, qui s’est classé deuxième au deuxième tour du Défi reconnaissancealimentaire 19. Ce résultat est de 4,2% derrière la première place et de 5,3% devant la troisième place en termes de mesure moyenne de précision. Le tableau 1 contient les résultats pour les 4 meilleurs participants au concours. Figure 1: Diagramme de l’architecture du réseau neuronal profond NutriNet. Ce chiffre a été publié dans Mezgec et coll.2. S’il vous plaît cliquez ici pour voir une version plus grande de ce chiffre. Figure 2 :Images de l’ensemble de données d’images de faux aliments. Images originales (à gauche), étiquettes de vérité au sol étiquetées manuellement (milieu) et prédictions du modèle FCN-8s (droite). Ce chiffre a été publié dans Mezgec et coll.1. S’il vous plaît cliquez ici pour voir une version plus grande de ce chiffre. Nom de l’équipe Placement Précision moyenne Rappel moyen rssfete (rssfete) 1 63.4% 88.6% simon_mezgec 2 59.2% 82.1% arimboux ( arimboux ) 3 53.9% 73.5% latentvec (latentvec) 4 48.7% 71.1% Tableau 1 : Résultats du Top-4 de la deuxième ronde du Défi de reconnaissance alimentaire. La précision moyenne est considérée comme la principale mesure de rendement et le rappel moyen comme mesure secondaire. Les résultats sont obtenus dans le classement officiel de lacompétition 19. Fichiers supplémentaires. S’il vous plaît cliquez ici pour télécharger ce fichier.

Discussion

Ces dernières années, les réseaux neuronaux profonds ont été validés à plusieurs reprises comme une solution appropriée pour reconnaître les imagesalimentaires 10,11,12,21,23,25,26,29,31,33. Notre travail présenté dans cet article sert à prouver davantage ce1,2. L’approche de reconnaissance de l’image alimentaire à sortie unique est simple et peut être utilisée pour des applications simples où des images avec un seul aliment ou boisson sontattendues 2.

L’approche de segmentation de l’image alimentaire semble particulièrement appropriée pour reconnaître les images alimentaires en général, sans aucune restriction sur le nombre d’aliments1. Parce qu’il fonctionne en classant chaque pixel individuel de l’image, il est capable non seulement de reconnaître n’importe quel nombre d’aliments dans l’image, mais aussi de spécifier où un aliment est situé, ainsi que la taille de celui-ci. Ce dernier peut ensuite être utilisé pour effectuer l’estimation du poids des aliments, en particulier s’il est utilisé avec un objet de référence ou une caméra à distance fixe.

Des travaux ont été réalisés en ce qui concerne la disponibilité des ensembles de données sur l’imagealimentaire 3,22,27,30,36,37,38,39,40,41,42, et nous espérons que davantage sera fait à l’avenir, en particulier lorsqu’il s’agit d’agrégeant des ensembles de données sur l’image alimentaire de différentes régions du monde, ce qui permettrait de développer des solutions plus robustes. Actuellement, la précision des solutions automatiques de reconnaissance de l’image alimentaire n’a pas encore atteint la précision au niveauhumain 35, et cela est probablement dû en grande partie à l’utilisation d’ensembles de données d’image alimentaire d’une taille et d’une qualité insuffisantes.

À l’avenir, notre objectif sera d’évaluer davantage les procédures développées sur les images du monde réel. En général, les ensembles de données dans ce domaine contiennent souvent des images prises dans des environnements contrôlés ou des images qui ont été optimisées manuellement pour la reconnaissance. C’est pourquoi il est important de recueillir un ensemble de données sur l’image alimentaire réelle vaste et diversifiée afin d’englober tous les différents aliments et boissons que les individus pourraient vouloir reconnaître. La première étape a été fournie par le Défi de reconnaissance alimentaire, qui comprenait un ensemble de données d’images alimentairesréelles 19, mais d’autres travaux doivent être faits pour valider cette approche sur les images alimentaires de partout dans le monde et en coopération avec les diététistes.

Disclosures

The authors have nothing to disclose.

Acknowledgements

Les auteurs aimeraient remercier Tamara Bucher de l’Université de Newcastle, en Australie, d’avoir fourni l’ensemble de données sur l’image des faux aliments. Ces travaux ont été soutenus par les programmes horizon 2020 de recherche et d’innovation de l’Union européenne (numéros de subvention 863059 – FNS-Cloud, 769661 – SAAM); et l’Agence slovène de la recherche (numéro de subvention P2-0098). L’Union européenne et l’Agence slovène de recherche n’ont joué aucun rôle dans la conception, l’analyse ou la rédaction de cet article.

Materials

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

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. Bucher, T., vander Horst, K., Siegrist, M. Fruit for Dessert. How People Compose Healthier Meals. Appetite. 60 (1), 74-80 (2013).
  18. Food Recognition Challenge. AICrowd Available from: https://www.aicrowd.com/challenges/food-recognition-challenge (2020)
  19. Chen, K., et al. Hybrid Task Cascade for Instance Segmentation. Proceedings of the CVPR 2019. , 4974-4983 (2019).
  20. Kawano, Y., Yanai, K. Food Image Recognition with Deep Convolutional Features. Proceedings of the UbiComp 2014. , 589-593 (2014).
  21. Matsuda, Y., Hoashi, H., Yanai, K. Recognition of Multiple-Food Images by Detecting Candidate Regions. Proceedings of the ICME 2012. , 25-30 (2012).
  22. 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).
  23. Tanno, R., Okamoto, K., Yanai, K. DeepFoodCam: A DCNN-Based Real-Time Mobile Food Recognition System. Proceedings of the MADiMa’16. , 89-89 (2016).
  24. 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).
  25. Martinel, N., Foresti, G. L., Micheloni, C. Wide-Slice Residual Networks for Food Recognition. Proceedings of the IEEE WACV 2018. , 567-576 (2018).
  26. Bossard, L., Guillaumin, M., Van Gool, L. Food-101-Mining Discriminative Components with Random Forests. Proceedings of the ECCV’14. , 446-461 (2014).
  27. 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).
  28. 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).
  29. 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).
  30. 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).
  31. Shimoda, W., Yanai, K. Weakly-Supervised Plate and Food Region Segmentation. Proceedings of the ICME 2020. , 1-6 (2020).
  32. Ciocca, G., Micali, G., Napoletano, P. State Recognition of Food Images using Deep Features. IEEE Access. 8, 32003-32017 (2020).
  33. 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).
  34. 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).
  35. Chen, M. -. Y., et al. Automatic Chinese Food Identification and Quantity Estimation. SA’12 Technical Briefs. , 1-4 (2012).
  36. Chen, J., Ngo, C. -. W. Deep-Based Ingredient Recognition for Cooking Recipe Retrieval. Proceedings of the MM’16. , 32-41 (2016).
  37. 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).
  38. Salvador, A., et al. Learning Cross-Modal Embeddings for Cooking Recipes and Food Images. Proceedings of the IEEE CVPR 2017. , 3020-3028 (2017).
  39. 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).
  40. 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).
  41. 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).
  42. . Python Available from: https://www.python.org (2020)
  43. Google Custom Search API. Google Available from: https://developers.google.com/resources/api-libraries/documentation/customsearch/v1/python/latest/customsearch_v1.cse.html (2020)
  44. . CLoDSA Available from: https://github.com/joheras/CLoDSA (2020)
  45. NVIDIA DIGITS. NVIDIA Available from: https://developer.nvidia.com/digits (2020)
  46. . JavaScript Segment Annotator Available from: https://github.com/kyamagu/js-segment-annotator (2020)
  47. . Fully Convolutional Networks for Semantic Segmentation Available from: https://github.com/shelhamer/fcn.berkeleyvision.org (2020)
  48. . MMDetection Available from: https://github.com/open-mmlab/mmdetection (2020)
  49. Szegedy, C., et al. Going Deeper with Convolutions. Proceedings of the CVPR 2015. , 1-9 (2015).
  50. Bottou, L. Large-Scale Machine Learning with Stochastic Gradient Descent. Proceedings of the COMPSTAT’2010. , 177-186 (2010).
  51. Nesterov, Y. A Method of Solving a Convex Programming Problem with Convergence Rate O(1/k2). Doklady Akademii Nauk SSSR. 27, 372-376 (1983).
  52. Duchi, J., Hazan, E., Singer, Y. Adaptive Subgradient Methods for Online Learning and Stochastic Optimization. Journal of Machine Learning Research. 12, 2121-2159 (2011).
  53. Kingma, D. P., Ba, J. Adam: A Method for Stochastic Optimization. arXiv Preprint. , (2017).

Play Video

Cite This Article
Mezgec, S., Koroušić Seljak, B. Deep Neural Networks for Image-Based Dietary Assessment. J. Vis. Exp. (169), e61906, doi:10.3791/61906 (2021).

View Video