Casos semelhantes: https://cloud.tencent.com/developer/article/2365063
um exemplo real
Uma bela mulher usando um vestido de noiva branco adornado com renda, caminhando pela praia ao pôr do sol. Seu cabelo é suavemente levantado pela brisa, e ela está segurando um buquê de rosas brancas. Seu cabelo é suavemente levantado pela brisa, e ela está segurando um buquê de rosas brancas. pose dinâmica, fotografia, obra-prima, melhor qualidade, 8K, HDR, alta resolução, absurdres: 1.2, Kodak portra 400, grão de filme, fundo desfocado, bokeh: 1.2, grão de filme. fundo desfocado, bokeh: 1.2, lens flare
Invertido: nsfw, ugly, paintings, sketches, (worst quality:2), (low quality:2), (normal quality:2), lowres
Por exemplo, você tem fotos como esta de um manequim vestido, que foi tirada em nosso próprio showroom.
Se você puder usar a difusão estável, não levará mais de 10 minutos para tirar a primeira foto.
Mesmo que seja necessário fazer ajustes, uma hora é suficiente. Por exemplo:
I. Ideias para a geração de diagramas de plataforma humana na vida real
O que é necessário para transformar uma mesa de manequim em uma pessoa real e ainda manter as roupas?
Nesse ponto, os amigos familiarizados com a difusão estável dirão: Eu sei, é preciso usar a função Inpaint no Tuchengtu e, em seguida, criar uma máscara fora das roupas, para que a difusão estável seja repintada.
Como você faz essa máscara? Se você tiver que fazer o mascaramento com uma pincelada à mão, isso é muito lento; se for esse o caso, não preciso sair com esse em particular.
Mais uma vez, alguém dirá, eu sei, primeiro crie a máscara no Photoshop e depois use a função de redesenho de máscara.
Essa é uma maneira de fazer isso, mas poderia ser mais inteligente agora.
Hoje, vamos usar um plugin inpainting anything, para dar uma foto, que pega a foto e a separa com blocos de cores para coisas diferentes. No final do dia, só precisamos escolher quais blocos de cores queremos transformar em máscaras e, dessa forma, as máscaras são criadas.
O recurso de repintura é usado para aumentar o tamanho real do manequim, mantendo as roupas.
Embora a ideia básica seja essa, se você já tiver feito isso sozinho, saberá que ainda há muitos buracos no caminho.
Portanto, neste artigo, não apenas mostrarei como transformar um boneco em uma pessoa real, mas o mais importante é que também mostrarei como preencho essas lacunas.
Vou explicar todas elas para você agora.
II. ferramentas de preparação para a realização do modelo de tabela fictícia
Esta demonstração está usando a WebUI do Automatic 1111 com o modelo SD 1.5, portanto, vamos nos preparar!
Preparação 1: pintar qualquer coisa
Em primeiro lugar, você precisará do plug-in Inpaint Anything. Verifique a WebUI do Automatic 1111 para ver se há o plug-in Inpaint Anything; caso contrário, instale-o.
Instalar qualquer tipo de pintura
Vá para Install from URL, digite
https://github.com/Uminosachi/sd-webui-inpaint-anything.git
Pronto para instalar
Depois de instalado, volte para a guia de instalação, pressione Apply e saia.
Preparação 2: Modelos para pintura
Desta vez, usarei o epiCPhotoGasm para demonstrar que a qualidade do modelo é como se tivesse sido tirada por um fotógrafo mestre, o que o torna especialmente adequado para uso em locais que exigem imagens realistas.
Em vez de seu modelo principal, usaremos seu modelo Inpaint hoje.
Acesse o link abaixo para fazer o download do modelo Inpaint e instalá-lo para uso posterior.
https://civitai.com/models/132632?modelVersionId=201346
Preparação 3: Foto fictícia
Usaremos nosso exemplo deste aqui
Esta foto foi tirada em seu próprio showroom. Esteja avisado de que ele é um manequim preto, o que causará alguns problemas mais tarde. Primeiro, veja o teaser aqui.
Quando esses três itens estiverem prontos, poderemos começar.
III Demonstrações operacionais
Este ensino está usando o modelo SD 1.5 para demonstrar todo o processo.
Etapa 1: Selecione o modelo SAM e faça o download do modelo
Pressione a guia Inpaint Anything e você verá uma tela como esta
Selecione o Segment Model ID do modelo de segmentação semântica a ser usado. Aqui, escolhemos o modelo sam_vit_l_0b3195.pth. Se você acabou de instalá-lo, esses modelos ainda não foram baixados; será necessário pressionar o botão Download model para que o download seja feito.
Carga.
Etapa 2: Obter um exemplo de diagrama de segmentação
Carregue a imagem para pintar qualquer coisa e pressione Run Segment Anything.
Você verá o diagrama de divisão de exemplo à direita
Etapa 3: Faça uma máscara preliminar.
Se quisermos usar a função de redesenho posteriormente, precisaremos criar uma máscara da área que queremos redesenhar. Agora que temos blocos de cores separados semanticamente, como podemos criar uma máscara rapidamente?
É fácil, basta pegar o mouse e tocar no bloco de cor que deseja transformar em uma máscara. Não é necessário pintar o bloco inteiro, basta tocar no bloco e esperar um pouco para que ele se torne uma máscara.
Como queremos que os planos de fundo, bonecos etc. sejam repintados, esses lugares precisam ser escolhidos, mas os planos de fundo são um pouco complicados de fazer
Isso é muito incômodo, portanto, podemos clicar no bloco de cores do vestido e marcar Invert Mask (Inverter máscara).
Depois de selecionar todos eles, pressione Create Mask (Criar máscara) e você verá os resultados da máscara.
Etapa 4: Visualizar os resultados da máscara
Verifique os resultados da máscara para ver se há alguma perdida; na verdade, a tela é mais complexa, por isso é difícil ver claramente; aqui está um truque: a lateral da guia Mask Only para abrir.
Há dois botões nele:
Obter máscara como alfa da imagem
Obter máscara
Quando esses dois botões forem pressionados, você poderá ver se a máscara está pronta.
Observe que o branco, aqui, é a máscara, a área a ser preenchida com IA no futuro, e o preto é a parte a ser mantida, portanto, não se engane.
Etapa 5: Faça o ajuste fino da máscara
Como você pode ver nessa imagem mascarada, há outros lugares além das roupas que ainda não foram mascarados (ou seja, há coisas que não deveriam estar lá)
(linhas pretas).
É nesse momento que é feito o ajuste fino à mão.
Volte ao diagrama que gerou a máscara e pinte as áreas em que deseja adicionar a máscara. Se houver áreas a serem adicionadas em preto, mova-as manualmente e pressione o botão Trim mask by skatch e, inversamente, para adicionar branco, mova-as manualmente e pressione o botão Add mask by skatch.
Se achar que o diagrama está muito pequeno para pintar, você pode ampliá-lo pressionando S e, em seguida, pressionar S novamente para restaurá-lo.
Plus Black: Máscara de acabamento com botão skatch
Adicionar branco: Adicionar máscara pelo botão skatch
Após a aplicação, pressione o botão Adicionar máscara por esboço
.
Em seguida, vá para a guia Mask Only (Somente máscara) e pressione o botão Obter máscara
até Obter máscara como alfa da imagem
É isso que queremos?
A Máscara.
Se houver outros pontos perdidos, apare-os da mesma forma; se estiver tudo bem, passaremos para a próxima etapa.
Etapa 6: Comece a repintar em inpaint anything
Quando as máscaras estiverem prontas, podemos começar a solicitar a difusão estável para nos ajudar a preencher o plano de fundo.
Vá para a guia inpaint e preencha a menção e a menção inversa. Porque a imagem que quero gerar é: uma linda mulher usando um vestido de noiva e segurando uma rosa branca. Portanto, digite o seguinte teleprompter:
Uma linda mulher usando um vestido de noiva branco enquanto segura um buquê de rosas brancas.
Pose dinâmica, fotografia, obra-prima, melhor qualidade, 8K, HDR, alta resolução, absurdres: 1.2, Kodak portra 400, grão de filme, fundo desfocado, bokeh: 1.2, reflexo de lente.
Kodak portra 400, grão de filme, fundo desfocado, bokeh: 1.2, reflexo de lente
O teleprompter reverso é o seguinte:
Nsfw, feio, pinturas, esboços, (pior qualidade:2), (baixa qualidade:2), (qualidade normal:2), lowres
Selecione um dos modelos de pintura, que são predefinições de pintura de qualquer coisa.
Como queremos fazer fotos reais, usamos o Uminosachi/realisticVisionV51_v51VAE-inpainting este
Modelos.
Pressione Run Inpainting (Executar pintura) e você verá uma imagem do modelo vivo.
Parece bom, vamos ver mais alguns.
Depois de receber o gráfico, você acha que esse ensino acabou?
Ainda não! Porque ainda há algumas dúvidas se realmente queremos usá-lo
- Não há como escolher muitas fotos de uma só vez.
- Não há como usar o modelo que desejamos
Então, o que fazer? Então, precisamos do próximo passo.
Etapa 7: Use o recurso de redesenho do Tupelo
Volte para a guia Mask Only e pressione "Send to img 2 img inpaint".
Ao enviar a máscara, você acessará a guia Inpaint Upload no Tupelo. Você verá que sua imagem e máscara foram enviadas!
É nesse momento que as pessoas que estão familiarizadas com o SD ficarão felizes por voltarem a um lugar conhecido e finalmente poderem escolher seu modelo favorito.
Então, vamos escolher um modelo! Aqui eu escolho o chilloutmix.
Em seguida, ajuste o tamanho da foto, depois de pressionar o quadro triangular, o sistema ajusta automaticamente a largura e a altura para o mesmo tamanho da foto, sem que tenhamos que digitar novamente.
Agora, para preencher o teleprompter, queremos alterá-lo para que a bela mulher esteja na praia com seu vestido de noiva, seu cabelo esteja soprando suavemente na brisa e ela esteja segurando um buquê de rosas brancas. Portanto, vamos alterar o teleprompter da seguinte forma:
Uma bela mulher usando um vestido de noiva branco adornado com renda, caminhando pela praia ao pôr do sol.
Seu cabelo é suavemente levantado pela brisa, e ela está segurando um buquê de rosas brancas. pose dinâmica, fotografia, obra-prima, melhor qualidade 8K, HDR, highres, absurdres: 1.2,
Kodak portra 400, grão de filme, fundo desfocado, bokeh: 1.2, reflexo de lente
O teleprompter reverso permanece inalterado:
Nsfw, feio, pinturas, esboços, (pior qualidade:2), (baixa qualidade:2), (qualidade normal:2), lowres
O amostrador é o DPM++ 2 M Karras com a etapa de amostragem definida como 40.
Todos os outros parâmetros são usados como predefinições, conforme mostrado abaixo:
Tudo deve estar pronto para ser gerado agora!
Apareceram coisas estranhas!
Por que a modelo gerada por IA não troca de roupa? As roupas parecem estar flutuando no ar.
É o conteúdo Masked que precisa ser ajustado? A predefinição atual é a original.
Vamos mudar para outra coisa, começando com o preenchimento.
Ele ainda não está se vestindo bem. Em seguida, passe-o para ruído latente e veja.
A imagem é ainda mais estranha. Então, será que não vai ser nada latente?
Ou seja, não está vestido! O que está acontecendo aqui? Por que as roupas sempre ficam vestidas?
Então, aqui chegamos à conclusão... está quebrado ....
Não tire conclusões precipitadas ainda, isso se deve ao fato de termos escolhido o modelo errado.
Etapa 8: Selecione epiCPhotoGasm Inpainting Model Repainting
O motivo pelo qual as roupas nem sempre se encaixam é simples: o que estamos fazendo é repintar, não apenas gerar, portanto, usaremos um modelo projetado especificamente para repintar.
O ChilloutMix não é o modelo a ser usado para repintura, portanto, usaremos o epiCPhotoGasm_zinpainting baixado anteriormente.
Modelos.
Com o modelo alterado, vamos começar a gerá-lo. Agora deve estar tudo certo!
Vamos dar uma olhada nos resultados:
Temos um manequim bem vestido e bonito.
O que está acontecendo aqui? Agora mesmo as roupas não foram vestidas, e agora a pessoa se foi, onde está a beleza prometida? Pode ser azar, gere-o novamente e veja.
Como resultado, a beleza está lá, mas o que há com o pano preto em seu peito? Nós não pedimos esse tecido!
O motivo disso é que o parâmetro de conteúdo da máscara atual é original, que se referirá à estrutura e à cor da imagem original quando ela for redesenhada, e é por isso que há plataformas e panos pretos, pois eles estão presentes na imagem original. Então, como resolvemos esse problema?
Simples, basta alterar o parâmetro para outra coisa, por exemplo, vamos alterar para preenchimento Você obterá um diagrama como o abaixo.
Se for usado ruído latente, o resultado será semelhante ao seguinte
Se nada latente for usado, então o
Não é uma ótima imagem? Ela ainda não foi ajustada para ter esse tipo de qualidade. Será melhor se for otimizada novamente, então qual é a próxima etapa para otimizá-la?
IV Perguntas frequentes
Depois de operar dessa forma, você poderá ter algumas perguntas, uma a uma, para explicar.
Pergunta 1: O que é particionamento de instância?
A segmentação de instâncias refere-se ao processo de diferenciação entre coisas em uma imagem, rotulando coisas diferentes com cores diferentes, sendo que cada cor representa uma coisa.
Desta vez, o assunto é a divisão com exemplos para acelerar o tempo que levamos para criar uma máscara.
Pergunta 2: O Inpaint Anything tem modelos diferentes do Segment Anything, qual é a diferença?
O modelo Segment Anything, também conhecido como SAM, oferece 9 tipos de modelos Segment Anything no Inpaint Anything.
Ele pode ser dividido em 4 categorias, que explicaremos uma a uma.
Classe 1: início do sam_vit - modelo SAM fornecido pelo Meta
O início do sam_vit é o modelo fornecido pelo Meta. Como a Meta batizou seu modelo de segmentação semântica de Segment Anything Model, é a partir daí que o SAM de que estamos falando atualmente começa e deve ser considerado o criador dessa onda de modelos SAM.
Essa é uma série de modelos anunciados pela Meta em abril de 2023, e outros modelos SAM serão comparados a essa série. Há 3 modelos, em termos de tamanho, h (enorme), l (grande), b (base), enorme > grande > base, e a precisão é teoricamente proporcional ao tamanho, e a velocidade de computação também é proporcional ao tamanho.
Em termos de efeito, há pouca diferença entre enorme e grande, mas há uma diferença significativa entre básico e enorme.
Referência Meta SAM:
https://segment-anything.com/
https://github.com/facebookresearch/segment-anything
https://huggingface.co/facebook/sam-vit-base/tree/main
https://huggingface.co/facebook/sam-vit-large
https://huggingface.co/facebook/sam-vit-huge
Aula 2: início da série sam_hq_vit - Segment Anything in High Quality
O modelo que começa com sam_hq_vit é um modelo de segmentação semântica de alta qualidade fornecido pelo Visual Intelligence and Systems Group da ETH Zürich e, de acordo com os dados fornecidos em seu artigo, sua precisão de corte é melhor do que a do Meta, por isso é chamado de alta qualidade. De acordo com os dados fornecidos em seu artigo, a precisão de sua segmentação é melhor do que a do Meta, por isso é chamada de alta qualidade, embora a região segmentada seja mais fina do que a do Meta, mas a diferença não é significativa em nosso caso.
Referência SAM HQ:
https://github.com/SysCV/sam-hq
https://huggingface.co/lkeab/hq-sam/tree/main
Aula 3: Início do FastSAM - Série FastSAM
Para obter bons resultados e economizar memória, você pode usar a série FastSAM, oferecida pelo CASIA-IVA-Lab (CASIA-IVA-Lab). Eu mesmo uso esse modelo em máquinas com VRAM pequena.
Ele está disponível em dois modelos, X e S.
O modelo X funcionou bem em nosso exemplo de vestido de noiva, mas o S não teria sido adequado para o nosso exemplo.
As informações sobre o FastSAM são fornecidas abaixo:
https://github.com/CASIA-IVA-Lab/FastSAM
https://huggingface.co/An-619/FastSAM
Categoria 4: SAM móvel
SAM pequeno e rápido, um SAM que pode ser executado rapidamente mesmo com uma CPU. Porém, o efeito também é um dos piores, adequado apenas para distinguir grandes blocos de material.
Referência SAM móvel:
https://github.com/ChaoningZhang/MobileSAM
https://huggingface.co/dhkim2810/MobileSAM/tree/main
Pergunta 3: O que o parâmetro de conteúdo Masked do Inpaint controla?
Há quatro opções para o conteúdo Masked (mascarado), descritas abaixo:
Opção 1: Preencher
A opção de preenchimento borra a imagem da área redesenhada o máximo possível, mantendo apenas a estrutura geral e as cores. Portanto, ela é usada quando é necessário repintar em grande escala.
Em nosso paradigma, a posição do nível do mar, o curso da dificuldade da areia são todos iguais, até mesmo a cor do pôr do sol é semelhante.
Opção 2: Original
Original se refere à imagem original, e a imagem gerada será muito semelhante à imagem original em termos de blocos, cores e assim por diante.
Em nosso exemplo, essa opção deixaria a parte preta do manequim e a direção da praia permaneceria.
Opção 3: ruído latente
O ruído latente gera ruído na parte a ser redesenhada, o que tende a produzir conteúdo irrelevante, e é usado quando a criatividade é necessária.
Como você verá em nossa demonstração, a imagem gerada com ruído latente repetirá a pequena coisa mencionada no prompt (por exemplo, rosas brancas em nosso caso).
Opção 4: Nada latente
O Latent Nothing se refere às cores próximas à área a ser redesenhada, encontra a média das cores próximas e preenche a área redesenhada. Isso é ótimo para remover objetos indesejados.
Mas no nosso exemplo desta vez, não parece que há remoção de coisas porque estamos redesenhando em grande escala. Mas quando você observar os diagramas gerados com o nada latente, verá que seus esquemas de cores e composições serão muito semelhantes, por exemplo, as cores da areia também são muito semelhantes.
V. Análise da questão da extensão
Vamos revisar o que acabamos de fazer.
Em resumo, há duas etapas principais:
- Mascaramento com o recurso de segmentação semântica do Inpaint Anything.
- Em seguida, ele é transferido para o upload de tinta para a Tupelo e para a tinta para a repintura de modelos especializados.
Só isso já o teria tornado tão produtivo quanto é hoje.
Tudo poderia ser melhor, e ainda haveria vários problemas com a abordagem atual:
- E se o modelo que eu quiser não tiver um modelo inpaint? Posso usar um modelo genérico?
- O que você precisa fazer para mudar a luz e a sombra de suas roupas?
- Às vezes, pode parecer uma foto photoshopada. O que preciso fazer para torná-la mais natural?
- Como gerar imagens mais ricas que não são aquelas feitas para se parecerem com estas agora.