Actualités | Méthodologie | Capacités | Démarrage rapide | Affiner | Licence | Citation
03/11/2024 : Ajout de la démo et de l'API de réplication :
2024-10-28 : Nous publions une nouvelle version du code d'inférence, optimisant l'utilisation de la mémoire et le coût du temps. Vous pouvez vous référer à docs/inference.md pour des informations détaillées.
2024-10-22 : ? Nous publions le code pour OmniGen. Inférence : docs/inference.md Train : docs/fine-tuning.md
2024-10-22 : ? Nous publions la première version d'OmniGen. Poids du modèle : Shitao/OmniGen-v1 HF Démo : ?
OmniGen est un modèle de génération d'images unifié qui peut générer une large gamme d'images à partir d'invites multimodales. Il est conçu pour être simple, flexible et facile à utiliser. Nous fournissons un code d'inférence afin que chacun puisse explorer davantage de fonctionnalités d'OmniGen.
Les modèles de génération d'images existants nécessitent souvent le chargement de plusieurs modules réseau supplémentaires (tels que ControlNet, IP-Adapter, Reference-Net, etc.) et l'exécution d'étapes de prétraitement supplémentaires (par exemple, détection de visage, estimation de pose, recadrage, etc.) pour générer une image satisfaisante. image. Cependant, nous pensons que le futur paradigme de génération d'images devrait être plus simple et flexible, c'est-à-dire générer diverses images directement via des instructions arbitrairement multimodales sans avoir besoin de plugins et d'opérations supplémentaires, de la même manière que GPT fonctionne dans la génération de langage.
En raison de ressources limitées, OmniGen peut encore s’améliorer. Nous continuerons à l’optimiser et espérons qu’il inspirera des modèles de génération d’images plus universels. Vous pouvez également facilement affiner OmniGen sans vous soucier de la conception de réseaux pour des tâches spécifiques ; il vous suffit de préparer les données correspondantes, puis d'exécuter le script. L'imagination n'est plus limitée ; tout le monde peut construire n’importe quelle tâche de génération d’images, et peut-être pouvons-nous réaliser des choses très intéressantes, merveilleuses et créatives.
Si vous avez des questions, des idées ou des tâches intéressantes que vous souhaitez qu'OmniGen accomplisse, n'hésitez pas à en discuter avec nous : [email protected], [email protected], [email protected]. Nous apprécions tout commentaire pour nous aider à améliorer le modèle.
Vous pouvez voir les détails dans notre article.
OmniGen est un modèle de génération d'images unifié que vous pouvez utiliser pour effectuer diverses tâches, notamment la génération de texte en image, la génération axée sur le sujet, la génération préservant l'identité, l'édition d'images et la génération conditionnée par l'image. OmniGen n'a pas besoin de plugins ou d'opérations supplémentaires, il peut identifier automatiquement les caractéristiques (par exemple, objet requis, pose humaine, cartographie de profondeur) dans les images d'entrée en fonction de l'invite de texte. Nous présentons quelques exemples dans inference.ipynb. Et dans inference_demo.ipynb, nous montrons un pipeline intéressant pour générer et modifier une image.
Voici les illustrations des capacités d'OmniGen :
Vous pouvez contrôler la génération d'images de manière flexible via OmniGen
Génération d'expressions de référence : vous pouvez saisir plusieurs images et utiliser un langage simple et général pour faire référence aux objets contenus dans ces images. OmniGen peut reconnaître automatiquement les objets nécessaires dans chaque image et générer de nouvelles images basées sur eux. Aucune opération supplémentaire, telle que le recadrage d’image ou la détection de visage, n’est requise.
Si vous n'êtes pas entièrement satisfait de certaines fonctionnalités ou si vous souhaitez ajouter de nouvelles capacités, vous pouvez essayer de peaufiner OmniGen.
Installer via Github :
clone git https://github.com/staoxiao/OmniGen.gitcd OmniGen pip install -e .
Voici quelques exemples :
depuis OmniGen import OmniGenPipelinepipe = OmniGenPipeline.from_pretrained("Shitao/OmniGen-v1") # Remarque : le chemin de votre modèle local est également acceptable, tel que "pipe = OmniGenPipeline.from_pretrained(your_local_model_path)", où tous les fichiers de votre_local_model_path doivent être organisés comme https://huggingface.co/Shitao/OmniGen-v1/tree/main # Remarque : Si le lien d'origine https://huggingface.co/Shitao/OmniGen-v1/tree/main est instable lors du téléchargement, il est recommandé d'utiliser ce lien miroir https://hf-mirror.com/Shitao/OmniGen -v1/tree/main ou d'autres manières sur https://hf-mirror.com/ ## Text to Imageimages = pipe(prompt="Un homme aux cheveux bouclés en chemise rouge boit du thé.", height=1024, largeur = 1024, guidance_scale = 2,5, graine = 0, )images[0].save("example_t2i.png") # enregistrer la sortie PIL Image## Multi-modal vers Image# Dans l'invite, nous utilisons l'espace réservé pour représenter l'image. L'espace réservé à l'image doit être au format <|image_*|># Vous pouvez ajouter plusieurs images dans input_images. Veuillez vous assurer que chaque image a son espace réservé. Par exemple, pour la liste input_images [img1_path, img2_path], l'invite doit avoir deux espaces réservés : <|image_1|>, <|image_2|>.images = pipe (prompt="Un homme en chemise noire lit un livre. Cet homme est l'homme idéal dans <|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") # enregistrer l'image PIL de sortie
En cas de manque de mémoire, vous pouvez définir offload_model=True
. Si le temps d'inférence est trop long lors de la saisie de plusieurs images, vous pouvez réduire le max_input_image_size
. Pour connaître les ressources requises et la méthode permettant d'exécuter OmniGen efficacement, veuillez vous référer à docs/inference.md#requiremented-resources.
Pour plus d'exemples de génération d'images, vous pouvez vous référer à inference.ipynb et inference_demo.ipynb
Pour plus de détails sur l'argument dans l'inférence, veuillez vous référer à docs/inference.md.
À venir.
Nous construisons une démo en ligne dans Huggingface.
Pour la démo locale de gradio, vous devez installer pip install gradio spaces
, puis vous pouvez exécuter :
pip installer gradio spacepython app.py
Nous fournissons un script de formation train.py
pour affiner OmniGen. Voici un exemple de jouet sur le réglage fin de LoRA :
accélérer le lancement --num_processes=1 train.py --model_name_or_path Shitao/OmniGen-v1 --batch_size_per_device 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_resolution --max_image_size 1024 --gradient_accumulation_steps 1 --ckpt_every 10 --époques 200 --log_every 1 --results_dir ./results/toy_finetune_lora
Veuillez vous référer à docs/fine-tuning.md pour plus de détails (par exemple, réglage fin complet).
Merci à tous nos contributeurs pour leurs efforts et bienvenue chaleureusement aux nouveaux membres à nous rejoindre !
Ce dépôt est sous licence MIT.
Si vous trouvez ce référentiel utile, pensez à donner une étoile ⭐ et une citation
@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} }