Tabla de contenido
· Introducción
· Descripción general
∘ Meta
∘ ¿Por qué semiautomático?
∘ Ingresando a Label Studio
∘ 1 interfaz + 2 servidores
· Implementación (local)
∘ 1. Instale git y docker y descargue el código de backend
∘ 2. Configure la interfaz para obtener el token de acceso
∘ 3. Configurar contenedores de backend
∘ 4. Conectar contenedores
∘ 5. ¡Feliz etiquetado!
· Implementación de GCP
∘ 1. Seleccione proyecto/Crear nuevo proyecto y configure la cuenta de facturación
∘ 2. Crear una instancia de VM
∘ 3. Configurar el entorno de VM
∘ 4. Siga la sección anterior y configure todo en VM
· Integración GCS
∘ 1. Configurar depósitos de GCS
∘ 2. Crear y configurar la clave de cuenta de servicio
∘ 3. Reconstruir contenedores backend
∘ 4. SDK carga imágenes desde el depósito de origen
∘ 5. Configurar el almacenamiento de destino
· Reconocimiento
· Referencias
La creación de datos de entrenamiento para tareas de segmentación de imágenes sigue siendo un desafío para individuos y equipos pequeños. Y si eres un estudiante de investigación como yo, encontrar una forma rentable es especialmente importante. En esta publicación, hablaré sobre una solución que utilicé en mi proyecto final en el que un equipo de 9 personas etiquetó con éxito más de 400 imágenes en una semana.
Gracias al Politécnico de Milán. Centro de Investigación Gianfranco Ferré, obtuvimos miles de imágenes de desfiles de moda de la base de datos de archivos de Gianfranco Ferré. Para explorar, gestionar, enriquecer y analizar la base de datos, empleé Segmentación de imagen para catalogación más inteligente e investigación detallada. La segmentación de imágenes de las fotografías de los desfiles también sienta las bases para la creación de descripciones textuales informativas para mejores enfoques de IA generativa de texto a imagen y de motores de búsqueda. Por ello, este blog detallará:
- cómo crear tu propio backend con estudio de etiquetasademás de lo existente segmentar cualquier cosa backendpara etiquetado de segmentación de imágenes semiautomático,
- cómo alojar en Google Cloud Platform para la colaboración grupal, y
- cómo emplear depósitos de Google Cloud Storage para el control de versiones de datos.
El código de esta publicación se puede encontrar en este repositorio de GitHub.
Meta
Segmente e identifique los nombres y tipologías de prendas de moda en imágenes de desfiles, como se muestra en la primera imagen.
¿Por qué semiautomático?
¿No sería bueno si un modelo de segmentación entrenado pudiera reconocer perfectamente cada prenda en las imágenes del desfile? Lamentablemente, no hay ninguno. Existen modelos entrenados adaptados a imágenes de moda o ropa, pero nada puede coincidir perfectamente con nuestro conjunto de datos. Cada diseñador de moda tiene su propio estilo y preferencias para determinadas prendas, así como su color y textura, por lo que incluso si un modelo de segmentación puede tener una precisión del 60%, lo consideramos una victoria. Entonces, todavía necesitamos humanos involucrados para corregir lo que hizo mal el modelo de segmentación.
Ingresando a Label Studio
Label Studio proporciona una versión comunitaria de código abierto, personalizable y gratuita para varios tipos de etiquetado de datos. Uno puede crear su propio backend, por lo que puedo conectar el frontend de Label Studio al backend del modelo de segmentación entrenado (mencionado anteriormente) para que los etiquetadores mejoren aún más las predicciones automáticas. Además, Label Studio ya cuenta con una interfaz algo similar a Photoshop y una serie de herramientas de segmentación que nos pueden venir muy bien:
- Pincel y borrador
- Varita mágica para selección de píxeles de colores similares
- Segmentar cualquier cosa backend que aprovecha el poder de SAM de Meta y le permite reconocer el objeto dentro de un cuadro delimitador que dibuje.
1 interfaz + 2 servidores
Hasta ahora, queremos que se conecten 2 backends al frontend. Un backend puede hacer la predicción de la segmentación y el segundo puede acelerar la modificación de los etiquetadores si las predicciones son incorrectas.
Ahora, iniciemos la aplicación localmente. Es decir, podrá utilizar la aplicación en su computadora portátil o máquina local de forma totalmente gratuita, pero todavía no podrá invitar a su equipo de etiquetado a colaborar en sus computadoras portátiles. Hablaremos sobre el trabajo en equipo con GCP en la siguiente sección.
1. Instale git y docker y descargue el código de backend
Si no tienes git o estibador en su computadora portátil o máquina local todavía, instálelos. (Nota: técnicamente puedes omitir el paso de instalar git si descargas el archivo zip desde este repositorio de GitHub. Si lo hace, omita lo siguiente).
Luego, abre tu terminal y clona. este repositorio al directorio que desee.
git clone https://github.com/AlisonYao/label-studio-customized-ml-backend.git
Si abres el label-studio-customized-ml-backend
carpeta en su editor de código, puede ver que la mayoría están adaptados del Back-end de Label Studio ML repositorio, pero este directorio también contiene código de plantilla de interfaz y código SDK adaptado de SDK de estudio de etiquetas.
2. Configure la interfaz para obtener el token de acceso
Siguiendo las pautas oficiales de segmentar cualquier cosahaz lo siguiente en tu terminal:
cd label-studio-customized-ml-backend/label_studio_ml/examples/segment_anything_modeldocker run -it -p 8080:8080 \
-v $(pwd)/mydata:/label-studio/data \
--env LABEL_STUDIO_LOCAL_FILES_SERVING_ENABLED=true \
--env LABEL_STUDIO_LOCAL_FILES_DOCUMENT_ROOT=/label-studio/data/images \
heartexlabs/label-studio:latest
Luego, abre tu navegador y escribe http://0.0.0.0:8080/ y verá la interfaz de Label Studio. Proceda a registrarse con su dirección de correo electrónico. Ahora, todavía no hay ningún proyecto, por lo que debemos crear nuestro primer proyecto haciendo clic en Crear proyecto. Crea un nombre y una descripción (opcional) para tu proyecto.
Sube algunas imágenes localmente. (Hablaremos sobre cómo utilizar el almacenamiento en la nube más adelante).
Para configurar el etiquetado, haga clic en Plantilla personalizada a la izquierda y copie y pegue el código HTML del label-studio-customized-ml-backend/label_studio_frontend/view.html
archivo. No necesita las cuatro líneas de encabezados si no desea mostrar metadatos de imágenes en la interfaz de etiquetado. Siéntase libre de modificar el código aquí según sus necesidades o haga clic Visual para agregar o eliminar etiquetas.
Ahora, haga clic Ahorrar y su interfaz de etiquetado debería estar lista.
En la parte superior derecha, haga clic en el icono de configuración de usuario y haga clic en Cuenta y configuración y luego deberías poder copiar tu token de acceso.
3. Configurar contenedores de backend
En el label-studio-customized-ml-backend
directorio, hay muchos backends gracias a los desarrolladores de Label Studio. Usaremos el personalizado ./segmentation
backend para la predicción de segmentación (contenedor 1) y el ./label_studio_ml/examples/segment_anything_model
para un etiquetado más rápido (contenedor 2). El primero utilizará el puerto 7070 y el segundo utilizará el puerto 9090, lo que facilitará su distinción del puerto frontend 8080.
Ahora, pega tu token de acceso al 2 docker-compose.yml
archivos en ./segmentation
y ./label_studio_ml/examples/segment_anything_model
carpetas.
environment:
- LABEL_STUDIO_ACCESS_TOKEN=6dca0beafd235521cd9f23d855e223720889f4e1
Abra una nueva terminal y acceda al cd segment_anything_model
directorio como lo hizo antes. Luego, enciende el contenedor de cualquier segmento.
cd label-studio-customized-ml-backend/label_studio_ml/examples/segment_anything_modeldocker build . -t sam:latest
docker compose up
Luego, abra otro nuevo CD de terminal en el segmentation
directorio y active el contenedor de predicción de segmentación.
cd label-studio-customized-ml-backend/segmentationdocker build . -t seg:latest
docker compose up
A partir de ahora, hemos iniciado con éxito los 3 contenedores y puede volver a verificar.
4. Conectar contenedores
Antes, lo que hacíamos con el token de acceso ya nos ayudaba a conectar contenedores, así que ya casi hemos terminado. Ahora, ve a la interfaz que empezaste hace un tiempo y haz clic en Ajustes en la esquina superior derecha. Hacer clic Aprendizaje automático a la izquierda y haga clic Agregar modelo.
Asegúrese de utilizar la URL con el puerto 9090 y active la anotación previa interactiva. Termine de agregar haciendo clic Validar y guardar.
De manera similar, haga lo mismo con el backend de predicción de segmentación.
Entonces, me gusta activar Recuperar predicciones al cargar una tarea automáticamente. De esta manera, cada vez que actualicemos la página de etiquetado, las predicciones de segmentación se activarán y cargarán automáticamente.
5. ¡Feliz etiquetado!
Aquí hay una demostración de lo que debería ver si sigue los pasos anteriores.
Si no estamos contentos con las predicciones de, digamos, la falda, podemos eliminar la falda y usar la magia violeta (segmentar cualquier cosa) para etiquetarla rápidamente.
¡Estoy seguro de que puedes descubrir cómo usar el pincel, el borrador y la varita mágica por tu cuenta!