Summary

Redes neuronales profundas para la evaluación dietética basada en imágenes

Published: March 13, 2021
doi:

Summary

El objetivo del trabajo presentado en este artículo es desarrollar tecnología para el reconocimiento automatizado de alimentos y bebidas a partir de imágenes tomadas por dispositivos móviles. La tecnología consta de dos enfoques diferentes: el primero realiza el reconocimiento de imágenes de alimentos, mientras que el segundo realiza la segmentación de imágenes alimentarias.

Abstract

Debido a los problemas y costos asociados con los enfoques manuales de evaluación dietética, se requieren soluciones automatizadas para facilitar y acelerar el trabajo y aumentar su calidad. Hoy en día, las soluciones automatizadas son capaces de registrar la ingesta dietética de una persona de una manera mucho más simple, por ejemplo, tomando una imagen con una cámara de teléfono inteligente. En este artículo, nos centraremos en estos enfoques basados en imágenes para la evaluación dietética. Para el problema del reconocimiento de imágenes alimentarias, las redes neuronales profundas han alcanzado el estado de la técnica en los últimos años, y presentamos nuestro trabajo en este campo. En particular, primero describimos el método para el reconocimiento de imágenes de alimentos y bebidas utilizando una arquitectura de red neuronal profunda, llamada NutriNet. Este método, como la mayoría de las investigaciones realizadas en los primeros días de reconocimiento profundo de imágenes de alimentos basados en el aprendizaje, se limita a una salida por imagen y, por lo tanto, no es adecuado para imágenes con múltiples alimentos o bebidas. Es por eso que los enfoques que realizan la segmentación de imágenes de alimentos son considerablemente más robustos, ya que son capaces de identificar cualquier número de alimentos o bebidas en la imagen. Por lo tanto, también presentamos dos métodos para la segmentación de imágenes alimentarias: uno se basa en redes totalmente convolucionales (FCN) y el otro en redes residuales profundas (ResNet).

Introduction

La evaluación dietética es un paso crucial en la determinación de áreas procesables de la dieta de un individuo. Sin embargo, realizar una evaluación dietética utilizando enfoques tradicionalmente manuales se asocia con costos considerables. Estos enfoques también son propensos a errores, ya que a menudo se basan en la auto-notificación por parte del individuo. La evaluación dietética automatizada aborda estos problemas proporcionando una manera más sencilla de cuantificar y calificar la ingesta de alimentos. Este enfoque también puede aliviar algunos de los errores presentes en los enfoques manuales, como las comidas perdidas, la incapacidad de evaluar con precisión el volumen de alimentos, etc. Por lo tanto, hay claros beneficios para automatizar la evaluación dietética mediante el desarrollo de soluciones que identifiquen diferentes alimentos y bebidas y cuantifiquen la ingesta de alimentos1. Estas soluciones también se pueden utilizar para permitir una estimación de los valores nutricionales de los alimentos y bebidas (en adelante , “alimentos”). En consecuencia, la evaluación dietética automatizada es útil para múltiples aplicaciones, desde usos estrictamente médicos, como permitir a los dietistas realizar un seguimiento más fácil y preciso y analizar las dietas de sus pacientes, hasta el uso dentro de aplicaciones de bienestar dirigidas a la población general.

Reconocer automáticamente los alimentos de las imágenes es un problema de visión por computadora desafiante. Esto se debe a que los alimentos suelen ser objetos deformables, y debido al hecho de que una gran cantidad de la información visual del alimento se puede perder durante su preparación. Además, diferentes alimentos pueden parecer muy similares entre sí, y los mismos alimentos pueden parecer sustancialmente diferentes en múltiples imágenes2. Además, la precisión del reconocimiento depende de muchos más factores, como la calidad de la imagen, si el alimento está obstruido por otro artículo, la distancia a partir de la cual se tomó la imagen, etc. Reconocer los artículos de bebidas presenta su propio conjunto de desafíos, siendo el principal la cantidad limitada de información visual que está disponible en una imagen. Esta información podría ser el color de la bebida, el color y la estructura del recipiente de bebidas, y, en condiciones óptimas de imagen, la densidad de bebidas2.

Para reconocer con éxito los alimentos a partir de imágenes, es necesario aprender características de cada clase de alimentos y bebidas. Esto se hacía tradicionalmente utilizando extractores de características definidos manualmente3,4,5,6 que realizan reconocimiento basado en características específicas del artículo como color, textura, tamaño, etc., o una combinación de estas características. Algunos ejemplos de estos extractores de características son el aprendizaje de múltipleskernels 4,las características locales emparejadas5 y el modelo6de la bolsa de características. Debido a la complejidad de las imágenes de alimentos, estos enfoques lograron en su mayoría una baja precisión de clasificación – entre 10% y 40%3,4,5. La razón de esto es que el enfoque manual no es lo suficientemente robusto como para ser lo suficientemente preciso. Debido a que un alimento puede variar significativamente en apariencia, no es factible abarcar todas estas variaciones manualmente. Se puede lograr una mayor precisión de clasificación con extractores de características definidos manualmente cuando el número de clases de alimentos se reduce5,o se combinan diferentes características de imagen6,lo que indica que es necesario soluciones más complejas a este problema.

Esta es la razón por la que el aprendizaje profundo demostró ser tan eficaz para el problema del reconocimiento de la imagen alimentaria. El aprendizaje profundo, o redes neuronales profundas, se inspiró en cerebros biológicos, y permite que los modelos computacionales compuestos por múltiples capas de procesamiento aprendan automáticamente las características a través del entrenamiento en un conjunto de imágenes de entrada7,8. Debido a esto, el aprendizaje profundo ha mejorado sustancialmente el estado de la técnica en una variedad de campos de investigación7,con visión computarizada, y posteriormente reconocimiento de imágenes de alimentos, siendo uno de ellos2.

En particular, las redes neuronales convolucionales profundas (DCNN) son más populares para el reconocimiento de imágenes de alimentos – estas redes se inspiran en el sistema visual de los animales, donde las neuronas individuales tratan de obtener una comprensión de la entrada visual reaccionando a las regiones superpuestas en el campo visual9. Una red neuronal convolucional toma la imagen de entrada y realiza una serie de operaciones en cada una de las capas de red, las más comunes de las cuales son capas convolucionales, totalmente conectadas y de agrupación. Las capas convolucionales contienen filtros aprendebles que responden a ciertas entidades de los datos de entrada, mientras que las capas totalmente conectadas componen datos de salida de otras capas para obtener conocimiento de nivel superior de los demás. El objetivo de agrupar capas es muestrear hacia abajo los datos de entrada2. Hay dos enfoques para usar modelos de aprendizaje profundo que resultaron populares: tomar una definición de red neuronal profunda existente10,11, conocida como una arquitectura de aprendizaje profundo en este artículo, o definir una nueva arquitectura de aprendizaje profundo12,13,y entrenar cualquiera de estos en un conjunto de datos de imagen de alimentos. Hay fortalezas y debilidades en ambos enfoques: al utilizar una arquitectura de aprendizaje profundo existente, se puede elegir una arquitectura que tenga un buen desempeño para otros problemas y ajustarse al problema deseado, ahorrando así tiempo y asegurándose de que se ha elegido una arquitectura validada. Definir una nueva arquitectura de aprendizaje profundo, por otro lado, es más intensivo en tiempo, pero permite el desarrollo de arquitecturas que se hacen específicamente para tener en cuenta los detalles de un problema y por lo tanto teóricamente funcionan mejor para ese problema.

En este artículo, presentamos ambos enfoques. Para el problema de reconocimiento de imágenes de alimentos, desarrollamos una nueva arquitectura DCNN llamada NutriNet2, que es una modificación de la conocida arquitectura AlexNet14. Hay dos diferencias principales en comparación con AlexNet: NutriNet acepta imágenes de 512×512 píxeles como entrada (a diferencia de las imágenes de 256×256 píxeles para AlexNet), y NutriNet tiene una capa convolucional adicional al principio de la red neuronal. Estos dos cambios se introdujeron con el fin de extraer tanta información de las imágenes del conjunto de datos de reconocimiento como sea posible. Tener imágenes de mayor resolución significaba que hay más información presente en las imágenes y tener capas más convolucionales significaba que se podía extraer conocimiento adicional de las imágenes. En comparación con los alrededor de 60 millones de parámetros de AlexNet, NutriNet contiene menos parámetros: aproximadamente 33 millones. Esto se debe a la diferencia de dimensionalidad en la primera capa totalmente conectada causada por la capa convolucionaladicional 2. La Figura 1 contiene un diagrama de la arquitectura NutriNet. Las imágenes de alimentos que se utilizaron para entrenar el modelo NutriNet fueron recogidas de Internet – el procedimiento se describe en el texto del protocolo.

Para el problema de segmentación de imágenes alimentarias, utilizamos dos arquitecturas existentes diferentes: redes totalmente convolucionales (FCN)15 y redes residuales profundas (ResNet)16,las cuales representaban el estado de la técnica para la segmentación de imágenes cuando las usamos para desarrollar sus respectivas soluciones de segmentación de imágenes de alimentos. Hay múltiples variantes FCN que fueron introducidas por Long et al.: FCN-32s, FCN-16s y FCN-8s15. FCN-32s genera un mapa de píxeles basado en las predicciones de la capa final del FCN, mientras que la variante FCN-16s combina estas predicciones con las de una capa anterior. FCN-8s considera las predicciones de otra capa y por lo tanto es capaz de hacer predicciones en el grano más fino, por lo que es adecuado para el reconocimiento de imágenes de alimentos. Los FCN-8 que usamos fueron pre-entrenados en el conjunto de datos PASCAL Visual Object Classes (PASCAL VOC)17 y entrenados y probados en imágenes de réplicas de alimentos (en adelante ‘comida falsa’)18 debido a su parecido visual con los alimentos reales y debido a la falta de imágenes anotadas de alimentos reales en un nivel de píxeles. La comida falsa se utiliza en diferentes estudios conductuales y se toman imágenes para todos los platos de todos los participantes del estudio. Dado que se conoce el contenido de los alimentos de estas imágenes, hace que el dataset de imágenes sea útil para el entrenamiento de modelos de aprendizaje profundo. Los pasos de procesamiento del conjunto de datos se describen en el texto del protocolo.

La solución basada en ResNet se desarrolló en el ámbito del Desafío de Reconocimiento Alimentario (FRC)19. Utiliza el método Hybrid Task Cascade (HTC)20 con una estructura básica ResNet-10116. Este es un enfoque de vanguardia para el problema de segmentación de imágenes que puede utilizar diferentes extractores de características o columnas vertebrales. También consideramos otras redes troncales, particularmente otras variantes de ResNet como ResNet-5016,pero ResNet-101 era la más adecuada debido a su profundidad y capacidad para representar imágenes de entrada de una manera lo suficientemente compleja. El conjunto de datos utilizado para entrenar el modelo HTC ResNet-101 era el dataset FRC con imágenes aumentadas añadidas. Estos aumentos se presentan en el texto del protocolo.

Este artículo está destinado como un recurso para expertos en aprendizaje automático que buscan información sobre qué arquitecturas de aprendizaje profundo y pasos de aumento de datos funcionan bien para los problemas de reconocimiento y segmentación de imágenes de alimentos, así como para los investigadores de nutrición que buscan utilizar nuestro enfoque para automatizar el reconocimiento de imágenes de alimentos para su uso en la evaluación dietética. En los párrafos siguientes, se presentan soluciones de aprendizaje profundo y conjuntos de datos del campo de reconocimiento de imágenes de alimentos. En el texto del protocolo, detallamos cómo se utilizó cada uno de los tres enfoques para entrenar modelos de red neuronal profunda que se pueden utilizar para la evaluación dietética automatizada. Además, cada sección de protocolo contiene una descripción de cómo se adquirieron y procesaron los conjuntos de datos de imágenes de alimentos utilizados para el entrenamiento y las pruebas.

Las DCNN generalmente lograron resultados sustancialmente mejores que otros métodos para el reconocimiento y la segmentación de imágenes alimentarias, razón por la cual la gran mayoría de las investigaciones recientes sobre el terreno se basan en estas redes. Kawano et al. utilizaron DCNNs para complementar los enfoques manuales21 y lograron una precisión de clasificación del 72,26 % en el conjunto de datos UEC-FOOD10022. Christodoulidis et al. los utilizó exclusivamente para lograr una mayor precisión del 84,90% en un conjunto de datos autocomplotado23. Tanno et al. desarrollado DeepFoodCam – una aplicación para teléfonos inteligentes para el reconocimiento de imágenes de alimentos que utiliza DCNNs24. Liu et al. presentaron un sistema que realiza una evaluación dietética basada en internet de las cosas utilizando DCNNs25. Martinel et al. introdujeron un enfoque basado en DCNN que explota los detalles de las imágenes de alimentos26 e informaron de una precisión del 90,27% en el conjunto de datos Food-10127. Zhou et al. es autor de una revisión de las soluciones de aprendizaje profundo en el dominio alimentario28.

Recientemente, Zhao et al. propuso una red específicamente para el reconocimiento de imágenes de alimentos en aplicaciones móviles29. Este enfoque utiliza una red de “estudiantes” más pequeña que aprende de una red de “profesores” más grande. Con él, lograron una precisión del 84% en el UEC-FOOD25630 y una precisión del 91,2% en el conjunto de datos Food-10127. Hafiz et al. utilizaron DCNNs para desarrollar una solución de reconocimiento de imágenes solo para bebidas e informaron de una precisión muy alta de 98.51%31. Shimoda et al. describieron un método novedoso para detectar regiones de placas en imágenes de alimentos sin el uso de anotación en píxeles32. Ciocca et al. introdujeron un nuevo conjunto de datos que contenía alimentos de 20 clases de alimentos diferentes en 11 estados diferentes (pasta sólida, en rodajas, cremosa, etc.) y presentaron su enfoque para modelos de reconocimiento de capacitación que son capaces de reconocer el estado alimentario, además de la clase de alimentos33. Knez et al. evaluaron las soluciones de reconocimiento de imágenes de alimentos para dispositivos móviles34. Por último, Furtado et al. llevaron a cabo un estudio sobre cómo el sistema visual humano se compara con el rendimiento de los DCNN y encontró que el reconocimiento humano todavía supera a los DCNN con una precisión del 80% frente al 74,5%35. Los autores señalaron que con un pequeño número de clases de alimentos, los DCNN funcionan bien, pero en un conjunto de datos con cientos de clases, la precisión del reconocimiento humano es mayor35,destacando la complejidad del problema.

A pesar de sus resultados de última generación, el aprendizaje profundo tiene un inconveniente importante: requiere un gran conjunto de datos de entrada para entrenar el modelo. En el caso del reconocimiento de imágenes de alimentos, se requiere un conjunto de datos de imagen de alimentos grande y este conjunto de datos debe abarcar tantos escenarios diferentes del mundo real como sea posible. En la práctica, esto significa que para cada artículo individual de alimentos o bebidas, se requiere una gran colección de imágenes y tantos artículos diferentes como sea posible deben estar presentes en el conjunto de datos. Si no hay suficientes imágenes para un elemento específico en el conjunto de datos, es poco probable que ese elemento se reconozca correctamente. Por otro lado, si sólo un pequeño número de elementos está cubierto por el conjunto de datos, la solución tendrá un alcance limitado y solo podrá reconocer un puñado de alimentos y bebidas diferentes.

Varios conjuntos de datos se pusieron a disposición en el pasado. El Pittsburgh Fast-Food Image Dataset (PFID)3 fue introducido para fomentar más investigación en el campo del reconocimiento de imágenes de alimentos. La Universidad de Electro-Communications Food 100 (UEC-FOOD100)22 y la Universidad de Electro-Communications Food 256 (UEC-FOOD256)30 conjuntos de datos contienen platos japoneses, ampliados con algunos platos internacionales en el caso del conjunto de datos UEC-FOOD256. El conjunto de datos Food-101 contiene platos populares adquiridos en un sitio web27. Food-5036 y Video Retrieval Group Food 172 (VireoFood-172)37 conjuntos de datos son colecciones chinas de imágenes de alimentos. El conjunto de datos de la Universidad de Milán-Bicocca 2016 (UNIMIB2016) se compone de imágenes de bandejas de alimentos de una cantina italiana38. Recipe1M es un conjunto de datos a gran escala de recetas de cocina e imágenes de alimentos39. El conjunto de datos Food-47540 recoge cuatro conjuntos de datos de imágenes de alimentos publicados anteriormente27,30,36,37 en uno. La Beijing Technology and Business University Food 60 (BTBUFood-60) es un conjunto de datos de imágenes destinadas a la detección de alimentos41. Recientemente, se puso a disposición el conjunto de datos ISIA Food-50042 de imágenes de alimentos varios. En comparación con otros conjuntos de datos de imágenes de alimentos disponibles públicamente, contiene un gran número de imágenes, divididas en 500 clases de alimentos, y está destinado a avanzar en el desarrollo de soluciones multimedia de reconocimiento de alimentos42.

Protocol

1. Reconocimiento de imágenes de alimentos con NutriNet Obtención del conjunto de datos de imágenes de alimentos Reúne una lista de diferentes alimentos y bebidas que serán las salidas del modelo de reconocimiento de imágenes alimentarias. Se prefiere una variada lista de alimentos y bebidas populares, ya que permitirá la formación de un modelo robusto de reconocimiento de imágenes alimentarias. Guarde la lista de alimentos y bebidas en un archivo de texto (por ejemplo, ‘txt’ o ‘csv’).NOTA: El archivo de texto utilizado por los autores de este artículo se puede encontrar en los archivos complementarios (‘food_items.txt’) e incluye una lista de 520 alimentos eslovenos. Escribe o descarga un script de Python43 que utiliza la API de búsqueda personalizada de Google44 para descargar imágenes de cada elemento de comida de la lista y las guarda en una carpeta independiente para cada elemento de comida.NOTA: La secuencia de comandos de Python utilizada por los autores de este artículo se puede encontrar en los archivos complementarios (‘download_images.py’). Si se utiliza este script, la clave de desarrollador (variable ‘developerKey’, línea 8 en el código de script de Python) y el ID del motor de búsqueda personalizado (variable ‘cx’, línea 28 en el código de script de Python) deben reemplazarse por valores específicos de la cuenta de Google que se está utilizando. Ejecute la secuencia de comandos de Python desde el paso 1.1.3 (por ejemplo, con el comando: ‘python download_images.py’). (Opcional) Limpieza del conjunto de datos de imágenes de alimentos Entrene un modelo de detección de imágenes de alimentos de la misma manera que en la sección 1.4, excepto utilizar solo dos salidas (alimentos, no alimentarios) en lugar de la lista de salidas del paso 1.1.1.NOTA: Los autores de este artículo utilizaron imágenes combinadas desde sitios web de recetas y el dataset ImageNet45 para entrenar el modelo de detección de imágenes de alimentos. Dado que el enfoque aquí está en el reconocimiento de imágenes de alimentos y este es un paso opcional para limpiar el conjunto de datos de reconocimiento, se omiten más detalles. En su lugar, más detalles sobre este enfoque se pueden encontrar en Mezgec et al.2. Ejecute el modelo de detección desde el paso 1.2.1 en el dataset de imagen de alimentos que es el resultado del paso 1.1.4. Elimine todas las imágenes etiquetadas como no alimentarias por el modelo de detección del paso 1.2.1. Compruebe manualmente el dataset de imagen de alimentos para ver si hay otras imágenes erróneas o de baja calidad, así como si hay duplicados de imagen. Elimine las imágenes encontradas en el paso 1.2.4. Aumento del conjunto de datos de imágenes de alimentos Cree una nueva versión de cada imagen a partir del dataset de imagen de alimentos girándola en 90° utilizando la biblioteca CLoDSA46 (líneas 19 a 21 en la secuencia de comandos de Python incluida).NOTA: La secuencia de comandos de Python que contiene todos los comandos CLoDSA utilizados por los autores de este artículo se puede encontrar en un archivo incluido en los archivos complementarios (‘nutrinet_augmentation.py’). Si se utiliza este script, la ruta de entrada (variable ‘INPUT_PATH’, la línea 8 en el código de script de Python) y la ruta de salida (variable ‘OUTPUT_PATH’, línea 11 en el código de script de Python) deben reemplazarse por rutas de acceso a las carpetas deseadas. Cree una nueva versión de cada imagen a partir del dataset de imagen de alimentos girándola en 180° utilizando la biblioteca CLoDSA (líneas 19 a 21 en la secuencia de comandos de Python incluida). Cree una nueva versión de cada imagen a partir del dataset de imagen de alimentos girándola en 270° utilizando la biblioteca CLoDSA (líneas 19 a 21 en la secuencia de comandos de Python incluida). Cree una nueva versión de cada imagen a partir del dataset de imagen de alimentos volteándola horizontalmente utilizando la biblioteca CLoDSA (líneas 23 y 24 en la secuencia de comandos de Python incluida). Cree una nueva versión de cada imagen a partir del dataset de imagen de alimentos agregándole ruido de color aleatorio mediante la biblioteca CLoDSA (líneas 26 y 27 en la secuencia de comandos de Python incluida). Cree una nueva versión de cada imagen a partir del dataset de imagen de alimentos acercándola en un 25 % utilizando la biblioteca CLoDSA (líneas 29 y 30 en la secuencia de comandos de Python incluida). Guarde las imágenes de los pasos 1.3.1-1.3.6, junto con las imágenes originales (líneas 16 y 17 en la secuencia de comandos de Python incluida), en un nuevo dataset de imagen de alimentos (en total, 7 variantes por imagen de alimento). Esto se hace ejecutando el comando en la línea 32 de la secuencia de comandos de Python incluida. Realización de reconocimiento de imágenes de alimentos Importe el dataset de imagen de alimentos desde el paso 1.3.7 al entorno NVIDIA DIGITS47,dividiendo el conjunto de datos en subconjuntos de entrenamiento, validación y pruebas en la interfaz de usuario NVIDIA DIGITS. Copie y pegue el texto de definición de la arquitectura NutriNet2 en NVIDIA DIGITS como una red personalizada.NOTA: El texto de definición de arquitectura NutriNet se puede encontrar en los archivos complementarios (‘nutrinet.prototxt’). (Opcional) Defina hiperparámetros de entrenamiento en la interfaz de usuario NVIDIA DIGITS.NOTA: Los hiperparámetros son parámetros que se utilizan para definir el proceso de entrenamiento antes de su inicio. Los hiperparámetros utilizados por los autores de este artículo se pueden encontrar en un archivo incluido en los archivos complementarios (‘nutrinet_hyperparameters.prototxt’). Aunque se necesita experimentación para que cada conjunto de datos encuentre los hiperparámetros óptimos, el archivo contiene una configuración de hiperparámetros que se puede copiar en la interfaz de usuario de NVIDIA DIGITS. Además, NVIDIA DIGITS rellena los hiperparámetros con valores predeterminados que se pueden utilizar como línea base. Por lo tanto, este paso es opcional. Ejecute la formación del modelo NutriNet. Una vez completado el entrenamiento, tome la iteración del modelo NutriNet con mejor rendimiento. A continuación, este modelo se utiliza para probar el rendimiento de este enfoque.NOTA: Hay varias maneras de determinar la iteración del modelo con mejor rendimiento. Una manera sencilla de hacerlo es la siguiente. NVIDIA DIGITS emite un gráfico de medidas de precisión para cada época de entrenamiento. Compruebe qué época logró el valor de pérdida más bajo para el subconjunto de validación del dataset de imágenes de alimentos: esa iteración del modelo se puede considerar de mejor rendimiento. Un paso opcional para determinar la iteración del modelo con mejor rendimiento es observar cómo cambia el valor de pérdida para el subconjunto de entrenamiento de época a época y si comienza a caer continuamente mientras el valor de pérdida para el subconjunto de validación sigue siendo el mismo o aumenta continuamente, tome la época anterior a esta caída en el valor de pérdida de entrenamiento, como puede indicar cuando el modelo comenzó a sobreajustar en las imágenes de entrenamiento. 2. Segmentación de imágenes alimentarias con FCN Obtención del conjunto de datos de imágenes de comida falsa Obtenga un conjunto de datos de imágenes de comida falsa. Las imágenes de comida falsa son recopiladas por investigadores que llevan a cabo estudios de comportamiento utilizando réplicas de alimentos.NOTA: Los autores de este artículo recibieron imágenes de alimentos falsos que fueron recogidos en un entorno de laboratorio18. Anota manualmente cada imagen de comida en un nivel de píxel: cada píxel de la imagen debe contener información sobre a qué clase de comida pertenece. El resultado de este paso es una imagen de anotación para cada imagen del dataset de imagen de alimentos, donde cada píxel representa una de las clases de comida.NOTA: Hay muchas herramientas para lograr esto – los autores de este artículo utilizaron JavaScript Segment Annotator48. Aumento del conjunto de datos de imágenes de alimentos falsos Realice los mismos pasos que en la sección 1.3, pero solo en las imágenes del subconjunto de entrenamiento del dataset de imágenes de alimentos.NOTA: Con la excepción del paso 1.3.5, todos los pasos de aumento de datos también deben realizarse en las imágenes de anotación correspondientes. Si se utiliza el script de la sección 1.3, la ruta de entrada (variable ‘INPUT_PATH’, la línea 8 en el código de script de Python43) y la ruta de salida (variable ‘OUTPUT_PATH’, línea 11 en el código de script de Python) deben reemplazarse por rutas de acceso a las carpetas deseadas. Además, establezca el problema (variable ‘PROBLEM’, línea 6 en el código de secuencia de comandos de Python) en ‘instance_segmentation’ y el modo de anotación (variable ‘ANNOTATION_MODE’, línea 7 en el código de secuencia de comandos de Python) y modo de salida (variable ‘OUTPUT_MODE’, línea 10 en el código de secuencia de comandos de Python) en ‘coco’. Realización de segmentación de imágenes de alimentos falsos Realice los mismos pasos que en la sección 1.4, con la excepción del paso 1.4.2. En lugar de ese paso, realice los pasos 2.3.2 y 2.3.3.NOTA: Los hiperparámetros son parámetros que se utilizan para definir el proceso de entrenamiento antes de su inicio. Los hiperparámetros de formación utilizados por los autores de este artículo para el paso opcional 1.4.3 se pueden encontrar en un archivo incluido en los archivos complementarios (‘fcn-8s_hyperparameters.prototxt’). Aunque se necesita experimentación para que cada conjunto de datos encuentre el conjunto óptimo de hiperparámetros, el archivo contiene una configuración de hiperparámetros que se puede copiar en la interfaz de usuario NVIDIA DIGITS47. Además, NVIDIA DIGITS rellena los hiperparámetros con valores predeterminados que se pueden utilizar como línea base. Copie y pegue el texto de definición de la arquitectura FCN-8s15 en el entorno NVIDIA DIGITS como una red personalizada.NOTA: El texto de definición de arquitectura FCN-8s está disponible públicamente en GitHub49. Ingrese la trayectoria a los pesos del modelo FCN-8s pre-entrenados en la interfaz de usuario NVIDIA DIGITS.NOTA: Estos pesos del modelo fueron pre-entrenados en el dataset PASCAL VOC17 y se pueden encontrar en Internet49. 3. Segmentación de imágenes de alimentos con HTC ResNet Obtención del conjunto de datos de imágenes de alimentos Descargue el conjunto de datos de imágenes de alimentos desde el sitio web de FRC19. Aumento del conjunto de datos de imágenes de alimentos Realice los pasos 1.3.1-1.3.4.NOTA: El script de Python43 que contiene todos los comandos CLoDSA46 utilizados por los autores de este artículo se puede encontrar en un archivo incluido en los archivos complementarios (‘frc_augmentation.py’). Si se utiliza este script, la ruta de entrada (variable ‘INPUT_PATH’, la línea 8 en el código de script de Python) y la ruta de salida (variable ‘OUTPUT_PATH’, línea 11 en el código de script de Python) deben reemplazarse por rutas de acceso a las carpetas deseadas. Cree una nueva versión de cada imagen a partir del dataset de imagen de alimentos agregándole desenfoque gaussiano mediante la biblioteca CLoDSA (líneas 26 y 27 en la secuencia de comandos de Python incluida). Cree una nueva versión de cada imagen a partir del dataset de imagen de alimentos afilándola mediante la biblioteca CLoDSA (líneas 29 y 30 en la secuencia de comandos de Python incluida). Cree una nueva versión de cada imagen a partir del dataset de imagen de alimentos aplicándole corrección gamma mediante la biblioteca CLoDSA (líneas 32 y 33 en la secuencia de comandos de Python incluida). Guarde las imágenes de los pasos 3.2.1-3.2.4, junto con las imágenes originales (líneas 16 y 17 en la secuencia de comandos de Python incluida), en un nuevo dataset de imagen de alimentos (en total, 8 variantes por imagen de alimento). Esto se hace ejecutando el comando en la línea 35 de la secuencia de comandos de Python incluida. Guarde las imágenes de los pasos 3.2.2-3.2.4, junto con las imágenes originales (líneas 16 y 17 en la secuencia de comandos de Python incluida), en un nuevo dataset de imagen de alimentos (en total, 4 variantes por imagen de alimento). Esto se hace eliminando las líneas 19 a 24 de la secuencia de comandos de Python incluida y ejecutando el comando en la línea 35. Realización de la segmentación de imágenes alimentarias Modifique la definición existente de la arquitectura16 de HTC20 ResNet-101 desde la biblioteca MMDetection50 en las secciones “configuración del modelo” y “configuración del conjunto de datos” del archivo de definición de arquitectura para que acepte los datasets de imagen de alimentos de los pasos 3.1.1, 3.2.5 y 3.2.6. (Opcional) Modifique la definición de arquitectura de HTC ResNet-101 del paso 3.3.1 para definir hiperparámetros de entrenamiento: tamaño del lote en la sección “configuración del dataset”, tipo de solucionador y tasa de aprendizaje en la sección ‘optimizador’, política de aprendizaje en la sección “Política de aprendizaje” y número de épocas de entrenamiento en la sección “Configuración en tiempo de ejecución” del archivo de definición de arquitectura.NOTA: El archivo de definición de arquitectura HTC ResNet-101 modificado se puede encontrar en los archivos complementarios (‘htc_resnet-101.py’). Los hiperparámetros son parámetros que se utilizan para definir el proceso de entrenamiento antes de su inicio. Aunque se necesita experimentación para que cada conjunto de datos encuentre el conjunto óptimo de hiperparámetros, el archivo ya contiene una configuración de hiperparámetros que se puede utilizar sin modificaciones. Por lo tanto, este paso es opcional. Ejecute el entrenamiento del modelo HTC ResNet-101 en el dataset de imagen de alimentos desde el paso 3.1.1 utilizando la biblioteca MMDetection (por ejemplo, con el comando: ‘python mmdetection/tools/train.py htc_resnet-101.py’). Una vez completado el entrenamiento del paso 3.3.3, tome la iteración del modelo HTC ResNet-101 con mejor rendimiento y afinarlo ejecutando la siguiente fase de entrenamiento en el dataset de imagen de alimentos desde el paso 3.2.5.NOTA: Hay varias maneras de determinar la iteración del modelo con mejor rendimiento. Una manera sencilla de hacerlo es la siguiente. La biblioteca MMDetection genera valores de medidas de precisión para cada época de entrenamiento en la interfaz de línea de comandos. Compruebe qué época logró el valor de pérdida más bajo para el subconjunto de validación del dataset de imágenes de alimentos: esa iteración del modelo se puede considerar de mejor rendimiento. Un paso opcional para determinar la iteración del modelo con mejor rendimiento es observar cómo cambia el valor de pérdida para el subconjunto de entrenamiento de época a época y si comienza a caer continuamente mientras el valor de pérdida para el subconjunto de validación sigue siendo el mismo o aumenta continuamente, tome la época anterior a esta caída en el valor de pérdida de entrenamiento, como puede indicar cuando el modelo comenzó a sobreajustar en las imágenes de entrenamiento. Una vez completado el entrenamiento del paso 3.3.4, tome la iteración del modelo HTC ResNet-101 con mejor rendimiento y afinarlo ejecutando la siguiente fase de entrenamiento en el dataset de imagen de alimentos desde el paso 3.2.6.NOTA: Consulte la nota para el paso 3.3.4. Una vez completado el entrenamiento del paso 3.3.5, tome la iteración del modelo HTC ResNet-101 con mejor rendimiento y afinarlo ejecutando de nuevo la siguiente fase de entrenamiento en el dataset de imagen de alimentos desde el paso 3.2.5.NOTA: Consulte la nota para el paso 3.3.4. Una vez completado el entrenamiento del paso 3.3.6, tome la iteración del modelo HTC ResNet-101 con mejor rendimiento. A continuación, este modelo se utiliza para probar el rendimiento de este enfoque.NOTA: Consulte la nota para el paso 3.3.4. Los pasos 3.3.3-3.3.7 dieron los mejores resultados para los fines definidos por los autores de este artículo. Se necesita experimentación para que cada conjunto de datos encuentre la secuencia óptima de pasos de entrenamiento y aumento de datos.

Representative Results

NutriNet fue probado contra tres arquitecturas populares de aprendizaje profundo de la época: AlexNet14,GoogLeNet51 y ResNet16. También se probaron varios parámetros de entrenamiento para todas las arquitecturas para definir los valores óptimos2. Entre ellos está la elección del tipo de solucionador, que determina cómo se minimiza la función de pérdida. Esta función es la principal medida de calidad para entrenar redes neuronales, ya que es más adecuada para la optimización durante el entrenamiento que la precisión de la clasificación. Probamos tres solucionadores: Descenso estocástico de degradado (SGD)52,Gradiente acelerado (NAG)53 de Nesterov y algoritmo de gradiente adaptativo (AdaGrad)54. El segundo parámetro es el tamaño del lote, que define el número de imágenes que se procesan al mismo tiempo. La profundidad de la arquitectura de aprendizaje profundo determinó el valor de este parámetro, ya que las arquitecturas más profundas requieren más espacio en la memoria GPU – la consecuencia de este enfoque fue que la memoria estaba completamente llena de imágenes para todas las arquitecturas, independientemente de la profundidad. El tercer parámetro es la tasa de aprendizaje, que define la velocidad con la que se cambian los parámetros de la red neuronal durante el entrenamiento. Este parámetro se estableció al unísono con el tamaño del lote, ya que el número de imágenes procesadas simultáneamente dicta la tasa de convergencia. Los modelos AlexNet fueron entrenados usando un tamaño de lote de 256 imágenes y una tasa de aprendizaje base de 0.02; NutriNet utilizó un tamaño de lote de 128 imágenes y una tasa de 0,01; Imágenes de GoogLeNet 64 y una velocidad de 0,005; y ResNet 16 imágenes y una velocidad de 0.00125. Otros tres parámetros se fijaron para todas las arquitecturas: política de tasa de aprendizaje (paso abajo), tamaño de paso (30 %) y gamma (0.1). Estos parámetros describen conjuntamente cómo la tasa de aprendizaje está cambiando en cada época. La idea detrás de este enfoque es que la tasa de aprendizaje se está reduciendo gradualmente para ajustar el modelo cuanto más se acerca al valor de pérdida óptimo. Por último, el número de épocas de formación también se fijó en 150 para todas las arquitecturas de aprendizaje profundo2. El mejor resultado entre todos los parámetros probados que NutriNet logró fue una precisión de clasificación del 86,72% en el conjunto de datos de reconocimiento, que fue alrededor de un 2% más alto que el mejor resultado para AlexNet y ligeramente superior al mejor resultado de GoogLeNet. La arquitectura con mejor rendimiento en general fue ResNet (alrededor del 1%), sin embargo, el tiempo de entrenamiento para ResNet es sustancialmente mayor en comparación con NutriNet (por un factor de aproximadamente cinco), lo que es importante si los modelos están continuamente entrenados para mejorar la precisión y el número de alimentos reconocibles. NutriNet, AlexNet y GoogLeNet lograron sus mejores resultados con el solucionador AdaGrad, mientras que el mejor modelo de ResNet utilizó el solucionador NAG. NutriNet también se probó en el conjunto de datos de imágenes de alimentos UNIMIB2016 disponible públicamente38. Este conjunto de datos contiene 3.616 imágenes de 73 productos alimenticios diferentes. NutriNet logró una precisión de reconocimiento del 86,39% en este conjunto de datos, superando ligeramente el resultado de reconocimiento de referencia de los autores del conjunto de datos, que fue del 85,80%. Además, NutriNet fue probado en un pequeño conjunto de datos de 200 imágenes del mundo real de 115 artículos diferentes de alimentos y bebidas, donde NutriNet alcanzó una precisión top-5 del 55%. Para entrenar el modelo de segmentación de imágenes de comida falsa FCN-8s, usamos Adam55 como el tipo de solucionador, ya que encontramos que funcionaba de manera óptima para esta tarea. La tasa de aprendizaje base se estableció muy baja – a 0.0001. La razón del número bajo es el hecho de que solo se podría procesar una imagen a la vez, lo que es una consecuencia del proceso de clasificación de nivel de píxel. Los requisitos de memoria GPU para este enfoque son significativamente mayores que la clasificación de nivel de imagen. Por lo tanto, la tasa de aprendizaje debía establecerse baja para que los parámetros no se cambiaran demasiado rápido y convergieran a valores menos óptimos. El número de épocas de entrenamiento se estableció en 100, mientras que la política de tasa de aprendizaje, el tamaño del paso y la gamma se establecieron en un descenso, un 34% y un 0,1, respectivamente, ya que estos parámetros produjeron los modelos más precisos. Las mediciones de precisión del modelo FCN-8s se realizaron utilizando la medida de precisión de píxeles15, que es análoga a la precisión de clasificación de las redes tradicionales de aprendizaje profundo, la principal diferencia es que la precisión se calcula en el nivel de píxel en lugar de en el nivel de imagen: donde PA es la medida de precisión de píxeles, nij es el número de píxeles de la clase i predicho que pertenecen a la clase j y ti = Σj nij es el número total de píxeles de clase en las etiquetas de la verdad de tierra1. En otras palabras, la medida de precisión de píxeles se calcula dividiendo píxeles predichos correctamente por el número total de píxeles. La precisión final del modelo fcn-8s entrenado fue del 92,18%. La Figura 2 muestra tres imágenes de ejemplo del conjunto de datos de imágenes de comida falsa (una de cada uno de los subconjuntos de entrenamiento, validación y pruebas), junto con las etiquetas de predicción de la verdad del terreno y del modelo correspondientes. Los parámetros para entrenar el modelo HTC20 ResNet-101 para la segmentación de imágenes de alimentos se establecieron de la siguiente manera: el tipo de solucionador utilizado era SGD porque superaba a otros tipos de solucionador. La tasa de aprendizaje base se estableció en 0,00125 y el tamaño del lote en 2 imágenes. El número de épocas de entrenamiento se estableció en 40 por fase de entrenamiento, y se realizaron múltiples fases de entrenamiento – primero en el dataset FRC original sin imágenes aumentadas, luego en el conjunto de datos FRC aumentado y aumentado 4 veces varias veces de una manera alterna, cada vez tomando el modelo de mejor rendimiento y afinando en la siguiente fase de entrenamiento. Puede encontrar más detalles sobre las fases de entrenamiento en la sección 3.3 del texto del protocolo. Por último, se utilizó la política de aprendizaje de reducción, con épocas fijas para cuando la tasa de aprendizaje disminuyó (épocas 28 y 35 para la primera fase de entrenamiento). Una cosa importante a tener en cuenta es que si bien esta secuencia de fases de entrenamiento produjo los mejores resultados en nuestras pruebas en el ámbito de la FRC, el uso de otro conjunto de datos podría requerir una secuencia diferente para producir resultados óptimos. Esta solución basada en ResNet para la segmentación de imágenes de alimentos se evaluó utilizando la siguiente medida de precisión19: donde P es precisión, TP es el número de predicciones positivas verdaderas por el modelo de segmentación de imágenes alimentarias, FP es el número de predicciones falsos positivos e IoU es Intersección sobre Unión, que se calcula con esta ecuación: donde Área de superposición representa el número de predicciones del modelo que se superponen con la verdad del suelo, y Área de unión representa el número total de predicciones del modelo junto con la verdad del suelo, tanto en un nivel de píxel como para cada clase de alimentos individual. La retirada se utiliza como medida secundaria y se calcula de forma similar, utilizando la siguiente fórmula19: donde R es recall y FN es el número de predicciones negativas falsas por el modelo de segmentación de imágenes de alimentos. Las medidas de precisión y retirada se promedian en todas las clases de la verdad del terreno. Con estas medidas, nuestro modelo logró una precisión media del 59,2% y una recuperación media del 82,1%, que ocupó el segundo lugar en la segunda ronda del Desafío de Reconocimiento Alimentario19. Este resultado fue un 4,2% por detrás del primer lugar y un 5,3% por delante del tercer lugar en términos de la medida media de precisión. La Tabla 1 contiene los resultados para los 4 mejores participantes en la competición. Figura 1: Diagrama de la arquitectura de red neuronal profunda nutrinet. Esta cifra ha sido publicada en Mezgec et al.2. Haga clic aquí para ver una versión más grande de esta figura. Figura 2: Imágenes del dataset de imagen de comida falsa. Imágenes originales (izquierda), etiquetas de verdad de suelo etiquetadas manualmente (centro) y predicciones del modelo FCN-8s (derecha). Esta cifra ha sido publicada en Mezgec et al.1. Haga clic aquí para ver una versión más grande de esta figura. Nombre del equipo Colocación Precisión media Retiro medio rssfete 1 63.4% 88.6% simon_mezgec 2 59.2% 82.1% arimboux 3 53.9% 73.5% latentevec 4 48.7% 71.1% Tabla 1: Resultados top-4 de la segunda ronda del Desafío de Reconocimiento de Alimentos. La precisión media se toma como medida de rendimiento principal y recuperación media como medida secundaria. Los resultados se toman de la clasificación oficial de la competencia19. Archivos suplementarios. Haga clic aquí para descargar este archivo.

Discussion

En los últimos años, las redes neuronales profundas han sido validadas varias veces como una solución adecuada para reconocer imágenes de alimentos10,11,12,21,23,25,26,29,31,33. Nuestro trabajo presentado en este artículo sirve para probar aún más este1,2. El enfoque de reconocimiento de imágenes de alimentos de una sola salida es sencillo y se puede utilizar para aplicaciones sencillas en las que se esperan imágenes con un solo artículo de alimentos o bebidas2.

El enfoque de segmentación de imágenes alimentarias parece particularmente adecuado para reconocer imágenes de alimentos en general, sin ninguna restricción en el número de alimentos1. Dado que funciona clasificando cada píxel individual de la imagen, no solo es capaz de reconocer ningún número de alimentos de la imagen, sino también especificar dónde se encuentra un elemento alimenticio, así como qué tan grande es. Este último se puede utilizar para realizar la estimación del peso de los alimentos, especialmente si se utiliza con un objeto de referencia o una cámara de distancia fija.

Se ha hecho algún trabajo con respecto a la disponibilidad de conjuntos de datos de imágenes de alimentos3,22,27,30,36,37,38,39,40,41,42,y esperamos que se haga más en el futuro, particularmente cuando se trata de agregar conjuntos de datos de imágenes de alimentos de diferentes regiones del mundo, lo que permitiría desarrollar soluciones más robustas. Actualmente, la precisión de las soluciones automáticas de reconocimiento de imágenes de alimentos aún no ha alcanzado la precisión a nivel humano35,y esto es probable en gran parte debido al uso de conjuntos de datos de imágenes de alimentos de tamaño y calidad insuficientes.

En el futuro, nuestro objetivo será evaluar aún más los procedimientos desarrollados sobre imágenes del mundo real. En general, los datasets de este campo a menudo contienen imágenes tomadas en entornos controlados o imágenes optimizadas manualmente para el reconocimiento. Esta es la razón por la que es importante reunir un conjunto de datos de imágenes de alimentos grandes y diversos del mundo real para abarcar todos los diferentes alimentos y bebidas que las personas podrían querer reconocer. El primer paso hacia esto fue proporcionado por el Desafío de Reconocimiento Alimentario, que incluía un conjunto de datos de imágenes de alimentos del mundo real19,pero es necesario seguir trabajando para validar este enfoque en imágenes de alimentos de todo el mundo y en cooperación con dietistas.

Disclosures

The authors have nothing to disclose.

Acknowledgements

Los autores quieren agradecer a Tamara Bucher de la Universidad de Newcastle, Australia, por proporcionar el conjunto de datos de imágenes de comida falsa. Este trabajo fue apoyado por los programas de investigación e innovación Horizonte 2020 de la Unión Europea (números de subvención 863059 – FNS-Cloud, 769661 – SAAM); y la Agencia eslovena de investigación (número de subvención P2-0098). La Unión Europea y la Agencia eslovena de investigación no tuvieron ningún papel en el diseño, análisis o escritura de este artículo.

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