Noticias | Metodología | Capacidades | Inicio rápido | Ajuste fino | Licencia | Citación
2024-11-03: Se agregó API y demostración replicada:
2024-10-28: Lanzamos una nueva versión del código de inferencia, optimizando el uso de memoria y el costo de tiempo. Puede consultar docs/inference.md para obtener información detallada.
2024-10-22: ? Liberamos el código de OmniGen. Inferencia: docs/inference.md Entrenamiento: docs/fine-tuning.md
2024-10-22: ? Lanzamos la primera versión de OmniGen. Peso del modelo: Shitao/OmniGen-v1 HF Demostración: ?
OmniGen es un modelo de generación de imágenes unificado que puede generar una amplia gama de imágenes a partir de indicaciones multimodales. Está diseñado para ser simple, flexible y fácil de usar. Proporcionamos código de inferencia para que todos puedan explorar más funcionalidades de OmniGen.
Los modelos de generación de imágenes existentes a menudo requieren cargar varios módulos de red adicionales (como ControlNet, IP-Adapter, Reference-Net, etc.) y realizar pasos de preprocesamiento adicionales (p. ej., detección de rostros, estimación de pose, recorte, etc.) para generar una imagen satisfactoria. imagen. Sin embargo, creemos que el futuro paradigma de generación de imágenes debería ser más simple y flexible, es decir, generar varias imágenes directamente a través de instrucciones arbitrariamente multimodales sin la necesidad de complementos ni operaciones adicionales, similar a cómo funciona GPT en la generación de lenguaje.
Debido a los recursos limitados, OmniGen todavía tiene margen de mejora. Continuaremos optimizándolo y esperamos que inspire modelos de generación de imágenes más universales. También puede ajustar fácilmente OmniGen sin preocuparse por diseñar redes para tareas específicas; solo necesita preparar los datos correspondientes y luego ejecutar el script. La imaginación ya no está limitada; todos podemos construir cualquier tarea de generación de imágenes y quizás podamos lograr cosas muy interesantes, maravillosas y creativas.
Si tiene alguna pregunta, idea o tarea interesante que desee que OmniGen realice, no dude en hablar con nosotros: [email protected], [email protected], [email protected]. Agradecemos cualquier comentario que nos ayude a mejorar el modelo.
Puedes ver los detalles en nuestro artículo.
OmniGen es un modelo unificado de generación de imágenes que puede utilizar para realizar diversas tareas, incluidas, entre otras, la generación de texto a imagen, la generación basada en sujetos, la generación con preservación de identidad, la edición de imágenes y la generación condicionada de imágenes. OmniGen no necesita complementos ni operaciones adicionales, puede identificar automáticamente las características (por ejemplo, objeto requerido, pose humana, mapeo de profundidad) en imágenes de entrada de acuerdo con el mensaje de texto. Mostramos algunos ejemplos en inference.ipynb. Y en inference_demo.ipynb, mostramos un canal interesante para generar y modificar una imagen.
Aquí están las ilustraciones de las capacidades de OmniGen:
Puede controlar la generación de imágenes de forma flexible a través de OmniGen
Generación de expresiones de referencia: puede ingresar varias imágenes y utilizar un lenguaje general simple para referirse a los objetos dentro de esas imágenes. OmniGen puede reconocer automáticamente los objetos necesarios en cada imagen y generar nuevas imágenes basadas en ellos. No se requieren operaciones adicionales, como recorte de imágenes o detección de rostros.
Si no está completamente satisfecho con ciertas funcionalidades o desea agregar nuevas capacidades, puede intentar ajustar OmniGen.
Instalar a través de Github:
clon de git https://github.com/staoxiao/OmniGen.gitcd OmniGen instalación de pip -e.
A continuación se muestran algunos ejemplos:
de OmniGen importar OmniGenPipelinepipe = OmniGenPipeline.from_pretrained("Shitao/OmniGen-v1") # Nota: La ruta de su modelo local también es aceptable, como 'pipe = OmniGenPipeline.from_pretrained(your_local_model_path)', donde todos los archivos en your_local_model_path deben organizarse como https://huggingface.co/Shitao/OmniGen-v1/tree/main # Nota: Si el enlace original https://huggingface.co/Shitao/OmniGen-v1/tree/main es inestable durante la descarga, se recomienda utilizar este enlace espejo https://hf-mirror.com/Shitao/OmniGen -v1/tree/main u otras formas en https://hf-mirror.com/ ## Text to Imageimages = pipe(prompt="Un hombre de pelo rizado con una camisa roja está bebiendo té.", altura=1024, ancho = 1024, escala_orientación = 2,5, semilla = 0, )images[0].save("example_t2i.png") # guardar la salida Imagen PIL## Multimodal a Imagen# En el mensaje, usamos el marcador de posición para representar la imagen. El marcador de posición de la imagen debe tener el formato <|image_*|>#. Puede agregar varias imágenes en input_images. Asegúrese de que cada imagen tenga su marcador de posición. Por ejemplo, para la lista input_images [img1_path, img2_path], el mensaje debe tener dos marcadores de posición: <|image_1|>, <|image_2|>.images = pipe (prompt="Un hombre con una camisa negra está leyendo un libro. El hombre es el indicado en <|image_1|>.",input_images=["./imgs/test_cases/two_man.jpg "],height=1024, width=1024,guidance_scale=2.5, img_guidance_scale=1.6,seed=0)images[0].save("example_ti2i.png") # guardar la imagen PIL de salida
Si no hay memoria, puede configurar offload_model=True
. Si el tiempo de inferencia es demasiado largo al ingresar varias imágenes, puede reducir max_input_image_size
. Para conocer los recursos necesarios y el método para ejecutar OmniGen de manera eficiente, consulte docs/inference.md#requiremented-resources.
Para obtener más ejemplos de generación de imágenes, puede consultar inference.ipynb e inference_demo.ipynb.
Para obtener más detalles sobre el argumento en inferencia, consulte docs/inference.md.
Muy pronto.
Construimos una demostración en línea en Huggingface.
Para la demostración de gradio local, necesita instalar pip install gradio spaces
y luego podrá ejecutar:
pip instalar gradio espaciospython app.py
Proporcionamos un script de capacitación train.py
para ajustar OmniGen. Aquí hay un ejemplo de juguete sobre el ajuste fino de LoRA:
acelerar el lanzamiento --num_processes=1 train.py --model_name_or_path Shitao/OmniGen-v1 --batch_size_per_dispositivo 2 --condition_dropout_prob 0.01 --lr 1e-3 --use_lora --lora_rank 8 --json_file ./toy_data/toy_subject_data.jsonl --image_path ./toy_data/images --max_input_length_limit 18000 --keep_raw_resolución --max_image_size 1024 --gradient_acumulación_pasos 1 --ckpt_cada 10 --épocas 200 --log_every 1 --results_dir ./resultados/toy_finetune_lora
Consulte docs/fine-tuning.md para obtener más detalles (por ejemplo, ajuste completo).
¡Agradezca a todos nuestros contribuyentes por sus esfuerzos y dé una calurosa bienvenida a los nuevos miembros para que se unan!
Este repositorio tiene la licencia MIT.
Si encuentra útil este repositorio, considere darle una estrella ⭐ y una cita.
@article{xiao2024omnigen, title={Omnigen: Unified image generation}, author={Xiao, Shitao and Wang, Yueze and Zhou, Junjie and Yuan, Huaying and Xing, Xingrun and Yan, Ruiran and Wang, Shuting and Huang, Tiejun and Liu, Zheng}, journal={arXiv preprint arXiv:2409.11340}, year={2024} }