Introdução geral
O UNO é uma estrutura de geração de imagens de código aberto desenvolvida pela ByteDance Intelligent Creation Team. Ela é baseada em FLUXO.1, com foco na geração de imagens personalizadas de assunto único e de vários assuntos por meio de uma abordagem de generalização "menos para mais", o UNO resolve os desafios da extensão de dados e da consistência de assuntos em cenários de vários assuntos, aproveitando o recurso de geração de contexto do Diffusion Transformer (DiT) em conjunto com um processo de síntese de dados altamente consistente. Ele permite que os usuários gerem imagens de alta qualidade a partir de descrições textuais e imagens de referência, o que é amplamente aplicável à criação de imagens personalizadas, ao design de personagens virtuais e a outros cenários. O código do projeto está licenciado sob Apache 2.0 e os pesos do modelo estão licenciados sob CC BY-NC 4.0, adequado para pesquisa acadêmica e uso não comercial.
Lista de funções
- Geração de imagem de objeto único: gera uma imagem consistente com a descrição baseada em uma única imagem de referência, preservando as características do objeto.
- Geração de imagens de vários assuntos: gera vários assuntos específicos na mesma cena, mantendo seus respectivos recursos organizados.
- Geração de contexto: explorando o recurso de aprendizado de contexto do transformador de difusão para gerar imagens altamente consistentes.
- Otimização de pouca memória: suporta o modo fp8 com um pico de memória de aproximadamente 16 GB para GPUs de consumo.
- Ajuste fino do modelo: fornece estratégias de pré-treinamento e treinamento em vários estágios para dar suporte à otimização iterativa de modelos de texto para imagem.
- Suporte de código aberto: o código de treinamento, o código de inferência e os pesos do modelo são fornecidos para facilitar a extensão do aplicativo pelos pesquisadores.
Usando a Ajuda
Processo de instalação
Para usar o UNO, é necessário instalar e configurar as dependências em seu ambiente local. A seguir, as etapas de instalação detalhadas para ambientes Python 3.10 a 3.12.
- Criação de um ambiente virtual
Primeiro, crie um ambiente virtual Python separado para evitar conflitos de dependência. Você pode usar o seguinte comando:python -m venv uno_env source uno_env/bin/activate # Linux/MacOS uno_env\Scripts\activate # Windows
Ou use o Conda para criar um ambiente:
conda create -n uno_env python=3.10 -y conda activate uno_env
- Instalando o PyTorch
Se estiver usando uma GPU AMD, NVIDIA RTX série 50 ou macOS MPS, será necessário instalar manualmente a versão apropriada do PyTorch. Consulte o site do PyTorch (https://pytorch.org/) Selecione a versão correta. Por exemplo:pip install torch torchvision torchaudio
- Instalação das dependências do UNO
Clone o repositório UNO e instale as dependências:git clone https://github.com/bytedance/UNO.git cd UNO pip install -e . # 仅用于推理 pip install -e .[train] # 用于推理和训练
Observação: Certifique-se de que
requirements.txt
as dependências estão instaladas corretamente. Se encontrar problemas, verifique se há bibliotecas de sistema ausentes (como affmpeg
) e por meio deconda install -c conda-forge ffmpeg
Instalação. - Faça o download dos pontos de controle do modelo
O UNO se baseia no modelo FLUX.1-dev e nos pontos de verificação associados. Ele pode ser baixado das seguintes maneiras:- download automáticoAo executar scripts de inferência, os pontos de verificação são passados automaticamente pelo
hf_hub_download
Faça o download para o caminho padrão (~/.cache/huggingface
). - download do manualUse a CLI do Hugging Face para fazer download de modelos:
huggingface-cli download black-forest-labs/FLUX.1-dev huggingface-cli download xlabs-ai/xflux_text_encoders huggingface-cli download openai/clip-vit-large-patch14 huggingface-cli download bytedance-research/UNO
Após o download, coloque o modelo no diretório especificado (por exemplo
models/unet
responder cantandomodels/loras
). - download automáticoAo executar scripts de inferência, os pontos de verificação são passados automaticamente pelo
- Verificar a instalação
Após a conclusão da instalação, execute o seguinte comando para verificar se o ambiente está configurado corretamente:python -c "import torch; print(torch.cuda.is_available())"
Se o retorno
True
A seguir, um exemplo de uma configuração bem-sucedida do ambiente de GPU.
Uso
O UNO fornece uma interface Gradio (app.py
) é usado para geração interativa de imagens e também pode ser usado para executar scripts de inferência a partir da linha de comando (inference.py
). A seguir estão os principais procedimentos operacionais.
Geração de imagens por meio da interface Gradio
- Iniciando o aplicativo Gradio
Certifique-se de que o Gradio esteja instalado (incluído no pacoterequirements.txt
(em). Execute o seguinte comando para iniciar a interface:python app.py
Na inicialização, o navegador abre uma página local (geralmente a página
http://127.0.0.1:7860
). - parâmetro de entrada
Na interface do Gradio:- Digite um prompt de texto (
prompt
), descreva a cena da imagem que deseja gerar, por exemplo, "um gato e um cachorro brincando em um parque". - Carregue de 1 a 4 imagens de referência (
image_ref1
até queimage_ref4
), essas imagens definem a aparência do objeto. - Defina o valor da semente (
seed
) para controlar a aleatoriedade dos resultados gerados; o valor padrão é 3407. - Selecione o tipo de modelo (
flux-dev
eflux-dev-fp8
talvezflux-schnell
), recomendadoflux-dev-fp8
para reduzir os requisitos de memória gráfica.
- Digite um prompt de texto (
- Geração de imagens
Clique no botão Generate (Gerar) e o UNO gerará os resultados com base nos prompts e na imagem de referência. O tempo de geração depende do desempenho do hardware e, normalmente, leva de alguns segundos a alguns minutos em GPUs de consumo, como a RTX 3090.
Executar o raciocínio a partir da linha de comando
- Prepare-se para entrar
Crie um arquivo de configuração que contenha os caminhos do prompt e da imagem de referência ou especifique os parâmetros diretamente na linha de comando. Exemplo:python inference.py --prompt "A man in a suit, standing in a city" --image_paths "./assets/examples/man.jpg" --model_type "flux-dev-fp8" --save_path "./output"
- Descrição dos parâmetros comuns
--prompt
Descrição textual: Uma descrição textual que define o conteúdo da imagem gerada.--image_paths
Caminho de imagem de referência com suporte a várias imagens.--model_type
Tipo de modelo, recomendadoflux-dev-fp8
.--offload
Ativar o descarregamento da memória de vídeo para reduzir o uso da memória de vídeo.--num_steps
Número de etapas de difusão: O número de etapas de difusão, padrão 25, afeta a qualidade da geração.--guidance
Fator de orientação: O fator de orientação, padrão 4, controla a correspondência do texto com a imagem.
- Exibir resultados
A imagem gerada é salva no arquivo--save_path
O diretório especificado (por exemplooutput/inference
).
Operação da função em destaque
Geração de um único sujeito
- procedimento::
- Carregue uma imagem do assunto (por exemplo, uma foto de uma pessoa).
- Digite um prompt de texto que descreva a cena-alvo (por exemplo, "Esta pessoa está caminhando na praia").
- Defina a resolução da imagem de referência como 512 (padrão).
- Para gerar uma imagem, o UNO mantém a aparência das características do sujeito (por exemplo, rosto, roupas).
- advertênciaImagem de referência: Certifique-se de que a imagem de referência seja nítida e que o objeto esteja bem caracterizado, evitando imagens borradas ou de baixa qualidade.
Geração de vários assuntos
- procedimento::
- Faça upload de várias imagens de referência (por exemplo, uma foto de um gato e uma foto de um cachorro).
- Insira prompts de texto para descrever cenas com vários assuntos (por exemplo, "O gato e o cachorro estão brincando na grama").
- Defina a resolução da imagem de referência como 320 (padrão para vários temas).
- Para gerar a imagem, o UNO evita a confusão de características do sujeito por meio da técnica UnoPE (Universal Rotation Position Embedding).
- advertênciaO número de imagens de referência não deve exceder 4 e cada tema deve ser claramente distinguido na imagem.
Otimização de pouca memória
- fazer uso de
flux-dev-fp8
o espaço de memória é reduzido para cerca de 16 GB. - começar a usar
--offload
descarregando parte do cálculo para a CPU, reduzindo ainda mais os requisitos de memória gráfica. - Para usuários de GPUs de consumo, como RTX 3090 ou RTX 4090.
Perguntas frequentes
- Memória de vídeo insuficienteTentativa de reduzir a resolução (
--width
responder cantando--height
) para 512x512, ou use a opçãoflux-dev-fp8
Modelos. - falha na instalaçãoVerifique se a versão do PyTorch é compatível com a GPU e instale manualmente uma versão específica, se necessário.
- Geração insatisfatória de resultados: Ajustes
--guidance
(aumentado para 5 ou 6) ou--num_steps
(aumentado para 50) para melhorar a qualidade da imagem.
cenário do aplicativo
- Criação de imagens personalizadas
Os usuários podem carregar suas próprias fotos e combiná-las com descrições de texto para gerar imagens de cenários específicos. Por exemplo, o upload de uma selfie gera uma imagem de "você caminhando na cidade do futuro", que é adequada para a criação de conteúdo de mídia social. - Design de personagens virtuais
Os desenvolvedores de jogos ou animadores podem fazer upload de esboços de personagens para gerar imagens de personagens para diferentes cenários e manter uma aparência consistente do personagem, adequada para mangá, animação ou desenvolvimento de jogos. - Publicidade e marketing
As equipes de marketing podem carregar imagens de mascotes de produtos ou marcas para gerar diversos cenários de publicidade (por exemplo, produtos exibidos em diferentes estações) e aumentar a diversidade do conteúdo visual. - pesquisa acadêmica
Os pesquisadores podem usar o código-fonte aberto e o fluxo de treinamento do UNO para explorar a aplicação de modelos de difusão à geração de vários sujeitos, validar novos algoritmos ou otimizar os modelos existentes.
QA
- Qual é o hardware compatível com o UNO?
O UNO recomenda as GPUs NVIDIA (como RTX 3090 ou 4090) com um mínimo de 16 GB de memória de vídeo. As GPUs AMD e o macOS MPS são compatíveis, mas o PyTorch precisa ser configurado manualmente. - Como melhorar a qualidade das imagens geradas?
Adição de uma etapa de difusão (--num_steps
definido como 50) ou ajustar o fator de bootstrap (--guidance
(definido como 5-6). Certifique-se de que a imagem de referência seja clara e que os avisos de texto sejam específicos. - O UNO é suportado comercialmente?
Os pesos do modelo estão licenciados sob CC BY-NC 4.0 apenas para uso não comercial. O uso comercial está sujeito aos termos da licença original do FLUX.1-dev. - Como lidar com a confusão de recursos na geração de vários assuntos?
UNO Reduza a confusão usando a técnica UnoPE. Certifique-se de que os recursos do tema de cada imagem de referência estejam claros e que a resolução seja adequadamente reduzida (por exemplo, 320) para otimizar o efeito.