Homebrew DALL-E Nesta postagem, veremos como configurar a execução de seu próprio gerador de imagens de IA. Você precisa de um sistema Linux com uma placa habilitada para CUDA para fazer isso funcionar até o fim. Eu consegui o script txt-2img básico funcionando no Windows. Infelizmente, para os lançados em julho, você precisa de para indexar o conjunto de dados openimages, que está disponível apenas no Linux. funcionou bem para mim. modelos de difusão aumentada de recuperação scann WSL Aqui está mais ou menos o que eu presumo que você precisará: Linux (WSL bem) 11.3 Gráficos CUDA = 32GB RAM 50 GB de espaço em disco (~ 30 GB sem openimages) Placa da série 3xxx (estou apenas supondo aqui. Tudo isso está sendo feito com um 3090 FE) Difusão Latente Eu tropecei aleatoriamente no enquanto navegava em subreddits de IA. Algumas postagens mencionaram isso e eu não sabia o que era, então fui pesquisar no Google. repositório de difusão latente Não sou um cientista da computação, matemático ou qualquer uma das coisas que seriam necessárias para realmente entender o que está acontecendo aqui. O artigo sobre os novos modelos RAD é compreensível e interessante, mas ainda não fiz muita pesquisa além disso. Text-to-image vs. RAD Existem 2 técnicas de geração de imagem possíveis com difusão latente. Vamos instalar e dar uma olhada em ambos. Acredito que o modelo txt2-img que configuraremos primeiro é o que estamos acostumados com outras ferramentas de geração de imagem on-line - ele cria um clipe de imagem de super baixa resolução que é uma boa correspondência de prompt e reduz e aumenta a escala. O modelo RAD usa um banco de dados configurável de imagens como referência E faz a difusão como estamos acostumados. Isso parece significar que é menos bom como um gerador de uso geral, mas pode ser usado com um conjunto de treinamento específico que você poderia criar de maneira viável. Vou tentar isso no futuro. O RAD também gera imagens de 768X768, o que é bastante impressionante. Instruções de instalação Text-to-Image Certifique-se de ter o instalado e funciona em seu shell. Você pode obter CUDA 11.3 conda Conda aqui , para que você não acabe no inferno da dependência mais tarde. Eu fiz isso via , mas o conda também pode funcionar. (Re)instale o Pytorch agora pip Clone o repositório em uma unidade com muito espaço livre no repositório e execute: cd conda env create -f environment.yaml conda activate ldm Isso configurará o ambiente inicial. Se você receber erros com o Pytorch posteriormente e precisar reinstalá-lo, volte para o environment.yaml e reinstale usando as versões de pacote corretas. Baixe o modelo e você está pronto para ir, desde que suas dependências de tocha estejam todas configuradas corretamente. mkdir -p models/ldm/text2img-large/ wget -O models/ldm/text2img-large/model.ckpt https://ommer-lab.com/files/latent-diffusion/nitro/txt2img-f8-large/model.ckpt Você deve ser capaz de amostrar imagens agora usando: python scripts/txt2img.py --prompt "my cool image" Certifique-se de ver as opções que você pode definir no README. Você pode usar este script bash para facilitar a execução de tudo a partir de um shell. Você pode incluir isso em seu arquivo e reabrir seu shell. Certifique-se de alterar os 3 caminhos para atender às suas necessidades. Veremos o PLMS mais tarde. ~/.bashrc function txt2img() { if [ $# -eq 0 ]; then echo "Usage: diffuse '[prompt]' [--plms]" exit 1 fi cd /mnt/c/diffusion/latent-diffusion; conda activate ldm; if [ $2 = '--plms' ]; then python scripts/txt2img.py --prompt $1 --outdir '/mnt/g/My Drive/AI Image Tests/text2img' --plms --n_iter 4 --ddim_eta 0.0 else python scripts/txt2img.py --prompt $1 --outdir '/mnt/g/My Drive/AI Image Tests/text2img' --n_iter 4 --ddim_eta 0.0 fi } As imagens são 512X512 por padrão. Você pode usar para melhorar as imagens com resultados muito bons. este notebook de Júpiter Solução de problemas Se você receber comandos de execução de erros de memória CUDA, tente diminuir o tamanho do lote. Use o para solucionar problemas/exibir o uso de memória. htop Se estiver usando o WSL, certifique-se de que toda a sua RAM esteja disponível para Linux. Se você receber erros relacionados à tocha, provavelmente precisará reinstalar o Pytorch. Isso provavelmente causará outros problemas com os pacotes. Verifique o ambiente.yaml e instale manualmente as versões corretas do pacote com e/ou (fiz os dois e não tenho certeza de qual fez tudo funcionar) pip conda RDM Você pode ler mais sobre o RDM . Como dito antes, combina essencialmente um banco de dados de imagens com descrições de Clip com o processo de difusão existente, pelo que entendi. Esta parte leva muito mais tempo para começar a funcionar. aqui Observe que este modelo, especialmente ao usar o treinamento openimages, é melhor para recriar coisas reais e não parece muito bom (ainda) e criar as imagens estranhas com as quais estamos acostumados a partir dos modelos de difusão. Faça o modelo Text-to-Image funcionar primeiro Instale novos pacotes e baixe o modelo de treinamento. pip install transformers==4.19.2 scann kornia==0.6.4 torchmetrics==0.6.0 pip install git+https://github.com/arogozhnikov/einops.git mkdir -p models/rdm/rdm768x768/ wget -O models/rdm/rdm768x768/model.ckpt https://ommer-lab.com/files/rdm/model.ckpt Teste tudo está funcionando até agora com python scripts/knn2img.py --prompt "I'm a computer" Se tudo correu bem, você deve ver um texto de sucesso em seu shell. Agora precisamos baixar todos os índices/modelos de imagem. O zip do openimages é de 11 GB. Os dados do ArtBench são bem pequenos. mkdir -p data/rdm/retrieval_databases wget -O data/rdm/retrieval_databases/artbench.zip https://ommer-lab.com/files/rdm/artbench_databases.zip wget -O data/rdm/retrieval_databases/openimages.zip https://ommer-lab.com/files/rdm/openimages_database.zip unzip data/rdm/retrieval_databases/artbench.zip -d data/rdm/retrieval_databases/ unzip data/rdm/retrieval_databases/openimages.zip -d data/rdm/retrieval_databases/ mkdir -p data/rdm/searchers wget -O data/rdm/searchers/artbench.zip https://ommer-lab.com/files/rdm/artbench_searchers.zip unzip data/rdm/searchers/artbench.zip -d data/rdm/searchers Estamos prontos para usar os modelos Artbench agora (que funcionam muito bem em meus testes limitados), mas o que realmente queremos é usar o modelo massivo de imagens abertas como nossa referência. Baixamos os dados, mas precisamos criar o índice. Se você quiser testar o banco de dados Artbench, execute python scripts/knn2img.py --prompt "A blue pig" --use_neighbors --knn 20 Índice Openimages A menos que você tenha um supercomputador, o terrível gerenciamento de memória no multiprocessamento python (pelo que posso dizer) nos impedirá de usar os 4 arquivos que descompactamos com o script do repositório para indexá-los. Tudo o mais que tentei, os processos ficariam sem memória. Felizmente, só precisamos concatenar os arquivos. Você pode excluir os arquivos de peças antigas depois, se desejar. Também precisamos mover os arquivos de peça para fora da pasta openimages. cd data/rdm/retrieval_databases/openimages/ cat 2000000x768_part1.npz 2000000x768_part2.npz 2000000x768_part3.npz 2000000x768_part4.npz > 2000000x768.npz mv 2000000x768_* ~/temp cd ../../../../ Agora, quando executarmos o script de treinamento, não devemos ficar sem memória. Eu acho que isso é algum problema em sua função de vários arquivos no script de treinamento. python scripts/train_searcher.py Precisamos alterar o tamanho do lote em para não ficarmos sem memória da GPU. Pode ser necessário diminuir para 1, mas consegui definir para 2 em um 3090. scripts/knn2img.py Abra em um editor scripts/knn2img.py Vá para a linha 243 ou encontre “n_samples” Altere o valor padrão para 1 ou 2 e salve Você também pode fazer isso usando o parâmetro de linha de comando, mas como nunca funcionará para mim, eu queria alterar o valor padrão. Observe que, se você atualizar o repositório no futuro, isso provavelmente será substituído. Agora podemos gerar imagens RDM usando o banco de dados openimages: python scripts/knn2img.py --prompt "A blue pig" --database openimages --use_neighbors --knn 20 Aqui está um script para executá-lo convenientemente. Novamente, certifique-se de alterar os 3 caminhos para atender às suas necessidades: ~/.bashrc function diffuse() { if [ $# -eq 0 ]; then echo "Usage: diffuse '[prompt]' [--plms]" exit 1 fi cd /mnt/c/diffusion/latent-diffusion; conda activate ldm; if [ $2 = '--plms' ]; then python scripts/knn2img.py --database openimages --prompt $1 --use_neighbors --outdir '/mnt/g/My Drive/AI Image Tests/RDM' --knn 20 --plms else python scripts/knn2img.py --database openimages --prompt $1 --use_neighbors --outdir '/mnt/g/My Drive/AI Image Tests/RDM' --knn 20 fi } Acelerando as coisas Você também pode executar prompts em lotes criando um arquivo (neste caso ) e apontando o script para ele com o parâmetro como este prompts.txt –from-file python scripts/knn2img.py --database openimages --from-file ./prompts.txt --use_neighbors --outdir '/mnt/g/My Drive/AI Image Tests/RDM' --knn 20 amostra de prompts.txt prompt 1 prompt 2 prompt 3 Isso deve economizar muito tempo se você estiver executando muitas consultas, pois o modelo só é carregado uma vez. O modelo de texto para imagem não tem essa opção. Teste inicial e PLMS Abaixo estão alguns resultados iniciais de ambos os modelos com PLMS ativado e desativado. O PLMS deve tornar as coisas mais rápidas. Por enquanto, não mediremos o aumento de velocidade, mas analisaremos subjetivamente a qualidade/resultados da imagem. Como o modelo RDM fará apenas 2 fotos por vez para o meu sistema, incluí as duas fotos em vez de uma grade para esse modelo. Certamente farei testes mais específicos no futuro e esses modelos serão incluídos em futuras postagens de comparação. Uma casa de madeira em uma colina, fotografia de paisagem Texto para imagem sem plms com plms RDM sem plms com plms Um sinal de parada roxo Texto para imagem sem plms com plms RDM sem plms com plms toca da raposa, arte digital Texto para imagem sem plms com plms RDM sem plms com plms ganhando o grande jogo, fotografia premiada Texto para imagem sem plms com plms RDM sem plms com plms um carro esportivo dirigindo em dunas de areia Texto para imagem sem plms com plms RDM sem plms com plms Um gerador de imagens para chamar de seu E aí está - sem mais créditos ou limites mensais, apenas a pura geração de imagens de IA por conta própria. Depois que eu descobrir algumas configurações de ajuste e criar meu próprio banco de dados de treinamento de imagem, provavelmente falaremos sobre isso novamente. Esperançosamente, com alguns ajustes e novos lançamentos/modelos, isso se aproximará do fator WOW que o DALL-E tem. Publicado também . aqui