Un modelo básico de segmentación de imágenes: hacia la IA

Estás leyendo la publicación: Un modelo básico de segmentación de imágenes: hacia la IA

Publicado originalmente en Hacia la IA.

Modelo Segment Anything de Meta AI Research de Facebook

Con los nuevos avances en IA generativa, los modelos a gran escala llamados Son desarrollados. Los modelos básicos están entrenados en una gran cantidad de datos sin anotar y pueden adaptarse a una amplia gama de tareas posteriores.

En el procesamiento del lenguaje natural, estos modelos básicos (modelos de lenguaje extenso) se entrenan previamente en conjuntos de datos a escala web. Con aprendizaje de disparos cero y pocos disparos, estos modelos pueden adaptarse a nuevos conjuntos de datos y tareas como traducción y resumen. Esto se implementa con ingeniería rápida.

Por los mismos motivos, SAM (Segment Anything Model) se construye como un modelo base para la segmentación de imágenes en visión artificial. Reduce la anotación, el entrenamiento y el modelado específicos de tareas para la segmentación de imágenes.

Un SAM se basa en tres componentes tarea, modeloy datos. La tarea definida es una tarea de segmentación solicitable para devolver una máscara de segmentación válida para cualquier aviso.

  • Un indicador puede ser cualquier información que indique qué segmentar en una imagen. Hay 2 tipos de avisos:
  1. Indicador disperso: puntos de primer plano/fondo, cuadros delimitadores y texto.
  2. Mensaje denso: Máscaras.
  • Una máscara válida significa que incluso cuando un mensaje es ambiguo y puede referirse a varios objetos (por ejemplo, un punto en una camisa puede indicar la camisa o la persona que la lleva puesta), el resultado debe ser una máscara razonable para uno de esos objetos. .

Arquitectura

La segmentación solicitable requiere un modelo que admita indicaciones flexibles y calcule máscaras en tiempo real para permitir el uso interactivo y debe ser consciente de la ambigüedad. Por eso, SAM (Modelo de segmento de cualquier cosa) ha propuesto que contiene 3 componentes, codificador de imágenes, codificador de mensajes y decodificador de máscaras.

  1. Codificador de imagen:· Utiliza Transformador de Visión (ViT) pre-entrenado MAE. Un codificador de imágenes pesado en el lado del servidor calcula las incrustaciones de imágenes una vez por imagen que se puede usar cualquier número de veces con diferentes indicaciones para evitar sobrecargas computacionales. El codificador de imágenes tiene 632M de parámetros.
  2. Codificador de solicitud: las indicaciones dispersas como puntos y cuadros se incrustan mediante codificación posicional, y el texto utiliza incrustaciones CLIP. Estas incorporaciones aprendidas se resumen. Las indicaciones densas, como las máscaras, se incrustan mediante circunvoluciones sumadas por elementos con incrustaciones de imágenes. El codificador rápido y el decodificador de máscara tienen parámetros de 4M.
  3. Decodificador de máscara: El decodificador de máscara mapea eficientemente la incrustación de imágenes, las incrustaciones de avisos y un token de salida a una máscara. Utiliza un decodificador de transformador modificado seguido de un cabezal de predicción de máscara dinámica.
  • Si el indicador dado es ambiguo, en la salida se generan 3 máscaras (total, parcial y parcial) para un solo indicador con un puntaje de confianza correspondiente para resolver la ambigüedad.
  • Con incrustaciones de imágenes precalculadas, el decodificador de máscara ligera y el codificador rápido tardan ~55 ms en un navegador web sin GPU para la implementación.
  • Para el entrenamiento, se utiliza una combinación lineal de pérdida focal y pérdida de dados para supervisar la predicción de la máscara.
🔥 Recomendado:  14 formas de ganar dinero en Amazon

Motor de datos

Para entrenar el modelo SAM, las máscaras de segmentación no abundan en internet, por lo que motor de datos se crea para recopilar una máscara de 1.100 millones, conjunto de datos SA-1B. Tiene 3 etapas:

  1. Etapa manual asistida: el modelo se entrena con un conjunto de datos de segmentación pública. Las máscaras de salida se corrigen manualmente y, después de recopilar suficientes datos corregidos, el modelo se vuelve a entrenar. El modelo se entrena 6 veces.
  2. Etapa semiautomática: las imágenes adicionales sin etiquetar se anotan con mucho más detalle para mejorar la diversidad. El reciclaje periódico tiene lugar 5 veces.
  3. Etapa completamente automática: como el modelo pudo predecir máscaras válidas en casos ambiguos, se le solicita una cuadrícula de puntos de 32 X 32. Para cada conjunto de puntos de máscaras previstas, incluidos los objetos válidos. Se seleccionan las máscaras seguras y estables y se aplica NMS para eliminar los duplicados. Para mejorar la calidad de las máscaras pequeñas, se procesan recortes superpuestos de imágenes ampliadas.

Conjunto de datos (SA-1B)

Contiene 11 millones de imágenes diversas (Resolución de 3300 × 4950 píxeles y reducción de la muestra a 1500 píxeles para desafíos de almacenamiento) y Máscaras 1.1 B (El 99,1 % de las máscaras se generan de forma totalmente automática).

Experimentos de transferencia de tiro cero

Mediante la ingeniería de avisos apropiados, SAM puede resolver tareas posteriores. Además del etiquetado automático, SAM realiza la segmentación de un objeto desde un único punto de primer plano, una tarea de nivel bajo de detección de bordes, una tarea de nivel medio de generación de propuestas de objetos, una tarea de nivel alto de segmentación de instancias y una tarea de nivel superior. tarea de segmentar objetos del texto de forma libre como prueba de concepto.

🔥 Recomendado:  Lo básico: hacia la IA

Verifiquemos la segmentación de instancias con SAM.

Para tareas de alto nivel de segmentación de instancias, SAM se puede utilizar como módulo de segmentación. Para esto, primero debemos ejecutar el detector de objetos y la salida del detector de objetos pasa como un aviso a un módulo SAM.

  1. Aquí, yolov8 se toma como un detector de objetos entrenado en el conjunto de datos de alimentos para detectar clases: croissants, galletas y pastelitos.

2. Los cuadros delimitadores de salida se alimentan como un aviso a un módulo SAM para realizar una segmentación de disparo cero. Consulte el código en el repositorio de Github.

Resumen

  • Un SAM puede segmentar objetos haciendo clic en puntos para incluir y excluir el objeto. También utiliza un cuadro delimitador como aviso,
  • Para evitar la ambigüedad, se generan varias máscaras válidas cuando el aviso proporcionado es ambiguo.
  • Puede detectar automáticamente todos los objetos de la imagen y enmascararlos.
  • Dado que las incrustaciones de imágenes se calculan previamente, SAM puede generar máscaras para cualquier mensaje en tiempo real.
  • Se puede solicitar SAM con puntos de mirada detectados por un dispositivo portátil, lo que permite nuevas aplicaciones. Puede convertirse en un componente poderoso en dominios como AR/VR, creación de contenido, dominios científicos y sistemas de IA más generales.

Referencia

  1. https://ai.facebook.com/blog/segment-anything-foundation-model-image-segmentation/
  2. https://arxiv.org/pdf/2304.02643.pdf
  3. https://github.com/facebookresearch/segmento-cualquier cosa
  4. https://www.youtube.com/watch?v=qa3uK3Ewd9Q
  5. https://github.com/ultralytics/ultralytics

¡¡¡Feliz aprendizaje!!!

Publicado a través de Hacia la IA