初始化项目,由ModelHub XC社区提供模型
Model: FredZhang7/anime-anything-promptgen-v2 Source: Original Platform
This commit is contained in:
37
.gitattributes
vendored
Normal file
37
.gitattributes
vendored
Normal file
@@ -0,0 +1,37 @@
|
||||
*.7z filter=lfs diff=lfs merge=lfs -text
|
||||
*.arrow filter=lfs diff=lfs merge=lfs -text
|
||||
*.bin filter=lfs diff=lfs merge=lfs -text
|
||||
*.bz2 filter=lfs diff=lfs merge=lfs -text
|
||||
*.ckpt filter=lfs diff=lfs merge=lfs -text
|
||||
*.ftz filter=lfs diff=lfs merge=lfs -text
|
||||
*.gz filter=lfs diff=lfs merge=lfs -text
|
||||
*.h5 filter=lfs diff=lfs merge=lfs -text
|
||||
*.joblib filter=lfs diff=lfs merge=lfs -text
|
||||
*.lfs.* filter=lfs diff=lfs merge=lfs -text
|
||||
*.mlmodel filter=lfs diff=lfs merge=lfs -text
|
||||
*.model filter=lfs diff=lfs merge=lfs -text
|
||||
*.msgpack filter=lfs diff=lfs merge=lfs -text
|
||||
*.npy filter=lfs diff=lfs merge=lfs -text
|
||||
*.npz filter=lfs diff=lfs merge=lfs -text
|
||||
*.onnx filter=lfs diff=lfs merge=lfs -text
|
||||
*.ot filter=lfs diff=lfs merge=lfs -text
|
||||
*.parquet filter=lfs diff=lfs merge=lfs -text
|
||||
*.pb filter=lfs diff=lfs merge=lfs -text
|
||||
*.pickle filter=lfs diff=lfs merge=lfs -text
|
||||
*.pkl filter=lfs diff=lfs merge=lfs -text
|
||||
*.pt filter=lfs diff=lfs merge=lfs -text
|
||||
*.pth filter=lfs diff=lfs merge=lfs -text
|
||||
*.rar filter=lfs diff=lfs merge=lfs -text
|
||||
*.safetensors filter=lfs diff=lfs merge=lfs -text
|
||||
saved_model/**/* filter=lfs diff=lfs merge=lfs -text
|
||||
*.tar.* filter=lfs diff=lfs merge=lfs -text
|
||||
*.tflite filter=lfs diff=lfs merge=lfs -text
|
||||
*.tgz filter=lfs diff=lfs merge=lfs -text
|
||||
*.wasm filter=lfs diff=lfs merge=lfs -text
|
||||
*.xz filter=lfs diff=lfs merge=lfs -text
|
||||
*.zip filter=lfs diff=lfs merge=lfs -text
|
||||
*.zst filter=lfs diff=lfs merge=lfs -text
|
||||
*tfevents* filter=lfs diff=lfs merge=lfs -text
|
||||
anime_boy.png filter=lfs diff=lfs merge=lfs -text
|
||||
anime_girls.png filter=lfs diff=lfs merge=lfs -text
|
||||
anime_boys.png filter=lfs diff=lfs merge=lfs -text
|
||||
82
README.md
Normal file
82
README.md
Normal file
@@ -0,0 +1,82 @@
|
||||
---
|
||||
license: creativeml-openrail-m
|
||||
language:
|
||||
- en
|
||||
widget:
|
||||
- text: 1girl, fate
|
||||
- text: 1boy, league of
|
||||
- text: 1girl, genshin
|
||||
- text: 1boy, national basketball association
|
||||
- text: 1girl, spy x
|
||||
- text: 1girl, absurdres
|
||||
tags:
|
||||
- stable-diffusion
|
||||
- anime
|
||||
- anything-v4
|
||||
- art
|
||||
- arxiv:2210.14140
|
||||
datasets:
|
||||
- FredZhang7/anime-prompts-180K
|
||||
---
|
||||
|
||||
## Fast Anime PromptGen
|
||||
|
||||
This model was trained on a dataset of **80,000** safe anime prompts for 3 epochs. I fetched the prompts from the [Safebooru API endpoint](https://safebooru.donmai.us/posts/random.json), but only accepted unique prompts with **up_score ≥ 8** and without any [blacklisted tags](./blacklist.txt).
|
||||
I didn't release the V1 model because it often generated gibberish prompts. After trying all means to correct that behavior, I eventually figured that the cause of the gibberish prompts is not from the pipeline params, model structure or training duration, but rather from the random usernames in the training data.
|
||||
Here's the complete [prompt preprocessing algorithm](./preprocess.py).
|
||||
|
||||
|
||||
## Text-to-image Examples
|
||||
|
||||
Prefix *1girl* | [Generated *1girl* prompts](./anime_girl_settings.txt) | Model *Anything V4*
|
||||
|
||||

|
||||
|
||||
Prefix *1boy* | [Generated *1boy* prompts](./anime_boy_settings.txt) | Model *Anything V4*
|
||||
|
||||

|
||||
|
||||
## Contrastive Search
|
||||
```
|
||||
pip install --upgrade transformers
|
||||
```
|
||||
```python
|
||||
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')
|
||||
```
|
||||
|
||||
Output Example:
|
||||
|
||||

|
||||
|
||||
Please see [Fast GPT PromptGen](https://huggingface.co/FredZhang7/distilgpt2-stable-diffusion-v2) for more info on the pipeline parameters.
|
||||
|
||||
|
||||
## Awesome Tips
|
||||
|
||||
- If you feel like a generated anime character doesn't show emotions, try emoticons like `;o`, `:o`, `;p`, `:d`, `:p`, and `;d` in the prompt.
|
||||
I also use `happy smirk`, `happy smile`, `laughing closed eyes`, etc. to make the characters more lively and expressive.
|
||||
|
||||
- Adding `absurdres`, instead of `highres` and `masterpiece`, to a prompt can drastically increase the sharpness and resolution of a generated image.
|
||||
|
||||
## Danbooru
|
||||
[Link to the Danbooru version](https://huggingface.co/FredZhang7/danbooru-tag-generator)
|
||||
13
anime_boy_settings.txt
Normal file
13
anime_boy_settings.txt
Normal file
@@ -0,0 +1,13 @@
|
||||
From left to right:
|
||||
|
||||
1boy, league of legends, absurdres, bangs, black gloves, black jacket, black pants, blue eyes, blue hair, blunt bangs, laughing, collared shirt, commentary request, earrings, gloves, hair ornament, highres, holding, holding sword, holding weapon, jacket, jewelry, long sleeves, looking at viewer, male focus
|
||||
|
||||
1boy, absurdres, fate/grand order, fate series, from side, holding, holding sword, holding weapon, jeanne d'arc alter avenger fate, jeanne d'arc alter fate, male focus, red eyes, solo, sword, weapon, white hair, yamamoto souichirou fate, yamamoto souichirou third ascension fate
|
||||
|
||||
1boy, absurdres, spy x family, spy x family cosplay, eden academy school uniform, happy smile, green eyes, green hair, green jacket, jacket, looking at viewer, male child, makima kenji, mamimu ko cha, mamimu ko cha cosplay, school uniform, short hair, solo
|
||||
|
||||
|
||||
|
||||
Global negative prompt:
|
||||
|
||||
ugly, morbid, (extra too many fingers), (missing finger), (extra digits), (fewer digits), (bad poorly drawn eyes), (error), (extra many limbs), (missing limbs), (bad anatomy), ((bad proportions)), fingerless, lowres
|
||||
3
anime_boys.png
Normal file
3
anime_boys.png
Normal file
@@ -0,0 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:2f9ec75966d59c78788f1fa9d87eac14efa3760d8b7826b6194d9dac6f2a475c
|
||||
size 2619406
|
||||
15
anime_girl_settings.txt
Normal file
15
anime_girl_settings.txt
Normal file
@@ -0,0 +1,15 @@
|
||||
Left to right:
|
||||
|
||||
1girl, animal ears, genshin impact, black jacket, smile, blush, brown hair, cat ears, cat girl, cat tail, closed mouth, commentary request, cropped torso, grey background, hair between eyes, halo, highres, jacket, looking at viewer, medium hair, naga u, red eyes, short sleeves, masterpiece, absurdres
|
||||
|
||||
1girl, absurdres, ahoge, symbol-shaped pupils, black gloves, black hair, black pants, black shirt, blue eyes, blue hair, blush, :d, collared shirt, commentary request, crossed bangs, gloves, hair between eyes, hair ornament, holding, holding umbrella, karakai jouzu no takagi-san
|
||||
|
||||
1girl, absurdres, blonde hair, blue eyes, blush, bow, bowtie, brown headwear, brown jacket, happy laughing, commentary request, cowboy shot, cropped legs, dress, hair ribbon, hand on hip, hat, highres, jacket, kantai collection, long hair, long sleeves, looking at viewer, military uniform, red bow, masterpiece
|
||||
|
||||
|
||||
|
||||
Negative prompts:
|
||||
|
||||
ugly, morbid, (extra too many fingers), (missing finger), (extra digits), (fewer digits), (bad poorly drawn eyes), (error), (extra many limbs), (missing limbs), (bad anatomy), ((bad proportions)), fingerless, lowres
|
||||
|
||||
ugly, morbid, ((extra many fused fingers)), ((fewer finger)), ((extra digits)), ((fewer digits)), (bad poorly drawn eyes), ((error)), (extra many limbs), (missing limbs), (bad anatomy), ((bad proportions)), artifact, fingerless, lowres, (white background)
|
||||
3
anime_girls.png
Normal file
3
anime_girls.png
Normal file
@@ -0,0 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:cb2a05f20d9733870aeae00bd80eb3578bf33ce5a067520e3cf2051f5b5f6848
|
||||
size 2847167
|
||||
4
blacklist.txt
Normal file
4
blacklist.txt
Normal file
@@ -0,0 +1,4 @@
|
||||
greyscale
|
||||
girls
|
||||
boys
|
||||
others
|
||||
51
config.json
Normal file
51
config.json
Normal file
@@ -0,0 +1,51 @@
|
||||
{
|
||||
"_name_or_path": "./config.json",
|
||||
"_num_labels": 1,
|
||||
"activation_function": "gelu_new",
|
||||
"architectures": [
|
||||
"GPT2LMHeadModel"
|
||||
],
|
||||
"attn_pdrop": 0.1,
|
||||
"bos_token_id": 50256,
|
||||
"embd_pdrop": 0.1,
|
||||
"eos_token_id": 50256,
|
||||
"id2label": {
|
||||
"0": "LABEL_0"
|
||||
},
|
||||
"initializer_range": 0.02,
|
||||
"label2id": {
|
||||
"LABEL_0": 0
|
||||
},
|
||||
"layer_norm_epsilon": 1e-05,
|
||||
"model_type": "gpt2",
|
||||
"n_ctx": 1024,
|
||||
"n_embd": 768,
|
||||
"n_head": 12,
|
||||
"n_inner": null,
|
||||
"n_layer": 6,
|
||||
"n_positions": 1024,
|
||||
"pad_token_id": 50256,
|
||||
"reorder_and_upcast_attn": false,
|
||||
"resid_pdrop": 0.1,
|
||||
"scale_attn_by_inverse_layer_idx": false,
|
||||
"scale_attn_weights": true,
|
||||
"summary_activation": null,
|
||||
"summary_first_dropout": 0.1,
|
||||
"summary_proj_to_labels": true,
|
||||
"summary_type": "cls_index",
|
||||
"summary_use_proj": true,
|
||||
"task_specific_params": {
|
||||
"text-generation": {
|
||||
"do_sample": true,
|
||||
"max_length": 76,
|
||||
"temperature": 0.9,
|
||||
"top_k": 4,
|
||||
"repetition_penalty": 1.2,
|
||||
"early_stopping": true
|
||||
}
|
||||
},
|
||||
"torch_dtype": "float32",
|
||||
"transformers_version": "4.25.1",
|
||||
"use_cache": true,
|
||||
"vocab_size": 50257
|
||||
}
|
||||
BIN
contrastive_search.png
Normal file
BIN
contrastive_search.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 56 KiB |
3
model.safetensors
Normal file
3
model.safetensors
Normal file
@@ -0,0 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:18a5e421b52645ad0ce9a9e262a58eaff4d746d8f582f12f81efe2a21ffe98b2
|
||||
size 333950622
|
||||
33
preprocess.py
Normal file
33
preprocess.py
Normal file
@@ -0,0 +1,33 @@
|
||||
import re
|
||||
|
||||
def clean_tags(tags):
|
||||
# Make tags more human readable
|
||||
tags = tags.replace(' ', ', ').replace('_', ' ')
|
||||
|
||||
# Remove "!", "?", ".", "(", ")" from the tags
|
||||
tags = re.sub(r"[!.?()]", "", tags)
|
||||
|
||||
# Replace " , " with an empty space
|
||||
tags = re.sub(r" , ", " ", tags)
|
||||
|
||||
# Remove any trailing commas
|
||||
tags = re.sub(r"^,|,$", "", tags)
|
||||
|
||||
# Strip spaces
|
||||
tags = tags.strip()
|
||||
|
||||
# Remove any usernames
|
||||
words = tags.split(", ")
|
||||
result = []
|
||||
for word in words:
|
||||
word = word.strip()
|
||||
if word == 'v':
|
||||
result.append(word)
|
||||
continue
|
||||
if len(word) < 2:
|
||||
continue
|
||||
if any(char.isdigit() for char in word) and word not in ["1girl", "1boy", "1koma", "1other"]:
|
||||
continue
|
||||
result.append(word)
|
||||
|
||||
return ", ".join(result)
|
||||
3
pytorch_model.bin
Normal file
3
pytorch_model.bin
Normal file
@@ -0,0 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:061e5bd556a86320d4364b00da9da3e16eab22983880164e16d167d1ab818c75
|
||||
size 333969117
|
||||
1
tokenizer.json
Normal file
1
tokenizer.json
Normal file
File diff suppressed because one or more lines are too long
Reference in New Issue
Block a user