Imagina tener la capacidad de desarrollar aplicaciones web que no solo interactúan con usuarios, sino que también pueden interpretar y analizar imágenes en tiempo real. Esto no es ciencia ficción, es la combinación de Flask y YOLOv8 en acción.
Flask, conocido por su simplicidad y flexibilidad, ha ganado su lugar como un pilar en el mundo del desarrollo web. Su enfoque minimalista permite a los desarrolladores construir aplicaciones web robustas de manera eficiente.
No podemos dejar de mencionar a YOLOv8, un sistema de detección de objetos en tiempo real que ha revolucionado este campo gracias a su velocidad y precisión. ¿Y qué pasaría si combinamos esta potente herramienta con Flask? Bueno, estaríamos dando un paso gigante hacia la creación de una API (Interfaz de Programación de Aplicaciones) que no solo sería flexible y fácil de usar, sino que abriría un mundo de posibilidades en tareas de detección de objetos. Con esta combinación, estamos hablando de dotar a las máquinas con una capacidad de percepción sorprendente.
Entendiendo a Flask
Piensa en Flask como una especie de esqueleto que te da la estructura básica de una aplicación web. Te permite manejar rutas, recibir datos de formularios y enviar respuestas al navegador. Una de las cosas geniales de Flask es su simplicidad. No es abrumador como algunos otros marcos de trabajo, lo que lo hace perfecto para proyectos más pequeños o para personas que están comenzando a desarrollar aplicaciones web con python.
Las ventajas de desarrollar con Flask
Flask es un microframework web en el mundo de Python. Es rápido, sencillo y te facilita la vida. Algunas ventajas de Flask incluyen:
Simplicidad y Minimalismo: Flask es conocido por su simplicidad. No viene con una tonelada de características abrumadoras, lo que facilita su comprensión y uso.
Flexibilidad: Flask te permite elegir las herramientas y bibliotecas que desees utilizar en tu proyecto. No impone restricciones, lo que significa que puedes construir la aplicación a tu manera.
Micro-Framework pero Escalable: Aunque Flask es un micro-framework, es altamente escalable. Puedes comenzar con una aplicación pequeña y simple, y luego expandirla a medida que tus necesidades crezcan.
Documentación Detallada: La documentación de Flask es amplia y está bien escrita. Esto facilita aprender y trabajar con el framework, especialmente para principiantes.
Gran Comunidad y Soporte Activo: Flask tiene una comunidad activa de desarrolladores y usuarios que están dispuestos a ayudar. Puedes encontrar una amplia gama de recursos en línea y foros de discusión. Aquí tienes algunas de las principales comunidades y recursos de Flask:
- Stack Overflow – Etiqueta Flask: La etiqueta «Flask» en Stack Overflow está dedicada a preguntas relacionadas con Flask. Aquí, puedes encontrar soluciones para problemas específicos y aprender de la experiencia de otros desarrolladores.
- Dev.to – Comunidad de Flask: En la sección de Flask, puedes encontrar publicaciones, tutoriales y discusiones sobre Flask
- Flask en Gitter: En el canal de Flask, puedes interactuar con otros desarrolladores de Flask y obtener ayuda en tiempo real.
Flask en el mundo empresarial
A continuación exploraremos cómo algunas de las empresas más destacadas del mundo aprovechan Flask en sus operaciones diarias.
Reddit: Manejo de solicitudes y respuestas
Una de las comunidades en línea más vibrantes y diversas, aprovecha las ventajas de Flask. La plataforma utiliza Flask para manejar eficientemente las solicitudes y respuestas de HTTP, permitiendo a los usuarios interactuar de manera rápida y sin problemas. Además, Flask posibilita la creación de páginas web dinámicas y personalizables, lo que es esencial en un entorno en el que el contenido se actualiza constantemente.
La flexibilidad de Flask también juega un papel crucial en la personalización de Reddit. La plataforma está compuesta por una multitud de comunidades y subreddits, cada uno con su propia identidad y enfoque. Flask permite a los desarrolladores adaptar la apariencia y la funcionalidad de estos subreddits, brindando a los usuarios una experiencia única.
Fylt: Gestión de la geolocalización
Un aspecto destacado de cómo Lyft aprovecha Flask es la gestión de la geolocalización en tiempo real. Con millones de solicitudes de ubicación cada día, Flask proporciona una base estable para gestionar y procesar esta información de manera efectiva. Desde el rastreo de vehículos hasta la asignación de conductores, Flask permite a Lyft mantener un flujo de datos en tiempo real, garantizando que los usuarios reciban información precisa sobre la llegada de sus conductores y puedan realizar un seguimiento preciso del viaje en curso.
La simplicidad y agilidad de Flask se alinea perfectamente con la necesidad de Lyft de mantener una aplicación rápida y altamente funcional.
Pinterest: Gestión de tableros y pines
Pinterest, la popular plataforma de descubrimiento visual, ha optado por Flask para respaldar gran parte de su infraestructura tecnológica. En un entorno donde las imágenes y la interactividad son fundamentales, Flask ha proporcionado a Pinterest la base necesaria para crear una experiencia de usuario excepcionalmente visual. Desde la gestión de pines y tableros hasta las sofisticadas recomendaciones personalizadas, Flask ha permitido a Pinterest ofrecer una plataforma altamente interactiva y atractiva para sus usuarios.
Paso a paso de la integración de Flask con YOLOv8
Ahora que ya conocemos Flask, vamos a explorar cómo combinar Flask con YOLOv8 para potenciar tus proyectos de visión por computadora sin que cueste ni un centavo. Pero ¡ojo! Antes de empezar, quiero darte una advertencia importante: este método es genial para proyectos personales, pero ten en cuenta que no es la manera adecuada de implementar servicios en producción. Así que, ¡manos a la obra!
Creemos una instancia gratuita en AWS para empezar
Si estás comenzando con proyectos personales y quieres usar Amazon Web Services (AWS), ¡tienes una opción gratuita! Esto significa que puedes probar varios servicios de AWS sin gastar dinero extra, siempre y cuando no excedan ciertos límites. Es una excelente forma de mantener tus proyectos económicos.
Las instancias de capa gratuita son geniales para familiarizarse con AWS y probar diferentes servicios antes de optar por un plan pago. En esta capa gratuita tienes acceso a varios tipos de instancias, como t2.micro, t3.micro y t4g.micro, que te dan un nivel básico de rendimiento de CPU, memoria y almacenamiento más eficiente para cubrir las necesidades básicas de tus proyectos.
Estas instancias son ideales para ejecutar aplicaciones a pequeña escala, probar nuevas ideas o incluso implementar la API YOLOv8 para tus proyectos personales. Una vez que hayas creado tu cuenta de AWS, estos son los pasos que debes seguir:
1. Elige tu región (yo usaré eu-west-1) luego ve a EC2
2. Presiona el botón «Iniciar instancia»
3. Ve con Ubuntu 20.04 para tu imagen y selecciona la instancia que califique para el nivel gratuito
4. Crea un par de claves (acceso a tu instancia, ¡recuerda no perderla!)
5. Configura tu almacenamiento en 30 GB, el primer año es gratis . Luego presiona “Iniciar instancia»
6. Cambia la configuración del puerto y ábrelo en 5000 desde tu instancia
Prepara tu instancia para implementar tu YOLOv8 FlaskAPI
Para este tutorial, he usado mi propia laptop con Ubuntu 20.04 para mostrarte el proceso. Si estás en un sistema operativo distinto, como Windows o macOS, ten en cuenta que el proceso para establecer conexiones SSH puede ser un poco diferente.
1.Ahora, para acceder a tu instancia, simplemente utiliza el par de claves que acabas de descargar
sudo chmod 400 yourkey.pem
sudo ssh -i your_path/yourkey.pem ubuntu@ec2-ip-of-your-instance.eu-west-1.compute.amazonaws.com
sudo apt-get install libgl1-mesa-glx # required for OpenCV
2. Vamos a empezar actualizando la lista de paquetes en tu sistema. Utiliza los siguientes comandos
# Update and install necessary libraries
sudo apt update
sudo apt-get install libgl1-mesa-glx # Required for OpenCV
3. Ahora, necesitamos conseguir e instalar unas herramientas importantes: Pip, virtualenv y virtualenvwrapper.
Pip es como el asistente de compras para Python, te ayuda a instalar paquetes desde la tienda virtual de Python (PyPI). Por otro lado, virtualenv y virtualenvwrapper son como burbujas protectoras que crean espacios privados para tus proyectos en Python. Sigue adelante y usa estos comandos para descargar e instalar pip:
# Download and install pip
wget https://bootstrap.pypa.io/get-pip.py
sudo python3 get-pip.py
rm get-pip.py
# Instale virtualenv
pip install virtualenv virtualenvwrapper
4. Ahora, vamos a preparar nuestros espacios virtuales. Es como tener habitaciones separadas para diferentes proyectos. Solo necesitas agregar estas líneas mágicas a tu archivo .bashrc y luego reiniciar para que surtan efecto
# Virtual environments
USER=ubuntu
echo -e "\n# virtualenv y virtualenvwrapper" >> ~/.bashrc
echo "export WORKON_HOME= $HOME /.virtualenvs" >> ~/.bashrc
echo "export VIRTUALENVWRAPPER_PYTHON=/usr/bin/ python3" >> ~/.bashrc
echo "export VIRTtUALENVWRAPPER_VIRTUALENV=/home/ $USER /.local/bin/virtualenv" >> ~/.bashrc
echo "source /home/ $USER /.local/bin/virtualenvwrapper.sh" >> ~/.bashrc
source ~/.bashrc
5. Vamos a darle un empujoncito a la memoria de intercambio. Asignaremos 6 GB al archivo de intercambio y lo añadiremos al archivo fstab para que todo quede en su lugar
# Increase swap memory
sudo fallocate -l 6G /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile
echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab
6. Ahora vamos a recurrir al repositorio de la API de YOLOv8. Clonaremos el repositorio y crearemos un entorno virtual fresquito para la API. ¡Manos a la obra!
# Clone the repository and set up your API
git clone https://github.com/hdnh2006/YOLOv8API
cd YOLOv8API
mkvirtualenv YOLOv8API
7. Es hora de aprovechar la potencia de Torch. Para instalar las funciones de CPU de Torch y Torch Vision, simplemente ejecuta el siguiente comando:
# Install torch and torchvision (CPU-only functions)
pip install torch torchvision -f https://download.pytorch.org/whl/cpu/torch_stable.html
Ahora viene una movida experta. Vamos a ejecutar la API YOLOv8 en segundo plano usando la herramienta «screen». Esto permitirá que tu modelo esté disponible en el puerto 5000. Para hacerlo, simplemente usa el siguiente comando
# The model will run in the background -S YOLOv8API
workon YOLOv8API
python segment_api.py --weights yolov8s-seg.pt --port 5000
# Open the port on your instance
sudo ufw enable 5000
¡Y voilá! Estás listo para disfrutar de tu API YOLOv8 en acción
Visita tu instancia en la nube y disfruta tanto como yo al escribir este tutorial.
Ahora puedes poner en marcha una aplicación Flask para desplegar el poderoso modelo de segmentación de instancias o detección de objetos YOLOv8 como un API. Lo genial es que los usuarios podrán interactuar con esta API de forma muy sencilla.
Pueden hacerlo a través de una interfaz web intuitiva o enviando solicitudes HTTP to the /detect endpoint. Espero que disfrutes explorando esta nueva funcionalidad.
Reflexión final
Espero que hayas disfrutado descubriendo el increíble potencial en la implementación de un modelo de detección de objetos YOLOv8 con Flask API, ideal para proyectos personales. Este enfoque no solo es sencillo, sino también muy versátil. Puedes aplicarlo en distintas áreas, desde sistemas de seguridad hasta el conteo de objetos, brindando soluciones prácticas y fáciles de usar.
La combinación de YOLOv8 con Flask API es como tener una herramienta poderosa en tus manos para proyectos personales o de prueba. Imagina la posibilidad de crear aplicaciones web que puedan «ver» y reconocer objetos en imágenes o videos. ¡Es como tener ojos en tu proyecto! Además, esta opción es ideal para aquellos que quieren adentrarse en la visión por computadora sin tener que lidiar con complejidades innecesarias. Así que adelante, empieza a crear y construir.