Implementação oficial do PhotoMaker: Personalização de Fotos Realistas de Humanos via Incorporação de ID Empilhada.
🌠 Principais Características:
- Personalização rápida em questão de segundos, sem necessidade de treinamento adicional em LoRA. 2. Garante uma fidelidade de ID impressionante, oferecendo diversidade, prometendo controlabilidade de texto e geração de alta qualidade. 3. Pode servir como um Adaptador para colaborar com outros Modelos Base ao lado de módulos LoRA na comunidade.
❗❗ Observação: Se houver recursos e aplicativos baseados em PhotoMaker, por favor, deixe-os na discussão e os listaremos na seção de Recursos Relacionados no arquivo README. Agora sabemos a implementação de Replicate, Windows, ComfyUI e WebUI. Obrigado a todos!
🚩 Novas Funcionalidades/Atualizações
- ✅ 20 de janeiro de 2024. Uma nota importante: Para as GPUs que não suportam bfloat16, por favor altere esta linha para
torch_dtype = torch.float16
, a velocidade será consideravelmente melhorada (1min/img (antes) vs. 14s/img (depois) na V100). O requisito mínimo de memória da GPU para o PhotoMaker é de 11G (Por favor, consulte este link para economizar memória da GPU). - ✅ 15 de janeiro de 2024. Lançamos o PhotoMaker.
🔥 Exemplos
Geração realista
Geração de Estilização
Nota: apenas altere o modelo base e adicione os módulos LoRA para uma melhor estilização
🔧 Dependências e Instalação
- Python >= 3.8 (Recomendado usar Anaconda ou Miniconda)
- PyTorch >= 2.0.0
conda create --name photomaker python=3.10 conda activate photomaker pip install -U pip
Instalar requisitos
pip install -r requirements.txt
Instalar photomaker
pip install git+https://github.com/TencentARC/PhotoMaker.git
Em seguida, você pode executar o seguinte comando para usá-lo
from photomaker import PhotoMakerStableDiffusionXLPipeline
⏬ Baixar Modelos
O modelo será baixado automaticamente através das seguintes duas linhas:
from huggingface_hub import hf_hub_download photomaker_path = hf_hub_download(repo_id="TencentARC/PhotoMaker", filename="photomaker-v1.bin", repo_type="model")
Você também pode optar por baixar manualmente a partir deste url.
💻 Como Testar
Use like difusores
- Dependência
import torch import os from diffusers.utils import load_image from diffusers import EulerDiscreteScheduler from photomaker import PhotoMakerStableDiffusionXLPipeline
Carregar modelo base
pipe = PhotoMakerStableDiffusionXLPipeline.from_pretrained( base_model_path, # pode ser alterado para qualquer modelo base com base em SDXL torch_dtype=torch.bfloat16, use_safetensors=True, variant="fp16" ).to(device)
Carregar ponto de verificação do PhotoMaker
pipe.load_photomaker_adapter( os.path.dirname(photomaker_path), subfolder="", weight_name=os.path.basename(photomaker_path), trigger_word="img" # define a palavra de gatilho )
pipe.scheduler = EulerDiscreteScheduler.from_config(pipe.scheduler.config)
Também pode cooperar com outros módulos LoRA
pipe.load_lora_weights(os.path.dirname(lora_path), weight_name=lora_model_name, adapter_name="xl_more_art-full")
pipe.set_adapters(["photomaker", "xl_more_art-full"], adapter_weights=[1.0, 0.5])
pipe.fuse_lora()
- Imagens de ID de entrada
define o ID de entrada das imagens
nome_da_pasta_de_entrada = './exemplos/newton_man' lista_de_nomes_de_arquivos = os.listdir(nome_da_pasta_de_entrada) lista_de_caminhos_das_imagens = sorted([os.path.join(nome_da_pasta_de_entrada, nome_do_arquivo) for nome_do_arquivo in lista_de_nomes_de_arquivos])
input_id_images = [] para caminho_da_imagem em lista_de_caminhos_de_imagem: input_id_images.append(carregar_imagem(caminho_da_imagem))
- Geração
Note que a palavra de gatilho img
deve seguir a palavra de classe para personalização
prompt = "um retrato de meio corpo de um homem img usando óculos de sol no traje do Homem de Ferro, melhor qualidade" prompt negativo = "(assimetria, pior qualidade, baixa qualidade, ilustração, 3d, 2d, pintura, desenhos animados, esboço), boca aberta, escala de cinza" gerador = torch.Gerador(dispositivo=device).semente_manual(42) imagens = pipe( prompt=prompt, input_id_images=input_id_images, negative_prompt=negative_prompt, num_images_per_prompt=1, num_inference_steps=num_steps, start_merge_step=10, generator=generator, ).imagens[0] imagens_gen.save('out_photomaker.png')
Iniciar uma demonstração local do gradio
Execute o seguinte comando:
python gradio_demo/app.py
Você poderia personalizar este script neste arquivo.
Se você deseja executá-lo no MAC, você deve seguir esta Instrução e então executar o app.py.
Dicas de Uso:
- Carregue mais fotos da pessoa a ser personalizada para melhorar a fidelidade do ID. Se a entrada for rosto(s) asiático(s), talvez considere adicionar 'Asiático' antes da palavra da classe, por exemplo,
imagem de mulher asiática
. - Ao estilizar, o rosto gerado parece muito realista? Ajuste a força do Estilo para 30-50, quanto maior o número, menor a fidelidade do ID, mas a capacidade de estilização será melhor. Você também pode experimentar outros modelos base ou LoRAs com bons efeitos de estilização.
- Reduza o número de imagens geradas e etapas de amostragem para obter maior velocidade. No entanto, por favor, tenha em mente que reduzir as etapas de amostragem pode comprometer a fidelidade do ID.
Recursos Relacionados
Replicar demonstração do PhotoMaker:
- Link da demonstração, execute o PhotoMaker no replicate, fornecido por @yorickvP e @jd7h. 2. Link da demonstração (versão de estilo).
Versão WebUI do PhotoMaker:
- stable-diffusion-webui-forge: https://github.com/lllyasviel/stable-diffusion-webui-forge fornecido por @Lvmin Zhang 2. Fooocus App: Fooocus-inswapper fornecido por @machineminded
Versão do Windows do PhotoMaker:
- bmaltais/PhotoMaker por @bmaltais, fácil de implantar o PhotoMaker no Windows. A descrição pode ser encontrada neste link. 2. sdbds/PhotoMaker-for-windows por @sdbds.
ComfyUI:
Versão puramente C/C++/CUDA do PhotoMaker:
Outras Aplicações / Demonstrativos Web
- Wisemodel 始智 (Easy to use in China) https://wisemodel.cn/space/gradio/photomaker
- OpenXLab (Easy to use in China): https://openxlab.org.cn/apps/detail/camenduru/PhotoMaker by @camenduru.
- Colab: https://github.com/camenduru/PhotoMaker-colab by @camenduru
- Monster API: https://monsterapi.ai/playground?model=photo-maker
- Pinokio: https://pinokio.computer/item?uri=https://github.com/cocktailpeanutlabs/photomaker
Graido demo em 45 linhas
Fornecido por @Gradio
🤗 Agradecimentos
- PhotoMaker é co-organizado pelo Tencent ARC Lab e pela Universidade Nankai MCG-NKU.
- Inspirado por muitas demos e repositórios excelentes, incluindo IP-Adapter, multimodalart/Ip-Adapter-FaceID, FastComposer e T2I-Adapter. Obrigado pelo excelente trabalho deles!
- Agradecimentos à equipe Venus da Tencent PCG por seus feedbacks e sugestões.
- Agradecimentos à equipe HuggingFace por seu generoso apoio!
Aviso Legal
Este projeto se esforça para impactar positivamente o domínio da geração de imagens impulsionada por IA. Os usuários têm a liberdade de criar imagens usando esta ferramenta, mas espera-se que cumpram as leis locais e a utilizem de forma responsável. Os desenvolvedores não assumem qualquer responsabilidade por possíveis usos indevidos por parte dos usuários.
BibTeX
Se você achar o PhotoMaker útil para sua pesquisa e aplicações, por favor cite usando este BibTeX:
@inproceedings{li2023photomaker, title={PhotoMaker: Personalização de Fotos Realistas de Humanos via Incorporação de ID Empilhada}, author={Li, Zhen e Cao, Mingdeng e Wang, Xintao e Qi, Zhongang e Cheng, Ming-Ming e Shan, Ying}, booktitle={Conferência IEEE sobre Visão Computacional e Reconhecimento de Padrões (CVPR)}, year={2024}