Notícias | Metodologia | Capacidades | Início rápido | Ajuste fino | Licença | Citação
03/11/2024: Adicionadas demonstração e API de réplica:
28/10/2024: Lançamos uma nova versão do código de inferência, otimizando o uso de memória e o custo de tempo. Você pode consultar docs/inference.md para obter informações detalhadas.
22/10/2024: ? Liberamos o código para OmniGen. Inferência: docs/inference.md Trem: docs/fine-tuning.md
22/10/2024: ? Lançamos a primeira versão do OmniGen. Peso do modelo: Shitao/OmniGen-v1 Demonstração HF: ?
OmniGen é um modelo unificado de geração de imagens que pode gerar uma ampla variedade de imagens a partir de prompts multimodais. Ele foi projetado para ser simples, flexível e fácil de usar. Fornecemos código de inferência para que todos possam explorar mais funcionalidades do OmniGen.
Os modelos de geração de imagens existentes geralmente exigem o carregamento de vários módulos de rede adicionais (como ControlNet, adaptador IP, rede de referência, etc.) e a execução de etapas extras de pré-processamento (por exemplo, detecção de rosto, estimativa de pose, corte, etc.) para gerar uma imagem satisfatória. imagem. Porém, acreditamos que o futuro paradigma de geração de imagens deve ser mais simples e flexível, ou seja, gerar diversas imagens diretamente por meio de instruções arbitrariamente multimodais, sem a necessidade de plugins e operações adicionais, semelhante ao modo como o GPT funciona na geração de linguagens.
Devido aos recursos limitados, OmniGen ainda tem espaço para melhorias. Continuaremos a otimizá-lo e esperamos que inspire modelos de geração de imagens mais universais. Você também pode ajustar facilmente o OmniGen sem se preocupar em projetar redes para tarefas específicas; você só precisa preparar os dados correspondentes e executar o script. A imaginação não é mais limitada; todos podem construir qualquer tarefa de geração de imagens e talvez possamos realizar coisas muito interessantes, maravilhosas e criativas.
Se você tiver alguma dúvida, ideia ou tarefa interessante que deseja que a OmniGen realize, sinta-se à vontade para discutir conosco: [email protected], [email protected], [email protected]. Agradecemos qualquer feedback para nos ajudar a melhorar o modelo.
Você pode ver detalhes em nosso artigo.
OmniGen é um modelo unificado de geração de imagem que você pode usar para executar diversas tarefas, incluindo, entre outras, geração de texto para imagem, geração orientada por assunto, geração de preservação de identidade, edição de imagem e geração condicionada de imagem. OmniGen não precisa de plugins ou operações adicionais, ele pode identificar automaticamente os recursos (por exemplo, objeto necessário, pose humana, mapeamento de profundidade) nas imagens de entrada de acordo com o prompt de texto. Apresentamos alguns exemplos em inference.ipynb. E em inference_demo.ipynb mostramos um pipeline interessante para gerar e modificar uma imagem.
Aqui estão as ilustrações dos recursos do OmniGen:
Você pode controlar a geração de imagens de forma flexível via OmniGen
Geração de expressão de referência: você pode inserir várias imagens e usar uma linguagem simples e geral para se referir aos objetos dentro dessas imagens. OmniGen pode reconhecer automaticamente os objetos necessários em cada imagem e gerar novas imagens com base neles. Nenhuma operação adicional, como corte de imagem ou detecção de rosto, é necessária.
Se você não estiver totalmente satisfeito com determinadas funcionalidades ou desejar adicionar novos recursos, você pode tentar ajustar o OmniGen.
Instale via Github:
clone do git https://github.com/staoxiao/OmniGen.gitcd OmniGen pip instalar -e.
Aqui estão alguns exemplos:
da importação OmniGen OmniGenPipelinepipe = OmniGenPipeline.from_pretrained("Shitao/OmniGen-v1") # Nota: O caminho do seu modelo local também é aceitável, como 'pipe = OmniGenPipeline.from_pretrained(your_local_model_path)', onde todos os arquivos em your_local_model_path devem ser organizados como https://huggingface.co/Shitao/OmniGen-v1/tree/main # Nota: Se o link original https://huggingface.co/Shitao/OmniGen-v1/tree/main estiver instável durante o download, é recomendado usar este link espelho https://hf-mirror.com/Shitao/OmniGen -v1/tree/main ou outras formas em https://hf-mirror.com/ ## Text to Imageimages = pipe(prompt="Um homem de cabelos cacheados e camisa vermelha está tomando chá.", height=1024, largura = 1024, escala_de_orientação = 2,5, semente = 0, )images[0].save("example_t2i.png") # salva a saída PIL Image## Multimodal para Image# No prompt, usamos o espaço reservado para representar a imagem. O espaço reservado para imagem deve estar no formato <|image_*|># Você pode adicionar várias imagens em input_images. Certifique-se de que cada imagem tenha seu espaço reservado. Por exemplo, para a lista input_images [img1_path, img2_path], o prompt precisa ter dois espaços reservados: <|image_1|>, <|image_2|>.images = pipe (prompt="Um homem de camisa preta está lendo um livro. O homem é o homem certo em <|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") # salva a imagem PIL de saída
Se estiver sem memória, você pode definir offload_model=True
. Se o tempo de inferência for muito longo ao inserir várias imagens, você poderá reduzir max_input_image_size
. Para obter os recursos necessários e o método para executar o OmniGen com eficiência, consulte docs/inference.md#requiremented-resources.
Para obter mais exemplos de geração de imagens, você pode consultar inference.ipynb e inference_demo.ipynb
Para obter mais detalhes sobre o argumento na inferência, consulte docs/inference.md.
Em breve.
Construímos uma demonstração online no Huggingface.
Para a demonstração local do gradio, você precisa instalar pip install gradio spaces
e então você pode executar:
pip instalar gradio spacepython app.py
Fornecemos um script de treinamento train.py
para ajustar o OmniGen. Aqui está um exemplo de brinquedo sobre o ajuste fino do LoRA:
acelerar o lançamento --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_cada 10 --épocas 200 --log_cada 1 --results_dir ./resultados/toy_finetune_lora
Consulte docs/fine-tuning.md para obter mais detalhes (por exemplo, ajuste completo).
Agradeça a todos os nossos colaboradores por seus esforços e dê as boas-vindas aos novos membros para participarem!
Este repositório está licenciado sob a licença MIT.
Se você achar este repositório útil, considere dar uma estrela ⭐ e uma citação
@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} }