Tutorial de uso, paso a paso
Por favor, añada las imágenes que necesite arrastrando y soltando o subiendo imágenes locales. Los modelos se procesarán rápidamente,
1.Inserte el archivo de imagen que desea crear. Hay múltiples modos de carga.
2.Por ejemplo, voy a cargar en mi ordenador (utilizando la carga local de archivos)
3.Cuando vea el archivo de imagen que se ha cargado correctamente,
haga clic en el botón de generar. Comience a generar, aquí porque se está ejecutando en la memoria de vídeo A100. Tardará más tiempo. El efecto de imagen a vídeo aparecerá en tan sólo 177 segundos después de la generación.
4.Tras pulsar el botón de generación, espere a que se genere
Cuál es la última difusión de vídeo estable
Difusión de vídeo estable es estable vídeo modelo de difusión latente para la generación de texto a vídeo e imagen a vídeo de alta resolución y última generación. Recientemente, los modelos de difusión latente para la síntesis de imágenes 2D se transformaron en modelos generativos de vídeo mediante la inserción de capas temporales y su ajuste fino en pequeños conjuntos de datos de vídeo de alta calidad. Sin embargo, los métodos de entrenamiento en la literatura varían enormemente, y el campo aún tiene que ponerse de acuerdo sobre una estrategia unificada para los datos de vídeo. En este artículo, identificamos y evaluamos tres etapas distintas para entrenar con éxito un LDM (Modelo de Difusión Latente) de vídeo: preentrenamiento de texto a imagen, preentrenamiento de vídeo y ajuste fino de vídeo de alta calidad.
Este vídeo estable ofrece un nuevo método para producir vídeos de alta calidad. Toma como entrada texto o imágenes y genera vídeos realistas relacionados con el contenido de entrada. Este modelo tiene un amplio potencial de aplicación en la producción cinematográfica, la realidad virtual, el desarrollo de juegos y otros campos.
La investigación sobre la difusión estable de vídeos es crucial para mejorar la tecnología de generación de vídeos. Proporciona a los investigadores un marco para seguir explorando métodos de entrenamiento y estrategias de datos para los modelos de generación de vídeo con el fin de mejorar la calidad y fidelidad de los vídeos generados.
Estabilidad AIuna conocida empresa de dibujo de IA, ha entrado por fin en la industria del vídeo generado por IA.
El martes de esta semana, Difusión de vídeo estableun modelo de generación de vídeo basado en la difusión estable, y la comunidad de la IA empezó a debatirlo inmediatamente.
Tarjeta de modelo de imagen a vídeo de difusión de vídeo estable
Difusión de vídeo estable (SVD) Imagen a vídeo es un modelo de difusión que toma una imagen fija como fotograma condicionante y genera un vídeo a partir de ella.
Detalles del modelo
Descripción del modelo
(SVD) Image-to-Video es un modelo de difusión latente entrenado para generar clips de vídeo cortos a partir de un condicionamiento de imagen. Este modelo se entrenó para generar 25 fotogramas a resolución 576×1024 dado un fotograma de contexto del mismo tamaño, afinado de SVD Imagen a vídeo [14 fotogramas]. También ponemos a punto el decodificador f8 para garantizar la coherencia temporal. Por conveniencia, proporcionamos adicionalmente el modelo con el decodificador estándar frame-wise aquí.
- Desarrollado por: Estabilidad AI
- Financiado por: Estabilidad AI
- Tipo de modelo: Modelo generativo de imagen a vídeo
- Ajustado a partir del modelo: SVD Imagen a vídeo [14 fotogramas]
Fuentes de modelos
Para fines de investigación, recomendamos nuestro modelos generativos
Repositorio de Github (https://github.com/Stability-AI/generative-models), que implementa los marcos de difusión más populares (tanto de entrenamiento como de inferencia).
- Repositorio: https://github.com/Stability-AI/generative-models
- Papel: https://stability.ai/research/stable-video-diffusion-scaling-latent-video-diffusion-models-to-large-datasets
Evaluación
El gráfico anterior evalúa la preferencia de los usuarios por SVD-Image-to-Video frente a GEN-2 y PikaLabs. SVD-Image-to-Video es el preferido por los votantes humanos en términos de calidad de vídeo. Para más detalles sobre el estudio de usuarios, remitimos al trabajo de investigación
Utiliza
Uso directo
El modelo está pensado únicamente para fines de investigación. Entre las posibles áreas y tareas de investigación se incluyen
- Investigación sobre modelos generativos.
- Implantación segura de modelos que puedan generar contenidos nocivos.
- Probar y comprender las limitaciones y los sesgos de los modelos generativos.
- Generación de obras de arte y utilización en el diseño y otros procesos artísticos.
- Aplicaciones en herramientas educativas o creativas.
Los usos excluidos se describen a continuación.
Uso fuera del ámbito
El modelo no ha sido entrenado para representar hechos o acontecimientos reales, por lo que su uso para generar contenidos de este tipo está fuera del alcance de las capacidades de este modelo. El modelo no debe utilizarse de ninguna manera que infrinja los principios de Stability AI. Política de uso aceptable.
Limitaciones y sesgos
Limitaciones
- Los vídeos generados son bastante cortos (<= 4seg), y el modelo no alcanza un fotorrealismo perfecto.
- El modelo puede generar vídeos sin movimiento, o movimientos de cámara muy lentos.
- El modelo no puede controlarse mediante texto.
- El modelo no puede mostrar texto legible.
- Es posible que las caras y las personas en general no se generen correctamente.
- La parte de autocodificación del modelo tiene pérdidas.
Recomendaciones
El modelo está destinado únicamente a fines de investigación.
Cómo empezar con el modelo
Echa un vistazo https://github.com/Stability-AI/generative-models
Modelos generativos de Stability AI
Noticias
21 de noviembre de 2023
- Lanzamos Stable Video Diffusion, un modelo de imagen a vídeo, con fines de investigación:
- SVD: Este modelo se entrenó para generar 14 fotogramas con una resolución de 576×1024 a partir de un fotograma contextual del mismo tamaño. Utilizamos el codificador de imágenes estándar de SD 2.1, pero sustituimos el decodificador por un decodificador temporalmente sensible.
decodificador deflickering
. - SVD-XT: Misma arquitectura que
SVD
pero afinado para la generación de 25 fotogramas. - Ofrecemos una demostración en streaming
scripts/demo/video_sampling.py
y un script python independientescripts/sampling/simple_video_sample.py
para la inferencia de ambos modelos. - Junto con el modelo, publicamos un informe técnico.
- SVD: Este modelo se entrenó para generar 14 fotogramas con una resolución de 576×1024 a partir de un fotograma contextual del mismo tamaño. Utilizamos el codificador de imágenes estándar de SD 2.1, pero sustituimos el decodificador por un decodificador temporalmente sensible.
26 de julio de 2023
- Estrenamos dos nuevos modelos abiertos con un permisivo
CreativeML Open RAIL++-M
licencia (véase Inferencia para hashes de archivos):- SDXL-base-1.0: Una versión mejorada de
SDXL-base-0,9
. - SDXL-refinador-1.0: Una versión mejorada de
SDXL-refinador-0.9
.
- SDXL-base-1.0: Una versión mejorada de
4 de julio de 2023
- Ya está disponible un informe técnico sobre SDXL aquí.
22 de junio de 2023
- Publicamos dos nuevos modelos de difusión con fines de investigación:
SDXL-base-0,9
: El modelo base fue entrenado en una variedad de relaciones de aspecto en imágenes con resolución 1024^2. El modelo base utiliza OpenCLIP-ViT/G y CLIP-ViT/L para la codificación de texto, mientras que el modelo refinador sólo utiliza el modelo OpenCLIP.SDXL-refinador-0.9
: El refinador ha sido entrenado para eliminar pequeños niveles de ruido de datos de alta calidad y, como tal, no se espera que funcione como un modelo de texto a imagen; en su lugar, sólo debe utilizarse como un modelo de imagen a imagen.
Si desea acceder a estos modelos para su investigación, solicítelo a través de uno de los siguientes enlaces: SDXL-0.9-Modelo básicoy SDXL-0.9-Refinador. Esto significa que puede solicitar cualquiera de los dos enlaces y, si se le concede, podrá acceder a ambos. Inicie sesión en su cuenta de Hugging Face con el correo electrónico de su organización para solicitar el acceso. Planeamos hacer un lanzamiento completo pronto (julio).
El código base
Filosofía general
La modularidad es el rey. Este repositorio implementa un enfoque basado en la configuración en el que construimos y combinamos submódulos llamando a instanciar_desde_config()
sobre objetos definidos en configuraciones yaml. Véase configs/
para ver muchos ejemplos.
Registro de cambios del antiguo ldm
base de código
Para la formación, utilizamos Rayo PyTorchpero debería ser fácil utilizar otras envolturas de formación alrededor de los módulos base. La clase principal del modelo de difusión (anteriormente LatentDiffusion
Ahora Motor de difusión
) se ha limpiado:
- Se acabaron las subclases. Ahora manejamos todos los tipos de entradas de condicionamiento (vectores, secuencias y condicionamientos espaciales, y todas sus combinaciones) en una sola clase:
Acondicionador general
Versgm/modules/encoders/modules.py
. - Separamos los guiadores (como el guiador sin clasificador, véase
sgm/modules/diffusionmodules/guiders.py
) de los muestreadores (sgm/modules/diffusionmodules/sampling.py
), y los muestreadores son independientes del modelo. - Adoptamos el "marco denoiser" tanto para el entrenamiento como para la inferencia (el cambio más notable es probablemente ahora la opción de entrenar modelos de tiempo continuo):
- Los modelos de tiempo discreto (denoisers) son simplemente un caso especial de los modelos de tiempo continuo (denoisers); véase
sgm/modules/diffusionmodules/denoiser.py
. - Las siguientes características son ahora independientes: ponderación de la función de pérdida por difusión (
sgm/modules/diffusionmodules/denoiser_weighting.py
), preacondicionamiento de la red (sgm/modules/diffusionmodules/denoiser_scaling.py
), y el muestreo de los niveles de ruido durante el entrenamiento (sgm/modules/diffusionmodules/sigma_sampling.py
).
- Los modelos de tiempo discreto (denoisers) son simplemente un caso especial de los modelos de tiempo continuo (denoisers); véase
- También se han depurado los modelos de autocodificación.
Instalación:
1. Clonar el repositorio
git clone [email protected]:Stability-AI/generative-models.git cd modelos generativos
2. Configuración del virtualenv
Esto es suponiendo que usted ha navegado a la modelos generativos
raíz después de clonarlo.
NOTA: Esto se comprueba en python3.10
. Para otras versiones de python, puede encontrar conflictos de versión.
PyTorch 2.0# install required packages from pypi python3 -m venv .pt2 source .pt2/bin/activate pip3 install -r requirements/pt2.txt
3. Instale sgm
pip3 install .
4. Instale sdata
para la formación
pip3 install -e git+https://github.com/Stability-AI/datapipelines.git@main#egg=sdata
Embalaje
Este repositorio utiliza empaquetado conforme a PEP 517 utilizando Escotilla.
Para crear una rueda distribuible, instale escotilla
y ejecuta construcción de la escotilla
(especificando -rueda t
omitirá la construcción de un sdist, que no es necesario).
pip install escotilla
hatch build -t rueda
Encontrará el paquete creado en dist/
. Puede instalar la rueda con pip install dist/*.whl
.
Tenga en cuenta que el paquete no actualmente especifican dependencias; necesitarás instalar los paquetes requeridos, dependiendo de tu caso de uso y versión de PyTorch, manualmente.
Inferencia
Ofrecemos un streamlit demostración de muestreo de texto a imagen y de imagen a imagen en scripts/demo/muestreo.py
. Proporcionamos los hashes del archivo completo, así como sólo de los tensores guardados en el archivo ( véase Especificación del modelo para obtener un script que lo evalúe). Actualmente se admiten los siguientes modelos:
- SDXL-base-1.0
Archivo Hash (sha256): 31e35c80fc4829d14f90153f4c74cd59c90b779f6afe05a74cd6120b893f7e5b Tensordata Hash (sha256): 0xd7a9105a900fd52748f20725fe52fe52b507fd36bee4fc107b1550a26e6ee1d7
- SDXL-refinador-1.0
Archivo Hash (sha256): 7440042bbdc8a24813002c09b6b69b64dc90fded4472613437b7f55f9b7d9c5f Tensordata Hash (sha256): 0x1a77d21bebc4b4de78c474a90cb74dc0d2217caf4061971dbfa75ad406b75d81
- SDXL-base-0,9
- SDXL-refinador-0.9
- SD-2.1-512
- SD-2.1-768
Pesos para SDXL:
SDXL-1.0: Los pesos de SDXL-1.0 están disponibles (sujetos a un CreativeML Open RAIL++-M
licencia) aquí:
- modelo base: https://huggingface.co/stabilityai/stable-diffusion-xl-base-1.0/
- modelo refinador: https://huggingface.co/stabilityai/stable-diffusion-xl-refiner-1.0/
SDXL-0.9: Los pesos de SDXL-0.9 están disponibles y sujetos a un licencia de investigación. Si desea acceder a estos modelos para su investigación, solicítelo a través de uno de los siguientes enlaces: Modelo SDXL-base-0.9y SDXL-refinador-0.9. Esto significa que puede solicitar cualquiera de los dos enlaces y, si se le concede, podrá acceder a ambos. Inicie sesión en su cuenta de Hugging Face con el correo electrónico de su organización para solicitar el acceso.
Una vez obtenidos los pesos, colóquelos en puntos de control/
. A continuación, inicie la demostración con
streamlit run scripts/demo/sampling.py --server.port
Detección de marcas de agua invisibles
Las imágenes generadas con nuestro código utilizan el marca de agua invisible para incrustar una marca de agua invisible en la salida del modelo. También proporcionamos un script para detectar fácilmente esa marca de agua. Tenga en cuenta que esta marca de agua no es la misma que en las versiones anteriores de Stable Diffusion 1.x/2.x.
Para ejecutar la secuencia de comandos es necesario tener una instalación de trabajo como el anterior o tratar de un experimental importar utilizando sólo una cantidad mínima de paquetes:python -m venv .detect source .detect/bin/activate pip install "numpy>=1.17" "PyWavelets>=1.1.1" "opencv-python>=4.1.0.25" pip install -no-deps invisible-watermark
Para ejecutar el script es necesario tener una instalación en funcionamiento como la anterior. El script se puede utilizar de las siguientes maneras (no olvide activar su entorno virtual de antemano, p.ej. fuente .pt1/bin/activate
):# probar un solo archivo python scripts/demo/detect.py # probar múltiples archivos a la vez python scripts/demo/detect.py ... # probar todos los archivos en una carpeta específica python scripts/demo/detect.py /*
Formación:
Proporcionamos ejemplos de configuraciones de formación en configs/ejemplo_formación
. Para iniciar un entrenamiento, ejecute
python main.py --base configs/ configs/
donde las configuraciones se combinan de izquierda a derecha (las configuraciones posteriores sobrescriben los mismos valores). Esto puede utilizarse para combinar configuraciones de modelo, entrenamiento y datos. Sin embargo, todas ellas también pueden definirse en una única configuración. Por ejemplo, para ejecutar el entrenamiento de un modelo de difusión basado en píxeles condicional a la clase en MNIST, ejecutepython main.py -base configs/example_training/toy/mnist_cond.yaml
NOTA 1: Utilizar las configuraciones sin juego de datos configs/ejemplo_formación/imagenet-f8_cond.yaml
, configs/ejemplo_formación/txt2img-clipl.yaml
y configs/ejemplo_formación/txt2img-clipl-legacy-ucg-formación.yaml
para la formación requerirá modificaciones en función del conjunto de datos utilizado (que se espera que se almacene en un archivo tar en la carpeta webdataset-format). Para encontrar las partes que deben adaptarse, busque los comentarios que contengan USUARIO:
en la configuración correspondiente.
NOTA 2: Este repositorio admite tanto pytorch1.13
y pytorch2
para el entrenamiento de modelos generativos. Sin embargo, para el entrenamiento de autoencoders como, por ejemplo, en configs/entrenamiento_de_ejemplo/autocodificador/kl-f4/imagenet-attnfree-logvar.yaml
sólo pytorch1.13
es compatible.
NOTA 3: Entrenamiento de modelos generativos latentes (como, por ejemplo, en configs/ejemplo_formación/imagenet-f8_cond.yaml
) requiere recuperar el punto de control de Cara de abrazo y sustituyendo el CKPT_PATH
marcador de posición en esta línea. Lo mismo debe hacerse con las configuraciones de texto a imagen proporcionadas.
Creación de nuevos modelos de difusión
Acondicionador
En Acondicionador general
se configura a través del acondicionador_config
. Su único atributo es emb_models
una lista de diferentes incrustadores (todos heredados de AbstractEmbModel
) que se utilizan para condicionar el modelo generativo. Todos los incrustadores deben definir si son entrenables o no (is_trainable
por defecto Falso
), se utiliza un índice de abandono de la orientación sin clasificador (ucg_rate
por defecto 0
), y una tecla de entrada (clave_entrada
), por ejemplo, txt
para el acondicionamiento de textos o cls
para el condicionamiento de clases. Al calcular los condicionantes, el incrustador obtendrá lote[clave_entrada]
como entrada. Actualmente admitimos condicionantes de dos a cuatro dimensiones y los condicionantes de diferentes incrustantes se concatenan adecuadamente. Tenga en cuenta que el orden de las incrustaciones en el archivo acondicionador_config
es importante.
Red
La red neuronal se configura a través del configuración_de_red
. Esto solía llamarse unet_config
que no es lo suficientemente general, ya que tenemos previsto experimentar con redes troncales de difusión basadas en transformadores.
Pérdida
La pérdida se configura mediante configuración_pérdidas
. Para el entrenamiento estándar del modelo de difusión, tendrá que configurar sigma_sampler_config
.
Configuración del muestreador
Como ya se ha dicho, el muestreador es independiente del modelo. En el sampler_config
, establecemos el tipo de solucionador numérico, el número de pasos, el tipo de discretización, así como, por ejemplo, las envolturas de guiado para el guiado sin clasificador.
Manipulación de conjuntos de datos
Para la formación a gran escala, recomendamos utilizar las canalizaciones de datos de nuestro canalización de datos proyecto. El proyecto está contenido en el requisito y se incluye automáticamente al seguir los pasos de la sección Sección de instalación. Los pequeños conjuntos de datos de tipo mapa deben definirse aquí en el repositorio (por ejemplo, MNIST, CIFAR-10, ...), y devolver un dict de claves/valores de datos, por ejemplo,ejemplo = {"jpg": x, # esto es un tensor -1...1 chw "txt": "una bella imagen"}
donde esperamos imágenes en -1...1, formato de canal primero.