Anifusão-SD
TL;DR
Este é um novo modelo do tipo Stable-Diffusion (ajustado a partir do SD2) para imagens de anime, suportando resolução de 768x768 e superando significativamente alguns modelos populares de anime de acordo com nossas avaliações. Os pontos de verificação são públicos ( instruções de instalação ), a demonstração está disponível por algum tempo.
- Introdução
- Antecedentes
- Modelos de Difusão
- Difusão Latente
- Difusão Estável
- Difusão Waifu
- Difusão Estável 2 - Nosso modelo: treinamento
- Condicionador
- Problemas técnicos e otimizações
- Atualização do conjunto de treinamento
- Treinamento de alta resolução
- Alterações de amostragem - Resultados
- Comparação com outros modelos de anime
- Discussão
- Referências
- ponteiros
Após meus experimentos com modelos de difusão de treinamento a partir do zero, várias pessoas apontaram que há várias versões de difusão estável ajustadas nos conjuntos de dados iguais/semelhantes. Em particular:
- Waifu Diffusion : está usando um subconjunto relativamente pequeno dos dados e apenas alimenta o prompt de tag no CLIP para condicionamento), sem nenhuma modificação de código no Stable Diffusion original (isso é problemático para IMO). No entanto, parece ser o modelo de difusão de anime mais popular no momento. Ele liberou o posto de controle para o público, ao contrário do próximo modelo;
- NovelAI : isso é feito por uma empresa real, não por pesquisadores/engenheiros independentes. Eles não liberam o modelo, mas fornecem uma interface paga para ele. Aparentemente, também houve algum drama com o vazamento de seu ponto de verificação e código, do qual parece que eles tiveram algumas pequenas modificações no Stable Diffusion original;
- Anything-v3 : este apareceu um pouco mais tarde, não há muitas informações sobre o modelo, mas suspeita-se que tenha sido ajustado pelo WaifuDiffusion (pelo menos, ele usa transformações de prompt semelhantes antes de alimentá-lo ao CLIP). Produz imagens muito detalhadas e bonitas, mas não é muito fiel ao prompt. Seu espaço de saída é muito pequeno (falta de diversidade, todas as imagens têm o mesmo estilo e são semelhantes entre si) e lembra os modelos GAN pré-difusão. Ao contrário dos outros modelos, este também é incapaz de gerar NSFW - então talvez tenha sido obtido por ajuste fino em um pequeno conjunto de dados de imagens de alta qualidade por um único artista.
No entanto, dada a abundância de modelos nesta área, a princípio, decidi não me preocupar em me envolver e deixar o progresso seguir seu curso. Mas agora, Stable Diffusion 2 foi lançado e ainda não há progresso visível nos modelos de anime. Então, decidi tentar - neste post, estou descrevendo como ajustei o Stable Diffusion 2 com um condicionador de prompt personalizado e mostro os resultados. Claro, eu também publico o modelo - pelos poucos prompts que tentei, foi melhor do que os modelos listados acima. As próximas seções se concentram nos detalhes técnicos, se você não estiver interessado, pode pular diretamente para Resultados .
Fundo
Para entender o que está acontecendo e o que mudou, vamos primeiro dar uma breve visão geral dos modelos existentes.
Modelos de difusão
Não vou entrar em detalhes sobre os modelos de difusão, já existem muitos comentários bons na internet. Para nossos propósitos, basta saber que a ideia é decompor o processo de geração da imagem em uma sequência de etapas de “desnoirização”. Durante o treinamento, o backbone do modelo (no caso de imagens - geralmente um UNet) recebe uma imagem corrompida e a etapa de remoção de ruído e está tentando desfazer uma única etapa de corrupção. Durante a inferência, partimos de um ruído aleatório e aplicamos o backbone repetidamente para “desfazer” todas as etapas de corrupção imaginárias. A matemática exata por trás disso precisa ser precisa. No momento da inferência, a maioria dos modelos de difusão modernos modifica o processo para reduzir o número de etapas de amostragem (isso foi possibilitado por alguém que notou que o processo é suspeitosamente semelhante à solução de uma equação diferencial estocástica com um método numérico e aplicou um solucionador DE mais inteligente em vez de).
difusão latente
Esta é sem dúvida a ideia mais importante, usada na maioria dos modelos de difusão aberta. Empresas como Google ou OpenAI podem se dar ao luxo de treinar e usar modelos de difusão no espaço de pixel original, porque possuem muito hardware. Mas para um leigo, treinar (ou mesmo executar) UNet em um espaço de 512x512 pixels é muito caro. A ideia é treinar o autoencoder que comprime a imagem do espaço original 512x512x3 para um espaço latente (no caso de Stable Diffusion — 64x64x4). O autoencoder é treinado como um VAE com regularização baseada em KL, para manter o espaço latente “agradável”.
Então, o modelo realiza a difusão neste espaço 64x64x4, que obviamente é muito mais eficiente. A desvantagem é que o VAE não é perfeito e algumas informações são perdidas durante a compactação da imagem. Mas na prática, funciona muito bem.
FWIW, abordagens alternativas são possíveis, por exemplo, Imagen gera uma imagem de baixa dimensão no espaço de pixel e, em seguida, aumenta progressivamente sua escala. No entanto, isso não é relevante para o modelo que estamos descrevendo neste artigo.
Difusão estável
Isso foi mais um avanço social do que técnico. O modelo era um modelo de difusão latente “vanilla”, treinado em LAION , e ao contrário da maioria dos modelos anteriores de geração de imagens, foi divulgado ao público. Isso disponibilizou a tecnologia para um público amplo não familiarizado com Machine Learning, gerando muita criatividade, discussões e pessoas ajustando-a em vários conjuntos de dados (por exemplo, os modelos de anime mencionados acima).
Uma escolha interessante na arquitetura que é muito relevante para nós é como o modelo está condicionando. Normalmente, os modelos são treinados nos modos “incondicional” ( UNet(imagem corrompida) ~ imagem ) e condicional ( UNet (imagem corrompida, condição) ~ imagem ), e orientação livre de classificador é usada durante a amostragem: em vez de usar UNet ( imagem corrompida , condição ) ao gerar imagens, ele usa C * UNet ( imagem corrompida, condição ) — ( C — 1) * UNet ( imagem corrompida ) e Cé significativamente maior do que 1 (por exemplo, 7). Isso não é muito intuitivo, mas melhora muito a qualidade da imagem e a fidelidade imediata das imagens geradas.
O que é relevante para nós é como a condição é obtida. Na difusão estável, eles usam a última camada oculta do codificador de texto do modelo CLIP . Ele é congelado, ou seja, os gradientes não são retropropagados para ele durante o treinamento. Ele pode ser considerado um modelo de codificador de linguagem, com alguns sabores secundários de imagem direcionando a compreensão da linguagem para a compreensão visual.
Difusão Waifu
Esta é uma difusão estável ajustada em imagens de anime. Parece que eles usaram um subconjunto de Danbooru2021 (ou algo semelhante) como conjunto de treinamento. Eles usaram o Stable Diffusion como está, sem nenhuma modificação no código (eles fizeram um ajuste fino na parte do decodificador do VAE, para fazê-lo funcionar um pouco melhor com imagens de anime).
Como resultado, eles também usam CLIP como condicionador, alimentando-o com uma string com tags como prompt. Acho que funcionou muito mal, já que eles também pré-processam tags (por exemplo, substituindo sublinhados por espaços). Mas, mesmo com isso, parece que a compreensão do prompt pelo CLIP está abaixo do ideal.
Difusão estável 2
Esta é uma versão incremental que retreinou o modelo (do mesmo tamanho) do zero e também substituiu o condicionador por OpenCLIP . Ele também possui alguns recursos adicionais interessantes, como img2img baseado em profundidade e modelo de resolução mais alta (768x768 pixels).
Nosso modelo: treinamento
O objetivo é ajustar o Stable Diffusion 2 nas imagens do anime, substituindo o codificador por um modelo personalizado especializado para o conjunto de tags como entrada, em oposição à linguagem natural do CLIP. Além de um melhor condicionamento, isso também possibilitaria a técnica de aumento imediato da Anifusion , que tanto ajudou na qualidade e diversidade ali.
Condicionador
Usamos a mesma abordagem do Anifusion: o modelo de condicionamento é um transformador de tamanho BERT sem incorporações posicionais (para capturar a simetria dos prompts de tags: a ordem das tags não deve importar). Nós apenas substituímos o condicionador, mantendo a mesma parte de atenção cruzada do backbone de difusão.
Uma questão importante aqui é como inicializar o transformador de pesos. Começar com o condicionador não treinado e a UNet treinada e treiná-los em conjunto pode levar o processo de treinamento a destruir ou degradar significativamente os pesos da UNet. Felizmente, não é difícil consertar isso: podemos congelar a UNet e executar o treinamento apenas para a parte do transformador por algum tempo.
Problemas técnicos e otimizações
Para tornar o treinamento eficiente, é importante espremer o maior tamanho de lote possível para a RAM de vídeo (por exemplo, porque o custo de aplicação da lógica do otimizador é pago apenas uma vez por lote). Existem basicamente duas direções aqui.
Mudanças de pipeline
O código de treinamento SD canônico executa o codificador VAE online, analisando a imagem bruta e codificando-a. Este é o fruto mais fácil de se livrar: pesos VAE consomem VRAM, variáveis intermediárias da aplicação deste codificador também consomem VRAM, o processo de codificação leva tempo. Em particular, se fizermos várias passagens pelos dados, não faz sentido pagar o custo de codificar a mesma imagem várias vezes.
Felizmente, esta parte é fácil de otimizar: apenas pré-codificamos todas as imagens no conjunto de treinamento. O benefício adicional é que o conjunto de treinamento resultante é muito menor (em termos de tamanho de disco) do que as imagens originais de 512x512 no espaço de pixels.
Uma outra maneira de economizar um pouco de VRAM é desabilitar o EMA. A média móvel exponencial é um truque para melhorar ligeiramente a qualidade do modelo (aproximadamente) calculando a média dos pesos de um monte de últimos pontos de verificação, e não armazenar EMA é uma maneira fácil de usar menos VRAM sem prejudicar muito o modelo resultante.
Mudanças de treinamento
Uma maneira popular de acelerar o treinamento e economizar VRAM é usar uma precisão menor: em vez do usual fp32 (números de ponto flutuante de 32 bits), use fp16 ou bf16 (variações de números de ponto flutuante de 16 bits) ou precisão mista (execute algumas operações em fp16).
Eu tentei, e realmente ajuda no desempenho, mas é muito perigoso. Em particular, a certa altura, adicionei “with arch.autocast():” (precisão mista) para chamar a atenção e, em seguida, perdi algum tempo tentando descobrir por que o modelo está divergindo lentamente ao longo do tempo.
Com isso, decidi que seria mais seguro não aplicar otimizações dessa natureza ao modelo, visto que o treinamento já era bastante eficiente.
Atualização do conjunto de treinamento
No Anifusion, uma versão mais antiga do conjunto de dados Danbooru foi usada, então decidi que é um bom momento para atualizá-lo, estendendo ao mesmo tempo o tamanho do conjunto de treinamento e o conjunto de tags suportadas no prompt. No entanto, houve algumas complicações: (1) a nova versão do conjunto de dados não era um superconjunto simples do anterior e (2) decidi fazê-lo enquanto o modelo já estava treinando, portanto, algum trabalho adicional para fazer a transição do existente ponto de verificação era necessário.
Diferenças do conjunto de dados
Isso é um pouco menor, mas depois de baixar os metadados para a nova versão do conjunto de dados, notei que várias imagens (algumas por cento) desapareceram. Algumas tags que chegaram ao top 2,5k antes também desapareceram (incluindo algumas das mais populares), além disso, as imagens removidas correspondiam às tags removidas.
Uma inspeção mais aprofundada revelou que todas as tags desaparecidas correspondiam ao padrão “fringy NSFW” (algumas delas eram tão franjadas que eu nem sabia que tais coisas existiam…). Era meio inconsistente, já que outras tags e imagens de natureza semelhante foram mantidas no lugar. Suponho que o mantenedor do conjunto de dados ou o site de hospedagem da imagem de origem o implementaram como um hack rápido para resolver algumas questões de relações públicas. De qualquer forma, eu apenas peguei a união de conjuntos de dados novos e antigos, obtendo cerca de 2 milhões de imagens para treinar. Além disso, experimentei imagens de 800k com resolução ≥ 786x768 delas, para ajuste fino do modelo de resolução mais alta posteriormente.
Estendendo o conjunto de tags
Esta seção é, na verdade, meio não trivial. No ponto em que o novo conjunto de dados foi produzido, o modelo foi treinado por algum tempo, tendo um transformador condicionador bem convergente, recebendo prompts das principais tags de 2,5 mil como entradas. Para a versão mais recente, decidi usar as tags top-12k. Como adicioná-los ao modelo?
O que precisa ser atualizado é a tabela de embutimento do transformador (de 2500x1024 para 12000x1024). Uma abordagem ingênua é inicializar aleatoriamente as novas incorporações e treinar o modelo por algum tempo com a UNet congelada, atualizando apenas o transformador. Mas isso é (1) um desperdício em termos de tempo e computação, (2) chato. Podemos inicializá-los melhor?
Vejamos quais informações estão disponíveis para nós. Já treinamos 2,5 mil incorporações e as incorporações para as novas tags devem ser um pouco semelhantes a elas. Mas a quais? Uma ideia ingênua é usar os embeddings de tags semanticamente semelhantes. Mas como obtemos a similaridade semântica? O bom e velho word2vec é muito bom nisso, então podemos simplesmente pegar os conjuntos de tags e treinar as incorporações de word2vec neles. Abaixo está uma visualização t-SNE do resultado (os pontos escuros correspondem às tags NSFW, para que seja fácil ignorá-los para pessoas que não querem vê-los): link interativo .
Vejamos a mesma visualização para as incorporações treinadas de 2,5 mil do transformador: link interativo .
Portanto, não é realmente o mesmo e é mais focado na aparência visual do que na semântica. No entanto, deve ser próximo o suficiente, para que possamos calcular os embeddings iniciais para as novas tags da seguinte maneira: pegue os vizinhos mais próximos no espaço word2vec dos 2,5k principais e agregue seus embeddings transformadores. Na verdade, podemos até melhorar um pouco: treinar um pequeno NN que transforma word2vec para que a agregação do vizinho mais próximo corresponda à verdadeira incorporação nos primeiros 2,5k e aplicá-la ao restante das tags.
Com isso, obtemos uma inicialização razoável para os novos embeddings, modificamos o último checkpoint e retomamos o treinamento nos novos dados como estão.
Treinamento de alta resolução
O Stable Diffusion 2 tem uma versão dele que gera imagens de tamanho 768x768 (ou seja, 2,25 vezes maior que 512x512), que tem algumas propriedades interessantes (por exemplo, parece lidar com o desenho de dedos melhor do que a versão de resolução mais baixa). Então decidimos fazer o mesmo com o nosso modelo. Em particular, temos duas etapas do treinamento:
- Baixa resolução: treinamento em imagens de 512x512 (espaço latente de 64x64x4), com tamanho de lote 11, taxa de aprendizado 5e-6, para 1 milhão de etapas;
- Alta resolução: retomando da fase anterior, treine em imagens 768x768 (espaço latente 96x96x4), com tamanho de lote 5, taxa de aprendizagem 5e-6, 80k passos.
Mudanças de amostragem
No Anifusion , aumentar o prompt com um modelo separado melhorou drasticamente os resultados. Intuitivamente, é mais fácil amostrar coisas no espaço conceitual discreto, em oposição ao espaço contínuo implícito dentro do processo de difusão.
Aqui, aplicamos a mesma técnica, treinando novamente o transformador de aumento imediato no novo conjunto de treinamento. Observamos o mesmo efeito - a qualidade e a diversidade da amostra aumentam drasticamente com o aumento do prompt, especialmente para prompts curtos.
Resultados
Parece que o modelo 768x768 produz imagens melhores que o modelo 512x512, e não apenas pela resolução: a consistência geral das imagens e (principalmente) os detalhes anatômicos dos personagens são melhores. No entanto, parece que a fidelidade imediata é um pouco pior (não tenho nenhuma medida adequada, apenas minha impressão).
Uma coisa a notar é que, em comparação com o Anifusion, o modelo parece ser mais tendencioso para imagens NSFW/racy. Parte disso pode ser atribuído ao aumento imediato, mas a parte UNet também é responsável. Não sei por que isso está acontecendo (as alterações no conjunto de treinamento foram bastante pequenas; talvez o tamanho/a partir da difusão estável cause isso?).
Vamos examinar vários tipos de imagens passo a passo.
Retratos
Este é o caso de uso mais simples, e os retratos de anime foram gerados com sucesso mesmo na era GAN. Portanto, sem surpresa, o modelo não tem problemas com isso (alguns exemplos abaixo).
Caractere único, tags populares
Este é um teste mais difícil e, como esperado, pode-se obter imagens ruins de vez em quando (raramente). Um modo de falha comum é a anatomia ruim - um braço ou perna adicional. E, claro, os dedos são bastante desafiadores para o modelo.
Caractere único, tags de cauda
Aqui estamos testando tags menos populares, em particular aquelas que foram adicionadas nos estágios posteriores do treinamento (veja acima para mais detalhes). Eles parecem funcionar muito bem, embora não sejam perfeitos. Alguns exemplos estão abaixo. Em geral, parece que as tags de caracteres são mais fáceis para o modelo do que as tags de conceito.
Interações de personagens
Finalmente, estamos chegando a algo interessante. O Anifusion original não se saiu bem quando os personagens estavam interagindo. O novo modelo é melhor?
Múltiplos personagens apenas um ao lado do outro parecem estar OK:
Ações simples também funcionam um pouco:
As interações com objetos também são mais ou menos boas:
No entanto, se tentarmos especificar interações complicadas, isso produz horror corporal na maioria das vezes (não vou postar essas fotos aqui, pois podem ser perturbadoras). Por que isso está acontecendo? Eu especulo que isso ocorre porque os prompts são apenas conjuntos de tags e não especificam as interações com precisão suficiente. O que fez os modelos de difusão produzirem boas imagens em primeiro lugar foi a orientação sem classificador: enfatizar demais os prompts melhorou drasticamente a qualidade em comparação com a amostragem sem prompts, porque a amostragem de conceitos complicados dentro da difusão é difícil. Portanto, podemos esperar que tudo o que for especificado de forma inequívoca no prompt seja gerado corretamente, mas as ambigüidades serão resolvidas de uma maneira não tão agradável. A solicitação de linguagem natural pode ser melhor nesse sentido.
FWIW, em comentários ao post original do Anifusion no reddit, Gwern sugeriu usar o BLIP para gerar prompts de linguagem natural a partir das imagens; Na verdade, eu tentei, e a qualidade dos prompts era extremamente baixa, então não é tão fácil.
estilos
No Stable Diffusion original, as pessoas encontraram inúmeras maneiras de especificar estilos para o modelo, principalmente adicionando nomes de alguns artistas. O mesmo funciona para o modelo de anime?
Experimentando — funciona muito bem (isso é uma vantagem em comparação com o AnythingV3). Abaixo estão exemplos em vários estilos aleatórios.
Comparação com outros modelos de anime
Não fazemos comparação com o AnythingV3, pois ele não respeita muito o prompt, gerando imagens semelhantes para praticamente qualquer coisa (como o nome sugere). Isso deixa WaifuDiffusion e NovelAI. Decidimos contra a comparação com o NovelAI, pois isso exigiria o uso do checkpoint vazado e é melhor ficar longe desse drama. Isso nos deixa com WaifuDiffusion.
Uma coisa a notar é que a comparação em prompts curtos seria muito injusta para WaifuDiffusion: não inclui aumento de prompt (ao contrário do Anifusion), produzindo resultados muito ruins em prompts curtos. Em vez disso, fazemos duas comparações diferentes. Em um deles, amostramos conjuntos de tags do conjunto de dados original, removendo efetivamente o aumento imediato da consideração e comparando apenas a parte da difusão. No segundo, construímos manualmente alguns prompts de tamanho médio e avaliamos ambos os modelos neles (isso inclui o efeito de aumento do prompt).
Conjuntos de tags do conjunto de dados
Amostramos 97 conjuntos de tags do conjunto de dados (filtrando uniformemente para imagens classificadas como “seguras”). Para o Anifusion, nós os pré-processamos adicionando “rating_s, score_perc_100, fixed_score_perc_100” ao prompt. Para WaifuDiffusion, nós os pré-processamos substituindo sublinhados por espaços. Em ambos os casos, usamos amostragem DDIM com 50 etapas e escala de orientação sem classificador 9.
Depois de obter algumas avaliações humanas (com troca de lados aleatórios para comparação), obtemos os seguintes resultados vs Waifu:
- Anifusão é melhor: 30%
- Waifu é melhor: 24%
- Quase o mesmo: 46%
Um padrão de falha que notei em Waifu: muitas vezes gera alguma sub-imagem ao invés de imagem completa, truncando a cabeça do personagem. Um padrão de falha de Anifusion é um NSFW não solicitado (e relacionado - anatomia ruim; por algum motivo, quanto mais próxima a imagem estiver do NSFW, pior será a anatomia do modelo).
Observação lateral: aqui você pode encontrar os resultados do AnythingV3 para os mesmos prompts. Os resultados parecem bons, mas pode-se ver por que estou hesitante em incluí-los em comparações: todas as imagens parecem estar exatamente no mesmo estilo, com falta severa de diversidade, o que significa que o modelo tem um espaço de saída muito menor.
Portanto, com amostragem em distribuição, não é drasticamente melhor. Mas e se usarmos a versão de alta resolução do modelo?
- A anifusão é melhor: 41%
- Waifu é melhor: 13%
- Quase o mesmo: 46%
Pode-se notar que há uma quantidade não trivial de “mais ou menos o mesmo”. A maioria desses exemplos são ambos os modelos igualmente bons, mas há alguns em que ambos os modelos são terrivelmente ruins (de alguma forma, eles estão correlacionados nisso).
Prompts manuais de tamanho médio
Usamos o mesmo pré-processamento de prompt descrito na seção anterior. Preparamos manualmente 33 prompts razoáveis de tamanho médio (é claro que, como são preparados por uma única pessoa, podem não ser representativos da distribuição geral).
Aqui, os resultados são muito diferentes:
- A anifusão é melhor: 73%
- Waifu é melhor: 9%
- Quase o mesmo: 18%
Como podemos ver, o aumento imediato faz a diferença. O que acontece quando usamos o modelo de alta resolução? Os resultados são bastante semelhantes ( dados brutos ):
- A anifusão é melhor: 73%
- Waifu é melhor: 3%
- Quase o mesmo: 24%
Acessibilidade para leigos
Uma observação interessante é que, mesmo após um milhão de minilotes de treinamento, o modelo continua a melhorar. Não está claro se o modelo se lembra de algo do ponto de verificação Stable Diffusion original depois de tantos passos. Talvez o conjunto de dados de anime seja fácil o suficiente para que se possa treinar modelos de difusão do tamanho de SD a partir do zero em hardware comum, sem o hot start do SD existente? Essa é uma direção que seria algo a ser investigado: se for esse o caso, experimentar novas arquiteturas para indivíduos deve se tornar mais fácil, sem a necessidade de gastar milhões de dólares em computação, como é o caso do treinamento baseado em LAION.
Outras melhorias de qualidade
É interessante ver até onde é possível chegar com o modelo atual, então quero ajustá-lo um pouco mais, possivelmente usando o conjunto de dados completo, em vez do subconjunto de 2M. Mas eu suspeito que o fator limitante seja a qualidade do conjunto de dados, não a quantidade de ajuste fino (ou seja, para melhorar a qualidade do modelo, seria necessário alimentar apenas imagens de alta qualidade ou adicionar um identificador especial ao condicionador que ajuda o modelo para distinguir imagens melhores vs piores). Que eu saiba, não existem modelos confiáveis como este para anime (para imagens gerais, as pessoas usam o subconjunto “estético” de LAION). Embora existam alguns modelos que produzem ótimos resultados que parecem diferentes deste modelo ou WaifuDiffusion (por exemplo, o modelo de anime de Midjorney, que está disponível apenas na forma de imagens escolhidas a dedo por eles), então isso pode ser possível.
É importante observar que a geração de resolução mais alta melhora a qualidade em outros aspectos além da resolução — por exemplo, as infames “mãos de IA” ficam melhores. Eu me pergunto se aumentá-lo ainda mais para 1024x1024 renderia mais melhorias. Algo para tentar pode ser usar difusão em cascata (por exemplo , Imagen ) no espaço latente (por exemplo, 64x64 -> 128x128 -> 256x256 no espaço latente, resultando em 2048x2048 no espaço original).
Usabilidade
Uma preocupação com o que estou lançando é que é uma prova de conceito. O código do modelo é diferente do SD, portanto não é realmente compatível com a maioria das ferramentas (especialmente a parte do tokenizador de prompt). Portanto, embora este modelo pareça melhor do que outros modelos de anime disponíveis, a facilidade de uso não é tão boa. Uma possível solução para isso seria a comunidade (ou eu, se tiver tempo) integrando-o adequadamente com as ferramentas existentes ou tornando-o compatível com SD no nível da interface.
Referências
- Difusão estável 2
- Difusão Latente
- Conjunto de dados Danbooru2021
- Instruções para abrir a IU da web
- Pontos de verificação do modelo (huggingface): 512x512 , 768x768 , aumento de prompt
- SD Github repo adaptado para o modelo
- 768x768 demo —restrito a “classificação: Seguro”, vou mantê-lo funcionando por algum tempo, mas eventualmente não vou mais mantê-lo





































![O que é uma lista vinculada, afinal? [Parte 1]](https://post.nghiatu.com/assets/images/m/max/724/1*Xokk6XOjWyIGCBujkJsCzQ.jpeg)