英文

快速动漫提示生成器

该模型是在三个时期的训练数据集上训练的,其中包含80,000个安全的动漫提示。我从 Safebooru API endpoint 获取了这些提示,但只接受up_score≥8且没有任何被列入黑名单的标签的唯一提示。我没有发布V1模型,因为它经常生成无意义的提示。在尝试了所有方法来纠正这种行为之后,我最终发现导致无意义提示的原因并不是来自于管道参数、模型结构或训练持续时间,而是来自训练数据中的随机用户名。以下是完整的提示预处理算法。

文本转图像示例

前缀1girl | 生成的1girl提示 | 模型Anything V4

前缀1boy | 生成的1boy提示 | 模型Anything V4

对比搜索

pip install --upgrade transformers
import torch
from transformers import GPT2Tokenizer, GPT2LMHeadModel, pipeline
tokenizer = GPT2Tokenizer.from_pretrained('distilgpt2')
tokenizer.add_special_tokens({'pad_token': '[PAD]'})
model = GPT2LMHeadModel.from_pretrained('FredZhang7/anime-anything-promptgen-v2')

prompt = r'1girl, genshin'

# generate text using fine-tuned model
nlp = pipeline('text-generation', model=model, tokenizer=tokenizer)

# generate 10 samples using contrastive search
outs = nlp(prompt, max_length=76, num_return_sequences=10, do_sample=True, repetition_penalty=1.2, temperature=0.7, top_k=4, early_stopping=True)

print('\nInput:\n' + 100 * '-')
print('\033[96m' + prompt + '\033[0m')
print('\nOutput:\n' + 100 * '-')
for i in range(len(outs)):
    # remove trailing commas and double spaces
    outs[i] = str(outs[i]['generated_text']).replace('  ', '').rstrip(',')
print('\033[92m' + '\n\n'.join(outs) + '\033[0m\n')

输出示例:

有关管道参数的更多信息,请参阅 Fast GPT PromptGen

绝妙提示

  • 如果你觉得生成的动漫角色没有表达情感,尝试在提示中加入表情符号,如;o,:o,;p,:d,:p和;d。我也使用happy smirk、happy smile、laughing closed eyes等来使角色更有生气和富有表现力。

  • 将absurdres添加到提示中,而不是highres和masterpiece,可以显著提高生成图像的清晰度和分辨率。

Danbooru

Link to the Danbooru version