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 tales enfoques basados en imágenes para la evaluación dietética utilizando redes neuronales profundas, que representan el estado de la técnica en el campo.
En concreto, se presentarán tres soluciones, una para el reconocimiento de imágenes alimentarias, otra para la segmentación de imágenes de réplicas de alimentos, o alimentos falsos, y otra para la segmentación de imágenes de alimentos reales. Reúne una lista de diferentes alimentos y bebidas que serán las salidas del modelo de reconocimiento de imágenes alimentarias. Guarde la lista de alimentos y bebidas en un archivo de texto, como TXT o CSV.
Tenga en cuenta que el archivo de texto utilizado por los autores de este artículo se puede encontrar en los archivos suplementarios bajo los alimentos punto TXT e incluye una lista de 520 alimentos eslovenos. Escribe o descarga una secuencia de comandos de Python que utiliza la API de búsqueda personalizada de Google para descargar imágenes de cada elemento de comida de la lista y las guarda en una carpeta independiente para cada elemento de comida. Tenga en cuenta que la secuencia de comandos de Python utilizada por los autores de este artículo se puede encontrar en los archivos suplementarios en descargar imágenes punto pi.
Si se utiliza este script, la línea de clave de desarrollador de variables de desarrollador de clave de desarrollador ocho en el código de script de Python y la variable de ID del motor de búsqueda personalizado CX línea 28 en el código de secuencia de comandos 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. Cree una nueva versión de cada imagen a partir del conjunto de datos de imagen de alimentos girándola en 90 grados, utilizando la biblioteca CLoDSA.
Tenga en cuenta que 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 en NutriNet punto de aumento de subrayado pi. Cree una nueva versión de cada imagen a partir del conjunto de datos de imagen de alimentos girándola en 180 grados, utilizando la biblioteca CLoDSA. Cree una nueva versión de cada imagen a partir del conjunto de datos de imagen de alimentos girándola en 270 grados, utilizando la biblioteca CLoDSA.
Cree una nueva versión de cada imagen a partir del conjunto de datos de imagen de alimentos volteándola horizontalmente, utilizando la biblioteca CLoDSA. Cree una nueva versión de cada imagen a partir del conjunto de datos de imagen de alimentos agregándole ruido de color aleatorio, utilizando la biblioteca CLoDSA. Cree una nueva versión de cada imagen a partir del conjunto de datos de imagen de alimentos acercándola en un 25% utilizando la biblioteca CLoDSA.
Guarde las imágenes de los pasos 1.3.1 a 1.3.6 junto con las imágenes originales en un nuevo conjunto de datos de imágenes de alimentos. En total, siete variantes por imagen de alimento. Importe el conjunto de datos de imagen de alimentos desde el paso 1.3.7 al entorno de dígitos NVIDI, dividiendo el conjunto de datos en subconjuntos de entrenamiento, validación y pruebas.
Copie y pegue el texto de definición de la arquitectura NutriNet en dígitos NVIDIA. Tenga en cuenta que la definición de arquitectura NutriNet se puede encontrar en los archivos complementarios en NutriNet dot proto TXT. Opcionalmente, defina hiper-parámetros de entrenamiento en dígitos NVIDIA o utilice los valores predeterminados.
Los hiper-parámetros utilizados por los autores de este artículo se pueden encontrar en un archivo incluido en los archivos suplementarios en NutriNet subrayan los hiper-parámetros punto proto TXT. Ejecute la formación del modelo NutriNet. Una vez completado el entrenamiento, realice la iteración del modelo NutriNet con mejor rendimiento.
A continuación, este modelo se utiliza para probar el rendimiento de este enfoque. Tenga en cuenta que hay varias maneras de determinar la iteración del modelo con mejor rendimiento. Consulte los textos del artículo para obtener más detalles.
Obtenga un conjunto de datos de imágenes de alimentos falsos. Tenga en cuenta que los autores de este artículo recibieron imágenes de alimentos falsos que fueron recogidos en un ambiente de laboratorio. Anote manualmente todas las imágenes de alimentos en el nivel de píxel.
Cada píxel de la imagen debe contener información sobre a qué clase de comida pertenece. Tenga en cuenta que hay muchas herramientas para lograr esto. Los autores de este artículo utilizaron el anotador de segmento de JavaScript.
El resultado de este paso es una imagen de anotación para cada imagen del conjunto de datos de imagen de alimentos, donde cada píxel representa una de las clases de alimentos. Realice los mismos pasos que en la sección 1.3, pero solo en las imágenes del subconjunto de entrenamiento del conjunto de datos de imagen de alimentos. Tenga en cuenta que, 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.
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. Tenga en cuenta que los hiper-parámetros de entrenamiento utilizados por los autores de este artículo se pueden encontrar en el archivo incluido en los archivos suplementarios bajo FCN-8S subrayan los hiper-parámetros punto proto TXT.
Copie y pegue el texto de definición de la arquitectura FCN-8S en dígitos NVIDIA. Introduzca los pesos del modelo FCN-8S preentrenados en dígitos NVIDIA. Tenga en cuenta que estos pesos del modelo estaban preentrenados en el conjunto de datos de clases de objetos visuales Pascal y se pueden encontrar en Internet.
Descargue el conjunto de datos de imágenes de alimentos desde el sitio web de Food Recognition Challenge. Realice los pasos 1.3.1 a 1.3.4. Tenga en cuenta que la secuencia de comandos de Python que contiene todos los comandos CLoDSA utilizados por los autores de este artículo se puede encontrar en el archivo incluido en los archivos complementarios bajo FRC punto de aumento de subrayado pi.
Cree una nueva versión de cada imagen a partir del conjunto de datos de imagen de alimentos añadiendole desenfoque gaussiano, utilizando la biblioteca CLoDSA. Cree una nueva versión de cada imagen a partir del conjunto de datos de imagen de alimentos afilándola mediante la biblioteca CLoDSA. Cree una nueva versión de cada imagen a partir del conjunto de datos de imagen de alimentos aplicando corrección gamma a ella, utilizando la biblioteca CLoDSA.
Guarde las imágenes de los pasos 3.2.1 a 3.2.4 junto con las imágenes originales en un nuevo conjunto de datos de imágenes de alimentos. En total, ocho variantes por imagen de alimento. Guarde las imágenes de los pasos 3.2.2 a 3.2.4 junto con las imágenes originales en un nuevo conjunto de datos de imagen de alimentos.
En total, cuatro variantes por imagen de alimento. Modifique la definición de arquitectura existente de HTC ResNet 101 desde la biblioteca de detección MM para que acepte los conjuntos de datos de imagen de alimentos de los pasos 3.1.1, 3.2.5 y 3.2.6. Opcionalmente, modifique la definición de arquitectura de HTC ResNet 101 desde el paso 3.3.1 para definir hiper-parámetros de entrenamiento o utilice los valores predeterminados.
Tenga en cuenta que la definición de arquitectura modificada de HTC ResNet 101 se puede encontrar en los archivos complementarios bajo HTC subraya ResNet 101 punto pi. Ejecute la formación del modelo HTC ResNet 101 en los conjuntos de datos de imágenes de alimentos desde el paso 3.1.1 utilizando la biblioteca de detección MM. 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 conjunto de datos de imagen de alimentos desde el paso 3.2.5.
Tenga en cuenta que hay varias maneras de determinar la iteración del modelo con mejor rendimiento. Consulte los textos del artículo para obtener más detalles. Esto también es relevante para los siguientes pasos.
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 conjunto de datos de imagen de alimentos desde el paso 3.2.6. 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 conjunto de datos de imagen de alimentos desde el paso 3.2.5. 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. Tenga en cuenta que los pasos 3.3.3 a 3.3.7 dieron los mejores resultados para los fines definidos por los autores de este artículo. Se necesita experimentación para cada conjunto de datos para encontrar la secuencia óptima de pasos de entrenamiento y aumento de datos.
Después de probar el modelo de tendencia NutriNet logró una precisión de clasificación del 86,72% en el conjunto de datos de reconocimiento, que era alrededor de 2% más alto que AlexNet y ligeramente superior a GoogLeNet, que eran arquitecturas populares de red neuronal profunda de la época. Para medir la precisión del modelo de segmentación de imágenes de alimentos falsos FCN-8S, se utilizó la medida de precisión de píxeles. La precisión del modelo FCN-8S entrenado fue del 92,18%La solución basada en ResNet para la segmentación de imágenes alimentarias se evaluó utilizando la medida de precisión definida en el Desafío de Reconocimiento alimentario.
Con esta medida, el modelo de tren logró una precisión media del 59,2%, que ocupó el segundo lugar en el Desafío de Reconocimiento Alimentario. En los últimos años, las redes neuronales profundas han sido validadas varias veces como una solución adecuada para reconocer imágenes de alimentos. Nuestro trabajo presentado en este artículo sirve para demostrarlo aún más.
El enfoque de reconocimiento de imágenes de alimentos de salida única es sencillo y se puede utilizar para aplicaciones sencillas. Mientras que el enfoque de segmentación de imágenes de alimentos requiere más trabajo en la preparación de imágenes anotadas, pero es mucho más aplicable a las imágenes del mundo real. En el futuro, nuestro objetivo será evaluar aún más los procedimientos desarrollados sobre imágenes del mundo real.
El primer paso hacia la validación del mundo real fue proporcionado por el Desafío de Reconocimiento alimentario, que incluía un conjunto de datos de imágenes de alimentos del mundo real. Sin embargo, es necesario seguir trabajando para validar este enfoque en imágenes de alimentos de todo el mundo y en cooperación con dietistas.