Logotipo de Zephyrnet

¿Cómo crear una aplicación de asesor de calorías utilizando GenAI?

Fecha:

Introducción

Inteligencia artificial Tiene muchos casos de uso y algunos de los mejores se encuentran en la industria de la salud. Realmente puede ayudar a las personas a mantener una vida más saludable. Con el creciente auge de IA generativa, ciertas aplicaciones se realizan hoy en día con menos complejidad. Una aplicación muy útil que se puede crear es la aplicación Calorie Advisor. En este artículo solo veremos esto, inspirados en el cuidado de nuestra salud. Crearemos una aplicación simple de Asesor de calorías donde podremos ingresar las imágenes de los alimentos y la aplicación nos ayudará a calcular las calorías de cada elemento presente en los alimentos. Este proyecto forma parte de NutriGen y se centra en la salud a través de la IA.

Nutrigen

Objetivo de aprendizaje

  • La aplicación que crearemos en este artículo se basará en técnicas básicas de procesamiento de imágenes y ingeniería de Prompt.
  • Usaremos la API Google Gemini Pro Vision para nuestro caso de uso.
  • Luego, crearemos la estructura del código, donde realizaremos el Procesamiento de Imágenes y la Ingeniería Rápida. Finalmente, trabajaremos en la Interfaz de Usuario usando Streamlit.
  • Después de eso, implementaremos nuestra aplicación en el Abrazando la cara Plataforma gratis.
  • También veremos algunos de los problemas que enfrentaremos en el resultado donde Géminis no representa un alimento y proporciona un recuento incorrecto de calorías para ese alimento. También discutiremos diferentes soluciones para este problema.

Prerrequisitos

Comencemos con la implementación de nuestro proyecto, pero antes de eso, asegúrese de tener un conocimiento básico de la IA generativa y los LLM. Está bien si sabes muy poco porque, en este artículo, implementaremos cosas desde cero.

Para Essential Python Prompt Engineering, se requiere una comprensión básica de la IA generativa y estar familiarizado con Google Gemini. Además, conocimientos básicos de iluminado, Githuby Abrazando la cara Las bibliotecas son necesarias. También es beneficioso estar familiarizado con bibliotecas como PIL para fines de preprocesamiento de imágenes.

Este artículo fue publicado como parte del Blogatón de ciencia de datos.

Tabla de contenidos.

Portafolio de Proyectos

En este artículo, trabajaremos en la creación de un asistente de inteligencia artificial que ayude a nutricionistas y a personas a tomar decisiones informadas sobre sus elecciones de alimentos y a mantener un estilo de vida saludable.

El flujo será así: imagen de entrada -> procesamiento de imágenes -> ingeniería de avisos -> llamada a función final para obtener el resultado de la imagen de entrada de la comida. Esta es una breve descripción general de cómo abordaremos el planteamiento de este problema.

Descripción general de Gemini Pro Visión

Gemini Pro es un multimodal LLM construido por Google. Fue entrenado para ser multimodal desde cero. Puede funcionar bien en diversas tareas, incluidos subtítulos de imágenes, clasificación, resúmenes, respuestas a preguntas, etc. Uno de los hechos fascinantes es que utiliza nuestra famosa arquitectura Transformer Decoder. Fue capacitado en múltiples tipos de datos, lo que redujo la complejidad de resolver entradas multimodales y proporcionó resultados de calidad.

Paso 1: crear el entorno virtual

Crear un entorno virtual es una buena práctica para aislar nuestro proyecto y sus dependencias de manera que no coincidan con otros, y siempre podamos tener diferentes versiones de bibliotecas que necesitemos en diferentes entornos virtuales. Entonces, ahora crearemos un entorno virtual para el proyecto. Para hacer esto, siga los pasos mencionados a continuación:

  • Cree una carpeta vacía en el escritorio para el proyecto.
  • Abra esta carpeta en VS Code.
  • Abra la terminal.

Escribe el siguiente comando:

pip install virtualenv
python -m venv genai_project

Puede utilizar el siguiente comando si recibe un error de política de ejecución segura:

Set-ExecutionPolicy RemoteSigned -Scope Process

Ahora necesitamos activar nuestro entorno virtual, para ello utilice el siguiente comando:

.genai_projectScriptsactivate

Hemos creado con éxito nuestro entorno virtual.

Paso Crear entorno virtual en Google Colab

También podemos crear nuestro Entorno Virtual en Google Colab; Aquí está el procedimiento paso a paso para hacerlo:

  • Crear un nuevo cuaderno de Colab
  • Utilice los siguientes comandos paso a paso
!which python
!python --version
#to check if python is installed or not
%env PYTHONPATH=
# setting python path environment variable in empty value ensuring that python
# won't search for modules and packages in additional directory. It helps
# in avoiding conflicts or unintended module loading.
!pip install virtualenv 
# create virtual environment 
!virtualenv genai_project
!wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh

#This will help download the miniconda installer script which is used to create
# and manage virtual environments in python
!chmod +x Miniconda3-latest-Linux-x86_64.sh
# this command is making our mini conda installer script executable within
# the colab environment. 
!./Miniconda3-latest-Linux-x86_64.sh -b -f -p /usr/local
# this is used to run miniconda installer script and 
# specify the path where miniconda should be installed
!conda install -q -y --prefix /usr/local python=3.8 ujson
#this will help install ujson and python 3.8 installation in our venv.
import sys
sys.path.append('/usr/local/lib/python3.8/site-packages/')
#it will allow python to locate and import modules from a venv directory
import os
os.environ['CONDA_PREFIX'] = '/usr/local/envs/myenv'

# used to activate miniconda enviornment 
!python --version
#checks the version of python within the activated miniconda environment

Por lo tanto, también creamos nuestro entorno virtual en Google Colab. Ahora, revisemos y veamos cómo podemos crear un archivo .py básico allí.

!source myenv/bin/activate
#activating the virtual environment
!echo "print('Hello, world!')" >> my_script.py
# writing code using echo and saving this code in my_script.py file
!python my_script.py
#running my_script.py file

Esto imprimirá Hello World en el resultado. Eso es todo. Se trataba de trabajar con entornos virtuales en Google Colab. Ahora, sigamos con el proyecto.

Paso 2: Importar las bibliotecas necesarias

import streamlit as st
import google.generativeaias genai 
import os 
from dotenv import load_dotenv
load_dotenv()
from PIL import Image

Si tiene problemas para importar cualquiera de las bibliotecas anteriores, siempre puede usar el comando "pip install nombre_biblioteca" para instalarla.

Estamos utilizando la biblioteca Streamlit para crear la interfaz de usuario básica. El usuario podrá cargar una imagen y obtener los resultados basados ​​en esa imagen.

Usamos Google Generative para obtener el LLM y analizar la imagen para obtener el recuento de calorías por artículo en nuestros alimentos.

La imagen se utiliza para realizar algún preprocesamiento básico de la imagen.

Paso 3: configurar la clave API

Cree un nuevo archivo .env en el mismo directorio y almacene su clave API. Puedes obtener Google API de Géminis clave de Google MakerSuite.

Paso 4: Función del generador de respuesta

Aquí, crearemos una función generadora de respuestas. Analicémoslo paso a paso:

En primer lugar, utilizamos genes. Configure para configurar la API que creamos desde el sitio web de Google MakerSuite. Luego, creamos la función get_gemini_response, que toma 2 parámetros de entrada: el mensaje de entrada y la imagen. Esta es la función principal que devolverá el resultado en texto.

genai.configure(api_key=os.getenv("GOOGLE_API_KEY"))

def get_gemini_response(input_prompt, image):

    model = genai.GenerativeModel('gemini-pro-vision')

    response = model.generate_content([input_prompt, image[0]])

    return response

Aquí utilizamos el modelo 'Gemini-pro-vision' porque es multimodal. Después de llamar a nuestro modelo desde la dependencia genie.GenerativeModel, simplemente pasamos nuestro mensaje y los datos de la imagen al modelo. Finalmente, según las instrucciones proporcionadas en el mensaje y los datos de la imagen que proporcionamos, el modelo devolverá el resultado en forma de texto que representa el recuento de calorías de los diferentes alimentos presentes en la imagen.

Paso 5: preprocesamiento de imágenes

Esta función comprueba si el parámetro uploaded_file es Ninguno, lo que significa que el usuario ha subido un archivo. Si se ha subido un archivo, el código procede a leer el contenido del archivo en bytes utilizando el método getvalue() del objeto uploaded_file. Esto devolverá los bytes sin procesar del archivo cargado.

Los datos de bytes obtenidos del archivo cargado se almacenan en un formato de diccionario bajo el par clave-valor "mime_type" y "data". La clave “mime_type” almacena el tipo MIME del archivo cargado, que indica el tipo de contenido (por ejemplo, imagen/jpeg, imagen/png). La clave "datos" almacena los bytes sin procesar del archivo cargado.

Luego, los datos de la imagen se almacenan en una lista denominada image_parts, que contiene un diccionario con el tipo MIME y los datos del archivo cargado.

def input_image_setup(uploaded_file):
    if uploaded_file isnotNone:
        #Read the file into bytes
        bytes_data = uploaded_file.getvalue()
        image_parts = [
            {
                "mime_type":uploaded_file.type, 
                "data":bytes_data
            }
        ]
        return image_parts
    else:
        raise FileNotFoundError("No file uploaded")

Paso 6: creación de la interfaz de usuario

Entonces, finalmente, es hora de crear la interfaz de usuario para nuestro proyecto. Como se mencionó anteriormente, usaremos la biblioteca Streamlit para escribir el código para la interfaz.

## initialising the streamlit app
st.set_page_config(page_title="Calories Advisor App")
st.header("Calories Advisor App")
uploaded_file = st.file_uploader("Choose an image...", type=["jpg", "jpeg", "png"])
image = ""
if uploaded_file isnotNone:
    image = Image.open(uploaded_file)
    st.image(image, caption="Uploaded Image", use_column_width=True)
submit = st.button("Tell me about the total calories")

Inicialmente, configuramos la página usando set_page_config y le dimos un título a la aplicación. Luego, creamos un encabezado y agregamos un cuadro de carga de archivos donde los usuarios pueden cargar imágenes. St. Image muestra la imagen que el usuario cargó en la interfaz de usuario. Por último, hay un botón de envío, después del cual obtendremos los resultados de nuestra versión de lenguaje grande, Gemini Pro Vision.

Paso 7: escribir el mensaje del sistema

Ahora es el momento de ser creativo. Aquí, crearemos nuestro mensaje de entrada y le pediremos al modelo que actúe como un nutricionista experto. No es necesario utilizar el siguiente mensaje; También puede proporcionar su mensaje personalizado. Le estamos pidiendo a nuestro modelo que actúe de cierta manera por ahora. Con base en la imagen de entrada del alimento proporcionada, le pedimos a nuestro modelo que lea los datos de la imagen y genere la salida, lo que nos dará el recuento de calorías de los alimentos presentes en la imagen y nos permitirá juzgar si el alimento es saludable. o insalubre. Si el alimento es dañino, le pedimos que brinde alternativas más nutritivas a los alimentos a nuestra imagen. Puedes personalizarlo más según tus necesidades y obtener una excelente manera de realizar un seguimiento de tu salud.

A veces es posible que no pueda leer los datos de la imagen correctamente; también analizaremos las soluciones al respecto al final de este artículo.

input_prompt = """

You are an expert nutritionist where you need to see the food items from the 
image and calculate the total calories, also give the details of all 
the food items with their respective calorie count in the below fomat.

        1. Item 1 - no of calories

        2. Item 2 - no of calories

        ----

        ----

Finally you can also mention whether the food is healthy or not and also mention 
the percentage split ratio of carbohydrates, fats, fibers, sugar, protein and 
other important things required in our diet. If you find that food is not healthy 
then you must provide some alternative healthy food items that user can have 
in diet.

"""
if submit:

    image_data = input_image_setup(uploaded_file)

    response = get_gemini_response(input_prompt, image_data)

    st.header("The Response is: ")

    st.write(response)

Finalmente, estamos comprobando que si el usuario hace clic en el botón Enviar, obtendremos los datos de la imagen del

función input_image_setup que creamos anteriormente. Luego, pasamos nuestro mensaje de entrada y los datos de esta imagen a la función get_gemini_response que creamos anteriormente. Llamamos a todas las funciones que creamos anteriormente para almacenar el resultado final en respuesta.

Paso 8: Implementar la aplicación en Hugging Face

Ahora es el momento del despliegue. Vamos a empezar.

Explicará la forma más sencilla de implementar esta aplicación que creamos. Hay dos opciones que podemos considerar si queremos implementar nuestra aplicación: una es Streamlit Share y la otra es Hugging Face. Aquí usaremos Hugging Face para la implementación; Puedes intentar explorar la implementación en Streamlit Share iFaceu si lo deseas. Aquí está el enlace de referencia para eso: Implementación en Streamlit Share

Primero, creemos rápidamente el archivo de requisitos.txt que necesitamos para la implementación.

Abra la terminal y ejecute el siguiente comando para crear un archivo de requisitos.txt.

pip freeze > requirements.txt1plainText

Esto creará un nuevo archivo de texto llamado requisitos. Todas las dependencias del proyecto estarán disponibles allí. Si esto causa un error, está bien. Siempre puedes crear un nuevo archivo de texto en tu directorio de trabajo y copiar y pegar el archivo requisitos.txt desde el enlace de GitHub que proporcionaré a continuación.

Ahora, asegúrese de tener estos archivos a mano (porque eso es lo que necesitamos para la implementación):

  • aplicación.py
  • .env (para las credenciales de API)
  • requerimientos.txt

Si no tiene uno, tome todos estos archivos y cree una cuenta en Hugging Face. Luego, crea un nuevo espacio y sube los archivos allí. Eso es todo. Su aplicación se implementará automáticamente de esta manera. También podrás ver cómo se está realizando el despliegue en tiempo real. Si ocurre algún error, siempre puedes solucionarlo con la interfaz simple y, por supuesto, la comunidad de caras abrazadas, que tiene una gran cantidad de contenido sobre cómo resolver algunos errores comunes durante la implementación.

Después de un tiempo, podrás ver la aplicación funcionando. ¡Guau! Finalmente creamos e implementamos nuestra aplicación de predicción de calorías. ¡¡Felicitaciones!! Puedes compartir el enlace de trabajo de la aplicación con los amigos y familiares que acabas de crear.

Aquí está el enlace de trabajo a la aplicación que acabamos de crear: The Alorsolvingor. Aplicación

Probemos nuestra aplicación proporcionándole una imagen de entrada:

Antes de:

Nutrigen

Después:

Nutrigen

Aquí está el completo enlace al repositorio de github que incluye código fuente y otra información útil sobre el proyecto.

Puede clonar el repositorio y personalizarlo según sus requisitos. Intente ser más creativo y claro en sus indicaciones, ya que esto le dará a su modelo más poder para generar resultados correctos y adecuados.

Alcance de la mejora

Problemas que pueden ocurrir en los resultados generados por el modelo y sus soluciones:

A veces, puede haber situaciones en las que no obtendrá el resultado correcto del modelo. Esto puede suceder porque el modelo no pudo predecir la imagen correctamente. Por ejemplo, si proporciona imágenes de su comida y su alimento contiene encurtidos, entonces nuestro modelo podría considerarlo de otra manera. Esta es la principal preocupación aquí.

  • Una forma de abordar esto es a través de técnicas efectivas de ingeniería de avisos, como la ingeniería de avisos de pocas tomas, donde puede alimentar el modelo con ejemplos y luego generará los resultados basados ​​en lo aprendido de esos ejemplos y el aviso que usted proporcionó.
  • Otra solución que se puede considerar aquí es crear nuestros datos personalizados y ajustarlos. Podemos crear datos que contengan una imagen del alimento en una columna y una descripción de los alimentos presentes en la otra columna. Esto ayudará a nuestro modelo a aprender los patrones subyacentes y predecir los elementos correctamente en la imagen proporcionada. Por lo tanto, es esencial obtener resultados más correctos del recuento de calorías para las imágenes de los alimentos.
  • Podemos ir más allá preguntando al usuario sobre sus objetivos nutricionales y pidiendo al modelo que genere resultados basados ​​en eso. (De esta manera, podremos personalizar los resultados generados por el modelo y ofrecer resultados más específicos del usuario).

Conclusión

Hemos profundizado en la aplicación práctica de la IA generativa en la atención sanitaria, centrándonos en la creación de la aplicación Calorie Advisor. Este proyecto muestra el potencial de la IA para ayudar a las personas a tomar decisiones informadas sobre sus elecciones de alimentos y mantener un estilo de vida saludable. Desde la configuración de nuestro entorno hasta la implementación del procesamiento de imágenes y técnicas de ingeniería rápida, hemos cubierto los pasos esenciales. La implementación de la aplicación en Hugging Face demuestra su accesibilidad a un público más amplio. Desafíos como las imprecisiones en el reconocimiento de imágenes se abordaron con soluciones como una ingeniería rápida y eficaz. Como conclusión, la aplicación Calorie Advisor es un testimonio del poder transformador de la IA generativa para promover el bienestar.

Puntos clave

  • Hemos discutido mucho hasta ahora, comenzando con la cartera de proyectos y luego una introducción básica al modelo de lenguaje grande Gemini Pro Vision.
  • Luego, comenzamos con la implementación práctica. Creamos nuestro entorno virtual y clave API desde Google MakerSuite.
  • Luego, realizamos toda nuestra codificación en el entorno virtual creado. Además, analizamos cómo implementar la aplicación en múltiples plataformas, como Hugging Face y Streamlit Share.
  • Aparte de eso, consideramos los posibles problemas que pueden ocurrir y discutimos las soluciones a esos problemas.
  •  Por lo tanto, fue divertido trabajar en este proyecto. Gracias por quedarse hasta el final de este artículo; Espero que puedas aprender algo nuevo.

Preguntas frecuentes

Q1. ¿Qué es el modelo Google Gemini Pro Vision?

Google desarrolló Gemini Pro Vision, un LLM de renombre conocido por sus capacidades multimodales. Realiza tareas como subtítulos, generación y resumen de imágenes. Los usuarios pueden crear una clave API en el sitio web de MakerSuite para acceder a Gemini Pro Vision.

Q2. ¿Cómo se puede aplicar la IA generativa al ámbito de la salud y la nutrición?

R. La IA generativa tiene un gran potencial para resolver problemas del mundo real. Algunas de las formas en que se puede aplicar al ámbito de la salud y la nutrición son que puede ayudar a los médicos a recetar medicamentos en función de los síntomas y actuar como asesor nutricional, donde los usuarios pueden obtener recomendaciones saludables para sus dietas.

Q3. ¿Cómo resuelve la ingeniería rápida el caso del uso de IA generativa?

R. La ingeniería rápida es una habilidad esencial que debemos dominar en estos días. El mejor lugar para aprender ingeniería trompt desde básica hasta avanzada es aquí: https://www.promptingguide.ai/

Q4. ¿Cómo aumentar la capacidad del modelo para generar resultados más correctos?

R. Para aumentar la capacidad del modelo para generar resultados más correctos, podemos utilizar las siguientes tácticas: indicaciones efectivas, ajuste fino y generación aumentada de recuperación (RAG).

Los medios que se muestran en este artículo no son propiedad de Analytics Vidhya y se utilizan a discreción del autor.

punto_img

Información más reciente

punto_img