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 à l’aide de réseaux neuronaux profonds, qui représentent l’état de l’art dans le domaine.
En particulier, nous présenterons trois solutions, l’une pour la reconnaissance de l’image alimentaire, l’autre pour la segmentation d’images de répliques alimentaires, ou faux aliments, et l’autre pour la segmentation de l’image de la nourriture réelle. Rassemblez une liste des différents aliments et boissons qui seront les sorties du modèle de reconnaissance de l’image alimentaire. Enregistrez la liste des aliments et des boissons dans un fichier texte, tel que TXT ou CSV.
Notez que le fichier texte utilisé par les auteurs de cet article peut être trouvé dans les fichiers supplémentaires sous les articles alimentaires point TXT et comprend une liste de 520 produits alimentaires slovènes. Écrivez ou téléchargez un script Python qui utilise l’API de recherche personnalisée Google pour télécharger des images de chaque aliment de la liste et les enregistre dans un dossier distinct pour chaque aliment. Notez que le script Python utilisé par les auteurs de cet article peut être trouvé dans les fichiers supplémentaires sous télécharger des images dot pi.
Si ce script est utilisé, la ligne de clé du développeur variable développeur développeur huit dans le code de script Python et moteur de recherche personnalisé ID variable CX ligne 28 dans le code de script Python doivent être remplacés par des valeurs spécifiques au compte Google utilisé. Exécutez le script Python à partir de l’étape 1.1.3. Créez une nouvelle version de chaque image à partir de l’ensemble de données d’image alimentaire en la faisant pivoter de 90 degrés, à l’aide de la bibliothèque CLoDSA.
Notez que le script Python contenant toutes les commandes CLoDSA utilisées par les auteurs de cet article peut être trouvé dans un fichier inclus dans les fichiers supplémentaires sous NutriNet souligner augmentation dot pi. Créez une nouvelle version de chaque image à partir de l’ensemble de données d’image alimentaire en la faisant pivoter de 180 degrés, à l’aide de la bibliothèque CLoDSA. Créez une nouvelle version de chaque image à partir de l’ensemble de données d’image alimentaire en la faisant pivoter de 270 degrés, à l’aide de la bibliothèque CLoDSA.
Créez une nouvelle version de chaque image à partir de l’ensemble de données d’image alimentaire en la renversant horizontalement, à l’aide de la bibliothèque CLoDSA. Créez une nouvelle version de chaque image à partir de l’ensemble de données d’image alimentaire en y ajoutant du bruit de couleur aléatoire, à l’aide de la bibliothèque CLoDSA. Créez une nouvelle version de chaque image à partir de l’ensemble de données d’image alimentaire en zoomant dessus de 25 % à l’aide de la bibliothèque CLoDSA.
Enregistrez des images des étapes 1.3.1 à 1.3.6 ainsi que les images originales dans un nouvel ensemble de données d’image alimentaire. Au total, sept variantes par image alimentaire. Importez l’ensemble de données d’image alimentaire de l’étape 1.3.7 dans l’environnement des chiffres NVIDI, divisant l’ensemble de données en sous-ensembles de formation, de validation et de test.
Copiez et coller le texte de définition de l’architecture NutriNet en chiffres NVIDIA. Notez que la définition de l’architecture NutriNet peut être trouvée dans les fichiers supplémentaires sous NutriNet dot proto TXT. En option, définissez des hyper-paramètres de formation dans les chiffres NVIDIA ou utilisez les valeurs par défaut.
Les hyper-paramètres utilisés par les auteurs de cet article peuvent être trouvés dans un fichier inclus dans les fichiers supplémentaires sous NutriNet soulignent hyper-paramètres point proto TXT. 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. Notez qu’il existe plusieurs façons de déterminer l’itération modèle la plus performante. Consultez les textes de l’article pour plus de détails.
Obtenez un ensemble de données d’images de faux aliments. Notez que les auteurs de cet article ont reçu des images de faux aliments qui ont été recueillis dans un environnement de laboratoire. Annotez manuellement chaque image alimentaire au niveau pixel.
Chaque pixel de l’image doit contenir des informations sur la classe alimentaire à laquelle il appartient. Notez qu’il existe de nombreux outils pour y parvenir. Les auteurs de cet article ont utilisé l’annotateur de segment JavaScript.
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. Effectuez les mêmes étapes que dans la section 1.3, mais uniquement sur les images du sous-ensemble de formation de l’ensemble de données sur l’image alimentaire. Notez qu’à 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.
Effectuez les mêmes étapes qu’à la section 1.4, à l’exception de l’étape 1.4.2. À la place de cette étape effectuer les étapes 2.3.2 et 2.3.3. Notez que les hyper-paramètres de formation utilisés par les auteurs de cet article peuvent être trouvés dans le fichier inclus dans les fichiers supplémentaires sous FCN-8S soulignent hyper-paramètres dot proto TXT.
Copiez et coller le texte de définition de l’architecture FCN-8S en chiffres NVIDIA. Entrez les poids du modèle FCN-8S préentraînés dans les chiffres NVIDIA. Notez que ces poids de modèle ont été préformés sur l’ensemble de données pascal classes d’objets visuels et peuvent être trouvés sur Internet.
Téléchargez l’ensemble de données sur l’image des aliments à partir du site Web du Défi de reconnaissance des aliments. Effectuez les étapes 1.3.1 à 1.3.4. Notez que le script Python contenant toutes les commandes CLoDSA utilisées par les auteurs de cet article peut être trouvé dans le fichier inclus dans les fichiers supplémentaires sous FRC souligner augmentation dot pi.
Créez une nouvelle version de chaque image à partir de l’ensemble de données d’image alimentaire en y ajoutant du flou gaussien, à l’aide de la bibliothèque CLoDSA. Créez une nouvelle version de chaque image à partir de l’ensemble de données d’image alimentaire en l’aiguisant, à l’aide de la bibliothèque CLoDSA. Créez une nouvelle version de chaque image à partir de l’ensemble de données d’image alimentaire en y appliquant une correction gamma, à l’aide de la bibliothèque CLoDSA.
Enregistrez des images des étapes 3.2.1 à 3.2.4 ainsi que les images originales dans un nouvel ensemble de données d’image alimentaire. Au total, huit variantes par image alimentaire. Enregistrez des images des étapes 3.2.2 à 3.2.4 ainsi que les images originales dans un nouvel ensemble de données d’image alimentaire.
Au total, quatre variantes par image alimentaire. Modifiez la définition d’architecture HTC ResNet 101 existante à partir de la bibliothèque de détection MM afin qu’elle accepte les ensembles de données d’image alimentaire à partir des étapes 3.1.1, 3.2.5 et 3.2.6. En option, modifiez la définition d’architecture HTC ResNet 101 à partir de l’étape 3.3.1 pour définir les hypermétrèmes de formation ou utiliser les valeurs par défaut.
Notez que la définition modifiée htc ResNet 101 architecture peut être trouvé dans les fichiers supplémentaires sous HTC soulignez ResNet 101 dot pi. Exécutez la formation du modèle HTC ResNet 101 sur les ensembles de données d’image alimentaire à partir de l’étape 3.1.1 à l’aide de la bibliothèque de détection MM. 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.
Notez qu’il existe plusieurs façons de déterminer l’itération modèle la plus performante. Consultez les textes de l’article pour plus de détails. Ceci est également pertinent pour les prochaines étapes.
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. 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 d’image alimentaire à partir de l’étape 3.2.5. Après la formation de l’étape 3.3.6 est terminée, prendre la meilleure performance HTC ResNet 101 itération modèle.
Ce modèle est ensuite utilisé pour tester les performances de cette approche. Notez que 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.
Après avoir testé le modèle de tendance NutriNet a atteint une précision de classification de 86,72% sur l’ensemble de données de reconnaissance, qui était d’environ 2% plus élevé que AlexNet et légèrement plus élevé que GoogLeNet, qui étaient populaires architectures réseau neuronaux profonds de l’époque. Pour mesurer la précision du modèle de segmentation de l’image des aliments contrefaits FCN-8S, la mesure de précision des pixels a été utilisée. L’exactitude du modèle FCN-8S formé était de 92,18 %La solution resNet pour la segmentation de l’image alimentaire a été évaluée à l’aide de la mesure de précision définie dans le Défi de reconnaissance des aliments.
À l’aide de cette mesure, le modèle de train a obtenu une précision moyenne de 59,2 %, ce qui s’est classé au deuxième rang du Défi de reconnaissance des aliments. 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 images alimentaires. Notre travail présenté dans cet article sert à le prouver davantage.
L’approche de reconnaissance de l’image alimentaire à sortie unique est simple et peut être utilisée pour des applications simples. Alors que l’approche de segmentation de l’image alimentaire nécessite plus de travail dans la préparation d’images annotées, mais elle est beaucoup plus applicable aux images du monde réel. À l’avenir, notre objectif sera d’évaluer davantage les procédures développées sur les images du monde réel.
La première étape vers la validation du monde réel a été fournie par le Défi de reconnaissance alimentaire, qui comprenait un ensemble de données d’images alimentaires du monde réel. Mais d’autres travaux doivent être réalisés pour valider cette approche sur les images alimentaires du monde entier et en coopération avec les diététiciens.