Visión por computadora: reemplaza todo Inpaint Anything

Tabla de contenido

1 Introducción a Inpaint Anything

1.1 Por qué necesitamos Inpaint Anything

1.2 Principio de funcionamiento de Inpaint Anything

1.3 Cuál es la función de Inpaint Anything

1.4 Modelo de segmento de cualquier cosa (SAM)

1.5 Pintar cualquier cosa

1.5.1 Quitar cualquier objeto

1.5.2 Rellenar cualquier contenido

1.5.3 Reemplazar cualquier contenido

1.5.4 Práctica

 1.6 Resumen experimental

 2 Despliegue y operación de Inpaint Anything

2.1 preparación del entorno conda

2.2 Instalación del entorno operativo

2.3 Descarga del modelo

3 Visualización del efecto de ejecución Inpaint Anything

3.1 Eliminar cualquier cosa

3.2 Rellenar cualquier cosa

 3.3 Reemplazar cualquier cosa

3.5 Eliminar cualquier video

4 Resumen


1 Introducción a Inpaint Anything

Con un clic para marcar el objeto seleccionado, puede eliminar el objeto especificado, rellenar el objeto especificado y reemplazar todas las escenas, cubriendo una variedad de escenarios típicos de aplicaciones de reparación de imágenes, incluida la eliminación de objetos, el relleno de objetos y el reemplazo de fondo.

Los sistemas modernos de repintado de imágenes a menudo enfrentan dificultades en la selección de máscaras y el llenado de agujeros. Basado en el modelo Segment-Anything (SAM), los autores intentaron pintar imágenes sin máscara por primera vez y propusieron un nuevo paradigma llamado "Inpaint Anything (IA)", a saber, "hacer clic y rellenar".

La idea central de IA es combinar las ventajas de diferentes modelos para construir un proceso muy poderoso y fácil de usar para resolver problemas relacionados con la restauración. IA admite tres funciones principales:

  • Eliminar cualquier objeto: el usuario puede hacer clic en un objeto e IA lo eliminará y llenará el "agujero" con el contexto suave;
  • Rellene cualquier contenido: después de eliminar algunos objetos, los usuarios pueden proporcionar indicaciones basadas en texto a IA, y luego llenará el vacío y el contenido generado correspondiente impulsando modelos AIGC como Stable Diffusion [11];
  • Reemplace cualquier fondo: con IA, los usuarios tienen la opción de mantener los objetos seleccionados al hacer clic y reemplazar el resto del fondo con la escena recién generada.

 Papel: https://arxiv.org/pdf/2304.06790.pdf

 Código: https://github.com/geekyutao/Inpaint-Anything

754e94b3e5134ed3a2e2e55b7fa639b9.png

1.1 Por qué necesitamos Inpaint Anything

  • Los métodos de pintura de imágenes de última generación, como LaMa, Repaint, MAT, ZITS, etc., han logrado un gran progreso en la pintura de grandes regiones y el manejo de estructuras repetitivas complejas. Se pueden pintar con éxito en imágenes de alta resolución y generalmente se generalizan bien a otras imágenes. Sin embargo, por lo general requieren anotaciones detalladas de cada máscara, lo cual es esencial para el entrenamiento y la inferencia.
  • Segment Anything Model (SAM) es un poderoso modelo base de segmentación que puede generar máscaras de objetos de alta calidad basadas en señales de entrada, como puntos o cuadros, y puede generar máscaras completas y precisas para todos los objetos en una imagen. Sin embargo, su predicción de segmentación de máscaras no se ha explorado completamente.
  • Además, los métodos de pintura existentes solo pueden usar el contexto para completar las regiones eliminadas. El modelo AIGC abre nuevas oportunidades para la creación, que tiene el potencial de satisfacer una gran demanda y ayudar a las personas a generar el contenido que desean.
  • Por lo tanto, al combinar las fortalezas de SAM, un pintor de imágenes de última generación LaMa y modelos de contenido generado por IA (AIGC), proporcionamos un canal potente y fácil de usar para resolver problemas más generales relacionados con la pintura, como como Eliminación de objetos, relleno de contenido nuevo y reemplazo de fondo.

1.2 Principio de funcionamiento de Inpaint Anything

Inpaint Anything combina modelos basados ​​en visión como SAM, modelos de pintura de imágenes (como LaMa) y modelos AIGC (como Stable Diffusion).

  • SAM (Segment Anything Model) puede generar regiones de segmentación de objetos de alta calidad a través de indicaciones de entrada como puntos o cuadros, y lograr la segmentación de objetivos específicos.
  • El modelo de pintura de imagen LaMa puede eliminar varios elementos de la imagen a voluntad en el caso de imágenes de alta resolución. La arquitectura principal del modelo se muestra en la siguiente figura. Contiene una imagen en blanco y negro de una máscara y una imagen original. La imagen de la máscara se superpone a la imagen y luego se ingresa en la red Inpainting. Primero, se muestrea a una resolución baja, luego, después de varios bloques residuales FFC de convolución rápida de Fourier, y finalmente, la salida se muestrea para generar una resolución alta. -Resolución de imagen de reparación.

933aff637c294f08a5c81d43a5eddb53.png

  •  Modelo AIGC Stable Diffusion, siempre que simplemente ingrese un fragmento de texto, Stable Diffusion puede convertirlo rápidamente en una imagen.

Combinando los tres modelos juntos, podemos hacer muchas funciones. Este artículo realiza las tres funciones de eliminar todos los objetos en la imagen/video, rellenar todos los objetos en la imagen y reemplazar todos los fondos en la imagen. Los pasos de implementación específicos son los siguientes:

83f13e76c36d4dbaa73d50ed0b90e07d.png

1.3 Cuál es la función de Inpaint Anything

  • Eliminar objetos arbitrarios con SAM + SOTA Restorer: con IA, los usuarios pueden eliminar fácilmente objetos específicos de la interfaz simplemente haciendo clic en el objeto. Además, IA ofrece una opción para que los usuarios llenen los "agujeros" resultantes con datos contextuales. Para este requerimiento, combinamos las ventajas de SAM y algunos restauradores de última generación como LaMa. A través del refinamiento manual por erosión y dilatación, las predicciones de máscara generadas por el SAM se utilizan como entrada para el modelo de pintura interior, proporcionando indicaciones claras de las regiones del objeto que se borrarán y rellenarán.
  • Rellene o reemplace contenido arbitrario usando un modelo SAM+AIGC:

        (1) Después de eliminar el objeto, IA ofrece dos opciones para llenar el "agujero" resultante, es decir, usar datos contextuales o "nuevo contenido". Específicamente, aprovechamos un sólido modelo de contenido generado por IA (AIGC) como Stable Diffusion [11] para generar nuevos objetos a partir de señales textuales. Por ejemplo, un usuario podría usar la palabra "perro" o una oración como "un lindo perro sentado en un banco" para generar un nuevo perro para llenar el hueco.

        (2) Además, el usuario también puede optar por reemplazar el fondo restante con la escena recién generada mientras mantiene el objeto seleccionado con el clic. IA admite varias formas de generar modelos AIGC, como el uso de diferentes imágenes como señales visuales o el uso de títulos breves como señales de texto. Por ejemplo, un usuario podría mantener al perro en la imagen, pero reemplazar el fondo interior original por uno exterior.

d9a44a4c29894ae1997803292e3c3cfe.png

1.4 Modelo de segmento de cualquier cosa (SAM)

Segment Anything es un modelo CV basado en ViT entrenado en un gran corpus visual (SA-1B). SAM demuestra capacidades de segmentación prometedoras en varios escenarios, y el modelo subyacente tiene un gran potencial en el campo de la visión artificial. Este es un paso pionero hacia la inteligencia general artificial visual, y SAM fue aclamado una vez como la "versión CV de ChatGPT".

  • SOTA Inpainter: Image inpainting, como un problema inverso mal planteado, ha sido ampliamente estudiado en visión artificial y procesamiento de imágenes. Su objetivo es reemplazar las regiones faltantes de las imágenes corruptas con contenido que tenga una estructura y textura visualmente plausibles. En Inpaint Anything (IA), los autores investigan un método LaMa simple de una etapa para la pintura basada en máscaras mediante la combinación de la convolución rápida de Fourier (FFC), la pérdida de percepción y una estrategia agresiva de generación de máscaras de entrenamiento, excelente para generar estructuras visuales repetitivas.
  •  Modelos AIGC: ChatGPT y otras tecnologías de IA generativa (GAI) entran en la categoría de contenido generado por inteligencia artificial (AIGC), que implica la creación de contenido digital como imágenes, música y lenguaje natural a través de modelos de IA. Se considera una forma novedosa de creación de contenido y exhibe un rendimiento de vanguardia en varios aspectos de la generación de contenido. En nuestro trabajo de IA, los autores usan directamente el poderoso modelo AIGC Stable Diffusion para generar el contenido deseado en los agujeros en función de las sugerencias de texto.

1.5 Pintar cualquier cosa

El principio de Inpaint Anything (IA) propuesto por los autores es combinar modelos base listos para usar para resolver una amplia gama de problemas de pintura de imágenes. Al combinar las fortalezas de varios modelos base, IA puede generar imágenes pintadas de alta calidad. Específicamente, nuestro IA incluye tres esquemas, a saber, Quitar cualquier cosa, Llenar cualquier cosa y Reemplazar cualquier cosa, que se utilizan para quitar, llenar y reemplazar cualquier cosa, respectivamente.

1.5.1 Quitar cualquier objeto

Remove Anything se enfoca en resolver el problema de eliminación de objetos al permitir que los usuarios eliminen cualquier objeto de una imagen, al tiempo que garantiza que la imagen resultante siga siendo visualmente sólida.

Remove Anything consta de tres pasos: hacer clic, dividir y eliminar.

  • En el primer paso, los usuarios hacen clic para seleccionar los objetos que desean eliminar de la imagen.
  • A continuación, utilice un modelo de segmentación básico, como Segment Anything, para segmentar objetos automáticamente y crear máscaras basadas en ubicaciones de clic.
  • Finalmente, utilizando modelos avanzados de pintura como LaMa [13], las máscaras se utilizan para rellenar los agujeros que dejan los objetos eliminados.

Dado que el objeto ya no está presente en la imagen, el modelo en pintura llena el agujero con información de fondo.

Tenga en cuenta que durante todo el proceso, los usuarios solo necesitan hacer clic en el objeto que desean eliminar de la imagen.

1.5.2 Rellenar cualquier contenido

Fill Anything permite a los usuarios rellenar cualquier objeto de una imagen con lo que quieran.

La herramienta consta de cuatro pasos: hacer clic, segmentar, sugerir texto y generar.

  • Los dos primeros pasos de Rellenar cualquier cosa son los mismos que Quitar cualquier cosa.
  • En el tercer paso, el usuario ingresa un mensaje de texto que indica con qué quiere llenar la cavidad del objeto.
  • Finalmente, se emplea un poderoso modelo AIGC como Stable Diffusion [11] para generar el contenido deseado en agujeros basado en modelos de pintura de sugerencias de texto.

1.5.3 Reemplazar cualquier contenido

Reemplazar cualquier cosa puede reemplazar cualquier objeto con cualquier fondo. El proceso de Reemplazar cualquier cosa es similar a Rellenar cualquier cosa, pero en este caso, se solicita al modelo AIGC que genere un fondo consistente con el exterior del objeto especificado.

1.5.4 Práctica

La combinación de modelos base para resolver una tarea puede encontrar incompatibilidad o inadecuación. Deberíamos considerar el procesamiento intermedio para lograr una mejor coordinación entre modelos y tareas. En este estudio, resumimos algunas buenas prácticas de composición para escenarios de pintura de imágenes de la siguiente manera:

  • La importancia de las operaciones de dilatación.

Observamos que los resultados de segmentación de SAM (es decir, máscaras de objetos) pueden contener discontinuidades y límites irregulares, o agujeros dentro de las regiones de los objetos. Estos problemas plantean desafíos para eliminar o rellenar objetos de manera eficiente. Por lo tanto, utilizamos una operación de dilatación para optimizar la máscara. Además, para los objetos rellenos, las máscaras grandes brindan a los modelos AIGC un mayor espacio creativo, lo que es beneficioso para la "alineación" con las intenciones del usuario. Por lo tanto, se emplea una gran operación de dilatación en Fill Anything.

  • La importancia de la fidelidad.

La mayoría de los modelos AIGC de última generación (como Stable Diffusion) requieren que las imágenes tengan una resolución fija, generalmente 512 × 512. Simplemente cambiar el tamaño de la imagen a esta resolución puede resultar en una pérdida de fidelidad que puede afectar negativamente el resultado final de la pintura. Por lo tanto, es necesario tomar medidas para preservar la calidad de la imagen original, como utilizar técnicas de recorte o mantener la relación de aspecto de la imagen al cambiar el tamaño.

  • La importancia de las pistas.

Nuestro estudio muestra que las señales de texto tienen un impacto importante en los modelos AIGC. Sin embargo, observamos que en escenarios de pintura incitados por el texto, claves simples como "un osito de peluche en un banco" o "una pintura de Picasso en una pared" a menudo dan resultados satisfactorios. Por el contrario, las indicaciones más largas y complejas pueden producir resultados impresionantes, pero tienden a ser menos fáciles de usar.

e8467fe7b49b42eab9b51e2339f84f4c.png

 1.6 Resumen experimental

Los autores evaluaron Remove Anything, Fill Anything y Replace Anything en Inpaint Anything, en los tres casos de eliminación de objetos, relleno de objetos y reemplazo de fondos, respectivamente. Los autores recopilaron imágenes de prueba del conjunto de datos COCO, el conjunto de prueba LaMa y fotos tomadas con teléfonos móviles. Los resultados experimentales demuestran que el Inpaint Anything propuesto es versátil y robusto, y puede pintar eficazmente imágenes con diversos contenidos, resoluciones y relaciones de aspecto.

9e0a6dda61164a9585ac03bef933db72.png

 2 Despliegue y operación de Inpaint Anything

2.1 preparación del entorno conda

Para la preparación del entorno conda, consulte: annoconda

2.2 Instalación del entorno operativo

git clone https://github.com/geekyutao/Inpaint-Anything
cd Inpaint-Anything

conda create -n ia python=3.9
conda activate ia

pip install torchvision==0.15.2
pip install torchaudio==2.0.2

pip install -e segment_anything
pip install -r lama/requirements.txt 

pip install diffusers==0.16.1
pip install transformers==4.30.2
pip install accelerate==0.19.0
pip install scipy==1.11.1
pip install safetensors==0.3.1

pip install numpy==1.23.5


pip install jpeg4py==0.1.4
pip install lmdb==1.4.1

2.3 Descarga del modelo

(1) Eliminar cualquier modelo

Cree un directorio de almacenamiento modelo:

mkdir -p pretrained_models/big-lama

Descarga del modelo SAM: dirección SAM

Lama modelo dirección: Lama dirección

Descargue el archivo del modelo de la dirección del modelo anterior, después de que se complete la descarga:

El archivo del modelo SAM se mueve al directorio pretrained_models,

Los archivos del modelo Lama se movieron a pretrained_models/big-lama

Una vez finalizado, la línea de comando se muestra de la siguiente manera:

 [root@localhost Inpaint-Anything]# ll pretrained_models/
总用量 2504448
drwxr-xr-x 3 root root         51 8月   4 18:13 big-lama
-rw-r--r-- 1 root root 2564550879 8月   4 15:32 sam_vit_h_4b8939.pth


[root@localhost Inpaint-Anything]# ll pretrained_models/big-lama/
总用量 4
-rw-r--r-- 1 root root 3947 8月   4 15:28 config.yaml
drwxr-xr-x 2 root root   31 8月   4 15:28 models

(2) Llene cualquier modelo

mkdir -p stabilityai/stable-diffusion-2-inpainting

Dirección de descarga del modelo: dirección de Huggingface , una vez completada la descarga, guárdela en el directorio anterior

(3) Eliminar cualquier modelo de video

Dirección de descarga del modelo: modelo sttn , el archivo del modelo sttn se mueve al directorio pretrained_models,

mkdir -p pytracking/pretrain

Dirección de descarga del modelo: modelo osTrack , después de completar la descarga, guárdelo en el directorio anterior

3 Visualización del efecto de ejecución Inpaint Anything

3.1 Eliminar cualquier cosa

(1) Eliminar objetos especificando puntos de coordenadas

python remove_anything.py \
    --input_img ./example/remove-anything/dog.jpg \
    --coords_type key_in \
    --point_coords 200 450 \
    --point_labels 1 \
    --dilate_kernel_size 15 \
    --output_dir ./results \
    --sam_model_type "vit_h" \
    --sam_ckpt ./pretrained_models/sam_vit_h_4b8939.pth \
    --lama_config ./lama/configs/prediction/default.yaml \
    --lama_ckpt ./pretrained_models/big-lama

Después de ejecutarse con éxito, el resultado se almacena en el directorio de resultados.

 

(2) Eliminar objetos haciendo clic

python remove_anything.py \
    --input_img ./example/remove-anything/dog.jpg \
    --coords_type click \
    --point_coords 200 450 \
    --point_labels 1 \
    --dilate_kernel_size 15 \
    --output_dir ./results \
    --sam_model_type "vit_h" \
    --sam_ckpt ./pretrained_models/sam_vit_h_4b8939.pth \
    --lama_config ./lama/configs/prediction/default.yaml \
    --lama_ckpt ./pretrained_models/big-lama

Este método requiere visualización y operación.

3.2 Rellenar cualquier cosa

Rellene objetos especificando puntos de coordenadas y Solicitud

python fill_anything.py \
    --input_img ./example/fill-anything/sample1.png \
    --coords_type key_in \
    --point_coords 750 500 \
    --point_labels 1 \
    --text_prompt "a teddy bear on a bench" \
    --dilate_kernel_size 50 \
    --output_dir ./results \
    --sam_model_type "vit_h" \
    --sam_ckpt ./pretrained_models/sam_vit_h_4b8939.pth

Indicación de texto: "un oso de peluche en un banco" 

 

 3.3 Reemplazar cualquier cosa

Reemplace objetos especificando puntos de coordenadas y solicitud

python replace_anything.py \
    --input_img ./example/replace-anything/dog.png \
    --coords_type key_in \
    --point_coords 750 500 \
    --point_labels 1 \
    --text_prompt "sit on the swing" \
    --output_dir ./results \
    --sam_model_type "vit_h" \
    --sam_ckpt ./pretrained_models/sam_vit_h_4b8939.pth

Indicación de texto: "un hombre en el cargo"

 

3.5 Eliminar cualquier video

python remove_anything_video.py \
    --input_video ./example/video/paragliding/original_video.mp4 \
    --coords_type key_in \
    --point_coords 652 162 \
    --point_labels 1 \
    --dilate_kernel_size 15 \
    --output_dir ./results \
    --sam_model_type "vit_h" \
    --sam_ckpt ./pretrained_models/sam_vit_h_4b8939.pth \
    --lama_config lama/configs/prediction/default.yaml \
    --lama_ckpt ./pretrained_models/big-lama \
    --tracker_ckpt vitb_384_mae_ce_32x4_ep300 \
    --vi_ckpt ./pretrained_models/sttn.pth \
    --mask_idx 2 \
    --fps 25

Los siguientes casos son demostraciones de eliminación de archivos de video:

4 Resumen

Inpaint Anything (IA) es una herramienta multifuncional que combina las funciones de Remove Anything, Fill Anything y Replace Anything. Basado en el modelo de segmentación, el modelo de pintura SOTA y el modelo AIGC, IA puede realizar la pintura de imágenes sin máscara y admite el modo de operación fácil de usar, es decir, "haga clic para eliminar, solicite llenar".

Además, el IA puede manejar una amplia variedad de imágenes de entrada de alta calidad, incluidas relaciones de aspecto arbitrarias y resoluciones de 2K. Este proyecto aprovecha las poderosas capacidades de los modelos de IA a gran escala existentes y demuestra el potencial de la "IA componible". En el futuro, Inpaint Anything (IA) se desarrollará aún más para admitir funciones más prácticas, como la incrustación de imágenes de grano fino, la edición, etc., y aplicarlo a más aplicaciones del mundo real.

Supongo que te gusta

Origin blog.csdn.net/lsb2002/article/details/132090092
Recomendado
Clasificación