Seguimiento CLIP--LSeg, GroupViT, ViLD

Este blog lleva dos meses abierto y no se ha escrito, recientemente lo cerraron para completarlo~ al tercer día de tendido plano

Resumen de los campos de aplicación de CLIP:

1 segundo

Dirección del artículo original: https://arxiv.org/abs/2201.03546

Código: https://github.com/isl-org/lang-seg

Esta imagen muestra claramente el poderoso efecto de Zero Shot. Se puede decir que él te dará lo que quieras.

 Estructura del modelo:

 

El modelo general se parece mucho al modelo CLIP, excepto que las características de texto de una sola imagen se reemplazan por características densas píxel por píxel en la segmentación semántica. Excepto que las características de texto extraídas por el codificador de texto anterior se multiplican por las características de imagen densa para calcular la similitud de imagen y texto a nivel de píxel, toda la red es exactamente igual que la red supervisada tradicional, hay una imagen y luego una El modelo segmentado finalmente obtiene un mapa de características, y este mapa de características se amplía a través de un aumento de escala. Debido a la tarea intensiva que estamos realizando, el resultado final debe tener el mismo tamaño que la imagen original, por lo que debemos realizar algunas operaciones de aumento de escala. La última es la salida del modelo, solo haga una pérdida de entropía cruzada (pérdida de entropía cruzada) con la supervisión de la verdad del terreno.

El codificador de la imagen es una estructura DPT, es decir, un ViT en la parte delantera y un decodificador en la parte posterior. La función del decodificador es mejorar la función de cuello de botella, lo que equivale a convertir una imagen de H×W×3 en un , \widetilde{H}, \widetilde{W}C Un mapa de características, \widetilde{H}, \widetilde{W} puede reducirse dimensionalmente en comparación con la imagen original. C es la dimensión de la característica, generalmente 512 o 768, y luego se agotan las características visuales. La rama de texto pasa n etiquetas a través del codificador de texto para obtener n características de texto, la dimensión es N × C, donde n se puede cambiar a voluntad, y se puede obtener un H × W × N multiplicando las características visuales y el tensor de características de texto , que no es diferente del modelo de segmentación tradicional. Aunque se dice que este documento es de tiro cero, en realidad es un entrenamiento supervisado.

La importancia de este documento es agregar la rama del texto a la canalización del modelo de segmentación supervisada y combinar las características del texto con las características visuales, de modo que el modelo pueda aprender algunas características visuales conscientes del lenguaje, de modo que pueda atravesar el aviso del texto Obtiene arbitrariamente el efecto de segmentación deseado.

Otros detalles son los siguientes:

(1) LSeg Todo el codificador de texto es el modelo y el peso del codificador de texto CLIP, y se congela durante el entrenamiento y el razonamiento

(2) El codificador de imágenes de LSeg puede ser cualquier red (CNN/ViT), que necesita ser entrenada;

(3) Bloques de regularización espacial es un módulo propuesto en este documento.Para tener algunos parámetros de aprendizaje para comprender los resultados del cálculo después de calcular la similitud gráfica a nivel de píxel, se compone de algunas circunvoluciones y convoluciones de profundidad por profundidad;

 2.GrupoViT

Dirección del artículo original: https://arxiv.org/abs/2202.11094

Código: https://github.com/NVlabs/GroupViT

Aunque LSeg usa los parámetros de preentrenamiento de CLIP, todavía se basa en la máscara semántica como señal de supervisión y no usa el texto como señal de supervisión. Todavía se basa en la máscara semántica etiquetada manualmente, pero la máscara semántica es muy caro. Jajaja, este documento es un trabajo relativamente contribuyente en la dirección de utilizar el texto como una señal de supervisión. ¿Por qué se llama grupo ViT? De hecho, en el aspecto visual, cuando se realizaba una segmentación no supervisada hace mucho tiempo, un método que se usaba a menudo era agrupar, similar a si hay algunos puntos centrales del grupo, y luego divergir de este punto, expandiendo puntos similares alrededor de Formar un grupo , que es equivalente a una máscara semántica, que es un enfoque de arriba hacia abajo. El autor del artículo cree que este método se puede utilizar en el marco actual. Propusieron una unidad informática, que se denomina bloque de agrupación en el lado derecho de la figura a continuación. , y hay algunos tokens de grupo que se pueden aprender. El propósito de este método es permitir que este modelo agrupe lentamente los píxeles adyacentes en una máscara semántica tras otra durante el aprendizaje inicial. De la figura se puede ver que en Al comienzo de la capa superficial del modelo, el efecto de segmentación no es muy bueno, pero después de aprender, el efecto ya es muy bueno cuando llega a la capa profunda.

Para el codificador de imagen, en realidad es un transformador de visión. Hay 12 capas en total, es decir, hay 12 capas de transformador. La entrada del codificador de imagen en realidad tiene dos partes, una es el parche incrustado de la imagen original, que es la capa de proyección lineal La salida, la otra son los tokens de grupo aprendibles propuestos en este documento, que es el rectángulo coloreado a la derecha.

La incrustación de parches consiste en agregar una imagen de 24*24 aquí, elija un tamaño de parche de 16*16, habrá una secuencia de 14*14, 196 de longitud de secuencia, después de esta proyección lineal, se obtendrán algunas incrustaciones de parches. La dimensión es 196*384.

El token de grupo puede entenderse como el token cls anterior, es decir, usar este token para representar la imagen completa, pero la razón por la que aquí es 64 en lugar de 1 es porque cuando era 1 antes, significa que el conjunto La imagen tiene una característica, pero ahora es para la segmentación, por lo que cada categoría o cada bloque pequeño tiene una característica, pero el proceso de aprendizaje de los dos tokens es el mismo, y es a través de la autoatención en la capa del transformador para aprender cuál token al que pertenece el parche de estas imágenes.Después de 6 Después de una capa de transformador, se usa un bloque de agrupación para agrupar, y la incrustación del parche de imagen se asigna a 64 tokens de grupo, lo que equivale a una asignación de agrupamiento.Dado que hay 64 centros de clúster , quedan 64 tokens al final.Otra ventaja del bloque de agrupación es que la longitud de la secuencia se reduce disfrazada, y la complejidad computacional y el tiempo computacional se reducen correspondientemente.

El bloque de agrupación primero calcula una matriz de similitud de una manera similar a la autoatención, y usa esta matriz para ayudar a los tokens de imágenes a asignar un centro de grupo, logrando así una reducción de la dimensionalidad, pero el proceso de asignación de centros de grupo no es derivable, así que un truco , a saber, gumbel softmax, se utiliza para hacer derivable este proceso. De esta manera, todo el modelo se puede entrenar de extremo a extremo.

Dado que no hay demasiados tipos en conjuntos de datos o imágenes generales, el autor espera reducir la cantidad de 64 centros de clúster, por lo que agregó 8 tokens de grupo nuevos y transformó 64 tokens semánticos a través del aprendizaje de transformadores. de nuevo Aquí, se utilizan 3 capas de transformador, y luego a través del bloque de agrupación, finalmente se obtiene un token de 8 * 384, es decir, la imagen se divide en 8 bloques grandes, y cada bloque tiene una característica.

El proceso de entrenamiento es similar a CLIP. El par imagen-texto se usa para calcular una pérdida de aprendizaje comparativa para entrenar toda la red, pero aquí hay un problema. En CLIP, una imagen es una característica y el texto también es una característica. pero ahora el texto es una característica, pero la imagen tiene 8 características de bloque grande, por lo que el autor fusiona 8 características de bloque grande a través de una agrupación promedio, y luego obtiene las características de toda la imagen a través de una capa de MLP, y luego es exactamente lo mismo que CLIP.

Durante la inferencia, el codificador de texto genera una función para cada categoría y la imagen genera incrustaciones de 8 grupos para comparar. Dado que solo hay 8 incrustaciones de grupos, la imagen solo puede detectar 8 categorías.

Limitación: Solo se pueden identificar 8 categorías, y no funcionará si hay demasiadas, pero se puede ajustar. El autor encontró que 8 es la mejor.

3. SALVAJE

Dirección del artículo original: https://arxiv.org/abs/2104.08860

Ejemplo: tpu/models/official/detection/projects/vild at master · tensorflow/tpu · GitHub

Qué hizo ViLD: en el conjunto de datos existente, sin etiquetar, tiene la capacidad de detectar cualquier categoría de objeto nueva

a es el método de referencia supervisado, b, c y d son la estructura de red de ViLD.

De hecho, esta línea de base es una máscara-RCNN, que es un clasificador de dos etapas. En la primera etapa, se generarán n propuestas. En la segunda etapa, se obtendrán algunas incrustaciones de regiones a través del cabezal de detección de acuerdo con las N propuestas. , y luego se pasará un encabezado de clasificación.Se obtiene la categoría del cuadro delimitador extraído y se completa la detección del objetivo.

La detección de objetivos se puede dividir en dos partes desde la perspectiva de la función objetivo, una es cómo ubicar y la otra es cómo clasificar. El posicionamiento es si el cuadro delimitador se dibuja con precisión, y la clasificación es si los objetos en el El cuadro delimitador se juzga con precisión Este documento es un poco Separar estas dos piezas significa que todos los diagramas de marco aquí comienzan desde la segunda etapa, y la entrada es N propuestas, y no hay dibujo en la primera etapa.

(1) Texto ViLD: si desea realizar una detección de objetivos sin disparo, debe combinarlo con el texto, entonces, ¿cómo agregar el texto? La forma más fácil es usar una columna vertebral de imagen para extraer algunas características de imagen como CLIP, luego encontrar una red de texto para extraer algunas características de texto y finalmente hacer un producto punto de estas dos características para calcular su La similitud es suficiente, y es la mismo aquí. El autor adopta la forma más simple. N propuestas ingresan al cabezal de detección, y después de algunas operaciones, se obtienen incrustaciones de N regiones, que es lo mismo que las incrustaciones de N regiones de la red de línea de base anterior. Casi, el siguiente paso es calcular algunas incrustaciones de texto. La incrustación de texto es en realidad tomar estas categorías de objetos, luego dar algunas indicaciones y luego generar una oración, y luego lanzar esta oración a cualquier codificador de texto. Aquí se debe tener en cuenta que el texto proviene de la categoría del objeto, es decir, todavía es aprendizaje supervisado, y la categoría sigue siendo la categoría base, que es la clase básica en el conjunto de datos. Aquí, la línea de base y el texto ViLD se realizan en el mismo conjunto de datos. Hay supervisión entrenamiento, y está entrenado en la clase básica, por lo que en esta etapa, ViLD-text en realidad solo conecta características de texto y características de imagen, pero el rendimiento de zero-shot necesita ser fortalecido. En la figura, la incrustación de texto está marcada en azul, lo que significa que los parámetros del modelo aquí siempre están bloqueados y no han participado en el entrenamiento. Al igual que LSeg, el final del texto está bloqueado. Una vez que tenga las características de la imagen y las características del texto, puede hacer directamente un producto de puntos, y la similitud se puede usar como los logits de la clasificación final, y puede hacer la pérdida de entropía cruzada y entrenar el modelo.

En segundo plano, porque lo que estamos haciendo ahora es capacitación supervisada, usando clases básicas, luego todas las demás clases que no están en estas clases básicas solo pueden incluirse en esta clase de fondo, por lo que el aprendizaje de esta clase de fondo es muy La clave es aprender la incrustación de un fondo específicamente.

(2) Imagen ViLD: el codificador de imágenes preentrenado por CLIP es muy bueno, y la asociación con el texto también es muy buena, por lo que el autor espera que la salida de incrustación de imágenes del modelo sea lo más consistente posible con la imagen. incrustación de salida por CLIP, y para lograr La mejor manera de hacerlo es la destilación del conocimiento.

Cuando hay algunas propuestas dibujadas, es decir, los cuadros delimitadores obtenidos, puede extraerlos y hacer algunas operaciones de cambio de tamaño, y luego puede enviarlos al codificador de imágenes pre-entrenado por CLIP, y luego puede obtener las características de la imagen, el codificador de imagen preentrenado aquí también está bloqueado, lo que puede garantizar que las funciones extraídas sean tan buenas como CLIP, y luego use esta rama, es decir, la rama en el lado derecho de ViLD-image como la red del maestro, y la La red de estudiantes es El marco de detección de objetivos utilizado antes es primero tener algunas propuestas, pasar el cabezal de detección y luego extraer algunas características. El autor espera que las características aquí sean lo más cercanas posible a las características extraídas por CLIP. Aquí, puede usar directamente una pérdida L1 para hacer una destilación. Cabe mencionar aquí que la señal de supervisión ya no se marca manualmente, sino que la codificación de la imagen la trae CLIP, por lo que no está limitada por la clase básica, por lo que la propuesta extraída puede tener la propuesta de la clase básica, también puede tener una propuesta de una nueva clase.

El cuadro final d es la combinación de los dos cuadros.El lado izquierdo es la rama de detección de objetivos, y el lado derecho es la rama de inserción de imágenes de CLIP, y el lado derecho solo se usa durante el entrenamiento, y la prueba es inútil. En aras de la simplicidad en el cálculo, el autor puso N Propo y M propuestas precalculadas todas juntas en el encabezado de destino, y luego se obtienen N + M incrustaciones, y luego se dividen, N incrustaciones se utilizan para calcular el cruce. pérdida de entropía y M propuestas precalculadas se utilizan para calcular la pérdida L1 destilada.

Todavía quedan algunos artículos, y estoy cansado de ver videos de otras personas. Lamento el cerebro del jefe, ¡por qué mi cerebro no puede recordar nada! sonrisa.jig

 

Supongo que te gusta

Origin blog.csdn.net/Zosse/article/details/126933245
Recomendado
Clasificación