Bienvenido a la documentación del proyecto para segmentación de objetos y cambio de posición. Este repositorio contiene el código para segmentar un objeto en una imagen determinada según un mensaje de texto y luego mover el objeto a una nueva posición dentro de la misma escena. Aprovecha modelos de IA generativa de vanguardia para realizar esta tarea de una manera fácil de usar.
Este proyecto implica dos tareas clave destinadas a la edición de posproducción de imágenes de productos, particularmente con fines de comercio electrónico.
Tarea 1: Segmenta un objeto en la imagen según un mensaje de texto (por ejemplo, "estante") y lo resalta con una máscara roja.
Tarea 2: Mueve el objeto dentro de la escena moviéndolo en las direcciones xey, según lo especificado por el usuario.
Por ejemplo, es posible que tenga una imagen que contenga un "estante". Puede ejecutar la segmentación para resaltar todos los estantes de la imagen. Luego, puede mover el estante identificado dentro de la escena usando desplazamientos de píxeles.
Segmentación de objetos basada en texto: identifica objetos mediante indicaciones de clase como "estante" y los resalta.
Cambio de posición: mueve el objeto según los valores de píxel en las direcciones x (horizontal) e y (vertical).
Modelos prediseñados: aprovecha los modelos existentes como SAM (Segment Anything Model) y Stable Diffusion Inpainting para la manipulación de objetos sin necesidad de volver a capacitarse.
Para configurar el proyecto localmente, siga estos pasos:
Clonar el repositorio:
git clone https://github.com/your-repo/object-segmentation-shift.git
cd object-segmentation-shift
Cree y active un entorno virtual:
python -m venv venv
source venv/bin/activate # On Windows, use `venvScriptsactivate`
Instalar dependencias:
pip install -r requirements.txt
Para segmentar un objeto en una imagen según un mensaje de clase:
python run.py --image ./example.jpg --class shelf --output ./generated.png
Este comando tomará example.jpg
, segmentará todas las instancias del objeto especificado en el indicador de clase (por ejemplo, "estante") y generará una imagen con máscaras rojas en esos objetos.
Para desplazar el objeto segmentado en la imagen:
python run.py --image ./example.jpg --class shelf --x 80 --y 0
Esto moverá el estante identificado 80 píxeles hacia la derecha y 0 píxeles en dirección vertical.
Estos son los resultados de la aplicación del algoritmo a imágenes de muestra:
Imagen de entrada | Segmentación (tarea 1) | Objeto desplazado (tarea 2) |
---|---|---|
Datos | res1 | res2 |
Tarea 1: el objeto está resaltado en rojo.
Antes de la segmentación
Después de la segmentación
Tarea 2: El objeto se desplaza según los valores x e y definidos por el usuario.
Límites de objetos complejos: en los casos en que los objetos tienen límites intrincados o están parcialmente oscurecidos, la segmentación puede no ser perfecta.
Artefactos cambiantes: al mover objetos con fondos complejos, garantizar que el fondo se regenere de forma natural plantea desafíos.
Modelos de ajuste fino: experimentar con técnicas de ajuste fino para mejorar la precisión de la segmentación.
Pintura interna de fondo sin costuras: uso de técnicas avanzadas de pintura interna para manejar la reconstrucción del fondo después del movimiento del objeto.
Si desea contribuir a este proyecto, siga estos pasos:
Este proyecto está bajo la licencia MIT. Consulte el archivo de LICENCIA para obtener más detalles.