Registros de uso de difusión estable e ImageBind

Código de referencia

ImageBind : GitHub - facebookresearch/ImageBind: ImageBind One Embedding Space para vincularlos a todos

ImageBind + stable-diffusion-2-1-unclipGitHub - Zeqiang-Lai/Anything2Image: Genere imágenes desde cualquier cosa con ImageBind y Stable Diffusion

El recientemente popular ImageBind aprende un único espacio de representación compartido utilizando datos de emparejamiento de imágenes de múltiples tipos (profundidad, texto, mapa de calor, audio, IMU). ImageBind no requiere conjuntos de datos donde todas las modalidades aparecen al mismo tiempo. Utiliza las propiedades de enlace de las imágenes. Siempre que la incrustación de cada modal esté alineada con la incrustación de la imagen, todas las modalidades se pueden alinear rápidamente.

Pero a juzgar por el código de código abierto de ImageBind, el autor solo abrió la parte codificada (mapeando datos de diferentes modalidades en el espacio de incrustación alineado) y no pudo implementar directamente funciones como text2img y audio2img. Para lograr las funciones anteriores, los grandes combinaron el " espacio latente unificado " provisto por ImageBind con el decodificador en difusión estable. Si está interesado, puede buscar Anything2Image o BindDiffusion en Github . Aquí me refiero al código de ImageBind y Anything2Image, y reproduzco el audio+img a img, texto a img y otras funciones.La biblioteca dependiente de la operación del código puede referirse a ImageBind (pip install -r requirements.txt), más difusores (pip instalar difusores).

ejemplo de código

import torch
from diffusers import StableUnCLIPImg2ImgPipeline
import sys
sys.path.append("..")
from models import data
from models import imagebind_model
from models.imagebind_model import ModalityType


model = imagebind_model.imagebind_huge(pretrained=True).to("cuda").eval()
pipe = StableUnCLIPImg2ImgPipeline.from_pretrained("stabilityai/stable-diffusion-2-1-unclip", torch_dtype=torch.float16).to("cuda")

with torch.no_grad():
    ## image
    image_path = ["/kaxier01/projects/GPT/ImageBind/assets/image/bird.png"]
    embeddings = model.forward({ModalityType.VISION: data.load_and_transform_vision_data(image_path, "cuda")}, normalize=False)
    img_embeddings = embeddings[ModalityType.VISION]
    ## audio
    audio_path = ["/kaxier01/projects/GPT/ImageBind/assets/wav/wave.wav"]
    embeddings = model.forward({ModalityType.AUDIO: data.load_and_transform_audio_data(audio_path, "cuda")}, normalize=True)
    audio_embeddings = embeddings[ModalityType.AUDIO]
    embeddings = (img_embeddings + audio_embeddings) / 2

    images = pipe(image_embeds=embeddings.half()).images
    images[0].save("/kaxier01/projects/GPT/ImageBind/results/bird_wave_audioimg2img.png")

Problemas encontrados y soluciones

El problema encontrado en esta área es principalmente el problema del tiempo de espera de descarga del modelo, la solución es la siguiente:

método uno:

Vaya al sitio web oficial ( Hugging Face – The AI ​​​​community building the future. ) para buscar el modelo y descargarlo (lo mejor es descargar todos los archivos), como

Después de la descarga, simplemente especifique la ruta del modelo en el código, como

# 模型路径: "/kaxier01/projects/GPT/ImageBind/checkpoints/stable-diffusion-2-1-unclip"
pipe = StableUnCLIPImg2ImgPipeline.from_pretrained("/kaxier01/projects/GPT/ImageBind/checkpoints/stable-diffusion-2-1-unclip", torch_dtype=torch.float16).to("cuda")

Método dos:

descargar git-lfs

apt-get update
apt-get install git-lfs
git lfs install

Después de descargar e instalar, puede usar este comando para descargar el modelo, como

git lfs clone https://huggingface.co/stabilityai/stable-diffusion-2-1-unclip

Visualización de resultados 

térmica2img

aporte

producción

audio+img2img

aporte

Voz (wave.wav) + imagen

producción

texto2img

aporte

'a photo of an astronaut riding a horse on mars'

producción

Supongo que te gusta

Origin blog.csdn.net/qq_38964360/article/details/130886233
Recomendado
Clasificación