From 9c368e6e7eed7d3022c3b5cd0b287addc1c922a9 Mon Sep 17 00:00:00 2001 From: Unit1208 Date: Fri, 18 Oct 2024 13:40:59 -0700 Subject: [PATCH] feat: add WAI-ANI_NSFW-PONXL, Ultraspice, and others; trim old models (#206) * feat: add/remove numerous models Cancel the removal of DGSpitzer and BPModel feat: WAI-ANI-NSFW-PONYXL Pruned many old SD1.5 and 2.1 styles - DGSpitzer Art Diffusion - has a niche for art style, though it'd be better as a LoRA - BPModel - Yet another anime model - ChromaV5 - Easily replaced by a LoRA - Dark Victorian Diffusion? - Easily replaced by a LoRA - Funko Diffusion - LoRA - GuFeng & GuoFeng? - LoRA and Swampony replace these - Hassanblend - We do not need yet another realistic SD 1.5 model - JoMad Diffusion - Plenty of LoRAs - Moedel - *We do not need yet another **anime** SD 1.5 model*. Plus this one has much better replacements. - PFG? - Anime *and* realistic model, this one has better alternatives - Ranma Diffusion - 80s anime style, use LoRAs - Samaritan 3d Cartoon - 3d cartoon effect can be recreated with a LoRA - Tron Legacy Diffusion - Has better LoRAs - Ultraskin - Should be a LoRA Update Ether Real Mix Add Ultraspice Add ultraspice requirements, fix readme.md style: fix Update RPG to v5 * Add a script to manage models * feat: Flat-2D Animerge * pre-commit fixes * feat: BlenderMix, Unreal, TUNIX, WAI-CUTE * Validation, fixing tests * Update Flux models' homepage to civit page to be consistent with other models. BFL is now in the description * style: fix --------- Co-authored-by: tazlin --- .github/workflows/release.yml | 6 +- .gitignore | 1 + README.md | 5 +- scripts/compare_pr_to_main.py | 18 +- scripts/modify.py | 168 +++++++ scripts/requirements.modify.txt | 2 + stable_diffusion.json | 863 +++++++++++--------------------- 7 files changed, 480 insertions(+), 583 deletions(-) create mode 100644 scripts/modify.py create mode 100644 scripts/requirements.modify.txt diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 3c765ea..a6e0f44 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -25,7 +25,7 @@ jobs: echo "LAST_RELEASE_TAG=$LAST_RELEASE_TAG" >> "$GITHUB_ENV" echo "LAST_RELEASE_SHA=$LAST_RELEASE_SHA" >> "$GITHUB_ENV" cd $ORIG_WORKING_DIR - + - name: Checkout last release repository uses: actions/checkout@v2 with: @@ -55,7 +55,7 @@ jobs: - name: Calculate and print SHA hash of each stable_diffusion.json file run: | echo "SHA of current_release/stable_diffusion.json: $(sha256sum current_release/stable_diffusion.json)" - echo "SHA of last_release/stable_diffusion.json: $(sha256sum last_release/stable_diffusion.json)" + echo "SHA of last_release/stable_diffusion.json: $(sha256sum last_release/stable_diffusion.json)" - name: Run comparison script run: | @@ -71,4 +71,4 @@ jobs: uses: tsickert/discord-webhook@v6.0.0 with: webhook-url: ${{ secrets.DISCORD_WEBHOOK_URL }} - filename: ${{ env.INFO_FILE_OUT }} \ No newline at end of file + filename: ${{ env.INFO_FILE_OUT }} diff --git a/.gitignore b/.gitignore index 2ca8378..0a2ea6a 100644 --- a/.gitignore +++ b/.gitignore @@ -175,3 +175,4 @@ cython_debug/ pr_diff_* changes/ +tmp/ diff --git a/README.md b/README.md index a6963e2..5b80bdd 100644 --- a/README.md +++ b/README.md @@ -2,8 +2,7 @@ Model reference for [AIHorde](https://aihorde.net) [Worker](https://github.com/Haidra-Org/horde-worker-reGen). - -## Notes to maintainers +## Notes to maintainers - See https://github.com/Haidra-Org/horde-model-reference#horde-moderatorssupport-staff. Note that the venv the worker is installed in has `horde-model-reference` already installed. - Always use `.safetensors` files @@ -15,7 +14,7 @@ Model reference for [AIHorde](https://aihorde.net) [Worker](https://github.com/H - The pruned version of models only remove training data. This has no impact on the horde, however, unpruned models are typically much larger. - Models selected from civitai should have extra care to be taken: - The download URL should be fully qualified and include all of the query data, such as - - `?type=Model&format=SafeTensor&size=full&fp=fp16` + - `?type=Model&format=SafeTensor&size=pruned&fp=fp16` - When selecting a version, try and prefer models which require fewer steps (such as lightning models) and those model versions which are shown to be popular. - Double, triple, and quadrple check that the SHA you've specified in the json matches the model type and format URL you've chosen. - When adding large numbers of models, please strongly consider also proposing removing certain low usage models. diff --git a/scripts/compare_pr_to_main.py b/scripts/compare_pr_to_main.py index 241db34..d5d78cc 100644 --- a/scripts/compare_pr_to_main.py +++ b/scripts/compare_pr_to_main.py @@ -52,14 +52,20 @@ def compare_pr_to_main( pr_hash = None for _, pr_records in model.config.items(): for pr_record in pr_records: - if isinstance(pr_record, RawLegacy_FileRecord) and pr_record.sha256sum: + if ( + isinstance(pr_record, RawLegacy_FileRecord) + and pr_record.sha256sum + ): pr_hash = pr_record.sha256sum break main_hash = None for _, main_records in main_model_reference.root[model_name].config.items(): for main_record in main_records: - if isinstance(main_record, RawLegacy_FileRecord) and main_record.sha256sum: + if ( + isinstance(main_record, RawLegacy_FileRecord) + and main_record.sha256sum + ): main_hash = main_record.sha256sum break @@ -128,7 +134,9 @@ def main(): main_hash = args.main_hash output_dir = args.output_dir - models_added, models_removed, models_changed = compare_pr_to_main(pr_path, main_path) + models_added, models_removed, models_changed = compare_pr_to_main( + pr_path, main_path + ) hash_compared = f"{main_hash[:8]}...{pr_hash[:8]}" output = "" @@ -158,7 +166,9 @@ def main(): if output_dir: if not pr_hash or not main_hash: - raise ValueError("Must provide both pr_hash and main_hash to write changes to disk") + raise ValueError( + "Must provide both pr_hash and main_hash to write changes to disk" + ) write_changes_to_dir( models_added, models_removed, diff --git a/scripts/modify.py b/scripts/modify.py new file mode 100644 index 0000000..d570258 --- /dev/null +++ b/scripts/modify.py @@ -0,0 +1,168 @@ +from pathlib import Path +from prompt_toolkit import prompt +from prompt_toolkit.completion import WordCompleter +import json +import os +import hashlib +import requests +from tqdm import tqdm +import re + +STYLE_OPTIONS = ["anime", "artistic", "furry", "generalist", "other", "realistic"] +ACTION_OPTIONS = ["add", "update", "remove"] +style_completer = WordCompleter(STYLE_OPTIONS, ignore_case=True) +baseline_completer = WordCompleter( + [ + "stable diffusion 1", + "stable diffusion 2", + "stable_diffusion_xl", + "stable_cascade", + "flux_1", + ], + ignore_case=True, +) +action_completer = WordCompleter(ACTION_OPTIONS, ignore_case=True) + + +def load_models(json_file): + if os.path.exists(json_file): + with open(json_file, "r") as f: + return json.load(f) + return {} + + +def save_models(json_file, models): + with open(json_file, "w") as f: + json.dump(models, f, indent=4) + + +def download_and_get_size(url): + response = requests.get(url, stream=True) + if response.status_code == 401: + print( + "Model requires authorization to add, please add details to stable_diffusion.json manually." + ) + return url, 1, "REPLACE_ME", "" + + total_size = int( + response.headers.get("Content-Length", 0) + ) # Total size of the file + content_disposition = response.headers.get("Content-Disposition") + + if content_disposition: + match = re.findall('filename="(.+)"', content_disposition) + if match: + file_name = match[0] + else: + file_name = url.split("/")[-1] + else: + file_name = url.split("/")[-1] + + file_size = 0 + sha256 = hashlib.sha256() + file_path: Path = Path.cwd() / "tmp" / file_name + file_path.parent.mkdir(parents=True, exist_ok=True) + + chunk_size = 8192 + with open(file_path, "wb") as f, tqdm( + total=total_size, unit="B", unit_scale=True, desc=file_name + ) as progress_bar: + for chunk in response.iter_content(chunk_size=chunk_size): + if chunk: # Filter out keep-alive chunks + file_size += len(chunk) + sha256.update(chunk) + f.write(chunk) + progress_bar.update(len(chunk)) + + return file_name, file_size, sha256.hexdigest().upper(), file_path + + +def get_model_info(): + name = prompt("Model Name: ") + baseline = prompt("Baseline: ", completer=baseline_completer) + inpainting = prompt("Inpainting (t/f): ", default="false").lower()[0] == "t" + description = prompt("Description: ") + version = prompt("Version: ") + style = prompt("Style (realistic, artistic, etc.): ", completer=style_completer) + homepage = prompt("Homepage URL: ") + nsfw = prompt("NSFW (t/f): ").lower()[0] == "t" + + url = prompt("Download URL: ") + file_name, size_on_disk, sha256, file_path = download_and_get_size(url) + if prompt("Delete downloaded model (t/f): ", default="t").lower()[0] == "t": + os.remove(file_path) + config = { + "files": [{"path": file_name, "sha256sum": sha256}], + "download": [{"file_name": file_name, "file_path": "", "file_url": url}], + } + + return { + "name": name, + "baseline": baseline, + "type": "ckpt", + "inpainting": inpainting, + "description": description, + "version": version, + "style": style, + "homepage": homepage, + "nsfw": nsfw, + "download_all": False, + "config": config, + "size_on_disk_bytes": size_on_disk, + } + + +def add_model(json_file): + models = load_models(json_file) + model = get_model_info() + + models[model["name"]] = model + save_models(json_file, models) + print(f"Model '{model['name']}' added successfully!") + + +def update_model(json_file): + models = load_models(json_file) + name = prompt("Model Name to update: ") + + if name not in models: + print(f"Model '{name}' not found.") + return + + model = get_model_info() + models[name] = model + save_models(json_file, models) + print(f"Model '{name}' updated successfully!") + + +def remove_model(json_file): + models = load_models(json_file) + name = prompt("Model Name to remove: ") + + if name in models: + del models[name] + save_models(json_file, models) + print(f"Model '{name}' removed successfully!") + else: + print(f"Model '{name}' not found.") + + +def main(): + json_file = "stable_diffusion.json" + + action = prompt( + "Choose action (add/update/remove): ", completer=action_completer + ).lower()[0] + + if action == "a": + add_model(json_file) + elif action == "u": + update_model(json_file) + elif action == "r": + remove_model(json_file) + else: + print("Invalid action. Please choose from add, update, or remove.") + + +if __name__ == "__main__": + main() diff --git a/scripts/requirements.modify.txt b/scripts/requirements.modify.txt new file mode 100644 index 0000000..2b57eff --- /dev/null +++ b/scripts/requirements.modify.txt @@ -0,0 +1,2 @@ +prompt_toolkit~=3.0.48 +tqdm~=4.66.5 diff --git a/stable_diffusion.json b/stable_diffusion.json index 0e9d71f..13243e9 100644 --- a/stable_diffusion.json +++ b/stable_diffusion.json @@ -341,45 +341,6 @@ "available": false, "size_on_disk_bytes": 2132887713 }, - "Tron Legacy Diffusion": { - "name": "Tron Legacy Diffusion", - "baseline": "stable diffusion 1", - "type": "ckpt", - "inpainting": false, - "description": "Tron Legacy movie style", - "showcases": [ - "https://raw.githubusercontent.com/Haidra-Org/AI-Horde-image-model-reference/main/showcase/tron_legacy_diffusion/01_gigachad.webp" - ], - "version": "1", - "style": "artistic", - "trigger": [ - "trnlgcy" - ], - "homepage": "https://huggingface.co/dallinmackay/Tron-Legacy-diffusion", - "nsfw": false, - "download_all": false, - "config": { - "files": [ - { - "path": "Tron-Legacy-Style-trnlgcy.ckpt", - "md5sum": "97cd368155eed1d0f71c064e3dcd8553", - "sha256sum": "dd92b39d030c5b493028ffb8c8de5a9334dcbedf596a0b91d491c37492702a84" - }, - { - "path": "v1-inference.yaml" - } - ], - "download": [ - { - "file_name": "Tron-Legacy-Style-trnlgcy.ckpt", - "file_path": "", - "file_url": "https://huggingface.co/mirroring/horde_models/resolve/main/Tron-Legacy-Style-trnlgcy.ckpt?download=true" - } - ] - }, - "available": false, - "size_on_disk_bytes": 2132856622 - }, "Microworlds": { "name": "Microworlds", "baseline": "stable diffusion 1", @@ -850,49 +811,6 @@ "available": false, "size_on_disk_bytes": 2132856622 }, - "Ranma Diffusion": { - "name": "Ranma Diffusion", - "baseline": "stable diffusion 1", - "type": "ckpt", - "inpainting": false, - "description": "imitates the style of late '80s early 90's anime, Anything v3 base", - "tags": [ - "anime", - "retro" - ], - "showcases": [ - "https://raw.githubusercontent.com/Haidra-Org/AI-Horde-image-model-reference/main/showcase/ranma_diffusion/01_gigachad.webp" - ], - "version": "1", - "style": "anime", - "trigger": [ - "80sanimestyle" - ], - "homepage": "https://huggingface.co/tashachan28/ranma_diffusion", - "nsfw": false, - "download_all": false, - "config": { - "files": [ - { - "path": "ranma_diffusion.ckpt", - "md5sum": "20dc21ad6ed6b75b67cfa7e9afb7d9a5", - "sha256sum": "d8c0a013f0ce95379aeb0afae962a462d9b01b8b004ca7f9d1bdd2132eec40c7" - }, - { - "path": "v1-inference.yaml" - } - ], - "download": [ - { - "file_name": "ranma_diffusion.ckpt", - "file_path": "", - "file_url": "https://huggingface.co/mirroring/horde_models/resolve/main/ranma_diffusion.ckpt?download=true" - } - ] - }, - "available": false, - "size_on_disk_bytes": 2132856622 - }, "Ghibli Diffusion": { "name": "Ghibli Diffusion", "baseline": "stable diffusion 1", @@ -1107,35 +1025,28 @@ "type": "ckpt", "inpainting": false, "description": "portraits of charecters in the style of the game Baldur's Gate. check homepage for a massive prompt guide", - "showcases": [ - "https://raw.githubusercontent.com/Haidra-Org/AI-Horde-image-model-reference/main/showcase/rpg/01_gigachad.webp" - ], - "version": "4", + "version": "5", "style": "artistic", - "homepage": "https://huggingface.co/Anashel/rpg", + "homepage": "https://civitai.com/models/1116?modelVersionId=124626", "nsfw": false, "download_all": false, "config": { "files": [ { - "path": "rpg.ckpt", - "md5sum": "ce167ae992935aca271b5eccc7b8b983", - "sha256sum": "3baa5c18c3c41f7df1fcb4dd5a03dfac45e37a216d852407f2bb1118aeeececf" - }, - { - "path": "v1-inference.yaml" + "path": "rpg_v5.safetensors", + "sha256sum": "BB7E29DEF5E64F1A303BF0D87195B7E88F4D463696B532C6CDFD109FBEC4FD9E" } ], "download": [ { - "file_name": "rpg.ckpt", + "file_name": "rpg_v5.safetensors", "file_path": "", - "file_url": "https://huggingface.co/mirroring/horde_models/resolve/main/rpg.ckpt?download=true" + "file_url": "https://civitai.com/api/download/models/124626?type=Model&format=SafeTensor&size=pruned&fp=fp16" } ] }, "available": false, - "size_on_disk_bytes": 2300174645 + "size_on_disk_bytes": 2132626066 }, "Poison": { "name": "Poison", @@ -1215,45 +1126,6 @@ "available": false, "size_on_disk_bytes": 2132856622 }, - "ChromaV5": { - "name": "ChromaV5", - "baseline": "stable diffusion 1", - "type": "ckpt", - "inpainting": false, - "description": "generates metalic/chrome looking images", - "showcases": [ - "https://raw.githubusercontent.com/Haidra-Org/AI-Horde-image-model-reference/main/showcase/chromav5/01_gigachad.webp" - ], - "version": "1.6", - "style": "generalist", - "trigger": [ - "ChromaV5" - ], - "homepage": "https://huggingface.co/SomaMythos/ChromaV5", - "nsfw": false, - "download_all": false, - "config": { - "files": [ - { - "path": "chromav5.ckpt", - "md5sum": "2fd4063028dacb05997dba772e002b04", - "sha256sum": "ca620b55bdfcae8aa6659efddfc2cd13e6ce1f7c7ac63a9d94395bd7a4a44cd6" - }, - { - "path": "v1-inference.yaml" - } - ], - "download": [ - { - "file_name": "chromav5.ckpt", - "file_path": "", - "file_url": "https://huggingface.co/mirroring/horde_models/resolve/main/chromav5.ckpt?download=true" - } - ] - }, - "available": false, - "size_on_disk_bytes": 2132856622 - }, "Dreamlike Diffusion": { "name": "Dreamlike Diffusion", "baseline": "stable diffusion 1", @@ -1332,45 +1204,6 @@ "available": false, "size_on_disk_bytes": 2132856622 }, - "Funko Diffusion": { - "name": "Funko Diffusion", - "baseline": "stable diffusion 1", - "type": "ckpt", - "inpainting": false, - "description": "Stable Diffusion fine tuned on Funko Pop, by PromptHero.", - "showcases": [ - "https://raw.githubusercontent.com/Haidra-Org/AI-Horde-image-model-reference/main/showcase/funko_diffusion/01_gigachad.webp" - ], - "version": "1.0", - "style": "artistic", - "trigger": [ - "funko style" - ], - "homepage": "https://huggingface.co/prompthero/funko-diffusion", - "nsfw": false, - "download_all": false, - "config": { - "files": [ - { - "path": "funko-diffusion.ckpt", - "md5sum": "d2a2a80a8f725d517422259ce16c38fb", - "sha256sum": "c5150eaeba0ccb86627e9007841dbc45d3b5b68fd084081f34c2a6b207befd48" - }, - { - "path": "v1-inference.yaml" - } - ], - "download": [ - { - "file_name": "funko-diffusion.ckpt", - "file_path": "", - "file_url": "https://huggingface.co/mirroring/horde_models/resolve/main/funko-diffusion.ckpt?download=true" - } - ] - }, - "available": false, - "size_on_disk_bytes": 2132856622 - }, "Double Exposure Diffusion": { "name": "Double Exposure Diffusion", "baseline": "stable diffusion 1", @@ -1446,43 +1279,6 @@ "available": false, "size_on_disk_bytes": 2132856622 }, - "Hassanblend": { - "name": "Hassanblend", - "baseline": "stable diffusion 1", - "type": "ckpt", - "inpainting": false, - "description": "This model was for creating people", - "showcases": [ - "https://raw.githubusercontent.com/Haidra-Org/AI-Horde-image-model-reference/main/showcase/hassanblend/01_gigachad.webp", - "https://raw.githubusercontent.com/Haidra-Org/AI-Horde-image-model-reference/main/showcase/hassanblend/02_bettername.webp" - ], - "version": "1.5.1.2", - "style": "realistic", - "homepage": "https://huggingface.co/hassanblend/hassanblend1.5", - "nsfw": true, - "download_all": false, - "config": { - "files": [ - { - "path": "hassanblend.ckpt", - "md5sum": "071a44d5b076298a07227e34dad58d92", - "sha256sum": "1bb3a2d7eb0e2f92c711248e11771866b8fd55f0920d2cc8d09d247933d0623d" - }, - { - "path": "v1-inference.yaml" - } - ], - "download": [ - { - "file_name": "hassanblend.ckpt", - "file_path": "", - "file_url": "https://huggingface.co/mirroring/horde_models/resolve/main/hassanblend.ckpt?download=true" - } - ] - }, - "available": false, - "size_on_disk_bytes": 2132885216 - }, "ACertainThing": { "name": "ACertainThing", "baseline": "stable diffusion 1", @@ -1682,45 +1478,6 @@ "available": false, "size_on_disk_bytes": 2132856622 }, - "Dark Victorian Diffusion": { - "name": "Dark Victorian Diffusion", - "baseline": "stable diffusion 1", - "type": "ckpt", - "inpainting": false, - "description": "finetuned on dark, moody, victorian imagery", - "showcases": [ - "https://raw.githubusercontent.com/Haidra-Org/AI-Horde-image-model-reference/main/showcase/dark_victorian_diffusion/01_victorian.webp" - ], - "version": "2.0", - "style": "artistic", - "trigger": [ - "darkvictorian artstyle" - ], - "homepage": "https://huggingface.co/proxima/darkvictorian_artstyle", - "nsfw": false, - "download_all": false, - "config": { - "files": [ - { - "path": "DarkVictorian_Diffusion.ckpt", - "md5sum": "29f6c1d379360859c6e3fcf4be2e5381", - "sha256sum": "f878aaffe5eac79ac963b105ee665c665887b567ffbb2387571a2004088068f6" - }, - { - "path": "v1-inference.yaml" - } - ], - "download": [ - { - "file_name": "DarkVictorian_Diffusion.ckpt", - "file_path": "", - "file_url": "https://huggingface.co/mirroring/horde_models/resolve/main/DarkVictorian_Diffusion.ckpt?download=true" - } - ] - }, - "available": false, - "size_on_disk_bytes": 2132903585 - }, "DnD Item": { "name": "DnD Item", "baseline": "stable diffusion 1", @@ -1975,46 +1732,6 @@ "available": false, "size_on_disk_bytes": 2300165166 }, - "Moedel": { - "name": "Moedel", - "baseline": "stable diffusion 1", - "type": "ckpt", - "inpainting": false, - "description": "Moe.del produces cute female characters. It is also a mix of Stable Diffusion 1.4/1.5 in different proportions so you can challenge it to generate for you pretty much anything using regular SD prompts (like cute dogs, cats etc.)", - "showcases": [ - "https://raw.githubusercontent.com/Haidra-Org/AI-Horde-image-model-reference/main/showcase/moedel/01_moedel.webp" - ], - "version": "2", - "style": "other", - "trigger": [ - "masterpiece", - "best quality", - "mdjrny-v4" - ], - "homepage": "https://civitai.com/models/2034/moedel", - "nsfw": false, - "download_all": false, - "config": { - "files": [ - { - "path": "moedel.ckpt", - "md5sum": "63132423ae711d87c813bf0f0442b154", - "sha256sum": "b2c2e471f84ad2581238719c7f49a2a6e5e87960fdaf2828696e7af8cae00f5d" - }, - { - "path": "v1-inference.yaml" - } - ], - "download": [ - { - "file_name": "moedel.ckpt", - "file_path": "", - "file_url": "https://huggingface.co/mirroring/horde_models/resolve/main/moedel.ckpt?download=true" - } - ] - }, - "available": false - }, "DreamLikeSamKuvshinov": { "name": "DreamLikeSamKuvshinov", "baseline": "stable diffusion 1", @@ -2131,41 +1848,6 @@ "available": false, "size_on_disk_bytes": 4265327916 }, - "GuFeng": { - "name": "GuFeng", - "baseline": "stable diffusion 1", - "type": "ckpt", - "inpainting": false, - "description": "This is a model of ancient Chinese style, and it also belongs to the model series with ink and water orientation", - "tags": [ - "anime" - ], - "version": "2.0", - "style": "anime", - "homepage": "https://civitai.com/models/12903/gufeng", - "nsfw": false, - "download_all": false, - "config": { - "files": [ - { - "path": "GuFeng.safetensors", - "sha256sum": "1f4fd502679cdbddb168f36ca11de3787097497eeb0e4f85bd1102618178e332" - }, - { - "path": "v1-inference.yaml" - } - ], - "download": [ - { - "file_name": "GuFeng.safetensors", - "file_path": "", - "file_url": "https://huggingface.co/mirroring/horde_models/resolve/main/GuFeng.safetensors?download=true" - } - ] - }, - "available": false, - "size_on_disk_bytes": 4244097744 - }, "Elldreth's Lucid Mix": { "name": "Elldreth's Lucid Mix", "baseline": "stable diffusion 1", @@ -2241,56 +1923,6 @@ "available": false, "size_on_disk_bytes": 2132910547 }, - "Ultraskin": { - "name": "Ultraskin", - "baseline": "stable diffusion 2", - "type": "ckpt", - "inpainting": false, - "description": "This model will add a LOT of skin detail compared to SD 2.1. Sometimes this makes images look more realistic, sometimes less realistic!", - "showcases": [ - "https://raw.githubusercontent.com/Haidra-Org/AI-Horde-image-model-reference/main/showcase/ultraskin/01_voodoocode.webp", - "https://raw.githubusercontent.com/Haidra-Org/AI-Horde-image-model-reference/main/showcase/ultraskin/02_gigachad.webp" - ], - "version": "0.9", - "style": "realistic", - "trigger": [ - "ultraskin", - "twenties", - "thirties", - "thirty year old", - "eighties", - "eighty year old", - "elderly", - "moles", - "freckles", - "scar", - "skin detail" - ], - "homepage": "https://huggingface.co/VegaKH/Ultraskin", - "nsfw": false, - "download_all": false, - "config": { - "files": [ - { - "path": "Ultraskin.ckpt", - "md5sum": "8e487864e56b73235c5ec304ed3a94a5", - "sha256sum": "be03ccbb0d58e5510acb9776aee48d42a4103b7c2418088ee9bdfe2d6309935e" - }, - { - "path": "v2-inference-v.yaml" - } - ], - "download": [ - { - "file_name": "Ultraskin.ckpt", - "file_path": "", - "file_url": "https://huggingface.co/mirroring/horde_models/resolve/main/Ultraskin.ckpt?download=true" - } - ] - }, - "available": false, - "size_on_disk_bytes": 2607613289 - }, "PPP": { "name": "PPP", "baseline": "stable diffusion 1", @@ -2579,6 +2211,43 @@ "available": false, "size_on_disk_bytes": 2132856622 }, + "BPModel": { + "name": "BPModel", + "baseline": "stable diffusion 1", + "type": "ckpt", + "inpainting": false, + "description": "Anime model similar to A Certain Thing, but custom trained on 1024x1024 resolution images", + "tags": [ + "anime", + "high resolution" + ], + "version": "1024", + "style": "anime", + "homepage": "https://huggingface.co/Crosstyan/BPModel", + "nsfw": false, + "download_all": false, + "config": { + "files": [ + { + "path": "BPModel.ckpt", + "md5sum": "3e0056af1fcd97b74c09ebd48d8b5420", + "sha256sum": "d5d6e1898fbc096237038661a5a09bdd25ea31f7a942b0df414d4bae36e9a124" + }, + { + "path": "v1-inference.yaml" + } + ], + "download": [ + { + "file_name": "BPModel.ckpt", + "file_path": "", + "file_url": "https://huggingface.co/mirroring/horde_models/resolve/main/BPModel.ckpt?download=true" + } + ] + }, + "available": false, + "size_on_disk_bytes": 2300165102 + }, "Realistic Vision": { "name": "Realistic Vision", "baseline": "stable diffusion 1", @@ -2655,42 +2324,6 @@ "available": false, "size_on_disk_bytes": 4265327278 }, - "PFG": { - "name": "PFG", - "baseline": "stable diffusion 1", - "type": "ckpt", - "inpainting": false, - "description": "NSFW Model for realistic and Hentai images", - "showcases": [ - "https://raw.githubusercontent.com/Haidra-Org/AI-Horde-image-model-reference/main/showcase/pfg/01_pfg.webp" - ], - "version": "1.11", - "style": "realistic", - "homepage": "https://civitai.com/models/1227/pfg", - "nsfw": true, - "download_all": false, - "config": { - "files": [ - { - "path": "PFG.ckpt", - "md5sum": "07dc65f652bb400af4d03b0bf6a41b95", - "sha256sum": "5a369d04a05862bdf83acb86fa9aa4ea65c9bcc4102badc01821e851f34cc1d7" - }, - { - "path": "v1-inference.yaml" - } - ], - "download": [ - { - "file_name": "PFG.ckpt", - "file_path": "", - "file_url": "https://huggingface.co/mirroring/horde_models/resolve/main/PFG.ckpt?download=true" - } - ] - }, - "available": false, - "size_on_disk_bytes": 7703710054 - }, "Epic Diffusion": { "name": "Epic Diffusion", "baseline": "stable diffusion 1", @@ -3875,53 +3508,18 @@ "baseline": "stable diffusion 1", "type": "ckpt", "inpainting": false, - "description": "Movie Diffusion is SD 1.5 trained on 35mm film stills from popular movies.", - "version": "1.2", - "style": "realistic", - "homepage": "https://civitai.com/models/8067/movie-diffusion-v12", - "nsfw": false, - "download_all": false, - "config": { - "files": [ - { - "path": "movie-diffusion.ckpt", - "md5sum": "6dd8835d5b2f9950c880124d2885a1b8", - "sha256sum": "5a08f9d89c51cc5f0f43d27d6ff5c242679f5f1ada6e0f73a3aafe10c1cf4e1b" - }, - { - "path": "v1-inference.yaml" - } - ], - "download": [ - { - "file_name": "movie-diffusion.ckpt", - "file_path": "", - "file_url": "https://huggingface.co/mirroring/horde_models/resolve/main/movie-diffusion.ckpt?download=true" - } - ] - }, - "available": false, - "size_on_disk_bytes": 2132860661 - }, - "GuoFeng": { - "name": "GuoFeng", - "baseline": "stable diffusion 1", - "type": "ckpt", - "inpainting": false, - "description": "This is a Chinese gorgeous antique style model, which can also be said to be an antique game character model with a 2.5D texture", - "showcases": [ - "https://raw.githubusercontent.com/Haidra-Org/AI-Horde-image-model-reference/main/showcase/GuoFeng/01.webp" - ], - "version": "3.3", - "style": "artistic", - "homepage": "https://civitai.com/models/10415/3-guofeng3", + "description": "Movie Diffusion is SD 1.5 trained on 35mm film stills from popular movies.", + "version": "1.2", + "style": "realistic", + "homepage": "https://civitai.com/models/8067/movie-diffusion-v12", "nsfw": false, "download_all": false, "config": { "files": [ { - "path": "GuoFeng.safetensors", - "sha256sum": "4078eb4174eea1dd75e03d437f5104f36d7587db31ebdfadc534599f61920119" + "path": "movie-diffusion.ckpt", + "md5sum": "6dd8835d5b2f9950c880124d2885a1b8", + "sha256sum": "5a08f9d89c51cc5f0f43d27d6ff5c242679f5f1ada6e0f73a3aafe10c1cf4e1b" }, { "path": "v1-inference.yaml" @@ -3929,14 +3527,14 @@ ], "download": [ { - "file_name": "GuoFeng.safetensors", + "file_name": "movie-diffusion.ckpt", "file_path": "", - "file_url": "https://huggingface.co/mirroring/horde_models/resolve/main/GuoFeng.safetensors?download=true" + "file_url": "https://huggingface.co/mirroring/horde_models/resolve/main/movie-diffusion.ckpt?download=true" } ] }, "available": false, - "size_on_disk_bytes": 4244098026 + "size_on_disk_bytes": 2132860661 }, "Anime Pencil Diffusion": { "name": "Anime Pencil Diffusion", @@ -3981,43 +3579,6 @@ "available": false, "size_on_disk_bytes": 4098041880 }, - "BPModel": { - "name": "BPModel", - "baseline": "stable diffusion 1", - "type": "ckpt", - "inpainting": false, - "description": "Anime model similar to A Certain Thing, but custom trained on 1024x1024 resolution images", - "tags": [ - "anime", - "high resolution" - ], - "version": "1024", - "style": "anime", - "homepage": "https://huggingface.co/Crosstyan/BPModel", - "nsfw": false, - "download_all": false, - "config": { - "files": [ - { - "path": "BPModel.ckpt", - "md5sum": "3e0056af1fcd97b74c09ebd48d8b5420", - "sha256sum": "d5d6e1898fbc096237038661a5a09bdd25ea31f7a942b0df414d4bae36e9a124" - }, - { - "path": "v1-inference.yaml" - } - ], - "download": [ - { - "file_name": "BPModel.ckpt", - "file_path": "", - "file_url": "https://huggingface.co/mirroring/horde_models/resolve/main/BPModel.ckpt?download=true" - } - ] - }, - "available": false, - "size_on_disk_bytes": 2300165102 - }, "UMI Olympus": { "name": "UMI Olympus", "baseline": "stable diffusion 1", @@ -4847,58 +4408,22 @@ "available": false, "size_on_disk_bytes": 2132857262 }, - "JoMad Diffusion": { - "name": "JoMad Diffusion", - "baseline": "stable diffusion 1", - "type": "ckpt", - "inpainting": false, - "description": "SD 1.5 model trained on a sample of Joe Madureiras artwork, this model was combined with another anime style model to create the blend uploaded here.", - "version": "1.0", - "style": "anime", - "trigger": [ - "style of joemadureira" - ], - "homepage": "https://civitai.com/models/1223/jomad-diffusion", - "nsfw": false, - "download_all": false, - "config": { - "files": [ - { - "path": "jomadDiffusion.ckpt", - "md5sum": "43aa66b9ef9b799b155cd5d905d6ef88", - "sha256sum": "bfdb1bc07f86a37363bdf04b778e0d528d28f25d2b78becc66f5b725452e4e62" - }, - { - "path": "v1-inference.yaml" - } - ], - "download": [ - { - "file_name": "jomadDiffusion.ckpt", - "file_path": "", - "file_url": "https://huggingface.co/mirroring/horde_models/resolve/main/jomadDiffusion.ckpt?download=true" - } - ] - }, - "available": false, - "size_on_disk_bytes": 2132908576 - }, "Ether Real Mix": { "name": "Ether Real Mix", "baseline": "stable diffusion 1", "type": "ckpt", "inpainting": false, "description": "Ether Real Mix is a realistic to semi-realistic anime style model tuned with the flexibility for general purpose use (hopefully). It still has some shortcomings inherit to anime models such as biases in generating females and humans.", - "version": "1.1", - "style": "other", - "homepage": "https://civitai.com/models/18207?modelVersionId=23036", + "version": "4", + "style": "artistic", + "homepage": "https://civitai.com/models/18207?modelVersionId=538928", "nsfw": false, "download_all": false, "config": { "files": [ { - "path": "etherRealMix.safetensors", - "sha256sum": "bfcaa69ad9ef9d7ecca9a2251a5c5a84f31da7bb66f093e185006435026de787" + "path": "etherRealMix_etherRealMix4.safetensors", + "sha256sum": "081C0D5FA113B01FB5EB2E9ADE24C05491325A983099B0AFC4813C9EEB7E6C13" }, { "path": "v1-inference.yaml" @@ -4906,14 +4431,14 @@ ], "download": [ { - "file_name": "etherRealMix.safetensors", + "file_name": "etherRealMix_etherRealMix4.safetensors", "file_path": "", - "file_url": "https://huggingface.co/mirroring/horde_models/resolve/main/etherRealMix.safetensors?download=true" + "file_url": "https://civitai.com/api/download/models/538928?type=Model&format=SafeTensor&size=pruned&fp=fp16" } ] }, "available": false, - "size_on_disk_bytes": 2132626102 + "size_on_disk_bytes": 2132651178 }, "Lyriel": { "name": "Lyriel", @@ -6190,38 +5715,6 @@ "available": false, "size_on_disk_bytes": 4265204948 }, - "Samaritan 3d Cartoon": { - "name": "Samaritan 3d Cartoon", - "baseline": "stable diffusion 1", - "type": "ckpt", - "inpainting": false, - "description": "A merge with loras trained on hundreds of midjourney niji expressive images with variety of emotions, doesn't look as good but it's allright. Add 'toothy expression' for more pronounced teeth but it's hard to get it right. Can only make humans and humanoids at the moment.", - "version": "1.0", - "style": "artistic", - "homepage": "https://civitai.com/models/81270/samaritan-3d-cartoon", - "nsfw": false, - "download_all": false, - "config": { - "files": [ - { - "path": "samaritan3dCartoon.safetensors", - "sha256sum": "D43CE53B9B671FFFB4E636D56FB01EA19F246EB321620411EA33B43369233A9E" - }, - { - "path": "v1-inference.yaml" - } - ], - "download": [ - { - "file_name": "samaritan3dCartoon.safetensors", - "file_path": "", - "file_url": "https://huggingface.co/mirroring/horde_models/resolve/main/samaritan3dCartoon.safetensors?download=true" - } - ] - }, - "available": false, - "size_on_disk_bytes": 4244100738 - }, "AnyLoRA": { "name": "AnyLoRA", "baseline": "stable diffusion 1", @@ -6993,10 +6486,10 @@ "baseline": "flux_1", "type": "ckpt", "inpainting": false, - "description": "FLUX.1 [dev] is a 12 billion parameter rectified flow transformer capable of generating images from text descriptions. For more information, please read our blog post.", + "description": "FLUX.1 [dev] is a 12 billion parameter rectified flow transformer capable of generating images from text descriptions. For more information, please read our blog post. https://blackforestlabs.ai/", "version": "1.0", "style": "generalist", - "homepage": "https://blackforestlabs.ai/", + "homepage": "https://civitai.com/models/637170?modelVersionId=716322", "nsfw": false, "download_all": false, "requirements": { @@ -7039,10 +6532,10 @@ "baseline": "flux_1", "type": "ckpt", "inpainting": false, - "description": "FLUX.1 [schnell] is a 12 billion parameter rectified flow transformer capable of generating images from text descriptions. For more information, please read our blog post.", + "description": "FLUX.1 [schnell] is a 12 billion parameter rectified flow transformer capable of generating images from text descriptions. For more information, please read our blog post. https://blackforestlabs.ai/", "version": "1.0", "style": "generalist", - "homepage": "https://blackforestlabs.ai/", + "homepage": "https://civitai.com/models/637170?modelVersionId=714945", "nsfw": false, "download_all": false, "requirements": { @@ -7123,5 +6616,229 @@ "controlnet" ], "size_on_disk_bytes": 7105348824 + }, + "WAI-ANI-NSFW-PONYXL": { + "name": "WAI-ANI-NSFW-PONYXL", + "baseline": "stable_diffusion_xl", + "type": "ckpt", + "inpainting": false, + "description": "WAI-ANI-NSFW-PONYXL is a Pony finetuned for NSFW anime-style generations", + "version": "8.0", + "style": "anime", + "homepage": "https://civitai.com/models/404154", + "nsfw": true, + "download_all": false, + "requirements": { + "clip_skip": 2 + }, + "config": { + "files": [ + { + "path": "waiANINSFWPONYXL_v80.safetensors", + "sha256sum": "C09F285811F11AECDB6D8BA73057C3670A30752B25B835C1C2F8EC919F8F40CD" + } + ], + "download": [ + { + "file_name": "waiANINSFWPONYXL_v80.safetensors", + "file_path": "", + "file_url": "https://civitai.com/api/download/models/827519?type=Model&format=SafeTensor&size=pruned&fp=fp16" + } + ] + }, + "features_not_supported": [ + "hires_fix", + "inpainting", + "controlnet" + ], + "size_on_disk_bytes": 6938040714 + }, + "Ultraspice": { + "name": "Ultraspice", + "baseline": "stable_diffusion_xl", + "type": "ckpt", + "inpainting": false, + "description": "Ultraspice is a highly realistic SDXL model.", + "version": "2.3", + "style": "realistic", + "homepage": "https://civitai.com/models/229392", + "nsfw": false, + "download_all": false, + "requirements": { + "max_cfg_scale": 2.5 + }, + "config": { + "files": [ + { + "path": "ultraspice_v23.safetensors", + "sha256sum": "CFD51D0CB5107B0B2C3DB37BDE3FBF3CD569F0A1E0A2D8826D2C4DA2FCB57C09" + } + ], + "download": [ + { + "file_name": "ultraspice_v23.safetensors", + "file_path": "", + "file_url": "https://civitai.com/api/download/models/626054?type=Model&format=SafeTensor&size=pruned&fp=fp16" + } + ] + }, + "features_not_supported": [ + "hires_fix", + "inpainting", + "controlnet" + ], + "size_on_disk_bytes": 6939220250 + }, + "Flat-2D Animerge": { + "name": "Flat-2D Animerge", + "baseline": "stable diffusion 1", + "type": "ckpt", + "inpainting": false, + "description": "This is a merge of some random anime based and cartoon based models to achieve a somewhat cartoony anime style, more similar to what you would actually see in anime as opposed to the more common hyper-detailed anime models.", + "version": "v4.5", + "style": "anime", + "homepage": "https://civitai.com/models/35960?modelVersionId=266360", + "nsfw": true, + "download_all": false, + "config": { + "files": [ + { + "path": "flat2DAnimerge_v45Sharp.safetensors", + "sha256sum": "FE95063BA60BC9298D60EB252F98D057039D9A882158AFE042F266BDC1B1E528" + } + ], + "download": [ + { + "file_name": "flat2DAnimerge_v45Sharp.safetensors", + "file_path": "", + "file_url": "https://civitai.com/api/download/models/266360?type=Model&format=SafeTensor&size=pruned&fp=fp16" + } + ] + }, + "size_on_disk_bytes": 2132626066 + }, + "BlenderMix Pony": { + "name": "BlenderMix Pony", + "baseline": "stable_diffusion_xl", + "type": "ckpt", + "inpainting": false, + "description": "This PonyXL checkpoint should create a blender animation style look. Model was merged using my loras (Fugtrup, Nyl2, RadRoachHD) and AutismMix. I also added a tiny pinch of DucHaiten-GameArt to add some more consistency for 3d generations.", + "version": "v2.0", + "style": "other", + "homepage": "https://civitai.com/models/359876?modelVersionId=541561", + "nsfw": true, + "download_all": false, + "requirements": { + "clip_skip": 2 + }, + "config": { + "files": [ + { + "path": "blendermix_v20.safetensors", + "sha256sum": "BCA71253F32D784D3CF4A8A334297C66FDA32725A9399FEDBD2BA9A8B306C5C3" + } + ], + "download": [ + { + "file_name": "blendermix_v20.safetensors", + "file_path": "", + "file_url": "https://civitai.com/api/download/models/541561?type=Model&format=SafeTensor&size=full&fp=fp16" + } + ] + }, + "size_on_disk_bytes": 7105350502 + }, + "DucHaiten GameArt (Unreal) Pony": { + "name": "DucHaiten GameArt (Unreal) Pony", + "baseline": "stable_diffusion_xl", + "type": "ckpt", + "inpainting": false, + "description": "This is a 3D PonyXL model, based on the AAA game quality of Unreal Engine 5.", + "version": "v1.0", + "style": "other", + "homepage": "https://civitai.com/models/388321?modelVersionId=692973", + "nsfw": true, + "download_all": false, + "requirements": { + "clip_skip": 2 + }, + "config": { + "files": [ + { + "path": "duchaitenGameart_unrealengineV10.safetensors", + "sha256sum": "BB307BFC22EC0455E3EB37AF25D93C451E55A5C4F29D548C36560DECFFB9359E" + } + ], + "download": [ + { + "file_name": "duchaitenGameart_unrealengineV10.safetensors", + "file_path": "", + "file_url": "https://civitai.com/api/download/models/692973?type=Model&format=SafeTensor&size=pruned&fp=fp16" + } + ] + }, + "size_on_disk_bytes": 6938040682 + }, + "TUNIX Pony": { + "name": "TUNIX Pony", + "baseline": "stable_diffusion_xl", + "type": "ckpt", + "inpainting": false, + "description": "Semi-realistic stylized PonyXL finetune", + "version": "v1.0", + "style": "realistic", + "homepage": "https://civitai.com/models/558362?modelVersionId=621563", + "nsfw": true, + "download_all": false, + "requirements": { + "clip_skip": 2 + }, + "config": { + "files": [ + { + "path": "tunix3DStylizedPony_v10VAE.safetensors", + "sha256sum": "22E9FA0DBC277BFDDF3960BDD5791B8A5DC7305B7A2DFCA4C0EE3E2F401738C5" + } + ], + "download": [ + { + "file_name": "tunix3DStylizedPony_v10VAE.safetensors", + "file_path": "", + "file_url": "https://civitai.com/api/download/models/621563?type=Model&format=SafeTensor&size=full&fp=fp16" + } + ] + }, + "size_on_disk_bytes": 6938040706 + }, + "WAI-CUTE Pony": { + "name": "WAI-CUTE Pony", + "baseline": "stable_diffusion_xl", + "type": "ckpt", + "inpainting": false, + "description": "Anime Pony model, with an emphasis on cute female figures", + "version": "v8.0", + "style": "anime", + "homepage": "https://civitai.com/models/451486?modelVersionId=915200", + "nsfw": true, + "download_all": false, + "requirements": { + "clip_skip": 2 + }, + "config": { + "files": [ + { + "path": "waiCUTE_v80.safetensors", + "sha256sum": "5DB3BCC019F0EBA2B913B80187B29D5636C3AB79DF6910ADB95EAB5BEAA10CC5" + } + ], + "download": [ + { + "file_name": "waiCUTE_v80.safetensors", + "file_path": "", + "file_url": "https://civitai.com/api/download/models/915200?type=Model&format=SafeTensor&size=pruned&fp=fp16" + } + ] + }, + "size_on_disk_bytes": 6938040682 } }