O Storymaker é uma solução de personalização preserva não apenas a consistência dos rostos, mas também roupas, penteados e corpos na cena de vários personagens, permitindo o potencial de fazer uma história composta por uma série de imagens.
Visualização de imagens geradas pelo Storymaker. As três primeiras fileiras contam uma história sobre um dia na vida de um "trabalhador do escritório" e as duas últimas linhas contam uma história sobre um filme de "Before Sunrise".
[2024/11/09] Lançamos o código de treinamento.
[2024/09/20] Lançamos o relatório técnico.
[2024/09/02] Lançamos os pesos do modelo.
Você pode baixar diretamente o modelo de Huggingface.
Se você não puder acessar o HuggingFace, poderá usar o Mirror HF para baixar modelos.
export hf_endpoint = https: //hf-mirror.comhuggingface cli Download-Resumo-download Red-aigc/storymaker-Local-Dir Checkpoints ----local-dir-use-symlinks
Para o codificador FACE, você precisa baixar manualmente através deste URL para models/buffalo_l
como o link padrão é inválido. Depois de preparar todos os modelos, a árvore de pastas deve ser como:
. ├── models ├── checkpoints/mask.bin ├── pipeline_sdxl_storymaker.py └── README.md
#! Instale os transformadores de OpenCV-python aceleram o insightfaceImport difusserSimport cv2import torchimport numpy como npfrom pil importar imagem de insightface (nome = 'buffalo_l', root = './', provedores = ['cudaexecutionprovider', 'cpuexecutionprovider']) App.Prepare (ctx_id = 0, det_size = (640, 640))# Prepare modelos em ./checkpointsface_adapter = f './ 'image_encoder_path =' laion/clip-vit-h-14-laion2b-s32b-b79k ' # de https://huggingface.co/laion/clip-vit-h-14-laion2b-s32b-b79kbase_model =' huaquan/yamermix_vix_vix_vix_11bas # # de https://huggingface.co/huaquan/yamermix_v11pipe = stablediftionxlstorymakerpipline.from_pretring (BASE_MODEL, TORCH_DTYPE = Torch.float16) Pipe.CudAp () # Carga de carga.TtyPer = a_scale = 0,8) Pipe.Scheduler = UnipcMultistePscheduler.from_config (Pipe.scheduler.config)
Então, você pode personalizar suas próprias imagens
# Carregar uma imagem e maskface_image = image.open ("Exemplos/ldh.png"). convert ('rgb') mask_image = image.open ("exemplos/ldh_mask.png"). convert ('rgb') face_info = app.get (cv2.cvtcolor (np.array (face_image), cv2.color_rgb2bgr)) face_info = classificado (face_info, key = lambda x: (x ['bbox'] [2] -x ['bbox'] [0])*(x ['bbox'] [3] -x ['bbox'] [1])) [-1] # Use apenas o máximo de faceprompt = "uma pessoa está tirando uma selfie, a pessoa está usando Um chapéu vermelho e um vulcão está à distância "n_prompt =" de má qualidade, nsfw, baixa qualidade, feio, desfigurado e deformado "gerador = tch.Generator (dispositivo = 'cuda'). manual_seed (666) para i no intervalo (4): output = Pipe (imagem = face_image, Mask_image = Mask_image, FACE_INFO = FACE_INFO, PROMPT = PROMPRE, negativo_prompt = n_prompt, ip_adapter_scale = 0.8, lora_scale = 0.8, numinferent_steps = 25, orientação_cale = 7.5 960, gerador = gerador, .
Nosso trabalho é altamente inspirado no adaptador IP e instantid. Obrigado por suas ótimas obras!
Obrigado Yamer por desenvolver Yamermix, nós o usamos como modelo básico em nossa demonstração.