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.
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).
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.
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.
The authors have nothing to disclose.
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.
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 |