diff --git a/.gitignore b/.gitignore
index e9d27c2..5a877c2 100644
--- a/.gitignore
+++ b/.gitignore
@@ -15,6 +15,6 @@ dev
scepter.egg-info
.readthedocs.yml
1.9
-MANIFEST.in
+#MANIFEST.in
*resources
*.ipynb_checkpoints*
diff --git a/asset/images/edit_tuner/cat_512.jpg b/asset/images/edit_tuner/cat_512.jpg
new file mode 100644
index 0000000..afac590
Binary files /dev/null and b/asset/images/edit_tuner/cat_512.jpg differ
diff --git a/asset/images/edit_tuner/depth.jpg b/asset/images/edit_tuner/depth.jpg
new file mode 100644
index 0000000..d632883
Binary files /dev/null and b/asset/images/edit_tuner/depth.jpg differ
diff --git a/asset/images/edit_tuner/depth2image.jpeg b/asset/images/edit_tuner/depth2image.jpeg
new file mode 100644
index 0000000..d57f79c
Binary files /dev/null and b/asset/images/edit_tuner/depth2image.jpeg differ
diff --git a/asset/images/edit_tuner/detext.jpeg b/asset/images/edit_tuner/detext.jpeg
new file mode 100644
index 0000000..6ddb0d3
Binary files /dev/null and b/asset/images/edit_tuner/detext.jpeg differ
diff --git a/asset/images/edit_tuner/hed.jpeg b/asset/images/edit_tuner/hed.jpeg
new file mode 100644
index 0000000..c29af91
Binary files /dev/null and b/asset/images/edit_tuner/hed.jpeg differ
diff --git a/asset/images/edit_tuner/house.jpg b/asset/images/edit_tuner/house.jpg
new file mode 100644
index 0000000..f4b67fd
Binary files /dev/null and b/asset/images/edit_tuner/house.jpg differ
diff --git a/asset/images/edit_tuner/image2depth.jpeg b/asset/images/edit_tuner/image2depth.jpeg
new file mode 100644
index 0000000..a972132
Binary files /dev/null and b/asset/images/edit_tuner/image2depth.jpeg differ
diff --git a/asset/images/edit_tuner/text.jpg b/asset/images/edit_tuner/text.jpg
new file mode 100644
index 0000000..16b37c2
Binary files /dev/null and b/asset/images/edit_tuner/text.jpg differ
diff --git a/docs/en/conf.py b/docs/en/conf.py
index a713930..941cbb1 100644
--- a/docs/en/conf.py
+++ b/docs/en/conf.py
@@ -1,4 +1,5 @@
# -*- coding: utf-8 -*-
+# Copyright (c) Alibaba, Inc. and its affiliates.
# Configuration file for the Sphinx documentation builder.
#
# This file only contains a selection of the most common options. For a full
diff --git a/docs/en/tasks/stylebooth.md b/docs/en/tasks/stylebooth.md
index d448bcd..84be3ea 100644
--- a/docs/en/tasks/stylebooth.md
+++ b/docs/en/tasks/stylebooth.md
@@ -29,8 +29,21 @@ Given an original image, image editing aims to generate an image that align with
 |
 |
+
+ | Origin Image |
+ Lowpoly |
+ Colored Pencil Art |
+ Watercolor |
+ misc-disco |
+
+
+  |
+  |
+  |
+  |
+  |
+
-
## Features
| **Text-Based** | **Exemplar-Based** |
@@ -92,7 +105,7 @@ class DiffusionInferenceTest(unittest.TestCase):
output = diff_infer({'prompt': 'Let this image be in the style of sai-lowpoly'},
style_edit_image=Image.open('asset/images/inpainting_text_ref/ex4_scene_im.jpg'),
style_guide_scale_text=7.5,
- style_guide_scale_image=0.5)
+ style_guide_scale_image=1.5)
save_path = os.path.join(self.tmp_dir,
'stylebooth_test_lowpoly_cute_dog.png')
save_image(output['images'], save_path)
diff --git a/docs/en/tutorials/dataset.md b/docs/en/tutorials/dataset.md
index c954382..9c13c33 100644
--- a/docs/en/tutorials/dataset.md
+++ b/docs/en/tutorials/dataset.md
@@ -16,7 +16,11 @@ print(next(iter(ms_train_dataset)))
## CSV Format
-For the data format used by SCEPTER Studio, please refer to [3D_example_csv.zip](https://www.modelscope.cn/api/v1/models/iic/scepter/repo?Revision=master&FilePath=datasets/3D_example_csv.zip).
+For the data format used by SCEPTER Studio, please refer to [3D_example_csv.zip](https://www.modelscope.cn/api/v1/models/iic/scepter/repo?Revision=master&FilePath=datasets/3D_example_csv.zip) and [hed_pair.zip](https://www.modelscope.cn/api/v1/models/iic/scepter/repo?Revision=master&FilePath=datasets%2Fhed_pair.zip).
+```shell
+mkdir -p cache/datasets/ && wget 'https://www.modelscope.cn/api/v1/models/iic/scepter/repo?Revision=master&FilePath=datasets/3D_example_csv.zip' -O cache/datasets/3D_example_csv.zip && unzip cache/datasets/3D_example_csv.zip -d cache/datasets/ && rm cache/datasets/3D_example_csv.zip
+mkdir -p cache/datasets/ && wget 'https://www.modelscope.cn/api/v1/models/iic/scepter/repo?Revision=master&FilePath=datasets/hed_pair.zip' -O cache/datasets/hed_pair.zip && unzip cache/datasets/hed_pair.zip -d cache/datasets/ && rm cache/datasets/hed_pair.zip
+```
## TXT Format
@@ -24,3 +28,4 @@ To facilitate starting training in command-line mode, you can use a dataset in t
```shell
mkdir -p cache/datasets/ && wget 'https://www.modelscope.cn/api/v1/models/iic/scepter/repo?Revision=master&FilePath=datasets/3D_example_txt.zip' -O cache/datasets/3D_example_txt.zip && unzip cache/datasets/3D_example_txt.zip -d cache/datasets/ && rm cache/datasets/3D_example_txt.zip
+```
diff --git a/docs/en/tutorials/inference.md b/docs/en/tutorials/inference.md
index f5a98f4..078f9bc 100644
--- a/docs/en/tutorials/inference.md
+++ b/docs/en/tutorials/inference.md
@@ -40,6 +40,6 @@ python scepter/tools/run_inference.py --cfg scepter/methods/scedit/t2i/sd15_512_
- SCEdit
```shell
-python scepter/tools/run_inference.py --cfg scepter/methods/scedit/ctr/sd21_768_sce_ctr_canny.yaml --num_samples 1 --prompt 'a single flower is shown in front of a tree' --save_folder 'test_flower_canny' --image_size 768 --task control --image 'asset/images/flower.jpg' --control_mode canny --pretrained_model ms://damo/scepter_scedit@controllable_model/SD2.1/canny_control/0_SwiftSCETuning/pytorch_model.bin # canny
-python scepter/tools/run_inference.py --cfg scepter/methods/scedit/ctr/sd21_768_sce_ctr_pose.yaml --num_samples 1 --prompt 'super mario' --save_folder 'test_mario_pose' --image_size 768 --task control --image 'asset/images/pose_source.png' --control_mode source --pretrained_model ms://damo/scepter_scedit@controllable_model/SD2.1/pose_control/0_SwiftSCETuning/pytorch_model.bin # pose
+python scepter/tools/run_inference.py --cfg scepter/methods/scedit/ctr/sd21_768_sce_ctr_canny.yaml --num_samples 1 --prompt 'a single flower is shown in front of a tree' --save_folder 'test_flower_canny' --image_size 768 --task control --image 'asset/images/flower.jpg' --control_mode canny --pretrained_model ms://iic/scepter_scedit@controllable_model/SD2.1/canny_control/0_SwiftSCETuning/pytorch_model.bin # canny
+python scepter/tools/run_inference.py --cfg scepter/methods/scedit/ctr/sd21_768_sce_ctr_pose.yaml --num_samples 1 --prompt 'super mario' --save_folder 'test_mario_pose' --image_size 768 --task control --image 'asset/images/pose_source.png' --control_mode source --pretrained_model ms://iic/scepter_scedit@controllable_model/SD2.1/pose_control/0_SwiftSCETuning/pytorch_model.bin # pose
```
diff --git a/docs/zh_cn/conf.py b/docs/zh_cn/conf.py
index a713930..941cbb1 100644
--- a/docs/zh_cn/conf.py
+++ b/docs/zh_cn/conf.py
@@ -1,4 +1,5 @@
# -*- coding: utf-8 -*-
+# Copyright (c) Alibaba, Inc. and its affiliates.
# Configuration file for the Sphinx documentation builder.
#
# This file only contains a selection of the most common options. For a full
diff --git a/example/classifier/classifier_dataset.py b/example/classifier/classifier_dataset.py
index 4d8334a..eb0a4b7 100644
--- a/example/classifier/classifier_dataset.py
+++ b/example/classifier/classifier_dataset.py
@@ -2,7 +2,6 @@
# Copyright (c) Alibaba, Inc. and its affiliates.
import numpy as np
import torchvision
-
from scepter.modules.data.dataset.base_dataset import BaseDataset
from scepter.modules.data.dataset.registry import DATASETS
from scepter.modules.utils.config import dict_to_yaml
diff --git a/readme.md b/readme.md
index a401d85..2320218 100644
--- a/readme.md
+++ b/readme.md
@@ -18,6 +18,7 @@ SCEPTER offers 3 core components:
## 🎉 News
+- [2024.05]: Introducing SCEPTER v1, supporting customized image edit tasks! Simply provide 10 image pairs, SCEPTER will tune an edit tuner for your own Image-to-Image tasks, like `de-text`, `segmentation`, etc.
- [2024.04]: New [StyleBooth](https://ali-vilab.github.io/stylebooth-page/) demo on SCEPTER Studio for`Text-Based Style Editing`.
- [2024.03]: We optimize the training UI and checkpoint management. New [LAR-Gen](https://arxiv.org/abs/2403.19534) model has been added on SCEPTER Studio, supporting `zoom-out`, `virtual try on`, `inpainting`.
- [2024.02]: We release new SCEdit controllable image synthesis models for SD v2.1 and SD XL. Multiple strategies applied to accelerate inference time for SCEPTER Studio.
@@ -29,38 +30,18 @@ SCEPTER offers 3 core components:
## 🖼 Gallery for Recent Works
-### StyleBooth
-
-
- Origin Image Gold Dragon Tuner |
- Graffiti Art |
- Adorable Kawaii |
- game-retro game |
- Vincent van Gogh |
-
-
-  |
-  |
-  |
-  |
-  |
-
-
+### Edit Tuners
+Simply provide 10 image pairs, SCEPTER will tune an edit tuner for your own Image-to-Image tasks, like `de-text`, `segmentation`, etc.
+Try our official few-shot datasets: [De-Text](https://www.modelscope.cn/api/v1/models/iic/scepter/repo?Revision=master&FilePath=datasets%2Fdetext.zip), [Image2Hed](https://www.modelscope.cn/api/v1/models/iic/scepter/repo?Revision=master&FilePath=datasets%2Fhed_pair.zip), [image2depth](https://www.modelscope.cn/api/v1/models/iic/scepter/repo?Revision=master&FilePath=datasets%2Fimage2depth.zip), [depth2image](https://www.modelscope.cn/api/v1/models/iic/scepter/repo?Revision=master&FilePath=datasets%2Fdepth2image.zip)
- | Origin Image |
- Lowpoly |
- Colored Pencil Art |
- Watercolor |
- misc-disco |
+ De-Text
  Prompt: "Remove the texts" (Left: input Right: output) |
+ Image2Hed
  Prompt: "Convert to an edge map" (Left: input Right: output) |
-  |
-  |
-  |
-  |
-  |
+ Image2Depth
  Prompt: "Calculate the depth map" (Left: input Right: output) |
+ Depth2Image
  Prompt: "Convert depth map into color image" (Left: input Right: output) |
@@ -132,8 +113,6 @@ The startup of **SCEPTER Studio** eliminates the need for manual downloading and
Depending on the network and hardware situation, the initial startup usually requires 15-60 minutes, primarily involving the download and processing of SDv1.5, SDv2.1, and SDXL models.
Therefore, subsequent startups will become much faster (about one minute) as downloading is no longer required.
-To support the sharing and downloading of models,
-please make sure that you have installed **zip** and Git Large File Storage (**git lfs**).
### Usage Demo
| [Image Editing](https://www.modelscope.cn/api/v1/models/iic/scepter/repo?Revision=master&FilePath=assets%2Fscepter_studio%2Fimage_editing_20240419.webm) | [Training](https://www.modelscope.cn/api/v1/models/iic/scepter/repo?Revision=master&FilePath=assets%2Fscepter_studio%2Ftraining_20240419.webm) | [Model Sharing](https://www.modelscope.cn/api/v1/models/iic/scepter/repo?Revision=master&FilePath=assets%2Fscepter_studio%2Fmodel_sharing_20240419.webm) | [Model Inference](https://www.modelscope.cn/api/v1/models/iic/scepter/repo?Revision=master&FilePath=assets%2Fscepter_studio%2Fmodel_inference_20240419.webm) | [Data Management](https://www.modelscope.cn/api/v1/models/iic/scepter/repo?Revision=master&FilePath=assets%2Fscepter_studio%2Fdata_management_20240419.webm) |
diff --git a/scepter/methods/edit/edit_512_lora.yaml b/scepter/methods/edit/edit_512_lora.yaml
new file mode 100644
index 0000000..5f68804
--- /dev/null
+++ b/scepter/methods/edit/edit_512_lora.yaml
@@ -0,0 +1,250 @@
+ENV:
+ BACKEND: nccl
+SOLVER:
+ NAME: LatentDiffusionSolver
+ RESUME_FROM:
+ LOAD_MODEL_ONLY: True
+ USE_FSDP: False
+ SHARDING_STRATEGY:
+ USE_AMP: True
+ DTYPE: float16
+ CHANNELS_LAST: True
+ MAX_STEPS: 2000
+ MAX_EPOCHS: -1
+ NUM_FOLDS: 1
+ ACCU_STEP: 1
+ EVAL_INTERVAL: 100
+ #
+ WORK_DIR: ./cache/save_data/edit_512_lora
+ LOG_FILE: std_log.txt
+ #
+ FILE_SYSTEM:
+ NAME: "ModelscopeFs"
+ TEMP_DIR: "./cache/data"
+ #
+ TUNER:
+ -
+ NAME: SwiftLoRA
+ R: 64
+ LORA_ALPHA: 64
+ LORA_DROPOUT: 0.0
+ BIAS: "none"
+ TARGET_MODULES: model.*(to_q|to_k|to_v|to_out.0|net.0.proj|net.2)$
+ #
+ MODEL:
+ NAME: LatentDiffusionEdit
+ PARAMETERIZATION: eps
+ TIMESTEPS: 1000
+ MIN_SNR_GAMMA:
+ ZERO_TERMINAL_SNR: False
+ PRETRAINED_MODEL: ms://damo/stylebooth@models/stylebooth-tb-5000-0.bin
+ IGNORE_KEYS: [ ]
+ CONCAT_NO_SCALE_FACTOR: True
+ SCALE_FACTOR: 0.18215
+ SIZE_FACTOR: 8
+ # DEFAULT_N_PROMPT: 'lowres, error, worst quality, low quality, jpeg artifacts, ugly, duplicate, morbid, mutilated, out of frame, extra fingers, mutated hands, poorly drawn hands, poorly drawn face, mutation, deformed, blurry, dehydrated, bad anatomy, bad proportions, extra limbs, cloned face, disfigured, gross proportions, malformed limbs, missing arms, missing legs, extra arms, extra legs, fused fingers, too many fingers, long neck, username, watermark, signature'
+ DEFAULT_N_PROMPT:
+ SCHEDULE_ARGS:
+ "NAME": "scaled_linear"
+ "BETA_MIN": 0.00085
+ "BETA_MAX": 0.012
+ USE_EMA: False
+ #
+ DIFFUSION_MODEL:
+ NAME: DiffusionUNet
+ IN_CHANNELS: 8
+ OUT_CHANNELS: 4
+ MODEL_CHANNELS: 320
+ NUM_HEADS: 8
+ NUM_RES_BLOCKS: 2
+ ATTENTION_RESOLUTIONS: [ 4, 2, 1 ]
+ CHANNEL_MULT: [ 1, 2, 4, 4 ]
+ CONV_RESAMPLE: True
+ DIMS: 2
+ USE_CHECKPOINT: False
+ USE_SCALE_SHIFT_NORM: False
+ RESBLOCK_UPDOWN: False
+ USE_SPATIAL_TRANSFORMER: True
+ TRANSFORMER_DEPTH: 1
+ CONTEXT_DIM: 768
+ DISABLE_MIDDLE_SELF_ATTN: False
+ USE_LINEAR_IN_TRANSFORMER: False
+ PRETRAINED_MODEL:
+ IGNORE_KEYS: []
+ #
+ FIRST_STAGE_MODEL:
+ NAME: AutoencoderKL
+ EMBED_DIM: 4
+ PRETRAINED_MODEL:
+ IGNORE_KEYS: []
+ BATCH_SIZE: 4
+ #
+ ENCODER:
+ NAME: Encoder
+ CH: 128
+ OUT_CH: 3
+ NUM_RES_BLOCKS: 2
+ IN_CHANNELS: 3
+ ATTN_RESOLUTIONS: [ ]
+ CH_MULT: [ 1, 2, 4, 4 ]
+ Z_CHANNELS: 4
+ DOUBLE_Z: True
+ DROPOUT: 0.0
+ RESAMP_WITH_CONV: True
+ #
+ DECODER:
+ NAME: Decoder
+ CH: 128
+ OUT_CH: 3
+ NUM_RES_BLOCKS: 2
+ IN_CHANNELS: 3
+ ATTN_RESOLUTIONS: [ ]
+ CH_MULT: [ 1, 2, 4, 4 ]
+ Z_CHANNELS: 4
+ DROPOUT: 0.0
+ RESAMP_WITH_CONV: True
+ GIVE_PRE_END: False
+ TANH_OUT: False
+ #
+ TOKENIZER:
+ NAME: ClipTokenizer
+ PRETRAINED_PATH: ms://AI-ModelScope/clip-vit-large-patch14
+ LENGTH: 77
+ CLEAN: True
+ #
+ COND_STAGE_MODEL:
+ NAME: FrozenCLIPEmbedder
+ FREEZE: True
+ LAYER: last
+ PRETRAINED_MODEL: ms://AI-ModelScope/clip-vit-large-patch14
+ #
+ LOSS:
+ NAME: ReconstructLoss
+ LOSS_TYPE: l2
+ #
+ SAMPLE_ARGS:
+ SAMPLER: ddim
+ SAMPLE_STEPS: 50
+ SEED: 2023
+ GUIDE_SCALE: #7.5
+ image: 1.5
+ text: 7.5
+ GUIDE_RESCALE: 0.5
+ DISCRETIZATION: trailing
+ IMAGE_SIZE: [512, 512]
+ RUN_TRAIN_N: False
+ #
+ OPTIMIZER:
+ NAME: AdamW
+ LEARNING_RATE: 0.064
+ BETAS: [ 0.9, 0.999 ]
+ EPS: 1e-8
+ WEIGHT_DECAY: 1e-2
+ AMSGRAD: False
+ #
+ TRAIN_DATA:
+ NAME: ImageTextPairMSDataset
+ MODE: train
+ MS_DATASET_NAME: cache/datasets/hed_pair
+ MS_DATASET_NAMESPACE: ""
+ MS_DATASET_SPLIT: "train"
+ MS_DATASET_SUBNAME: ""
+ PROMPT_PREFIX: ""
+ REPLACE_STYLE: False
+ PIN_MEMORY: True
+ BATCH_SIZE: 1
+ NUM_WORKERS: 4
+ SAMPLER:
+ NAME: LoopSampler
+ TRANSFORMS:
+ - NAME: LoadImageFromFileList
+ FILE_KEYS: ['img_path', 'src_path']
+ RGB_ORDER: RGB
+ BACKEND: pillow
+ - NAME: FlexibleResize
+ INTERPOLATION: bilinear
+ SIZE: [ 512, 512 ]
+ INPUT_KEY: [ 'img', 'src' ]
+ OUTPUT_KEY: [ 'img', 'src' ]
+ BACKEND: pillow
+ - NAME: FlexibleCenterCrop
+ SIZE: [ 512, 512 ]
+ INPUT_KEY: [ 'img', 'src' ]
+ OUTPUT_KEY: [ 'img', 'src' ]
+ BACKEND: pillow
+ - NAME: ImageToTensor
+ INPUT_KEY: [ 'img', 'src' ]
+ OUTPUT_KEY: [ 'img', 'src' ]
+ BACKEND: pillow
+ - NAME: Normalize
+ MEAN: [ 0.5, 0.5, 0.5 ]
+ STD: [ 0.5, 0.5, 0.5 ]
+ INPUT_KEY: [ 'img', 'src' ]
+ OUTPUT_KEY: [ 'image', 'condition_cat' ]
+ BACKEND: torchvision
+ - NAME: Select
+ KEYS: [ 'image', 'condition_cat', 'prompt' ]
+ META_KEYS: [ 'data_key' ]
+ #
+ TRAIN_HOOKS:
+ -
+ NAME: BackwardHook
+ PRIORITY: 0
+ -
+ NAME: LogHook
+ LOG_INTERVAL: 50
+ -
+ NAME: CheckpointHook
+ INTERVAL: 1000
+ -
+ NAME: ProbeDataHook
+ PROB_INTERVAL: 100
+
+ EVAL_DATA:
+ NAME: Text2ImageDataset
+ MODE: eval
+ PROMPT_FILE:
+ PROMPT_DATA: [ "Convert to an edge map#;#cache/datasets/hed_pair/images/src_001.jpeg" ]
+ IMAGE_SIZE: [ 512, 512 ]
+ FIELDS: [ "prompt", "src_path" ]
+ DELIMITER: '#;#'
+ PROMPT_PREFIX: ''
+ PIN_MEMORY: True
+ BATCH_SIZE: 1
+ NUM_WORKERS: 4
+ TRANSFORMS:
+ - NAME: LoadImageFromFileList
+ FILE_KEYS: [ 'src_path' ]
+ RGB_ORDER: RGB
+ BACKEND: pillow
+ - NAME: FlexibleResize
+ INTERPOLATION: bilinear
+ SIZE: [ 512, 512 ]
+ INPUT_KEY: [ 'src' ]
+ OUTPUT_KEY: [ 'src' ]
+ BACKEND: pillow
+ - NAME: FlexibleCenterCrop
+ SIZE: [ 512, 512 ]
+ INPUT_KEY: [ 'src' ]
+ OUTPUT_KEY: [ 'src' ]
+ BACKEND: pillow
+ - NAME: ImageToTensor
+ INPUT_KEY: [ 'src' ]
+ OUTPUT_KEY: [ 'src' ]
+ BACKEND: pillow
+ - NAME: Normalize
+ MEAN: [ 0.5, 0.5, 0.5 ]
+ STD: [ 0.5, 0.5, 0.5 ]
+ INPUT_KEY: [ 'src' ]
+ OUTPUT_KEY: [ 'condition_cat' ]
+ BACKEND: torchvision
+ - NAME: Select
+ KEYS: [ 'condition_cat', 'prompt' ]
+ META_KEYS: [ 'image_size' ]
+ EVAL_HOOKS:
+ -
+ NAME: ProbeDataHook
+ PROB_INTERVAL: 100
+ SAVE_LAST: True
+ SAVE_NAME_PREFIX: 'step'
+ SAVE_PROBE_PREFIX: 'image'
diff --git a/scepter/methods/scedit/ctr/sd15_512_sce_ctr_hed.yaml b/scepter/methods/scedit/ctr/sd15_512_sce_ctr_hed.yaml
index ddb9a86..4e727e5 100644
--- a/scepter/methods/scedit/ctr/sd15_512_sce_ctr_hed.yaml
+++ b/scepter/methods/scedit/ctr/sd15_512_sce_ctr_hed.yaml
@@ -127,7 +127,7 @@ SOLVER:
DOWN_RATIO: 1.0
CONTROL_ANNO:
NAME: HedAnnotator
- PRETRAINED_MODEL: ms://damo/scepter_scedit@annotator/ckpts/ControlNetHED.pth
+ PRETRAINED_MODEL: ms://iic/scepter_scedit@annotator/ckpts/ControlNetHED.pth
#
SAMPLE_ARGS:
SAMPLER: ddim
diff --git a/scepter/methods/scedit/ctr/sd21_768_sce_ctr_pose.yaml b/scepter/methods/scedit/ctr/sd21_768_sce_ctr_pose.yaml
index bce9527..b3255bf 100644
--- a/scepter/methods/scedit/ctr/sd21_768_sce_ctr_pose.yaml
+++ b/scepter/methods/scedit/ctr/sd21_768_sce_ctr_pose.yaml
@@ -125,8 +125,8 @@ SOLVER:
DOWN_RATIO: 1.0
CONTROL_ANNO:
NAME: OpenposeAnnotator
- BODY_MODEL_PATH: ms://damo/scepter_scedit@annotator/ckpts/body_pose_model.pth
- HAND_MODEL_PATH: ms://damo/scepter_scedit@annotator/ckpts/hand_pose_model.pth
+ BODY_MODEL_PATH: ms://iic/scepter_scedit@annotator/ckpts/body_pose_model.pth
+ HAND_MODEL_PATH: ms://iic/scepter_scedit@annotator/ckpts/hand_pose_model.pth
#
SAMPLE_ARGS:
SAMPLER: ddim
diff --git a/scepter/methods/scedit/ctr/sdxl_1024_sce_ctr_depth.yaml b/scepter/methods/scedit/ctr/sdxl_1024_sce_ctr_depth.yaml
index af556a6..815ffce 100644
--- a/scepter/methods/scedit/ctr/sdxl_1024_sce_ctr_depth.yaml
+++ b/scepter/methods/scedit/ctr/sdxl_1024_sce_ctr_depth.yaml
@@ -241,7 +241,7 @@ SOLVER:
DOWN_RATIO: 1.0
CONTROL_ANNO:
NAME: MidasDetector
- PRETRAINED_MODEL: ms://damo/scepter_scedit@annotator/ckpts/dpt_hybrid-midas-501f0c75.pt
+ PRETRAINED_MODEL: ms://iic/scepter_scedit@annotator/ckpts/dpt_hybrid-midas-501f0c75.pt
#
SAMPLE_ARGS:
SAMPLER: ddim
diff --git a/scepter/methods/studio/extensions/controllers/official_controllers.yaml b/scepter/methods/studio/extensions/controllers/official_controllers.yaml
index 836bfed..7b17c99 100644
--- a/scepter/methods/studio/extensions/controllers/official_controllers.yaml
+++ b/scepter/methods/studio/extensions/controllers/official_controllers.yaml
@@ -5,59 +5,59 @@ CONTROLLERS:
DESCRIPTION:
BASE_MODEL: SD2.1
TYPE: Canny
- MODEL_PATH: ms://damo/scepter_scedit@controllable_model/SD2.1/canny_control/
+ MODEL_PATH: ms://iic/scepter_scedit@controllable_model/SD2.1/canny_control/
- NAME: openpose
NAME_ZH:
DESCRIPTION:
BASE_MODEL: SD2.1
TYPE: Openpose
- MODEL_PATH: ms://damo/scepter_scedit@controllable_model/SD2.1/pose_control/
+ MODEL_PATH: ms://iic/scepter_scedit@controllable_model/SD2.1/pose_control/
- NAME: color
NAME_ZH:
DESCRIPTION:
BASE_MODEL: SD2.1
TYPE: Color
- MODEL_PATH: ms://damo/scepter_scedit@controllable_model/SD2.1/color_control/
+ MODEL_PATH: ms://iic/scepter_scedit@controllable_model/SD2.1/color_control/
- NAME: hed
NAME_ZH:
DESCRIPTION:
BASE_MODEL: SD2.1
TYPE: Hed
- MODEL_PATH: ms://damo/scepter_scedit@controllable_model/SD2.1/hed_control
+ MODEL_PATH: ms://iic/scepter_scedit@controllable_model/SD2.1/hed_control
- NAME: depth
NAME_ZH:
DESCRIPTION:
BASE_MODEL: SD2.1
TYPE: Midas
- MODEL_PATH: ms://damo/scepter_scedit@controllable_model/SD2.1/depth_control
+ MODEL_PATH: ms://iic/scepter_scedit@controllable_model/SD2.1/depth_control
# SD_XL1.0
- NAME: canny
NAME_ZH:
DESCRIPTION:
BASE_MODEL: SD_XL1.0
TYPE: Canny
- MODEL_PATH: ms://damo/scepter_scedit@controllable_model/SD_XL1.0/canny_control
+ MODEL_PATH: ms://iic/scepter_scedit@controllable_model/SD_XL1.0/canny_control
- NAME: color
NAME_ZH:
DESCRIPTION:
BASE_MODEL: SD_XL1.0
TYPE: Color
- MODEL_PATH: ms://damo/scepter_scedit@controllable_model/SD_XL1.0/color_control
+ MODEL_PATH: ms://iic/scepter_scedit@controllable_model/SD_XL1.0/color_control
- NAME: depth
NAME_ZH:
DESCRIPTION:
BASE_MODEL: SD_XL1.0
TYPE: Midas
- MODEL_PATH: ms://damo/scepter_scedit@controllable_model/SD_XL1.0/depth_control
+ MODEL_PATH: ms://iic/scepter_scedit@controllable_model/SD_XL1.0/depth_control
- NAME: hed
NAME_ZH:
DESCRIPTION:
BASE_MODEL: SD_XL1.0
TYPE: Hed
- MODEL_PATH: ms://damo/scepter_scedit@controllable_model/SD_XL1.0/hed_control
+ MODEL_PATH: ms://iic/scepter_scedit@controllable_model/SD_XL1.0/hed_control
- NAME: openpose
NAME_ZH:
DESCRIPTION:
BASE_MODEL: SD_XL1.0
TYPE: Openpose
- MODEL_PATH: ms://damo/scepter_scedit@controllable_model/SD_XL1.0/pose_control
+ MODEL_PATH: ms://iic/scepter_scedit@controllable_model/SD_XL1.0/pose_control
diff --git a/scepter/methods/studio/extensions/mantra_book/mantra_book.yaml b/scepter/methods/studio/extensions/mantra_book/mantra_book.yaml
index bc3ce95..109f639 100644
--- a/scepter/methods/studio/extensions/mantra_book/mantra_book.yaml
+++ b/scepter/methods/studio/extensions/mantra_book/mantra_book.yaml
@@ -7,7 +7,7 @@ MANTRAS:
BASE_MODEL: SD_XL1.0
PROMPT: UHD, 8K, ultra detailed, a cinematic photograph of {prompt}, beautiful lighting, great composition
NEGATIVE_PROMPT: ugly, deformed, noisy, blurry, NSFW
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD_XL1.0/967b1852ea26dcf41360fc5542a0df6b.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD_XL1.0/967b1852ea26dcf41360fc5542a0df6b.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: Abstract Expressionism
@@ -17,7 +17,7 @@ MANTRAS:
BASE_MODEL: SD_XL1.0
PROMPT: Abstract Expressionism Art, {prompt}, High contrast, minimalistic, colorful, stark, dramatic, expressionism
NEGATIVE_PROMPT: ugly, deformed, noisy, blurry, low contrast, realism, photorealistic
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD_XL1.0/11667c7a085b53a6ffbb76b83788f8b5.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD_XL1.0/11667c7a085b53a6ffbb76b83788f8b5.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: Academia
@@ -27,7 +27,7 @@ MANTRAS:
BASE_MODEL: SD_XL1.0
PROMPT: Academia, {prompt}, preppy Ivy League style, stark, dramatic, chic boarding school, academia
NEGATIVE_PROMPT: ugly, deformed, noisy, blurry, low contrast, grunge, sloppy, unkempt
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD_XL1.0/c95197ef78312e2bbd45883bfbfa095a.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD_XL1.0/c95197ef78312e2bbd45883bfbfa095a.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: Action Figure
@@ -37,7 +37,7 @@ MANTRAS:
BASE_MODEL: SD_XL1.0
PROMPT: Action Figure, {prompt}, plastic collectable action figure, collectable toy action figure
NEGATIVE_PROMPT: ugly, deformed, noisy, blurry, low contrast
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD_XL1.0/24ac67fe21833fc1300fba09d5de6090.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD_XL1.0/24ac67fe21833fc1300fba09d5de6090.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: Adorable 3D Character
@@ -47,7 +47,7 @@ MANTRAS:
BASE_MODEL: SD_XL1.0
PROMPT: Adorable 3D Character, {prompt}, 3D render, adorable character, 3D art
NEGATIVE_PROMPT: ugly, deformed, noisy, blurry, low contrast, grunge, sloppy, unkempt, photograph, photo, realistic
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD_XL1.0/31a0ffbfc93b5b336a3bedc0a9985a02.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD_XL1.0/31a0ffbfc93b5b336a3bedc0a9985a02.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: Adorable Kawaii
@@ -57,7 +57,7 @@ MANTRAS:
BASE_MODEL: SD_XL1.0
PROMPT: Adorable Kawaii, {prompt}, pretty, cute, adorable, kawaii
NEGATIVE_PROMPT: ugly, deformed, noisy, blurry, low contrast, gothic, dark, moody, monochromatic
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD_XL1.0/82624c429d504c8290d4c9147be64029.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD_XL1.0/82624c429d504c8290d4c9147be64029.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: Art Deco
@@ -67,7 +67,7 @@ MANTRAS:
BASE_MODEL: SD_XL1.0
PROMPT: Art Deco, {prompt}, sleek, geometric forms, art deco style
NEGATIVE_PROMPT: ugly, deformed, noisy, blurry, low contrast
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD_XL1.0/c60ef3e7ada8774c92bb6e73c570f819.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD_XL1.0/c60ef3e7ada8774c92bb6e73c570f819.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: Art Nouveau
@@ -77,7 +77,7 @@ MANTRAS:
BASE_MODEL: SD_XL1.0
PROMPT: Art Nouveau, beautiful art, {prompt}, sleek, organic forms, long, sinuous, art nouveau style
NEGATIVE_PROMPT: ugly, deformed, noisy, blurry, low contrast, industrial, mechanical
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD_XL1.0/153d83e71fbf145d0aa5c41ecab0a505.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD_XL1.0/153d83e71fbf145d0aa5c41ecab0a505.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: Astral Aura
@@ -87,7 +87,7 @@ MANTRAS:
BASE_MODEL: SD_XL1.0
PROMPT: Astral Aura, {prompt}, astral, colorful aura, vibrant energy
NEGATIVE_PROMPT: ugly, deformed, noisy, blurry, low contrast
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD_XL1.0/e093c9d0f81037002e88f2a6c3f38a55.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD_XL1.0/e093c9d0f81037002e88f2a6c3f38a55.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: Avant-garde
@@ -97,7 +97,7 @@ MANTRAS:
BASE_MODEL: SD_XL1.0
PROMPT: Avant-garde, {prompt}, unusual, experimental, avant-garde art
NEGATIVE_PROMPT: ugly, deformed, noisy, blurry, low contrast
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD_XL1.0/9921d1944893466edfc6a060faf4070e.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD_XL1.0/9921d1944893466edfc6a060faf4070e.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: Baroque
@@ -107,7 +107,7 @@ MANTRAS:
BASE_MODEL: SD_XL1.0
PROMPT: Baroque, {prompt}, dramatic, exuberant, grandeur, baroque art
NEGATIVE_PROMPT: ugly, deformed, noisy, blurry, low contrast
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD_XL1.0/d8279be4bb34e5cb00a95919412154a4.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD_XL1.0/d8279be4bb34e5cb00a95919412154a4.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: Bauhaus-Style Poster
@@ -117,7 +117,7 @@ MANTRAS:
BASE_MODEL: SD_XL1.0
PROMPT: Bauhaus-Style Poster, {prompt}, simple geometric shapes, clean lines, primary colors, Bauhaus-Style Poster
NEGATIVE_PROMPT: ugly, deformed, noisy, blurry, low contrast
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD_XL1.0/4bd18b32c23e13b9e4fc7f65a1916eab.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD_XL1.0/4bd18b32c23e13b9e4fc7f65a1916eab.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: Blueprint Schematic Drawing
@@ -127,7 +127,7 @@ MANTRAS:
BASE_MODEL: SD_XL1.0
PROMPT: Blueprint Schematic Drawing, {prompt}, technical drawing, blueprint, schematic
NEGATIVE_PROMPT: ugly, deformed, noisy, blurry, low contrast
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD_XL1.0/62392c3715267f7162a37a8ff1caa3a1.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD_XL1.0/62392c3715267f7162a37a8ff1caa3a1.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: Caricature
@@ -137,7 +137,7 @@ MANTRAS:
BASE_MODEL: SD_XL1.0
PROMPT: Caricature, {prompt}, exaggerated, comical, caricature
NEGATIVE_PROMPT: ugly, deformed, noisy, blurry, low contrast, realistic
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD_XL1.0/894f40ed44b37c3372e6a22b8ae577a4.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD_XL1.0/894f40ed44b37c3372e6a22b8ae577a4.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: Cel Shaded Art
@@ -147,7 +147,7 @@ MANTRAS:
BASE_MODEL: SD_XL1.0
PROMPT: Cel Shaded Art, {prompt}, 2D, flat color, toon shading, cel shaded style
NEGATIVE_PROMPT: ugly, deformed, noisy, blurry, low contrast
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD_XL1.0/71c2e8a2cd1031b2bfae1640f7b72c88.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD_XL1.0/71c2e8a2cd1031b2bfae1640f7b72c88.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: Character Design Sheet
@@ -157,7 +157,7 @@ MANTRAS:
BASE_MODEL: SD_XL1.0
PROMPT: Character Design Sheet, {prompt}, character reference sheet, character turn around
NEGATIVE_PROMPT: ugly, deformed, noisy, blurry, low contrast
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD_XL1.0/eacf2134aa51d4b4a6f2f35cc170f315.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD_XL1.0/eacf2134aa51d4b4a6f2f35cc170f315.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: Classicism Art
@@ -167,7 +167,7 @@ MANTRAS:
BASE_MODEL: SD_XL1.0
PROMPT: Classicism Art, {prompt}, inspired by Roman and Greek culture, clarity, harmonious, classicism art
NEGATIVE_PROMPT: ugly, deformed, noisy, blurry, low contrast
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD_XL1.0/10025b4f3a09e6134086e3cdec4ef2c8.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD_XL1.0/10025b4f3a09e6134086e3cdec4ef2c8.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: Color Field Painting
@@ -177,7 +177,7 @@ MANTRAS:
BASE_MODEL: SD_XL1.0
PROMPT: Color Field Painting, {prompt}, abstract, simple, geometic, color field painting style
NEGATIVE_PROMPT: ugly, deformed, noisy, blurry, low contrast
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD_XL1.0/80e5b4075c572c04cbb4e48c37b8366b.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD_XL1.0/80e5b4075c572c04cbb4e48c37b8366b.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: Colored Pencil Art
@@ -187,7 +187,7 @@ MANTRAS:
BASE_MODEL: SD_XL1.0
PROMPT: Colored Pencil Art, {prompt}, colored pencil strokes, light color, visible paper texture, colored pencil art
NEGATIVE_PROMPT: ugly, deformed, noisy, blurry, low contrast
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD_XL1.0/9ae235d7f1a7c2a4edab52a5e9f9cbae.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD_XL1.0/9ae235d7f1a7c2a4edab52a5e9f9cbae.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: Conceptual Art
@@ -197,7 +197,7 @@ MANTRAS:
BASE_MODEL: SD_XL1.0
PROMPT: Conceptual Art, {prompt}, concept art
NEGATIVE_PROMPT: ugly, deformed, noisy, blurry, low contrast
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD_XL1.0/cf2e6781997c6842a16155fdff911ef8.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD_XL1.0/cf2e6781997c6842a16155fdff911ef8.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: Constructivism
@@ -207,7 +207,7 @@ MANTRAS:
BASE_MODEL: SD_XL1.0
PROMPT: Constructivism Art, {prompt}, minimalistic, geometric forms, constructivism art
NEGATIVE_PROMPT: ugly, deformed, noisy, blurry, low contrast
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD_XL1.0/d07feccabcadfd3310464bedba858bd1.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD_XL1.0/d07feccabcadfd3310464bedba858bd1.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: Cubism
@@ -217,7 +217,7 @@ MANTRAS:
BASE_MODEL: SD_XL1.0
PROMPT: Cubism Art, {prompt}, flat geometric forms, cubism art
NEGATIVE_PROMPT: ugly, deformed, noisy, blurry, low contrast
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD_XL1.0/aa8313f6c3cb9cafb9a7ec07db78df1c.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD_XL1.0/aa8313f6c3cb9cafb9a7ec07db78df1c.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: Dadaism
@@ -227,7 +227,7 @@ MANTRAS:
BASE_MODEL: SD_XL1.0
PROMPT: Dadaism Art, {prompt}, satirical, nonsensical, dadaism art
NEGATIVE_PROMPT: ugly, deformed, noisy, blurry, low contrast
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD_XL1.0/db27030369cb3ccb042b8aea6bf635e2.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD_XL1.0/db27030369cb3ccb042b8aea6bf635e2.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: Dark Fantasy
@@ -237,7 +237,7 @@ MANTRAS:
BASE_MODEL: SD_XL1.0
PROMPT: Dark Fantasy Art, {prompt}, dark, moody, dark fantasy style
NEGATIVE_PROMPT: ugly, deformed, noisy, blurry, low contrast, bright, sunny
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD_XL1.0/c88b6e641c707afc0c8d278ba7e1ac19.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD_XL1.0/c88b6e641c707afc0c8d278ba7e1ac19.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: Dark Moody Atmosphere
@@ -247,7 +247,7 @@ MANTRAS:
BASE_MODEL: SD_XL1.0
PROMPT: Dark Moody Atmosphere, {prompt}, dramatic, mysterious, dark moody atmosphere
NEGATIVE_PROMPT: ugly, deformed, noisy, blurry, low contrast, vibrant, colorful, bright
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD_XL1.0/3da915da2f5cedaf243e57e08163f35b.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD_XL1.0/3da915da2f5cedaf243e57e08163f35b.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: DMT Art Style
@@ -257,7 +257,7 @@ MANTRAS:
BASE_MODEL: SD_XL1.0
PROMPT: DMT Art Style, {prompt}, bright colors, surreal visuals, swirling patterns, DMT art style
NEGATIVE_PROMPT: ugly, deformed, noisy, blurry, low contrast
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD_XL1.0/d4a823d2bfa912ca4bb56d96f722f08f.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD_XL1.0/d4a823d2bfa912ca4bb56d96f722f08f.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: Doodle Art
@@ -267,7 +267,7 @@ MANTRAS:
BASE_MODEL: SD_XL1.0
PROMPT: Doodle Art Style, {prompt}, drawing, freeform, swirling patterns, doodle art style
NEGATIVE_PROMPT: ugly, deformed, noisy, blurry, low contrast
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD_XL1.0/8e1e21745c149b9634d3ce96fc7d505f.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD_XL1.0/8e1e21745c149b9634d3ce96fc7d505f.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: Double Exposure
@@ -277,7 +277,7 @@ MANTRAS:
BASE_MODEL: SD_XL1.0
PROMPT: Double Exposure Style, {prompt}, double image ghost effect, image combination, double exposure style
NEGATIVE_PROMPT: ugly, deformed, noisy, blurry, low contrast
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD_XL1.0/efd7aea4af1c4ede99fdfac17350e264.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD_XL1.0/efd7aea4af1c4ede99fdfac17350e264.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: Dripping Paint Splatter Art
@@ -287,7 +287,7 @@ MANTRAS:
BASE_MODEL: SD_XL1.0
PROMPT: Dripping Paint Splatter Art, {prompt}, dramatic, paint drips, splatters, dripping paint
NEGATIVE_PROMPT: ugly, deformed, noisy, blurry, low contrast
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD_XL1.0/69fd81f5983107acc3d334af62915851.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD_XL1.0/69fd81f5983107acc3d334af62915851.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: Expressionism
@@ -297,7 +297,7 @@ MANTRAS:
BASE_MODEL: SD_XL1.0
PROMPT: Expressionism Art Style, {prompt}, movement, contrast, emotional, exaggerated forms, expressionism art style
NEGATIVE_PROMPT: ugly, deformed, noisy, blurry, low contrast
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD_XL1.0/3dfa862bd1c80cec237e4a5717cea2bd.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD_XL1.0/3dfa862bd1c80cec237e4a5717cea2bd.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: Faded Polaroid Photo
@@ -307,7 +307,7 @@ MANTRAS:
BASE_MODEL: SD_XL1.0
PROMPT: Faded Polaroid Photo, {prompt}, analog, old faded photo, old polaroid
NEGATIVE_PROMPT: ugly, deformed, noisy, blurry, low contrast, vibrant, colorful
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD_XL1.0/f152edb4b3ca6248758b48115258ddfa.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD_XL1.0/f152edb4b3ca6248758b48115258ddfa.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: Fauvism
@@ -317,7 +317,7 @@ MANTRAS:
BASE_MODEL: SD_XL1.0
PROMPT: Fauvism Art, {prompt}, painterly, bold colors, textured brushwork, fauvism art
NEGATIVE_PROMPT: ugly, deformed, noisy, blurry, low contrast
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD_XL1.0/0506b350cadcf8fca42da764cd6fd5bf.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD_XL1.0/0506b350cadcf8fca42da764cd6fd5bf.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: Flat 2D Art
@@ -327,7 +327,7 @@ MANTRAS:
BASE_MODEL: SD_XL1.0
PROMPT: Flat 2D Art, {prompt}, simple flat color, 2-dimensional, Flat 2D Art Style
NEGATIVE_PROMPT: ugly, deformed, noisy, blurry, low contrast, 3D, photo, realistic
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD_XL1.0/940cfd34155634cf051e1b2942cca426.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD_XL1.0/940cfd34155634cf051e1b2942cca426.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: Fortnite Art Style
@@ -337,7 +337,7 @@ MANTRAS:
BASE_MODEL: SD_XL1.0
PROMPT: Fortnite Art Style, {prompt}, 3D cartoon, colorful, Fortnite Art Style
NEGATIVE_PROMPT: ugly, deformed, noisy, blurry, low contrast, photo, realistic
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD_XL1.0/156f8d943ff6d283f7a34f265daaa46c.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD_XL1.0/156f8d943ff6d283f7a34f265daaa46c.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: Futurism
@@ -347,7 +347,7 @@ MANTRAS:
BASE_MODEL: SD_XL1.0
PROMPT: Futurism Art Style, {prompt}, dynamic, dramatic, Futurism Art Style
NEGATIVE_PROMPT: ugly, deformed, noisy, blurry, low contrast
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD_XL1.0/855283cc2ab6283b627ef32d06a1ae0f.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD_XL1.0/855283cc2ab6283b627ef32d06a1ae0f.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: Glitchcore
@@ -357,7 +357,7 @@ MANTRAS:
BASE_MODEL: SD_XL1.0
PROMPT: Glitchcore Art Style, {prompt}, dynamic, dramatic, distorted, vibrant colors, glitchcore art style
NEGATIVE_PROMPT: ugly, deformed, noisy, blurry, low contrast
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD_XL1.0/9af62376402a85774179e82cf7e0dc59.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD_XL1.0/9af62376402a85774179e82cf7e0dc59.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: Glo-fi
@@ -367,7 +367,7 @@ MANTRAS:
BASE_MODEL: SD_XL1.0
PROMPT: Glo-fi Art Style, {prompt}, dynamic, dramatic, vibrant colors, glo-fi art style
NEGATIVE_PROMPT: ugly, deformed, noisy, blurry, low contrast
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD_XL1.0/275a6e2a3297cec57f9b5a4a17b0f749.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD_XL1.0/275a6e2a3297cec57f9b5a4a17b0f749.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: Googie Art Style
@@ -377,7 +377,7 @@ MANTRAS:
BASE_MODEL: SD_XL1.0
PROMPT: Googie Art Style, {prompt}, dynamic, dramatic, 1950's futurism, bold boomerang angles, Googie art style
NEGATIVE_PROMPT: ugly, deformed, noisy, blurry, low contrast
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD_XL1.0/08ee77586d7bec3f6bad7d60cee3c540.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD_XL1.0/08ee77586d7bec3f6bad7d60cee3c540.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: Graffiti Art
@@ -387,7 +387,7 @@ MANTRAS:
BASE_MODEL: SD_XL1.0
PROMPT: Graffiti Art Style, {prompt}, dynamic, dramatic, vibrant colors, graffiti art style
NEGATIVE_PROMPT: ugly, deformed, noisy, blurry, low contrast
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD_XL1.0/57b751b11564cb22cd49ef21f2004a5f.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD_XL1.0/57b751b11564cb22cd49ef21f2004a5f.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: Harlem Renaissance Art
@@ -397,7 +397,7 @@ MANTRAS:
BASE_MODEL: SD_XL1.0
PROMPT: Harlem Renaissance Art Style, {prompt}, dynamic, dramatic, 1920s African American culture, Harlem Renaissance art style
NEGATIVE_PROMPT: ugly, deformed, noisy, blurry, low contrast
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD_XL1.0/d09ea3dadcd0a15d8fa247ee74a75e6b.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD_XL1.0/d09ea3dadcd0a15d8fa247ee74a75e6b.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: High Fashion
@@ -407,7 +407,7 @@ MANTRAS:
BASE_MODEL: SD_XL1.0
PROMPT: High Fashion, {prompt}, dynamic, dramatic, haute couture, elegant, ornate clothing, High Fashion
NEGATIVE_PROMPT: ugly, deformed, noisy, blurry, low contrast
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD_XL1.0/868f752bbb5ef992a0be36d7d13de3be.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD_XL1.0/868f752bbb5ef992a0be36d7d13de3be.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: Idyllic
@@ -417,7 +417,7 @@ MANTRAS:
BASE_MODEL: SD_XL1.0
PROMPT: Idyllic, {prompt}, peaceful, happy, pleasant, happy, harmonious, picturesque, charming
NEGATIVE_PROMPT: ugly, deformed, noisy, blurry, low contrast
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD_XL1.0/55bab29eeb628e7a9ae018e45e7e24db.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD_XL1.0/55bab29eeb628e7a9ae018e45e7e24db.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: Impressionism
@@ -427,7 +427,7 @@ MANTRAS:
BASE_MODEL: SD_XL1.0
PROMPT: Impressionism, {prompt}, painterly, small brushstrokes, visible brushstrokes, impressionistic style
NEGATIVE_PROMPT: ugly, deformed, noisy, blurry, low contrast
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD_XL1.0/0312b673dc6858a9864d7f45f0c5c1fc.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD_XL1.0/0312b673dc6858a9864d7f45f0c5c1fc.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: Infographic Drawing
@@ -437,7 +437,7 @@ MANTRAS:
BASE_MODEL: SD_XL1.0
PROMPT: Infographic Drawing, {prompt}, diagram, infographic
NEGATIVE_PROMPT: ugly, deformed, noisy, blurry, low contrast
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD_XL1.0/b09151f6e0883d26056b80fcc9d398bb.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD_XL1.0/b09151f6e0883d26056b80fcc9d398bb.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: Ink Dripping Drawing
@@ -447,7 +447,7 @@ MANTRAS:
BASE_MODEL: SD_XL1.0
PROMPT: Ink Dripping Drawing, {prompt}, ink drawing, dripping ink
NEGATIVE_PROMPT: ugly, deformed, noisy, blurry, low contrast, colorful, vibrant
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD_XL1.0/5f09912a07e915250a96b2023db15821.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD_XL1.0/5f09912a07e915250a96b2023db15821.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: Japanese Ink Drawing
@@ -457,7 +457,7 @@ MANTRAS:
BASE_MODEL: SD_XL1.0
PROMPT: Japanese Ink Drawing, {prompt}, ink drawing, inkwash, Japanese Ink Drawing
NEGATIVE_PROMPT: ugly, deformed, noisy, blurry, low contrast, colorful, vibrant
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD_XL1.0/633ad971ff30fe4717782fc6b5f92fda.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD_XL1.0/633ad971ff30fe4717782fc6b5f92fda.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: Knolling Photography
@@ -467,7 +467,7 @@ MANTRAS:
BASE_MODEL: SD_XL1.0
PROMPT: Knolling Photography, {prompt}, flat lay photography, object arrangment, knolling photography
NEGATIVE_PROMPT: ugly, deformed, noisy, blurry, low contrast
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD_XL1.0/89a205be3a276349ecddf0eeca43ed80.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD_XL1.0/89a205be3a276349ecddf0eeca43ed80.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: Light Cheery Atmosphere
@@ -477,7 +477,7 @@ MANTRAS:
BASE_MODEL: SD_XL1.0
PROMPT: Light Cheery Atmosphere, {prompt}, happy, joyful, cheerful, carefree, gleeful, lighthearted, pleasant atmosphere
NEGATIVE_PROMPT: ugly, deformed, noisy, blurry, low contrast, monochromatic, dark, moody
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD_XL1.0/0913ac9815f892411f8327a630f51ae4.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD_XL1.0/0913ac9815f892411f8327a630f51ae4.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: Logo Design
@@ -487,7 +487,7 @@ MANTRAS:
BASE_MODEL: SD_XL1.0
PROMPT: Logo Design, {prompt}, dynamic graphic art, vector art, minimalist, professional logo design
NEGATIVE_PROMPT: ugly, deformed, noisy, blurry, low contrast
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD_XL1.0/9aa040b0c60d289da9610c91ad9b7c7e.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD_XL1.0/9aa040b0c60d289da9610c91ad9b7c7e.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: Luxurious Elegance
@@ -497,7 +497,7 @@ MANTRAS:
BASE_MODEL: SD_XL1.0
PROMPT: Luxurious Elegance, {prompt}, extravagant, ornate, designer, opulent, picturesque, lavish
NEGATIVE_PROMPT: ugly, deformed, noisy, blurry, low contrast
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD_XL1.0/e796e84ed745150f0d4e28e0ac99b4cf.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD_XL1.0/e796e84ed745150f0d4e28e0ac99b4cf.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: Macro Photography
@@ -507,7 +507,7 @@ MANTRAS:
BASE_MODEL: SD_XL1.0
PROMPT: Macro Photography, {prompt}, close-up, macro 100mm, macro photography
NEGATIVE_PROMPT: ugly, deformed, noisy, blurry, low contrast
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD_XL1.0/92e8b84379828f38e3d01c7272f41b0b.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD_XL1.0/92e8b84379828f38e3d01c7272f41b0b.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: Mandola Art
@@ -517,7 +517,7 @@ MANTRAS:
BASE_MODEL: SD_XL1.0
PROMPT: Mandola art style, {prompt}, complex, circular design, mandola
NEGATIVE_PROMPT: ugly, deformed, noisy, blurry, low contrast
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD_XL1.0/dbf5ca944d9213c3181348666cf337ac.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD_XL1.0/dbf5ca944d9213c3181348666cf337ac.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: Marker Drawing
@@ -527,7 +527,7 @@ MANTRAS:
BASE_MODEL: SD_XL1.0
PROMPT: Marker Drawing, {prompt}, bold marker lines, visibile paper texture, marker drawing
NEGATIVE_PROMPT: ugly, deformed, noisy, blurry, low contrast, photograph, realistic
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD_XL1.0/c558745f7a4b77d7ca9a428d8874efe4.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD_XL1.0/c558745f7a4b77d7ca9a428d8874efe4.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: Medievalism
@@ -537,7 +537,7 @@ MANTRAS:
BASE_MODEL: SD_XL1.0
PROMPT: Medievalism, {prompt}, inspired by The Middle Ages, medieval art, elaborate patterns and decoration, Medievalism
NEGATIVE_PROMPT: ugly, deformed, noisy, blurry, low contrast
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD_XL1.0/26aa6244359a4fd87f6438a341057901.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD_XL1.0/26aa6244359a4fd87f6438a341057901.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: Minimalism
@@ -547,7 +547,7 @@ MANTRAS:
BASE_MODEL: SD_XL1.0
PROMPT: Minimalism, {prompt}, abstract, simple geometic shapes, hard edges, sleek contours, Minimalism
NEGATIVE_PROMPT: ugly, deformed, noisy, blurry, low contrast
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD_XL1.0/dce92a90da6299339cf8e9ebc6596ea2.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD_XL1.0/dce92a90da6299339cf8e9ebc6596ea2.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: Neo-Baroque
@@ -557,7 +557,7 @@ MANTRAS:
BASE_MODEL: SD_XL1.0
PROMPT: Neo-Baroque, {prompt}, ornate and elaborate, dynaimc, Neo-Baroque
NEGATIVE_PROMPT: ugly, deformed, noisy, blurry, low contrast
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD_XL1.0/9b6cd8751b18c65b259769b44cfac351.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD_XL1.0/9b6cd8751b18c65b259769b44cfac351.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: Neo-Byzantine
@@ -567,7 +567,7 @@ MANTRAS:
BASE_MODEL: SD_XL1.0
PROMPT: Neo-Byzantine, {prompt}, grand decorative religious style, Orthodox Christian inspired, Neo-Byzantine
NEGATIVE_PROMPT: ugly, deformed, noisy, blurry, low contrast
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD_XL1.0/99c67768869b546bf527ef0b1735c0d5.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD_XL1.0/99c67768869b546bf527ef0b1735c0d5.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: Neo-Futurism
@@ -577,7 +577,7 @@ MANTRAS:
BASE_MODEL: SD_XL1.0
PROMPT: Neo-Futurism, {prompt}, high-tech, curves, spirals, flowing lines, idealistic future, Neo-Futurism
NEGATIVE_PROMPT: ugly, deformed, noisy, blurry, low contrast
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD_XL1.0/bada1534f7a60187f584febcc92f40d1.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD_XL1.0/bada1534f7a60187f584febcc92f40d1.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: Neo-Impressionism
@@ -587,7 +587,7 @@ MANTRAS:
BASE_MODEL: SD_XL1.0
PROMPT: Neo-Impressionism, {prompt}, tiny dabs of color, Pointillism, painterly, Neo-Impressionism
NEGATIVE_PROMPT: ugly, deformed, noisy, blurry, low contrast, photograph, realistic
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD_XL1.0/6bafeac67ce2679b64a86ee1023b53c9.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD_XL1.0/6bafeac67ce2679b64a86ee1023b53c9.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: Neo-Rococo
@@ -597,7 +597,7 @@ MANTRAS:
BASE_MODEL: SD_XL1.0
PROMPT: Neo-Rococo, {prompt}, curved forms, naturalistic ornamentation, elaborate, decorative, gaudy, Neo-Rococo
NEGATIVE_PROMPT: ugly, deformed, noisy, blurry, low contrast
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD_XL1.0/9ab0ad2b88e03933ea479357ff1e4435.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD_XL1.0/9ab0ad2b88e03933ea479357ff1e4435.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: Neoclassicism
@@ -607,7 +607,7 @@ MANTRAS:
BASE_MODEL: SD_XL1.0
PROMPT: Neoclassicism, {prompt}, ancient Rome and Greece inspired, idealic, sober colors, Neoclassicism
NEGATIVE_PROMPT: ugly, deformed, noisy, blurry, low contrast
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD_XL1.0/83a4e3a2ca577400b05a81b5b2b8650e.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD_XL1.0/83a4e3a2ca577400b05a81b5b2b8650e.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: Op Art
@@ -617,7 +617,7 @@ MANTRAS:
BASE_MODEL: SD_XL1.0
PROMPT: Op Art, {prompt}, optical illusion, abstract, geometric pattern, impression of movement, Op Art
NEGATIVE_PROMPT: ugly, deformed, noisy, blurry, low contrast
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD_XL1.0/5f11132803dff2de5213293b91d407d7.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD_XL1.0/5f11132803dff2de5213293b91d407d7.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: Ornate and Intricate
@@ -627,7 +627,7 @@ MANTRAS:
BASE_MODEL: SD_XL1.0
PROMPT: Ornate and Intricate, {prompt}, decorative, highly detailed, elaborate, ornate, intricate
NEGATIVE_PROMPT: ugly, deformed, noisy, blurry, low contrast
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD_XL1.0/24b895dca946c8765ad9fa38f720f671.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD_XL1.0/24b895dca946c8765ad9fa38f720f671.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: Pencil Sketch Drawing
@@ -637,7 +637,7 @@ MANTRAS:
BASE_MODEL: SD_XL1.0
PROMPT: Pencil Sketch Drawing, {prompt}, black and white drawing, graphite drawing
NEGATIVE_PROMPT: ugly, deformed, noisy, blurry, low contrast
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD_XL1.0/a9056e1eac85e5e4fe96a93917d4cce4.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD_XL1.0/a9056e1eac85e5e4fe96a93917d4cce4.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: Pop Art 2
@@ -647,7 +647,7 @@ MANTRAS:
BASE_MODEL: SD_XL1.0
PROMPT: Pop Art, {prompt}, vivid colors, flat color, 2D, strong lines, Pop Art
NEGATIVE_PROMPT: ugly, deformed, noisy, blurry, low contrast, photo, realistic
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD_XL1.0/83c4c06c70a48da6558ff970ece247b6.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD_XL1.0/83c4c06c70a48da6558ff970ece247b6.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: Rococo
@@ -657,7 +657,7 @@ MANTRAS:
BASE_MODEL: SD_XL1.0
PROMPT: Rococo, {prompt}, flamboyant, pastel colors, curved lines, elaborate detail, Rococo
NEGATIVE_PROMPT: ugly, deformed, noisy, blurry, low contrast
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD_XL1.0/4850170f410e10bc833b7d00324dff18.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD_XL1.0/4850170f410e10bc833b7d00324dff18.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: Silhouette Art
@@ -667,7 +667,7 @@ MANTRAS:
BASE_MODEL: SD_XL1.0
PROMPT: Silhouette Art, {prompt}, high contrast, well defined, Silhouette Art
NEGATIVE_PROMPT: ugly, deformed, noisy, blurry, low contrast
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD_XL1.0/568777f447fc02510b618152726d5002.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD_XL1.0/568777f447fc02510b618152726d5002.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: Simple Vector Art
@@ -677,7 +677,7 @@ MANTRAS:
BASE_MODEL: SD_XL1.0
PROMPT: Simple Vector Art, {prompt}, 2D flat, simple shapes, minimalistic, professional graphic, flat color, high contrast, Simple Vector Art
NEGATIVE_PROMPT: ugly, deformed, noisy, blurry, low contrast, 3D, photo, realistic
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD_XL1.0/24d2ab1fd175bf4e9ef3a8327651dd4b.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD_XL1.0/24d2ab1fd175bf4e9ef3a8327651dd4b.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: Sketchup
@@ -687,7 +687,7 @@ MANTRAS:
BASE_MODEL: SD_XL1.0
PROMPT: Sketchup, {prompt}, CAD, professional design, Sketchup
NEGATIVE_PROMPT: ugly, deformed, noisy, blurry, low contrast, photo, photograph
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD_XL1.0/337dca7ac49cf7820c85ede096ebde9c.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD_XL1.0/337dca7ac49cf7820c85ede096ebde9c.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: Steampunk 2
@@ -697,7 +697,7 @@ MANTRAS:
BASE_MODEL: SD_XL1.0
PROMPT: Steampunk, {prompt}, retrofuturistic science fantasy, steam-powered tech, vintage industry, gears, neo-victorian, steampunk
NEGATIVE_PROMPT: ugly, deformed, noisy, blurry, low contrast
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD_XL1.0/07d7b27cd73f2d43684003563511c15b.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD_XL1.0/07d7b27cd73f2d43684003563511c15b.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: Surrealism
@@ -707,7 +707,7 @@ MANTRAS:
BASE_MODEL: SD_XL1.0
PROMPT: Surrealism, {prompt}, expressive, dramatic, organic lines and forms, dreamlike and mysterious, Surrealism
NEGATIVE_PROMPT: ugly, deformed, noisy, blurry, low contrast, realistic
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD_XL1.0/38bae70377b323d1a5f5756d7e04886d.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD_XL1.0/38bae70377b323d1a5f5756d7e04886d.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: Suprematism
@@ -717,7 +717,7 @@ MANTRAS:
BASE_MODEL: SD_XL1.0
PROMPT: Suprematism, {prompt}, abstract, limited color palette, geometric forms, Suprematism
NEGATIVE_PROMPT: ugly, deformed, noisy, blurry, low contrast, realistic
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD_XL1.0/c48fbd8cedee84d06b4d875d566f1bb8.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD_XL1.0/c48fbd8cedee84d06b4d875d566f1bb8.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: Terragen
@@ -727,7 +727,7 @@ MANTRAS:
BASE_MODEL: SD_XL1.0
PROMPT: Terragen, {prompt}, beautiful massive landscape, epic scenery, Terragen
NEGATIVE_PROMPT: ugly, deformed, noisy, blurry, low contrast
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD_XL1.0/8974cd8e0f38fb7aac117cf0983fc36d.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD_XL1.0/8974cd8e0f38fb7aac117cf0983fc36d.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: Tranquil Relaxing Atmosphere
@@ -737,7 +737,7 @@ MANTRAS:
BASE_MODEL: SD_XL1.0
PROMPT: Tranquil Relaxing Atmosphere, {prompt}, calming style, soothing colors, peaceful, idealic, Tranquil Relaxing Atmosphere
NEGATIVE_PROMPT: ugly, deformed, noisy, blurry, low contrast, oversaturated
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD_XL1.0/69170d8443a67be4210af8d5558779c2.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD_XL1.0/69170d8443a67be4210af8d5558779c2.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: Sticker Designs
@@ -747,7 +747,7 @@ MANTRAS:
BASE_MODEL: SD_XL1.0
PROMPT: Vector Art Stickers, {prompt}, professional vector design, sticker designs, Sticker Sheet
NEGATIVE_PROMPT: ugly, deformed, noisy, blurry, low contrast
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD_XL1.0/2d1e9867058db2c57f2fe47530de3243.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD_XL1.0/2d1e9867058db2c57f2fe47530de3243.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: Vibrant Rim Light
@@ -757,7 +757,7 @@ MANTRAS:
BASE_MODEL: SD_XL1.0
PROMPT: Vibrant Rim Light, {prompt}, bright rim light, high contrast, bold edge light
NEGATIVE_PROMPT: ugly, deformed, noisy, blurry, low contrast
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD_XL1.0/bb08936ca184daba2b30b4a9efb308f2.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD_XL1.0/bb08936ca184daba2b30b4a9efb308f2.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: Volumetric Lighting
@@ -767,7 +767,7 @@ MANTRAS:
BASE_MODEL: SD_XL1.0
PROMPT: Volumetric Lighting, {prompt}, light depth, dramatic atmospheric lighting, Volumetric Lighting
NEGATIVE_PROMPT: ugly, deformed, noisy, blurry, low contrast
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD_XL1.0/bbad7964a2ae70b66c72804273f11e74.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD_XL1.0/bbad7964a2ae70b66c72804273f11e74.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: Watercolor 2
@@ -777,7 +777,7 @@ MANTRAS:
BASE_MODEL: SD_XL1.0
PROMPT: Watercolor style painting, {prompt}, visible paper texture, colorwash, watercolor
NEGATIVE_PROMPT: ugly, deformed, noisy, blurry, low contrast, photo, realistic
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD_XL1.0/8859d532ae5901cc8457d6118fb9b7da.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD_XL1.0/8859d532ae5901cc8457d6118fb9b7da.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: Whimsical and Playful
@@ -787,7 +787,7 @@ MANTRAS:
BASE_MODEL: SD_XL1.0
PROMPT: Whimsical and Playful, {prompt}, imaginative, fantastical, bight colors, stylized, happy, Whimsical and Playful
NEGATIVE_PROMPT: ugly, deformed, noisy, blurry, low contrast, drab, boring, moody
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD_XL1.0/af2267f1942e870be957c37cd73d4359.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD_XL1.0/af2267f1942e870be957c37cd73d4359.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: Fooocus Enhance
@@ -800,7 +800,7 @@ MANTRAS:
}
NEGATIVE_PROMPT: (worst quality, low quality, normal quality, lowres, low details, oversaturated, undersaturated, overexposed, underexposed, grayscale, bw, bad photo, bad photography, bad art:1.4), (watermark, signature, text font, username, error, logo, words, letters, digits, autograph, trademark, name:1.2), (blur, blurry, grainy), morbid, ugly, asymmetrical, mutated malformed, mutilated, poorly lit, bad shadow, draft, cropped, out of frame, cut off, censored, jpeg artifacts, out of focus, glitch, duplicate, (airbrushed, cartoon, anime, semi-realistic, cgi, render, blender, digital art, manga, amateur:1.3), (3D ,3D Game, 3D Game Scene, 3D Character:1.1), (bad hands, bad anatomy, bad body, bad face, bad teeth, bad arms, bad legs, deformities:1.3)
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD_XL1.0/e501823a21bbda56592055c9613c1dbb.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD_XL1.0/e501823a21bbda56592055c9613c1dbb.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: Fooocus Sharp
@@ -810,7 +810,7 @@ MANTRAS:
BASE_MODEL: SD_XL1.0
PROMPT: cinematic still {prompt} . emotional, harmonious, vignette, 4k epic detailed, shot on kodak, 35mm photo, sharp focus, high budget, cinemascope, moody, epic, gorgeous, film grain, grainy
NEGATIVE_PROMPT: anime, cartoon, graphic, (blur, blurry, bokeh), text, painting, crayon, graphite, abstract, glitch, deformed, mutated, ugly, disfigured
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD_XL1.0/393fb7aab57992a1c3af7cbad01c1001.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD_XL1.0/393fb7aab57992a1c3af7cbad01c1001.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: Fooocus Masterpiece
@@ -820,7 +820,7 @@ MANTRAS:
BASE_MODEL: SD_XL1.0
PROMPT: (masterpiece), (best quality), (ultra-detailed), {prompt}, illustration, disheveled hair, detailed eyes, perfect composition, moist skin, intricate details, earrings, by wlop
NEGATIVE_PROMPT: longbody, lowres, bad anatomy, bad hands, missing fingers, pubic hair,extra digit, fewer digits, cropped, worst quality, low quality
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD_XL1.0/9e27c3d1475dacae0ee45cea783aaaf5.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD_XL1.0/9e27c3d1475dacae0ee45cea783aaaf5.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: Fooocus Photograph
@@ -830,7 +830,7 @@ MANTRAS:
BASE_MODEL: SD_XL1.0
PROMPT: photograph {prompt}, 50mm . cinematic 4k epic detailed 4k epic detailed photograph shot on kodak detailed cinematic hbo dark moody, 35mm photo, grainy, vignette, vintage, Kodachrome, Lomography, stained, highly detailed, found footage
NEGATIVE_PROMPT: Brad Pitt, bokeh, depth of field, blurry, cropped, regular face, saturated, contrast, deformed iris, deformed pupils, semi-realistic, cgi, 3d, render, sketch, cartoon, drawing, anime, text, cropped, out of frame, worst quality, low quality, jpeg artifacts, ugly, duplicate, morbid, mutilated, extra fingers, mutated hands, poorly drawn hands, poorly drawn face, mutation, deformed, dehydrated, bad anatomy, bad proportions, extra limbs, cloned face, disfigured, gross proportions, malformed limbs, missing arms, missing legs, extra arms, extra legs, fused fingers, too many fingers, long neck
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD_XL1.0/8b2ea41ec15bf1a16d6a837d46dbc2ac.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD_XL1.0/8b2ea41ec15bf1a16d6a837d46dbc2ac.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: Fooocus Negative
@@ -843,7 +843,7 @@ MANTRAS:
}
NEGATIVE_PROMPT: deformed, bad anatomy, disfigured, poorly drawn face, mutated, extra limb, ugly, poorly drawn hands, missing limb, floating limbs, disconnected limbs, disconnected head, malformed hands, long neck, mutated hands and fingers, bad hands, missing fingers, cropped, worst quality, low quality, mutation, poorly drawn, huge calf, bad hands, fused hand, missing hand, disappearing arms, disappearing thigh, disappearing calf, disappearing legs, missing fingers, fused fingers, abnormal eye proportion, Abnormal hands, abnormal legs, abnormal feet, abnormal fingers, drawing, painting, crayon, sketch, graphite, impressionist, noisy, blurry, soft, deformed, ugly, anime, cartoon, graphic, text, painting, crayon, graphite, abstract, glitch
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD_XL1.0/daaec2962291137532189b8a31012532.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD_XL1.0/daaec2962291137532189b8a31012532.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: Fooocus Cinematic
@@ -853,7 +853,7 @@ MANTRAS:
BASE_MODEL: SD_XL1.0
PROMPT: cinematic still {prompt} . emotional, harmonious, vignette, highly detailed, high budget, bokeh, cinemascope, moody, epic, gorgeous, film grain, grainy
NEGATIVE_PROMPT: anime, cartoon, graphic, text, painting, crayon, graphite, abstract, glitch, deformed, mutated, ugly, disfigured
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD_XL1.0/adc4d52aa5b0afca0593a475ddc9d055.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD_XL1.0/adc4d52aa5b0afca0593a475ddc9d055.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: mre-cinematic-dynamic
@@ -863,7 +863,7 @@ MANTRAS:
BASE_MODEL: SD_XL1.0
PROMPT: epic cinematic shot of dynamic {prompt} in motion. main subject of high budget action movie. raw photo, motion blur. best quality, high resolution
NEGATIVE_PROMPT: static, still, motionless, sluggish. drawing, painting, illustration, rendered. low budget. low quality, low resolution
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD_XL1.0/bd2470068e09d9f1b7d0a690c879b3ce.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD_XL1.0/bd2470068e09d9f1b7d0a690c879b3ce.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: mre-spontaneous-picture
@@ -873,7 +873,7 @@ MANTRAS:
BASE_MODEL: SD_XL1.0
PROMPT: spontaneous picture of {prompt}, taken by talented amateur. best quality, high resolution. magical moment, natural look. simple but good looking
NEGATIVE_PROMPT: overthinked. low quality, low resolution
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD_XL1.0/19ad6082cee5516ce330641b515467ef.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD_XL1.0/19ad6082cee5516ce330641b515467ef.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: mre-artistic-vision
@@ -883,7 +883,7 @@ MANTRAS:
BASE_MODEL: SD_XL1.0
PROMPT: powerful artistic vision of {prompt}. breathtaking masterpiece made by great artist. best quality, high resolution
NEGATIVE_PROMPT: insignificant, flawed, made by bad artist. low quality, low resolution
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD_XL1.0/95af94e50bcb91ae8fd2914a3bf13f1e.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD_XL1.0/95af94e50bcb91ae8fd2914a3bf13f1e.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: mre-dark-dream
@@ -893,7 +893,7 @@ MANTRAS:
BASE_MODEL: SD_XL1.0
PROMPT: dark and unsettling dream showing {prompt}. best quality, high resolution. created by genius but depressed mad artist. grim beauty
NEGATIVE_PROMPT: naive, cheerful. comfortable, casual, boring, cliche. low quality, low resolution
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD_XL1.0/572c8c26cc20ac0ee66684e3c5ee4e8c.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD_XL1.0/572c8c26cc20ac0ee66684e3c5ee4e8c.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: mre-gloomy-art
@@ -903,7 +903,7 @@ MANTRAS:
BASE_MODEL: SD_XL1.0
PROMPT: astonishing gloomy art made mainly of shadows and lighting, forming {prompt}. masterful usage of lighting, shadows and chiaroscuro. made by black-hearted artist, drawing from darkness. best quality, high resolution
NEGATIVE_PROMPT: low quality, low resolution
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD_XL1.0/66cbdf819e930f7580bd66a41bde7dfe.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD_XL1.0/66cbdf819e930f7580bd66a41bde7dfe.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: mre-bad-dream
@@ -913,7 +913,7 @@ MANTRAS:
BASE_MODEL: SD_XL1.0
PROMPT: picture from really bad dream about terrifying {prompt}, true horror. bone-chilling vision. mad world that shouldn't exist. best quality, high resolution
NEGATIVE_PROMPT: nice dream, pleasant experience. low quality, low resolution
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD_XL1.0/b92b2bbfc400db9204fe8249354132b4.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD_XL1.0/b92b2bbfc400db9204fe8249354132b4.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: mre-underground
@@ -923,7 +923,7 @@ MANTRAS:
BASE_MODEL: SD_XL1.0
PROMPT: uncanny caliginous vision of {prompt}, created by remarkable underground artist. best quality, high resolution. raw and brutal art, careless but impressive style. inspired by darkness and chaos
NEGATIVE_PROMPT: photography, mainstream, civilized. low quality, low resolution
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD_XL1.0/8d46eca558d791a1f2b41b0ed7bba4d2.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD_XL1.0/8d46eca558d791a1f2b41b0ed7bba4d2.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: mre-surreal-painting
@@ -933,7 +933,7 @@ MANTRAS:
BASE_MODEL: SD_XL1.0
PROMPT: surreal painting representing strange vision of {prompt}. harmonious madness, synergy with chance. unique artstyle, mindbending art, magical surrealism. best quality, high resolution
NEGATIVE_PROMPT: photography, illustration, drawing. realistic, possible. logical, sane. low quality, low resolution
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD_XL1.0/58858425832b10d233f7887af4a2022f.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD_XL1.0/58858425832b10d233f7887af4a2022f.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: mre-dynamic-illustration
@@ -943,7 +943,7 @@ MANTRAS:
BASE_MODEL: SD_XL1.0
PROMPT: insanely dynamic illustration of {prompt}. best quality, high resolution. crazy artstyle, careless brushstrokes, emotional and fun
NEGATIVE_PROMPT: photography, realistic. static, still, slow, boring. low quality, low resolution
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD_XL1.0/8bf9861d4d3fadcdb98ceec88a941582.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD_XL1.0/8bf9861d4d3fadcdb98ceec88a941582.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: mre-undead-art
@@ -953,7 +953,7 @@ MANTRAS:
BASE_MODEL: SD_XL1.0
PROMPT: long forgotten art created by undead artist illustrating {prompt}, tribute to the death and decay. miserable art of the damned. wretched and decaying world. best quality, high resolution
NEGATIVE_PROMPT: alive, playful, living. low quality, low resolution
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD_XL1.0/fada50979ca180006eba9a45a00f3675.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD_XL1.0/fada50979ca180006eba9a45a00f3675.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: mre-elemental-art
@@ -963,7 +963,7 @@ MANTRAS:
BASE_MODEL: SD_XL1.0
PROMPT: art illustrating insane amounts of raging elemental energy turning into {prompt}, avatar of elements. magical surrealism, wizardry. best quality, high resolution
NEGATIVE_PROMPT: photography, realistic, real. low quality, low resolution
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD_XL1.0/5895d78cf58c1ca05178991f37cc48ff.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD_XL1.0/5895d78cf58c1ca05178991f37cc48ff.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: mre-space-art
@@ -973,7 +973,7 @@ MANTRAS:
BASE_MODEL: SD_XL1.0
PROMPT: winner of inter-galactic art contest illustrating {prompt}, symbol of the interstellar singularity. best quality, high resolution. artstyle previously unseen in the whole galaxy
NEGATIVE_PROMPT: created by human race, low quality, low resolution
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD_XL1.0/e9815495587895a21d970728474c8be6.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD_XL1.0/e9815495587895a21d970728474c8be6.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: mre-ancient-illustration
@@ -983,7 +983,7 @@ MANTRAS:
BASE_MODEL: SD_XL1.0
PROMPT: sublime ancient illustration of {prompt}, predating human civilization. crude and simple, but also surprisingly beautiful artwork, made by genius primeval artist. best quality, high resolution
NEGATIVE_PROMPT: low quality, low resolution
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD_XL1.0/151e07c17a89ebaf7688905ea0199862.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD_XL1.0/151e07c17a89ebaf7688905ea0199862.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: mre-brave-art
@@ -993,7 +993,7 @@ MANTRAS:
BASE_MODEL: SD_XL1.0
PROMPT: brave, shocking, and brutally true art showing {prompt}. inspired by courage and unlimited creativity. truth found in chaos. best quality, high resolution
NEGATIVE_PROMPT: low quality, low resolution
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD_XL1.0/1a068f2728327d21ebb99285c2ce1370.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD_XL1.0/1a068f2728327d21ebb99285c2ce1370.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: mre-heroic-fantasy
@@ -1003,7 +1003,7 @@ MANTRAS:
BASE_MODEL: SD_XL1.0
PROMPT: heroic fantasy painting of {prompt}, in the dangerous fantasy world. airbrush over oil on canvas. best quality, high resolution
NEGATIVE_PROMPT: low quality, low resolution
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD_XL1.0/78d05472067e0b86c8270fa5476fcb8e.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD_XL1.0/78d05472067e0b86c8270fa5476fcb8e.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: mre-dark-cyberpunk
@@ -1013,7 +1013,7 @@ MANTRAS:
BASE_MODEL: SD_XL1.0
PROMPT: dark cyberpunk illustration of brutal {prompt} in a world without hope, ruled by ruthless criminal corporations. best quality, high resolution
NEGATIVE_PROMPT: low quality, low resolution
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD_XL1.0/a9f50e3162958fd783872d6955ad7d0b.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD_XL1.0/a9f50e3162958fd783872d6955ad7d0b.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: mre-lyrical-geometry
@@ -1023,7 +1023,7 @@ MANTRAS:
BASE_MODEL: SD_XL1.0
PROMPT: geometric and lyrical abstraction painting presenting {prompt}. oil on metal. best quality, high resolution
NEGATIVE_PROMPT: photography, realistic, drawing, rendered. low quality, low resolution
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD_XL1.0/dfabd41d3042ced804bc97ae35e3a7cb.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD_XL1.0/dfabd41d3042ced804bc97ae35e3a7cb.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: mre-sumi-e-symbolic
@@ -1033,7 +1033,7 @@ MANTRAS:
BASE_MODEL: SD_XL1.0
PROMPT: big long brushstrokes of deep black sumi-e turning into symbolic painting of {prompt}. master level raw art. best quality, high resolution
NEGATIVE_PROMPT: photography, rendered. low quality, low resolution
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD_XL1.0/695b1ba687544eaeec9fb5f871917aeb.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD_XL1.0/695b1ba687544eaeec9fb5f871917aeb.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: mre-sumi-e-detailed
@@ -1043,7 +1043,7 @@ MANTRAS:
BASE_MODEL: SD_XL1.0
PROMPT: highly detailed black sumi-e painting of {prompt}. in-depth study of perfection, created by a master. best quality, high resolution
NEGATIVE_PROMPT: low quality, low resolution
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD_XL1.0/16eb95e180385b88794e368b28da1812.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD_XL1.0/16eb95e180385b88794e368b28da1812.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: mre-manga
@@ -1053,7 +1053,7 @@ MANTRAS:
BASE_MODEL: SD_XL1.0
PROMPT: manga artwork presenting {prompt}. created by japanese manga artist. highly emotional. best quality, high resolution
NEGATIVE_PROMPT: low quality, low resolution
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD_XL1.0/ebec631bf467937f82d05958ae59f9dc.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD_XL1.0/ebec631bf467937f82d05958ae59f9dc.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: mre-anime
@@ -1063,7 +1063,7 @@ MANTRAS:
BASE_MODEL: SD_XL1.0
PROMPT: anime artwork illustrating {prompt}. created by japanese anime studio. highly emotional. best quality, high resolution
NEGATIVE_PROMPT: low quality, low resolution
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD_XL1.0/a08149bc8e50f6bc65c0010d4cd416f8.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD_XL1.0/a08149bc8e50f6bc65c0010d4cd416f8.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: mre-comic
@@ -1073,7 +1073,7 @@ MANTRAS:
BASE_MODEL: SD_XL1.0
PROMPT: breathtaking illustration from adult comic book presenting {prompt}. fabulous artwork. best quality, high resolution
NEGATIVE_PROMPT: deformed, ugly, low quality, low resolution
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD_XL1.0/48c65cebf1fa4284d7b8feb619412e65.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD_XL1.0/48c65cebf1fa4284d7b8feb619412e65.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: sai-3d-model
@@ -1083,7 +1083,7 @@ MANTRAS:
BASE_MODEL: SD_XL1.0
PROMPT: professional 3d model {prompt} . octane render, highly detailed, volumetric, dramatic lighting
NEGATIVE_PROMPT: ugly, deformed, noisy, low poly, blurry, painting
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD_XL1.0/c1a765ac089fdfb3c1d11b33c75d2afd.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD_XL1.0/c1a765ac089fdfb3c1d11b33c75d2afd.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: sai-analog film
@@ -1093,7 +1093,7 @@ MANTRAS:
BASE_MODEL: SD_XL1.0
PROMPT: analog film photo {prompt} . faded film, desaturated, 35mm photo, grainy, vignette, vintage, Kodachrome, Lomography, stained, highly detailed, found footage
NEGATIVE_PROMPT: painting, drawing, illustration, glitch, deformed, mutated, cross-eyed, ugly, disfigured
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD_XL1.0/3c46d19957efd7fb78f4ab2bdada5468.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD_XL1.0/3c46d19957efd7fb78f4ab2bdada5468.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: sai-anime
@@ -1103,7 +1103,7 @@ MANTRAS:
BASE_MODEL: SD_XL1.0
PROMPT: anime artwork {prompt} . anime style, key visual, vibrant, studio anime, highly detailed
NEGATIVE_PROMPT: photo, deformed, black and white, realism, disfigured, low contrast
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD_XL1.0/c030e72561eda96abcf738f1370d36ff.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD_XL1.0/c030e72561eda96abcf738f1370d36ff.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: sai-cinematic
@@ -1113,7 +1113,7 @@ MANTRAS:
BASE_MODEL: SD_XL1.0
PROMPT: cinematic film still {prompt} . shallow depth of field, vignette, highly detailed, high budget, bokeh, cinemascope, moody, epic, gorgeous, film grain, grainy
NEGATIVE_PROMPT: anime, cartoon, graphic, text, painting, crayon, graphite, abstract, glitch, deformed, mutated, ugly, disfigured
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD_XL1.0/d9161c0d5cbf2133b2bfc1021c0c5e2a.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD_XL1.0/d9161c0d5cbf2133b2bfc1021c0c5e2a.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: sai-comic book
@@ -1123,7 +1123,7 @@ MANTRAS:
BASE_MODEL: SD_XL1.0
PROMPT: comic {prompt} . graphic illustration, comic art, graphic novel art, vibrant, highly detailed
NEGATIVE_PROMPT: photograph, deformed, glitch, noisy, realistic, stock photo
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD_XL1.0/6759ecb831037367e64c4b36d802be87.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD_XL1.0/6759ecb831037367e64c4b36d802be87.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: sai-craft clay
@@ -1133,7 +1133,7 @@ MANTRAS:
BASE_MODEL: SD_XL1.0
PROMPT: play-doh style {prompt} . sculpture, clay art, centered composition, Claymation
NEGATIVE_PROMPT: sloppy, messy, grainy, highly detailed, ultra textured, photo
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD_XL1.0/8fc51113f725f27326c4398a7457cd6d.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD_XL1.0/8fc51113f725f27326c4398a7457cd6d.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: sai-digital art
@@ -1143,7 +1143,7 @@ MANTRAS:
BASE_MODEL: SD_XL1.0
PROMPT: concept art {prompt} . digital artwork, illustrative, painterly, matte painting, highly detailed
NEGATIVE_PROMPT: photo, photorealistic, realism, ugly
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD_XL1.0/d29adb44458700c4a45ee6edaa04bfb6.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD_XL1.0/d29adb44458700c4a45ee6edaa04bfb6.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: sai-enhance
@@ -1153,7 +1153,7 @@ MANTRAS:
BASE_MODEL: SD_XL1.0
PROMPT: breathtaking {prompt} . award-winning, professional, highly detailed
NEGATIVE_PROMPT: ugly, deformed, noisy, blurry, distorted, grainy
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD_XL1.0/2be0de541ff65f8da80ddc24a65c98d8.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD_XL1.0/2be0de541ff65f8da80ddc24a65c98d8.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: sai-fantasy art
@@ -1163,7 +1163,7 @@ MANTRAS:
BASE_MODEL: SD_XL1.0
PROMPT: ethereal fantasy concept art of {prompt} . magnificent, celestial, ethereal, painterly, epic, majestic, magical, fantasy art, cover art, dreamy
NEGATIVE_PROMPT: photographic, realistic, realism, 35mm film, dslr, cropped, frame, text, deformed, glitch, noise, noisy, off-center, deformed, cross-eyed, closed eyes, bad anatomy, ugly, disfigured, sloppy, duplicate, mutated, black and white
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD_XL1.0/a6f8d92afcd5803dfb2ebecbc92091b6.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD_XL1.0/a6f8d92afcd5803dfb2ebecbc92091b6.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: sai-isometric
@@ -1173,7 +1173,7 @@ MANTRAS:
BASE_MODEL: SD_XL1.0
PROMPT: isometric style {prompt} . vibrant, beautiful, crisp, detailed, ultra detailed, intricate
NEGATIVE_PROMPT: deformed, mutated, ugly, disfigured, blur, blurry, noise, noisy, realistic, photographic
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD_XL1.0/d4e3fcbbfd7b1323bd89decf5d7b0006.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD_XL1.0/d4e3fcbbfd7b1323bd89decf5d7b0006.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: sai-line art
@@ -1183,7 +1183,7 @@ MANTRAS:
BASE_MODEL: SD_XL1.0
PROMPT: line art drawing {prompt} . professional, sleek, modern, minimalist, graphic, line art, vector graphics
NEGATIVE_PROMPT: anime, photorealistic, 35mm film, deformed, glitch, blurry, noisy, off-center, deformed, cross-eyed, closed eyes, bad anatomy, ugly, disfigured, mutated, realism, realistic, impressionism, expressionism, oil, acrylic
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD_XL1.0/034a51b0dd34b018be8859bf45b4f7ed.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD_XL1.0/034a51b0dd34b018be8859bf45b4f7ed.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: sai-lowpoly
@@ -1193,7 +1193,7 @@ MANTRAS:
BASE_MODEL: SD_XL1.0
PROMPT: low-poly style {prompt} . low-poly game art, polygon mesh, jagged, blocky, wireframe edges, centered composition
NEGATIVE_PROMPT: noisy, sloppy, messy, grainy, highly detailed, ultra textured, photo
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD_XL1.0/76b9913e9fa5704b6d30adbde9e1f70f.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD_XL1.0/76b9913e9fa5704b6d30adbde9e1f70f.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: sai-neonpunk
@@ -1203,7 +1203,7 @@ MANTRAS:
BASE_MODEL: SD_XL1.0
PROMPT: neonpunk style {prompt} . cyberpunk, vaporwave, neon, vibes, vibrant, stunningly beautiful, crisp, detailed, sleek, ultramodern, magenta highlights, dark purple shadows, high contrast, cinematic, ultra detailed, intricate, professional
NEGATIVE_PROMPT: painting, drawing, illustration, glitch, deformed, mutated, cross-eyed, ugly, disfigured
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD_XL1.0/7e9ed25bb34008beb5f417df63c4b2fe.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD_XL1.0/7e9ed25bb34008beb5f417df63c4b2fe.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: sai-origami
@@ -1213,7 +1213,7 @@ MANTRAS:
BASE_MODEL: SD_XL1.0
PROMPT: origami style {prompt} . paper art, pleated paper, folded, origami art, pleats, cut and fold, centered composition
NEGATIVE_PROMPT: noisy, sloppy, messy, grainy, highly detailed, ultra textured, photo
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD_XL1.0/924f46a8f276011a0953d7988e90ee25.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD_XL1.0/924f46a8f276011a0953d7988e90ee25.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: sai-photographic
@@ -1223,7 +1223,7 @@ MANTRAS:
BASE_MODEL: SD_XL1.0
PROMPT: cinematic photo {prompt} . 35mm photograph, film, bokeh, professional, 4k, highly detailed
NEGATIVE_PROMPT: drawing, painting, crayon, sketch, graphite, impressionist, noisy, blurry, soft, deformed, ugly
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD_XL1.0/d6a2d8f3d37cc21c20c5dfc13d000b67.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD_XL1.0/d6a2d8f3d37cc21c20c5dfc13d000b67.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: sai-pixel art
@@ -1233,7 +1233,7 @@ MANTRAS:
BASE_MODEL: SD_XL1.0
PROMPT: pixel-art {prompt} . low-res, blocky, pixel art style, 8-bit graphics
NEGATIVE_PROMPT: sloppy, messy, blurry, noisy, highly detailed, ultra textured, photo, realistic
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD_XL1.0/a5ab89c0960be8c1216e65c98d92ae4a.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD_XL1.0/a5ab89c0960be8c1216e65c98d92ae4a.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: sai-texture
@@ -1243,7 +1243,7 @@ MANTRAS:
BASE_MODEL: SD_XL1.0
PROMPT: texture {prompt} top down close-up
NEGATIVE_PROMPT: ugly, deformed, noisy, blurry
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD_XL1.0/ebfeab574283fff2ac096e348a585e6d.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD_XL1.0/ebfeab574283fff2ac096e348a585e6d.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: ads-advertising
@@ -1253,7 +1253,7 @@ MANTRAS:
BASE_MODEL: SD_XL1.0
PROMPT: advertising poster style {prompt} . Professional, modern, product-focused, commercial, eye-catching, highly detailed
NEGATIVE_PROMPT: noisy, blurry, amateurish, sloppy, unattractive
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD_XL1.0/1aa26a16126e2756bf4bf3fda29baa12.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD_XL1.0/1aa26a16126e2756bf4bf3fda29baa12.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: ads-automotive
@@ -1263,7 +1263,7 @@ MANTRAS:
BASE_MODEL: SD_XL1.0
PROMPT: automotive advertisement style {prompt} . sleek, dynamic, professional, commercial, vehicle-focused, high-resolution, highly detailed
NEGATIVE_PROMPT: noisy, blurry, unattractive, sloppy, unprofessional
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD_XL1.0/ddc833b36ca23c85a4f6e7bf0088d081.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD_XL1.0/ddc833b36ca23c85a4f6e7bf0088d081.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: ads-corporate
@@ -1273,7 +1273,7 @@ MANTRAS:
BASE_MODEL: SD_XL1.0
PROMPT: corporate branding style {prompt} . professional, clean, modern, sleek, minimalist, business-oriented, highly detailed
NEGATIVE_PROMPT: noisy, blurry, grungy, sloppy, cluttered, disorganized
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD_XL1.0/df97fa45c7842296c138aca4057db272.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD_XL1.0/df97fa45c7842296c138aca4057db272.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: ads-fashion editorial
@@ -1283,7 +1283,7 @@ MANTRAS:
BASE_MODEL: SD_XL1.0
PROMPT: fashion editorial style {prompt} . high fashion, trendy, stylish, editorial, magazine style, professional, highly detailed
NEGATIVE_PROMPT: outdated, blurry, noisy, unattractive, sloppy
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD_XL1.0/89259be723479cd0b81546b715bea04d.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD_XL1.0/89259be723479cd0b81546b715bea04d.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: ads-food photography
@@ -1293,7 +1293,7 @@ MANTRAS:
BASE_MODEL: SD_XL1.0
PROMPT: food photography style {prompt} . appetizing, professional, culinary, high-resolution, commercial, highly detailed
NEGATIVE_PROMPT: unappetizing, sloppy, unprofessional, noisy, blurry
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD_XL1.0/33acc98f8615940c8cebbac8ce5297b2.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD_XL1.0/33acc98f8615940c8cebbac8ce5297b2.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: ads-gourmet food photography
@@ -1303,7 +1303,7 @@ MANTRAS:
BASE_MODEL: SD_XL1.0
PROMPT: gourmet food photo of {prompt} . soft natural lighting, macro details, vibrant colors, fresh ingredients, glistening textures, bokeh background, styled plating, wooden tabletop, garnished, tantalizing, editorial quality
NEGATIVE_PROMPT: cartoon, anime, sketch, grayscale, dull, overexposed, cluttered, messy plate, deformed
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD_XL1.0/897bbd3f1d232de122796266f3845b50.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD_XL1.0/897bbd3f1d232de122796266f3845b50.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: ads-luxury
@@ -1313,7 +1313,7 @@ MANTRAS:
BASE_MODEL: SD_XL1.0
PROMPT: luxury product style {prompt} . elegant, sophisticated, high-end, luxurious, professional, highly detailed
NEGATIVE_PROMPT: cheap, noisy, blurry, unattractive, amateurish
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD_XL1.0/5b33ecc84dc5ff285a0f2e69f43162cb.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD_XL1.0/5b33ecc84dc5ff285a0f2e69f43162cb.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: ads-real estate
@@ -1323,7 +1323,7 @@ MANTRAS:
BASE_MODEL: SD_XL1.0
PROMPT: real estate photography style {prompt} . professional, inviting, well-lit, high-resolution, property-focused, commercial, highly detailed
NEGATIVE_PROMPT: dark, blurry, unappealing, noisy, unprofessional
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD_XL1.0/1b99b7bcd0476144d80d066e747d8dfc.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD_XL1.0/1b99b7bcd0476144d80d066e747d8dfc.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: ads-retail
@@ -1333,7 +1333,7 @@ MANTRAS:
BASE_MODEL: SD_XL1.0
PROMPT: retail packaging style {prompt} . vibrant, enticing, commercial, product-focused, eye-catching, professional, highly detailed
NEGATIVE_PROMPT: noisy, blurry, amateurish, sloppy, unattractive
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD_XL1.0/0029e46ef36380dde2084257108f8a6f.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD_XL1.0/0029e46ef36380dde2084257108f8a6f.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: artstyle-abstract
@@ -1343,7 +1343,7 @@ MANTRAS:
BASE_MODEL: SD_XL1.0
PROMPT: abstract style {prompt} . non-representational, colors and shapes, expression of feelings, imaginative, highly detailed
NEGATIVE_PROMPT: realistic, photographic, figurative, concrete
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD_XL1.0/8c401cb0a6ea288230222c4985e78667.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD_XL1.0/8c401cb0a6ea288230222c4985e78667.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: artstyle-abstract expressionism
@@ -1353,7 +1353,7 @@ MANTRAS:
BASE_MODEL: SD_XL1.0
PROMPT: abstract expressionist painting {prompt} . energetic brushwork, bold colors, abstract forms, expressive, emotional
NEGATIVE_PROMPT: realistic, photorealistic, low contrast, plain, simple, monochrome
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD_XL1.0/9df6635149c576b65d911c2e4cc6a86b.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD_XL1.0/9df6635149c576b65d911c2e4cc6a86b.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: artstyle-art deco
@@ -1363,7 +1363,7 @@ MANTRAS:
BASE_MODEL: SD_XL1.0
PROMPT: art deco style {prompt} . geometric shapes, bold colors, luxurious, elegant, decorative, symmetrical, ornate, detailed
NEGATIVE_PROMPT: ugly, deformed, noisy, blurry, low contrast, realism, photorealistic, modernist, minimalist
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD_XL1.0/82fff8a25de8075777caf14cb3eb5650.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD_XL1.0/82fff8a25de8075777caf14cb3eb5650.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: artstyle-art nouveau
@@ -1373,7 +1373,7 @@ MANTRAS:
BASE_MODEL: SD_XL1.0
PROMPT: art nouveau style {prompt} . elegant, decorative, curvilinear forms, nature-inspired, ornate, detailed
NEGATIVE_PROMPT: ugly, deformed, noisy, blurry, low contrast, realism, photorealistic, modernist, minimalist
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD_XL1.0/84075c5c0cb4b7a2541c6fbca9835cfd.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD_XL1.0/84075c5c0cb4b7a2541c6fbca9835cfd.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: artstyle-constructivist
@@ -1383,7 +1383,7 @@ MANTRAS:
BASE_MODEL: SD_XL1.0
PROMPT: constructivist style {prompt} . geometric shapes, bold colors, dynamic composition, propaganda art style
NEGATIVE_PROMPT: realistic, photorealistic, low contrast, plain, simple, abstract expressionism
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD_XL1.0/2a634ad0c89ecefbbea4ce5bcab3d5e5.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD_XL1.0/2a634ad0c89ecefbbea4ce5bcab3d5e5.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: artstyle-cubist
@@ -1393,7 +1393,7 @@ MANTRAS:
BASE_MODEL: SD_XL1.0
PROMPT: cubist artwork {prompt} . geometric shapes, abstract, innovative, revolutionary
NEGATIVE_PROMPT: anime, photorealistic, 35mm film, deformed, glitch, low contrast, noisy
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD_XL1.0/2a3d797008c08e12b485d61624741ea6.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD_XL1.0/2a3d797008c08e12b485d61624741ea6.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: artstyle-expressionist
@@ -1403,7 +1403,7 @@ MANTRAS:
BASE_MODEL: SD_XL1.0
PROMPT: expressionist {prompt} . raw, emotional, dynamic, distortion for emotional effect, vibrant, use of unusual colors, detailed
NEGATIVE_PROMPT: realism, symmetry, quiet, calm, photo
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD_XL1.0/83914655659001716a1acede295289d0.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD_XL1.0/83914655659001716a1acede295289d0.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: artstyle-graffiti
@@ -1413,7 +1413,7 @@ MANTRAS:
BASE_MODEL: SD_XL1.0
PROMPT: graffiti style {prompt} . street art, vibrant, urban, detailed, tag, mural
NEGATIVE_PROMPT: ugly, deformed, noisy, blurry, low contrast, realism, photorealistic
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD_XL1.0/f72a23c7623eb480737eb73c08bf8423.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD_XL1.0/f72a23c7623eb480737eb73c08bf8423.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: artstyle-hyperrealism
@@ -1423,7 +1423,7 @@ MANTRAS:
BASE_MODEL: SD_XL1.0
PROMPT: hyperrealistic art {prompt} . extremely high-resolution details, photographic, realism pushed to extreme, fine texture, incredibly lifelike
NEGATIVE_PROMPT: simplified, abstract, unrealistic, impressionistic, low resolution
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD_XL1.0/db378d5a64a8e7ad1e29a4389bda5d1c.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD_XL1.0/db378d5a64a8e7ad1e29a4389bda5d1c.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: artstyle-impressionist
@@ -1433,7 +1433,7 @@ MANTRAS:
BASE_MODEL: SD_XL1.0
PROMPT: impressionist painting {prompt} . loose brushwork, vibrant color, light and shadow play, captures feeling over form
NEGATIVE_PROMPT: anime, photorealistic, 35mm film, deformed, glitch, low contrast, noisy
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD_XL1.0/53b151aec4d5685dfc24511b6705b90e.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD_XL1.0/53b151aec4d5685dfc24511b6705b90e.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: artstyle-pointillism
@@ -1443,7 +1443,7 @@ MANTRAS:
BASE_MODEL: SD_XL1.0
PROMPT: pointillism style {prompt} . composed entirely of small, distinct dots of color, vibrant, highly detailed
NEGATIVE_PROMPT: line drawing, smooth shading, large color fields, simplistic
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD_XL1.0/23b137a409ee8a8c6ee160c1ddf0659f.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD_XL1.0/23b137a409ee8a8c6ee160c1ddf0659f.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: artstyle-pop art
@@ -1453,7 +1453,7 @@ MANTRAS:
BASE_MODEL: SD_XL1.0
PROMPT: pop Art style {prompt} . bright colors, bold outlines, popular culture themes, ironic or kitsch
NEGATIVE_PROMPT: ugly, deformed, noisy, blurry, low contrast, realism, photorealistic, minimalist
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD_XL1.0/bd4faf0e2b7dbc2d0eb21f3ebee97d3d.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD_XL1.0/bd4faf0e2b7dbc2d0eb21f3ebee97d3d.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: artstyle-psychedelic
@@ -1463,7 +1463,7 @@ MANTRAS:
BASE_MODEL: SD_XL1.0
PROMPT: psychedelic style {prompt} . vibrant colors, swirling patterns, abstract forms, surreal, trippy
NEGATIVE_PROMPT: monochrome, black and white, low contrast, realistic, photorealistic, plain, simple
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD_XL1.0/7dc0131817f4c31517581dd4a811067b.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD_XL1.0/7dc0131817f4c31517581dd4a811067b.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: artstyle-renaissance
@@ -1473,7 +1473,7 @@ MANTRAS:
BASE_MODEL: SD_XL1.0
PROMPT: renaissance style {prompt} . realistic, perspective, light and shadow, religious or mythological themes, highly detailed
NEGATIVE_PROMPT: ugly, deformed, noisy, blurry, low contrast, modernist, minimalist, abstract
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD_XL1.0/69796484f61dc2e94d5853f5bbe27c05.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD_XL1.0/69796484f61dc2e94d5853f5bbe27c05.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: artstyle-steampunk
@@ -1483,7 +1483,7 @@ MANTRAS:
BASE_MODEL: SD_XL1.0
PROMPT: steampunk style {prompt} . antique, mechanical, brass and copper tones, gears, intricate, detailed
NEGATIVE_PROMPT: deformed, glitch, noisy, low contrast, anime, photorealistic
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD_XL1.0/985005e28858b03c9500a6eb5bd9e201.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD_XL1.0/985005e28858b03c9500a6eb5bd9e201.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: artstyle-surrealist
@@ -1493,7 +1493,7 @@ MANTRAS:
BASE_MODEL: SD_XL1.0
PROMPT: surrealist art {prompt} . dreamlike, mysterious, provocative, symbolic, intricate, detailed
NEGATIVE_PROMPT: anime, photorealistic, realistic, deformed, glitch, noisy, low contrast
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD_XL1.0/892d19ec3c429b7148562796df0024db.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD_XL1.0/892d19ec3c429b7148562796df0024db.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: artstyle-typography
@@ -1503,7 +1503,7 @@ MANTRAS:
BASE_MODEL: SD_XL1.0
PROMPT: typographic art {prompt} . stylized, intricate, detailed, artistic, text-based
NEGATIVE_PROMPT: ugly, deformed, noisy, blurry, low contrast, realism, photorealistic
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD_XL1.0/9adafe1bb169e1ee3f78ba2c1b1cf8d3.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD_XL1.0/9adafe1bb169e1ee3f78ba2c1b1cf8d3.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: artstyle-watercolor
@@ -1513,7 +1513,7 @@ MANTRAS:
BASE_MODEL: SD_XL1.0
PROMPT: watercolor painting {prompt} . vibrant, beautiful, painterly, detailed, textural, artistic
NEGATIVE_PROMPT: anime, photorealistic, 35mm film, deformed, glitch, low contrast, noisy
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD_XL1.0/29ca23d7a0397e9beaa72e3b63d17551.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD_XL1.0/29ca23d7a0397e9beaa72e3b63d17551.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: futuristic-biomechanical
@@ -1523,7 +1523,7 @@ MANTRAS:
BASE_MODEL: SD_XL1.0
PROMPT: biomechanical style {prompt} . blend of organic and mechanical elements, futuristic, cybernetic, detailed, intricate
NEGATIVE_PROMPT: natural, rustic, primitive, organic, simplistic
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD_XL1.0/5987795487a3fa74469499ae53963d5d.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD_XL1.0/5987795487a3fa74469499ae53963d5d.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: futuristic-biomechanical cyberpunk
@@ -1533,7 +1533,7 @@ MANTRAS:
BASE_MODEL: SD_XL1.0
PROMPT: biomechanical cyberpunk {prompt} . cybernetics, human-machine fusion, dystopian, organic meets artificial, dark, intricate, highly detailed
NEGATIVE_PROMPT: natural, colorful, deformed, sketch, low contrast, watercolor
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD_XL1.0/75b56d7cff9b3f011248b3092ae3b8d2.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD_XL1.0/75b56d7cff9b3f011248b3092ae3b8d2.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: futuristic-cybernetic
@@ -1543,7 +1543,7 @@ MANTRAS:
BASE_MODEL: SD_XL1.0
PROMPT: cybernetic style {prompt} . futuristic, technological, cybernetic enhancements, robotics, artificial intelligence themes
NEGATIVE_PROMPT: ugly, deformed, noisy, blurry, low contrast, realism, photorealistic, historical, medieval
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD_XL1.0/47df6db04290f01aeee7381aaf12ec07.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD_XL1.0/47df6db04290f01aeee7381aaf12ec07.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: futuristic-cybernetic robot
@@ -1553,7 +1553,7 @@ MANTRAS:
BASE_MODEL: SD_XL1.0
PROMPT: cybernetic robot {prompt} . android, AI, machine, metal, wires, tech, futuristic, highly detailed
NEGATIVE_PROMPT: organic, natural, human, sketch, watercolor, low contrast
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD_XL1.0/6f18121b4ba22c8ba7834f404501fa4c.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD_XL1.0/6f18121b4ba22c8ba7834f404501fa4c.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: futuristic-cyberpunk cityscape
@@ -1563,7 +1563,7 @@ MANTRAS:
BASE_MODEL: SD_XL1.0
PROMPT: cyberpunk cityscape {prompt} . neon lights, dark alleys, skyscrapers, futuristic, vibrant colors, high contrast, highly detailed
NEGATIVE_PROMPT: natural, rural, deformed, low contrast, black and white, sketch, watercolor
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD_XL1.0/5e4107dace2c9dd0217a9d1b18ae28f6.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD_XL1.0/5e4107dace2c9dd0217a9d1b18ae28f6.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: futuristic-futuristic
@@ -1573,7 +1573,7 @@ MANTRAS:
BASE_MODEL: SD_XL1.0
PROMPT: futuristic style {prompt} . sleek, modern, ultramodern, high tech, detailed
NEGATIVE_PROMPT: ugly, deformed, noisy, blurry, low contrast, realism, photorealistic, vintage, antique
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD_XL1.0/8a61c0853ee4079bae96ad502a6ae840.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD_XL1.0/8a61c0853ee4079bae96ad502a6ae840.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: futuristic-retro cyberpunk
@@ -1583,7 +1583,7 @@ MANTRAS:
BASE_MODEL: SD_XL1.0
PROMPT: retro cyberpunk {prompt} . 80's inspired, synthwave, neon, vibrant, detailed, retro futurism
NEGATIVE_PROMPT: modern, desaturated, black and white, realism, low contrast
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD_XL1.0/460957bf9a07a58ddec08bf22d5b3698.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD_XL1.0/460957bf9a07a58ddec08bf22d5b3698.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: futuristic-retro futurism
@@ -1593,7 +1593,7 @@ MANTRAS:
BASE_MODEL: SD_XL1.0
PROMPT: retro-futuristic {prompt} . vintage sci-fi, 50s and 60s style, atomic age, vibrant, highly detailed
NEGATIVE_PROMPT: contemporary, realistic, rustic, primitive
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD_XL1.0/0434a7b23a0f936db615d7a9b8e805f1.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD_XL1.0/0434a7b23a0f936db615d7a9b8e805f1.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: futuristic-sci-fi
@@ -1603,7 +1603,7 @@ MANTRAS:
BASE_MODEL: SD_XL1.0
PROMPT: sci-fi style {prompt} . futuristic, technological, alien worlds, space themes, advanced civilizations
NEGATIVE_PROMPT: ugly, deformed, noisy, blurry, low contrast, realism, photorealistic, historical, medieval
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD_XL1.0/7c3bde651f426273758b68a2805d0c8a.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD_XL1.0/7c3bde651f426273758b68a2805d0c8a.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: futuristic-vaporwave
@@ -1613,7 +1613,7 @@ MANTRAS:
BASE_MODEL: SD_XL1.0
PROMPT: vaporwave style {prompt} . retro aesthetic, cyberpunk, vibrant, neon colors, vintage 80s and 90s style, highly detailed
NEGATIVE_PROMPT: monochrome, muted colors, realism, rustic, minimalist, dark
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD_XL1.0/1ebb0bf67ee3ef76288b4c0a2a65d557.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD_XL1.0/1ebb0bf67ee3ef76288b4c0a2a65d557.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: game-bubble bobble
@@ -1623,7 +1623,7 @@ MANTRAS:
BASE_MODEL: SD_XL1.0
PROMPT: Bubble Bobble style {prompt} . 8-bit, cute, pixelated, fantasy, vibrant, reminiscent of Bubble Bobble game
NEGATIVE_PROMPT: realistic, modern, photorealistic, violent, horror
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD_XL1.0/19257352df33228555cb350963d9432a.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD_XL1.0/19257352df33228555cb350963d9432a.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: game-cyberpunk game
@@ -1633,7 +1633,7 @@ MANTRAS:
BASE_MODEL: SD_XL1.0
PROMPT: cyberpunk game style {prompt} . neon, dystopian, futuristic, digital, vibrant, detailed, high contrast, reminiscent of cyberpunk genre video games
NEGATIVE_PROMPT: historical, natural, rustic, low detailed
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD_XL1.0/6165ef47bc859e3dd0e3399ba2264c2b.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD_XL1.0/6165ef47bc859e3dd0e3399ba2264c2b.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: game-fighting game
@@ -1643,7 +1643,7 @@ MANTRAS:
BASE_MODEL: SD_XL1.0
PROMPT: fighting game style {prompt} . dynamic, vibrant, action-packed, detailed character design, reminiscent of fighting video games
NEGATIVE_PROMPT: peaceful, calm, minimalist, photorealistic
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD_XL1.0/aebda69ec1097dc61966995956ae34cc.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD_XL1.0/aebda69ec1097dc61966995956ae34cc.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: game-gta
@@ -1653,7 +1653,7 @@ MANTRAS:
BASE_MODEL: SD_XL1.0
PROMPT: GTA-style artwork {prompt} . satirical, exaggerated, pop art style, vibrant colors, iconic characters, action-packed
NEGATIVE_PROMPT: realistic, black and white, low contrast, impressionist, cubist, noisy, blurry, deformed
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD_XL1.0/edff7ba5fc983468e79e64beb838b829.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD_XL1.0/edff7ba5fc983468e79e64beb838b829.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: game-mario
@@ -1663,7 +1663,7 @@ MANTRAS:
BASE_MODEL: SD_XL1.0
PROMPT: Super Mario style {prompt} . vibrant, cute, cartoony, fantasy, playful, reminiscent of Super Mario series
NEGATIVE_PROMPT: realistic, modern, horror, dystopian, violent
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD_XL1.0/2a229f623ce89160d1f67620599dfc7c.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD_XL1.0/2a229f623ce89160d1f67620599dfc7c.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: game-minecraft
@@ -1673,7 +1673,7 @@ MANTRAS:
BASE_MODEL: SD_XL1.0
PROMPT: Minecraft style {prompt} . blocky, pixelated, vibrant colors, recognizable characters and objects, game assets
NEGATIVE_PROMPT: smooth, realistic, detailed, photorealistic, noise, blurry, deformed
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD_XL1.0/83e77332a9f234fd8c9cddd29e2ec3c7.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD_XL1.0/83e77332a9f234fd8c9cddd29e2ec3c7.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: game-pokemon
@@ -1683,7 +1683,7 @@ MANTRAS:
BASE_MODEL: SD_XL1.0
PROMPT: Pokémon style {prompt} . vibrant, cute, anime, fantasy, reminiscent of Pokémon series
NEGATIVE_PROMPT: realistic, modern, horror, dystopian, violent
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD_XL1.0/9bfe2805e6578875a8dfe2a0ea96c281.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD_XL1.0/9bfe2805e6578875a8dfe2a0ea96c281.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: game-retro arcade
@@ -1693,7 +1693,7 @@ MANTRAS:
BASE_MODEL: SD_XL1.0
PROMPT: retro arcade style {prompt} . 8-bit, pixelated, vibrant, classic video game, old school gaming, reminiscent of 80s and 90s arcade games
NEGATIVE_PROMPT: modern, ultra-high resolution, photorealistic, 3D
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD_XL1.0/76885e0b110f1fdf3eaee52fbaf27abf.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD_XL1.0/76885e0b110f1fdf3eaee52fbaf27abf.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: game-retro game
@@ -1703,7 +1703,7 @@ MANTRAS:
BASE_MODEL: SD_XL1.0
PROMPT: retro game art {prompt} . 16-bit, vibrant colors, pixelated, nostalgic, charming, fun
NEGATIVE_PROMPT: realistic, photorealistic, 35mm film, deformed, glitch, low contrast, noisy
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD_XL1.0/61fbae41c50f56e24dcf20fe3612d456.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD_XL1.0/61fbae41c50f56e24dcf20fe3612d456.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: game-rpg fantasy game
@@ -1713,7 +1713,7 @@ MANTRAS:
BASE_MODEL: SD_XL1.0
PROMPT: role-playing game (RPG) style fantasy {prompt} . detailed, vibrant, immersive, reminiscent of high fantasy RPG games
NEGATIVE_PROMPT: sci-fi, modern, urban, futuristic, low detailed
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD_XL1.0/34797baf58e32b4e1a37753fe9dcff5c.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD_XL1.0/34797baf58e32b4e1a37753fe9dcff5c.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: game-strategy game
@@ -1723,7 +1723,7 @@ MANTRAS:
BASE_MODEL: SD_XL1.0
PROMPT: strategy game style {prompt} . overhead view, detailed map, units, reminiscent of real-time strategy video games
NEGATIVE_PROMPT: first-person view, modern, photorealistic
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD_XL1.0/0d276527d22510a1b5f8f74eac2790df.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD_XL1.0/0d276527d22510a1b5f8f74eac2790df.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: game-streetfighter
@@ -1733,7 +1733,7 @@ MANTRAS:
BASE_MODEL: SD_XL1.0
PROMPT: Street Fighter style {prompt} . vibrant, dynamic, arcade, 2D fighting game, highly detailed, reminiscent of Street Fighter series
NEGATIVE_PROMPT: 3D, realistic, modern, photorealistic, turn-based strategy
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD_XL1.0/f5927fc2b8d4a8212242bd97adcbdfa1.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD_XL1.0/f5927fc2b8d4a8212242bd97adcbdfa1.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: game-zelda
@@ -1743,7 +1743,7 @@ MANTRAS:
BASE_MODEL: SD_XL1.0
PROMPT: Legend of Zelda style {prompt} . vibrant, fantasy, detailed, epic, heroic, reminiscent of The Legend of Zelda series
NEGATIVE_PROMPT: sci-fi, modern, realistic, horror
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD_XL1.0/4f9eadddbc196268258089b8cc4e5c5c.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD_XL1.0/4f9eadddbc196268258089b8cc4e5c5c.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: misc-architectural
@@ -1753,7 +1753,7 @@ MANTRAS:
BASE_MODEL: SD_XL1.0
PROMPT: architectural style {prompt} . clean lines, geometric shapes, minimalist, modern, architectural drawing, highly detailed
NEGATIVE_PROMPT: curved lines, ornate, baroque, abstract, grunge
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD_XL1.0/488545e9fc9417d62961f42d578547d2.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD_XL1.0/488545e9fc9417d62961f42d578547d2.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: misc-disco
@@ -1763,7 +1763,7 @@ MANTRAS:
BASE_MODEL: SD_XL1.0
PROMPT: disco-themed {prompt} . vibrant, groovy, retro 70s style, shiny disco balls, neon lights, dance floor, highly detailed
NEGATIVE_PROMPT: minimalist, rustic, monochrome, contemporary, simplistic
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD_XL1.0/784b0ac35e0c0fdb2df21a95d5ca1c55.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD_XL1.0/784b0ac35e0c0fdb2df21a95d5ca1c55.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: misc-dreamscape
@@ -1773,7 +1773,7 @@ MANTRAS:
BASE_MODEL: SD_XL1.0
PROMPT: dreamscape {prompt} . surreal, ethereal, dreamy, mysterious, fantasy, highly detailed
NEGATIVE_PROMPT: realistic, concrete, ordinary, mundane
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD_XL1.0/2bf77804b5bf352c4e97475b1e8eb29e.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD_XL1.0/2bf77804b5bf352c4e97475b1e8eb29e.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: misc-dystopian
@@ -1783,7 +1783,7 @@ MANTRAS:
BASE_MODEL: SD_XL1.0
PROMPT: dystopian style {prompt} . bleak, post-apocalyptic, somber, dramatic, highly detailed
NEGATIVE_PROMPT: ugly, deformed, noisy, blurry, low contrast, cheerful, optimistic, vibrant, colorful
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD_XL1.0/065db0385e126192cbd27e22ca4f154c.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD_XL1.0/065db0385e126192cbd27e22ca4f154c.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: misc-fairy tale
@@ -1793,7 +1793,7 @@ MANTRAS:
BASE_MODEL: SD_XL1.0
PROMPT: fairy tale {prompt} . magical, fantastical, enchanting, storybook style, highly detailed
NEGATIVE_PROMPT: realistic, modern, ordinary, mundane
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD_XL1.0/578dfe65d9f03e83c95820d4c45cd396.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD_XL1.0/578dfe65d9f03e83c95820d4c45cd396.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: misc-gothic
@@ -1803,7 +1803,7 @@ MANTRAS:
BASE_MODEL: SD_XL1.0
PROMPT: gothic style {prompt} . dark, mysterious, haunting, dramatic, ornate, detailed
NEGATIVE_PROMPT: ugly, deformed, noisy, blurry, low contrast, realism, photorealistic, cheerful, optimistic
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD_XL1.0/332a1f8cd655b724cb48bc5c91b764fc.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD_XL1.0/332a1f8cd655b724cb48bc5c91b764fc.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: misc-grunge
@@ -1813,7 +1813,7 @@ MANTRAS:
BASE_MODEL: SD_XL1.0
PROMPT: grunge style {prompt} . textured, distressed, vintage, edgy, punk rock vibe, dirty, noisy
NEGATIVE_PROMPT: smooth, clean, minimalist, sleek, modern, photorealistic
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD_XL1.0/0ccb4c03c6d983b9f6d05ba383f9d690.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD_XL1.0/0ccb4c03c6d983b9f6d05ba383f9d690.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: misc-horror
@@ -1823,7 +1823,7 @@ MANTRAS:
BASE_MODEL: SD_XL1.0
PROMPT: horror-themed {prompt} . eerie, unsettling, dark, spooky, suspenseful, grim, highly detailed
NEGATIVE_PROMPT: cheerful, bright, vibrant, light-hearted, cute
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD_XL1.0/fdca4780d099a39dc50e4553622fba72.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD_XL1.0/fdca4780d099a39dc50e4553622fba72.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: misc-kawaii
@@ -1833,7 +1833,7 @@ MANTRAS:
BASE_MODEL: SD_XL1.0
PROMPT: kawaii style {prompt} . cute, adorable, brightly colored, cheerful, anime influence, highly detailed
NEGATIVE_PROMPT: dark, scary, realistic, monochrome, abstract
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD_XL1.0/99dab4185e7337189d8959878bfa308b.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD_XL1.0/99dab4185e7337189d8959878bfa308b.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: misc-lovecraftian
@@ -1843,7 +1843,7 @@ MANTRAS:
BASE_MODEL: SD_XL1.0
PROMPT: lovecraftian horror {prompt} . eldritch, cosmic horror, unknown, mysterious, surreal, highly detailed
NEGATIVE_PROMPT: light-hearted, mundane, familiar, simplistic, realistic
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD_XL1.0/b7c9d084ed62c1c2e1ea080ad95af61e.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD_XL1.0/b7c9d084ed62c1c2e1ea080ad95af61e.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: misc-macabre
@@ -1853,7 +1853,7 @@ MANTRAS:
BASE_MODEL: SD_XL1.0
PROMPT: macabre style {prompt} . dark, gothic, grim, haunting, highly detailed
NEGATIVE_PROMPT: bright, cheerful, light-hearted, cartoonish, cute
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD_XL1.0/fd7cf2315b27b0434b909020414e1173.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD_XL1.0/fd7cf2315b27b0434b909020414e1173.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: misc-manga
@@ -1863,7 +1863,7 @@ MANTRAS:
BASE_MODEL: SD_XL1.0
PROMPT: manga style {prompt} . vibrant, high-energy, detailed, iconic, Japanese comic style
NEGATIVE_PROMPT: ugly, deformed, noisy, blurry, low contrast, realism, photorealistic, Western comic style
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD_XL1.0/531aac90b321d39221ba7cf70a97b232.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD_XL1.0/531aac90b321d39221ba7cf70a97b232.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: misc-metropolis
@@ -1873,7 +1873,7 @@ MANTRAS:
BASE_MODEL: SD_XL1.0
PROMPT: metropolis-themed {prompt} . urban, cityscape, skyscrapers, modern, futuristic, highly detailed
NEGATIVE_PROMPT: rural, natural, rustic, historical, simple
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD_XL1.0/eaad79fe3d7160cec6e0656fc3b02d3c.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD_XL1.0/eaad79fe3d7160cec6e0656fc3b02d3c.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: misc-minimalist
@@ -1883,7 +1883,7 @@ MANTRAS:
BASE_MODEL: SD_XL1.0
PROMPT: minimalist style {prompt} . simple, clean, uncluttered, modern, elegant
NEGATIVE_PROMPT: ornate, complicated, highly detailed, cluttered, disordered, messy, noisy
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD_XL1.0/e85dd1ccc7f22bdac054d74ba58521b2.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD_XL1.0/e85dd1ccc7f22bdac054d74ba58521b2.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: misc-monochrome
@@ -1893,7 +1893,7 @@ MANTRAS:
BASE_MODEL: SD_XL1.0
PROMPT: monochrome {prompt} . black and white, contrast, tone, texture, detailed
NEGATIVE_PROMPT: colorful, vibrant, noisy, blurry, deformed
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD_XL1.0/cc793ada6b47561f4b63aa66dcd282ac.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD_XL1.0/cc793ada6b47561f4b63aa66dcd282ac.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: misc-nautical
@@ -1903,7 +1903,7 @@ MANTRAS:
BASE_MODEL: SD_XL1.0
PROMPT: nautical-themed {prompt} . sea, ocean, ships, maritime, beach, marine life, highly detailed
NEGATIVE_PROMPT: landlocked, desert, mountains, urban, rustic
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD_XL1.0/3d9f6528180670804a2c5e85c7665c42.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD_XL1.0/3d9f6528180670804a2c5e85c7665c42.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: misc-space
@@ -1913,7 +1913,7 @@ MANTRAS:
BASE_MODEL: SD_XL1.0
PROMPT: space-themed {prompt} . cosmic, celestial, stars, galaxies, nebulas, planets, science fiction, highly detailed
NEGATIVE_PROMPT: earthly, mundane, ground-based, realism
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD_XL1.0/6f5742d23b43fc99cc01c8b68518df7c.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD_XL1.0/6f5742d23b43fc99cc01c8b68518df7c.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: misc-stained glass
@@ -1923,7 +1923,7 @@ MANTRAS:
BASE_MODEL: SD_XL1.0
PROMPT: stained glass style {prompt} . vibrant, beautiful, translucent, intricate, detailed
NEGATIVE_PROMPT: ugly, deformed, noisy, blurry, low contrast, realism, photorealistic
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD_XL1.0/ab0512ced9ed572075c49ad4f9f9a45d.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD_XL1.0/ab0512ced9ed572075c49ad4f9f9a45d.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: misc-techwear fashion
@@ -1933,7 +1933,7 @@ MANTRAS:
BASE_MODEL: SD_XL1.0
PROMPT: techwear fashion {prompt} . futuristic, cyberpunk, urban, tactical, sleek, dark, highly detailed
NEGATIVE_PROMPT: vintage, rural, colorful, low contrast, realism, sketch, watercolor
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD_XL1.0/652a6bdb1b36860041222a458c7915d0.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD_XL1.0/652a6bdb1b36860041222a458c7915d0.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: misc-tribal
@@ -1943,7 +1943,7 @@ MANTRAS:
BASE_MODEL: SD_XL1.0
PROMPT: tribal style {prompt} . indigenous, ethnic, traditional patterns, bold, natural colors, highly detailed
NEGATIVE_PROMPT: modern, futuristic, minimalist, pastel
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD_XL1.0/1ecdaf153ece5e16250b87020b7a209b.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD_XL1.0/1ecdaf153ece5e16250b87020b7a209b.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: misc-zentangle
@@ -1953,7 +1953,7 @@ MANTRAS:
BASE_MODEL: SD_XL1.0
PROMPT: zentangle {prompt} . intricate, abstract, monochrome, patterns, meditative, highly detailed
NEGATIVE_PROMPT: colorful, representative, simplistic, large fields of color
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD_XL1.0/80f3488cdb69f0ff13d83a4feac4499d.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD_XL1.0/80f3488cdb69f0ff13d83a4feac4499d.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: papercraft-collage
@@ -1963,7 +1963,7 @@ MANTRAS:
BASE_MODEL: SD_XL1.0
PROMPT: collage style {prompt} . mixed media, layered, textural, detailed, artistic
NEGATIVE_PROMPT: ugly, deformed, noisy, blurry, low contrast, realism, photorealistic
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD_XL1.0/c9bbdaba28358faf1a8c1df44b3de950.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD_XL1.0/c9bbdaba28358faf1a8c1df44b3de950.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: papercraft-flat papercut
@@ -1973,7 +1973,7 @@ MANTRAS:
BASE_MODEL: SD_XL1.0
PROMPT: flat papercut style {prompt} . silhouette, clean cuts, paper, sharp edges, minimalist, color block
NEGATIVE_PROMPT: 3D, high detail, noise, grainy, blurry, painting, drawing, photo, disfigured
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD_XL1.0/1bffcd9a4086b29c367b8301f26eed3b.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD_XL1.0/1bffcd9a4086b29c367b8301f26eed3b.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: papercraft-kirigami
@@ -1983,7 +1983,7 @@ MANTRAS:
BASE_MODEL: SD_XL1.0
PROMPT: kirigami representation of {prompt} . 3D, paper folding, paper cutting, Japanese, intricate, symmetrical, precision, clean lines
NEGATIVE_PROMPT: painting, drawing, 2D, noisy, blurry, deformed
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD_XL1.0/2e5f95977b97b2a6248924e118a23076.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD_XL1.0/2e5f95977b97b2a6248924e118a23076.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: papercraft-paper mache
@@ -1993,7 +1993,7 @@ MANTRAS:
BASE_MODEL: SD_XL1.0
PROMPT: paper mache representation of {prompt} . 3D, sculptural, textured, handmade, vibrant, fun
NEGATIVE_PROMPT: 2D, flat, photo, sketch, digital art, deformed, noisy, blurry
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD_XL1.0/68441f668fcf7a51db5fc9b9d4d45ce7.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD_XL1.0/68441f668fcf7a51db5fc9b9d4d45ce7.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: papercraft-paper quilling
@@ -2003,7 +2003,7 @@ MANTRAS:
BASE_MODEL: SD_XL1.0
PROMPT: paper quilling art of {prompt} . intricate, delicate, curling, rolling, shaping, coiling, loops, 3D, dimensional, ornamental
NEGATIVE_PROMPT: photo, painting, drawing, 2D, flat, deformed, noisy, blurry
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD_XL1.0/8c0504eb14341b66796612c46bb3748b.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD_XL1.0/8c0504eb14341b66796612c46bb3748b.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: papercraft-papercut collage
@@ -2013,7 +2013,7 @@ MANTRAS:
BASE_MODEL: SD_XL1.0
PROMPT: papercut collage of {prompt} . mixed media, textured paper, overlapping, asymmetrical, abstract, vibrant
NEGATIVE_PROMPT: photo, 3D, realistic, drawing, painting, high detail, disfigured
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD_XL1.0/217e7c8b905b63c63c94bd6ff8fe3477.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD_XL1.0/217e7c8b905b63c63c94bd6ff8fe3477.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: papercraft-papercut shadow box
@@ -2023,7 +2023,7 @@ MANTRAS:
BASE_MODEL: SD_XL1.0
PROMPT: 3D papercut shadow box of {prompt} . layered, dimensional, depth, silhouette, shadow, papercut, handmade, high contrast
NEGATIVE_PROMPT: painting, drawing, photo, 2D, flat, high detail, blurry, noisy, disfigured
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD_XL1.0/2af0d61de1b17a5a5257f512549f9616.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD_XL1.0/2af0d61de1b17a5a5257f512549f9616.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: papercraft-stacked papercut
@@ -2033,7 +2033,7 @@ MANTRAS:
BASE_MODEL: SD_XL1.0
PROMPT: stacked papercut art of {prompt} . 3D, layered, dimensional, depth, precision cut, stacked layers, papercut, high contrast
NEGATIVE_PROMPT: 2D, flat, noisy, blurry, painting, drawing, photo, deformed
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD_XL1.0/62618e32e90539827e0eb279a6ea170a.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD_XL1.0/62618e32e90539827e0eb279a6ea170a.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: papercraft-thick layered papercut
@@ -2043,7 +2043,7 @@ MANTRAS:
BASE_MODEL: SD_XL1.0
PROMPT: thick layered papercut art of {prompt} . deep 3D, volumetric, dimensional, depth, thick paper, high stack, heavy texture, tangible layers
NEGATIVE_PROMPT: 2D, flat, thin paper, low stack, smooth texture, painting, drawing, photo, deformed
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD_XL1.0/17008c40a6be8d41d3921ee88bac27ad.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD_XL1.0/17008c40a6be8d41d3921ee88bac27ad.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: photo-alien
@@ -2053,7 +2053,7 @@ MANTRAS:
BASE_MODEL: SD_XL1.0
PROMPT: alien-themed {prompt} . extraterrestrial, cosmic, otherworldly, mysterious, sci-fi, highly detailed
NEGATIVE_PROMPT: earthly, mundane, common, realistic, simple
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD_XL1.0/eae6043dee2b2d94cd9a22cb044db8b3.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD_XL1.0/eae6043dee2b2d94cd9a22cb044db8b3.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: photo-film noir
@@ -2063,7 +2063,7 @@ MANTRAS:
BASE_MODEL: SD_XL1.0
PROMPT: film noir style {prompt} . monochrome, high contrast, dramatic shadows, 1940s style, mysterious, cinematic
NEGATIVE_PROMPT: ugly, deformed, noisy, blurry, low contrast, realism, photorealistic, vibrant, colorful
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD_XL1.0/0b3629be5ebb7cda463877a1993a0298.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD_XL1.0/0b3629be5ebb7cda463877a1993a0298.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: photo-glamour
@@ -2073,7 +2073,7 @@ MANTRAS:
BASE_MODEL: SD_XL1.0
PROMPT: glamorous photo {prompt} . high fashion, luxurious, extravagant, stylish, sensual, opulent, elegance, stunning beauty, professional, high contrast, detailed
NEGATIVE_PROMPT: ugly, deformed, noisy, blurry, distorted, grainy, sketch, low contrast, dull, plain, modest
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD_XL1.0/f85dc6aa5d7f7d6d3663f2270e276796.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD_XL1.0/f85dc6aa5d7f7d6d3663f2270e276796.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: photo-hdr
@@ -2083,7 +2083,7 @@ MANTRAS:
BASE_MODEL: SD_XL1.0
PROMPT: HDR photo of {prompt} . High dynamic range, vivid, rich details, clear shadows and highlights, realistic, intense, enhanced contrast, highly detailed
NEGATIVE_PROMPT: flat, low contrast, oversaturated, underexposed, overexposed, blurred, noisy
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD_XL1.0/269a98b284ae1345b0e5ac1f85c33179.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD_XL1.0/269a98b284ae1345b0e5ac1f85c33179.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: photo-iphone photographic
@@ -2093,7 +2093,7 @@ MANTRAS:
BASE_MODEL: SD_XL1.0
PROMPT: iphone photo {prompt} . large depth of field, deep depth of field, highly detailed
NEGATIVE_PROMPT: drawing, painting, crayon, sketch, graphite, impressionist, noisy, blurry, soft, deformed, ugly, shallow depth of field, bokeh
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD_XL1.0/48c556a6b3c3a533847b80b031cd4962.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD_XL1.0/48c556a6b3c3a533847b80b031cd4962.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: photo-long exposure
@@ -2103,7 +2103,7 @@ MANTRAS:
BASE_MODEL: SD_XL1.0
PROMPT: long exposure photo of {prompt} . Blurred motion, streaks of light, surreal, dreamy, ghosting effect, highly detailed
NEGATIVE_PROMPT: static, noisy, deformed, shaky, abrupt, flat, low contrast
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD_XL1.0/fda88c3fc43ea8cc04ce9b5c0261627f.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD_XL1.0/fda88c3fc43ea8cc04ce9b5c0261627f.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: photo-neon noir
@@ -2113,7 +2113,7 @@ MANTRAS:
BASE_MODEL: SD_XL1.0
PROMPT: neon noir {prompt} . cyberpunk, dark, rainy streets, neon signs, high contrast, low light, vibrant, highly detailed
NEGATIVE_PROMPT: bright, sunny, daytime, low contrast, black and white, sketch, watercolor
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD_XL1.0/8a5b71434592771e064af4b9017b59d6.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD_XL1.0/8a5b71434592771e064af4b9017b59d6.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: photo-silhouette
@@ -2123,7 +2123,7 @@ MANTRAS:
BASE_MODEL: SD_XL1.0
PROMPT: silhouette style {prompt} . high contrast, minimalistic, black and white, stark, dramatic
NEGATIVE_PROMPT: ugly, deformed, noisy, blurry, low contrast, color, realism, photorealistic
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD_XL1.0/1892a37e66d33cdd9b713aaab6b8c597.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD_XL1.0/1892a37e66d33cdd9b713aaab6b8c597.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: photo-tilt-shift
@@ -2133,7 +2133,7 @@ MANTRAS:
BASE_MODEL: SD_XL1.0
PROMPT: tilt-shift photo of {prompt} . selective focus, miniature effect, blurred background, highly detailed, vibrant, perspective control
NEGATIVE_PROMPT: blurry, noisy, deformed, flat, low contrast, unrealistic, oversaturated, underexposed
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD_XL1.0/d058a157de848a5c03d9a3e1e0e560a2.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD_XL1.0/d058a157de848a5c03d9a3e1e0e560a2.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: cinematic-diva
@@ -2143,7 +2143,7 @@ MANTRAS:
BASE_MODEL: SD1.5
PROMPT: UHD, 8K, ultra detailed, a cinematic photograph of {prompt}, beautiful lighting, great composition
NEGATIVE_PROMPT: ugly, deformed, noisy, blurry, NSFW
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD1.5/967b1852ea26dcf41360fc5542a0df6b.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD1.5/967b1852ea26dcf41360fc5542a0df6b.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: Abstract Expressionism
@@ -2153,7 +2153,7 @@ MANTRAS:
BASE_MODEL: SD1.5
PROMPT: Abstract Expressionism Art, {prompt}, High contrast, minimalistic, colorful, stark, dramatic, expressionism
NEGATIVE_PROMPT: ugly, deformed, noisy, blurry, low contrast, realism, photorealistic
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD1.5/11667c7a085b53a6ffbb76b83788f8b5.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD1.5/11667c7a085b53a6ffbb76b83788f8b5.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: Academia
@@ -2163,7 +2163,7 @@ MANTRAS:
BASE_MODEL: SD1.5
PROMPT: Academia, {prompt}, preppy Ivy League style, stark, dramatic, chic boarding school, academia
NEGATIVE_PROMPT: ugly, deformed, noisy, blurry, low contrast, grunge, sloppy, unkempt
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD1.5/c95197ef78312e2bbd45883bfbfa095a.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD1.5/c95197ef78312e2bbd45883bfbfa095a.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: Action Figure
@@ -2173,7 +2173,7 @@ MANTRAS:
BASE_MODEL: SD1.5
PROMPT: Action Figure, {prompt}, plastic collectable action figure, collectable toy action figure
NEGATIVE_PROMPT: ugly, deformed, noisy, blurry, low contrast
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD1.5/24ac67fe21833fc1300fba09d5de6090.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD1.5/24ac67fe21833fc1300fba09d5de6090.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: Adorable 3D Character
@@ -2183,7 +2183,7 @@ MANTRAS:
BASE_MODEL: SD1.5
PROMPT: Adorable 3D Character, {prompt}, 3D render, adorable character, 3D art
NEGATIVE_PROMPT: ugly, deformed, noisy, blurry, low contrast, grunge, sloppy, unkempt, photograph, photo, realistic
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD1.5/31a0ffbfc93b5b336a3bedc0a9985a02.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD1.5/31a0ffbfc93b5b336a3bedc0a9985a02.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: Adorable Kawaii
@@ -2193,7 +2193,7 @@ MANTRAS:
BASE_MODEL: SD1.5
PROMPT: Adorable Kawaii, {prompt}, pretty, cute, adorable, kawaii
NEGATIVE_PROMPT: ugly, deformed, noisy, blurry, low contrast, gothic, dark, moody, monochromatic
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD1.5/82624c429d504c8290d4c9147be64029.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD1.5/82624c429d504c8290d4c9147be64029.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: Art Deco
@@ -2203,7 +2203,7 @@ MANTRAS:
BASE_MODEL: SD1.5
PROMPT: Art Deco, {prompt}, sleek, geometric forms, art deco style
NEGATIVE_PROMPT: ugly, deformed, noisy, blurry, low contrast
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD1.5/c60ef3e7ada8774c92bb6e73c570f819.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD1.5/c60ef3e7ada8774c92bb6e73c570f819.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: Art Nouveau
@@ -2213,7 +2213,7 @@ MANTRAS:
BASE_MODEL: SD1.5
PROMPT: Art Nouveau, beautiful art, {prompt}, sleek, organic forms, long, sinuous, art nouveau style
NEGATIVE_PROMPT: ugly, deformed, noisy, blurry, low contrast, industrial, mechanical
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD1.5/153d83e71fbf145d0aa5c41ecab0a505.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD1.5/153d83e71fbf145d0aa5c41ecab0a505.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: Astral Aura
@@ -2223,7 +2223,7 @@ MANTRAS:
BASE_MODEL: SD1.5
PROMPT: Astral Aura, {prompt}, astral, colorful aura, vibrant energy
NEGATIVE_PROMPT: ugly, deformed, noisy, blurry, low contrast
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD1.5/e093c9d0f81037002e88f2a6c3f38a55.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD1.5/e093c9d0f81037002e88f2a6c3f38a55.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: Avant-garde
@@ -2233,7 +2233,7 @@ MANTRAS:
BASE_MODEL: SD1.5
PROMPT: Avant-garde, {prompt}, unusual, experimental, avant-garde art
NEGATIVE_PROMPT: ugly, deformed, noisy, blurry, low contrast
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD1.5/9921d1944893466edfc6a060faf4070e.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD1.5/9921d1944893466edfc6a060faf4070e.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: Baroque
@@ -2243,7 +2243,7 @@ MANTRAS:
BASE_MODEL: SD1.5
PROMPT: Baroque, {prompt}, dramatic, exuberant, grandeur, baroque art
NEGATIVE_PROMPT: ugly, deformed, noisy, blurry, low contrast
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD1.5/d8279be4bb34e5cb00a95919412154a4.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD1.5/d8279be4bb34e5cb00a95919412154a4.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: Bauhaus-Style Poster
@@ -2253,7 +2253,7 @@ MANTRAS:
BASE_MODEL: SD1.5
PROMPT: Bauhaus-Style Poster, {prompt}, simple geometric shapes, clean lines, primary colors, Bauhaus-Style Poster
NEGATIVE_PROMPT: ugly, deformed, noisy, blurry, low contrast
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD1.5/4bd18b32c23e13b9e4fc7f65a1916eab.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD1.5/4bd18b32c23e13b9e4fc7f65a1916eab.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: Blueprint Schematic Drawing
@@ -2263,7 +2263,7 @@ MANTRAS:
BASE_MODEL: SD1.5
PROMPT: Blueprint Schematic Drawing, {prompt}, technical drawing, blueprint, schematic
NEGATIVE_PROMPT: ugly, deformed, noisy, blurry, low contrast
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD1.5/62392c3715267f7162a37a8ff1caa3a1.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD1.5/62392c3715267f7162a37a8ff1caa3a1.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: Caricature
@@ -2273,7 +2273,7 @@ MANTRAS:
BASE_MODEL: SD1.5
PROMPT: Caricature, {prompt}, exaggerated, comical, caricature
NEGATIVE_PROMPT: ugly, deformed, noisy, blurry, low contrast, realistic
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD1.5/894f40ed44b37c3372e6a22b8ae577a4.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD1.5/894f40ed44b37c3372e6a22b8ae577a4.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: Cel Shaded Art
@@ -2283,7 +2283,7 @@ MANTRAS:
BASE_MODEL: SD1.5
PROMPT: Cel Shaded Art, {prompt}, 2D, flat color, toon shading, cel shaded style
NEGATIVE_PROMPT: ugly, deformed, noisy, blurry, low contrast
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD1.5/71c2e8a2cd1031b2bfae1640f7b72c88.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD1.5/71c2e8a2cd1031b2bfae1640f7b72c88.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: Character Design Sheet
@@ -2293,7 +2293,7 @@ MANTRAS:
BASE_MODEL: SD1.5
PROMPT: Character Design Sheet, {prompt}, character reference sheet, character turn around
NEGATIVE_PROMPT: ugly, deformed, noisy, blurry, low contrast
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD1.5/eacf2134aa51d4b4a6f2f35cc170f315.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD1.5/eacf2134aa51d4b4a6f2f35cc170f315.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: Classicism Art
@@ -2303,7 +2303,7 @@ MANTRAS:
BASE_MODEL: SD1.5
PROMPT: Classicism Art, {prompt}, inspired by Roman and Greek culture, clarity, harmonious, classicism art
NEGATIVE_PROMPT: ugly, deformed, noisy, blurry, low contrast
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD1.5/10025b4f3a09e6134086e3cdec4ef2c8.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD1.5/10025b4f3a09e6134086e3cdec4ef2c8.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: Color Field Painting
@@ -2313,7 +2313,7 @@ MANTRAS:
BASE_MODEL: SD1.5
PROMPT: Color Field Painting, {prompt}, abstract, simple, geometic, color field painting style
NEGATIVE_PROMPT: ugly, deformed, noisy, blurry, low contrast
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD1.5/80e5b4075c572c04cbb4e48c37b8366b.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD1.5/80e5b4075c572c04cbb4e48c37b8366b.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: Colored Pencil Art
@@ -2323,7 +2323,7 @@ MANTRAS:
BASE_MODEL: SD1.5
PROMPT: Colored Pencil Art, {prompt}, colored pencil strokes, light color, visible paper texture, colored pencil art
NEGATIVE_PROMPT: ugly, deformed, noisy, blurry, low contrast
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD1.5/9ae235d7f1a7c2a4edab52a5e9f9cbae.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD1.5/9ae235d7f1a7c2a4edab52a5e9f9cbae.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: Conceptual Art
@@ -2333,7 +2333,7 @@ MANTRAS:
BASE_MODEL: SD1.5
PROMPT: Conceptual Art, {prompt}, concept art
NEGATIVE_PROMPT: ugly, deformed, noisy, blurry, low contrast
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD1.5/cf2e6781997c6842a16155fdff911ef8.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD1.5/cf2e6781997c6842a16155fdff911ef8.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: Constructivism
@@ -2343,7 +2343,7 @@ MANTRAS:
BASE_MODEL: SD1.5
PROMPT: Constructivism Art, {prompt}, minimalistic, geometric forms, constructivism art
NEGATIVE_PROMPT: ugly, deformed, noisy, blurry, low contrast
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD1.5/d07feccabcadfd3310464bedba858bd1.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD1.5/d07feccabcadfd3310464bedba858bd1.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: Cubism
@@ -2353,7 +2353,7 @@ MANTRAS:
BASE_MODEL: SD1.5
PROMPT: Cubism Art, {prompt}, flat geometric forms, cubism art
NEGATIVE_PROMPT: ugly, deformed, noisy, blurry, low contrast
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD1.5/aa8313f6c3cb9cafb9a7ec07db78df1c.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD1.5/aa8313f6c3cb9cafb9a7ec07db78df1c.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: Dadaism
@@ -2363,7 +2363,7 @@ MANTRAS:
BASE_MODEL: SD1.5
PROMPT: Dadaism Art, {prompt}, satirical, nonsensical, dadaism art
NEGATIVE_PROMPT: ugly, deformed, noisy, blurry, low contrast
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD1.5/db27030369cb3ccb042b8aea6bf635e2.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD1.5/db27030369cb3ccb042b8aea6bf635e2.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: Dark Fantasy
@@ -2373,7 +2373,7 @@ MANTRAS:
BASE_MODEL: SD1.5
PROMPT: Dark Fantasy Art, {prompt}, dark, moody, dark fantasy style
NEGATIVE_PROMPT: ugly, deformed, noisy, blurry, low contrast, bright, sunny
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD1.5/c88b6e641c707afc0c8d278ba7e1ac19.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD1.5/c88b6e641c707afc0c8d278ba7e1ac19.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: Dark Moody Atmosphere
@@ -2383,7 +2383,7 @@ MANTRAS:
BASE_MODEL: SD1.5
PROMPT: Dark Moody Atmosphere, {prompt}, dramatic, mysterious, dark moody atmosphere
NEGATIVE_PROMPT: ugly, deformed, noisy, blurry, low contrast, vibrant, colorful, bright
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD1.5/3da915da2f5cedaf243e57e08163f35b.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD1.5/3da915da2f5cedaf243e57e08163f35b.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: DMT Art Style
@@ -2393,7 +2393,7 @@ MANTRAS:
BASE_MODEL: SD1.5
PROMPT: DMT Art Style, {prompt}, bright colors, surreal visuals, swirling patterns, DMT art style
NEGATIVE_PROMPT: ugly, deformed, noisy, blurry, low contrast
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD1.5/d4a823d2bfa912ca4bb56d96f722f08f.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD1.5/d4a823d2bfa912ca4bb56d96f722f08f.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: Doodle Art
@@ -2403,7 +2403,7 @@ MANTRAS:
BASE_MODEL: SD1.5
PROMPT: Doodle Art Style, {prompt}, drawing, freeform, swirling patterns, doodle art style
NEGATIVE_PROMPT: ugly, deformed, noisy, blurry, low contrast
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD1.5/8e1e21745c149b9634d3ce96fc7d505f.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD1.5/8e1e21745c149b9634d3ce96fc7d505f.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: Double Exposure
@@ -2413,7 +2413,7 @@ MANTRAS:
BASE_MODEL: SD1.5
PROMPT: Double Exposure Style, {prompt}, double image ghost effect, image combination, double exposure style
NEGATIVE_PROMPT: ugly, deformed, noisy, blurry, low contrast
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD1.5/efd7aea4af1c4ede99fdfac17350e264.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD1.5/efd7aea4af1c4ede99fdfac17350e264.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: Dripping Paint Splatter Art
@@ -2423,7 +2423,7 @@ MANTRAS:
BASE_MODEL: SD1.5
PROMPT: Dripping Paint Splatter Art, {prompt}, dramatic, paint drips, splatters, dripping paint
NEGATIVE_PROMPT: ugly, deformed, noisy, blurry, low contrast
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD1.5/69fd81f5983107acc3d334af62915851.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD1.5/69fd81f5983107acc3d334af62915851.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: Expressionism
@@ -2433,7 +2433,7 @@ MANTRAS:
BASE_MODEL: SD1.5
PROMPT: Expressionism Art Style, {prompt}, movement, contrast, emotional, exaggerated forms, expressionism art style
NEGATIVE_PROMPT: ugly, deformed, noisy, blurry, low contrast
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD1.5/3dfa862bd1c80cec237e4a5717cea2bd.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD1.5/3dfa862bd1c80cec237e4a5717cea2bd.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: Faded Polaroid Photo
@@ -2443,7 +2443,7 @@ MANTRAS:
BASE_MODEL: SD1.5
PROMPT: Faded Polaroid Photo, {prompt}, analog, old faded photo, old polaroid
NEGATIVE_PROMPT: ugly, deformed, noisy, blurry, low contrast, vibrant, colorful
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD1.5/f152edb4b3ca6248758b48115258ddfa.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD1.5/f152edb4b3ca6248758b48115258ddfa.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: Fauvism
@@ -2453,7 +2453,7 @@ MANTRAS:
BASE_MODEL: SD1.5
PROMPT: Fauvism Art, {prompt}, painterly, bold colors, textured brushwork, fauvism art
NEGATIVE_PROMPT: ugly, deformed, noisy, blurry, low contrast
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD1.5/0506b350cadcf8fca42da764cd6fd5bf.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD1.5/0506b350cadcf8fca42da764cd6fd5bf.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: Flat 2D Art
@@ -2463,7 +2463,7 @@ MANTRAS:
BASE_MODEL: SD1.5
PROMPT: Flat 2D Art, {prompt}, simple flat color, 2-dimensional, Flat 2D Art Style
NEGATIVE_PROMPT: ugly, deformed, noisy, blurry, low contrast, 3D, photo, realistic
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD1.5/940cfd34155634cf051e1b2942cca426.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD1.5/940cfd34155634cf051e1b2942cca426.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: Fortnite Art Style
@@ -2473,7 +2473,7 @@ MANTRAS:
BASE_MODEL: SD1.5
PROMPT: Fortnite Art Style, {prompt}, 3D cartoon, colorful, Fortnite Art Style
NEGATIVE_PROMPT: ugly, deformed, noisy, blurry, low contrast, photo, realistic
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD1.5/156f8d943ff6d283f7a34f265daaa46c.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD1.5/156f8d943ff6d283f7a34f265daaa46c.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: Futurism
@@ -2483,7 +2483,7 @@ MANTRAS:
BASE_MODEL: SD1.5
PROMPT: Futurism Art Style, {prompt}, dynamic, dramatic, Futurism Art Style
NEGATIVE_PROMPT: ugly, deformed, noisy, blurry, low contrast
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD1.5/855283cc2ab6283b627ef32d06a1ae0f.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD1.5/855283cc2ab6283b627ef32d06a1ae0f.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: Glitchcore
@@ -2493,7 +2493,7 @@ MANTRAS:
BASE_MODEL: SD1.5
PROMPT: Glitchcore Art Style, {prompt}, dynamic, dramatic, distorted, vibrant colors, glitchcore art style
NEGATIVE_PROMPT: ugly, deformed, noisy, blurry, low contrast
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD1.5/9af62376402a85774179e82cf7e0dc59.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD1.5/9af62376402a85774179e82cf7e0dc59.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: Glo-fi
@@ -2503,7 +2503,7 @@ MANTRAS:
BASE_MODEL: SD1.5
PROMPT: Glo-fi Art Style, {prompt}, dynamic, dramatic, vibrant colors, glo-fi art style
NEGATIVE_PROMPT: ugly, deformed, noisy, blurry, low contrast
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD1.5/275a6e2a3297cec57f9b5a4a17b0f749.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD1.5/275a6e2a3297cec57f9b5a4a17b0f749.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: Googie Art Style
@@ -2513,7 +2513,7 @@ MANTRAS:
BASE_MODEL: SD1.5
PROMPT: Googie Art Style, {prompt}, dynamic, dramatic, 1950's futurism, bold boomerang angles, Googie art style
NEGATIVE_PROMPT: ugly, deformed, noisy, blurry, low contrast
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD1.5/08ee77586d7bec3f6bad7d60cee3c540.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD1.5/08ee77586d7bec3f6bad7d60cee3c540.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: Graffiti Art
@@ -2523,7 +2523,7 @@ MANTRAS:
BASE_MODEL: SD1.5
PROMPT: Graffiti Art Style, {prompt}, dynamic, dramatic, vibrant colors, graffiti art style
NEGATIVE_PROMPT: ugly, deformed, noisy, blurry, low contrast
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD1.5/57b751b11564cb22cd49ef21f2004a5f.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD1.5/57b751b11564cb22cd49ef21f2004a5f.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: Harlem Renaissance Art
@@ -2533,7 +2533,7 @@ MANTRAS:
BASE_MODEL: SD1.5
PROMPT: Harlem Renaissance Art Style, {prompt}, dynamic, dramatic, 1920s African American culture, Harlem Renaissance art style
NEGATIVE_PROMPT: ugly, deformed, noisy, blurry, low contrast
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD1.5/d09ea3dadcd0a15d8fa247ee74a75e6b.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD1.5/d09ea3dadcd0a15d8fa247ee74a75e6b.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: High Fashion
@@ -2543,7 +2543,7 @@ MANTRAS:
BASE_MODEL: SD1.5
PROMPT: High Fashion, {prompt}, dynamic, dramatic, haute couture, elegant, ornate clothing, High Fashion
NEGATIVE_PROMPT: ugly, deformed, noisy, blurry, low contrast
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD1.5/868f752bbb5ef992a0be36d7d13de3be.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD1.5/868f752bbb5ef992a0be36d7d13de3be.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: Idyllic
@@ -2553,7 +2553,7 @@ MANTRAS:
BASE_MODEL: SD1.5
PROMPT: Idyllic, {prompt}, peaceful, happy, pleasant, happy, harmonious, picturesque, charming
NEGATIVE_PROMPT: ugly, deformed, noisy, blurry, low contrast
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD1.5/55bab29eeb628e7a9ae018e45e7e24db.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD1.5/55bab29eeb628e7a9ae018e45e7e24db.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: Impressionism
@@ -2563,7 +2563,7 @@ MANTRAS:
BASE_MODEL: SD1.5
PROMPT: Impressionism, {prompt}, painterly, small brushstrokes, visible brushstrokes, impressionistic style
NEGATIVE_PROMPT: ugly, deformed, noisy, blurry, low contrast
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD1.5/0312b673dc6858a9864d7f45f0c5c1fc.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD1.5/0312b673dc6858a9864d7f45f0c5c1fc.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: Infographic Drawing
@@ -2573,7 +2573,7 @@ MANTRAS:
BASE_MODEL: SD1.5
PROMPT: Infographic Drawing, {prompt}, diagram, infographic
NEGATIVE_PROMPT: ugly, deformed, noisy, blurry, low contrast
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD1.5/b09151f6e0883d26056b80fcc9d398bb.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD1.5/b09151f6e0883d26056b80fcc9d398bb.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: Ink Dripping Drawing
@@ -2583,7 +2583,7 @@ MANTRAS:
BASE_MODEL: SD1.5
PROMPT: Ink Dripping Drawing, {prompt}, ink drawing, dripping ink
NEGATIVE_PROMPT: ugly, deformed, noisy, blurry, low contrast, colorful, vibrant
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD1.5/5f09912a07e915250a96b2023db15821.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD1.5/5f09912a07e915250a96b2023db15821.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: Japanese Ink Drawing
@@ -2593,7 +2593,7 @@ MANTRAS:
BASE_MODEL: SD1.5
PROMPT: Japanese Ink Drawing, {prompt}, ink drawing, inkwash, Japanese Ink Drawing
NEGATIVE_PROMPT: ugly, deformed, noisy, blurry, low contrast, colorful, vibrant
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD1.5/633ad971ff30fe4717782fc6b5f92fda.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD1.5/633ad971ff30fe4717782fc6b5f92fda.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: Knolling Photography
@@ -2603,7 +2603,7 @@ MANTRAS:
BASE_MODEL: SD1.5
PROMPT: Knolling Photography, {prompt}, flat lay photography, object arrangment, knolling photography
NEGATIVE_PROMPT: ugly, deformed, noisy, blurry, low contrast
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD1.5/89a205be3a276349ecddf0eeca43ed80.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD1.5/89a205be3a276349ecddf0eeca43ed80.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: Light Cheery Atmosphere
@@ -2613,7 +2613,7 @@ MANTRAS:
BASE_MODEL: SD1.5
PROMPT: Light Cheery Atmosphere, {prompt}, happy, joyful, cheerful, carefree, gleeful, lighthearted, pleasant atmosphere
NEGATIVE_PROMPT: ugly, deformed, noisy, blurry, low contrast, monochromatic, dark, moody
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD1.5/0913ac9815f892411f8327a630f51ae4.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD1.5/0913ac9815f892411f8327a630f51ae4.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: Logo Design
@@ -2623,7 +2623,7 @@ MANTRAS:
BASE_MODEL: SD1.5
PROMPT: Logo Design, {prompt}, dynamic graphic art, vector art, minimalist, professional logo design
NEGATIVE_PROMPT: ugly, deformed, noisy, blurry, low contrast
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD1.5/9aa040b0c60d289da9610c91ad9b7c7e.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD1.5/9aa040b0c60d289da9610c91ad9b7c7e.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: Luxurious Elegance
@@ -2633,7 +2633,7 @@ MANTRAS:
BASE_MODEL: SD1.5
PROMPT: Luxurious Elegance, {prompt}, extravagant, ornate, designer, opulent, picturesque, lavish
NEGATIVE_PROMPT: ugly, deformed, noisy, blurry, low contrast
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD1.5/e796e84ed745150f0d4e28e0ac99b4cf.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD1.5/e796e84ed745150f0d4e28e0ac99b4cf.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: Macro Photography
@@ -2643,7 +2643,7 @@ MANTRAS:
BASE_MODEL: SD1.5
PROMPT: Macro Photography, {prompt}, close-up, macro 100mm, macro photography
NEGATIVE_PROMPT: ugly, deformed, noisy, blurry, low contrast
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD1.5/92e8b84379828f38e3d01c7272f41b0b.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD1.5/92e8b84379828f38e3d01c7272f41b0b.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: Mandola Art
@@ -2653,7 +2653,7 @@ MANTRAS:
BASE_MODEL: SD1.5
PROMPT: Mandola art style, {prompt}, complex, circular design, mandola
NEGATIVE_PROMPT: ugly, deformed, noisy, blurry, low contrast
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD1.5/dbf5ca944d9213c3181348666cf337ac.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD1.5/dbf5ca944d9213c3181348666cf337ac.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: Marker Drawing
@@ -2663,7 +2663,7 @@ MANTRAS:
BASE_MODEL: SD1.5
PROMPT: Marker Drawing, {prompt}, bold marker lines, visibile paper texture, marker drawing
NEGATIVE_PROMPT: ugly, deformed, noisy, blurry, low contrast, photograph, realistic
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD1.5/c558745f7a4b77d7ca9a428d8874efe4.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD1.5/c558745f7a4b77d7ca9a428d8874efe4.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: Medievalism
@@ -2673,7 +2673,7 @@ MANTRAS:
BASE_MODEL: SD1.5
PROMPT: Medievalism, {prompt}, inspired by The Middle Ages, medieval art, elaborate patterns and decoration, Medievalism
NEGATIVE_PROMPT: ugly, deformed, noisy, blurry, low contrast
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD1.5/26aa6244359a4fd87f6438a341057901.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD1.5/26aa6244359a4fd87f6438a341057901.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: Minimalism
@@ -2683,7 +2683,7 @@ MANTRAS:
BASE_MODEL: SD1.5
PROMPT: Minimalism, {prompt}, abstract, simple geometic shapes, hard edges, sleek contours, Minimalism
NEGATIVE_PROMPT: ugly, deformed, noisy, blurry, low contrast
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD1.5/dce92a90da6299339cf8e9ebc6596ea2.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD1.5/dce92a90da6299339cf8e9ebc6596ea2.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: Neo-Baroque
@@ -2693,7 +2693,7 @@ MANTRAS:
BASE_MODEL: SD1.5
PROMPT: Neo-Baroque, {prompt}, ornate and elaborate, dynaimc, Neo-Baroque
NEGATIVE_PROMPT: ugly, deformed, noisy, blurry, low contrast
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD1.5/9b6cd8751b18c65b259769b44cfac351.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD1.5/9b6cd8751b18c65b259769b44cfac351.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: Neo-Byzantine
@@ -2703,7 +2703,7 @@ MANTRAS:
BASE_MODEL: SD1.5
PROMPT: Neo-Byzantine, {prompt}, grand decorative religious style, Orthodox Christian inspired, Neo-Byzantine
NEGATIVE_PROMPT: ugly, deformed, noisy, blurry, low contrast
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD1.5/99c67768869b546bf527ef0b1735c0d5.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD1.5/99c67768869b546bf527ef0b1735c0d5.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: Neo-Futurism
@@ -2713,7 +2713,7 @@ MANTRAS:
BASE_MODEL: SD1.5
PROMPT: Neo-Futurism, {prompt}, high-tech, curves, spirals, flowing lines, idealistic future, Neo-Futurism
NEGATIVE_PROMPT: ugly, deformed, noisy, blurry, low contrast
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD1.5/bada1534f7a60187f584febcc92f40d1.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD1.5/bada1534f7a60187f584febcc92f40d1.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: Neo-Impressionism
@@ -2723,7 +2723,7 @@ MANTRAS:
BASE_MODEL: SD1.5
PROMPT: Neo-Impressionism, {prompt}, tiny dabs of color, Pointillism, painterly, Neo-Impressionism
NEGATIVE_PROMPT: ugly, deformed, noisy, blurry, low contrast, photograph, realistic
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD1.5/6bafeac67ce2679b64a86ee1023b53c9.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD1.5/6bafeac67ce2679b64a86ee1023b53c9.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: Neo-Rococo
@@ -2733,7 +2733,7 @@ MANTRAS:
BASE_MODEL: SD1.5
PROMPT: Neo-Rococo, {prompt}, curved forms, naturalistic ornamentation, elaborate, decorative, gaudy, Neo-Rococo
NEGATIVE_PROMPT: ugly, deformed, noisy, blurry, low contrast
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD1.5/9ab0ad2b88e03933ea479357ff1e4435.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD1.5/9ab0ad2b88e03933ea479357ff1e4435.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: Neoclassicism
@@ -2743,7 +2743,7 @@ MANTRAS:
BASE_MODEL: SD1.5
PROMPT: Neoclassicism, {prompt}, ancient Rome and Greece inspired, idealic, sober colors, Neoclassicism
NEGATIVE_PROMPT: ugly, deformed, noisy, blurry, low contrast
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD1.5/83a4e3a2ca577400b05a81b5b2b8650e.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD1.5/83a4e3a2ca577400b05a81b5b2b8650e.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: Op Art
@@ -2753,7 +2753,7 @@ MANTRAS:
BASE_MODEL: SD1.5
PROMPT: Op Art, {prompt}, optical illusion, abstract, geometric pattern, impression of movement, Op Art
NEGATIVE_PROMPT: ugly, deformed, noisy, blurry, low contrast
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD1.5/5f11132803dff2de5213293b91d407d7.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD1.5/5f11132803dff2de5213293b91d407d7.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: Ornate and Intricate
@@ -2763,7 +2763,7 @@ MANTRAS:
BASE_MODEL: SD1.5
PROMPT: Ornate and Intricate, {prompt}, decorative, highly detailed, elaborate, ornate, intricate
NEGATIVE_PROMPT: ugly, deformed, noisy, blurry, low contrast
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD1.5/24b895dca946c8765ad9fa38f720f671.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD1.5/24b895dca946c8765ad9fa38f720f671.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: Pencil Sketch Drawing
@@ -2773,7 +2773,7 @@ MANTRAS:
BASE_MODEL: SD1.5
PROMPT: Pencil Sketch Drawing, {prompt}, black and white drawing, graphite drawing
NEGATIVE_PROMPT: ugly, deformed, noisy, blurry, low contrast
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD1.5/a9056e1eac85e5e4fe96a93917d4cce4.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD1.5/a9056e1eac85e5e4fe96a93917d4cce4.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: Pop Art 2
@@ -2783,7 +2783,7 @@ MANTRAS:
BASE_MODEL: SD1.5
PROMPT: Pop Art, {prompt}, vivid colors, flat color, 2D, strong lines, Pop Art
NEGATIVE_PROMPT: ugly, deformed, noisy, blurry, low contrast, photo, realistic
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD1.5/83c4c06c70a48da6558ff970ece247b6.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD1.5/83c4c06c70a48da6558ff970ece247b6.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: Rococo
@@ -2793,7 +2793,7 @@ MANTRAS:
BASE_MODEL: SD1.5
PROMPT: Rococo, {prompt}, flamboyant, pastel colors, curved lines, elaborate detail, Rococo
NEGATIVE_PROMPT: ugly, deformed, noisy, blurry, low contrast
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD1.5/4850170f410e10bc833b7d00324dff18.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD1.5/4850170f410e10bc833b7d00324dff18.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: Silhouette Art
@@ -2803,7 +2803,7 @@ MANTRAS:
BASE_MODEL: SD1.5
PROMPT: Silhouette Art, {prompt}, high contrast, well defined, Silhouette Art
NEGATIVE_PROMPT: ugly, deformed, noisy, blurry, low contrast
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD1.5/568777f447fc02510b618152726d5002.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD1.5/568777f447fc02510b618152726d5002.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: Simple Vector Art
@@ -2813,7 +2813,7 @@ MANTRAS:
BASE_MODEL: SD1.5
PROMPT: Simple Vector Art, {prompt}, 2D flat, simple shapes, minimalistic, professional graphic, flat color, high contrast, Simple Vector Art
NEGATIVE_PROMPT: ugly, deformed, noisy, blurry, low contrast, 3D, photo, realistic
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD1.5/24d2ab1fd175bf4e9ef3a8327651dd4b.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD1.5/24d2ab1fd175bf4e9ef3a8327651dd4b.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: Sketchup
@@ -2823,7 +2823,7 @@ MANTRAS:
BASE_MODEL: SD1.5
PROMPT: Sketchup, {prompt}, CAD, professional design, Sketchup
NEGATIVE_PROMPT: ugly, deformed, noisy, blurry, low contrast, photo, photograph
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD1.5/337dca7ac49cf7820c85ede096ebde9c.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD1.5/337dca7ac49cf7820c85ede096ebde9c.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: Steampunk 2
@@ -2833,7 +2833,7 @@ MANTRAS:
BASE_MODEL: SD1.5
PROMPT: Steampunk, {prompt}, retrofuturistic science fantasy, steam-powered tech, vintage industry, gears, neo-victorian, steampunk
NEGATIVE_PROMPT: ugly, deformed, noisy, blurry, low contrast
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD1.5/07d7b27cd73f2d43684003563511c15b.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD1.5/07d7b27cd73f2d43684003563511c15b.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: Surrealism
@@ -2843,7 +2843,7 @@ MANTRAS:
BASE_MODEL: SD1.5
PROMPT: Surrealism, {prompt}, expressive, dramatic, organic lines and forms, dreamlike and mysterious, Surrealism
NEGATIVE_PROMPT: ugly, deformed, noisy, blurry, low contrast, realistic
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD1.5/38bae70377b323d1a5f5756d7e04886d.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD1.5/38bae70377b323d1a5f5756d7e04886d.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: Suprematism
@@ -2853,7 +2853,7 @@ MANTRAS:
BASE_MODEL: SD1.5
PROMPT: Suprematism, {prompt}, abstract, limited color palette, geometric forms, Suprematism
NEGATIVE_PROMPT: ugly, deformed, noisy, blurry, low contrast, realistic
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD1.5/c48fbd8cedee84d06b4d875d566f1bb8.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD1.5/c48fbd8cedee84d06b4d875d566f1bb8.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: Terragen
@@ -2863,7 +2863,7 @@ MANTRAS:
BASE_MODEL: SD1.5
PROMPT: Terragen, {prompt}, beautiful massive landscape, epic scenery, Terragen
NEGATIVE_PROMPT: ugly, deformed, noisy, blurry, low contrast
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD1.5/8974cd8e0f38fb7aac117cf0983fc36d.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD1.5/8974cd8e0f38fb7aac117cf0983fc36d.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: Tranquil Relaxing Atmosphere
@@ -2873,7 +2873,7 @@ MANTRAS:
BASE_MODEL: SD1.5
PROMPT: Tranquil Relaxing Atmosphere, {prompt}, calming style, soothing colors, peaceful, idealic, Tranquil Relaxing Atmosphere
NEGATIVE_PROMPT: ugly, deformed, noisy, blurry, low contrast, oversaturated
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD1.5/69170d8443a67be4210af8d5558779c2.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD1.5/69170d8443a67be4210af8d5558779c2.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: Sticker Designs
@@ -2883,7 +2883,7 @@ MANTRAS:
BASE_MODEL: SD1.5
PROMPT: Vector Art Stickers, {prompt}, professional vector design, sticker designs, Sticker Sheet
NEGATIVE_PROMPT: ugly, deformed, noisy, blurry, low contrast
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD1.5/2d1e9867058db2c57f2fe47530de3243.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD1.5/2d1e9867058db2c57f2fe47530de3243.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: Vibrant Rim Light
@@ -2893,7 +2893,7 @@ MANTRAS:
BASE_MODEL: SD1.5
PROMPT: Vibrant Rim Light, {prompt}, bright rim light, high contrast, bold edge light
NEGATIVE_PROMPT: ugly, deformed, noisy, blurry, low contrast
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD1.5/bb08936ca184daba2b30b4a9efb308f2.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD1.5/bb08936ca184daba2b30b4a9efb308f2.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: Volumetric Lighting
@@ -2903,7 +2903,7 @@ MANTRAS:
BASE_MODEL: SD1.5
PROMPT: Volumetric Lighting, {prompt}, light depth, dramatic atmospheric lighting, Volumetric Lighting
NEGATIVE_PROMPT: ugly, deformed, noisy, blurry, low contrast
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD1.5/bbad7964a2ae70b66c72804273f11e74.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD1.5/bbad7964a2ae70b66c72804273f11e74.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: Watercolor 2
@@ -2913,7 +2913,7 @@ MANTRAS:
BASE_MODEL: SD1.5
PROMPT: Watercolor style painting, {prompt}, visible paper texture, colorwash, watercolor
NEGATIVE_PROMPT: ugly, deformed, noisy, blurry, low contrast, photo, realistic
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD1.5/8859d532ae5901cc8457d6118fb9b7da.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD1.5/8859d532ae5901cc8457d6118fb9b7da.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: Whimsical and Playful
@@ -2923,7 +2923,7 @@ MANTRAS:
BASE_MODEL: SD1.5
PROMPT: Whimsical and Playful, {prompt}, imaginative, fantastical, bight colors, stylized, happy, Whimsical and Playful
NEGATIVE_PROMPT: ugly, deformed, noisy, blurry, low contrast, drab, boring, moody
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD1.5/af2267f1942e870be957c37cd73d4359.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD1.5/af2267f1942e870be957c37cd73d4359.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: Fooocus Enhance
@@ -2936,7 +2936,7 @@ MANTRAS:
}
NEGATIVE_PROMPT: (worst quality, low quality, normal quality, lowres, low details, oversaturated, undersaturated, overexposed, underexposed, grayscale, bw, bad photo, bad photography, bad art:1.4), (watermark, signature, text font, username, error, logo, words, letters, digits, autograph, trademark, name:1.2), (blur, blurry, grainy), morbid, ugly, asymmetrical, mutated malformed, mutilated, poorly lit, bad shadow, draft, cropped, out of frame, cut off, censored, jpeg artifacts, out of focus, glitch, duplicate, (airbrushed, cartoon, anime, semi-realistic, cgi, render, blender, digital art, manga, amateur:1.3), (3D ,3D Game, 3D Game Scene, 3D Character:1.1), (bad hands, bad anatomy, bad body, bad face, bad teeth, bad arms, bad legs, deformities:1.3)
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD1.5/e501823a21bbda56592055c9613c1dbb.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD1.5/e501823a21bbda56592055c9613c1dbb.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: Fooocus Sharp
@@ -2946,7 +2946,7 @@ MANTRAS:
BASE_MODEL: SD1.5
PROMPT: cinematic still {prompt} . emotional, harmonious, vignette, 4k epic detailed, shot on kodak, 35mm photo, sharp focus, high budget, cinemascope, moody, epic, gorgeous, film grain, grainy
NEGATIVE_PROMPT: anime, cartoon, graphic, (blur, blurry, bokeh), text, painting, crayon, graphite, abstract, glitch, deformed, mutated, ugly, disfigured
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD1.5/393fb7aab57992a1c3af7cbad01c1001.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD1.5/393fb7aab57992a1c3af7cbad01c1001.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: Fooocus Masterpiece
@@ -2956,7 +2956,7 @@ MANTRAS:
BASE_MODEL: SD1.5
PROMPT: (masterpiece), (best quality), (ultra-detailed), {prompt}, illustration, disheveled hair, detailed eyes, perfect composition, moist skin, intricate details, earrings, by wlop
NEGATIVE_PROMPT: longbody, lowres, bad anatomy, bad hands, missing fingers, pubic hair,extra digit, fewer digits, cropped, worst quality, low quality
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD1.5/9e27c3d1475dacae0ee45cea783aaaf5.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD1.5/9e27c3d1475dacae0ee45cea783aaaf5.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: Fooocus Photograph
@@ -2966,7 +2966,7 @@ MANTRAS:
BASE_MODEL: SD1.5
PROMPT: photograph {prompt}, 50mm . cinematic 4k epic detailed 4k epic detailed photograph shot on kodak detailed cinematic hbo dark moody, 35mm photo, grainy, vignette, vintage, Kodachrome, Lomography, stained, highly detailed, found footage
NEGATIVE_PROMPT: Brad Pitt, bokeh, depth of field, blurry, cropped, regular face, saturated, contrast, deformed iris, deformed pupils, semi-realistic, cgi, 3d, render, sketch, cartoon, drawing, anime, text, cropped, out of frame, worst quality, low quality, jpeg artifacts, ugly, duplicate, morbid, mutilated, extra fingers, mutated hands, poorly drawn hands, poorly drawn face, mutation, deformed, dehydrated, bad anatomy, bad proportions, extra limbs, cloned face, disfigured, gross proportions, malformed limbs, missing arms, missing legs, extra arms, extra legs, fused fingers, too many fingers, long neck
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD1.5/8b2ea41ec15bf1a16d6a837d46dbc2ac.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD1.5/8b2ea41ec15bf1a16d6a837d46dbc2ac.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: Fooocus Negative
@@ -2979,7 +2979,7 @@ MANTRAS:
}
NEGATIVE_PROMPT: deformed, bad anatomy, disfigured, poorly drawn face, mutated, extra limb, ugly, poorly drawn hands, missing limb, floating limbs, disconnected limbs, disconnected head, malformed hands, long neck, mutated hands and fingers, bad hands, missing fingers, cropped, worst quality, low quality, mutation, poorly drawn, huge calf, bad hands, fused hand, missing hand, disappearing arms, disappearing thigh, disappearing calf, disappearing legs, missing fingers, fused fingers, abnormal eye proportion, Abnormal hands, abnormal legs, abnormal feet, abnormal fingers, drawing, painting, crayon, sketch, graphite, impressionist, noisy, blurry, soft, deformed, ugly, anime, cartoon, graphic, text, painting, crayon, graphite, abstract, glitch
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD1.5/daaec2962291137532189b8a31012532.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD1.5/daaec2962291137532189b8a31012532.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: Fooocus Cinematic
@@ -2989,7 +2989,7 @@ MANTRAS:
BASE_MODEL: SD1.5
PROMPT: cinematic still {prompt} . emotional, harmonious, vignette, highly detailed, high budget, bokeh, cinemascope, moody, epic, gorgeous, film grain, grainy
NEGATIVE_PROMPT: anime, cartoon, graphic, text, painting, crayon, graphite, abstract, glitch, deformed, mutated, ugly, disfigured
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD1.5/adc4d52aa5b0afca0593a475ddc9d055.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD1.5/adc4d52aa5b0afca0593a475ddc9d055.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: mre-cinematic-dynamic
@@ -2999,7 +2999,7 @@ MANTRAS:
BASE_MODEL: SD1.5
PROMPT: epic cinematic shot of dynamic {prompt} in motion. main subject of high budget action movie. raw photo, motion blur. best quality, high resolution
NEGATIVE_PROMPT: static, still, motionless, sluggish. drawing, painting, illustration, rendered. low budget. low quality, low resolution
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD1.5/bd2470068e09d9f1b7d0a690c879b3ce.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD1.5/bd2470068e09d9f1b7d0a690c879b3ce.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: mre-spontaneous-picture
@@ -3009,7 +3009,7 @@ MANTRAS:
BASE_MODEL: SD1.5
PROMPT: spontaneous picture of {prompt}, taken by talented amateur. best quality, high resolution. magical moment, natural look. simple but good looking
NEGATIVE_PROMPT: overthinked. low quality, low resolution
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD1.5/19ad6082cee5516ce330641b515467ef.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD1.5/19ad6082cee5516ce330641b515467ef.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: mre-artistic-vision
@@ -3019,7 +3019,7 @@ MANTRAS:
BASE_MODEL: SD1.5
PROMPT: powerful artistic vision of {prompt}. breathtaking masterpiece made by great artist. best quality, high resolution
NEGATIVE_PROMPT: insignificant, flawed, made by bad artist. low quality, low resolution
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD1.5/95af94e50bcb91ae8fd2914a3bf13f1e.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD1.5/95af94e50bcb91ae8fd2914a3bf13f1e.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: mre-dark-dream
@@ -3029,7 +3029,7 @@ MANTRAS:
BASE_MODEL: SD1.5
PROMPT: dark and unsettling dream showing {prompt}. best quality, high resolution. created by genius but depressed mad artist. grim beauty
NEGATIVE_PROMPT: naive, cheerful. comfortable, casual, boring, cliche. low quality, low resolution
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD1.5/572c8c26cc20ac0ee66684e3c5ee4e8c.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD1.5/572c8c26cc20ac0ee66684e3c5ee4e8c.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: mre-gloomy-art
@@ -3039,7 +3039,7 @@ MANTRAS:
BASE_MODEL: SD1.5
PROMPT: astonishing gloomy art made mainly of shadows and lighting, forming {prompt}. masterful usage of lighting, shadows and chiaroscuro. made by black-hearted artist, drawing from darkness. best quality, high resolution
NEGATIVE_PROMPT: low quality, low resolution
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD1.5/66cbdf819e930f7580bd66a41bde7dfe.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD1.5/66cbdf819e930f7580bd66a41bde7dfe.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: mre-bad-dream
@@ -3049,7 +3049,7 @@ MANTRAS:
BASE_MODEL: SD1.5
PROMPT: picture from really bad dream about terrifying {prompt}, true horror. bone-chilling vision. mad world that shouldn't exist. best quality, high resolution
NEGATIVE_PROMPT: nice dream, pleasant experience. low quality, low resolution
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD1.5/b92b2bbfc400db9204fe8249354132b4.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD1.5/b92b2bbfc400db9204fe8249354132b4.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: mre-underground
@@ -3059,7 +3059,7 @@ MANTRAS:
BASE_MODEL: SD1.5
PROMPT: uncanny caliginous vision of {prompt}, created by remarkable underground artist. best quality, high resolution. raw and brutal art, careless but impressive style. inspired by darkness and chaos
NEGATIVE_PROMPT: photography, mainstream, civilized. low quality, low resolution
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD1.5/8d46eca558d791a1f2b41b0ed7bba4d2.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD1.5/8d46eca558d791a1f2b41b0ed7bba4d2.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: mre-surreal-painting
@@ -3069,7 +3069,7 @@ MANTRAS:
BASE_MODEL: SD1.5
PROMPT: surreal painting representing strange vision of {prompt}. harmonious madness, synergy with chance. unique artstyle, mindbending art, magical surrealism. best quality, high resolution
NEGATIVE_PROMPT: photography, illustration, drawing. realistic, possible. logical, sane. low quality, low resolution
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD1.5/58858425832b10d233f7887af4a2022f.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD1.5/58858425832b10d233f7887af4a2022f.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: mre-dynamic-illustration
@@ -3079,7 +3079,7 @@ MANTRAS:
BASE_MODEL: SD1.5
PROMPT: insanely dynamic illustration of {prompt}. best quality, high resolution. crazy artstyle, careless brushstrokes, emotional and fun
NEGATIVE_PROMPT: photography, realistic. static, still, slow, boring. low quality, low resolution
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD1.5/8bf9861d4d3fadcdb98ceec88a941582.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD1.5/8bf9861d4d3fadcdb98ceec88a941582.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: mre-undead-art
@@ -3089,7 +3089,7 @@ MANTRAS:
BASE_MODEL: SD1.5
PROMPT: long forgotten art created by undead artist illustrating {prompt}, tribute to the death and decay. miserable art of the damned. wretched and decaying world. best quality, high resolution
NEGATIVE_PROMPT: alive, playful, living. low quality, low resolution
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD1.5/fada50979ca180006eba9a45a00f3675.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD1.5/fada50979ca180006eba9a45a00f3675.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: mre-elemental-art
@@ -3099,7 +3099,7 @@ MANTRAS:
BASE_MODEL: SD1.5
PROMPT: art illustrating insane amounts of raging elemental energy turning into {prompt}, avatar of elements. magical surrealism, wizardry. best quality, high resolution
NEGATIVE_PROMPT: photography, realistic, real. low quality, low resolution
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD1.5/5895d78cf58c1ca05178991f37cc48ff.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD1.5/5895d78cf58c1ca05178991f37cc48ff.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: mre-space-art
@@ -3109,7 +3109,7 @@ MANTRAS:
BASE_MODEL: SD1.5
PROMPT: winner of inter-galactic art contest illustrating {prompt}, symbol of the interstellar singularity. best quality, high resolution. artstyle previously unseen in the whole galaxy
NEGATIVE_PROMPT: created by human race, low quality, low resolution
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD1.5/e9815495587895a21d970728474c8be6.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD1.5/e9815495587895a21d970728474c8be6.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: mre-ancient-illustration
@@ -3119,7 +3119,7 @@ MANTRAS:
BASE_MODEL: SD1.5
PROMPT: sublime ancient illustration of {prompt}, predating human civilization. crude and simple, but also surprisingly beautiful artwork, made by genius primeval artist. best quality, high resolution
NEGATIVE_PROMPT: low quality, low resolution
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD1.5/151e07c17a89ebaf7688905ea0199862.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD1.5/151e07c17a89ebaf7688905ea0199862.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: mre-brave-art
@@ -3129,7 +3129,7 @@ MANTRAS:
BASE_MODEL: SD1.5
PROMPT: brave, shocking, and brutally true art showing {prompt}. inspired by courage and unlimited creativity. truth found in chaos. best quality, high resolution
NEGATIVE_PROMPT: low quality, low resolution
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD1.5/1a068f2728327d21ebb99285c2ce1370.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD1.5/1a068f2728327d21ebb99285c2ce1370.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: mre-heroic-fantasy
@@ -3139,7 +3139,7 @@ MANTRAS:
BASE_MODEL: SD1.5
PROMPT: heroic fantasy painting of {prompt}, in the dangerous fantasy world. airbrush over oil on canvas. best quality, high resolution
NEGATIVE_PROMPT: low quality, low resolution
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD1.5/78d05472067e0b86c8270fa5476fcb8e.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD1.5/78d05472067e0b86c8270fa5476fcb8e.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: mre-dark-cyberpunk
@@ -3149,7 +3149,7 @@ MANTRAS:
BASE_MODEL: SD1.5
PROMPT: dark cyberpunk illustration of brutal {prompt} in a world without hope, ruled by ruthless criminal corporations. best quality, high resolution
NEGATIVE_PROMPT: low quality, low resolution
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD1.5/a9f50e3162958fd783872d6955ad7d0b.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD1.5/a9f50e3162958fd783872d6955ad7d0b.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: mre-lyrical-geometry
@@ -3159,7 +3159,7 @@ MANTRAS:
BASE_MODEL: SD1.5
PROMPT: geometric and lyrical abstraction painting presenting {prompt}. oil on metal. best quality, high resolution
NEGATIVE_PROMPT: photography, realistic, drawing, rendered. low quality, low resolution
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD1.5/dfabd41d3042ced804bc97ae35e3a7cb.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD1.5/dfabd41d3042ced804bc97ae35e3a7cb.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: mre-sumi-e-symbolic
@@ -3169,7 +3169,7 @@ MANTRAS:
BASE_MODEL: SD1.5
PROMPT: big long brushstrokes of deep black sumi-e turning into symbolic painting of {prompt}. master level raw art. best quality, high resolution
NEGATIVE_PROMPT: photography, rendered. low quality, low resolution
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD1.5/695b1ba687544eaeec9fb5f871917aeb.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD1.5/695b1ba687544eaeec9fb5f871917aeb.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: mre-sumi-e-detailed
@@ -3179,7 +3179,7 @@ MANTRAS:
BASE_MODEL: SD1.5
PROMPT: highly detailed black sumi-e painting of {prompt}. in-depth study of perfection, created by a master. best quality, high resolution
NEGATIVE_PROMPT: low quality, low resolution
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD1.5/16eb95e180385b88794e368b28da1812.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD1.5/16eb95e180385b88794e368b28da1812.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: mre-manga
@@ -3189,7 +3189,7 @@ MANTRAS:
BASE_MODEL: SD1.5
PROMPT: manga artwork presenting {prompt}. created by japanese manga artist. highly emotional. best quality, high resolution
NEGATIVE_PROMPT: low quality, low resolution
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD1.5/ebec631bf467937f82d05958ae59f9dc.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD1.5/ebec631bf467937f82d05958ae59f9dc.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: mre-anime
@@ -3199,7 +3199,7 @@ MANTRAS:
BASE_MODEL: SD1.5
PROMPT: anime artwork illustrating {prompt}. created by japanese anime studio. highly emotional. best quality, high resolution
NEGATIVE_PROMPT: low quality, low resolution
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD1.5/a08149bc8e50f6bc65c0010d4cd416f8.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD1.5/a08149bc8e50f6bc65c0010d4cd416f8.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: mre-comic
@@ -3209,7 +3209,7 @@ MANTRAS:
BASE_MODEL: SD1.5
PROMPT: breathtaking illustration from adult comic book presenting {prompt}. fabulous artwork. best quality, high resolution
NEGATIVE_PROMPT: deformed, ugly, low quality, low resolution
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD1.5/48c65cebf1fa4284d7b8feb619412e65.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD1.5/48c65cebf1fa4284d7b8feb619412e65.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: sai-3d-model
@@ -3219,7 +3219,7 @@ MANTRAS:
BASE_MODEL: SD1.5
PROMPT: professional 3d model {prompt} . octane render, highly detailed, volumetric, dramatic lighting
NEGATIVE_PROMPT: ugly, deformed, noisy, low poly, blurry, painting
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD1.5/c1a765ac089fdfb3c1d11b33c75d2afd.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD1.5/c1a765ac089fdfb3c1d11b33c75d2afd.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: sai-analog film
@@ -3229,7 +3229,7 @@ MANTRAS:
BASE_MODEL: SD1.5
PROMPT: analog film photo {prompt} . faded film, desaturated, 35mm photo, grainy, vignette, vintage, Kodachrome, Lomography, stained, highly detailed, found footage
NEGATIVE_PROMPT: painting, drawing, illustration, glitch, deformed, mutated, cross-eyed, ugly, disfigured
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD1.5/3c46d19957efd7fb78f4ab2bdada5468.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD1.5/3c46d19957efd7fb78f4ab2bdada5468.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: sai-anime
@@ -3239,7 +3239,7 @@ MANTRAS:
BASE_MODEL: SD1.5
PROMPT: anime artwork {prompt} . anime style, key visual, vibrant, studio anime, highly detailed
NEGATIVE_PROMPT: photo, deformed, black and white, realism, disfigured, low contrast
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD1.5/c030e72561eda96abcf738f1370d36ff.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD1.5/c030e72561eda96abcf738f1370d36ff.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: sai-cinematic
@@ -3249,7 +3249,7 @@ MANTRAS:
BASE_MODEL: SD1.5
PROMPT: cinematic film still {prompt} . shallow depth of field, vignette, highly detailed, high budget, bokeh, cinemascope, moody, epic, gorgeous, film grain, grainy
NEGATIVE_PROMPT: anime, cartoon, graphic, text, painting, crayon, graphite, abstract, glitch, deformed, mutated, ugly, disfigured
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD1.5/d9161c0d5cbf2133b2bfc1021c0c5e2a.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD1.5/d9161c0d5cbf2133b2bfc1021c0c5e2a.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: sai-comic book
@@ -3259,7 +3259,7 @@ MANTRAS:
BASE_MODEL: SD1.5
PROMPT: comic {prompt} . graphic illustration, comic art, graphic novel art, vibrant, highly detailed
NEGATIVE_PROMPT: photograph, deformed, glitch, noisy, realistic, stock photo
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD1.5/6759ecb831037367e64c4b36d802be87.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD1.5/6759ecb831037367e64c4b36d802be87.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: sai-craft clay
@@ -3269,7 +3269,7 @@ MANTRAS:
BASE_MODEL: SD1.5
PROMPT: play-doh style {prompt} . sculpture, clay art, centered composition, Claymation
NEGATIVE_PROMPT: sloppy, messy, grainy, highly detailed, ultra textured, photo
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD1.5/8fc51113f725f27326c4398a7457cd6d.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD1.5/8fc51113f725f27326c4398a7457cd6d.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: sai-digital art
@@ -3279,7 +3279,7 @@ MANTRAS:
BASE_MODEL: SD1.5
PROMPT: concept art {prompt} . digital artwork, illustrative, painterly, matte painting, highly detailed
NEGATIVE_PROMPT: photo, photorealistic, realism, ugly
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD1.5/d29adb44458700c4a45ee6edaa04bfb6.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD1.5/d29adb44458700c4a45ee6edaa04bfb6.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: sai-enhance
@@ -3289,7 +3289,7 @@ MANTRAS:
BASE_MODEL: SD1.5
PROMPT: breathtaking {prompt} . award-winning, professional, highly detailed
NEGATIVE_PROMPT: ugly, deformed, noisy, blurry, distorted, grainy
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD1.5/2be0de541ff65f8da80ddc24a65c98d8.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD1.5/2be0de541ff65f8da80ddc24a65c98d8.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: sai-fantasy art
@@ -3299,7 +3299,7 @@ MANTRAS:
BASE_MODEL: SD1.5
PROMPT: ethereal fantasy concept art of {prompt} . magnificent, celestial, ethereal, painterly, epic, majestic, magical, fantasy art, cover art, dreamy
NEGATIVE_PROMPT: photographic, realistic, realism, 35mm film, dslr, cropped, frame, text, deformed, glitch, noise, noisy, off-center, deformed, cross-eyed, closed eyes, bad anatomy, ugly, disfigured, sloppy, duplicate, mutated, black and white
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD1.5/a6f8d92afcd5803dfb2ebecbc92091b6.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD1.5/a6f8d92afcd5803dfb2ebecbc92091b6.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: sai-isometric
@@ -3309,7 +3309,7 @@ MANTRAS:
BASE_MODEL: SD1.5
PROMPT: isometric style {prompt} . vibrant, beautiful, crisp, detailed, ultra detailed, intricate
NEGATIVE_PROMPT: deformed, mutated, ugly, disfigured, blur, blurry, noise, noisy, realistic, photographic
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD1.5/d4e3fcbbfd7b1323bd89decf5d7b0006.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD1.5/d4e3fcbbfd7b1323bd89decf5d7b0006.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: sai-line art
@@ -3319,7 +3319,7 @@ MANTRAS:
BASE_MODEL: SD1.5
PROMPT: line art drawing {prompt} . professional, sleek, modern, minimalist, graphic, line art, vector graphics
NEGATIVE_PROMPT: anime, photorealistic, 35mm film, deformed, glitch, blurry, noisy, off-center, deformed, cross-eyed, closed eyes, bad anatomy, ugly, disfigured, mutated, realism, realistic, impressionism, expressionism, oil, acrylic
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD1.5/034a51b0dd34b018be8859bf45b4f7ed.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD1.5/034a51b0dd34b018be8859bf45b4f7ed.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: sai-lowpoly
@@ -3329,7 +3329,7 @@ MANTRAS:
BASE_MODEL: SD1.5
PROMPT: low-poly style {prompt} . low-poly game art, polygon mesh, jagged, blocky, wireframe edges, centered composition
NEGATIVE_PROMPT: noisy, sloppy, messy, grainy, highly detailed, ultra textured, photo
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD1.5/76b9913e9fa5704b6d30adbde9e1f70f.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD1.5/76b9913e9fa5704b6d30adbde9e1f70f.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: sai-neonpunk
@@ -3339,7 +3339,7 @@ MANTRAS:
BASE_MODEL: SD1.5
PROMPT: neonpunk style {prompt} . cyberpunk, vaporwave, neon, vibes, vibrant, stunningly beautiful, crisp, detailed, sleek, ultramodern, magenta highlights, dark purple shadows, high contrast, cinematic, ultra detailed, intricate, professional
NEGATIVE_PROMPT: painting, drawing, illustration, glitch, deformed, mutated, cross-eyed, ugly, disfigured
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD1.5/7e9ed25bb34008beb5f417df63c4b2fe.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD1.5/7e9ed25bb34008beb5f417df63c4b2fe.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: sai-origami
@@ -3349,7 +3349,7 @@ MANTRAS:
BASE_MODEL: SD1.5
PROMPT: origami style {prompt} . paper art, pleated paper, folded, origami art, pleats, cut and fold, centered composition
NEGATIVE_PROMPT: noisy, sloppy, messy, grainy, highly detailed, ultra textured, photo
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD1.5/924f46a8f276011a0953d7988e90ee25.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD1.5/924f46a8f276011a0953d7988e90ee25.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: sai-photographic
@@ -3359,7 +3359,7 @@ MANTRAS:
BASE_MODEL: SD1.5
PROMPT: cinematic photo {prompt} . 35mm photograph, film, bokeh, professional, 4k, highly detailed
NEGATIVE_PROMPT: drawing, painting, crayon, sketch, graphite, impressionist, noisy, blurry, soft, deformed, ugly
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD1.5/d6a2d8f3d37cc21c20c5dfc13d000b67.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD1.5/d6a2d8f3d37cc21c20c5dfc13d000b67.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: sai-pixel art
@@ -3369,7 +3369,7 @@ MANTRAS:
BASE_MODEL: SD1.5
PROMPT: pixel-art {prompt} . low-res, blocky, pixel art style, 8-bit graphics
NEGATIVE_PROMPT: sloppy, messy, blurry, noisy, highly detailed, ultra textured, photo, realistic
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD1.5/a5ab89c0960be8c1216e65c98d92ae4a.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD1.5/a5ab89c0960be8c1216e65c98d92ae4a.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: sai-texture
@@ -3379,7 +3379,7 @@ MANTRAS:
BASE_MODEL: SD1.5
PROMPT: texture {prompt} top down close-up
NEGATIVE_PROMPT: ugly, deformed, noisy, blurry
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD1.5/ebfeab574283fff2ac096e348a585e6d.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD1.5/ebfeab574283fff2ac096e348a585e6d.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: ads-advertising
@@ -3389,7 +3389,7 @@ MANTRAS:
BASE_MODEL: SD1.5
PROMPT: advertising poster style {prompt} . Professional, modern, product-focused, commercial, eye-catching, highly detailed
NEGATIVE_PROMPT: noisy, blurry, amateurish, sloppy, unattractive
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD1.5/1aa26a16126e2756bf4bf3fda29baa12.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD1.5/1aa26a16126e2756bf4bf3fda29baa12.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: ads-automotive
@@ -3399,7 +3399,7 @@ MANTRAS:
BASE_MODEL: SD1.5
PROMPT: automotive advertisement style {prompt} . sleek, dynamic, professional, commercial, vehicle-focused, high-resolution, highly detailed
NEGATIVE_PROMPT: noisy, blurry, unattractive, sloppy, unprofessional
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD1.5/ddc833b36ca23c85a4f6e7bf0088d081.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD1.5/ddc833b36ca23c85a4f6e7bf0088d081.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: ads-corporate
@@ -3409,7 +3409,7 @@ MANTRAS:
BASE_MODEL: SD1.5
PROMPT: corporate branding style {prompt} . professional, clean, modern, sleek, minimalist, business-oriented, highly detailed
NEGATIVE_PROMPT: noisy, blurry, grungy, sloppy, cluttered, disorganized
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD1.5/df97fa45c7842296c138aca4057db272.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD1.5/df97fa45c7842296c138aca4057db272.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: ads-fashion editorial
@@ -3419,7 +3419,7 @@ MANTRAS:
BASE_MODEL: SD1.5
PROMPT: fashion editorial style {prompt} . high fashion, trendy, stylish, editorial, magazine style, professional, highly detailed
NEGATIVE_PROMPT: outdated, blurry, noisy, unattractive, sloppy
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD1.5/89259be723479cd0b81546b715bea04d.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD1.5/89259be723479cd0b81546b715bea04d.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: ads-food photography
@@ -3429,7 +3429,7 @@ MANTRAS:
BASE_MODEL: SD1.5
PROMPT: food photography style {prompt} . appetizing, professional, culinary, high-resolution, commercial, highly detailed
NEGATIVE_PROMPT: unappetizing, sloppy, unprofessional, noisy, blurry
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD1.5/33acc98f8615940c8cebbac8ce5297b2.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD1.5/33acc98f8615940c8cebbac8ce5297b2.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: ads-gourmet food photography
@@ -3439,7 +3439,7 @@ MANTRAS:
BASE_MODEL: SD1.5
PROMPT: gourmet food photo of {prompt} . soft natural lighting, macro details, vibrant colors, fresh ingredients, glistening textures, bokeh background, styled plating, wooden tabletop, garnished, tantalizing, editorial quality
NEGATIVE_PROMPT: cartoon, anime, sketch, grayscale, dull, overexposed, cluttered, messy plate, deformed
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD1.5/897bbd3f1d232de122796266f3845b50.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD1.5/897bbd3f1d232de122796266f3845b50.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: ads-luxury
@@ -3449,7 +3449,7 @@ MANTRAS:
BASE_MODEL: SD1.5
PROMPT: luxury product style {prompt} . elegant, sophisticated, high-end, luxurious, professional, highly detailed
NEGATIVE_PROMPT: cheap, noisy, blurry, unattractive, amateurish
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD1.5/5b33ecc84dc5ff285a0f2e69f43162cb.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD1.5/5b33ecc84dc5ff285a0f2e69f43162cb.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: ads-real estate
@@ -3459,7 +3459,7 @@ MANTRAS:
BASE_MODEL: SD1.5
PROMPT: real estate photography style {prompt} . professional, inviting, well-lit, high-resolution, property-focused, commercial, highly detailed
NEGATIVE_PROMPT: dark, blurry, unappealing, noisy, unprofessional
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD1.5/1b99b7bcd0476144d80d066e747d8dfc.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD1.5/1b99b7bcd0476144d80d066e747d8dfc.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: ads-retail
@@ -3469,7 +3469,7 @@ MANTRAS:
BASE_MODEL: SD1.5
PROMPT: retail packaging style {prompt} . vibrant, enticing, commercial, product-focused, eye-catching, professional, highly detailed
NEGATIVE_PROMPT: noisy, blurry, amateurish, sloppy, unattractive
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD1.5/0029e46ef36380dde2084257108f8a6f.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD1.5/0029e46ef36380dde2084257108f8a6f.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: artstyle-abstract
@@ -3479,7 +3479,7 @@ MANTRAS:
BASE_MODEL: SD1.5
PROMPT: abstract style {prompt} . non-representational, colors and shapes, expression of feelings, imaginative, highly detailed
NEGATIVE_PROMPT: realistic, photographic, figurative, concrete
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD1.5/8c401cb0a6ea288230222c4985e78667.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD1.5/8c401cb0a6ea288230222c4985e78667.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: artstyle-abstract expressionism
@@ -3489,7 +3489,7 @@ MANTRAS:
BASE_MODEL: SD1.5
PROMPT: abstract expressionist painting {prompt} . energetic brushwork, bold colors, abstract forms, expressive, emotional
NEGATIVE_PROMPT: realistic, photorealistic, low contrast, plain, simple, monochrome
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD1.5/9df6635149c576b65d911c2e4cc6a86b.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD1.5/9df6635149c576b65d911c2e4cc6a86b.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: artstyle-art deco
@@ -3499,7 +3499,7 @@ MANTRAS:
BASE_MODEL: SD1.5
PROMPT: art deco style {prompt} . geometric shapes, bold colors, luxurious, elegant, decorative, symmetrical, ornate, detailed
NEGATIVE_PROMPT: ugly, deformed, noisy, blurry, low contrast, realism, photorealistic, modernist, minimalist
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD1.5/82fff8a25de8075777caf14cb3eb5650.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD1.5/82fff8a25de8075777caf14cb3eb5650.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: artstyle-art nouveau
@@ -3509,7 +3509,7 @@ MANTRAS:
BASE_MODEL: SD1.5
PROMPT: art nouveau style {prompt} . elegant, decorative, curvilinear forms, nature-inspired, ornate, detailed
NEGATIVE_PROMPT: ugly, deformed, noisy, blurry, low contrast, realism, photorealistic, modernist, minimalist
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD1.5/84075c5c0cb4b7a2541c6fbca9835cfd.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD1.5/84075c5c0cb4b7a2541c6fbca9835cfd.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: artstyle-constructivist
@@ -3519,7 +3519,7 @@ MANTRAS:
BASE_MODEL: SD1.5
PROMPT: constructivist style {prompt} . geometric shapes, bold colors, dynamic composition, propaganda art style
NEGATIVE_PROMPT: realistic, photorealistic, low contrast, plain, simple, abstract expressionism
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD1.5/2a634ad0c89ecefbbea4ce5bcab3d5e5.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD1.5/2a634ad0c89ecefbbea4ce5bcab3d5e5.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: artstyle-cubist
@@ -3529,7 +3529,7 @@ MANTRAS:
BASE_MODEL: SD1.5
PROMPT: cubist artwork {prompt} . geometric shapes, abstract, innovative, revolutionary
NEGATIVE_PROMPT: anime, photorealistic, 35mm film, deformed, glitch, low contrast, noisy
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD1.5/2a3d797008c08e12b485d61624741ea6.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD1.5/2a3d797008c08e12b485d61624741ea6.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: artstyle-expressionist
@@ -3539,7 +3539,7 @@ MANTRAS:
BASE_MODEL: SD1.5
PROMPT: expressionist {prompt} . raw, emotional, dynamic, distortion for emotional effect, vibrant, use of unusual colors, detailed
NEGATIVE_PROMPT: realism, symmetry, quiet, calm, photo
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD1.5/83914655659001716a1acede295289d0.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD1.5/83914655659001716a1acede295289d0.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: artstyle-graffiti
@@ -3549,7 +3549,7 @@ MANTRAS:
BASE_MODEL: SD1.5
PROMPT: graffiti style {prompt} . street art, vibrant, urban, detailed, tag, mural
NEGATIVE_PROMPT: ugly, deformed, noisy, blurry, low contrast, realism, photorealistic
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD1.5/f72a23c7623eb480737eb73c08bf8423.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD1.5/f72a23c7623eb480737eb73c08bf8423.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: artstyle-hyperrealism
@@ -3559,7 +3559,7 @@ MANTRAS:
BASE_MODEL: SD1.5
PROMPT: hyperrealistic art {prompt} . extremely high-resolution details, photographic, realism pushed to extreme, fine texture, incredibly lifelike
NEGATIVE_PROMPT: simplified, abstract, unrealistic, impressionistic, low resolution
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD1.5/db378d5a64a8e7ad1e29a4389bda5d1c.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD1.5/db378d5a64a8e7ad1e29a4389bda5d1c.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: artstyle-impressionist
@@ -3569,7 +3569,7 @@ MANTRAS:
BASE_MODEL: SD1.5
PROMPT: impressionist painting {prompt} . loose brushwork, vibrant color, light and shadow play, captures feeling over form
NEGATIVE_PROMPT: anime, photorealistic, 35mm film, deformed, glitch, low contrast, noisy
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD1.5/53b151aec4d5685dfc24511b6705b90e.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD1.5/53b151aec4d5685dfc24511b6705b90e.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: artstyle-pointillism
@@ -3579,7 +3579,7 @@ MANTRAS:
BASE_MODEL: SD1.5
PROMPT: pointillism style {prompt} . composed entirely of small, distinct dots of color, vibrant, highly detailed
NEGATIVE_PROMPT: line drawing, smooth shading, large color fields, simplistic
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD1.5/23b137a409ee8a8c6ee160c1ddf0659f.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD1.5/23b137a409ee8a8c6ee160c1ddf0659f.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: artstyle-pop art
@@ -3589,7 +3589,7 @@ MANTRAS:
BASE_MODEL: SD1.5
PROMPT: pop Art style {prompt} . bright colors, bold outlines, popular culture themes, ironic or kitsch
NEGATIVE_PROMPT: ugly, deformed, noisy, blurry, low contrast, realism, photorealistic, minimalist
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD1.5/bd4faf0e2b7dbc2d0eb21f3ebee97d3d.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD1.5/bd4faf0e2b7dbc2d0eb21f3ebee97d3d.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: artstyle-psychedelic
@@ -3599,7 +3599,7 @@ MANTRAS:
BASE_MODEL: SD1.5
PROMPT: psychedelic style {prompt} . vibrant colors, swirling patterns, abstract forms, surreal, trippy
NEGATIVE_PROMPT: monochrome, black and white, low contrast, realistic, photorealistic, plain, simple
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD1.5/7dc0131817f4c31517581dd4a811067b.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD1.5/7dc0131817f4c31517581dd4a811067b.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: artstyle-renaissance
@@ -3609,7 +3609,7 @@ MANTRAS:
BASE_MODEL: SD1.5
PROMPT: renaissance style {prompt} . realistic, perspective, light and shadow, religious or mythological themes, highly detailed
NEGATIVE_PROMPT: ugly, deformed, noisy, blurry, low contrast, modernist, minimalist, abstract
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD1.5/69796484f61dc2e94d5853f5bbe27c05.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD1.5/69796484f61dc2e94d5853f5bbe27c05.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: artstyle-steampunk
@@ -3619,7 +3619,7 @@ MANTRAS:
BASE_MODEL: SD1.5
PROMPT: steampunk style {prompt} . antique, mechanical, brass and copper tones, gears, intricate, detailed
NEGATIVE_PROMPT: deformed, glitch, noisy, low contrast, anime, photorealistic
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD1.5/985005e28858b03c9500a6eb5bd9e201.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD1.5/985005e28858b03c9500a6eb5bd9e201.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: artstyle-surrealist
@@ -3629,7 +3629,7 @@ MANTRAS:
BASE_MODEL: SD1.5
PROMPT: surrealist art {prompt} . dreamlike, mysterious, provocative, symbolic, intricate, detailed
NEGATIVE_PROMPT: anime, photorealistic, realistic, deformed, glitch, noisy, low contrast
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD1.5/892d19ec3c429b7148562796df0024db.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD1.5/892d19ec3c429b7148562796df0024db.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: artstyle-typography
@@ -3639,7 +3639,7 @@ MANTRAS:
BASE_MODEL: SD1.5
PROMPT: typographic art {prompt} . stylized, intricate, detailed, artistic, text-based
NEGATIVE_PROMPT: ugly, deformed, noisy, blurry, low contrast, realism, photorealistic
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD1.5/9adafe1bb169e1ee3f78ba2c1b1cf8d3.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD1.5/9adafe1bb169e1ee3f78ba2c1b1cf8d3.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: artstyle-watercolor
@@ -3649,7 +3649,7 @@ MANTRAS:
BASE_MODEL: SD1.5
PROMPT: watercolor painting {prompt} . vibrant, beautiful, painterly, detailed, textural, artistic
NEGATIVE_PROMPT: anime, photorealistic, 35mm film, deformed, glitch, low contrast, noisy
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD1.5/29ca23d7a0397e9beaa72e3b63d17551.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD1.5/29ca23d7a0397e9beaa72e3b63d17551.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: futuristic-biomechanical
@@ -3659,7 +3659,7 @@ MANTRAS:
BASE_MODEL: SD1.5
PROMPT: biomechanical style {prompt} . blend of organic and mechanical elements, futuristic, cybernetic, detailed, intricate
NEGATIVE_PROMPT: natural, rustic, primitive, organic, simplistic
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD1.5/5987795487a3fa74469499ae53963d5d.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD1.5/5987795487a3fa74469499ae53963d5d.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: futuristic-biomechanical cyberpunk
@@ -3669,7 +3669,7 @@ MANTRAS:
BASE_MODEL: SD1.5
PROMPT: biomechanical cyberpunk {prompt} . cybernetics, human-machine fusion, dystopian, organic meets artificial, dark, intricate, highly detailed
NEGATIVE_PROMPT: natural, colorful, deformed, sketch, low contrast, watercolor
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD1.5/75b56d7cff9b3f011248b3092ae3b8d2.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD1.5/75b56d7cff9b3f011248b3092ae3b8d2.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: futuristic-cybernetic
@@ -3679,7 +3679,7 @@ MANTRAS:
BASE_MODEL: SD1.5
PROMPT: cybernetic style {prompt} . futuristic, technological, cybernetic enhancements, robotics, artificial intelligence themes
NEGATIVE_PROMPT: ugly, deformed, noisy, blurry, low contrast, realism, photorealistic, historical, medieval
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD1.5/47df6db04290f01aeee7381aaf12ec07.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD1.5/47df6db04290f01aeee7381aaf12ec07.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: futuristic-cybernetic robot
@@ -3689,7 +3689,7 @@ MANTRAS:
BASE_MODEL: SD1.5
PROMPT: cybernetic robot {prompt} . android, AI, machine, metal, wires, tech, futuristic, highly detailed
NEGATIVE_PROMPT: organic, natural, human, sketch, watercolor, low contrast
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD1.5/6f18121b4ba22c8ba7834f404501fa4c.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD1.5/6f18121b4ba22c8ba7834f404501fa4c.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: futuristic-cyberpunk cityscape
@@ -3699,7 +3699,7 @@ MANTRAS:
BASE_MODEL: SD1.5
PROMPT: cyberpunk cityscape {prompt} . neon lights, dark alleys, skyscrapers, futuristic, vibrant colors, high contrast, highly detailed
NEGATIVE_PROMPT: natural, rural, deformed, low contrast, black and white, sketch, watercolor
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD1.5/5e4107dace2c9dd0217a9d1b18ae28f6.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD1.5/5e4107dace2c9dd0217a9d1b18ae28f6.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: futuristic-futuristic
@@ -3709,7 +3709,7 @@ MANTRAS:
BASE_MODEL: SD1.5
PROMPT: futuristic style {prompt} . sleek, modern, ultramodern, high tech, detailed
NEGATIVE_PROMPT: ugly, deformed, noisy, blurry, low contrast, realism, photorealistic, vintage, antique
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD1.5/8a61c0853ee4079bae96ad502a6ae840.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD1.5/8a61c0853ee4079bae96ad502a6ae840.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: futuristic-retro cyberpunk
@@ -3719,7 +3719,7 @@ MANTRAS:
BASE_MODEL: SD1.5
PROMPT: retro cyberpunk {prompt} . 80's inspired, synthwave, neon, vibrant, detailed, retro futurism
NEGATIVE_PROMPT: modern, desaturated, black and white, realism, low contrast
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD1.5/460957bf9a07a58ddec08bf22d5b3698.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD1.5/460957bf9a07a58ddec08bf22d5b3698.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: futuristic-retro futurism
@@ -3729,7 +3729,7 @@ MANTRAS:
BASE_MODEL: SD1.5
PROMPT: retro-futuristic {prompt} . vintage sci-fi, 50s and 60s style, atomic age, vibrant, highly detailed
NEGATIVE_PROMPT: contemporary, realistic, rustic, primitive
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD1.5/0434a7b23a0f936db615d7a9b8e805f1.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD1.5/0434a7b23a0f936db615d7a9b8e805f1.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: futuristic-sci-fi
@@ -3739,7 +3739,7 @@ MANTRAS:
BASE_MODEL: SD1.5
PROMPT: sci-fi style {prompt} . futuristic, technological, alien worlds, space themes, advanced civilizations
NEGATIVE_PROMPT: ugly, deformed, noisy, blurry, low contrast, realism, photorealistic, historical, medieval
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD1.5/7c3bde651f426273758b68a2805d0c8a.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD1.5/7c3bde651f426273758b68a2805d0c8a.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: futuristic-vaporwave
@@ -3749,7 +3749,7 @@ MANTRAS:
BASE_MODEL: SD1.5
PROMPT: vaporwave style {prompt} . retro aesthetic, cyberpunk, vibrant, neon colors, vintage 80s and 90s style, highly detailed
NEGATIVE_PROMPT: monochrome, muted colors, realism, rustic, minimalist, dark
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD1.5/1ebb0bf67ee3ef76288b4c0a2a65d557.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD1.5/1ebb0bf67ee3ef76288b4c0a2a65d557.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: game-bubble bobble
@@ -3759,7 +3759,7 @@ MANTRAS:
BASE_MODEL: SD1.5
PROMPT: Bubble Bobble style {prompt} . 8-bit, cute, pixelated, fantasy, vibrant, reminiscent of Bubble Bobble game
NEGATIVE_PROMPT: realistic, modern, photorealistic, violent, horror
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD1.5/19257352df33228555cb350963d9432a.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD1.5/19257352df33228555cb350963d9432a.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: game-cyberpunk game
@@ -3769,7 +3769,7 @@ MANTRAS:
BASE_MODEL: SD1.5
PROMPT: cyberpunk game style {prompt} . neon, dystopian, futuristic, digital, vibrant, detailed, high contrast, reminiscent of cyberpunk genre video games
NEGATIVE_PROMPT: historical, natural, rustic, low detailed
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD1.5/6165ef47bc859e3dd0e3399ba2264c2b.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD1.5/6165ef47bc859e3dd0e3399ba2264c2b.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: game-fighting game
@@ -3779,7 +3779,7 @@ MANTRAS:
BASE_MODEL: SD1.5
PROMPT: fighting game style {prompt} . dynamic, vibrant, action-packed, detailed character design, reminiscent of fighting video games
NEGATIVE_PROMPT: peaceful, calm, minimalist, photorealistic
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD1.5/aebda69ec1097dc61966995956ae34cc.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD1.5/aebda69ec1097dc61966995956ae34cc.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: game-gta
@@ -3789,7 +3789,7 @@ MANTRAS:
BASE_MODEL: SD1.5
PROMPT: GTA-style artwork {prompt} . satirical, exaggerated, pop art style, vibrant colors, iconic characters, action-packed
NEGATIVE_PROMPT: realistic, black and white, low contrast, impressionist, cubist, noisy, blurry, deformed
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD1.5/edff7ba5fc983468e79e64beb838b829.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD1.5/edff7ba5fc983468e79e64beb838b829.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: game-mario
@@ -3799,7 +3799,7 @@ MANTRAS:
BASE_MODEL: SD1.5
PROMPT: Super Mario style {prompt} . vibrant, cute, cartoony, fantasy, playful, reminiscent of Super Mario series
NEGATIVE_PROMPT: realistic, modern, horror, dystopian, violent
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD1.5/2a229f623ce89160d1f67620599dfc7c.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD1.5/2a229f623ce89160d1f67620599dfc7c.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: game-minecraft
@@ -3809,7 +3809,7 @@ MANTRAS:
BASE_MODEL: SD1.5
PROMPT: Minecraft style {prompt} . blocky, pixelated, vibrant colors, recognizable characters and objects, game assets
NEGATIVE_PROMPT: smooth, realistic, detailed, photorealistic, noise, blurry, deformed
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD1.5/83e77332a9f234fd8c9cddd29e2ec3c7.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD1.5/83e77332a9f234fd8c9cddd29e2ec3c7.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: game-pokemon
@@ -3819,7 +3819,7 @@ MANTRAS:
BASE_MODEL: SD1.5
PROMPT: Pokémon style {prompt} . vibrant, cute, anime, fantasy, reminiscent of Pokémon series
NEGATIVE_PROMPT: realistic, modern, horror, dystopian, violent
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD1.5/9bfe2805e6578875a8dfe2a0ea96c281.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD1.5/9bfe2805e6578875a8dfe2a0ea96c281.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: game-retro arcade
@@ -3829,7 +3829,7 @@ MANTRAS:
BASE_MODEL: SD1.5
PROMPT: retro arcade style {prompt} . 8-bit, pixelated, vibrant, classic video game, old school gaming, reminiscent of 80s and 90s arcade games
NEGATIVE_PROMPT: modern, ultra-high resolution, photorealistic, 3D
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD1.5/76885e0b110f1fdf3eaee52fbaf27abf.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD1.5/76885e0b110f1fdf3eaee52fbaf27abf.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: game-retro game
@@ -3839,7 +3839,7 @@ MANTRAS:
BASE_MODEL: SD1.5
PROMPT: retro game art {prompt} . 16-bit, vibrant colors, pixelated, nostalgic, charming, fun
NEGATIVE_PROMPT: realistic, photorealistic, 35mm film, deformed, glitch, low contrast, noisy
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD1.5/61fbae41c50f56e24dcf20fe3612d456.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD1.5/61fbae41c50f56e24dcf20fe3612d456.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: game-rpg fantasy game
@@ -3849,7 +3849,7 @@ MANTRAS:
BASE_MODEL: SD1.5
PROMPT: role-playing game (RPG) style fantasy {prompt} . detailed, vibrant, immersive, reminiscent of high fantasy RPG games
NEGATIVE_PROMPT: sci-fi, modern, urban, futuristic, low detailed
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD1.5/34797baf58e32b4e1a37753fe9dcff5c.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD1.5/34797baf58e32b4e1a37753fe9dcff5c.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: game-strategy game
@@ -3859,7 +3859,7 @@ MANTRAS:
BASE_MODEL: SD1.5
PROMPT: strategy game style {prompt} . overhead view, detailed map, units, reminiscent of real-time strategy video games
NEGATIVE_PROMPT: first-person view, modern, photorealistic
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD1.5/0d276527d22510a1b5f8f74eac2790df.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD1.5/0d276527d22510a1b5f8f74eac2790df.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: game-streetfighter
@@ -3869,7 +3869,7 @@ MANTRAS:
BASE_MODEL: SD1.5
PROMPT: Street Fighter style {prompt} . vibrant, dynamic, arcade, 2D fighting game, highly detailed, reminiscent of Street Fighter series
NEGATIVE_PROMPT: 3D, realistic, modern, photorealistic, turn-based strategy
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD1.5/f5927fc2b8d4a8212242bd97adcbdfa1.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD1.5/f5927fc2b8d4a8212242bd97adcbdfa1.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: game-zelda
@@ -3879,7 +3879,7 @@ MANTRAS:
BASE_MODEL: SD1.5
PROMPT: Legend of Zelda style {prompt} . vibrant, fantasy, detailed, epic, heroic, reminiscent of The Legend of Zelda series
NEGATIVE_PROMPT: sci-fi, modern, realistic, horror
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD1.5/4f9eadddbc196268258089b8cc4e5c5c.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD1.5/4f9eadddbc196268258089b8cc4e5c5c.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: misc-architectural
@@ -3889,7 +3889,7 @@ MANTRAS:
BASE_MODEL: SD1.5
PROMPT: architectural style {prompt} . clean lines, geometric shapes, minimalist, modern, architectural drawing, highly detailed
NEGATIVE_PROMPT: curved lines, ornate, baroque, abstract, grunge
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD1.5/488545e9fc9417d62961f42d578547d2.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD1.5/488545e9fc9417d62961f42d578547d2.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: misc-disco
@@ -3899,7 +3899,7 @@ MANTRAS:
BASE_MODEL: SD1.5
PROMPT: disco-themed {prompt} . vibrant, groovy, retro 70s style, shiny disco balls, neon lights, dance floor, highly detailed
NEGATIVE_PROMPT: minimalist, rustic, monochrome, contemporary, simplistic
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD1.5/784b0ac35e0c0fdb2df21a95d5ca1c55.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD1.5/784b0ac35e0c0fdb2df21a95d5ca1c55.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: misc-dreamscape
@@ -3909,7 +3909,7 @@ MANTRAS:
BASE_MODEL: SD1.5
PROMPT: dreamscape {prompt} . surreal, ethereal, dreamy, mysterious, fantasy, highly detailed
NEGATIVE_PROMPT: realistic, concrete, ordinary, mundane
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD1.5/2bf77804b5bf352c4e97475b1e8eb29e.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD1.5/2bf77804b5bf352c4e97475b1e8eb29e.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: misc-dystopian
@@ -3919,7 +3919,7 @@ MANTRAS:
BASE_MODEL: SD1.5
PROMPT: dystopian style {prompt} . bleak, post-apocalyptic, somber, dramatic, highly detailed
NEGATIVE_PROMPT: ugly, deformed, noisy, blurry, low contrast, cheerful, optimistic, vibrant, colorful
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD1.5/065db0385e126192cbd27e22ca4f154c.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD1.5/065db0385e126192cbd27e22ca4f154c.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: misc-fairy tale
@@ -3929,7 +3929,7 @@ MANTRAS:
BASE_MODEL: SD1.5
PROMPT: fairy tale {prompt} . magical, fantastical, enchanting, storybook style, highly detailed
NEGATIVE_PROMPT: realistic, modern, ordinary, mundane
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD1.5/578dfe65d9f03e83c95820d4c45cd396.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD1.5/578dfe65d9f03e83c95820d4c45cd396.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: misc-gothic
@@ -3939,7 +3939,7 @@ MANTRAS:
BASE_MODEL: SD1.5
PROMPT: gothic style {prompt} . dark, mysterious, haunting, dramatic, ornate, detailed
NEGATIVE_PROMPT: ugly, deformed, noisy, blurry, low contrast, realism, photorealistic, cheerful, optimistic
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD1.5/332a1f8cd655b724cb48bc5c91b764fc.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD1.5/332a1f8cd655b724cb48bc5c91b764fc.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: misc-grunge
@@ -3949,7 +3949,7 @@ MANTRAS:
BASE_MODEL: SD1.5
PROMPT: grunge style {prompt} . textured, distressed, vintage, edgy, punk rock vibe, dirty, noisy
NEGATIVE_PROMPT: smooth, clean, minimalist, sleek, modern, photorealistic
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD1.5/0ccb4c03c6d983b9f6d05ba383f9d690.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD1.5/0ccb4c03c6d983b9f6d05ba383f9d690.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: misc-horror
@@ -3959,7 +3959,7 @@ MANTRAS:
BASE_MODEL: SD1.5
PROMPT: horror-themed {prompt} . eerie, unsettling, dark, spooky, suspenseful, grim, highly detailed
NEGATIVE_PROMPT: cheerful, bright, vibrant, light-hearted, cute
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD1.5/fdca4780d099a39dc50e4553622fba72.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD1.5/fdca4780d099a39dc50e4553622fba72.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: misc-kawaii
@@ -3969,7 +3969,7 @@ MANTRAS:
BASE_MODEL: SD1.5
PROMPT: kawaii style {prompt} . cute, adorable, brightly colored, cheerful, anime influence, highly detailed
NEGATIVE_PROMPT: dark, scary, realistic, monochrome, abstract
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD1.5/99dab4185e7337189d8959878bfa308b.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD1.5/99dab4185e7337189d8959878bfa308b.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: misc-lovecraftian
@@ -3979,7 +3979,7 @@ MANTRAS:
BASE_MODEL: SD1.5
PROMPT: lovecraftian horror {prompt} . eldritch, cosmic horror, unknown, mysterious, surreal, highly detailed
NEGATIVE_PROMPT: light-hearted, mundane, familiar, simplistic, realistic
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD1.5/b7c9d084ed62c1c2e1ea080ad95af61e.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD1.5/b7c9d084ed62c1c2e1ea080ad95af61e.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: misc-macabre
@@ -3989,7 +3989,7 @@ MANTRAS:
BASE_MODEL: SD1.5
PROMPT: macabre style {prompt} . dark, gothic, grim, haunting, highly detailed
NEGATIVE_PROMPT: bright, cheerful, light-hearted, cartoonish, cute
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD1.5/fd7cf2315b27b0434b909020414e1173.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD1.5/fd7cf2315b27b0434b909020414e1173.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: misc-manga
@@ -3999,7 +3999,7 @@ MANTRAS:
BASE_MODEL: SD1.5
PROMPT: manga style {prompt} . vibrant, high-energy, detailed, iconic, Japanese comic style
NEGATIVE_PROMPT: ugly, deformed, noisy, blurry, low contrast, realism, photorealistic, Western comic style
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD1.5/531aac90b321d39221ba7cf70a97b232.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD1.5/531aac90b321d39221ba7cf70a97b232.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: misc-metropolis
@@ -4009,7 +4009,7 @@ MANTRAS:
BASE_MODEL: SD1.5
PROMPT: metropolis-themed {prompt} . urban, cityscape, skyscrapers, modern, futuristic, highly detailed
NEGATIVE_PROMPT: rural, natural, rustic, historical, simple
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD1.5/eaad79fe3d7160cec6e0656fc3b02d3c.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD1.5/eaad79fe3d7160cec6e0656fc3b02d3c.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: misc-minimalist
@@ -4019,7 +4019,7 @@ MANTRAS:
BASE_MODEL: SD1.5
PROMPT: minimalist style {prompt} . simple, clean, uncluttered, modern, elegant
NEGATIVE_PROMPT: ornate, complicated, highly detailed, cluttered, disordered, messy, noisy
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD1.5/e85dd1ccc7f22bdac054d74ba58521b2.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD1.5/e85dd1ccc7f22bdac054d74ba58521b2.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: misc-monochrome
@@ -4029,7 +4029,7 @@ MANTRAS:
BASE_MODEL: SD1.5
PROMPT: monochrome {prompt} . black and white, contrast, tone, texture, detailed
NEGATIVE_PROMPT: colorful, vibrant, noisy, blurry, deformed
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD1.5/cc793ada6b47561f4b63aa66dcd282ac.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD1.5/cc793ada6b47561f4b63aa66dcd282ac.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: misc-nautical
@@ -4039,7 +4039,7 @@ MANTRAS:
BASE_MODEL: SD1.5
PROMPT: nautical-themed {prompt} . sea, ocean, ships, maritime, beach, marine life, highly detailed
NEGATIVE_PROMPT: landlocked, desert, mountains, urban, rustic
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD1.5/3d9f6528180670804a2c5e85c7665c42.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD1.5/3d9f6528180670804a2c5e85c7665c42.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: misc-space
@@ -4049,7 +4049,7 @@ MANTRAS:
BASE_MODEL: SD1.5
PROMPT: space-themed {prompt} . cosmic, celestial, stars, galaxies, nebulas, planets, science fiction, highly detailed
NEGATIVE_PROMPT: earthly, mundane, ground-based, realism
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD1.5/6f5742d23b43fc99cc01c8b68518df7c.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD1.5/6f5742d23b43fc99cc01c8b68518df7c.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: misc-stained glass
@@ -4059,7 +4059,7 @@ MANTRAS:
BASE_MODEL: SD1.5
PROMPT: stained glass style {prompt} . vibrant, beautiful, translucent, intricate, detailed
NEGATIVE_PROMPT: ugly, deformed, noisy, blurry, low contrast, realism, photorealistic
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD1.5/ab0512ced9ed572075c49ad4f9f9a45d.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD1.5/ab0512ced9ed572075c49ad4f9f9a45d.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: misc-techwear fashion
@@ -4069,7 +4069,7 @@ MANTRAS:
BASE_MODEL: SD1.5
PROMPT: techwear fashion {prompt} . futuristic, cyberpunk, urban, tactical, sleek, dark, highly detailed
NEGATIVE_PROMPT: vintage, rural, colorful, low contrast, realism, sketch, watercolor
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD1.5/652a6bdb1b36860041222a458c7915d0.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD1.5/652a6bdb1b36860041222a458c7915d0.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: misc-tribal
@@ -4079,7 +4079,7 @@ MANTRAS:
BASE_MODEL: SD1.5
PROMPT: tribal style {prompt} . indigenous, ethnic, traditional patterns, bold, natural colors, highly detailed
NEGATIVE_PROMPT: modern, futuristic, minimalist, pastel
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD1.5/1ecdaf153ece5e16250b87020b7a209b.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD1.5/1ecdaf153ece5e16250b87020b7a209b.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: misc-zentangle
@@ -4089,7 +4089,7 @@ MANTRAS:
BASE_MODEL: SD1.5
PROMPT: zentangle {prompt} . intricate, abstract, monochrome, patterns, meditative, highly detailed
NEGATIVE_PROMPT: colorful, representative, simplistic, large fields of color
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD1.5/80f3488cdb69f0ff13d83a4feac4499d.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD1.5/80f3488cdb69f0ff13d83a4feac4499d.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: papercraft-collage
@@ -4099,7 +4099,7 @@ MANTRAS:
BASE_MODEL: SD1.5
PROMPT: collage style {prompt} . mixed media, layered, textural, detailed, artistic
NEGATIVE_PROMPT: ugly, deformed, noisy, blurry, low contrast, realism, photorealistic
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD1.5/c9bbdaba28358faf1a8c1df44b3de950.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD1.5/c9bbdaba28358faf1a8c1df44b3de950.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: papercraft-flat papercut
@@ -4109,7 +4109,7 @@ MANTRAS:
BASE_MODEL: SD1.5
PROMPT: flat papercut style {prompt} . silhouette, clean cuts, paper, sharp edges, minimalist, color block
NEGATIVE_PROMPT: 3D, high detail, noise, grainy, blurry, painting, drawing, photo, disfigured
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD1.5/1bffcd9a4086b29c367b8301f26eed3b.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD1.5/1bffcd9a4086b29c367b8301f26eed3b.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: papercraft-kirigami
@@ -4119,7 +4119,7 @@ MANTRAS:
BASE_MODEL: SD1.5
PROMPT: kirigami representation of {prompt} . 3D, paper folding, paper cutting, Japanese, intricate, symmetrical, precision, clean lines
NEGATIVE_PROMPT: painting, drawing, 2D, noisy, blurry, deformed
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD1.5/2e5f95977b97b2a6248924e118a23076.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD1.5/2e5f95977b97b2a6248924e118a23076.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: papercraft-paper mache
@@ -4129,7 +4129,7 @@ MANTRAS:
BASE_MODEL: SD1.5
PROMPT: paper mache representation of {prompt} . 3D, sculptural, textured, handmade, vibrant, fun
NEGATIVE_PROMPT: 2D, flat, photo, sketch, digital art, deformed, noisy, blurry
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD1.5/68441f668fcf7a51db5fc9b9d4d45ce7.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD1.5/68441f668fcf7a51db5fc9b9d4d45ce7.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: papercraft-paper quilling
@@ -4139,7 +4139,7 @@ MANTRAS:
BASE_MODEL: SD1.5
PROMPT: paper quilling art of {prompt} . intricate, delicate, curling, rolling, shaping, coiling, loops, 3D, dimensional, ornamental
NEGATIVE_PROMPT: photo, painting, drawing, 2D, flat, deformed, noisy, blurry
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD1.5/8c0504eb14341b66796612c46bb3748b.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD1.5/8c0504eb14341b66796612c46bb3748b.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: papercraft-papercut collage
@@ -4149,7 +4149,7 @@ MANTRAS:
BASE_MODEL: SD1.5
PROMPT: papercut collage of {prompt} . mixed media, textured paper, overlapping, asymmetrical, abstract, vibrant
NEGATIVE_PROMPT: photo, 3D, realistic, drawing, painting, high detail, disfigured
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD1.5/217e7c8b905b63c63c94bd6ff8fe3477.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD1.5/217e7c8b905b63c63c94bd6ff8fe3477.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: papercraft-papercut shadow box
@@ -4159,7 +4159,7 @@ MANTRAS:
BASE_MODEL: SD1.5
PROMPT: 3D papercut shadow box of {prompt} . layered, dimensional, depth, silhouette, shadow, papercut, handmade, high contrast
NEGATIVE_PROMPT: painting, drawing, photo, 2D, flat, high detail, blurry, noisy, disfigured
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD1.5/2af0d61de1b17a5a5257f512549f9616.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD1.5/2af0d61de1b17a5a5257f512549f9616.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: papercraft-stacked papercut
@@ -4169,7 +4169,7 @@ MANTRAS:
BASE_MODEL: SD1.5
PROMPT: stacked papercut art of {prompt} . 3D, layered, dimensional, depth, precision cut, stacked layers, papercut, high contrast
NEGATIVE_PROMPT: 2D, flat, noisy, blurry, painting, drawing, photo, deformed
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD1.5/62618e32e90539827e0eb279a6ea170a.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD1.5/62618e32e90539827e0eb279a6ea170a.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: papercraft-thick layered papercut
@@ -4179,7 +4179,7 @@ MANTRAS:
BASE_MODEL: SD1.5
PROMPT: thick layered papercut art of {prompt} . deep 3D, volumetric, dimensional, depth, thick paper, high stack, heavy texture, tangible layers
NEGATIVE_PROMPT: 2D, flat, thin paper, low stack, smooth texture, painting, drawing, photo, deformed
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD1.5/17008c40a6be8d41d3921ee88bac27ad.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD1.5/17008c40a6be8d41d3921ee88bac27ad.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: photo-alien
@@ -4189,7 +4189,7 @@ MANTRAS:
BASE_MODEL: SD1.5
PROMPT: alien-themed {prompt} . extraterrestrial, cosmic, otherworldly, mysterious, sci-fi, highly detailed
NEGATIVE_PROMPT: earthly, mundane, common, realistic, simple
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD1.5/eae6043dee2b2d94cd9a22cb044db8b3.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD1.5/eae6043dee2b2d94cd9a22cb044db8b3.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: photo-film noir
@@ -4199,7 +4199,7 @@ MANTRAS:
BASE_MODEL: SD1.5
PROMPT: film noir style {prompt} . monochrome, high contrast, dramatic shadows, 1940s style, mysterious, cinematic
NEGATIVE_PROMPT: ugly, deformed, noisy, blurry, low contrast, realism, photorealistic, vibrant, colorful
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD1.5/0b3629be5ebb7cda463877a1993a0298.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD1.5/0b3629be5ebb7cda463877a1993a0298.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: photo-glamour
@@ -4209,7 +4209,7 @@ MANTRAS:
BASE_MODEL: SD1.5
PROMPT: glamorous photo {prompt} . high fashion, luxurious, extravagant, stylish, sensual, opulent, elegance, stunning beauty, professional, high contrast, detailed
NEGATIVE_PROMPT: ugly, deformed, noisy, blurry, distorted, grainy, sketch, low contrast, dull, plain, modest
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD1.5/f85dc6aa5d7f7d6d3663f2270e276796.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD1.5/f85dc6aa5d7f7d6d3663f2270e276796.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: photo-hdr
@@ -4219,7 +4219,7 @@ MANTRAS:
BASE_MODEL: SD1.5
PROMPT: HDR photo of {prompt} . High dynamic range, vivid, rich details, clear shadows and highlights, realistic, intense, enhanced contrast, highly detailed
NEGATIVE_PROMPT: flat, low contrast, oversaturated, underexposed, overexposed, blurred, noisy
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD1.5/269a98b284ae1345b0e5ac1f85c33179.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD1.5/269a98b284ae1345b0e5ac1f85c33179.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: photo-iphone photographic
@@ -4229,7 +4229,7 @@ MANTRAS:
BASE_MODEL: SD1.5
PROMPT: iphone photo {prompt} . large depth of field, deep depth of field, highly detailed
NEGATIVE_PROMPT: drawing, painting, crayon, sketch, graphite, impressionist, noisy, blurry, soft, deformed, ugly, shallow depth of field, bokeh
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD1.5/48c556a6b3c3a533847b80b031cd4962.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD1.5/48c556a6b3c3a533847b80b031cd4962.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: photo-long exposure
@@ -4239,7 +4239,7 @@ MANTRAS:
BASE_MODEL: SD1.5
PROMPT: long exposure photo of {prompt} . Blurred motion, streaks of light, surreal, dreamy, ghosting effect, highly detailed
NEGATIVE_PROMPT: static, noisy, deformed, shaky, abrupt, flat, low contrast
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD1.5/fda88c3fc43ea8cc04ce9b5c0261627f.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD1.5/fda88c3fc43ea8cc04ce9b5c0261627f.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: photo-neon noir
@@ -4249,7 +4249,7 @@ MANTRAS:
BASE_MODEL: SD1.5
PROMPT: neon noir {prompt} . cyberpunk, dark, rainy streets, neon signs, high contrast, low light, vibrant, highly detailed
NEGATIVE_PROMPT: bright, sunny, daytime, low contrast, black and white, sketch, watercolor
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD1.5/8a5b71434592771e064af4b9017b59d6.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD1.5/8a5b71434592771e064af4b9017b59d6.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: photo-silhouette
@@ -4259,7 +4259,7 @@ MANTRAS:
BASE_MODEL: SD1.5
PROMPT: silhouette style {prompt} . high contrast, minimalistic, black and white, stark, dramatic
NEGATIVE_PROMPT: ugly, deformed, noisy, blurry, low contrast, color, realism, photorealistic
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD1.5/1892a37e66d33cdd9b713aaab6b8c597.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD1.5/1892a37e66d33cdd9b713aaab6b8c597.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: photo-tilt-shift
@@ -4269,7 +4269,7 @@ MANTRAS:
BASE_MODEL: SD1.5
PROMPT: tilt-shift photo of {prompt} . selective focus, miniature effect, blurred background, highly detailed, vibrant, perspective control
NEGATIVE_PROMPT: blurry, noisy, deformed, flat, low contrast, unrealistic, oversaturated, underexposed
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD1.5/d058a157de848a5c03d9a3e1e0e560a2.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD1.5/d058a157de848a5c03d9a3e1e0e560a2.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: cinematic-diva
@@ -4279,7 +4279,7 @@ MANTRAS:
BASE_MODEL: SD2.1
PROMPT: UHD, 8K, ultra detailed, a cinematic photograph of {prompt}, beautiful lighting, great composition
NEGATIVE_PROMPT: ugly, deformed, noisy, blurry, NSFW
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD2.1/967b1852ea26dcf41360fc5542a0df6b.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD2.1/967b1852ea26dcf41360fc5542a0df6b.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: Abstract Expressionism
@@ -4289,7 +4289,7 @@ MANTRAS:
BASE_MODEL: SD2.1
PROMPT: Abstract Expressionism Art, {prompt}, High contrast, minimalistic, colorful, stark, dramatic, expressionism
NEGATIVE_PROMPT: ugly, deformed, noisy, blurry, low contrast, realism, photorealistic
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD2.1/11667c7a085b53a6ffbb76b83788f8b5.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD2.1/11667c7a085b53a6ffbb76b83788f8b5.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: Academia
@@ -4299,7 +4299,7 @@ MANTRAS:
BASE_MODEL: SD2.1
PROMPT: Academia, {prompt}, preppy Ivy League style, stark, dramatic, chic boarding school, academia
NEGATIVE_PROMPT: ugly, deformed, noisy, blurry, low contrast, grunge, sloppy, unkempt
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD2.1/c95197ef78312e2bbd45883bfbfa095a.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD2.1/c95197ef78312e2bbd45883bfbfa095a.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: Action Figure
@@ -4309,7 +4309,7 @@ MANTRAS:
BASE_MODEL: SD2.1
PROMPT: Action Figure, {prompt}, plastic collectable action figure, collectable toy action figure
NEGATIVE_PROMPT: ugly, deformed, noisy, blurry, low contrast
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD2.1/24ac67fe21833fc1300fba09d5de6090.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD2.1/24ac67fe21833fc1300fba09d5de6090.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: Adorable 3D Character
@@ -4319,7 +4319,7 @@ MANTRAS:
BASE_MODEL: SD2.1
PROMPT: Adorable 3D Character, {prompt}, 3D render, adorable character, 3D art
NEGATIVE_PROMPT: ugly, deformed, noisy, blurry, low contrast, grunge, sloppy, unkempt, photograph, photo, realistic
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD2.1/31a0ffbfc93b5b336a3bedc0a9985a02.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD2.1/31a0ffbfc93b5b336a3bedc0a9985a02.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: Adorable Kawaii
@@ -4329,7 +4329,7 @@ MANTRAS:
BASE_MODEL: SD2.1
PROMPT: Adorable Kawaii, {prompt}, pretty, cute, adorable, kawaii
NEGATIVE_PROMPT: ugly, deformed, noisy, blurry, low contrast, gothic, dark, moody, monochromatic
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD2.1/82624c429d504c8290d4c9147be64029.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD2.1/82624c429d504c8290d4c9147be64029.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: Art Deco
@@ -4339,7 +4339,7 @@ MANTRAS:
BASE_MODEL: SD2.1
PROMPT: Art Deco, {prompt}, sleek, geometric forms, art deco style
NEGATIVE_PROMPT: ugly, deformed, noisy, blurry, low contrast
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD2.1/c60ef3e7ada8774c92bb6e73c570f819.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD2.1/c60ef3e7ada8774c92bb6e73c570f819.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: Art Nouveau
@@ -4349,7 +4349,7 @@ MANTRAS:
BASE_MODEL: SD2.1
PROMPT: Art Nouveau, beautiful art, {prompt}, sleek, organic forms, long, sinuous, art nouveau style
NEGATIVE_PROMPT: ugly, deformed, noisy, blurry, low contrast, industrial, mechanical
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD2.1/153d83e71fbf145d0aa5c41ecab0a505.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD2.1/153d83e71fbf145d0aa5c41ecab0a505.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: Astral Aura
@@ -4359,7 +4359,7 @@ MANTRAS:
BASE_MODEL: SD2.1
PROMPT: Astral Aura, {prompt}, astral, colorful aura, vibrant energy
NEGATIVE_PROMPT: ugly, deformed, noisy, blurry, low contrast
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD2.1/e093c9d0f81037002e88f2a6c3f38a55.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD2.1/e093c9d0f81037002e88f2a6c3f38a55.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: Avant-garde
@@ -4369,7 +4369,7 @@ MANTRAS:
BASE_MODEL: SD2.1
PROMPT: Avant-garde, {prompt}, unusual, experimental, avant-garde art
NEGATIVE_PROMPT: ugly, deformed, noisy, blurry, low contrast
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD2.1/9921d1944893466edfc6a060faf4070e.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD2.1/9921d1944893466edfc6a060faf4070e.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: Baroque
@@ -4379,7 +4379,7 @@ MANTRAS:
BASE_MODEL: SD2.1
PROMPT: Baroque, {prompt}, dramatic, exuberant, grandeur, baroque art
NEGATIVE_PROMPT: ugly, deformed, noisy, blurry, low contrast
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD2.1/d8279be4bb34e5cb00a95919412154a4.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD2.1/d8279be4bb34e5cb00a95919412154a4.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: Bauhaus-Style Poster
@@ -4389,7 +4389,7 @@ MANTRAS:
BASE_MODEL: SD2.1
PROMPT: Bauhaus-Style Poster, {prompt}, simple geometric shapes, clean lines, primary colors, Bauhaus-Style Poster
NEGATIVE_PROMPT: ugly, deformed, noisy, blurry, low contrast
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD2.1/4bd18b32c23e13b9e4fc7f65a1916eab.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD2.1/4bd18b32c23e13b9e4fc7f65a1916eab.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: Blueprint Schematic Drawing
@@ -4399,7 +4399,7 @@ MANTRAS:
BASE_MODEL: SD2.1
PROMPT: Blueprint Schematic Drawing, {prompt}, technical drawing, blueprint, schematic
NEGATIVE_PROMPT: ugly, deformed, noisy, blurry, low contrast
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD2.1/62392c3715267f7162a37a8ff1caa3a1.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD2.1/62392c3715267f7162a37a8ff1caa3a1.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: Caricature
@@ -4409,7 +4409,7 @@ MANTRAS:
BASE_MODEL: SD2.1
PROMPT: Caricature, {prompt}, exaggerated, comical, caricature
NEGATIVE_PROMPT: ugly, deformed, noisy, blurry, low contrast, realistic
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD2.1/894f40ed44b37c3372e6a22b8ae577a4.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD2.1/894f40ed44b37c3372e6a22b8ae577a4.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: Cel Shaded Art
@@ -4419,7 +4419,7 @@ MANTRAS:
BASE_MODEL: SD2.1
PROMPT: Cel Shaded Art, {prompt}, 2D, flat color, toon shading, cel shaded style
NEGATIVE_PROMPT: ugly, deformed, noisy, blurry, low contrast
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD2.1/71c2e8a2cd1031b2bfae1640f7b72c88.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD2.1/71c2e8a2cd1031b2bfae1640f7b72c88.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: Character Design Sheet
@@ -4429,7 +4429,7 @@ MANTRAS:
BASE_MODEL: SD2.1
PROMPT: Character Design Sheet, {prompt}, character reference sheet, character turn around
NEGATIVE_PROMPT: ugly, deformed, noisy, blurry, low contrast
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD2.1/eacf2134aa51d4b4a6f2f35cc170f315.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD2.1/eacf2134aa51d4b4a6f2f35cc170f315.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: Classicism Art
@@ -4439,7 +4439,7 @@ MANTRAS:
BASE_MODEL: SD2.1
PROMPT: Classicism Art, {prompt}, inspired by Roman and Greek culture, clarity, harmonious, classicism art
NEGATIVE_PROMPT: ugly, deformed, noisy, blurry, low contrast
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD2.1/10025b4f3a09e6134086e3cdec4ef2c8.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD2.1/10025b4f3a09e6134086e3cdec4ef2c8.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: Color Field Painting
@@ -4449,7 +4449,7 @@ MANTRAS:
BASE_MODEL: SD2.1
PROMPT: Color Field Painting, {prompt}, abstract, simple, geometic, color field painting style
NEGATIVE_PROMPT: ugly, deformed, noisy, blurry, low contrast
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD2.1/80e5b4075c572c04cbb4e48c37b8366b.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD2.1/80e5b4075c572c04cbb4e48c37b8366b.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: Colored Pencil Art
@@ -4459,7 +4459,7 @@ MANTRAS:
BASE_MODEL: SD2.1
PROMPT: Colored Pencil Art, {prompt}, colored pencil strokes, light color, visible paper texture, colored pencil art
NEGATIVE_PROMPT: ugly, deformed, noisy, blurry, low contrast
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD2.1/9ae235d7f1a7c2a4edab52a5e9f9cbae.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD2.1/9ae235d7f1a7c2a4edab52a5e9f9cbae.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: Conceptual Art
@@ -4469,7 +4469,7 @@ MANTRAS:
BASE_MODEL: SD2.1
PROMPT: Conceptual Art, {prompt}, concept art
NEGATIVE_PROMPT: ugly, deformed, noisy, blurry, low contrast
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD2.1/cf2e6781997c6842a16155fdff911ef8.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD2.1/cf2e6781997c6842a16155fdff911ef8.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: Constructivism
@@ -4479,7 +4479,7 @@ MANTRAS:
BASE_MODEL: SD2.1
PROMPT: Constructivism Art, {prompt}, minimalistic, geometric forms, constructivism art
NEGATIVE_PROMPT: ugly, deformed, noisy, blurry, low contrast
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD2.1/d07feccabcadfd3310464bedba858bd1.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD2.1/d07feccabcadfd3310464bedba858bd1.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: Cubism
@@ -4489,7 +4489,7 @@ MANTRAS:
BASE_MODEL: SD2.1
PROMPT: Cubism Art, {prompt}, flat geometric forms, cubism art
NEGATIVE_PROMPT: ugly, deformed, noisy, blurry, low contrast
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD2.1/aa8313f6c3cb9cafb9a7ec07db78df1c.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD2.1/aa8313f6c3cb9cafb9a7ec07db78df1c.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: Dadaism
@@ -4499,7 +4499,7 @@ MANTRAS:
BASE_MODEL: SD2.1
PROMPT: Dadaism Art, {prompt}, satirical, nonsensical, dadaism art
NEGATIVE_PROMPT: ugly, deformed, noisy, blurry, low contrast
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD2.1/db27030369cb3ccb042b8aea6bf635e2.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD2.1/db27030369cb3ccb042b8aea6bf635e2.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: Dark Fantasy
@@ -4509,7 +4509,7 @@ MANTRAS:
BASE_MODEL: SD2.1
PROMPT: Dark Fantasy Art, {prompt}, dark, moody, dark fantasy style
NEGATIVE_PROMPT: ugly, deformed, noisy, blurry, low contrast, bright, sunny
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD2.1/c88b6e641c707afc0c8d278ba7e1ac19.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD2.1/c88b6e641c707afc0c8d278ba7e1ac19.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: Dark Moody Atmosphere
@@ -4519,7 +4519,7 @@ MANTRAS:
BASE_MODEL: SD2.1
PROMPT: Dark Moody Atmosphere, {prompt}, dramatic, mysterious, dark moody atmosphere
NEGATIVE_PROMPT: ugly, deformed, noisy, blurry, low contrast, vibrant, colorful, bright
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD2.1/3da915da2f5cedaf243e57e08163f35b.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD2.1/3da915da2f5cedaf243e57e08163f35b.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: DMT Art Style
@@ -4529,7 +4529,7 @@ MANTRAS:
BASE_MODEL: SD2.1
PROMPT: DMT Art Style, {prompt}, bright colors, surreal visuals, swirling patterns, DMT art style
NEGATIVE_PROMPT: ugly, deformed, noisy, blurry, low contrast
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD2.1/d4a823d2bfa912ca4bb56d96f722f08f.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD2.1/d4a823d2bfa912ca4bb56d96f722f08f.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: Doodle Art
@@ -4539,7 +4539,7 @@ MANTRAS:
BASE_MODEL: SD2.1
PROMPT: Doodle Art Style, {prompt}, drawing, freeform, swirling patterns, doodle art style
NEGATIVE_PROMPT: ugly, deformed, noisy, blurry, low contrast
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD2.1/8e1e21745c149b9634d3ce96fc7d505f.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD2.1/8e1e21745c149b9634d3ce96fc7d505f.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: Double Exposure
@@ -4549,7 +4549,7 @@ MANTRAS:
BASE_MODEL: SD2.1
PROMPT: Double Exposure Style, {prompt}, double image ghost effect, image combination, double exposure style
NEGATIVE_PROMPT: ugly, deformed, noisy, blurry, low contrast
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD2.1/efd7aea4af1c4ede99fdfac17350e264.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD2.1/efd7aea4af1c4ede99fdfac17350e264.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: Dripping Paint Splatter Art
@@ -4559,7 +4559,7 @@ MANTRAS:
BASE_MODEL: SD2.1
PROMPT: Dripping Paint Splatter Art, {prompt}, dramatic, paint drips, splatters, dripping paint
NEGATIVE_PROMPT: ugly, deformed, noisy, blurry, low contrast
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD2.1/69fd81f5983107acc3d334af62915851.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD2.1/69fd81f5983107acc3d334af62915851.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: Expressionism
@@ -4569,7 +4569,7 @@ MANTRAS:
BASE_MODEL: SD2.1
PROMPT: Expressionism Art Style, {prompt}, movement, contrast, emotional, exaggerated forms, expressionism art style
NEGATIVE_PROMPT: ugly, deformed, noisy, blurry, low contrast
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD2.1/3dfa862bd1c80cec237e4a5717cea2bd.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD2.1/3dfa862bd1c80cec237e4a5717cea2bd.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: Faded Polaroid Photo
@@ -4579,7 +4579,7 @@ MANTRAS:
BASE_MODEL: SD2.1
PROMPT: Faded Polaroid Photo, {prompt}, analog, old faded photo, old polaroid
NEGATIVE_PROMPT: ugly, deformed, noisy, blurry, low contrast, vibrant, colorful
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD2.1/f152edb4b3ca6248758b48115258ddfa.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD2.1/f152edb4b3ca6248758b48115258ddfa.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: Fauvism
@@ -4589,7 +4589,7 @@ MANTRAS:
BASE_MODEL: SD2.1
PROMPT: Fauvism Art, {prompt}, painterly, bold colors, textured brushwork, fauvism art
NEGATIVE_PROMPT: ugly, deformed, noisy, blurry, low contrast
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD2.1/0506b350cadcf8fca42da764cd6fd5bf.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD2.1/0506b350cadcf8fca42da764cd6fd5bf.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: Flat 2D Art
@@ -4599,7 +4599,7 @@ MANTRAS:
BASE_MODEL: SD2.1
PROMPT: Flat 2D Art, {prompt}, simple flat color, 2-dimensional, Flat 2D Art Style
NEGATIVE_PROMPT: ugly, deformed, noisy, blurry, low contrast, 3D, photo, realistic
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD2.1/940cfd34155634cf051e1b2942cca426.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD2.1/940cfd34155634cf051e1b2942cca426.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: Fortnite Art Style
@@ -4609,7 +4609,7 @@ MANTRAS:
BASE_MODEL: SD2.1
PROMPT: Fortnite Art Style, {prompt}, 3D cartoon, colorful, Fortnite Art Style
NEGATIVE_PROMPT: ugly, deformed, noisy, blurry, low contrast, photo, realistic
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD2.1/156f8d943ff6d283f7a34f265daaa46c.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD2.1/156f8d943ff6d283f7a34f265daaa46c.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: Futurism
@@ -4619,7 +4619,7 @@ MANTRAS:
BASE_MODEL: SD2.1
PROMPT: Futurism Art Style, {prompt}, dynamic, dramatic, Futurism Art Style
NEGATIVE_PROMPT: ugly, deformed, noisy, blurry, low contrast
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD2.1/855283cc2ab6283b627ef32d06a1ae0f.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD2.1/855283cc2ab6283b627ef32d06a1ae0f.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: Glitchcore
@@ -4629,7 +4629,7 @@ MANTRAS:
BASE_MODEL: SD2.1
PROMPT: Glitchcore Art Style, {prompt}, dynamic, dramatic, distorted, vibrant colors, glitchcore art style
NEGATIVE_PROMPT: ugly, deformed, noisy, blurry, low contrast
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD2.1/9af62376402a85774179e82cf7e0dc59.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD2.1/9af62376402a85774179e82cf7e0dc59.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: Glo-fi
@@ -4639,7 +4639,7 @@ MANTRAS:
BASE_MODEL: SD2.1
PROMPT: Glo-fi Art Style, {prompt}, dynamic, dramatic, vibrant colors, glo-fi art style
NEGATIVE_PROMPT: ugly, deformed, noisy, blurry, low contrast
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD2.1/275a6e2a3297cec57f9b5a4a17b0f749.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD2.1/275a6e2a3297cec57f9b5a4a17b0f749.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: Googie Art Style
@@ -4649,7 +4649,7 @@ MANTRAS:
BASE_MODEL: SD2.1
PROMPT: Googie Art Style, {prompt}, dynamic, dramatic, 1950's futurism, bold boomerang angles, Googie art style
NEGATIVE_PROMPT: ugly, deformed, noisy, blurry, low contrast
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD2.1/08ee77586d7bec3f6bad7d60cee3c540.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD2.1/08ee77586d7bec3f6bad7d60cee3c540.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: Graffiti Art
@@ -4659,7 +4659,7 @@ MANTRAS:
BASE_MODEL: SD2.1
PROMPT: Graffiti Art Style, {prompt}, dynamic, dramatic, vibrant colors, graffiti art style
NEGATIVE_PROMPT: ugly, deformed, noisy, blurry, low contrast
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD2.1/57b751b11564cb22cd49ef21f2004a5f.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD2.1/57b751b11564cb22cd49ef21f2004a5f.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: Harlem Renaissance Art
@@ -4669,7 +4669,7 @@ MANTRAS:
BASE_MODEL: SD2.1
PROMPT: Harlem Renaissance Art Style, {prompt}, dynamic, dramatic, 1920s African American culture, Harlem Renaissance art style
NEGATIVE_PROMPT: ugly, deformed, noisy, blurry, low contrast
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD2.1/d09ea3dadcd0a15d8fa247ee74a75e6b.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD2.1/d09ea3dadcd0a15d8fa247ee74a75e6b.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: High Fashion
@@ -4679,7 +4679,7 @@ MANTRAS:
BASE_MODEL: SD2.1
PROMPT: High Fashion, {prompt}, dynamic, dramatic, haute couture, elegant, ornate clothing, High Fashion
NEGATIVE_PROMPT: ugly, deformed, noisy, blurry, low contrast
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD2.1/868f752bbb5ef992a0be36d7d13de3be.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD2.1/868f752bbb5ef992a0be36d7d13de3be.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: Idyllic
@@ -4689,7 +4689,7 @@ MANTRAS:
BASE_MODEL: SD2.1
PROMPT: Idyllic, {prompt}, peaceful, happy, pleasant, happy, harmonious, picturesque, charming
NEGATIVE_PROMPT: ugly, deformed, noisy, blurry, low contrast
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD2.1/55bab29eeb628e7a9ae018e45e7e24db.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD2.1/55bab29eeb628e7a9ae018e45e7e24db.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: Impressionism
@@ -4699,7 +4699,7 @@ MANTRAS:
BASE_MODEL: SD2.1
PROMPT: Impressionism, {prompt}, painterly, small brushstrokes, visible brushstrokes, impressionistic style
NEGATIVE_PROMPT: ugly, deformed, noisy, blurry, low contrast
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD2.1/0312b673dc6858a9864d7f45f0c5c1fc.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD2.1/0312b673dc6858a9864d7f45f0c5c1fc.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: Infographic Drawing
@@ -4709,7 +4709,7 @@ MANTRAS:
BASE_MODEL: SD2.1
PROMPT: Infographic Drawing, {prompt}, diagram, infographic
NEGATIVE_PROMPT: ugly, deformed, noisy, blurry, low contrast
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD2.1/b09151f6e0883d26056b80fcc9d398bb.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD2.1/b09151f6e0883d26056b80fcc9d398bb.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: Ink Dripping Drawing
@@ -4719,7 +4719,7 @@ MANTRAS:
BASE_MODEL: SD2.1
PROMPT: Ink Dripping Drawing, {prompt}, ink drawing, dripping ink
NEGATIVE_PROMPT: ugly, deformed, noisy, blurry, low contrast, colorful, vibrant
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD2.1/5f09912a07e915250a96b2023db15821.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD2.1/5f09912a07e915250a96b2023db15821.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: Japanese Ink Drawing
@@ -4729,7 +4729,7 @@ MANTRAS:
BASE_MODEL: SD2.1
PROMPT: Japanese Ink Drawing, {prompt}, ink drawing, inkwash, Japanese Ink Drawing
NEGATIVE_PROMPT: ugly, deformed, noisy, blurry, low contrast, colorful, vibrant
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD2.1/633ad971ff30fe4717782fc6b5f92fda.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD2.1/633ad971ff30fe4717782fc6b5f92fda.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: Knolling Photography
@@ -4739,7 +4739,7 @@ MANTRAS:
BASE_MODEL: SD2.1
PROMPT: Knolling Photography, {prompt}, flat lay photography, object arrangment, knolling photography
NEGATIVE_PROMPT: ugly, deformed, noisy, blurry, low contrast
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD2.1/89a205be3a276349ecddf0eeca43ed80.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD2.1/89a205be3a276349ecddf0eeca43ed80.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: Light Cheery Atmosphere
@@ -4749,7 +4749,7 @@ MANTRAS:
BASE_MODEL: SD2.1
PROMPT: Light Cheery Atmosphere, {prompt}, happy, joyful, cheerful, carefree, gleeful, lighthearted, pleasant atmosphere
NEGATIVE_PROMPT: ugly, deformed, noisy, blurry, low contrast, monochromatic, dark, moody
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD2.1/0913ac9815f892411f8327a630f51ae4.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD2.1/0913ac9815f892411f8327a630f51ae4.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: Logo Design
@@ -4759,7 +4759,7 @@ MANTRAS:
BASE_MODEL: SD2.1
PROMPT: Logo Design, {prompt}, dynamic graphic art, vector art, minimalist, professional logo design
NEGATIVE_PROMPT: ugly, deformed, noisy, blurry, low contrast
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD2.1/9aa040b0c60d289da9610c91ad9b7c7e.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD2.1/9aa040b0c60d289da9610c91ad9b7c7e.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: Luxurious Elegance
@@ -4769,7 +4769,7 @@ MANTRAS:
BASE_MODEL: SD2.1
PROMPT: Luxurious Elegance, {prompt}, extravagant, ornate, designer, opulent, picturesque, lavish
NEGATIVE_PROMPT: ugly, deformed, noisy, blurry, low contrast
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD2.1/e796e84ed745150f0d4e28e0ac99b4cf.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD2.1/e796e84ed745150f0d4e28e0ac99b4cf.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: Macro Photography
@@ -4779,7 +4779,7 @@ MANTRAS:
BASE_MODEL: SD2.1
PROMPT: Macro Photography, {prompt}, close-up, macro 100mm, macro photography
NEGATIVE_PROMPT: ugly, deformed, noisy, blurry, low contrast
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD2.1/92e8b84379828f38e3d01c7272f41b0b.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD2.1/92e8b84379828f38e3d01c7272f41b0b.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: Mandola Art
@@ -4789,7 +4789,7 @@ MANTRAS:
BASE_MODEL: SD2.1
PROMPT: Mandola art style, {prompt}, complex, circular design, mandola
NEGATIVE_PROMPT: ugly, deformed, noisy, blurry, low contrast
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD2.1/dbf5ca944d9213c3181348666cf337ac.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD2.1/dbf5ca944d9213c3181348666cf337ac.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: Marker Drawing
@@ -4799,7 +4799,7 @@ MANTRAS:
BASE_MODEL: SD2.1
PROMPT: Marker Drawing, {prompt}, bold marker lines, visibile paper texture, marker drawing
NEGATIVE_PROMPT: ugly, deformed, noisy, blurry, low contrast, photograph, realistic
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD2.1/c558745f7a4b77d7ca9a428d8874efe4.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD2.1/c558745f7a4b77d7ca9a428d8874efe4.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: Medievalism
@@ -4809,7 +4809,7 @@ MANTRAS:
BASE_MODEL: SD2.1
PROMPT: Medievalism, {prompt}, inspired by The Middle Ages, medieval art, elaborate patterns and decoration, Medievalism
NEGATIVE_PROMPT: ugly, deformed, noisy, blurry, low contrast
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD2.1/26aa6244359a4fd87f6438a341057901.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD2.1/26aa6244359a4fd87f6438a341057901.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: Minimalism
@@ -4819,7 +4819,7 @@ MANTRAS:
BASE_MODEL: SD2.1
PROMPT: Minimalism, {prompt}, abstract, simple geometic shapes, hard edges, sleek contours, Minimalism
NEGATIVE_PROMPT: ugly, deformed, noisy, blurry, low contrast
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD2.1/dce92a90da6299339cf8e9ebc6596ea2.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD2.1/dce92a90da6299339cf8e9ebc6596ea2.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: Neo-Baroque
@@ -4829,7 +4829,7 @@ MANTRAS:
BASE_MODEL: SD2.1
PROMPT: Neo-Baroque, {prompt}, ornate and elaborate, dynaimc, Neo-Baroque
NEGATIVE_PROMPT: ugly, deformed, noisy, blurry, low contrast
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD2.1/9b6cd8751b18c65b259769b44cfac351.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD2.1/9b6cd8751b18c65b259769b44cfac351.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: Neo-Byzantine
@@ -4839,7 +4839,7 @@ MANTRAS:
BASE_MODEL: SD2.1
PROMPT: Neo-Byzantine, {prompt}, grand decorative religious style, Orthodox Christian inspired, Neo-Byzantine
NEGATIVE_PROMPT: ugly, deformed, noisy, blurry, low contrast
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD2.1/99c67768869b546bf527ef0b1735c0d5.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD2.1/99c67768869b546bf527ef0b1735c0d5.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: Neo-Futurism
@@ -4849,7 +4849,7 @@ MANTRAS:
BASE_MODEL: SD2.1
PROMPT: Neo-Futurism, {prompt}, high-tech, curves, spirals, flowing lines, idealistic future, Neo-Futurism
NEGATIVE_PROMPT: ugly, deformed, noisy, blurry, low contrast
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD2.1/bada1534f7a60187f584febcc92f40d1.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD2.1/bada1534f7a60187f584febcc92f40d1.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: Neo-Impressionism
@@ -4859,7 +4859,7 @@ MANTRAS:
BASE_MODEL: SD2.1
PROMPT: Neo-Impressionism, {prompt}, tiny dabs of color, Pointillism, painterly, Neo-Impressionism
NEGATIVE_PROMPT: ugly, deformed, noisy, blurry, low contrast, photograph, realistic
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD2.1/6bafeac67ce2679b64a86ee1023b53c9.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD2.1/6bafeac67ce2679b64a86ee1023b53c9.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: Neo-Rococo
@@ -4869,7 +4869,7 @@ MANTRAS:
BASE_MODEL: SD2.1
PROMPT: Neo-Rococo, {prompt}, curved forms, naturalistic ornamentation, elaborate, decorative, gaudy, Neo-Rococo
NEGATIVE_PROMPT: ugly, deformed, noisy, blurry, low contrast
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD2.1/9ab0ad2b88e03933ea479357ff1e4435.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD2.1/9ab0ad2b88e03933ea479357ff1e4435.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: Neoclassicism
@@ -4879,7 +4879,7 @@ MANTRAS:
BASE_MODEL: SD2.1
PROMPT: Neoclassicism, {prompt}, ancient Rome and Greece inspired, idealic, sober colors, Neoclassicism
NEGATIVE_PROMPT: ugly, deformed, noisy, blurry, low contrast
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD2.1/83a4e3a2ca577400b05a81b5b2b8650e.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD2.1/83a4e3a2ca577400b05a81b5b2b8650e.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: Op Art
@@ -4889,7 +4889,7 @@ MANTRAS:
BASE_MODEL: SD2.1
PROMPT: Op Art, {prompt}, optical illusion, abstract, geometric pattern, impression of movement, Op Art
NEGATIVE_PROMPT: ugly, deformed, noisy, blurry, low contrast
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD2.1/5f11132803dff2de5213293b91d407d7.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD2.1/5f11132803dff2de5213293b91d407d7.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: Ornate and Intricate
@@ -4899,7 +4899,7 @@ MANTRAS:
BASE_MODEL: SD2.1
PROMPT: Ornate and Intricate, {prompt}, decorative, highly detailed, elaborate, ornate, intricate
NEGATIVE_PROMPT: ugly, deformed, noisy, blurry, low contrast
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD2.1/24b895dca946c8765ad9fa38f720f671.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD2.1/24b895dca946c8765ad9fa38f720f671.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: Pencil Sketch Drawing
@@ -4909,7 +4909,7 @@ MANTRAS:
BASE_MODEL: SD2.1
PROMPT: Pencil Sketch Drawing, {prompt}, black and white drawing, graphite drawing
NEGATIVE_PROMPT: ugly, deformed, noisy, blurry, low contrast
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD2.1/a9056e1eac85e5e4fe96a93917d4cce4.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD2.1/a9056e1eac85e5e4fe96a93917d4cce4.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: Pop Art 2
@@ -4919,7 +4919,7 @@ MANTRAS:
BASE_MODEL: SD2.1
PROMPT: Pop Art, {prompt}, vivid colors, flat color, 2D, strong lines, Pop Art
NEGATIVE_PROMPT: ugly, deformed, noisy, blurry, low contrast, photo, realistic
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD2.1/83c4c06c70a48da6558ff970ece247b6.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD2.1/83c4c06c70a48da6558ff970ece247b6.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: Rococo
@@ -4929,7 +4929,7 @@ MANTRAS:
BASE_MODEL: SD2.1
PROMPT: Rococo, {prompt}, flamboyant, pastel colors, curved lines, elaborate detail, Rococo
NEGATIVE_PROMPT: ugly, deformed, noisy, blurry, low contrast
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD2.1/4850170f410e10bc833b7d00324dff18.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD2.1/4850170f410e10bc833b7d00324dff18.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: Silhouette Art
@@ -4939,7 +4939,7 @@ MANTRAS:
BASE_MODEL: SD2.1
PROMPT: Silhouette Art, {prompt}, high contrast, well defined, Silhouette Art
NEGATIVE_PROMPT: ugly, deformed, noisy, blurry, low contrast
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD2.1/568777f447fc02510b618152726d5002.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD2.1/568777f447fc02510b618152726d5002.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: Simple Vector Art
@@ -4949,7 +4949,7 @@ MANTRAS:
BASE_MODEL: SD2.1
PROMPT: Simple Vector Art, {prompt}, 2D flat, simple shapes, minimalistic, professional graphic, flat color, high contrast, Simple Vector Art
NEGATIVE_PROMPT: ugly, deformed, noisy, blurry, low contrast, 3D, photo, realistic
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD2.1/24d2ab1fd175bf4e9ef3a8327651dd4b.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD2.1/24d2ab1fd175bf4e9ef3a8327651dd4b.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: Sketchup
@@ -4959,7 +4959,7 @@ MANTRAS:
BASE_MODEL: SD2.1
PROMPT: Sketchup, {prompt}, CAD, professional design, Sketchup
NEGATIVE_PROMPT: ugly, deformed, noisy, blurry, low contrast, photo, photograph
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD2.1/337dca7ac49cf7820c85ede096ebde9c.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD2.1/337dca7ac49cf7820c85ede096ebde9c.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: Steampunk 2
@@ -4969,7 +4969,7 @@ MANTRAS:
BASE_MODEL: SD2.1
PROMPT: Steampunk, {prompt}, retrofuturistic science fantasy, steam-powered tech, vintage industry, gears, neo-victorian, steampunk
NEGATIVE_PROMPT: ugly, deformed, noisy, blurry, low contrast
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD2.1/07d7b27cd73f2d43684003563511c15b.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD2.1/07d7b27cd73f2d43684003563511c15b.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: Surrealism
@@ -4979,7 +4979,7 @@ MANTRAS:
BASE_MODEL: SD2.1
PROMPT: Surrealism, {prompt}, expressive, dramatic, organic lines and forms, dreamlike and mysterious, Surrealism
NEGATIVE_PROMPT: ugly, deformed, noisy, blurry, low contrast, realistic
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD2.1/38bae70377b323d1a5f5756d7e04886d.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD2.1/38bae70377b323d1a5f5756d7e04886d.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: Suprematism
@@ -4989,7 +4989,7 @@ MANTRAS:
BASE_MODEL: SD2.1
PROMPT: Suprematism, {prompt}, abstract, limited color palette, geometric forms, Suprematism
NEGATIVE_PROMPT: ugly, deformed, noisy, blurry, low contrast, realistic
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD2.1/c48fbd8cedee84d06b4d875d566f1bb8.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD2.1/c48fbd8cedee84d06b4d875d566f1bb8.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: Terragen
@@ -4999,7 +4999,7 @@ MANTRAS:
BASE_MODEL: SD2.1
PROMPT: Terragen, {prompt}, beautiful massive landscape, epic scenery, Terragen
NEGATIVE_PROMPT: ugly, deformed, noisy, blurry, low contrast
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD2.1/8974cd8e0f38fb7aac117cf0983fc36d.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD2.1/8974cd8e0f38fb7aac117cf0983fc36d.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: Tranquil Relaxing Atmosphere
@@ -5009,7 +5009,7 @@ MANTRAS:
BASE_MODEL: SD2.1
PROMPT: Tranquil Relaxing Atmosphere, {prompt}, calming style, soothing colors, peaceful, idealic, Tranquil Relaxing Atmosphere
NEGATIVE_PROMPT: ugly, deformed, noisy, blurry, low contrast, oversaturated
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD2.1/69170d8443a67be4210af8d5558779c2.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD2.1/69170d8443a67be4210af8d5558779c2.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: Sticker Designs
@@ -5019,7 +5019,7 @@ MANTRAS:
BASE_MODEL: SD2.1
PROMPT: Vector Art Stickers, {prompt}, professional vector design, sticker designs, Sticker Sheet
NEGATIVE_PROMPT: ugly, deformed, noisy, blurry, low contrast
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD2.1/2d1e9867058db2c57f2fe47530de3243.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD2.1/2d1e9867058db2c57f2fe47530de3243.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: Vibrant Rim Light
@@ -5029,7 +5029,7 @@ MANTRAS:
BASE_MODEL: SD2.1
PROMPT: Vibrant Rim Light, {prompt}, bright rim light, high contrast, bold edge light
NEGATIVE_PROMPT: ugly, deformed, noisy, blurry, low contrast
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD2.1/bb08936ca184daba2b30b4a9efb308f2.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD2.1/bb08936ca184daba2b30b4a9efb308f2.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: Volumetric Lighting
@@ -5039,7 +5039,7 @@ MANTRAS:
BASE_MODEL: SD2.1
PROMPT: Volumetric Lighting, {prompt}, light depth, dramatic atmospheric lighting, Volumetric Lighting
NEGATIVE_PROMPT: ugly, deformed, noisy, blurry, low contrast
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD2.1/bbad7964a2ae70b66c72804273f11e74.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD2.1/bbad7964a2ae70b66c72804273f11e74.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: Watercolor 2
@@ -5049,7 +5049,7 @@ MANTRAS:
BASE_MODEL: SD2.1
PROMPT: Watercolor style painting, {prompt}, visible paper texture, colorwash, watercolor
NEGATIVE_PROMPT: ugly, deformed, noisy, blurry, low contrast, photo, realistic
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD2.1/8859d532ae5901cc8457d6118fb9b7da.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD2.1/8859d532ae5901cc8457d6118fb9b7da.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: Whimsical and Playful
@@ -5059,7 +5059,7 @@ MANTRAS:
BASE_MODEL: SD2.1
PROMPT: Whimsical and Playful, {prompt}, imaginative, fantastical, bight colors, stylized, happy, Whimsical and Playful
NEGATIVE_PROMPT: ugly, deformed, noisy, blurry, low contrast, drab, boring, moody
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD2.1/af2267f1942e870be957c37cd73d4359.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD2.1/af2267f1942e870be957c37cd73d4359.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: Fooocus Enhance
@@ -5072,7 +5072,7 @@ MANTRAS:
}
NEGATIVE_PROMPT: (worst quality, low quality, normal quality, lowres, low details, oversaturated, undersaturated, overexposed, underexposed, grayscale, bw, bad photo, bad photography, bad art:1.4), (watermark, signature, text font, username, error, logo, words, letters, digits, autograph, trademark, name:1.2), (blur, blurry, grainy), morbid, ugly, asymmetrical, mutated malformed, mutilated, poorly lit, bad shadow, draft, cropped, out of frame, cut off, censored, jpeg artifacts, out of focus, glitch, duplicate, (airbrushed, cartoon, anime, semi-realistic, cgi, render, blender, digital art, manga, amateur:1.3), (3D ,3D Game, 3D Game Scene, 3D Character:1.1), (bad hands, bad anatomy, bad body, bad face, bad teeth, bad arms, bad legs, deformities:1.3)
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD2.1/e501823a21bbda56592055c9613c1dbb.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD2.1/e501823a21bbda56592055c9613c1dbb.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: Fooocus Sharp
@@ -5082,7 +5082,7 @@ MANTRAS:
BASE_MODEL: SD2.1
PROMPT: cinematic still {prompt} . emotional, harmonious, vignette, 4k epic detailed, shot on kodak, 35mm photo, sharp focus, high budget, cinemascope, moody, epic, gorgeous, film grain, grainy
NEGATIVE_PROMPT: anime, cartoon, graphic, (blur, blurry, bokeh), text, painting, crayon, graphite, abstract, glitch, deformed, mutated, ugly, disfigured
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD2.1/393fb7aab57992a1c3af7cbad01c1001.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD2.1/393fb7aab57992a1c3af7cbad01c1001.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: Fooocus Masterpiece
@@ -5092,7 +5092,7 @@ MANTRAS:
BASE_MODEL: SD2.1
PROMPT: (masterpiece), (best quality), (ultra-detailed), {prompt}, illustration, disheveled hair, detailed eyes, perfect composition, moist skin, intricate details, earrings, by wlop
NEGATIVE_PROMPT: longbody, lowres, bad anatomy, bad hands, missing fingers, pubic hair,extra digit, fewer digits, cropped, worst quality, low quality
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD2.1/9e27c3d1475dacae0ee45cea783aaaf5.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD2.1/9e27c3d1475dacae0ee45cea783aaaf5.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: Fooocus Photograph
@@ -5102,7 +5102,7 @@ MANTRAS:
BASE_MODEL: SD2.1
PROMPT: photograph {prompt}, 50mm . cinematic 4k epic detailed 4k epic detailed photograph shot on kodak detailed cinematic hbo dark moody, 35mm photo, grainy, vignette, vintage, Kodachrome, Lomography, stained, highly detailed, found footage
NEGATIVE_PROMPT: Brad Pitt, bokeh, depth of field, blurry, cropped, regular face, saturated, contrast, deformed iris, deformed pupils, semi-realistic, cgi, 3d, render, sketch, cartoon, drawing, anime, text, cropped, out of frame, worst quality, low quality, jpeg artifacts, ugly, duplicate, morbid, mutilated, extra fingers, mutated hands, poorly drawn hands, poorly drawn face, mutation, deformed, dehydrated, bad anatomy, bad proportions, extra limbs, cloned face, disfigured, gross proportions, malformed limbs, missing arms, missing legs, extra arms, extra legs, fused fingers, too many fingers, long neck
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD2.1/8b2ea41ec15bf1a16d6a837d46dbc2ac.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD2.1/8b2ea41ec15bf1a16d6a837d46dbc2ac.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: Fooocus Negative
@@ -5115,7 +5115,7 @@ MANTRAS:
}
NEGATIVE_PROMPT: deformed, bad anatomy, disfigured, poorly drawn face, mutated, extra limb, ugly, poorly drawn hands, missing limb, floating limbs, disconnected limbs, disconnected head, malformed hands, long neck, mutated hands and fingers, bad hands, missing fingers, cropped, worst quality, low quality, mutation, poorly drawn, huge calf, bad hands, fused hand, missing hand, disappearing arms, disappearing thigh, disappearing calf, disappearing legs, missing fingers, fused fingers, abnormal eye proportion, Abnormal hands, abnormal legs, abnormal feet, abnormal fingers, drawing, painting, crayon, sketch, graphite, impressionist, noisy, blurry, soft, deformed, ugly, anime, cartoon, graphic, text, painting, crayon, graphite, abstract, glitch
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD2.1/daaec2962291137532189b8a31012532.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD2.1/daaec2962291137532189b8a31012532.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: Fooocus Cinematic
@@ -5125,7 +5125,7 @@ MANTRAS:
BASE_MODEL: SD2.1
PROMPT: cinematic still {prompt} . emotional, harmonious, vignette, highly detailed, high budget, bokeh, cinemascope, moody, epic, gorgeous, film grain, grainy
NEGATIVE_PROMPT: anime, cartoon, graphic, text, painting, crayon, graphite, abstract, glitch, deformed, mutated, ugly, disfigured
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD2.1/adc4d52aa5b0afca0593a475ddc9d055.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD2.1/adc4d52aa5b0afca0593a475ddc9d055.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: mre-cinematic-dynamic
@@ -5135,7 +5135,7 @@ MANTRAS:
BASE_MODEL: SD2.1
PROMPT: epic cinematic shot of dynamic {prompt} in motion. main subject of high budget action movie. raw photo, motion blur. best quality, high resolution
NEGATIVE_PROMPT: static, still, motionless, sluggish. drawing, painting, illustration, rendered. low budget. low quality, low resolution
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD2.1/bd2470068e09d9f1b7d0a690c879b3ce.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD2.1/bd2470068e09d9f1b7d0a690c879b3ce.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: mre-spontaneous-picture
@@ -5145,7 +5145,7 @@ MANTRAS:
BASE_MODEL: SD2.1
PROMPT: spontaneous picture of {prompt}, taken by talented amateur. best quality, high resolution. magical moment, natural look. simple but good looking
NEGATIVE_PROMPT: overthinked. low quality, low resolution
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD2.1/19ad6082cee5516ce330641b515467ef.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD2.1/19ad6082cee5516ce330641b515467ef.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: mre-artistic-vision
@@ -5155,7 +5155,7 @@ MANTRAS:
BASE_MODEL: SD2.1
PROMPT: powerful artistic vision of {prompt}. breathtaking masterpiece made by great artist. best quality, high resolution
NEGATIVE_PROMPT: insignificant, flawed, made by bad artist. low quality, low resolution
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD2.1/95af94e50bcb91ae8fd2914a3bf13f1e.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD2.1/95af94e50bcb91ae8fd2914a3bf13f1e.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: mre-dark-dream
@@ -5165,7 +5165,7 @@ MANTRAS:
BASE_MODEL: SD2.1
PROMPT: dark and unsettling dream showing {prompt}. best quality, high resolution. created by genius but depressed mad artist. grim beauty
NEGATIVE_PROMPT: naive, cheerful. comfortable, casual, boring, cliche. low quality, low resolution
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD2.1/572c8c26cc20ac0ee66684e3c5ee4e8c.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD2.1/572c8c26cc20ac0ee66684e3c5ee4e8c.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: mre-gloomy-art
@@ -5175,7 +5175,7 @@ MANTRAS:
BASE_MODEL: SD2.1
PROMPT: astonishing gloomy art made mainly of shadows and lighting, forming {prompt}. masterful usage of lighting, shadows and chiaroscuro. made by black-hearted artist, drawing from darkness. best quality, high resolution
NEGATIVE_PROMPT: low quality, low resolution
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD2.1/66cbdf819e930f7580bd66a41bde7dfe.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD2.1/66cbdf819e930f7580bd66a41bde7dfe.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: mre-bad-dream
@@ -5185,7 +5185,7 @@ MANTRAS:
BASE_MODEL: SD2.1
PROMPT: picture from really bad dream about terrifying {prompt}, true horror. bone-chilling vision. mad world that shouldn't exist. best quality, high resolution
NEGATIVE_PROMPT: nice dream, pleasant experience. low quality, low resolution
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD2.1/b92b2bbfc400db9204fe8249354132b4.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD2.1/b92b2bbfc400db9204fe8249354132b4.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: mre-underground
@@ -5195,7 +5195,7 @@ MANTRAS:
BASE_MODEL: SD2.1
PROMPT: uncanny caliginous vision of {prompt}, created by remarkable underground artist. best quality, high resolution. raw and brutal art, careless but impressive style. inspired by darkness and chaos
NEGATIVE_PROMPT: photography, mainstream, civilized. low quality, low resolution
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD2.1/8d46eca558d791a1f2b41b0ed7bba4d2.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD2.1/8d46eca558d791a1f2b41b0ed7bba4d2.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: mre-surreal-painting
@@ -5205,7 +5205,7 @@ MANTRAS:
BASE_MODEL: SD2.1
PROMPT: surreal painting representing strange vision of {prompt}. harmonious madness, synergy with chance. unique artstyle, mindbending art, magical surrealism. best quality, high resolution
NEGATIVE_PROMPT: photography, illustration, drawing. realistic, possible. logical, sane. low quality, low resolution
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD2.1/58858425832b10d233f7887af4a2022f.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD2.1/58858425832b10d233f7887af4a2022f.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: mre-dynamic-illustration
@@ -5215,7 +5215,7 @@ MANTRAS:
BASE_MODEL: SD2.1
PROMPT: insanely dynamic illustration of {prompt}. best quality, high resolution. crazy artstyle, careless brushstrokes, emotional and fun
NEGATIVE_PROMPT: photography, realistic. static, still, slow, boring. low quality, low resolution
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD2.1/8bf9861d4d3fadcdb98ceec88a941582.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD2.1/8bf9861d4d3fadcdb98ceec88a941582.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: mre-undead-art
@@ -5225,7 +5225,7 @@ MANTRAS:
BASE_MODEL: SD2.1
PROMPT: long forgotten art created by undead artist illustrating {prompt}, tribute to the death and decay. miserable art of the damned. wretched and decaying world. best quality, high resolution
NEGATIVE_PROMPT: alive, playful, living. low quality, low resolution
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD2.1/fada50979ca180006eba9a45a00f3675.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD2.1/fada50979ca180006eba9a45a00f3675.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: mre-elemental-art
@@ -5235,7 +5235,7 @@ MANTRAS:
BASE_MODEL: SD2.1
PROMPT: art illustrating insane amounts of raging elemental energy turning into {prompt}, avatar of elements. magical surrealism, wizardry. best quality, high resolution
NEGATIVE_PROMPT: photography, realistic, real. low quality, low resolution
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD2.1/5895d78cf58c1ca05178991f37cc48ff.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD2.1/5895d78cf58c1ca05178991f37cc48ff.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: mre-space-art
@@ -5245,7 +5245,7 @@ MANTRAS:
BASE_MODEL: SD2.1
PROMPT: winner of inter-galactic art contest illustrating {prompt}, symbol of the interstellar singularity. best quality, high resolution. artstyle previously unseen in the whole galaxy
NEGATIVE_PROMPT: created by human race, low quality, low resolution
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD2.1/e9815495587895a21d970728474c8be6.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD2.1/e9815495587895a21d970728474c8be6.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: mre-ancient-illustration
@@ -5255,7 +5255,7 @@ MANTRAS:
BASE_MODEL: SD2.1
PROMPT: sublime ancient illustration of {prompt}, predating human civilization. crude and simple, but also surprisingly beautiful artwork, made by genius primeval artist. best quality, high resolution
NEGATIVE_PROMPT: low quality, low resolution
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD2.1/151e07c17a89ebaf7688905ea0199862.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD2.1/151e07c17a89ebaf7688905ea0199862.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: mre-brave-art
@@ -5265,7 +5265,7 @@ MANTRAS:
BASE_MODEL: SD2.1
PROMPT: brave, shocking, and brutally true art showing {prompt}. inspired by courage and unlimited creativity. truth found in chaos. best quality, high resolution
NEGATIVE_PROMPT: low quality, low resolution
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD2.1/1a068f2728327d21ebb99285c2ce1370.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD2.1/1a068f2728327d21ebb99285c2ce1370.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: mre-heroic-fantasy
@@ -5275,7 +5275,7 @@ MANTRAS:
BASE_MODEL: SD2.1
PROMPT: heroic fantasy painting of {prompt}, in the dangerous fantasy world. airbrush over oil on canvas. best quality, high resolution
NEGATIVE_PROMPT: low quality, low resolution
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD2.1/78d05472067e0b86c8270fa5476fcb8e.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD2.1/78d05472067e0b86c8270fa5476fcb8e.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: mre-dark-cyberpunk
@@ -5285,7 +5285,7 @@ MANTRAS:
BASE_MODEL: SD2.1
PROMPT: dark cyberpunk illustration of brutal {prompt} in a world without hope, ruled by ruthless criminal corporations. best quality, high resolution
NEGATIVE_PROMPT: low quality, low resolution
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD2.1/a9f50e3162958fd783872d6955ad7d0b.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD2.1/a9f50e3162958fd783872d6955ad7d0b.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: mre-lyrical-geometry
@@ -5295,7 +5295,7 @@ MANTRAS:
BASE_MODEL: SD2.1
PROMPT: geometric and lyrical abstraction painting presenting {prompt}. oil on metal. best quality, high resolution
NEGATIVE_PROMPT: photography, realistic, drawing, rendered. low quality, low resolution
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD2.1/dfabd41d3042ced804bc97ae35e3a7cb.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD2.1/dfabd41d3042ced804bc97ae35e3a7cb.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: mre-sumi-e-symbolic
@@ -5305,7 +5305,7 @@ MANTRAS:
BASE_MODEL: SD2.1
PROMPT: big long brushstrokes of deep black sumi-e turning into symbolic painting of {prompt}. master level raw art. best quality, high resolution
NEGATIVE_PROMPT: photography, rendered. low quality, low resolution
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD2.1/695b1ba687544eaeec9fb5f871917aeb.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD2.1/695b1ba687544eaeec9fb5f871917aeb.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: mre-sumi-e-detailed
@@ -5315,7 +5315,7 @@ MANTRAS:
BASE_MODEL: SD2.1
PROMPT: highly detailed black sumi-e painting of {prompt}. in-depth study of perfection, created by a master. best quality, high resolution
NEGATIVE_PROMPT: low quality, low resolution
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD2.1/16eb95e180385b88794e368b28da1812.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD2.1/16eb95e180385b88794e368b28da1812.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: mre-manga
@@ -5325,7 +5325,7 @@ MANTRAS:
BASE_MODEL: SD2.1
PROMPT: manga artwork presenting {prompt}. created by japanese manga artist. highly emotional. best quality, high resolution
NEGATIVE_PROMPT: low quality, low resolution
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD2.1/ebec631bf467937f82d05958ae59f9dc.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD2.1/ebec631bf467937f82d05958ae59f9dc.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: mre-anime
@@ -5335,7 +5335,7 @@ MANTRAS:
BASE_MODEL: SD2.1
PROMPT: anime artwork illustrating {prompt}. created by japanese anime studio. highly emotional. best quality, high resolution
NEGATIVE_PROMPT: low quality, low resolution
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD2.1/a08149bc8e50f6bc65c0010d4cd416f8.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD2.1/a08149bc8e50f6bc65c0010d4cd416f8.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: mre-comic
@@ -5345,7 +5345,7 @@ MANTRAS:
BASE_MODEL: SD2.1
PROMPT: breathtaking illustration from adult comic book presenting {prompt}. fabulous artwork. best quality, high resolution
NEGATIVE_PROMPT: deformed, ugly, low quality, low resolution
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD2.1/48c65cebf1fa4284d7b8feb619412e65.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD2.1/48c65cebf1fa4284d7b8feb619412e65.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: sai-3d-model
@@ -5355,7 +5355,7 @@ MANTRAS:
BASE_MODEL: SD2.1
PROMPT: professional 3d model {prompt} . octane render, highly detailed, volumetric, dramatic lighting
NEGATIVE_PROMPT: ugly, deformed, noisy, low poly, blurry, painting
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD2.1/c1a765ac089fdfb3c1d11b33c75d2afd.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD2.1/c1a765ac089fdfb3c1d11b33c75d2afd.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: sai-analog film
@@ -5365,7 +5365,7 @@ MANTRAS:
BASE_MODEL: SD2.1
PROMPT: analog film photo {prompt} . faded film, desaturated, 35mm photo, grainy, vignette, vintage, Kodachrome, Lomography, stained, highly detailed, found footage
NEGATIVE_PROMPT: painting, drawing, illustration, glitch, deformed, mutated, cross-eyed, ugly, disfigured
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD2.1/3c46d19957efd7fb78f4ab2bdada5468.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD2.1/3c46d19957efd7fb78f4ab2bdada5468.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: sai-anime
@@ -5375,7 +5375,7 @@ MANTRAS:
BASE_MODEL: SD2.1
PROMPT: anime artwork {prompt} . anime style, key visual, vibrant, studio anime, highly detailed
NEGATIVE_PROMPT: photo, deformed, black and white, realism, disfigured, low contrast
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD2.1/c030e72561eda96abcf738f1370d36ff.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD2.1/c030e72561eda96abcf738f1370d36ff.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: sai-cinematic
@@ -5385,7 +5385,7 @@ MANTRAS:
BASE_MODEL: SD2.1
PROMPT: cinematic film still {prompt} . shallow depth of field, vignette, highly detailed, high budget, bokeh, cinemascope, moody, epic, gorgeous, film grain, grainy
NEGATIVE_PROMPT: anime, cartoon, graphic, text, painting, crayon, graphite, abstract, glitch, deformed, mutated, ugly, disfigured
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD2.1/d9161c0d5cbf2133b2bfc1021c0c5e2a.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD2.1/d9161c0d5cbf2133b2bfc1021c0c5e2a.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: sai-comic book
@@ -5395,7 +5395,7 @@ MANTRAS:
BASE_MODEL: SD2.1
PROMPT: comic {prompt} . graphic illustration, comic art, graphic novel art, vibrant, highly detailed
NEGATIVE_PROMPT: photograph, deformed, glitch, noisy, realistic, stock photo
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD2.1/6759ecb831037367e64c4b36d802be87.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD2.1/6759ecb831037367e64c4b36d802be87.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: sai-craft clay
@@ -5405,7 +5405,7 @@ MANTRAS:
BASE_MODEL: SD2.1
PROMPT: play-doh style {prompt} . sculpture, clay art, centered composition, Claymation
NEGATIVE_PROMPT: sloppy, messy, grainy, highly detailed, ultra textured, photo
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD2.1/8fc51113f725f27326c4398a7457cd6d.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD2.1/8fc51113f725f27326c4398a7457cd6d.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: sai-digital art
@@ -5415,7 +5415,7 @@ MANTRAS:
BASE_MODEL: SD2.1
PROMPT: concept art {prompt} . digital artwork, illustrative, painterly, matte painting, highly detailed
NEGATIVE_PROMPT: photo, photorealistic, realism, ugly
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD2.1/d29adb44458700c4a45ee6edaa04bfb6.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD2.1/d29adb44458700c4a45ee6edaa04bfb6.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: sai-enhance
@@ -5425,7 +5425,7 @@ MANTRAS:
BASE_MODEL: SD2.1
PROMPT: breathtaking {prompt} . award-winning, professional, highly detailed
NEGATIVE_PROMPT: ugly, deformed, noisy, blurry, distorted, grainy
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD2.1/2be0de541ff65f8da80ddc24a65c98d8.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD2.1/2be0de541ff65f8da80ddc24a65c98d8.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: sai-fantasy art
@@ -5435,7 +5435,7 @@ MANTRAS:
BASE_MODEL: SD2.1
PROMPT: ethereal fantasy concept art of {prompt} . magnificent, celestial, ethereal, painterly, epic, majestic, magical, fantasy art, cover art, dreamy
NEGATIVE_PROMPT: photographic, realistic, realism, 35mm film, dslr, cropped, frame, text, deformed, glitch, noise, noisy, off-center, deformed, cross-eyed, closed eyes, bad anatomy, ugly, disfigured, sloppy, duplicate, mutated, black and white
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD2.1/a6f8d92afcd5803dfb2ebecbc92091b6.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD2.1/a6f8d92afcd5803dfb2ebecbc92091b6.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: sai-isometric
@@ -5445,7 +5445,7 @@ MANTRAS:
BASE_MODEL: SD2.1
PROMPT: isometric style {prompt} . vibrant, beautiful, crisp, detailed, ultra detailed, intricate
NEGATIVE_PROMPT: deformed, mutated, ugly, disfigured, blur, blurry, noise, noisy, realistic, photographic
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD2.1/d4e3fcbbfd7b1323bd89decf5d7b0006.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD2.1/d4e3fcbbfd7b1323bd89decf5d7b0006.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: sai-line art
@@ -5455,7 +5455,7 @@ MANTRAS:
BASE_MODEL: SD2.1
PROMPT: line art drawing {prompt} . professional, sleek, modern, minimalist, graphic, line art, vector graphics
NEGATIVE_PROMPT: anime, photorealistic, 35mm film, deformed, glitch, blurry, noisy, off-center, deformed, cross-eyed, closed eyes, bad anatomy, ugly, disfigured, mutated, realism, realistic, impressionism, expressionism, oil, acrylic
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD2.1/034a51b0dd34b018be8859bf45b4f7ed.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD2.1/034a51b0dd34b018be8859bf45b4f7ed.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: sai-lowpoly
@@ -5465,7 +5465,7 @@ MANTRAS:
BASE_MODEL: SD2.1
PROMPT: low-poly style {prompt} . low-poly game art, polygon mesh, jagged, blocky, wireframe edges, centered composition
NEGATIVE_PROMPT: noisy, sloppy, messy, grainy, highly detailed, ultra textured, photo
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD2.1/76b9913e9fa5704b6d30adbde9e1f70f.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD2.1/76b9913e9fa5704b6d30adbde9e1f70f.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: sai-neonpunk
@@ -5475,7 +5475,7 @@ MANTRAS:
BASE_MODEL: SD2.1
PROMPT: neonpunk style {prompt} . cyberpunk, vaporwave, neon, vibes, vibrant, stunningly beautiful, crisp, detailed, sleek, ultramodern, magenta highlights, dark purple shadows, high contrast, cinematic, ultra detailed, intricate, professional
NEGATIVE_PROMPT: painting, drawing, illustration, glitch, deformed, mutated, cross-eyed, ugly, disfigured
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD2.1/7e9ed25bb34008beb5f417df63c4b2fe.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD2.1/7e9ed25bb34008beb5f417df63c4b2fe.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: sai-origami
@@ -5485,7 +5485,7 @@ MANTRAS:
BASE_MODEL: SD2.1
PROMPT: origami style {prompt} . paper art, pleated paper, folded, origami art, pleats, cut and fold, centered composition
NEGATIVE_PROMPT: noisy, sloppy, messy, grainy, highly detailed, ultra textured, photo
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD2.1/924f46a8f276011a0953d7988e90ee25.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD2.1/924f46a8f276011a0953d7988e90ee25.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: sai-photographic
@@ -5495,7 +5495,7 @@ MANTRAS:
BASE_MODEL: SD2.1
PROMPT: cinematic photo {prompt} . 35mm photograph, film, bokeh, professional, 4k, highly detailed
NEGATIVE_PROMPT: drawing, painting, crayon, sketch, graphite, impressionist, noisy, blurry, soft, deformed, ugly
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD2.1/d6a2d8f3d37cc21c20c5dfc13d000b67.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD2.1/d6a2d8f3d37cc21c20c5dfc13d000b67.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: sai-pixel art
@@ -5505,7 +5505,7 @@ MANTRAS:
BASE_MODEL: SD2.1
PROMPT: pixel-art {prompt} . low-res, blocky, pixel art style, 8-bit graphics
NEGATIVE_PROMPT: sloppy, messy, blurry, noisy, highly detailed, ultra textured, photo, realistic
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD2.1/a5ab89c0960be8c1216e65c98d92ae4a.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD2.1/a5ab89c0960be8c1216e65c98d92ae4a.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: sai-texture
@@ -5515,7 +5515,7 @@ MANTRAS:
BASE_MODEL: SD2.1
PROMPT: texture {prompt} top down close-up
NEGATIVE_PROMPT: ugly, deformed, noisy, blurry
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD2.1/ebfeab574283fff2ac096e348a585e6d.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD2.1/ebfeab574283fff2ac096e348a585e6d.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: ads-advertising
@@ -5525,7 +5525,7 @@ MANTRAS:
BASE_MODEL: SD2.1
PROMPT: advertising poster style {prompt} . Professional, modern, product-focused, commercial, eye-catching, highly detailed
NEGATIVE_PROMPT: noisy, blurry, amateurish, sloppy, unattractive
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD2.1/1aa26a16126e2756bf4bf3fda29baa12.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD2.1/1aa26a16126e2756bf4bf3fda29baa12.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: ads-automotive
@@ -5535,7 +5535,7 @@ MANTRAS:
BASE_MODEL: SD2.1
PROMPT: automotive advertisement style {prompt} . sleek, dynamic, professional, commercial, vehicle-focused, high-resolution, highly detailed
NEGATIVE_PROMPT: noisy, blurry, unattractive, sloppy, unprofessional
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD2.1/ddc833b36ca23c85a4f6e7bf0088d081.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD2.1/ddc833b36ca23c85a4f6e7bf0088d081.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: ads-corporate
@@ -5545,7 +5545,7 @@ MANTRAS:
BASE_MODEL: SD2.1
PROMPT: corporate branding style {prompt} . professional, clean, modern, sleek, minimalist, business-oriented, highly detailed
NEGATIVE_PROMPT: noisy, blurry, grungy, sloppy, cluttered, disorganized
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD2.1/df97fa45c7842296c138aca4057db272.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD2.1/df97fa45c7842296c138aca4057db272.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: ads-fashion editorial
@@ -5555,7 +5555,7 @@ MANTRAS:
BASE_MODEL: SD2.1
PROMPT: fashion editorial style {prompt} . high fashion, trendy, stylish, editorial, magazine style, professional, highly detailed
NEGATIVE_PROMPT: outdated, blurry, noisy, unattractive, sloppy
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD2.1/89259be723479cd0b81546b715bea04d.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD2.1/89259be723479cd0b81546b715bea04d.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: ads-food photography
@@ -5565,7 +5565,7 @@ MANTRAS:
BASE_MODEL: SD2.1
PROMPT: food photography style {prompt} . appetizing, professional, culinary, high-resolution, commercial, highly detailed
NEGATIVE_PROMPT: unappetizing, sloppy, unprofessional, noisy, blurry
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD2.1/33acc98f8615940c8cebbac8ce5297b2.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD2.1/33acc98f8615940c8cebbac8ce5297b2.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: ads-gourmet food photography
@@ -5575,7 +5575,7 @@ MANTRAS:
BASE_MODEL: SD2.1
PROMPT: gourmet food photo of {prompt} . soft natural lighting, macro details, vibrant colors, fresh ingredients, glistening textures, bokeh background, styled plating, wooden tabletop, garnished, tantalizing, editorial quality
NEGATIVE_PROMPT: cartoon, anime, sketch, grayscale, dull, overexposed, cluttered, messy plate, deformed
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD2.1/897bbd3f1d232de122796266f3845b50.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD2.1/897bbd3f1d232de122796266f3845b50.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: ads-luxury
@@ -5585,7 +5585,7 @@ MANTRAS:
BASE_MODEL: SD2.1
PROMPT: luxury product style {prompt} . elegant, sophisticated, high-end, luxurious, professional, highly detailed
NEGATIVE_PROMPT: cheap, noisy, blurry, unattractive, amateurish
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD2.1/5b33ecc84dc5ff285a0f2e69f43162cb.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD2.1/5b33ecc84dc5ff285a0f2e69f43162cb.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: ads-real estate
@@ -5595,7 +5595,7 @@ MANTRAS:
BASE_MODEL: SD2.1
PROMPT: real estate photography style {prompt} . professional, inviting, well-lit, high-resolution, property-focused, commercial, highly detailed
NEGATIVE_PROMPT: dark, blurry, unappealing, noisy, unprofessional
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD2.1/1b99b7bcd0476144d80d066e747d8dfc.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD2.1/1b99b7bcd0476144d80d066e747d8dfc.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: ads-retail
@@ -5605,7 +5605,7 @@ MANTRAS:
BASE_MODEL: SD2.1
PROMPT: retail packaging style {prompt} . vibrant, enticing, commercial, product-focused, eye-catching, professional, highly detailed
NEGATIVE_PROMPT: noisy, blurry, amateurish, sloppy, unattractive
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD2.1/0029e46ef36380dde2084257108f8a6f.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD2.1/0029e46ef36380dde2084257108f8a6f.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: artstyle-abstract
@@ -5615,7 +5615,7 @@ MANTRAS:
BASE_MODEL: SD2.1
PROMPT: abstract style {prompt} . non-representational, colors and shapes, expression of feelings, imaginative, highly detailed
NEGATIVE_PROMPT: realistic, photographic, figurative, concrete
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD2.1/8c401cb0a6ea288230222c4985e78667.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD2.1/8c401cb0a6ea288230222c4985e78667.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: artstyle-abstract expressionism
@@ -5625,7 +5625,7 @@ MANTRAS:
BASE_MODEL: SD2.1
PROMPT: abstract expressionist painting {prompt} . energetic brushwork, bold colors, abstract forms, expressive, emotional
NEGATIVE_PROMPT: realistic, photorealistic, low contrast, plain, simple, monochrome
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD2.1/9df6635149c576b65d911c2e4cc6a86b.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD2.1/9df6635149c576b65d911c2e4cc6a86b.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: artstyle-art deco
@@ -5635,7 +5635,7 @@ MANTRAS:
BASE_MODEL: SD2.1
PROMPT: art deco style {prompt} . geometric shapes, bold colors, luxurious, elegant, decorative, symmetrical, ornate, detailed
NEGATIVE_PROMPT: ugly, deformed, noisy, blurry, low contrast, realism, photorealistic, modernist, minimalist
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD2.1/82fff8a25de8075777caf14cb3eb5650.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD2.1/82fff8a25de8075777caf14cb3eb5650.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: artstyle-art nouveau
@@ -5645,7 +5645,7 @@ MANTRAS:
BASE_MODEL: SD2.1
PROMPT: art nouveau style {prompt} . elegant, decorative, curvilinear forms, nature-inspired, ornate, detailed
NEGATIVE_PROMPT: ugly, deformed, noisy, blurry, low contrast, realism, photorealistic, modernist, minimalist
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD2.1/84075c5c0cb4b7a2541c6fbca9835cfd.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD2.1/84075c5c0cb4b7a2541c6fbca9835cfd.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: artstyle-constructivist
@@ -5655,7 +5655,7 @@ MANTRAS:
BASE_MODEL: SD2.1
PROMPT: constructivist style {prompt} . geometric shapes, bold colors, dynamic composition, propaganda art style
NEGATIVE_PROMPT: realistic, photorealistic, low contrast, plain, simple, abstract expressionism
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD2.1/2a634ad0c89ecefbbea4ce5bcab3d5e5.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD2.1/2a634ad0c89ecefbbea4ce5bcab3d5e5.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: artstyle-cubist
@@ -5665,7 +5665,7 @@ MANTRAS:
BASE_MODEL: SD2.1
PROMPT: cubist artwork {prompt} . geometric shapes, abstract, innovative, revolutionary
NEGATIVE_PROMPT: anime, photorealistic, 35mm film, deformed, glitch, low contrast, noisy
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD2.1/2a3d797008c08e12b485d61624741ea6.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD2.1/2a3d797008c08e12b485d61624741ea6.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: artstyle-expressionist
@@ -5675,7 +5675,7 @@ MANTRAS:
BASE_MODEL: SD2.1
PROMPT: expressionist {prompt} . raw, emotional, dynamic, distortion for emotional effect, vibrant, use of unusual colors, detailed
NEGATIVE_PROMPT: realism, symmetry, quiet, calm, photo
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD2.1/83914655659001716a1acede295289d0.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD2.1/83914655659001716a1acede295289d0.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: artstyle-graffiti
@@ -5685,7 +5685,7 @@ MANTRAS:
BASE_MODEL: SD2.1
PROMPT: graffiti style {prompt} . street art, vibrant, urban, detailed, tag, mural
NEGATIVE_PROMPT: ugly, deformed, noisy, blurry, low contrast, realism, photorealistic
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD2.1/f72a23c7623eb480737eb73c08bf8423.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD2.1/f72a23c7623eb480737eb73c08bf8423.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: artstyle-hyperrealism
@@ -5695,7 +5695,7 @@ MANTRAS:
BASE_MODEL: SD2.1
PROMPT: hyperrealistic art {prompt} . extremely high-resolution details, photographic, realism pushed to extreme, fine texture, incredibly lifelike
NEGATIVE_PROMPT: simplified, abstract, unrealistic, impressionistic, low resolution
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD2.1/db378d5a64a8e7ad1e29a4389bda5d1c.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD2.1/db378d5a64a8e7ad1e29a4389bda5d1c.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: artstyle-impressionist
@@ -5705,7 +5705,7 @@ MANTRAS:
BASE_MODEL: SD2.1
PROMPT: impressionist painting {prompt} . loose brushwork, vibrant color, light and shadow play, captures feeling over form
NEGATIVE_PROMPT: anime, photorealistic, 35mm film, deformed, glitch, low contrast, noisy
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD2.1/53b151aec4d5685dfc24511b6705b90e.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD2.1/53b151aec4d5685dfc24511b6705b90e.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: artstyle-pointillism
@@ -5715,7 +5715,7 @@ MANTRAS:
BASE_MODEL: SD2.1
PROMPT: pointillism style {prompt} . composed entirely of small, distinct dots of color, vibrant, highly detailed
NEGATIVE_PROMPT: line drawing, smooth shading, large color fields, simplistic
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD2.1/23b137a409ee8a8c6ee160c1ddf0659f.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD2.1/23b137a409ee8a8c6ee160c1ddf0659f.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: artstyle-pop art
@@ -5725,7 +5725,7 @@ MANTRAS:
BASE_MODEL: SD2.1
PROMPT: pop Art style {prompt} . bright colors, bold outlines, popular culture themes, ironic or kitsch
NEGATIVE_PROMPT: ugly, deformed, noisy, blurry, low contrast, realism, photorealistic, minimalist
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD2.1/bd4faf0e2b7dbc2d0eb21f3ebee97d3d.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD2.1/bd4faf0e2b7dbc2d0eb21f3ebee97d3d.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: artstyle-psychedelic
@@ -5735,7 +5735,7 @@ MANTRAS:
BASE_MODEL: SD2.1
PROMPT: psychedelic style {prompt} . vibrant colors, swirling patterns, abstract forms, surreal, trippy
NEGATIVE_PROMPT: monochrome, black and white, low contrast, realistic, photorealistic, plain, simple
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD2.1/7dc0131817f4c31517581dd4a811067b.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD2.1/7dc0131817f4c31517581dd4a811067b.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: artstyle-renaissance
@@ -5745,7 +5745,7 @@ MANTRAS:
BASE_MODEL: SD2.1
PROMPT: renaissance style {prompt} . realistic, perspective, light and shadow, religious or mythological themes, highly detailed
NEGATIVE_PROMPT: ugly, deformed, noisy, blurry, low contrast, modernist, minimalist, abstract
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD2.1/69796484f61dc2e94d5853f5bbe27c05.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD2.1/69796484f61dc2e94d5853f5bbe27c05.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: artstyle-steampunk
@@ -5755,7 +5755,7 @@ MANTRAS:
BASE_MODEL: SD2.1
PROMPT: steampunk style {prompt} . antique, mechanical, brass and copper tones, gears, intricate, detailed
NEGATIVE_PROMPT: deformed, glitch, noisy, low contrast, anime, photorealistic
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD2.1/985005e28858b03c9500a6eb5bd9e201.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD2.1/985005e28858b03c9500a6eb5bd9e201.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: artstyle-surrealist
@@ -5765,7 +5765,7 @@ MANTRAS:
BASE_MODEL: SD2.1
PROMPT: surrealist art {prompt} . dreamlike, mysterious, provocative, symbolic, intricate, detailed
NEGATIVE_PROMPT: anime, photorealistic, realistic, deformed, glitch, noisy, low contrast
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD2.1/892d19ec3c429b7148562796df0024db.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD2.1/892d19ec3c429b7148562796df0024db.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: artstyle-typography
@@ -5775,7 +5775,7 @@ MANTRAS:
BASE_MODEL: SD2.1
PROMPT: typographic art {prompt} . stylized, intricate, detailed, artistic, text-based
NEGATIVE_PROMPT: ugly, deformed, noisy, blurry, low contrast, realism, photorealistic
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD2.1/9adafe1bb169e1ee3f78ba2c1b1cf8d3.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD2.1/9adafe1bb169e1ee3f78ba2c1b1cf8d3.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: artstyle-watercolor
@@ -5785,7 +5785,7 @@ MANTRAS:
BASE_MODEL: SD2.1
PROMPT: watercolor painting {prompt} . vibrant, beautiful, painterly, detailed, textural, artistic
NEGATIVE_PROMPT: anime, photorealistic, 35mm film, deformed, glitch, low contrast, noisy
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD2.1/29ca23d7a0397e9beaa72e3b63d17551.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD2.1/29ca23d7a0397e9beaa72e3b63d17551.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: futuristic-biomechanical
@@ -5795,7 +5795,7 @@ MANTRAS:
BASE_MODEL: SD2.1
PROMPT: biomechanical style {prompt} . blend of organic and mechanical elements, futuristic, cybernetic, detailed, intricate
NEGATIVE_PROMPT: natural, rustic, primitive, organic, simplistic
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD2.1/5987795487a3fa74469499ae53963d5d.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD2.1/5987795487a3fa74469499ae53963d5d.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: futuristic-biomechanical cyberpunk
@@ -5805,7 +5805,7 @@ MANTRAS:
BASE_MODEL: SD2.1
PROMPT: biomechanical cyberpunk {prompt} . cybernetics, human-machine fusion, dystopian, organic meets artificial, dark, intricate, highly detailed
NEGATIVE_PROMPT: natural, colorful, deformed, sketch, low contrast, watercolor
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD2.1/75b56d7cff9b3f011248b3092ae3b8d2.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD2.1/75b56d7cff9b3f011248b3092ae3b8d2.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: futuristic-cybernetic
@@ -5815,7 +5815,7 @@ MANTRAS:
BASE_MODEL: SD2.1
PROMPT: cybernetic style {prompt} . futuristic, technological, cybernetic enhancements, robotics, artificial intelligence themes
NEGATIVE_PROMPT: ugly, deformed, noisy, blurry, low contrast, realism, photorealistic, historical, medieval
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD2.1/47df6db04290f01aeee7381aaf12ec07.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD2.1/47df6db04290f01aeee7381aaf12ec07.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: futuristic-cybernetic robot
@@ -5825,7 +5825,7 @@ MANTRAS:
BASE_MODEL: SD2.1
PROMPT: cybernetic robot {prompt} . android, AI, machine, metal, wires, tech, futuristic, highly detailed
NEGATIVE_PROMPT: organic, natural, human, sketch, watercolor, low contrast
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD2.1/6f18121b4ba22c8ba7834f404501fa4c.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD2.1/6f18121b4ba22c8ba7834f404501fa4c.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: futuristic-cyberpunk cityscape
@@ -5835,7 +5835,7 @@ MANTRAS:
BASE_MODEL: SD2.1
PROMPT: cyberpunk cityscape {prompt} . neon lights, dark alleys, skyscrapers, futuristic, vibrant colors, high contrast, highly detailed
NEGATIVE_PROMPT: natural, rural, deformed, low contrast, black and white, sketch, watercolor
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD2.1/5e4107dace2c9dd0217a9d1b18ae28f6.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD2.1/5e4107dace2c9dd0217a9d1b18ae28f6.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: futuristic-futuristic
@@ -5845,7 +5845,7 @@ MANTRAS:
BASE_MODEL: SD2.1
PROMPT: futuristic style {prompt} . sleek, modern, ultramodern, high tech, detailed
NEGATIVE_PROMPT: ugly, deformed, noisy, blurry, low contrast, realism, photorealistic, vintage, antique
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD2.1/8a61c0853ee4079bae96ad502a6ae840.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD2.1/8a61c0853ee4079bae96ad502a6ae840.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: futuristic-retro cyberpunk
@@ -5855,7 +5855,7 @@ MANTRAS:
BASE_MODEL: SD2.1
PROMPT: retro cyberpunk {prompt} . 80's inspired, synthwave, neon, vibrant, detailed, retro futurism
NEGATIVE_PROMPT: modern, desaturated, black and white, realism, low contrast
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD2.1/460957bf9a07a58ddec08bf22d5b3698.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD2.1/460957bf9a07a58ddec08bf22d5b3698.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: futuristic-retro futurism
@@ -5865,7 +5865,7 @@ MANTRAS:
BASE_MODEL: SD2.1
PROMPT: retro-futuristic {prompt} . vintage sci-fi, 50s and 60s style, atomic age, vibrant, highly detailed
NEGATIVE_PROMPT: contemporary, realistic, rustic, primitive
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD2.1/0434a7b23a0f936db615d7a9b8e805f1.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD2.1/0434a7b23a0f936db615d7a9b8e805f1.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: futuristic-sci-fi
@@ -5875,7 +5875,7 @@ MANTRAS:
BASE_MODEL: SD2.1
PROMPT: sci-fi style {prompt} . futuristic, technological, alien worlds, space themes, advanced civilizations
NEGATIVE_PROMPT: ugly, deformed, noisy, blurry, low contrast, realism, photorealistic, historical, medieval
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD2.1/7c3bde651f426273758b68a2805d0c8a.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD2.1/7c3bde651f426273758b68a2805d0c8a.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: futuristic-vaporwave
@@ -5885,7 +5885,7 @@ MANTRAS:
BASE_MODEL: SD2.1
PROMPT: vaporwave style {prompt} . retro aesthetic, cyberpunk, vibrant, neon colors, vintage 80s and 90s style, highly detailed
NEGATIVE_PROMPT: monochrome, muted colors, realism, rustic, minimalist, dark
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD2.1/1ebb0bf67ee3ef76288b4c0a2a65d557.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD2.1/1ebb0bf67ee3ef76288b4c0a2a65d557.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: game-bubble bobble
@@ -5895,7 +5895,7 @@ MANTRAS:
BASE_MODEL: SD2.1
PROMPT: Bubble Bobble style {prompt} . 8-bit, cute, pixelated, fantasy, vibrant, reminiscent of Bubble Bobble game
NEGATIVE_PROMPT: realistic, modern, photorealistic, violent, horror
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD2.1/19257352df33228555cb350963d9432a.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD2.1/19257352df33228555cb350963d9432a.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: game-cyberpunk game
@@ -5905,7 +5905,7 @@ MANTRAS:
BASE_MODEL: SD2.1
PROMPT: cyberpunk game style {prompt} . neon, dystopian, futuristic, digital, vibrant, detailed, high contrast, reminiscent of cyberpunk genre video games
NEGATIVE_PROMPT: historical, natural, rustic, low detailed
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD2.1/6165ef47bc859e3dd0e3399ba2264c2b.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD2.1/6165ef47bc859e3dd0e3399ba2264c2b.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: game-fighting game
@@ -5915,7 +5915,7 @@ MANTRAS:
BASE_MODEL: SD2.1
PROMPT: fighting game style {prompt} . dynamic, vibrant, action-packed, detailed character design, reminiscent of fighting video games
NEGATIVE_PROMPT: peaceful, calm, minimalist, photorealistic
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD2.1/aebda69ec1097dc61966995956ae34cc.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD2.1/aebda69ec1097dc61966995956ae34cc.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: game-gta
@@ -5925,7 +5925,7 @@ MANTRAS:
BASE_MODEL: SD2.1
PROMPT: GTA-style artwork {prompt} . satirical, exaggerated, pop art style, vibrant colors, iconic characters, action-packed
NEGATIVE_PROMPT: realistic, black and white, low contrast, impressionist, cubist, noisy, blurry, deformed
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD2.1/edff7ba5fc983468e79e64beb838b829.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD2.1/edff7ba5fc983468e79e64beb838b829.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: game-mario
@@ -5935,7 +5935,7 @@ MANTRAS:
BASE_MODEL: SD2.1
PROMPT: Super Mario style {prompt} . vibrant, cute, cartoony, fantasy, playful, reminiscent of Super Mario series
NEGATIVE_PROMPT: realistic, modern, horror, dystopian, violent
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD2.1/2a229f623ce89160d1f67620599dfc7c.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD2.1/2a229f623ce89160d1f67620599dfc7c.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: game-minecraft
@@ -5945,7 +5945,7 @@ MANTRAS:
BASE_MODEL: SD2.1
PROMPT: Minecraft style {prompt} . blocky, pixelated, vibrant colors, recognizable characters and objects, game assets
NEGATIVE_PROMPT: smooth, realistic, detailed, photorealistic, noise, blurry, deformed
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD2.1/83e77332a9f234fd8c9cddd29e2ec3c7.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD2.1/83e77332a9f234fd8c9cddd29e2ec3c7.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: game-pokemon
@@ -5955,7 +5955,7 @@ MANTRAS:
BASE_MODEL: SD2.1
PROMPT: Pokémon style {prompt} . vibrant, cute, anime, fantasy, reminiscent of Pokémon series
NEGATIVE_PROMPT: realistic, modern, horror, dystopian, violent
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD2.1/9bfe2805e6578875a8dfe2a0ea96c281.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD2.1/9bfe2805e6578875a8dfe2a0ea96c281.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: game-retro arcade
@@ -5965,7 +5965,7 @@ MANTRAS:
BASE_MODEL: SD2.1
PROMPT: retro arcade style {prompt} . 8-bit, pixelated, vibrant, classic video game, old school gaming, reminiscent of 80s and 90s arcade games
NEGATIVE_PROMPT: modern, ultra-high resolution, photorealistic, 3D
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD2.1/76885e0b110f1fdf3eaee52fbaf27abf.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD2.1/76885e0b110f1fdf3eaee52fbaf27abf.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: game-retro game
@@ -5975,7 +5975,7 @@ MANTRAS:
BASE_MODEL: SD2.1
PROMPT: retro game art {prompt} . 16-bit, vibrant colors, pixelated, nostalgic, charming, fun
NEGATIVE_PROMPT: realistic, photorealistic, 35mm film, deformed, glitch, low contrast, noisy
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD2.1/61fbae41c50f56e24dcf20fe3612d456.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD2.1/61fbae41c50f56e24dcf20fe3612d456.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: game-rpg fantasy game
@@ -5985,7 +5985,7 @@ MANTRAS:
BASE_MODEL: SD2.1
PROMPT: role-playing game (RPG) style fantasy {prompt} . detailed, vibrant, immersive, reminiscent of high fantasy RPG games
NEGATIVE_PROMPT: sci-fi, modern, urban, futuristic, low detailed
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD2.1/34797baf58e32b4e1a37753fe9dcff5c.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD2.1/34797baf58e32b4e1a37753fe9dcff5c.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: game-strategy game
@@ -5995,7 +5995,7 @@ MANTRAS:
BASE_MODEL: SD2.1
PROMPT: strategy game style {prompt} . overhead view, detailed map, units, reminiscent of real-time strategy video games
NEGATIVE_PROMPT: first-person view, modern, photorealistic
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD2.1/0d276527d22510a1b5f8f74eac2790df.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD2.1/0d276527d22510a1b5f8f74eac2790df.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: game-streetfighter
@@ -6005,7 +6005,7 @@ MANTRAS:
BASE_MODEL: SD2.1
PROMPT: Street Fighter style {prompt} . vibrant, dynamic, arcade, 2D fighting game, highly detailed, reminiscent of Street Fighter series
NEGATIVE_PROMPT: 3D, realistic, modern, photorealistic, turn-based strategy
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD2.1/f5927fc2b8d4a8212242bd97adcbdfa1.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD2.1/f5927fc2b8d4a8212242bd97adcbdfa1.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: game-zelda
@@ -6015,7 +6015,7 @@ MANTRAS:
BASE_MODEL: SD2.1
PROMPT: Legend of Zelda style {prompt} . vibrant, fantasy, detailed, epic, heroic, reminiscent of The Legend of Zelda series
NEGATIVE_PROMPT: sci-fi, modern, realistic, horror
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD2.1/4f9eadddbc196268258089b8cc4e5c5c.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD2.1/4f9eadddbc196268258089b8cc4e5c5c.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: misc-architectural
@@ -6025,7 +6025,7 @@ MANTRAS:
BASE_MODEL: SD2.1
PROMPT: architectural style {prompt} . clean lines, geometric shapes, minimalist, modern, architectural drawing, highly detailed
NEGATIVE_PROMPT: curved lines, ornate, baroque, abstract, grunge
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD2.1/488545e9fc9417d62961f42d578547d2.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD2.1/488545e9fc9417d62961f42d578547d2.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: misc-disco
@@ -6035,7 +6035,7 @@ MANTRAS:
BASE_MODEL: SD2.1
PROMPT: disco-themed {prompt} . vibrant, groovy, retro 70s style, shiny disco balls, neon lights, dance floor, highly detailed
NEGATIVE_PROMPT: minimalist, rustic, monochrome, contemporary, simplistic
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD2.1/784b0ac35e0c0fdb2df21a95d5ca1c55.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD2.1/784b0ac35e0c0fdb2df21a95d5ca1c55.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: misc-dreamscape
@@ -6045,7 +6045,7 @@ MANTRAS:
BASE_MODEL: SD2.1
PROMPT: dreamscape {prompt} . surreal, ethereal, dreamy, mysterious, fantasy, highly detailed
NEGATIVE_PROMPT: realistic, concrete, ordinary, mundane
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD2.1/2bf77804b5bf352c4e97475b1e8eb29e.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD2.1/2bf77804b5bf352c4e97475b1e8eb29e.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: misc-dystopian
@@ -6055,7 +6055,7 @@ MANTRAS:
BASE_MODEL: SD2.1
PROMPT: dystopian style {prompt} . bleak, post-apocalyptic, somber, dramatic, highly detailed
NEGATIVE_PROMPT: ugly, deformed, noisy, blurry, low contrast, cheerful, optimistic, vibrant, colorful
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD2.1/065db0385e126192cbd27e22ca4f154c.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD2.1/065db0385e126192cbd27e22ca4f154c.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: misc-fairy tale
@@ -6065,7 +6065,7 @@ MANTRAS:
BASE_MODEL: SD2.1
PROMPT: fairy tale {prompt} . magical, fantastical, enchanting, storybook style, highly detailed
NEGATIVE_PROMPT: realistic, modern, ordinary, mundane
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD2.1/578dfe65d9f03e83c95820d4c45cd396.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD2.1/578dfe65d9f03e83c95820d4c45cd396.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: misc-gothic
@@ -6075,7 +6075,7 @@ MANTRAS:
BASE_MODEL: SD2.1
PROMPT: gothic style {prompt} . dark, mysterious, haunting, dramatic, ornate, detailed
NEGATIVE_PROMPT: ugly, deformed, noisy, blurry, low contrast, realism, photorealistic, cheerful, optimistic
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD2.1/332a1f8cd655b724cb48bc5c91b764fc.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD2.1/332a1f8cd655b724cb48bc5c91b764fc.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: misc-grunge
@@ -6085,7 +6085,7 @@ MANTRAS:
BASE_MODEL: SD2.1
PROMPT: grunge style {prompt} . textured, distressed, vintage, edgy, punk rock vibe, dirty, noisy
NEGATIVE_PROMPT: smooth, clean, minimalist, sleek, modern, photorealistic
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD2.1/0ccb4c03c6d983b9f6d05ba383f9d690.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD2.1/0ccb4c03c6d983b9f6d05ba383f9d690.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: misc-horror
@@ -6095,7 +6095,7 @@ MANTRAS:
BASE_MODEL: SD2.1
PROMPT: horror-themed {prompt} . eerie, unsettling, dark, spooky, suspenseful, grim, highly detailed
NEGATIVE_PROMPT: cheerful, bright, vibrant, light-hearted, cute
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD2.1/fdca4780d099a39dc50e4553622fba72.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD2.1/fdca4780d099a39dc50e4553622fba72.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: misc-kawaii
@@ -6105,7 +6105,7 @@ MANTRAS:
BASE_MODEL: SD2.1
PROMPT: kawaii style {prompt} . cute, adorable, brightly colored, cheerful, anime influence, highly detailed
NEGATIVE_PROMPT: dark, scary, realistic, monochrome, abstract
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD2.1/99dab4185e7337189d8959878bfa308b.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD2.1/99dab4185e7337189d8959878bfa308b.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: misc-lovecraftian
@@ -6115,7 +6115,7 @@ MANTRAS:
BASE_MODEL: SD2.1
PROMPT: lovecraftian horror {prompt} . eldritch, cosmic horror, unknown, mysterious, surreal, highly detailed
NEGATIVE_PROMPT: light-hearted, mundane, familiar, simplistic, realistic
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD2.1/b7c9d084ed62c1c2e1ea080ad95af61e.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD2.1/b7c9d084ed62c1c2e1ea080ad95af61e.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: misc-macabre
@@ -6125,7 +6125,7 @@ MANTRAS:
BASE_MODEL: SD2.1
PROMPT: macabre style {prompt} . dark, gothic, grim, haunting, highly detailed
NEGATIVE_PROMPT: bright, cheerful, light-hearted, cartoonish, cute
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD2.1/fd7cf2315b27b0434b909020414e1173.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD2.1/fd7cf2315b27b0434b909020414e1173.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: misc-manga
@@ -6135,7 +6135,7 @@ MANTRAS:
BASE_MODEL: SD2.1
PROMPT: manga style {prompt} . vibrant, high-energy, detailed, iconic, Japanese comic style
NEGATIVE_PROMPT: ugly, deformed, noisy, blurry, low contrast, realism, photorealistic, Western comic style
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD2.1/531aac90b321d39221ba7cf70a97b232.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD2.1/531aac90b321d39221ba7cf70a97b232.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: misc-metropolis
@@ -6145,7 +6145,7 @@ MANTRAS:
BASE_MODEL: SD2.1
PROMPT: metropolis-themed {prompt} . urban, cityscape, skyscrapers, modern, futuristic, highly detailed
NEGATIVE_PROMPT: rural, natural, rustic, historical, simple
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD2.1/eaad79fe3d7160cec6e0656fc3b02d3c.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD2.1/eaad79fe3d7160cec6e0656fc3b02d3c.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: misc-minimalist
@@ -6155,7 +6155,7 @@ MANTRAS:
BASE_MODEL: SD2.1
PROMPT: minimalist style {prompt} . simple, clean, uncluttered, modern, elegant
NEGATIVE_PROMPT: ornate, complicated, highly detailed, cluttered, disordered, messy, noisy
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD2.1/e85dd1ccc7f22bdac054d74ba58521b2.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD2.1/e85dd1ccc7f22bdac054d74ba58521b2.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: misc-monochrome
@@ -6165,7 +6165,7 @@ MANTRAS:
BASE_MODEL: SD2.1
PROMPT: monochrome {prompt} . black and white, contrast, tone, texture, detailed
NEGATIVE_PROMPT: colorful, vibrant, noisy, blurry, deformed
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD2.1/cc793ada6b47561f4b63aa66dcd282ac.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD2.1/cc793ada6b47561f4b63aa66dcd282ac.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: misc-nautical
@@ -6175,7 +6175,7 @@ MANTRAS:
BASE_MODEL: SD2.1
PROMPT: nautical-themed {prompt} . sea, ocean, ships, maritime, beach, marine life, highly detailed
NEGATIVE_PROMPT: landlocked, desert, mountains, urban, rustic
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD2.1/3d9f6528180670804a2c5e85c7665c42.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD2.1/3d9f6528180670804a2c5e85c7665c42.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: misc-space
@@ -6185,7 +6185,7 @@ MANTRAS:
BASE_MODEL: SD2.1
PROMPT: space-themed {prompt} . cosmic, celestial, stars, galaxies, nebulas, planets, science fiction, highly detailed
NEGATIVE_PROMPT: earthly, mundane, ground-based, realism
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD2.1/6f5742d23b43fc99cc01c8b68518df7c.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD2.1/6f5742d23b43fc99cc01c8b68518df7c.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: misc-stained glass
@@ -6195,7 +6195,7 @@ MANTRAS:
BASE_MODEL: SD2.1
PROMPT: stained glass style {prompt} . vibrant, beautiful, translucent, intricate, detailed
NEGATIVE_PROMPT: ugly, deformed, noisy, blurry, low contrast, realism, photorealistic
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD2.1/ab0512ced9ed572075c49ad4f9f9a45d.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD2.1/ab0512ced9ed572075c49ad4f9f9a45d.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: misc-techwear fashion
@@ -6205,7 +6205,7 @@ MANTRAS:
BASE_MODEL: SD2.1
PROMPT: techwear fashion {prompt} . futuristic, cyberpunk, urban, tactical, sleek, dark, highly detailed
NEGATIVE_PROMPT: vintage, rural, colorful, low contrast, realism, sketch, watercolor
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD2.1/652a6bdb1b36860041222a458c7915d0.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD2.1/652a6bdb1b36860041222a458c7915d0.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: misc-tribal
@@ -6215,7 +6215,7 @@ MANTRAS:
BASE_MODEL: SD2.1
PROMPT: tribal style {prompt} . indigenous, ethnic, traditional patterns, bold, natural colors, highly detailed
NEGATIVE_PROMPT: modern, futuristic, minimalist, pastel
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD2.1/1ecdaf153ece5e16250b87020b7a209b.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD2.1/1ecdaf153ece5e16250b87020b7a209b.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: misc-zentangle
@@ -6225,7 +6225,7 @@ MANTRAS:
BASE_MODEL: SD2.1
PROMPT: zentangle {prompt} . intricate, abstract, monochrome, patterns, meditative, highly detailed
NEGATIVE_PROMPT: colorful, representative, simplistic, large fields of color
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD2.1/80f3488cdb69f0ff13d83a4feac4499d.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD2.1/80f3488cdb69f0ff13d83a4feac4499d.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: papercraft-collage
@@ -6235,7 +6235,7 @@ MANTRAS:
BASE_MODEL: SD2.1
PROMPT: collage style {prompt} . mixed media, layered, textural, detailed, artistic
NEGATIVE_PROMPT: ugly, deformed, noisy, blurry, low contrast, realism, photorealistic
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD2.1/c9bbdaba28358faf1a8c1df44b3de950.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD2.1/c9bbdaba28358faf1a8c1df44b3de950.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: papercraft-flat papercut
@@ -6245,7 +6245,7 @@ MANTRAS:
BASE_MODEL: SD2.1
PROMPT: flat papercut style {prompt} . silhouette, clean cuts, paper, sharp edges, minimalist, color block
NEGATIVE_PROMPT: 3D, high detail, noise, grainy, blurry, painting, drawing, photo, disfigured
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD2.1/1bffcd9a4086b29c367b8301f26eed3b.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD2.1/1bffcd9a4086b29c367b8301f26eed3b.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: papercraft-kirigami
@@ -6255,7 +6255,7 @@ MANTRAS:
BASE_MODEL: SD2.1
PROMPT: kirigami representation of {prompt} . 3D, paper folding, paper cutting, Japanese, intricate, symmetrical, precision, clean lines
NEGATIVE_PROMPT: painting, drawing, 2D, noisy, blurry, deformed
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD2.1/2e5f95977b97b2a6248924e118a23076.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD2.1/2e5f95977b97b2a6248924e118a23076.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: papercraft-paper mache
@@ -6265,7 +6265,7 @@ MANTRAS:
BASE_MODEL: SD2.1
PROMPT: paper mache representation of {prompt} . 3D, sculptural, textured, handmade, vibrant, fun
NEGATIVE_PROMPT: 2D, flat, photo, sketch, digital art, deformed, noisy, blurry
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD2.1/68441f668fcf7a51db5fc9b9d4d45ce7.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD2.1/68441f668fcf7a51db5fc9b9d4d45ce7.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: papercraft-paper quilling
@@ -6275,7 +6275,7 @@ MANTRAS:
BASE_MODEL: SD2.1
PROMPT: paper quilling art of {prompt} . intricate, delicate, curling, rolling, shaping, coiling, loops, 3D, dimensional, ornamental
NEGATIVE_PROMPT: photo, painting, drawing, 2D, flat, deformed, noisy, blurry
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD2.1/8c0504eb14341b66796612c46bb3748b.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD2.1/8c0504eb14341b66796612c46bb3748b.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: papercraft-papercut collage
@@ -6285,7 +6285,7 @@ MANTRAS:
BASE_MODEL: SD2.1
PROMPT: papercut collage of {prompt} . mixed media, textured paper, overlapping, asymmetrical, abstract, vibrant
NEGATIVE_PROMPT: photo, 3D, realistic, drawing, painting, high detail, disfigured
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD2.1/217e7c8b905b63c63c94bd6ff8fe3477.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD2.1/217e7c8b905b63c63c94bd6ff8fe3477.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: papercraft-papercut shadow box
@@ -6295,7 +6295,7 @@ MANTRAS:
BASE_MODEL: SD2.1
PROMPT: 3D papercut shadow box of {prompt} . layered, dimensional, depth, silhouette, shadow, papercut, handmade, high contrast
NEGATIVE_PROMPT: painting, drawing, photo, 2D, flat, high detail, blurry, noisy, disfigured
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD2.1/2af0d61de1b17a5a5257f512549f9616.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD2.1/2af0d61de1b17a5a5257f512549f9616.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: papercraft-stacked papercut
@@ -6305,7 +6305,7 @@ MANTRAS:
BASE_MODEL: SD2.1
PROMPT: stacked papercut art of {prompt} . 3D, layered, dimensional, depth, precision cut, stacked layers, papercut, high contrast
NEGATIVE_PROMPT: 2D, flat, noisy, blurry, painting, drawing, photo, deformed
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD2.1/62618e32e90539827e0eb279a6ea170a.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD2.1/62618e32e90539827e0eb279a6ea170a.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: papercraft-thick layered papercut
@@ -6315,7 +6315,7 @@ MANTRAS:
BASE_MODEL: SD2.1
PROMPT: thick layered papercut art of {prompt} . deep 3D, volumetric, dimensional, depth, thick paper, high stack, heavy texture, tangible layers
NEGATIVE_PROMPT: 2D, flat, thin paper, low stack, smooth texture, painting, drawing, photo, deformed
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD2.1/17008c40a6be8d41d3921ee88bac27ad.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD2.1/17008c40a6be8d41d3921ee88bac27ad.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: photo-alien
@@ -6325,7 +6325,7 @@ MANTRAS:
BASE_MODEL: SD2.1
PROMPT: alien-themed {prompt} . extraterrestrial, cosmic, otherworldly, mysterious, sci-fi, highly detailed
NEGATIVE_PROMPT: earthly, mundane, common, realistic, simple
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD2.1/eae6043dee2b2d94cd9a22cb044db8b3.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD2.1/eae6043dee2b2d94cd9a22cb044db8b3.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: photo-film noir
@@ -6335,7 +6335,7 @@ MANTRAS:
BASE_MODEL: SD2.1
PROMPT: film noir style {prompt} . monochrome, high contrast, dramatic shadows, 1940s style, mysterious, cinematic
NEGATIVE_PROMPT: ugly, deformed, noisy, blurry, low contrast, realism, photorealistic, vibrant, colorful
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD2.1/0b3629be5ebb7cda463877a1993a0298.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD2.1/0b3629be5ebb7cda463877a1993a0298.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: photo-glamour
@@ -6345,7 +6345,7 @@ MANTRAS:
BASE_MODEL: SD2.1
PROMPT: glamorous photo {prompt} . high fashion, luxurious, extravagant, stylish, sensual, opulent, elegance, stunning beauty, professional, high contrast, detailed
NEGATIVE_PROMPT: ugly, deformed, noisy, blurry, distorted, grainy, sketch, low contrast, dull, plain, modest
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD2.1/f85dc6aa5d7f7d6d3663f2270e276796.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD2.1/f85dc6aa5d7f7d6d3663f2270e276796.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: photo-hdr
@@ -6355,7 +6355,7 @@ MANTRAS:
BASE_MODEL: SD2.1
PROMPT: HDR photo of {prompt} . High dynamic range, vivid, rich details, clear shadows and highlights, realistic, intense, enhanced contrast, highly detailed
NEGATIVE_PROMPT: flat, low contrast, oversaturated, underexposed, overexposed, blurred, noisy
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD2.1/269a98b284ae1345b0e5ac1f85c33179.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD2.1/269a98b284ae1345b0e5ac1f85c33179.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: photo-iphone photographic
@@ -6365,7 +6365,7 @@ MANTRAS:
BASE_MODEL: SD2.1
PROMPT: iphone photo {prompt} . large depth of field, deep depth of field, highly detailed
NEGATIVE_PROMPT: drawing, painting, crayon, sketch, graphite, impressionist, noisy, blurry, soft, deformed, ugly, shallow depth of field, bokeh
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD2.1/48c556a6b3c3a533847b80b031cd4962.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD2.1/48c556a6b3c3a533847b80b031cd4962.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: photo-long exposure
@@ -6375,7 +6375,7 @@ MANTRAS:
BASE_MODEL: SD2.1
PROMPT: long exposure photo of {prompt} . Blurred motion, streaks of light, surreal, dreamy, ghosting effect, highly detailed
NEGATIVE_PROMPT: static, noisy, deformed, shaky, abrupt, flat, low contrast
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD2.1/fda88c3fc43ea8cc04ce9b5c0261627f.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD2.1/fda88c3fc43ea8cc04ce9b5c0261627f.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: photo-neon noir
@@ -6385,7 +6385,7 @@ MANTRAS:
BASE_MODEL: SD2.1
PROMPT: neon noir {prompt} . cyberpunk, dark, rainy streets, neon signs, high contrast, low light, vibrant, highly detailed
NEGATIVE_PROMPT: bright, sunny, daytime, low contrast, black and white, sketch, watercolor
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD2.1/8a5b71434592771e064af4b9017b59d6.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD2.1/8a5b71434592771e064af4b9017b59d6.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: photo-silhouette
@@ -6395,7 +6395,7 @@ MANTRAS:
BASE_MODEL: SD2.1
PROMPT: silhouette style {prompt} . high contrast, minimalistic, black and white, stark, dramatic
NEGATIVE_PROMPT: ugly, deformed, noisy, blurry, low contrast, color, realism, photorealistic
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD2.1/1892a37e66d33cdd9b713aaab6b8c597.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD2.1/1892a37e66d33cdd9b713aaab6b8c597.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
-
NAME: photo-tilt-shift
@@ -6405,5 +6405,5 @@ MANTRAS:
BASE_MODEL: SD2.1
PROMPT: tilt-shift photo of {prompt} . selective focus, miniature effect, blurred background, highly detailed, vibrant, perspective control
NEGATIVE_PROMPT: blurry, noisy, deformed, flat, low contrast, unrealistic, oversaturated, underexposed
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD2.1/d058a157de848a5c03d9a3e1e0e560a2.png
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD2.1/d058a157de848a5c03d9a3e1e0e560a2.jpg
PROMPT_EXAMPLE: a boy wearing green jacket
diff --git a/scepter/methods/studio/extensions/tuners/official_tuners.yaml b/scepter/methods/studio/extensions/tuners/official_tuners.yaml
index 3fcec5c..868c32c 100644
--- a/scepter/methods/studio/extensions/tuners/official_tuners.yaml
+++ b/scepter/methods/studio/extensions/tuners/official_tuners.yaml
@@ -4,8 +4,8 @@ TUNERS:
SOURCE: scepter
DESCRIPTION: None
BASE_MODEL: SD_XL1.0
- MODEL_PATH: ms://damo/scepter_scedit@tuners_model/SD_XL1.0/azure_dragon/
- IMAGE_PATH: ms://damo/scepter_scedit@tuners_model/SD_XL1.0/azure_dragon/xl_azure_dragon.png
+ MODEL_PATH: ms://iic/scepter_scedit@tuners_model/SD_XL1.0/azure_dragon/
+ IMAGE_PATH: ms://iic/scepter_scedit@tuners_model/SD_XL1.0/azure_dragon/xl_azure_dragon.png
TUNER_TYPE: SwiftSCE
PROMPT_EXAMPLE: Azure Dragon, 8K, high quality,Ultra High Detail.One of the Four Divine Creatures in Charge of Water.
- NAME: Gold-Dragon
@@ -13,8 +13,8 @@ TUNERS:
SOURCE: scepter
DESCRIPTION: None
BASE_MODEL: SD_XL1.0
- MODEL_PATH: ms://damo/scepter_scedit@tuners_model/SD_XL1.0/gold_dragon/
- IMAGE_PATH: ms://damo/scepter_scedit@tuners_model/SD_XL1.0/gold_dragon/xl_gold_dragon.png
+ MODEL_PATH: ms://iic/scepter_scedit@tuners_model/SD_XL1.0/gold_dragon/
+ IMAGE_PATH: ms://iic/scepter_scedit@tuners_model/SD_XL1.0/gold_dragon/xl_gold_dragon.png
TUNER_TYPE: SwiftSCE
PROMPT_EXAMPLE: Chinese Gold Dragon in the clouds. Translucent Texture. Zbrush. Fuzzy Art. Exquisite Craftsmanship. 3D. 8K. Ultra High Detail
- NAME: SpringFestival-Dragon
@@ -22,8 +22,8 @@ TUNERS:
SOURCE: scepter
DESCRIPTION: None
BASE_MODEL: SD_XL1.0
- MODEL_PATH: ms://damo/scepter_scedit@tuners_model/SD_XL1.0/spring_festival_dragon/
- IMAGE_PATH: ms://damo/scepter_scedit@tuners_model/SD_XL1.0/spring_festival_dragon/xl_spring_festival_dragon.png
+ MODEL_PATH: ms://iic/scepter_scedit@tuners_model/SD_XL1.0/spring_festival_dragon/
+ IMAGE_PATH: ms://iic/scepter_scedit@tuners_model/SD_XL1.0/spring_festival_dragon/xl_spring_festival_dragon.png
TUNER_TYPE: SwiftSCE
PROMPT_EXAMPLE: Chinese dragon. Spring Festival.Festive.Street.Lanterns.32K.High quality.expressive, dramatic, dreamlike and mysterious, Surrealism
- NAME: Red-Dragon
@@ -31,8 +31,8 @@ TUNERS:
SOURCE: scepter
DESCRIPTION: None
BASE_MODEL: SD_XL1.0
- MODEL_PATH: ms://damo/scepter_scedit@tuners_model/SD_XL1.0/red_dragon/
- IMAGE_PATH: ms://damo/scepter_scedit@tuners_model/SD_XL1.0/red_dragon/xl_red_dragon.png
+ MODEL_PATH: ms://iic/scepter_scedit@tuners_model/SD_XL1.0/red_dragon/
+ IMAGE_PATH: ms://iic/scepter_scedit@tuners_model/SD_XL1.0/red_dragon/xl_red_dragon.png
TUNER_TYPE: SwiftSCE
PROMPT_EXAMPLE: Traditional Red Dragon of China. Low Water Level. Studio Ghibli Style. Mural Illustration. White Background. High Detail
- NAME: ChinesePunk-Dragon
@@ -40,8 +40,8 @@ TUNERS:
SOURCE: scepter
DESCRIPTION: None
BASE_MODEL: SD_XL1.0
- MODEL_PATH: ms://damo/scepter_scedit@tuners_model/SD_XL1.0/chinese_punk_dragon/
- IMAGE_PATH: ms://damo/scepter_scedit@tuners_model/SD_XL1.0/chinese_punk_dragon/xl_chinese_punk_dragon.png
+ MODEL_PATH: ms://iic/scepter_scedit@tuners_model/SD_XL1.0/chinese_punk_dragon/
+ IMAGE_PATH: ms://iic/scepter_scedit@tuners_model/SD_XL1.0/chinese_punk_dragon/xl_chinese_punk_dragon.png
TUNER_TYPE: SwiftSCE
PROMPT_EXAMPLE: uhd Image,Dragon,Chinese Dragon, Dunhuang Mural Style, Traditional Maritime Art Style
- NAME: Cute-Dragon
@@ -49,8 +49,8 @@ TUNERS:
SOURCE: scepter
DESCRIPTION: None
BASE_MODEL: SD_XL1.0
- MODEL_PATH: ms://damo/scepter_scedit@tuners_model/SD_XL1.0/cute_dragon/
- IMAGE_PATH: ms://damo/scepter_scedit@tuners_model/SD_XL1.0/cute_dragon/xl_kawaii_dragon.png
+ MODEL_PATH: ms://iic/scepter_scedit@tuners_model/SD_XL1.0/cute_dragon/
+ IMAGE_PATH: ms://iic/scepter_scedit@tuners_model/SD_XL1.0/cute_dragon/xl_kawaii_dragon.png
TUNER_TYPE: SwiftSCE
PROMPT_EXAMPLE: China Kawaii Dragon. Contest Winner. Minimalist Illustration. White Background. Flat Style. Digital Painting Style. Red. 32k uhd. Fun Comics. Fuzzy Art. Bold. Comic-Inspired Characters
- NAME: Dragon-Baby
@@ -58,8 +58,8 @@ TUNERS:
SOURCE: scepter
DESCRIPTION: None
BASE_MODEL: SD_XL1.0
- MODEL_PATH: ms://damo/scepter_scedit@tuners_model/SD_XL1.0/baby_dragon/
- IMAGE_PATH: ms://damo/scepter_scedit@tuners_model/SD_XL1.0/baby_dragon/xl_baby_dragon.png
+ MODEL_PATH: ms://iic/scepter_scedit@tuners_model/SD_XL1.0/baby_dragon/
+ IMAGE_PATH: ms://iic/scepter_scedit@tuners_model/SD_XL1.0/baby_dragon/xl_baby_dragon.png
TUNER_TYPE: SwiftSCE
PROMPT_EXAMPLE: Warm Colors, Soft,Chinese Dragon Baby, Felt Style,Dragon Baby, Best Quality, 3D Doll, Macaron Tones, Glittering Big Eyes, Winter,Dragon
- NAME: Sloppy-Dragon
@@ -67,8 +67,8 @@ TUNERS:
SOURCE: scepter
DESCRIPTION: None
BASE_MODEL: SD_XL1.0
- MODEL_PATH: ms://damo/scepter_scedit@tuners_model/SD_XL1.0/sloppy_dragon/
- IMAGE_PATH: ms://damo/scepter_scedit@tuners_model/SD_XL1.0/sloppy_dragon/xl_sloppy_dragon.png
+ MODEL_PATH: ms://iic/scepter_scedit@tuners_model/SD_XL1.0/sloppy_dragon/
+ IMAGE_PATH: ms://iic/scepter_scedit@tuners_model/SD_XL1.0/sloppy_dragon/xl_sloppy_dragon.png
TUNER_TYPE: SwiftSCE
PROMPT_EXAMPLE: Messy Chinese Dragon,Cute, Wu Guanzhong, Rough
-
@@ -77,8 +77,8 @@ TUNERS:
DESCRIPTION:
SOURCE: diva
BASE_MODEL: SD_XL1.0
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD_XL1.0/894f40ed44b37c3372e6a22b8ae577a4.png
- MODEL_PATH: ms://damo/scepter_scedit@tuners_model/SD_XL1.0/Caricature
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD_XL1.0/894f40ed44b37c3372e6a22b8ae577a4.jpg
+ MODEL_PATH: ms://iic/scepter_scedit@tuners_model/SD_XL1.0/Caricature
TUNER_TYPE: SwiftSCE
PROMPT_EXAMPLE: a boy wearing green jacket
-
@@ -87,8 +87,8 @@ TUNERS:
DESCRIPTION:
SOURCE: diva
BASE_MODEL: SD2.1
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD2.1/894f40ed44b37c3372e6a22b8ae577a4.png
- MODEL_PATH: ms://damo/scepter_scedit@tuners_model/SD2.1/Caricature
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD2.1/894f40ed44b37c3372e6a22b8ae577a4.jpg
+ MODEL_PATH: ms://iic/scepter_scedit@tuners_model/SD2.1/Caricature
TUNER_TYPE: SwiftSCE
PROMPT_EXAMPLE: a boy wearing green jacket
-
@@ -97,8 +97,8 @@ TUNERS:
DESCRIPTION:
SOURCE: diva
BASE_MODEL: SD1.5
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD1.5/894f40ed44b37c3372e6a22b8ae577a4.png
- MODEL_PATH: ms://damo/scepter_scedit@tuners_model/SD1.5/Caricature
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD1.5/894f40ed44b37c3372e6a22b8ae577a4.jpg
+ MODEL_PATH: ms://iic/scepter_scedit@tuners_model/SD1.5/Caricature
TUNER_TYPE: SwiftSCE
PROMPT_EXAMPLE: a boy wearing green jacket
-
@@ -107,8 +107,8 @@ TUNERS:
DESCRIPTION:
SOURCE: diva
BASE_MODEL: SD_XL1.0
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD_XL1.0/80e5b4075c572c04cbb4e48c37b8366b.png
- MODEL_PATH: ms://damo/scepter_scedit@tuners_model/SD_XL1.0/ColorFieldPainting
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD_XL1.0/80e5b4075c572c04cbb4e48c37b8366b.jpg
+ MODEL_PATH: ms://iic/scepter_scedit@tuners_model/SD_XL1.0/ColorFieldPainting
TUNER_TYPE: SwiftSCE
PROMPT_EXAMPLE: a boy wearing green jacket
-
@@ -117,8 +117,8 @@ TUNERS:
DESCRIPTION:
SOURCE: diva
BASE_MODEL: SD2.1
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD2.1/80e5b4075c572c04cbb4e48c37b8366b.png
- MODEL_PATH: ms://damo/scepter_scedit@tuners_model/SD2.1/ColorFieldPainting
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD2.1/80e5b4075c572c04cbb4e48c37b8366b.jpg
+ MODEL_PATH: ms://iic/scepter_scedit@tuners_model/SD2.1/ColorFieldPainting
TUNER_TYPE: SwiftSCE
PROMPT_EXAMPLE: a boy wearing green jacket
-
@@ -127,8 +127,8 @@ TUNERS:
DESCRIPTION:
SOURCE: diva
BASE_MODEL: SD1.5
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD1.5/80e5b4075c572c04cbb4e48c37b8366b.png
- MODEL_PATH: ms://damo/scepter_scedit@tuners_model/SD1.5/ColorFieldPainting
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD1.5/80e5b4075c572c04cbb4e48c37b8366b.jpg
+ MODEL_PATH: ms://iic/scepter_scedit@tuners_model/SD1.5/ColorFieldPainting
TUNER_TYPE: SwiftSCE
PROMPT_EXAMPLE: a boy wearing green jacket
-
@@ -137,8 +137,8 @@ TUNERS:
DESCRIPTION:
SOURCE: diva
BASE_MODEL: SD_XL1.0
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD_XL1.0/9ae235d7f1a7c2a4edab52a5e9f9cbae.png
- MODEL_PATH: ms://damo/scepter_scedit@tuners_model/SD_XL1.0/ColoredPencilArt
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD_XL1.0/9ae235d7f1a7c2a4edab52a5e9f9cbae.jpg
+ MODEL_PATH: ms://iic/scepter_scedit@tuners_model/SD_XL1.0/ColoredPencilArt
TUNER_TYPE: SwiftSCE
PROMPT_EXAMPLE: a boy wearing green jacket
-
@@ -147,8 +147,8 @@ TUNERS:
DESCRIPTION:
SOURCE: diva
BASE_MODEL: SD2.1
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD2.1/9ae235d7f1a7c2a4edab52a5e9f9cbae.png
- MODEL_PATH: ms://damo/scepter_scedit@tuners_model/SD2.1/ColoredPencilArt
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD2.1/9ae235d7f1a7c2a4edab52a5e9f9cbae.jpg
+ MODEL_PATH: ms://iic/scepter_scedit@tuners_model/SD2.1/ColoredPencilArt
TUNER_TYPE: SwiftSCE
PROMPT_EXAMPLE: a boy wearing green jacket
-
@@ -157,8 +157,8 @@ TUNERS:
DESCRIPTION:
SOURCE: diva
BASE_MODEL: SD1.5
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD1.5/9ae235d7f1a7c2a4edab52a5e9f9cbae.png
- MODEL_PATH: ms://damo/scepter_scedit@tuners_model/SD1.5/ColoredPencilArt
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD1.5/9ae235d7f1a7c2a4edab52a5e9f9cbae.jpg
+ MODEL_PATH: ms://iic/scepter_scedit@tuners_model/SD1.5/ColoredPencilArt
TUNER_TYPE: SwiftSCE
PROMPT_EXAMPLE: a boy wearing green jacket
-
@@ -167,8 +167,8 @@ TUNERS:
DESCRIPTION:
SOURCE: diva
BASE_MODEL: SD_XL1.0
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD_XL1.0/3da915da2f5cedaf243e57e08163f35b.png
- MODEL_PATH: ms://damo/scepter_scedit@tuners_model/SD_XL1.0/DarkMoodyAtmosphere
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD_XL1.0/3da915da2f5cedaf243e57e08163f35b.jpg
+ MODEL_PATH: ms://iic/scepter_scedit@tuners_model/SD_XL1.0/DarkMoodyAtmosphere
TUNER_TYPE: SwiftSCE
PROMPT_EXAMPLE: a boy wearing green jacket
-
@@ -177,8 +177,8 @@ TUNERS:
DESCRIPTION:
SOURCE: diva
BASE_MODEL: SD2.1
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD2.1/3da915da2f5cedaf243e57e08163f35b.png
- MODEL_PATH: ms://damo/scepter_scedit@tuners_model/SD2.1/DarkMoodyAtmosphere
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD2.1/3da915da2f5cedaf243e57e08163f35b.jpg
+ MODEL_PATH: ms://iic/scepter_scedit@tuners_model/SD2.1/DarkMoodyAtmosphere
TUNER_TYPE: SwiftSCE
PROMPT_EXAMPLE: a boy wearing green jacket
-
@@ -187,8 +187,8 @@ TUNERS:
DESCRIPTION:
SOURCE: diva
BASE_MODEL: SD1.5
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD1.5/3da915da2f5cedaf243e57e08163f35b.png
- MODEL_PATH: ms://damo/scepter_scedit@tuners_model/SD1.5/DarkMoodyAtmosphere
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD1.5/3da915da2f5cedaf243e57e08163f35b.jpg
+ MODEL_PATH: ms://iic/scepter_scedit@tuners_model/SD1.5/DarkMoodyAtmosphere
TUNER_TYPE: SwiftSCE
PROMPT_EXAMPLE: a boy wearing green jacket
-
@@ -197,8 +197,8 @@ TUNERS:
DESCRIPTION:
SOURCE: diva
BASE_MODEL: SD_XL1.0
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD_XL1.0/69fd81f5983107acc3d334af62915851.png
- MODEL_PATH: ms://damo/scepter_scedit@tuners_model/SD_XL1.0/DrippingPaintSplatterArt
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD_XL1.0/69fd81f5983107acc3d334af62915851.jpg
+ MODEL_PATH: ms://iic/scepter_scedit@tuners_model/SD_XL1.0/DrippingPaintSplatterArt
TUNER_TYPE: SwiftSCE
PROMPT_EXAMPLE: a boy wearing green jacket
-
@@ -207,8 +207,8 @@ TUNERS:
DESCRIPTION:
SOURCE: diva
BASE_MODEL: SD2.1
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD2.1/69fd81f5983107acc3d334af62915851.png
- MODEL_PATH: ms://damo/scepter_scedit@tuners_model/SD2.1/DrippingPaintSplatterArt
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD2.1/69fd81f5983107acc3d334af62915851.jpg
+ MODEL_PATH: ms://iic/scepter_scedit@tuners_model/SD2.1/DrippingPaintSplatterArt
TUNER_TYPE: SwiftSCE
PROMPT_EXAMPLE: a boy wearing green jacket
-
@@ -217,8 +217,8 @@ TUNERS:
DESCRIPTION:
SOURCE: diva
BASE_MODEL: SD1.5
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD1.5/69fd81f5983107acc3d334af62915851.png
- MODEL_PATH: ms://damo/scepter_scedit@tuners_model/SD1.5/DrippingPaintSplatterArt
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD1.5/69fd81f5983107acc3d334af62915851.jpg
+ MODEL_PATH: ms://iic/scepter_scedit@tuners_model/SD1.5/DrippingPaintSplatterArt
TUNER_TYPE: SwiftSCE
PROMPT_EXAMPLE: a boy wearing green jacket
-
@@ -227,8 +227,8 @@ TUNERS:
DESCRIPTION:
SOURCE: diva
BASE_MODEL: SD_XL1.0
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD_XL1.0/f152edb4b3ca6248758b48115258ddfa.png
- MODEL_PATH: ms://damo/scepter_scedit@tuners_model/SD_XL1.0/FadedPolaroidPhoto
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD_XL1.0/f152edb4b3ca6248758b48115258ddfa.jpg
+ MODEL_PATH: ms://iic/scepter_scedit@tuners_model/SD_XL1.0/FadedPolaroidPhoto
TUNER_TYPE: SwiftSCE
PROMPT_EXAMPLE: a boy wearing green jacket
-
@@ -237,8 +237,8 @@ TUNERS:
DESCRIPTION:
SOURCE: diva
BASE_MODEL: SD2.1
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD2.1/f152edb4b3ca6248758b48115258ddfa.png
- MODEL_PATH: ms://damo/scepter_scedit@tuners_model/SD2.1/FadedPolaroidPhoto
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD2.1/f152edb4b3ca6248758b48115258ddfa.jpg
+ MODEL_PATH: ms://iic/scepter_scedit@tuners_model/SD2.1/FadedPolaroidPhoto
TUNER_TYPE: SwiftSCE
PROMPT_EXAMPLE: a boy wearing green jacket
-
@@ -247,8 +247,8 @@ TUNERS:
DESCRIPTION:
SOURCE: diva
BASE_MODEL: SD1.5
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD1.5/f152edb4b3ca6248758b48115258ddfa.png
- MODEL_PATH: ms://damo/scepter_scedit@tuners_model/SD1.5/FadedPolaroidPhoto
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD1.5/f152edb4b3ca6248758b48115258ddfa.jpg
+ MODEL_PATH: ms://iic/scepter_scedit@tuners_model/SD1.5/FadedPolaroidPhoto
TUNER_TYPE: SwiftSCE
PROMPT_EXAMPLE: a boy wearing green jacket
-
@@ -257,8 +257,8 @@ TUNERS:
DESCRIPTION:
SOURCE: diva
BASE_MODEL: SD_XL1.0
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD_XL1.0/940cfd34155634cf051e1b2942cca426.png
- MODEL_PATH: ms://damo/scepter_scedit@tuners_model/SD_XL1.0/Flat2DArt
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD_XL1.0/940cfd34155634cf051e1b2942cca426.jpg
+ MODEL_PATH: ms://iic/scepter_scedit@tuners_model/SD_XL1.0/Flat2DArt
TUNER_TYPE: SwiftSCE
PROMPT_EXAMPLE: a boy wearing green jacket
-
@@ -267,8 +267,8 @@ TUNERS:
DESCRIPTION:
SOURCE: diva
BASE_MODEL: SD2.1
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD2.1/940cfd34155634cf051e1b2942cca426.png
- MODEL_PATH: ms://damo/scepter_scedit@tuners_model/SD2.1/Flat2DArt
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD2.1/940cfd34155634cf051e1b2942cca426.jpg
+ MODEL_PATH: ms://iic/scepter_scedit@tuners_model/SD2.1/Flat2DArt
TUNER_TYPE: SwiftSCE
PROMPT_EXAMPLE: a boy wearing green jacket
-
@@ -277,8 +277,8 @@ TUNERS:
DESCRIPTION:
SOURCE: diva
BASE_MODEL: SD1.5
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD1.5/940cfd34155634cf051e1b2942cca426.png
- MODEL_PATH: ms://damo/scepter_scedit@tuners_model/SD1.5/Flat2DArt
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD1.5/940cfd34155634cf051e1b2942cca426.jpg
+ MODEL_PATH: ms://iic/scepter_scedit@tuners_model/SD1.5/Flat2DArt
TUNER_TYPE: SwiftSCE
PROMPT_EXAMPLE: a boy wearing green jacket
-
@@ -287,8 +287,8 @@ TUNERS:
DESCRIPTION:
SOURCE: diva
BASE_MODEL: SD_XL1.0
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD_XL1.0/57b751b11564cb22cd49ef21f2004a5f.png
- MODEL_PATH: ms://damo/scepter_scedit@tuners_model/SD_XL1.0/GraffitiArt
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD_XL1.0/57b751b11564cb22cd49ef21f2004a5f.jpg
+ MODEL_PATH: ms://iic/scepter_scedit@tuners_model/SD_XL1.0/GraffitiArt
TUNER_TYPE: SwiftSCE
PROMPT_EXAMPLE: a boy wearing green jacket
-
@@ -297,8 +297,8 @@ TUNERS:
DESCRIPTION:
SOURCE: diva
BASE_MODEL: SD2.1
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD2.1/57b751b11564cb22cd49ef21f2004a5f.png
- MODEL_PATH: ms://damo/scepter_scedit@tuners_model/SD2.1/GraffitiArt
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD2.1/57b751b11564cb22cd49ef21f2004a5f.jpg
+ MODEL_PATH: ms://iic/scepter_scedit@tuners_model/SD2.1/GraffitiArt
TUNER_TYPE: SwiftSCE
PROMPT_EXAMPLE: a boy wearing green jacket
-
@@ -307,8 +307,8 @@ TUNERS:
DESCRIPTION:
SOURCE: diva
BASE_MODEL: SD1.5
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD1.5/57b751b11564cb22cd49ef21f2004a5f.png
- MODEL_PATH: ms://damo/scepter_scedit@tuners_model/SD1.5/GraffitiArt
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD1.5/57b751b11564cb22cd49ef21f2004a5f.jpg
+ MODEL_PATH: ms://iic/scepter_scedit@tuners_model/SD1.5/GraffitiArt
TUNER_TYPE: SwiftSCE
PROMPT_EXAMPLE: a boy wearing green jacket
-
@@ -317,8 +317,8 @@ TUNERS:
DESCRIPTION:
SOURCE: diva
BASE_MODEL: SD_XL1.0
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD_XL1.0/0312b673dc6858a9864d7f45f0c5c1fc.png
- MODEL_PATH: ms://damo/scepter_scedit@tuners_model/SD_XL1.0/Impressionism
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD_XL1.0/0312b673dc6858a9864d7f45f0c5c1fc.jpg
+ MODEL_PATH: ms://iic/scepter_scedit@tuners_model/SD_XL1.0/Impressionism
TUNER_TYPE: SwiftSCE
PROMPT_EXAMPLE: a boy wearing green jacket
-
@@ -327,8 +327,8 @@ TUNERS:
DESCRIPTION:
SOURCE: diva
BASE_MODEL: SD2.1
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD2.1/0312b673dc6858a9864d7f45f0c5c1fc.png
- MODEL_PATH: ms://damo/scepter_scedit@tuners_model/SD2.1/Impressionism
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD2.1/0312b673dc6858a9864d7f45f0c5c1fc.jpg
+ MODEL_PATH: ms://iic/scepter_scedit@tuners_model/SD2.1/Impressionism
TUNER_TYPE: SwiftSCE
PROMPT_EXAMPLE: a boy wearing green jacket
-
@@ -337,8 +337,8 @@ TUNERS:
DESCRIPTION:
SOURCE: diva
BASE_MODEL: SD1.5
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD1.5/0312b673dc6858a9864d7f45f0c5c1fc.png
- MODEL_PATH: ms://damo/scepter_scedit@tuners_model/SD1.5/Impressionism
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD1.5/0312b673dc6858a9864d7f45f0c5c1fc.jpg
+ MODEL_PATH: ms://iic/scepter_scedit@tuners_model/SD1.5/Impressionism
TUNER_TYPE: SwiftSCE
PROMPT_EXAMPLE: a boy wearing green jacket
-
@@ -347,8 +347,8 @@ TUNERS:
DESCRIPTION:
SOURCE: diva
BASE_MODEL: SD_XL1.0
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD_XL1.0/9aa040b0c60d289da9610c91ad9b7c7e.png
- MODEL_PATH: ms://damo/scepter_scedit@tuners_model/SD_XL1.0/LogoDesign
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD_XL1.0/9aa040b0c60d289da9610c91ad9b7c7e.jpg
+ MODEL_PATH: ms://iic/scepter_scedit@tuners_model/SD_XL1.0/LogoDesign
TUNER_TYPE: SwiftSCE
PROMPT_EXAMPLE: a boy wearing green jacket
-
@@ -357,8 +357,8 @@ TUNERS:
DESCRIPTION:
SOURCE: diva
BASE_MODEL: SD2.1
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD2.1/9aa040b0c60d289da9610c91ad9b7c7e.png
- MODEL_PATH: ms://damo/scepter_scedit@tuners_model/SD2.1/LogoDesign
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD2.1/9aa040b0c60d289da9610c91ad9b7c7e.jpg
+ MODEL_PATH: ms://iic/scepter_scedit@tuners_model/SD2.1/LogoDesign
TUNER_TYPE: SwiftSCE
PROMPT_EXAMPLE: a boy wearing green jacket
-
@@ -367,8 +367,8 @@ TUNERS:
DESCRIPTION:
SOURCE: diva
BASE_MODEL: SD1.5
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD1.5/9aa040b0c60d289da9610c91ad9b7c7e.png
- MODEL_PATH: ms://damo/scepter_scedit@tuners_model/SD1.5/LogoDesign
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD1.5/9aa040b0c60d289da9610c91ad9b7c7e.jpg
+ MODEL_PATH: ms://iic/scepter_scedit@tuners_model/SD1.5/LogoDesign
TUNER_TYPE: SwiftSCE
PROMPT_EXAMPLE: a boy wearing green jacket
-
@@ -377,8 +377,8 @@ TUNERS:
DESCRIPTION:
SOURCE: diva
BASE_MODEL: SD_XL1.0
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD_XL1.0/a9056e1eac85e5e4fe96a93917d4cce4.png
- MODEL_PATH: ms://damo/scepter_scedit@tuners_model/SD_XL1.0/PencilSketchDrawing
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD_XL1.0/a9056e1eac85e5e4fe96a93917d4cce4.jpg
+ MODEL_PATH: ms://iic/scepter_scedit@tuners_model/SD_XL1.0/PencilSketchDrawing
TUNER_TYPE: SwiftSCE
PROMPT_EXAMPLE: a boy wearing green jacket
-
@@ -387,8 +387,8 @@ TUNERS:
DESCRIPTION:
SOURCE: diva
BASE_MODEL: SD2.1
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD2.1/a9056e1eac85e5e4fe96a93917d4cce4.png
- MODEL_PATH: ms://damo/scepter_scedit@tuners_model/SD2.1/PencilSketchDrawing
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD2.1/a9056e1eac85e5e4fe96a93917d4cce4.jpg
+ MODEL_PATH: ms://iic/scepter_scedit@tuners_model/SD2.1/PencilSketchDrawing
TUNER_TYPE: SwiftSCE
PROMPT_EXAMPLE: a boy wearing green jacket
-
@@ -397,8 +397,8 @@ TUNERS:
DESCRIPTION:
SOURCE: diva
BASE_MODEL: SD1.5
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD1.5/a9056e1eac85e5e4fe96a93917d4cce4.png
- MODEL_PATH: ms://damo/scepter_scedit@tuners_model/SD1.5/PencilSketchDrawing
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD1.5/a9056e1eac85e5e4fe96a93917d4cce4.jpg
+ MODEL_PATH: ms://iic/scepter_scedit@tuners_model/SD1.5/PencilSketchDrawing
TUNER_TYPE: SwiftSCE
PROMPT_EXAMPLE: a boy wearing green jacket
-
@@ -407,8 +407,8 @@ TUNERS:
DESCRIPTION:
SOURCE: diva
BASE_MODEL: SD_XL1.0
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD_XL1.0/568777f447fc02510b618152726d5002.png
- MODEL_PATH: ms://damo/scepter_scedit@tuners_model/SD_XL1.0/SilhouetteArt
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD_XL1.0/568777f447fc02510b618152726d5002.jpg
+ MODEL_PATH: ms://iic/scepter_scedit@tuners_model/SD_XL1.0/SilhouetteArt
TUNER_TYPE: SwiftSCE
PROMPT_EXAMPLE: a boy wearing green jacket
-
@@ -417,8 +417,8 @@ TUNERS:
DESCRIPTION:
SOURCE: diva
BASE_MODEL: SD2.1
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD2.1/568777f447fc02510b618152726d5002.png
- MODEL_PATH: ms://damo/scepter_scedit@tuners_model/SD2.1/SilhouetteArt
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD2.1/568777f447fc02510b618152726d5002.jpg
+ MODEL_PATH: ms://iic/scepter_scedit@tuners_model/SD2.1/SilhouetteArt
TUNER_TYPE: SwiftSCE
PROMPT_EXAMPLE: a boy wearing green jacket
-
@@ -427,8 +427,8 @@ TUNERS:
DESCRIPTION:
SOURCE: diva
BASE_MODEL: SD1.5
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD1.5/568777f447fc02510b618152726d5002.png
- MODEL_PATH: ms://damo/scepter_scedit@tuners_model/SD1.5/SilhouetteArt
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD1.5/568777f447fc02510b618152726d5002.jpg
+ MODEL_PATH: ms://iic/scepter_scedit@tuners_model/SD1.5/SilhouetteArt
TUNER_TYPE: SwiftSCE
PROMPT_EXAMPLE: a boy wearing green jacket
-
@@ -437,8 +437,8 @@ TUNERS:
DESCRIPTION:
SOURCE: diva
BASE_MODEL: SD_XL1.0
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD_XL1.0/07d7b27cd73f2d43684003563511c15b.png
- MODEL_PATH: ms://damo/scepter_scedit@tuners_model/SD_XL1.0/Steampunk2
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD_XL1.0/07d7b27cd73f2d43684003563511c15b.jpg
+ MODEL_PATH: ms://iic/scepter_scedit@tuners_model/SD_XL1.0/Steampunk2
TUNER_TYPE: SwiftSCE
PROMPT_EXAMPLE: a boy wearing green jacket
-
@@ -447,8 +447,8 @@ TUNERS:
DESCRIPTION:
SOURCE: diva
BASE_MODEL: SD2.1
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD2.1/07d7b27cd73f2d43684003563511c15b.png
- MODEL_PATH: ms://damo/scepter_scedit@tuners_model/SD2.1/Steampunk2
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD2.1/07d7b27cd73f2d43684003563511c15b.jpg
+ MODEL_PATH: ms://iic/scepter_scedit@tuners_model/SD2.1/Steampunk2
TUNER_TYPE: SwiftSCE
PROMPT_EXAMPLE: a boy wearing green jacket
-
@@ -457,8 +457,8 @@ TUNERS:
DESCRIPTION:
SOURCE: diva
BASE_MODEL: SD1.5
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD1.5/07d7b27cd73f2d43684003563511c15b.png
- MODEL_PATH: ms://damo/scepter_scedit@tuners_model/SD1.5/Steampunk2
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD1.5/07d7b27cd73f2d43684003563511c15b.jpg
+ MODEL_PATH: ms://iic/scepter_scedit@tuners_model/SD1.5/Steampunk2
TUNER_TYPE: SwiftSCE
PROMPT_EXAMPLE: a boy wearing green jacket
-
@@ -467,8 +467,8 @@ TUNERS:
DESCRIPTION:
SOURCE: diva
BASE_MODEL: SD_XL1.0
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD_XL1.0/2d1e9867058db2c57f2fe47530de3243.png
- MODEL_PATH: ms://damo/scepter_scedit@tuners_model/SD_XL1.0/StickerDesigns
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD_XL1.0/2d1e9867058db2c57f2fe47530de3243.jpg
+ MODEL_PATH: ms://iic/scepter_scedit@tuners_model/SD_XL1.0/StickerDesigns
TUNER_TYPE: SwiftSCE
PROMPT_EXAMPLE: a boy wearing green jacket
-
@@ -477,8 +477,8 @@ TUNERS:
DESCRIPTION:
SOURCE: diva
BASE_MODEL: SD2.1
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD2.1/2d1e9867058db2c57f2fe47530de3243.png
- MODEL_PATH: ms://damo/scepter_scedit@tuners_model/SD2.1/StickerDesigns
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD2.1/2d1e9867058db2c57f2fe47530de3243.jpg
+ MODEL_PATH: ms://iic/scepter_scedit@tuners_model/SD2.1/StickerDesigns
TUNER_TYPE: SwiftSCE
PROMPT_EXAMPLE: a boy wearing green jacket
-
@@ -487,8 +487,8 @@ TUNERS:
DESCRIPTION:
SOURCE: diva
BASE_MODEL: SD1.5
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD1.5/2d1e9867058db2c57f2fe47530de3243.png
- MODEL_PATH: ms://damo/scepter_scedit@tuners_model/SD1.5/StickerDesigns
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD1.5/2d1e9867058db2c57f2fe47530de3243.jpg
+ MODEL_PATH: ms://iic/scepter_scedit@tuners_model/SD1.5/StickerDesigns
TUNER_TYPE: SwiftSCE
PROMPT_EXAMPLE: a boy wearing green jacket
-
@@ -497,8 +497,8 @@ TUNERS:
DESCRIPTION:
SOURCE: diva
BASE_MODEL: SD_XL1.0
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD_XL1.0/8859d532ae5901cc8457d6118fb9b7da.png
- MODEL_PATH: ms://damo/scepter_scedit@tuners_model/SD_XL1.0/Watercolor2
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD_XL1.0/8859d532ae5901cc8457d6118fb9b7da.jpg
+ MODEL_PATH: ms://iic/scepter_scedit@tuners_model/SD_XL1.0/Watercolor2
TUNER_TYPE: SwiftSCE
PROMPT_EXAMPLE: a boy wearing green jacket
-
@@ -507,8 +507,8 @@ TUNERS:
DESCRIPTION:
SOURCE: diva
BASE_MODEL: SD2.1
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD2.1/8859d532ae5901cc8457d6118fb9b7da.png
- MODEL_PATH: ms://damo/scepter_scedit@tuners_model/SD2.1/Watercolor2
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD2.1/8859d532ae5901cc8457d6118fb9b7da.jpg
+ MODEL_PATH: ms://iic/scepter_scedit@tuners_model/SD2.1/Watercolor2
TUNER_TYPE: SwiftSCE
PROMPT_EXAMPLE: a boy wearing green jacket
-
@@ -517,8 +517,8 @@ TUNERS:
DESCRIPTION:
SOURCE: diva
BASE_MODEL: SD1.5
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD1.5/8859d532ae5901cc8457d6118fb9b7da.png
- MODEL_PATH: ms://damo/scepter_scedit@tuners_model/SD1.5/Watercolor2
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD1.5/8859d532ae5901cc8457d6118fb9b7da.jpg
+ MODEL_PATH: ms://iic/scepter_scedit@tuners_model/SD1.5/Watercolor2
TUNER_TYPE: SwiftSCE
PROMPT_EXAMPLE: a boy wearing green jacket
-
@@ -527,8 +527,8 @@ TUNERS:
DESCRIPTION:
SOURCE: mre
BASE_MODEL: SD_XL1.0
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD_XL1.0/5895d78cf58c1ca05178991f37cc48ff.png
- MODEL_PATH: ms://damo/scepter_scedit@tuners_model/SD_XL1.0/mre-elemental-art
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD_XL1.0/5895d78cf58c1ca05178991f37cc48ff.jpg
+ MODEL_PATH: ms://iic/scepter_scedit@tuners_model/SD_XL1.0/mre-elemental-art
TUNER_TYPE: SwiftSCE
PROMPT_EXAMPLE: a boy wearing green jacket
-
@@ -537,8 +537,8 @@ TUNERS:
DESCRIPTION:
SOURCE: mre
BASE_MODEL: SD2.1
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD2.1/5895d78cf58c1ca05178991f37cc48ff.png
- MODEL_PATH: ms://damo/scepter_scedit@tuners_model/SD2.1/mre-elemental-art
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD2.1/5895d78cf58c1ca05178991f37cc48ff.jpg
+ MODEL_PATH: ms://iic/scepter_scedit@tuners_model/SD2.1/mre-elemental-art
TUNER_TYPE: SwiftSCE
PROMPT_EXAMPLE: a boy wearing green jacket
-
@@ -547,8 +547,8 @@ TUNERS:
DESCRIPTION:
SOURCE: mre
BASE_MODEL: SD1.5
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD1.5/5895d78cf58c1ca05178991f37cc48ff.png
- MODEL_PATH: ms://damo/scepter_scedit@tuners_model/SD1.5/mre-elemental-art
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD1.5/5895d78cf58c1ca05178991f37cc48ff.jpg
+ MODEL_PATH: ms://iic/scepter_scedit@tuners_model/SD1.5/mre-elemental-art
TUNER_TYPE: SwiftSCE
PROMPT_EXAMPLE: a boy wearing green jacket
-
@@ -557,8 +557,8 @@ TUNERS:
DESCRIPTION:
SOURCE: mre
BASE_MODEL: SD_XL1.0
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD_XL1.0/a08149bc8e50f6bc65c0010d4cd416f8.png
- MODEL_PATH: ms://damo/scepter_scedit@tuners_model/SD_XL1.0/mre-anime
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD_XL1.0/a08149bc8e50f6bc65c0010d4cd416f8.jpg
+ MODEL_PATH: ms://iic/scepter_scedit@tuners_model/SD_XL1.0/mre-anime
TUNER_TYPE: SwiftSCE
PROMPT_EXAMPLE: a boy wearing green jacket
-
@@ -567,8 +567,8 @@ TUNERS:
DESCRIPTION:
SOURCE: mre
BASE_MODEL: SD2.1
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD2.1/a08149bc8e50f6bc65c0010d4cd416f8.png
- MODEL_PATH: ms://damo/scepter_scedit@tuners_model/SD2.1/mre-anime
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD2.1/a08149bc8e50f6bc65c0010d4cd416f8.jpg
+ MODEL_PATH: ms://iic/scepter_scedit@tuners_model/SD2.1/mre-anime
TUNER_TYPE: SwiftSCE
PROMPT_EXAMPLE: a boy wearing green jacket
-
@@ -577,8 +577,8 @@ TUNERS:
DESCRIPTION:
SOURCE: mre
BASE_MODEL: SD1.5
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD1.5/a08149bc8e50f6bc65c0010d4cd416f8.png
- MODEL_PATH: ms://damo/scepter_scedit@tuners_model/SD1.5/mre-anime
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD1.5/a08149bc8e50f6bc65c0010d4cd416f8.jpg
+ MODEL_PATH: ms://iic/scepter_scedit@tuners_model/SD1.5/mre-anime
TUNER_TYPE: SwiftSCE
PROMPT_EXAMPLE: a boy wearing green jacket
-
@@ -587,8 +587,8 @@ TUNERS:
DESCRIPTION:
SOURCE: mre
BASE_MODEL: SD_XL1.0
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD_XL1.0/48c65cebf1fa4284d7b8feb619412e65.png
- MODEL_PATH: ms://damo/scepter_scedit@tuners_model/SD_XL1.0/mre-comic
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD_XL1.0/48c65cebf1fa4284d7b8feb619412e65.jpg
+ MODEL_PATH: ms://iic/scepter_scedit@tuners_model/SD_XL1.0/mre-comic
TUNER_TYPE: SwiftSCE
PROMPT_EXAMPLE: a boy wearing green jacket
-
@@ -597,8 +597,8 @@ TUNERS:
DESCRIPTION:
SOURCE: mre
BASE_MODEL: SD2.1
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD2.1/48c65cebf1fa4284d7b8feb619412e65.png
- MODEL_PATH: ms://damo/scepter_scedit@tuners_model/SD2.1/mre-comic
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD2.1/48c65cebf1fa4284d7b8feb619412e65.jpg
+ MODEL_PATH: ms://iic/scepter_scedit@tuners_model/SD2.1/mre-comic
TUNER_TYPE: SwiftSCE
PROMPT_EXAMPLE: a boy wearing green jacket
-
@@ -607,8 +607,8 @@ TUNERS:
DESCRIPTION:
SOURCE: mre
BASE_MODEL: SD1.5
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD1.5/48c65cebf1fa4284d7b8feb619412e65.png
- MODEL_PATH: ms://damo/scepter_scedit@tuners_model/SD1.5/mre-comic
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD1.5/48c65cebf1fa4284d7b8feb619412e65.jpg
+ MODEL_PATH: ms://iic/scepter_scedit@tuners_model/SD1.5/mre-comic
TUNER_TYPE: SwiftSCE
PROMPT_EXAMPLE: a boy wearing green jacket
-
@@ -617,8 +617,8 @@ TUNERS:
DESCRIPTION:
SOURCE: sai
BASE_MODEL: SD_XL1.0
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD_XL1.0/8fc51113f725f27326c4398a7457cd6d.png
- MODEL_PATH: ms://damo/scepter_scedit@tuners_model/SD_XL1.0/sai-craftclay
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD_XL1.0/8fc51113f725f27326c4398a7457cd6d.jpg
+ MODEL_PATH: ms://iic/scepter_scedit@tuners_model/SD_XL1.0/sai-craftclay
TUNER_TYPE: SwiftSCE
PROMPT_EXAMPLE: a boy wearing green jacket
-
@@ -627,8 +627,8 @@ TUNERS:
DESCRIPTION:
SOURCE: sai
BASE_MODEL: SD2.1
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD2.1/8fc51113f725f27326c4398a7457cd6d.png
- MODEL_PATH: ms://damo/scepter_scedit@tuners_model/SD2.1/sai-craftclay
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD2.1/8fc51113f725f27326c4398a7457cd6d.jpg
+ MODEL_PATH: ms://iic/scepter_scedit@tuners_model/SD2.1/sai-craftclay
TUNER_TYPE: SwiftSCE
PROMPT_EXAMPLE: a boy wearing green jacket
-
@@ -637,8 +637,8 @@ TUNERS:
DESCRIPTION:
SOURCE: sai
BASE_MODEL: SD1.5
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD1.5/8fc51113f725f27326c4398a7457cd6d.png
- MODEL_PATH: ms://damo/scepter_scedit@tuners_model/SD1.5/sai-craftclay
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD1.5/8fc51113f725f27326c4398a7457cd6d.jpg
+ MODEL_PATH: ms://iic/scepter_scedit@tuners_model/SD1.5/sai-craftclay
TUNER_TYPE: SwiftSCE
PROMPT_EXAMPLE: a boy wearing green jacket
-
@@ -647,8 +647,8 @@ TUNERS:
DESCRIPTION:
SOURCE: sai
BASE_MODEL: SD_XL1.0
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD_XL1.0/a6f8d92afcd5803dfb2ebecbc92091b6.png
- MODEL_PATH: ms://damo/scepter_scedit@tuners_model/SD_XL1.0/sai-fantasyart
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD_XL1.0/a6f8d92afcd5803dfb2ebecbc92091b6.jpg
+ MODEL_PATH: ms://iic/scepter_scedit@tuners_model/SD_XL1.0/sai-fantasyart
TUNER_TYPE: SwiftSCE
PROMPT_EXAMPLE: a boy wearing green jacket
-
@@ -657,8 +657,8 @@ TUNERS:
DESCRIPTION:
SOURCE: sai
BASE_MODEL: SD2.1
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD2.1/a6f8d92afcd5803dfb2ebecbc92091b6.png
- MODEL_PATH: ms://damo/scepter_scedit@tuners_model/SD2.1/sai-fantasyart
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD2.1/a6f8d92afcd5803dfb2ebecbc92091b6.jpg
+ MODEL_PATH: ms://iic/scepter_scedit@tuners_model/SD2.1/sai-fantasyart
TUNER_TYPE: SwiftSCE
PROMPT_EXAMPLE: a boy wearing green jacket
-
@@ -667,8 +667,8 @@ TUNERS:
DESCRIPTION:
SOURCE: sai
BASE_MODEL: SD1.5
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD1.5/a6f8d92afcd5803dfb2ebecbc92091b6.png
- MODEL_PATH: ms://damo/scepter_scedit@tuners_model/SD1.5/sai-fantasyart
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD1.5/a6f8d92afcd5803dfb2ebecbc92091b6.jpg
+ MODEL_PATH: ms://iic/scepter_scedit@tuners_model/SD1.5/sai-fantasyart
TUNER_TYPE: SwiftSCE
PROMPT_EXAMPLE: a boy wearing green jacket
-
@@ -677,8 +677,8 @@ TUNERS:
DESCRIPTION:
SOURCE: sai
BASE_MODEL: SD_XL1.0
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD_XL1.0/034a51b0dd34b018be8859bf45b4f7ed.png
- MODEL_PATH: ms://damo/scepter_scedit@tuners_model/SD_XL1.0/sai-lineart
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD_XL1.0/034a51b0dd34b018be8859bf45b4f7ed.jpg
+ MODEL_PATH: ms://iic/scepter_scedit@tuners_model/SD_XL1.0/sai-lineart
TUNER_TYPE: SwiftSCE
PROMPT_EXAMPLE: a boy wearing green jacket
-
@@ -687,8 +687,8 @@ TUNERS:
DESCRIPTION:
SOURCE: sai
BASE_MODEL: SD2.1
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD2.1/034a51b0dd34b018be8859bf45b4f7ed.png
- MODEL_PATH: ms://damo/scepter_scedit@tuners_model/SD2.1/sai-lineart
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD2.1/034a51b0dd34b018be8859bf45b4f7ed.jpg
+ MODEL_PATH: ms://iic/scepter_scedit@tuners_model/SD2.1/sai-lineart
TUNER_TYPE: SwiftSCE
PROMPT_EXAMPLE: a boy wearing green jacket
-
@@ -697,8 +697,8 @@ TUNERS:
DESCRIPTION:
SOURCE: sai
BASE_MODEL: SD1.5
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD1.5/034a51b0dd34b018be8859bf45b4f7ed.png
- MODEL_PATH: ms://damo/scepter_scedit@tuners_model/SD1.5/sai-lineart
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD1.5/034a51b0dd34b018be8859bf45b4f7ed.jpg
+ MODEL_PATH: ms://iic/scepter_scedit@tuners_model/SD1.5/sai-lineart
TUNER_TYPE: SwiftSCE
PROMPT_EXAMPLE: a boy wearing green jacket
-
@@ -707,8 +707,8 @@ TUNERS:
DESCRIPTION:
SOURCE: sai
BASE_MODEL: SD_XL1.0
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD_XL1.0/7e9ed25bb34008beb5f417df63c4b2fe.png
- MODEL_PATH: ms://damo/scepter_scedit@tuners_model/SD_XL1.0/sai-neonpunk
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD_XL1.0/7e9ed25bb34008beb5f417df63c4b2fe.jpg
+ MODEL_PATH: ms://iic/scepter_scedit@tuners_model/SD_XL1.0/sai-neonpunk
TUNER_TYPE: SwiftSCE
PROMPT_EXAMPLE: a boy wearing green jacket
-
@@ -717,8 +717,8 @@ TUNERS:
DESCRIPTION:
SOURCE: sai
BASE_MODEL: SD2.1
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD2.1/7e9ed25bb34008beb5f417df63c4b2fe.png
- MODEL_PATH: ms://damo/scepter_scedit@tuners_model/SD2.1/sai-neonpunk
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD2.1/7e9ed25bb34008beb5f417df63c4b2fe.jpg
+ MODEL_PATH: ms://iic/scepter_scedit@tuners_model/SD2.1/sai-neonpunk
TUNER_TYPE: SwiftSCE
PROMPT_EXAMPLE: a boy wearing green jacket
-
@@ -727,8 +727,8 @@ TUNERS:
DESCRIPTION:
SOURCE: sai
BASE_MODEL: SD1.5
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD1.5/7e9ed25bb34008beb5f417df63c4b2fe.png
- MODEL_PATH: ms://damo/scepter_scedit@tuners_model/SD1.5/sai-neonpunk
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD1.5/7e9ed25bb34008beb5f417df63c4b2fe.jpg
+ MODEL_PATH: ms://iic/scepter_scedit@tuners_model/SD1.5/sai-neonpunk
TUNER_TYPE: SwiftSCE
PROMPT_EXAMPLE: a boy wearing green jacket
-
@@ -737,8 +737,8 @@ TUNERS:
DESCRIPTION:
SOURCE: sai
BASE_MODEL: SD_XL1.0
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD_XL1.0/924f46a8f276011a0953d7988e90ee25.png
- MODEL_PATH: ms://damo/scepter_scedit@tuners_model/SD_XL1.0/sai-origami
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD_XL1.0/924f46a8f276011a0953d7988e90ee25.jpg
+ MODEL_PATH: ms://iic/scepter_scedit@tuners_model/SD_XL1.0/sai-origami
TUNER_TYPE: SwiftSCE
PROMPT_EXAMPLE: a boy wearing green jacket
-
@@ -747,8 +747,8 @@ TUNERS:
DESCRIPTION:
SOURCE: sai
BASE_MODEL: SD2.1
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD2.1/924f46a8f276011a0953d7988e90ee25.png
- MODEL_PATH: ms://damo/scepter_scedit@tuners_model/SD2.1/sai-origami
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD2.1/924f46a8f276011a0953d7988e90ee25.jpg
+ MODEL_PATH: ms://iic/scepter_scedit@tuners_model/SD2.1/sai-origami
TUNER_TYPE: SwiftSCE
PROMPT_EXAMPLE: a boy wearing green jacket
-
@@ -757,8 +757,8 @@ TUNERS:
DESCRIPTION:
SOURCE: sai
BASE_MODEL: SD1.5
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD1.5/924f46a8f276011a0953d7988e90ee25.png
- MODEL_PATH: ms://damo/scepter_scedit@tuners_model/SD1.5/sai-origami
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD1.5/924f46a8f276011a0953d7988e90ee25.jpg
+ MODEL_PATH: ms://iic/scepter_scedit@tuners_model/SD1.5/sai-origami
TUNER_TYPE: SwiftSCE
PROMPT_EXAMPLE: a boy wearing green jacket
-
@@ -767,8 +767,8 @@ TUNERS:
DESCRIPTION:
SOURCE: sai
BASE_MODEL: SD_XL1.0
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD_XL1.0/a5ab89c0960be8c1216e65c98d92ae4a.png
- MODEL_PATH: ms://damo/scepter_scedit@tuners_model/SD_XL1.0/sai-pixelart
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD_XL1.0/a5ab89c0960be8c1216e65c98d92ae4a.jpg
+ MODEL_PATH: ms://iic/scepter_scedit@tuners_model/SD_XL1.0/sai-pixelart
TUNER_TYPE: SwiftSCE
PROMPT_EXAMPLE: a boy wearing green jacket
-
@@ -777,8 +777,8 @@ TUNERS:
DESCRIPTION:
SOURCE: sai
BASE_MODEL: SD2.1
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD2.1/a5ab89c0960be8c1216e65c98d92ae4a.png
- MODEL_PATH: ms://damo/scepter_scedit@tuners_model/SD2.1/sai-pixelart
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD2.1/a5ab89c0960be8c1216e65c98d92ae4a.jpg
+ MODEL_PATH: ms://iic/scepter_scedit@tuners_model/SD2.1/sai-pixelart
TUNER_TYPE: SwiftSCE
PROMPT_EXAMPLE: a boy wearing green jacket
-
@@ -787,7 +787,7 @@ TUNERS:
DESCRIPTION:
SOURCE: sai
BASE_MODEL: SD1.5
- IMAGE_PATH: ms://damo/scepter@mantra_images/SD1.5/a5ab89c0960be8c1216e65c98d92ae4a.png
- MODEL_PATH: ms://damo/scepter_scedit@tuners_model/SD1.5/sai-pixelart
+ IMAGE_PATH: ms://iic/scepter@mantra_images_jpg/SD1.5/a5ab89c0960be8c1216e65c98d92ae4a.jpg
+ MODEL_PATH: ms://iic/scepter_scedit@tuners_model/SD1.5/sai-pixelart
TUNER_TYPE: SwiftSCE
PROMPT_EXAMPLE: a boy wearing green jacket
diff --git a/scepter/methods/studio/inference/edit/stylebooth_tb_pro.yaml b/scepter/methods/studio/inference/edit/stylebooth_tb_pro.yaml
index 25c105c..ecc297b 100644
--- a/scepter/methods/studio/inference/edit/stylebooth_tb_pro.yaml
+++ b/scepter/methods/studio/inference/edit/stylebooth_tb_pro.yaml
@@ -2,7 +2,7 @@ NAME: EDIT
IS_DEFAULT: False
DEFAULT_PARAS:
PARAS:
- RESOLUTIONS: [[1024, 1024]]
+ RESOLUTIONS: [[512, 512], [1024, 1024]]
INPUT:
IMAGE:
PROMPT: ""
diff --git a/scepter/methods/studio/inference/inference.yaml b/scepter/methods/studio/inference/inference.yaml
index 286a418..e6bf473 100644
--- a/scepter/methods/studio/inference/inference.yaml
+++ b/scepter/methods/studio/inference/inference.yaml
@@ -63,7 +63,8 @@ DIFFUSION_PARAS:
MAX: 1.0
DEFAULT: 0.15
RESOLUTIONS:
- VALUES: [[704, 1408], [704, 1344], [768, 1344],
+ VALUES: [ [512, 512], [768, 768],
+ [704, 1408], [704, 1344], [768, 1344],
[720, 1280],
[768, 1280], [832, 1216], [832, 1152],
[896, 1152], [896, 1088], [960, 1088],
@@ -87,18 +88,18 @@ CONTROLABLE_ANNOTATORS:
IS_DEFAULT: True
-
NAME: "HedAnnotator"
- PRETRAINED_MODEL: "ms://damo/scepter_scedit@annotator/ckpts/ControlNetHED.pth"
+ PRETRAINED_MODEL: "ms://iic/scepter_scedit@annotator/ckpts/ControlNetHED.pth"
TYPE: Hed
IS_DEFAULT: False
-
NAME: "OpenposeAnnotator"
- BODY_MODEL_PATH: "ms://damo/scepter_scedit@annotator/ckpts/body_pose_model.pth"
- HAND_MODEL_PATH: "ms://damo/scepter_scedit@annotator/ckpts/hand_pose_model.pth"
+ BODY_MODEL_PATH: "ms://iic/scepter_scedit@annotator/ckpts/body_pose_model.pth"
+ HAND_MODEL_PATH: "ms://iic/scepter_scedit@annotator/ckpts/hand_pose_model.pth"
TYPE: Openpose
IS_DEFAULT: False
-
NAME: "MidasDetector"
- PRETRAINED_MODEL: "ms://damo/scepter_scedit@annotator/ckpts/dpt_hybrid-midas-501f0c75.pt"
+ PRETRAINED_MODEL: "ms://iic/scepter_scedit@annotator/ckpts/dpt_hybrid-midas-501f0c75.pt"
TYPE: Midas
IS_DEFAULT: False
-
diff --git a/scepter/methods/studio/self_train/edit/stylebooth_tb_pro.yaml b/scepter/methods/studio/self_train/edit/stylebooth_tb_pro.yaml
new file mode 100644
index 0000000..c2ebb25
--- /dev/null
+++ b/scepter/methods/studio/self_train/edit/stylebooth_tb_pro.yaml
@@ -0,0 +1,376 @@
+ENV:
+ BACKEND: nccl
+META:
+ VERSION: 'EDIT'
+ DESCRIPTION: "EDIT"
+ IS_DEFAULT: False
+ IS_SHARE: True
+ INFERENCE_PARAS:
+ INFERENCE_BATCH_SIZE: 1
+ INFERENCE_PREFIX: ""
+ DEFAULT_SAMPLER: "ddim"
+ DEFAULT_SAMPLE_STEPS: 40
+ INFERENCE_N_PROMPT: ""
+ RESOLUTION: [512, 512]
+ PARAS:
+ -
+ TASK: 'Image Editing'
+ TRAIN_BATCH_SIZE: 1
+ TRAIN_PREFIX: ""
+ TRAIN_N_PROMPT: ""
+ RESOLUTION: [512, 512]
+ MEMORY: 29000
+ EPOCHS: 50
+ SAVE_INTERVAL: 25
+ EPSEC: 0.818
+ LEARNING_RATE: 0.0001
+ IS_DEFAULT: False
+ TUNER: FULL
+ -
+ TASK: 'Image Editing'
+ TRAIN_BATCH_SIZE: 1
+ TRAIN_PREFIX: ""
+ TRAIN_N_PROMPT: ""
+ RESOLUTION: [512, 512]
+ MEMORY: 29000
+ EPOCHS: 50
+ SAVE_INTERVAL: 25
+ EPSEC: 0.818
+ LEARNING_RATE: 0.0001
+ IS_DEFAULT: True
+ TUNER: LORA
+ -
+ TASK: 'Image Editing'
+ TRAIN_BATCH_SIZE: 1
+ TRAIN_PREFIX: ""
+ TRAIN_N_PROMPT: ""
+ RESOLUTION: [512, 512]
+ MEMORY: 29000
+ EPOCHS: 50
+ SAVE_INTERVAL: 25
+ EPSEC: 0.818
+ LEARNING_RATE: 0.0001
+ IS_DEFAULT: False
+ TUNER: SCE
+
+ -
+ TASK: 'Image Editing'
+ TRAIN_BATCH_SIZE: 1
+ TRAIN_PREFIX: ""
+ TRAIN_N_PROMPT: ""
+ RESOLUTION: [512, 512]
+ MEMORY: 29000
+ EPOCHS: 50
+ SAVE_INTERVAL: 25
+ EPSEC: 0.818
+ LEARNING_RATE: 0.0001
+ IS_DEFAULT: False
+ TUNER: TEXT_SCE
+
+ -
+ TASK: 'Image Editing'
+ TRAIN_BATCH_SIZE: 4
+ TRAIN_PREFIX: ""
+ TRAIN_N_PROMPT: ""
+ RESOLUTION: [512, 512]
+ MEMORY: 29000
+ EPOCHS: 50
+ SAVE_INTERVAL: 25
+ EPSEC: 0.818
+ LEARNING_RATE: 0.0001
+ IS_DEFAULT: False
+ TUNER: TEXT_LORA
+
+ TUNERS:
+ LORA:
+ -
+ NAME: SwiftLoRA
+ R: 256
+ LORA_ALPHA: 256
+ LORA_DROPOUT: 0.0
+ BIAS: "none"
+ TARGET_MODULES: "model.*(to_q|to_k|to_v|to_out.0|net.0.proj|net.2)$"
+ TEXT_LORA:
+ -
+ NAME: SwiftLoRA
+ R: 256
+ LORA_ALPHA: 256
+ LORA_DROPOUT: 0.0
+ BIAS: "none"
+ TARGET_MODULES: "(cond_stage_model.*(q_proj|k_proj|v_proj|out_proj|mlp.fc1|mlp.fc2))|(model.*(to_q|to_k|to_v|to_out.0|net.0.proj|net.2))$"
+ SCE:
+ -
+ NAME: SwiftSCETuning
+ DIMS: [1280, 1280, 1280, 1280, 1280, 640, 640, 640, 320, 320, 320, 320]
+ DOWN_RATIO: 1.0
+ TARGET_MODULES: model.lsc_identity\.\d+$
+ TUNER_MODE: identity
+ TEXT_SCE:
+ -
+ NAME: SwiftSCETuning
+ DIMS: [ 1280, 1280, 1280, 1280, 1280, 640, 640, 640, 320, 320, 320, 320 ]
+ DOWN_RATIO: 1.0
+ TARGET_MODULES: model.lsc_identity\.\d+$
+ TUNER_MODE: identity
+ -
+ NAME: SwiftLoRA
+ R: 256
+ LORA_ALPHA: 256
+ LORA_DROPOUT: 0.0
+ BIAS: "none"
+ TARGET_MODULES: "cond_stage_model.*(q_proj|k_proj|v_proj|out_proj|mlp.fc1|mlp.fc2)$"
+
+ MODIFY_PARAS:
+ TEXT_LORA:
+ TRAIN:
+ SOLVER.MODEL.COND_STAGE_MODEL.USE_GRAD: True
+ TEXT_SCE:
+ TRAIN:
+ SOLVER.MODEL.COND_STAGE_MODEL.USE_GRAD: True
+
+SOLVER:
+ NAME: LatentDiffusionSolver
+ RESUME_FROM:
+ LOAD_MODEL_ONLY: True
+ USE_FSDP: False
+ SHARDING_STRATEGY:
+ USE_AMP: True
+ DTYPE: float16
+ CHANNELS_LAST: True
+ MAX_STEPS: 1000
+ MAX_EPOCHS: -1
+ NUM_FOLDS: 1
+ ACCU_STEP: 1
+ EVAL_INTERVAL: -1
+ #
+ WORK_DIR:
+ LOG_FILE: std_log.txt
+ #
+ FILE_SYSTEM:
+ NAME: "ModelscopeFs"
+ TEMP_DIR: "./cache/data"
+ #
+ FREEZE:
+ #
+ TUNER:
+ #
+ MODEL:
+ NAME: LatentDiffusionEdit
+ PARAMETERIZATION: eps
+ TIMESTEPS: 1000
+ MIN_SNR_GAMMA:
+ ZERO_TERMINAL_SNR: False
+ PRETRAINED_MODEL: ms://damo/stylebooth@models/stylebooth-tb-5000-0.bin
+ IGNORE_KEYS: [ ]
+ CONCAT_NO_SCALE_FACTOR: True
+ SCALE_FACTOR: 0.18215
+ SIZE_FACTOR: 8
+ # DEFAULT_N_PROMPT: 'lowres, error, worst quality, low quality, jpeg artifacts, ugly, duplicate, morbid, mutilated, out of frame, extra fingers, mutated hands, poorly drawn hands, poorly drawn face, mutation, deformed, blurry, dehydrated, bad anatomy, bad proportions, extra limbs, cloned face, disfigured, gross proportions, malformed limbs, missing arms, missing legs, extra arms, extra legs, fused fingers, too many fingers, long neck, username, watermark, signature'
+ DEFAULT_N_PROMPT:
+ SCHEDULE_ARGS:
+ "NAME": "scaled_linear"
+ "BETA_MIN": 0.00085
+ "BETA_MAX": 0.012
+ USE_EMA: False
+ #
+ DIFFUSION_MODEL:
+ NAME: DiffusionUNet
+ IN_CHANNELS: 8
+ OUT_CHANNELS: 4
+ MODEL_CHANNELS: 320
+ NUM_HEADS: 8
+ NUM_RES_BLOCKS: 2
+ ATTENTION_RESOLUTIONS: [ 4, 2, 1 ]
+ CHANNEL_MULT: [ 1, 2, 4, 4 ]
+ CONV_RESAMPLE: True
+ DIMS: 2
+ USE_CHECKPOINT: False
+ USE_SCALE_SHIFT_NORM: False
+ RESBLOCK_UPDOWN: False
+ USE_SPATIAL_TRANSFORMER: True
+ TRANSFORMER_DEPTH: 1
+ CONTEXT_DIM: 768
+ DISABLE_MIDDLE_SELF_ATTN: False
+ USE_LINEAR_IN_TRANSFORMER: False
+ IGNORE_KEYS: []
+ #
+ FIRST_STAGE_MODEL:
+ NAME: AutoencoderKL
+ EMBED_DIM: 4
+ IGNORE_KEYS: []
+ BATCH_SIZE: 4
+ #
+ ENCODER:
+ NAME: Encoder
+ CH: 128
+ OUT_CH: 3
+ NUM_RES_BLOCKS: 2
+ IN_CHANNELS: 3
+ ATTN_RESOLUTIONS: [ ]
+ CH_MULT: [ 1, 2, 4, 4 ]
+ Z_CHANNELS: 4
+ DOUBLE_Z: True
+ DROPOUT: 0.0
+ RESAMP_WITH_CONV: True
+ #
+ DECODER:
+ NAME: Decoder
+ CH: 128
+ OUT_CH: 3
+ NUM_RES_BLOCKS: 2
+ IN_CHANNELS: 3
+ ATTN_RESOLUTIONS: [ ]
+ CH_MULT: [ 1, 2, 4, 4 ]
+ Z_CHANNELS: 4
+ DROPOUT: 0.0
+ RESAMP_WITH_CONV: True
+ GIVE_PRE_END: False
+ TANH_OUT: False
+ #
+ TOKENIZER:
+ NAME: ClipTokenizer
+ PRETRAINED_PATH: ms://AI-ModelScope/clip-vit-large-patch14
+ LENGTH: 77
+ CLEAN: True
+ #
+ COND_STAGE_MODEL:
+ NAME: FrozenCLIPEmbedder
+ FREEZE: True
+ USE_GRAD: False
+ LAYER: last
+ PRETRAINED_MODEL: ms://AI-ModelScope/clip-vit-large-patch14
+ #
+ LOSS:
+ NAME: ReconstructLoss
+ LOSS_TYPE: l2
+ #
+ SAMPLE_ARGS:
+ SAMPLER: ddim
+ SAMPLE_STEPS: 50
+ SEED: 2023
+ GUIDE_SCALE: #7.5
+ image: 1.5
+ text: 7.5
+ GUIDE_RESCALE: 0.5
+ DISCRETIZATION: trailing
+ IMAGE_SIZE: [512, 512]
+ RUN_TRAIN_N: False
+ #
+ OPTIMIZER:
+ NAME: AdamW
+ LEARNING_RATE: 0.064
+ BETAS: [ 0.9, 0.999 ]
+ EPS: 1e-8
+ WEIGHT_DECAY: 1e-2
+ AMSGRAD: False
+ #
+ TRAIN_DATA:
+ NAME: ImageTextPairMSDataset
+ MODE: train
+ MS_DATASET_NAME: cache/save_data/delogo/
+ MS_DATASET_NAMESPACE: ""
+ MS_DATASET_SPLIT: "train"
+ MS_DATASET_SUBNAME: ""
+ PROMPT_PREFIX: ""
+ REPLACE_STYLE: False
+ PIN_MEMORY: True
+ BATCH_SIZE: 1
+ NUM_WORKERS: 4
+ SAMPLER:
+ NAME: LoopSampler
+ TRANSFORMS:
+ - NAME: LoadImageFromFileList
+ FILE_KEYS: ['img_path', 'src_path']
+ RGB_ORDER: RGB
+ BACKEND: pillow
+ - NAME: FlexibleResize
+ INTERPOLATION: bilinear
+ SIZE: [ 512, 512 ]
+ INPUT_KEY: [ 'img', 'src' ]
+ OUTPUT_KEY: [ 'img', 'src' ]
+ BACKEND: pillow
+ - NAME: FlexibleCenterCrop
+ SIZE: [ 512, 512 ]
+ INPUT_KEY: [ 'img', 'src' ]
+ OUTPUT_KEY: [ 'img', 'src' ]
+ BACKEND: pillow
+ - NAME: ImageToTensor
+ INPUT_KEY: [ 'img', 'src' ]
+ OUTPUT_KEY: [ 'img', 'src' ]
+ BACKEND: pillow
+ - NAME: Normalize
+ MEAN: [ 0.5, 0.5, 0.5 ]
+ STD: [ 0.5, 0.5, 0.5 ]
+ INPUT_KEY: [ 'img', 'src' ]
+ OUTPUT_KEY: [ 'image', 'condition_cat' ]
+ BACKEND: torchvision
+ - NAME: Select
+ KEYS: [ 'image', 'condition_cat', 'prompt' ]
+ META_KEYS: [ 'data_key' ]
+ #
+ TRAIN_HOOKS:
+ -
+ NAME: BackwardHook
+ PRIORITY: 0
+ -
+ NAME: LogHook
+ LOG_INTERVAL: 10
+ SHOW_GPU_MEM: True
+ -
+ NAME: TensorboardLogHook
+ -
+ NAME: CheckpointHook
+ INTERVAL: 10000
+ PRIORITY: 200
+ SAVE_LAST: True
+ SAVE_NAME_PREFIX: 'step'
+ DISABLE_SNAPSHOT: True
+ #
+ EVAL_DATA:
+ NAME: Text2ImageDataset
+ MODE: eval
+ PROMPT_FILE:
+ PROMPT_DATA: [ ]
+ IMAGE_SIZE: [ 512, 512 ]
+ FIELDS: [ "prompt", "src_path" ]
+ DELIMITER: '#;#'
+ PROMPT_PREFIX: ''
+ PIN_MEMORY: True
+ BATCH_SIZE: 1
+ NUM_WORKERS: 4
+ TRANSFORMS:
+ - NAME: LoadImageFromFileList
+ FILE_KEYS: [ 'src_path' ]
+ RGB_ORDER: RGB
+ BACKEND: pillow
+ - NAME: FlexibleResize
+ INTERPOLATION: bilinear
+ SIZE: [ 512, 512 ]
+ INPUT_KEY: [ 'src' ]
+ OUTPUT_KEY: [ 'src' ]
+ BACKEND: pillow
+ - NAME: FlexibleCenterCrop
+ SIZE: [ 512, 512 ]
+ INPUT_KEY: [ 'src' ]
+ OUTPUT_KEY: [ 'src' ]
+ BACKEND: pillow
+ - NAME: ImageToTensor
+ INPUT_KEY: [ 'src' ]
+ OUTPUT_KEY: [ 'src' ]
+ BACKEND: pillow
+ - NAME: Normalize
+ MEAN: [ 0.5, 0.5, 0.5 ]
+ STD: [ 0.5, 0.5, 0.5 ]
+ INPUT_KEY: [ 'src' ]
+ OUTPUT_KEY: [ 'condition_cat' ]
+ BACKEND: torchvision
+ - NAME: Select
+ KEYS: [ 'condition_cat', 'prompt' ]
+ META_KEYS: [ 'image_size' ]
+ EVAL_HOOKS:
+ -
+ NAME: ProbeDataHook
+ PROB_INTERVAL: 100
+ SAVE_LAST: True
+ SAVE_NAME_PREFIX: 'step'
+ SAVE_PROBE_PREFIX: 'image'
diff --git a/scepter/methods/studio/tuner_manager/readme_en.md b/scepter/methods/studio/tuner_manager/readme_en.md
index 40e5391..5b63674 100644
--- a/scepter/methods/studio/tuner_manager/readme_en.md
+++ b/scepter/methods/studio/tuner_manager/readme_en.md
@@ -1,7 +1,7 @@
---
frameworks:
- Pytorch
-license: Apache License 2.0
+license: apache-2.0
tasks:
- efficient-diffusion-tuning
---
diff --git a/scepter/methods/studio/tuner_manager/readme_zh.md b/scepter/methods/studio/tuner_manager/readme_zh.md
index 204ebf4..f09cb5d 100644
--- a/scepter/methods/studio/tuner_manager/readme_zh.md
+++ b/scepter/methods/studio/tuner_manager/readme_zh.md
@@ -1,7 +1,7 @@
---
frameworks:
- Pytorch
-license: Apache License 2.0
+license: apache-2.0
tasks:
- efficient-diffusion-tuning
---
diff --git a/scepter/methods/studio/tuner_manager/tuner_manager.yaml b/scepter/methods/studio/tuner_manager/tuner_manager.yaml
index 91e61dd..ec29345 100644
--- a/scepter/methods/studio/tuner_manager/tuner_manager.yaml
+++ b/scepter/methods/studio/tuner_manager/tuner_manager.yaml
@@ -1,14 +1,15 @@
WORK_DIR: "tuner_manager"
-SELF_TRAIN_DIR: "self_train"
EXPORT_DIR: "export_model"
TUNER_LIST_YAML: "tuner_list.yaml"
README_EN: "scepter/methods/studio/tuner_manager/readme_en.md"
README_ZH: "scepter/methods/studio/tuner_manager/readme_zh.md"
BASE_MODEL_VERSION:
- - BASE_MODEL: 'SD_XL1.0'
- TUNER_TYPE: [ 'TEXT_SCE', 'SCE', 'LORA', 'TEXT_LORA', 'FULL' ]
- BASE_MODEL: 'SD1.5'
- TUNER_TYPE: [ 'TEXT_SCE', 'SCE', 'LORA', 'TEXT_LORA', 'FULL' ]
+ TUNER_TYPE: [ 'TEXT_LORA', 'TEXT_SCE', 'LORA', 'SCE', 'FULL' ]
+ - BASE_MODEL: 'SD_XL1.0'
+ TUNER_TYPE: [ 'TEXT_LORA', 'TEXT_SCE', 'LORA', 'SCE', 'FULL' ]
- BASE_MODEL: 'SD2.1'
- TUNER_TYPE: [ 'SCE', 'LORA', 'FULL' ]
+ TUNER_TYPE: [ 'LORA', 'SCE', 'FULL' ]
+ - BASE_MODEL: 'EDIT'
+ TUNER_TYPE: [ 'LORA', 'SCE', 'FULL' ]
diff --git a/scepter/modules/annotator/base_annotator.py b/scepter/modules/annotator/base_annotator.py
index 11d9def..9a51140 100644
--- a/scepter/modules/annotator/base_annotator.py
+++ b/scepter/modules/annotator/base_annotator.py
@@ -4,7 +4,6 @@ from abc import ABCMeta
import torch
import torch.nn as nn
-
from scepter.modules.annotator.registry import ANNOTATORS
from scepter.modules.model.base_model import BaseModel
from scepter.modules.utils.config import dict_to_yaml
diff --git a/scepter/modules/annotator/canny.py b/scepter/modules/annotator/canny.py
index c0f7a18..fd6229f 100644
--- a/scepter/modules/annotator/canny.py
+++ b/scepter/modules/annotator/canny.py
@@ -6,7 +6,6 @@ import cv2
import numpy as np
import torch
from PIL import Image
-
from scepter.modules.annotator.base_annotator import BaseAnnotator
from scepter.modules.annotator.registry import ANNOTATORS
from scepter.modules.utils.config import dict_to_yaml
diff --git a/scepter/modules/annotator/color.py b/scepter/modules/annotator/color.py
index 40690e3..7103d6a 100644
--- a/scepter/modules/annotator/color.py
+++ b/scepter/modules/annotator/color.py
@@ -6,7 +6,6 @@ import cv2
import numpy as np
import torch
from PIL import Image
-
from scepter.modules.annotator.base_annotator import BaseAnnotator
from scepter.modules.annotator.registry import ANNOTATORS
from scepter.modules.utils.config import dict_to_yaml
diff --git a/scepter/modules/annotator/hed.py b/scepter/modules/annotator/hed.py
index b06f4f9..5956be7 100644
--- a/scepter/modules/annotator/hed.py
+++ b/scepter/modules/annotator/hed.py
@@ -11,13 +11,14 @@ from abc import ABCMeta
import cv2
import numpy as np
import torch
+import torchvision
from einops import rearrange
-
from scepter.modules.annotator.base_annotator import BaseAnnotator
from scepter.modules.annotator.registry import ANNOTATORS
from scepter.modules.utils.config import dict_to_yaml
from scepter.modules.utils.distribute import we
from scepter.modules.utils.file_system import FS
+from torchvision.transforms import InterpolationMode
def nms(x, t, s):
@@ -123,6 +124,8 @@ class HedAnnotator(BaseAnnotator, metaclass=ABCMeta):
if len(image.shape) == 3:
image = rearrange(image, 'h w c -> 1 c h w')
B, C, H, W = image.shape
+ elif len(image.shape) == 4:
+ B, C, H, W = image.shape
else:
raise "Unsurpport input image's shape"
elif isinstance(image, np.ndarray):
@@ -130,22 +133,22 @@ class HedAnnotator(BaseAnnotator, metaclass=ABCMeta):
if len(image.shape) == 3:
image = rearrange(image, 'h w c -> 1 c h w')
B, C, H, W = image.shape
+ elif len(image.shape) == 4:
+ B, C, H, W = image.shape
else:
raise "Unsurpport input image's shape"
else:
raise "Unsurpport input image's type"
+ transform = torchvision.transforms.Resize(
+ (H, W), interpolation=InterpolationMode.BILINEAR, antialias=True)
edges = self.netNetwork(image.to(we.device_id))
- edges = [
- e.detach().cpu().numpy().astype(np.float32)[0, 0] for e in edges
- ]
- edges = [
- cv2.resize(e, (W, H), interpolation=cv2.INTER_LINEAR)
- for e in edges
- ]
- edges = np.stack(edges, axis=2)
- edge = 1 / (1 + np.exp(-np.mean(edges, axis=2).astype(np.float64)))
- edge = 255 - (edge * 255.0).clip(0, 255).astype(np.uint8)
- return edge[..., None].repeat(3, 2)
+ edges = [transform(e) for e in edges]
+ edges = torch.cat(edges, dim=1)
+ edges = 1 / (1 +
+ torch.exp(-torch.mean(edges, dim=1).type(torch.float)))
+ edges = edges.cpu().numpy()
+ edges = 255 - (edges * 255.0).clip(0, 255).astype(np.uint8)
+ return edges[..., None].repeat(3, -1)
@staticmethod
def get_config_template():
diff --git a/scepter/modules/annotator/midas/__init__.py b/scepter/modules/annotator/midas/__init__.py
index e69de29..cc26a06 100644
--- a/scepter/modules/annotator/midas/__init__.py
+++ b/scepter/modules/annotator/midas/__init__.py
@@ -0,0 +1,2 @@
+# -*- coding: utf-8 -*-
+# Copyright (c) Alibaba, Inc. and its affiliates.
diff --git a/scepter/modules/annotator/midas/api.py b/scepter/modules/annotator/midas/api.py
index 490cd18..87beeb7 100644
--- a/scepter/modules/annotator/midas/api.py
+++ b/scepter/modules/annotator/midas/api.py
@@ -1,4 +1,5 @@
# -*- coding: utf-8 -*-
+# Copyright (c) Alibaba, Inc. and its affiliates.
# based on https://github.com/isl-org/MiDaS
import cv2
diff --git a/scepter/modules/annotator/midas/base_model.py b/scepter/modules/annotator/midas/base_model.py
index 68d985b..c51ac55 100644
--- a/scepter/modules/annotator/midas/base_model.py
+++ b/scepter/modules/annotator/midas/base_model.py
@@ -1,4 +1,5 @@
# -*- coding: utf-8 -*-
+# Copyright (c) Alibaba, Inc. and its affiliates.
import torch
diff --git a/scepter/modules/annotator/midas/blocks.py b/scepter/modules/annotator/midas/blocks.py
index 472a40e..8759490 100644
--- a/scepter/modules/annotator/midas/blocks.py
+++ b/scepter/modules/annotator/midas/blocks.py
@@ -1,4 +1,5 @@
# -*- coding: utf-8 -*-
+# Copyright (c) Alibaba, Inc. and its affiliates.
import torch
import torch.nn as nn
diff --git a/scepter/modules/annotator/midas/dpt_depth.py b/scepter/modules/annotator/midas/dpt_depth.py
index 2c25e0d..a2db4a9 100644
--- a/scepter/modules/annotator/midas/dpt_depth.py
+++ b/scepter/modules/annotator/midas/dpt_depth.py
@@ -1,4 +1,5 @@
# -*- coding: utf-8 -*-
+# Copyright (c) Alibaba, Inc. and its affiliates.
import torch
import torch.nn as nn
diff --git a/scepter/modules/annotator/midas/midas_net.py b/scepter/modules/annotator/midas/midas_net.py
index b041646..04878f4 100644
--- a/scepter/modules/annotator/midas/midas_net.py
+++ b/scepter/modules/annotator/midas/midas_net.py
@@ -1,4 +1,5 @@
# -*- coding: utf-8 -*-
+# Copyright (c) Alibaba, Inc. and its affiliates.
"""MidashNet: Network for monocular depth estimation trained by mixing several datasets.
This file contains code that is adapted from
https://github.com/thomasjpfan/pytorch_refinenet/blob/master/pytorch_refinenet/refinenet/refinenet_4cascade.py
diff --git a/scepter/modules/annotator/midas/midas_net_custom.py b/scepter/modules/annotator/midas/midas_net_custom.py
index fcdf78d..7c5a354 100644
--- a/scepter/modules/annotator/midas/midas_net_custom.py
+++ b/scepter/modules/annotator/midas/midas_net_custom.py
@@ -1,4 +1,5 @@
# -*- coding: utf-8 -*-
+# Copyright (c) Alibaba, Inc. and its affiliates.
"""MidashNet: Network for monocular depth estimation trained by mixing several datasets.
This file contains code that is adapted from
https://github.com/thomasjpfan/pytorch_refinenet/blob/master/pytorch_refinenet/refinenet/refinenet_4cascade.py
diff --git a/scepter/modules/annotator/midas/transforms.py b/scepter/modules/annotator/midas/transforms.py
index c1da433..5388362 100644
--- a/scepter/modules/annotator/midas/transforms.py
+++ b/scepter/modules/annotator/midas/transforms.py
@@ -1,4 +1,5 @@
# -*- coding: utf-8 -*-
+# Copyright (c) Alibaba, Inc. and its affiliates.
import math
import cv2
diff --git a/scepter/modules/annotator/midas/utils.py b/scepter/modules/annotator/midas/utils.py
index 6bf792a..8c703b1 100644
--- a/scepter/modules/annotator/midas/utils.py
+++ b/scepter/modules/annotator/midas/utils.py
@@ -1,4 +1,5 @@
# -*- coding: utf-8 -*-
+# Copyright (c) Alibaba, Inc. and its affiliates.
"""Utils for monoDepth."""
import re
import sys
diff --git a/scepter/modules/annotator/midas/vit.py b/scepter/modules/annotator/midas/vit.py
index 4729b4b..a85488b 100644
--- a/scepter/modules/annotator/midas/vit.py
+++ b/scepter/modules/annotator/midas/vit.py
@@ -1,4 +1,5 @@
# -*- coding: utf-8 -*-
+# Copyright (c) Alibaba, Inc. and its affiliates.
import math
import types
diff --git a/scepter/modules/annotator/midas_op.py b/scepter/modules/annotator/midas_op.py
index af9e47a..f387f75 100644
--- a/scepter/modules/annotator/midas_op.py
+++ b/scepter/modules/annotator/midas_op.py
@@ -9,7 +9,6 @@ import numpy as np
import torch
from einops import rearrange
from PIL import Image
-
from scepter.modules.annotator.base_annotator import BaseAnnotator
from scepter.modules.annotator.midas.api import MiDaSInference
from scepter.modules.annotator.registry import ANNOTATORS
diff --git a/scepter/modules/annotator/mlsd/__init__.py b/scepter/modules/annotator/mlsd/__init__.py
index e69de29..cc26a06 100644
--- a/scepter/modules/annotator/mlsd/__init__.py
+++ b/scepter/modules/annotator/mlsd/__init__.py
@@ -0,0 +1,2 @@
+# -*- coding: utf-8 -*-
+# Copyright (c) Alibaba, Inc. and its affiliates.
diff --git a/scepter/modules/annotator/mlsd/mbv2_mlsd_large.py b/scepter/modules/annotator/mlsd/mbv2_mlsd_large.py
index 7555e93..b63d77e 100644
--- a/scepter/modules/annotator/mlsd/mbv2_mlsd_large.py
+++ b/scepter/modules/annotator/mlsd/mbv2_mlsd_large.py
@@ -1,4 +1,5 @@
# -*- coding: utf-8 -*-
+# Copyright (c) Alibaba, Inc. and its affiliates.
import torch
import torch.nn as nn
diff --git a/scepter/modules/annotator/mlsd/mbv2_mlsd_tiny.py b/scepter/modules/annotator/mlsd/mbv2_mlsd_tiny.py
index 4e906c5..e55b1a7 100644
--- a/scepter/modules/annotator/mlsd/mbv2_mlsd_tiny.py
+++ b/scepter/modules/annotator/mlsd/mbv2_mlsd_tiny.py
@@ -1,4 +1,5 @@
# -*- coding: utf-8 -*-
+# Copyright (c) Alibaba, Inc. and its affiliates.
import torch
import torch.nn as nn
import torch.utils.model_zoo as model_zoo
diff --git a/scepter/modules/annotator/mlsd/utils.py b/scepter/modules/annotator/mlsd/utils.py
index 83bad84..e2ef712 100644
--- a/scepter/modules/annotator/mlsd/utils.py
+++ b/scepter/modules/annotator/mlsd/utils.py
@@ -1,4 +1,5 @@
# -*- coding: utf-8 -*-
+# Copyright (c) Alibaba, Inc. and its affiliates.
# modified by lihaoweicv
# pytorch version
diff --git a/scepter/modules/annotator/mlsd_op.py b/scepter/modules/annotator/mlsd_op.py
index ec5f094..1c778c8 100644
--- a/scepter/modules/annotator/mlsd_op.py
+++ b/scepter/modules/annotator/mlsd_op.py
@@ -11,7 +11,6 @@ import cv2
import numpy as np
import torch
from PIL import Image
-
from scepter.modules.annotator.base_annotator import BaseAnnotator
from scepter.modules.annotator.mlsd.mbv2_mlsd_large import MobileV2_MLSD_Large
from scepter.modules.annotator.mlsd.utils import pred_lines
diff --git a/scepter/modules/annotator/openpose.py b/scepter/modules/annotator/openpose.py
index 69320ec..b95fd9e 100644
--- a/scepter/modules/annotator/openpose.py
+++ b/scepter/modules/annotator/openpose.py
@@ -15,13 +15,12 @@ import numpy as np
import torch
import torch.nn as nn
from PIL import Image
-from scipy.ndimage.filters import gaussian_filter
-from skimage.measure import label
-
from scepter.modules.annotator.base_annotator import BaseAnnotator
from scepter.modules.annotator.registry import ANNOTATORS
from scepter.modules.utils.config import dict_to_yaml
from scepter.modules.utils.file_system import FS
+from scipy.ndimage.filters import gaussian_filter
+from skimage.measure import label
os.environ['KMP_DUPLICATE_LIB_OK'] = 'TRUE'
diff --git a/scepter/modules/annotator/utils.py b/scepter/modules/annotator/utils.py
index 89a25bd..900d563 100644
--- a/scepter/modules/annotator/utils.py
+++ b/scepter/modules/annotator/utils.py
@@ -37,30 +37,30 @@ class AnnotatorProcessor():
hed_cfg = {
'NAME': 'HedAnnotator',
'PRETRAINED_MODEL':
- 'ms://damo/scepter_scedit@annotator/ckpts/ControlNetHED.pth',
+ 'ms://iic/scepter_scedit@annotator/ckpts/ControlNetHED.pth',
'INPUT_KEYS': ['img'],
'OUTPUT_KEYS': ['hed']
}
openpose_cfg = {
'NAME': 'OpenposeAnnotator',
'BODY_MODEL_PATH':
- 'ms://damo/scepter_scedit@annotator/ckpts/body_pose_model.pth',
+ 'ms://iic/scepter_scedit@annotator/ckpts/body_pose_model.pth',
'HAND_MODEL_PATH':
- 'ms://damo/scepter_scedit@annotator/ckpts/hand_pose_model.pth',
+ 'ms://iic/scepter_scedit@annotator/ckpts/hand_pose_model.pth',
'INPUT_KEYS': ['img'],
'OUTPUT_KEYS': ['openpose']
}
midas_cfg = {
'NAME': 'MidasDetector',
'PRETRAINED_MODEL':
- 'ms://damo/scepter_scedit@annotator/ckpts/dpt_hybrid-midas-501f0c75.pt',
+ 'ms://iic/scepter_scedit@annotator/ckpts/dpt_hybrid-midas-501f0c75.pt',
'INPUT_KEYS': ['img'],
'OUTPUT_KEYS': ['depth']
}
mlsd_cfg = {
'NAME': 'MLSDdetector',
'PRETRAINED_MODEL':
- 'ms://damo/scepter_scedit@annotator/ckpts/mlsd_large_512_fp32.pth',
+ 'ms://iic/scepter_scedit@annotator/ckpts/mlsd_large_512_fp32.pth',
'INPUT_KEYS': ['img'],
'OUTPUT_KEYS': ['mlsd']
}
diff --git a/scepter/modules/data/dataset/base_dataset.py b/scepter/modules/data/dataset/base_dataset.py
index fa9dc8d..e985201 100644
--- a/scepter/modules/data/dataset/base_dataset.py
+++ b/scepter/modules/data/dataset/base_dataset.py
@@ -3,14 +3,13 @@
from abc import ABCMeta, abstractmethod
-from torch.utils.data import Dataset
-
from scepter.modules.transform.registry import TRANSFORMS, build_pipeline
from scepter.modules.utils.config import dict_to_yaml
from scepter.modules.utils.distribute import we
from scepter.modules.utils.file_system import FS
from scepter.modules.utils.logger import get_logger
from scepter.modules.utils.registry import old_python_version
+from torch.utils.data import Dataset
class BaseDataset(Dataset, metaclass=ABCMeta):
diff --git a/scepter/modules/data/dataset/dataset.py b/scepter/modules/data/dataset/dataset.py
index 9721406..22a6980 100644
--- a/scepter/modules/data/dataset/dataset.py
+++ b/scepter/modules/data/dataset/dataset.py
@@ -8,7 +8,6 @@ from collections.abc import Iterable
import numpy as np
import torchvision
-
from scepter.modules.data.dataset.base_dataset import BaseDataset
from scepter.modules.data.dataset.registry import DATASETS
from scepter.modules.utils.config import dict_to_yaml
@@ -272,6 +271,11 @@ class Text2ImageDataset(BaseDataset):
item['prompt'] = prompt_prefix + value
elif key in ['oss_key', 'path', 'img_path', 'target_img_path']:
item['meta']['img_path'] = os.path.join(path_prefix, value)
+ elif key in [
+ 'src_oss_key', 'src_path', 'src_img_path',
+ 'src_target_img_path'
+ ]:
+ item['meta']['src_path'] = os.path.join(path_prefix, value)
elif key in ['width', 'height']:
item['meta'][key] = int(value)
else:
diff --git a/scepter/modules/data/dataset/ms_dataset.py b/scepter/modules/data/dataset/ms_dataset.py
index 12b29aa..ab656fb 100644
--- a/scepter/modules/data/dataset/ms_dataset.py
+++ b/scepter/modules/data/dataset/ms_dataset.py
@@ -133,9 +133,11 @@ class ImageTextPairMSDataset(BaseDataset):
if ms_remap_path:
def map_func(example):
- example['Target:FILE'] = os.path.join(ms_remap_path,
- example['Target:FILE'])
- return example
+ return {
+ k: os.path.join(ms_remap_path, v)
+ if k.endswith(':FILE') else v
+ for k, v in example.items()
+ }
self.data = self.data.ds_instance.map(map_func)
self.real_number = len(self.data)
@@ -152,6 +154,8 @@ class ImageTextPairMSDataset(BaseDataset):
image_path = current_data['Target:FILE']
prompt = current_data['Prompt']
style = current_data['Style'] if 'Style' in current_data else ''
+ src_image_path = current_data[
+ 'Source:FILE'] if 'Source:FILE' in current_data else ''
# print(prompt, style)
if self.replace_style and not style == '':
prompt = prompt.replace(style, f'<{self.keywords_sign}>')
@@ -166,6 +170,7 @@ class ImageTextPairMSDataset(BaseDataset):
ret_item = {
'meta': {
'img_path': image_path,
+ 'src_path': src_image_path,
'data_key': style,
'data_num': self.real_number
},
@@ -241,19 +246,18 @@ class ImageTextPairFolderDataset(BaseDataset):
data_folder = FS.get_dir_to_local_dir(data_folder)
all_lines = open(os.path.join(data_folder, 'train.csv'),
'r').read().split('\n')
- assert all_lines[0] == 'Target:FILE,Prompt'
+ header = all_lines[0].split(',')
self.data = []
for line in all_lines[1:]:
line = line.strip()
if line == '':
continue
- self.data.append({
- 'Target:FILE':
- os.path.join(data_folder,
- line.split(',', 1)[0]),
- 'Prompt':
- line.split(',', 1)[1]
- })
+ record = dict(zip(header, line.split(',', len(header) - 1)))
+ record = {
+ k: os.path.join(data_folder, v) if k.endswith(':FILE') else v
+ for k, v in record.items()
+ }
+ self.data.append(record)
self.real_number = len(self.data)
def __len__(self):
@@ -268,6 +272,8 @@ class ImageTextPairFolderDataset(BaseDataset):
image_path = current_data['Target:FILE']
prompt = current_data['Prompt']
style = current_data['Style'] if 'Style' in current_data else ''
+ src_image_path = current_data[
+ 'Source:FILE'] if 'Source:FILE' in current_data else ''
# print(prompt, style)
if self.replace_style and not style == '':
prompt = prompt.replace(style, f'<{self.keywords_sign}>')
@@ -282,6 +288,7 @@ class ImageTextPairFolderDataset(BaseDataset):
ret_item = {
'meta': {
'img_path': image_path,
+ 'src_path': src_image_path,
'data_key': style,
'data_num': self.real_number
},
diff --git a/scepter/modules/data/dataset/registry.py b/scepter/modules/data/dataset/registry.py
index b64d600..573c0a2 100644
--- a/scepter/modules/data/dataset/registry.py
+++ b/scepter/modules/data/dataset/registry.py
@@ -7,13 +7,12 @@ import re
from functools import partial
import torch
-from torch.utils.data import DataLoader, DistributedSampler
-
from scepter.modules.data.sampler import (SAMPLERS, MixtureOfSamplers,
MultiFoldDistributedSampler,
MultiLevelBatchSampler)
from scepter.modules.utils.registry import (Registry, deep_copy,
old_python_version)
+from torch.utils.data import DataLoader, DistributedSampler
string_classes = (str, bytes)
int_classes = (int, )
diff --git a/scepter/modules/data/sampler/base_sampler.py b/scepter/modules/data/sampler/base_sampler.py
index 017f359..6982600 100644
--- a/scepter/modules/data/sampler/base_sampler.py
+++ b/scepter/modules/data/sampler/base_sampler.py
@@ -1,10 +1,9 @@
# -*- coding: utf-8 -*-
# Copyright (c) Alibaba, Inc. and its affiliates.
-from torch.utils.data.sampler import Sampler
-
from scepter.modules.utils.config import dict_to_yaml
from scepter.modules.utils.distribute import we
+from torch.utils.data.sampler import Sampler
class BaseSampler(Sampler):
diff --git a/scepter/modules/data/sampler/sampler.py b/scepter/modules/data/sampler/sampler.py
index b7c5899..50ea158 100644
--- a/scepter/modules/data/sampler/sampler.py
+++ b/scepter/modules/data/sampler/sampler.py
@@ -12,7 +12,6 @@ from typing import List, Optional
import numpy as np
import torch
import torch.distributed as dist
-
from scepter.modules.data.sampler.base_sampler import BaseSampler
from scepter.modules.data.sampler.registry import SAMPLERS
from scepter.modules.data.utils.data_bucket import (BucketBatchIndex,
diff --git a/scepter/modules/inference/control_inference.py b/scepter/modules/inference/control_inference.py
index 10d8438..1d08e14 100644
--- a/scepter/modules/inference/control_inference.py
+++ b/scepter/modules/inference/control_inference.py
@@ -8,7 +8,6 @@ import torch
import torch.nn as nn
import torchvision.transforms as TT
from PIL.Image import Image
-
from scepter.modules.model.registry import TUNERS
from scepter.modules.utils.config import Config
from scepter.modules.utils.distribute import we
diff --git a/scepter/modules/inference/diffusion_inference.py b/scepter/modules/inference/diffusion_inference.py
index 2b7314b..43ceac7 100644
--- a/scepter/modules/inference/diffusion_inference.py
+++ b/scepter/modules/inference/diffusion_inference.py
@@ -8,7 +8,6 @@ from collections import OrderedDict
import torch
import torch.nn.functional as F
from PIL.Image import Image
-
from scepter.modules.model.network.diffusion.diffusion import GaussianDiffusion
from scepter.modules.model.network.diffusion.schedules import noise_schedule
from scepter.modules.model.registry import (BACKBONES, EMBEDDERS, MODELS,
@@ -277,7 +276,7 @@ class DiffusionInference():
module = self.load(module)
self.loaded_model[name] = module
return module
- elif module['device'] == 'cpu' or module['device'] == "offline":
+ elif module['device'] == 'cpu' or module['device'] == 'offline':
module = self.load(module)
return module
else:
@@ -629,7 +628,7 @@ class DiffusionInference():
}, {
'cond': refine_null_context
}],
- steps=value_input.get('sample_steps', 50),
+ steps=value_input.get('refine_sample_steps', 50),
guide_scale=value_input.get('refine_guide_scale', 7.5),
guide_rescale=value_input.get('refine_guide_rescale',
0.5),
diff --git a/scepter/modules/inference/stylebooth_inference.py b/scepter/modules/inference/stylebooth_inference.py
index b4182df..156bf02 100644
--- a/scepter/modules/inference/stylebooth_inference.py
+++ b/scepter/modules/inference/stylebooth_inference.py
@@ -120,7 +120,7 @@ class StyleboothInference(DiffusionInference):
cat_uc=True,
tuner_model=None,
control_model=None,
- stylebooth_state=False,
+ stylebooth_state=True,
style_edit_image=None,
style_exemplar_image=None,
style_guide_scale_text=None,
diff --git a/scepter/modules/inference/tuner_inference.py b/scepter/modules/inference/tuner_inference.py
index ea7797c..79fbecb 100644
--- a/scepter/modules/inference/tuner_inference.py
+++ b/scepter/modules/inference/tuner_inference.py
@@ -7,7 +7,6 @@ import os
import warnings
import torch
-
from scepter.modules.utils.file_system import FS
try:
diff --git a/scepter/modules/model/backbone/autoencoder/ae_module.py b/scepter/modules/model/backbone/autoencoder/ae_module.py
index 5ee854c..1066ed8 100644
--- a/scepter/modules/model/backbone/autoencoder/ae_module.py
+++ b/scepter/modules/model/backbone/autoencoder/ae_module.py
@@ -4,14 +4,13 @@
import torch
import torch.nn as nn
from einops import repeat
-from torch.utils.checkpoint import checkpoint
-
from scepter.modules.model.backbone.autoencoder.ae_utils import (
XFORMERS_IS_AVAILBLE, AttnBlock, Downsample, MemoryEfficientAttention,
Normalize, ResnetBlock, Upsample, nonlinearity)
from scepter.modules.model.base_model import BaseModel
from scepter.modules.model.registry import BACKBONES
from scepter.modules.utils.config import dict_to_yaml
+from torch.utils.checkpoint import checkpoint
@BACKBONES.register_class()
diff --git a/scepter/modules/model/backbone/image/mlp.py b/scepter/modules/model/backbone/image/mlp.py
index 58f10df..b479425 100644
--- a/scepter/modules/model/backbone/image/mlp.py
+++ b/scepter/modules/model/backbone/image/mlp.py
@@ -1,7 +1,6 @@
# -*- coding: utf-8 -*-
# Copyright (c) Alibaba, Inc. and its affiliates.
import torch.nn as nn
-
from scepter.modules.model.base_model import BaseModel
from scepter.modules.model.registry import BACKBONES
from scepter.modules.utils.config import dict_to_yaml
diff --git a/scepter/modules/model/backbone/image/utils/clip.py b/scepter/modules/model/backbone/image/utils/clip.py
index 702be1d..8d38ad7 100644
--- a/scepter/modules/model/backbone/image/utils/clip.py
+++ b/scepter/modules/model/backbone/image/utils/clip.py
@@ -3,14 +3,14 @@
from collections import OrderedDict
from typing import List, Tuple, Union
+from pkg_resources import packaging
+
import numpy as np
import torch
import torch.nn.functional as F
-from pkg_resources import packaging
-from torch import nn
-
from scepter.modules.model.backbone.image.utils.simple_tokenizer import \
SimpleTokenizer as _Tokenizer
+from torch import nn
_tokenizer = _Tokenizer()
diff --git a/scepter/modules/model/backbone/image/vit_modify.py b/scepter/modules/model/backbone/image/vit_modify.py
index 4e5d84b..7a3e72f 100644
--- a/scepter/modules/model/backbone/image/vit_modify.py
+++ b/scepter/modules/model/backbone/image/vit_modify.py
@@ -2,7 +2,6 @@
# Copyright (c) Alibaba, Inc. and its affiliates.
import torch
import torch.nn as nn
-
from scepter.modules.model.backbone.image.utils.vit import (
MULTI_HEAD_VIT_MODEL, VIT, VIT_MODEL, MULTI_HEAD_VIT_MODEL_Split)
from scepter.modules.model.base_model import BaseModel
diff --git a/scepter/modules/model/backbone/unet/unet_module.py b/scepter/modules/model/backbone/unet/unet_module.py
index 99caccb..67ccb27 100644
--- a/scepter/modules/model/backbone/unet/unet_module.py
+++ b/scepter/modules/model/backbone/unet/unet_module.py
@@ -6,7 +6,6 @@ from collections import OrderedDict
import torch
import torch.nn as nn
-
from scepter.modules.model.backbone.unet.unet_utils import (
BasicTransformerBlock, Downsample, ResBlock, SpatialTransformer,
SpatialTransformerV2, Timestep, TimestepEmbedSequential,
diff --git a/scepter/modules/model/backbone/unet/unet_utils.py b/scepter/modules/model/backbone/unet/unet_utils.py
index bfe5307..738711f 100644
--- a/scepter/modules/model/backbone/unet/unet_utils.py
+++ b/scepter/modules/model/backbone/unet/unet_utils.py
@@ -6,16 +6,16 @@ import warnings
from abc import abstractmethod
from importlib import find_loader
+from packaging import version
+
import numpy as np
import torch
import torch.nn as nn
import torch.nn.functional as F
import torchvision.transforms.functional as TF
from einops import rearrange, repeat
-from packaging import version
-from torch.utils.checkpoint import checkpoint
-
from scepter.modules.model.utils.basic_utils import default, exists
+from torch.utils.checkpoint import checkpoint
try:
import xformers
diff --git a/scepter/modules/model/backbone/video/bricks/csn_branch.py b/scepter/modules/model/backbone/video/bricks/csn_branch.py
index 57bef51..ce2a02b 100644
--- a/scepter/modules/model/backbone/video/bricks/csn_branch.py
+++ b/scepter/modules/model/backbone/video/bricks/csn_branch.py
@@ -2,7 +2,6 @@
# Copyright (c) Alibaba, Inc. and its affiliates.
import torch.nn as nn
-
from scepter.modules.model.backbone.video.bricks.base_branch import BaseBranch
from scepter.modules.model.registry import BRICKS
from scepter.modules.utils.config import Config, dict_to_yaml
diff --git a/scepter/modules/model/backbone/video/bricks/non_local.py b/scepter/modules/model/backbone/video/bricks/non_local.py
index 61cf92f..db3edac 100644
--- a/scepter/modules/model/backbone/video/bricks/non_local.py
+++ b/scepter/modules/model/backbone/video/bricks/non_local.py
@@ -5,7 +5,6 @@
import torch
import torch.nn as nn
import torch.nn.functional as F
-
from scepter.modules.model.backbone.video.bricks.visualize_3d_module import \
Visualize3DModule
from scepter.modules.model.registry import BRICKS
diff --git a/scepter/modules/model/backbone/video/bricks/r2d3d_branch.py b/scepter/modules/model/backbone/video/bricks/r2d3d_branch.py
index d0386f8..024f0fd 100644
--- a/scepter/modules/model/backbone/video/bricks/r2d3d_branch.py
+++ b/scepter/modules/model/backbone/video/bricks/r2d3d_branch.py
@@ -2,7 +2,6 @@
# Copyright (c) Alibaba, Inc. and its affiliates.
import torch.nn as nn
-
from scepter.modules.model.backbone.video.bricks.base_branch import BaseBranch
from scepter.modules.model.registry import BRICKS
from scepter.modules.utils.config import Config, dict_to_yaml
diff --git a/scepter/modules/model/backbone/video/bricks/r2plus1d_branch.py b/scepter/modules/model/backbone/video/bricks/r2plus1d_branch.py
index e028ae8..da8783c 100644
--- a/scepter/modules/model/backbone/video/bricks/r2plus1d_branch.py
+++ b/scepter/modules/model/backbone/video/bricks/r2plus1d_branch.py
@@ -4,7 +4,6 @@
import math
import torch.nn as nn
-
from scepter.modules.model.backbone.video.bricks.base_branch import BaseBranch
from scepter.modules.model.registry import BRICKS
from scepter.modules.utils.config import Config, dict_to_yaml
diff --git a/scepter/modules/model/backbone/video/bricks/stems/base_2d_stem.py b/scepter/modules/model/backbone/video/bricks/stems/base_2d_stem.py
index cfecd0b..8e17e01 100644
--- a/scepter/modules/model/backbone/video/bricks/stems/base_2d_stem.py
+++ b/scepter/modules/model/backbone/video/bricks/stems/base_2d_stem.py
@@ -2,7 +2,6 @@
# Copyright (c) Alibaba, Inc. and its affiliates.
import torch.nn as nn
-
from scepter.modules.model.backbone.video.bricks.visualize_3d_module import \
Visualize3DModule
from scepter.modules.model.registry import STEMS
diff --git a/scepter/modules/model/backbone/video/bricks/stems/base_3d_stem.py b/scepter/modules/model/backbone/video/bricks/stems/base_3d_stem.py
index be7e64c..445d016 100644
--- a/scepter/modules/model/backbone/video/bricks/stems/base_3d_stem.py
+++ b/scepter/modules/model/backbone/video/bricks/stems/base_3d_stem.py
@@ -2,7 +2,6 @@
# Copyright (c) Alibaba, Inc. and its affiliates.
import torch.nn as nn
-
from scepter.modules.model.backbone.video.bricks.visualize_3d_module import \
Visualize3DModule
from scepter.modules.model.registry import STEMS
diff --git a/scepter/modules/model/backbone/video/bricks/stems/down_sample_stem.py b/scepter/modules/model/backbone/video/bricks/stems/down_sample_stem.py
index cf3d332..f77e2b6 100644
--- a/scepter/modules/model/backbone/video/bricks/stems/down_sample_stem.py
+++ b/scepter/modules/model/backbone/video/bricks/stems/down_sample_stem.py
@@ -2,7 +2,6 @@
# Copyright (c) Alibaba, Inc. and its affiliates.
import torch.nn as nn
-
from scepter.modules.model.backbone.video.bricks.stems.base_3d_stem import \
Base3DStem
from scepter.modules.model.registry import STEMS
diff --git a/scepter/modules/model/backbone/video/bricks/stems/embedding_stem.py b/scepter/modules/model/backbone/video/bricks/stems/embedding_stem.py
index 725a308..9f9ece5 100644
--- a/scepter/modules/model/backbone/video/bricks/stems/embedding_stem.py
+++ b/scepter/modules/model/backbone/video/bricks/stems/embedding_stem.py
@@ -2,7 +2,6 @@
# Copyright (c) Alibaba, Inc. and its affiliates.
import torch.nn as nn
-
from scepter.modules.model.backbone.video.bricks.visualize_3d_module import \
Visualize3DModule
from scepter.modules.model.registry import STEMS
diff --git a/scepter/modules/model/backbone/video/bricks/stems/r2plus1d_stem.py b/scepter/modules/model/backbone/video/bricks/stems/r2plus1d_stem.py
index c1a5c69..2fea90b 100644
--- a/scepter/modules/model/backbone/video/bricks/stems/r2plus1d_stem.py
+++ b/scepter/modules/model/backbone/video/bricks/stems/r2plus1d_stem.py
@@ -4,7 +4,6 @@
import math
import torch.nn as nn
-
from scepter.modules.model.backbone.video.bricks.stems.base_3d_stem import \
Base3DStem
from scepter.modules.model.registry import STEMS
diff --git a/scepter/modules/model/backbone/video/bricks/tada_conv.py b/scepter/modules/model/backbone/video/bricks/tada_conv.py
index c673ab1..41716eb 100644
--- a/scepter/modules/model/backbone/video/bricks/tada_conv.py
+++ b/scepter/modules/model/backbone/video/bricks/tada_conv.py
@@ -8,7 +8,6 @@ from itertools import repeat
import torch
import torch.nn as nn
import torch.nn.functional as F
-
from scepter.modules.model.backbone.video.bricks.base_branch import BaseBranch
from scepter.modules.model.registry import BRICKS
from scepter.modules.utils.config import Config, dict_to_yaml
diff --git a/scepter/modules/model/backbone/video/bricks/transformer_branch.py b/scepter/modules/model/backbone/video/bricks/transformer_branch.py
index 31314db..cf4d65d 100644
--- a/scepter/modules/model/backbone/video/bricks/transformer_branch.py
+++ b/scepter/modules/model/backbone/video/bricks/transformer_branch.py
@@ -22,7 +22,6 @@ import torch
import torch.nn as nn
import torch.nn.functional as F
from einops import rearrange, repeat
-
from scepter.modules.model.backbone.video.bricks.visualize_3d_module import \
Visualize3DModule
from scepter.modules.model.registry import BRICKS
diff --git a/scepter/modules/model/backbone/video/bricks/visualize_3d_module.py b/scepter/modules/model/backbone/video/bricks/visualize_3d_module.py
index c22f63e..066bde4 100644
--- a/scepter/modules/model/backbone/video/bricks/visualize_3d_module.py
+++ b/scepter/modules/model/backbone/video/bricks/visualize_3d_module.py
@@ -4,7 +4,6 @@
import os
import torch.nn as nn
-
from scepter.modules.utils.config import dict_to_yaml
diff --git a/scepter/modules/model/backbone/video/resnet_3d.py b/scepter/modules/model/backbone/video/resnet_3d.py
index e5194b7..744ee22 100644
--- a/scepter/modules/model/backbone/video/resnet_3d.py
+++ b/scepter/modules/model/backbone/video/resnet_3d.py
@@ -2,7 +2,6 @@
# Copyright (c) Alibaba, Inc. and its affiliates.
import torch.nn as nn
-
from scepter.modules.model.backbone.video.bricks.non_local import NonLocal
from scepter.modules.model.backbone.video.init_helper import \
_init_convnet_weights
diff --git a/scepter/modules/model/backbone/video/video_transformer.py b/scepter/modules/model/backbone/video/video_transformer.py
index 783cbde..d98fa3a 100644
--- a/scepter/modules/model/backbone/video/video_transformer.py
+++ b/scepter/modules/model/backbone/video/video_transformer.py
@@ -33,7 +33,6 @@ import torch
import torch.nn as nn
import torch.nn.functional
from einops import rearrange
-
from scepter.modules.model.backbone.video.init_helper import (
_init_transformer_weights, trunc_normal_)
from scepter.modules.model.registry import BACKBONES, BRICKS, STEMS
diff --git a/scepter/modules/model/base_model.py b/scepter/modules/model/base_model.py
index 6adf8c1..6685a2a 100644
--- a/scepter/modules/model/base_model.py
+++ b/scepter/modules/model/base_model.py
@@ -3,7 +3,6 @@
import copy
import torch.nn as nn
-
from scepter.modules.utils.config import dict_to_yaml
from scepter.modules.utils.distribute import gather_data, we
from scepter.modules.utils.probe import (ProbeData, merge_gathered_probe,
diff --git a/scepter/modules/model/embedder/embedder.py b/scepter/modules/model/embedder/embedder.py
index fc28d72..3000e35 100644
--- a/scepter/modules/model/embedder/embedder.py
+++ b/scepter/modules/model/embedder/embedder.py
@@ -11,8 +11,6 @@ import torch
import torch.nn as nn
import torch.utils.dlpack
from einops import rearrange
-from torch.utils.checkpoint import checkpoint
-
# to check
from scepter.modules.model.backbone.unet.unet_utils import Timestep
from scepter.modules.model.registry import EMBEDDERS
@@ -20,6 +18,7 @@ from scepter.modules.model.utils.basic_utils import expand_dims_like
from scepter.modules.utils.config import dict_to_yaml
from scepter.modules.utils.distribute import we
from scepter.modules.utils.file_system import FS
+from torch.utils.checkpoint import checkpoint
from .base_embedder import BaseEmbedder
from .resampler import Resampler
diff --git a/scepter/modules/model/head/classifier_head.py b/scepter/modules/model/head/classifier_head.py
index 00cdb85..5451c40 100644
--- a/scepter/modules/model/head/classifier_head.py
+++ b/scepter/modules/model/head/classifier_head.py
@@ -7,11 +7,10 @@ from collections import OrderedDict
import torch
import torch.nn as nn
import torch.nn.functional as F
-from torch.nn.parameter import Parameter
-
from scepter.modules.model.base_model import BaseModel
from scepter.modules.model.registry import HEADS
from scepter.modules.utils.config import dict_to_yaml
+from torch.nn.parameter import Parameter
@HEADS.register_class()
diff --git a/scepter/modules/model/loss/base_losses.py b/scepter/modules/model/loss/base_losses.py
index 181f72b..3fb35fe 100644
--- a/scepter/modules/model/loss/base_losses.py
+++ b/scepter/modules/model/loss/base_losses.py
@@ -1,12 +1,12 @@
# -*- coding: utf-8 -*-
# Copyright (c) Alibaba, Inc. and its affiliates.
-import torch.nn as nn
from packaging import version
-from torch.version import __version__ as torch_version
+import torch.nn as nn
from scepter.modules.model.registry import LOSSES
from scepter.modules.utils.config import dict_to_yaml
+from torch.version import __version__ as torch_version
@LOSSES.register_class()
diff --git a/scepter/modules/model/loss/rec_loss.py b/scepter/modules/model/loss/rec_loss.py
index 75a9452..afeaeac 100644
--- a/scepter/modules/model/loss/rec_loss.py
+++ b/scepter/modules/model/loss/rec_loss.py
@@ -1,10 +1,9 @@
# -*- coding: utf-8 -*-
# Copyright (c) Alibaba, Inc. and its affiliates.
import torch
-from torch import nn
-
from scepter.modules.model.registry import LOSSES
from scepter.modules.utils.config import dict_to_yaml
+from torch import nn
@LOSSES.register_class()
diff --git a/scepter/modules/model/metric/classification.py b/scepter/modules/model/metric/classification.py
index fb83ebc..54673ec 100644
--- a/scepter/modules/model/metric/classification.py
+++ b/scepter/modules/model/metric/classification.py
@@ -5,7 +5,6 @@ from collections import OrderedDict
import numpy as np
import torch
-
from scepter.modules.model.metric.base_metric import BaseMetric
from scepter.modules.model.metric.registry import METRICS
from scepter.modules.utils.config import dict_to_yaml
diff --git a/scepter/modules/model/neck/global_average_pooling.py b/scepter/modules/model/neck/global_average_pooling.py
index 41da23c..be7d223 100644
--- a/scepter/modules/model/neck/global_average_pooling.py
+++ b/scepter/modules/model/neck/global_average_pooling.py
@@ -2,7 +2,6 @@
# Copyright (c) Alibaba, Inc. and its affiliates.
import torch.nn as nn
-
from scepter.modules.model.base_model import BaseModel
from scepter.modules.model.registry import NECKS
from scepter.modules.utils.config import dict_to_yaml
diff --git a/scepter/modules/model/network/autoencoder/ae_kl.py b/scepter/modules/model/network/autoencoder/ae_kl.py
index bd88d14..19a90a5 100644
--- a/scepter/modules/model/network/autoencoder/ae_kl.py
+++ b/scepter/modules/model/network/autoencoder/ae_kl.py
@@ -5,7 +5,6 @@ from collections import OrderedDict
import numpy as np
import torch
-
from scepter.modules.model.network.train_module import TrainModule
from scepter.modules.model.registry import BACKBONES, LOSSES, MODELS
from scepter.modules.utils.config import dict_to_yaml
diff --git a/scepter/modules/model/network/classifier.py b/scepter/modules/model/network/classifier.py
index 979bd6a..2656178 100644
--- a/scepter/modules/model/network/classifier.py
+++ b/scepter/modules/model/network/classifier.py
@@ -1,17 +1,16 @@
# -*- coding: utf-8 -*-
-# Copyright 2021 Alibaba Group Holding Limited. All Rights Reserved.
+# Copyright (c) Alibaba, Inc. and its affiliates.
from collections import OrderedDict
from functools import partial
import torch.nn as nn
-from torch.nn.functional import sigmoid, softmax
-
from scepter.modules.model.metric.registry import METRICS
from scepter.modules.model.network.train_module import TrainModule
from scepter.modules.model.registry import (BACKBONES, HEADS, LOSSES, MODELS,
NECKS)
from scepter.modules.utils.config import Config, dict_to_yaml
+from torch.nn.functional import sigmoid, softmax
_ACTIVATE_MAPPER = {'softmax': partial(softmax, dim=1), 'sigmoid': sigmoid}
diff --git a/scepter/modules/model/network/diffusion/diffusion.py b/scepter/modules/model/network/diffusion/diffusion.py
index bc98256..48405fe 100644
--- a/scepter/modules/model/network/diffusion/diffusion.py
+++ b/scepter/modules/model/network/diffusion/diffusion.py
@@ -10,10 +10,12 @@ import random
import torch
from .schedules import karras_schedule
-from .solvers import (sample_ddim, sample_dpm_2, sample_dpm_2_ancestral,
- sample_dpmpp_2m, sample_dpmpp_2m_sde,
- sample_dpmpp_2s_ancestral, sample_dpmpp_sde,
- sample_euler, sample_euler_ancestral, sample_heun)
+from .solvers import (
+ sample_ddim, sample_dpm_2, sample_dpm_2_ancestral, sample_dpmpp_2m,
+ sample_dpmpp_2m_sde, sample_dpmpp_2m_sde_lcm, sample_dpmpp_2s_ancestral,
+ sample_dpmpp_sde, sample_euler, sample_euler_ancestral, sample_heun,
+ sample_onestep, stochastic_iterative_sampler,
+ stochastic_iterative_sampler2, stochastic_iterative_sampler3)
__all__ = ['GaussianDiffusion']
@@ -427,7 +429,12 @@ class GaussianDiffusion(object):
'dpmpp_2s_ancestral_karras': sample_dpmpp_2s_ancestral,
'dpmpp_2m_karras': sample_dpmpp_2m,
'dpmpp_sde_karras': sample_dpmpp_sde,
- 'dpmpp_2m_sde_karras': sample_dpmpp_2m_sde
+ 'dpmpp_2m_sde_karras': sample_dpmpp_2m_sde,
+ 'onestep': sample_onestep,
+ 'multistep': stochastic_iterative_sampler,
+ 'multistep2': stochastic_iterative_sampler2,
+ 'multistep3': stochastic_iterative_sampler3,
+ 'dpmpp_2m_sde_lcm': sample_dpmpp_2m_sde_lcm,
}[solver]
# options
@@ -620,6 +627,44 @@ class GaussianDiffusion(object):
| torch.isinf(log_sigma)] = float('inf')
return log_sigma.exp()
+ @torch.no_grad()
+ def stochastic_encode(self, x0, t, steps):
+ # fast, but does not allow for exact reconstruction
+ # t serves as an index to gather the correct alphas
+
+ t_max = None
+ t_min = None
+
+ # discretization method
+ discretization = 'trailing' if self.prediction_type == 'v' else 'leading'
+
+ # timesteps
+ if isinstance(steps, int):
+ t_max = self.num_timesteps - 1 if t_max is None else t_max
+ t_min = 0 if t_min is None else t_min
+ steps = discretize_timesteps(t_max, t_min, steps, discretization)
+ steps = torch.as_tensor(steps).round().long().flip(0).to(x0.device)
+ # steps = torch.as_tensor(steps).round().long().to(x0.device)
+
+ # self.alphas_bar = torch.cumprod(1 - self.sigmas ** 2, dim=0)
+ # print('sigma: ', self.sigmas, len(self.sigmas))
+ # print('alpha_bar: ', self.alphas_bar, len(self.alphas_bar))
+ # print('steps: ', steps, len(steps))
+ # sqrt_alphas_cumprod = torch.sqrt(self.alphas_bar).to(x0.device)[steps]
+ # sqrt_one_minus_alphas_cumprod = torch.sqrt(1 - self.alphas_bar).to(x0.device)[steps]
+
+ sqrt_alphas_cumprod = self.alphas.to(x0.device)[steps]
+ sqrt_one_minus_alphas_cumprod = self.sigmas.to(x0.device)[steps]
+ # print('sigma: ', self.sigmas, len(self.sigmas))
+ # print('alpha: ', self.alphas, len(self.alphas))
+ # print('steps: ', steps, len(steps))
+
+ noise = torch.randn_like(x0)
+ return (
+ extract_into_tensor(sqrt_alphas_cumprod, t, x0.shape) * x0 +
+ extract_into_tensor(sqrt_one_minus_alphas_cumprod, t, x0.shape) *
+ noise)
+
def extract_into_tensor(a, t, x_shape):
b, *_ = t.shape
@@ -642,3 +687,19 @@ def discretize_timesteps(t_max, t_min, steps, discretization):
raise NotImplementedError(
f'{discretization} discretization not implemented')
return steps.clamp_(t_min, t_max)
+
+
+def get_scalings_for_boundary_condition(sigma):
+ sigma_data = 0.5
+ c_skip = (1 -
+ sigma**2)**0.5 * sigma_data**2 / (sigma**2 +
+ (1 - sigma**2) * sigma_data**2)
+ c_out = (sigma * sigma_data / (sigma**2 +
+ (1 - sigma**2) * sigma_data**2)**0.5)
+ return c_skip, c_out
+
+
+def v_to_x0(v, t, x_t, diffusion):
+ sigmas = _i(diffusion.sigmas, t, v)
+ alphas = _i(diffusion.alphas, t, v)
+ return alphas * x_t - sigmas * v
diff --git a/scepter/modules/model/network/diffusion/solvers.py b/scepter/modules/model/network/diffusion/solvers.py
index ab4bf22..437da91 100644
--- a/scepter/modules/model/network/diffusion/solvers.py
+++ b/scepter/modules/model/network/diffusion/solvers.py
@@ -12,13 +12,17 @@ q(x_t | x_0) = N(x_t | alpha_t x_0, sigma_t^2 I),
where 0 <= sigma_t <= 1 and alpha_t^2 = 1 - sigma_t^2.
"""
-import torch
from tqdm.auto import trange
+import torch
+
__all__ = [
'sample_euler', 'sample_euler_ancestral', 'sample_heun', 'sample_dpm_2',
'sample_dpm_2_ancestral', 'sample_dpmpp_2s_ancestral', 'sample_dpmpp_sde',
- 'sample_dpmpp_2m', 'sample_dpmpp_2m_sde', 'sample_ddim'
+ 'sample_dpmpp_2m', 'sample_dpmpp_2m_sde', 'sample_ddim',
+ 'sample_dpmpp_2m_sde_lcm', 'sample_onestep',
+ 'stochastic_iterative_sampler', 'stochastic_iterative_sampler2',
+ 'stochastic_iterative_sampler3'
]
# -------------------- variation exploding (VE) solver --------------------#
@@ -630,3 +634,183 @@ def sample_img2img_euler_ancestral(noise,
if sigmas[i + 1] > 0:
x = x + torch.randn_like(x) * s_noise * sigma_up
return x
+
+
+# --------- LCM ------------
+
+
+@torch.no_grad()
+def sample_dpmpp_2m_sde_lcm(noise,
+ model,
+ sigmas,
+ eta=1.,
+ s_noise=1.,
+ solver_type='midpoint',
+ show_progress=True,
+ total_sample_steps=50,
+ sample_steps=5,
+ **kwargs):
+ """
+ DPM-Solver++ (2M) SDE.
+ """
+ assert solver_type in {'heun', 'midpoint'}
+
+ dm_steps = sample_steps
+ x = noise * (sigmas[-dm_steps - 1]**2 + 1)**0.5
+ sigma_min, sigma_max = sigmas[sigmas > 0].min(), sigmas[
+ sigmas < float('inf')].max()
+ noise_sampler = BrownianTreeNoiseSampler(x, sigma_min, sigma_max)
+ old_denoised = None
+ h_last = None
+
+ for i in trange(len(sigmas) - dm_steps - 1,
+ len(sigmas) - 1,
+ disable=not show_progress):
+ if sigmas[i] == float('inf'):
+ # Euler method
+ denoised = model(noise, sigmas[i])
+ x = denoised + sigmas[i + 1] * noise
+ else:
+ _, c_in = get_scalings(sigmas[i])
+ denoised = model(x * c_in, sigmas[i])
+ if sigmas[i + 1] == 0:
+ # Denoising step
+ x = denoised
+ else:
+ # DPM-Solver++(2M) SDE
+ t, s = -sigmas[i].log(), -sigmas[i + 1].log()
+ h = s - t
+ eta_h = eta * h
+
+ x = sigmas[i + 1] / sigmas[i] * (-eta_h).exp() * x + \
+ (-h - eta_h).expm1().neg() * denoised
+
+ if old_denoised is not None:
+ r = h_last / h
+ if solver_type == 'heun':
+ x = x + ((-h - eta_h).expm1().neg() / (-h - eta_h) + 1) * \
+ (1 / r) * (denoised - old_denoised)
+ elif solver_type == 'midpoint':
+ x = x + 0.5 * (-h - eta_h).expm1().neg() * \
+ (1 / r) * (denoised - old_denoised)
+
+ x = x + noise_sampler(sigmas[i], sigmas[i + 1]) * sigmas[
+ i + 1] * (-2 * eta_h).expm1().neg().sqrt() * s_noise
+
+ old_denoised = denoised
+ h_last = h
+ return x
+
+
+@torch.no_grad()
+def sample_onestep(noise, model, sigmas, show_progress=True, **kwargs):
+ """
+ CM one step solver.
+ """
+ x = noise
+ denoised = model(x, sigmas[0])
+ return denoised
+
+
+@torch.no_grad()
+def stochastic_iterative_sampler(noise,
+ model,
+ sigmas,
+ show_progress=True,
+ **kwargs):
+ """
+ CM multiple steps solver.
+ """
+ x = noise
+ sigmas_vp = (sigmas**2 / (1 + sigmas**2))**0.5
+ sigmas_vp[sigmas == float('inf')] = 1.
+ for i in trange(len(sigmas) - 1, disable=not show_progress):
+ denoised = model(x, sigmas[i])
+
+ sigma = sigmas_vp[i + 1]
+ alpha = torch.sqrt(1 - sigma**2)
+ noises = torch.randn_like(x)
+ x = alpha * denoised + sigma * noises
+ return x
+
+
+@torch.no_grad()
+def stochastic_iterative_sampler2(noise,
+ model,
+ sigmas,
+ show_progress=True,
+ repeat=1,
+ ema=0.05,
+ **kwargs):
+ """
+ CM multiple steps solver.
+ """
+ # denoised_s = []
+ # for _ in range(repeat):
+ # noise = torch.randn_like(noise)
+ # denoised_s.append(model(noise, sigmas[0]))
+
+ # denoised_s = torch.cat(denoised_s, dim = 0)
+ # denoised = torch.mean(denoised_s, dim=0, keepdim=True)
+ denoised = model(noise, sigmas[0])
+ denoised_ema = denoised
+
+ sigmas_vp = (sigmas**2 / (1 + sigmas**2))**0.5
+ sigmas_vp[sigmas == float('inf')] = 1.
+ for i in trange(1, len(sigmas) - 1, disable=not show_progress):
+ sigma = sigmas_vp[i]
+ alpha = torch.sqrt(1 - sigma**2)
+ noise = torch.randn_like(noise)
+ x = alpha * denoised + sigma * noise
+ denoised = model(x, sigmas[i])
+ denoised_ema = ema * denoised_ema + (1.0 - ema) * denoised
+ return denoised_ema
+
+
+@torch.no_grad()
+def stochastic_iterative_sampler3(noise,
+ model,
+ sigmas,
+ show_progress=True,
+ repeat=1,
+ solver_eta=0.2,
+ solver_ema=0.05,
+ **kwargs):
+ """
+ CM multiple steps solver.
+ """
+ eta = solver_eta
+ ema = solver_ema
+ # denoised_s = []
+ # for _ in range(repeat):
+ # noise = torch.randn_like(noise)
+ # denoised_s.append(model(noise, sigmas[0]))
+
+ # denoised_s = torch.cat(denoised_s, dim = 0)
+ # denoised = torch.mean(denoised_s, dim=0, keepdim=True)
+ denoised = model(noise, sigmas[0])
+ denoised_ema = denoised
+ eta = float(eta)
+
+ sigmas_vp = (sigmas**2 / (1 + sigmas**2))**0.5
+ sigmas_vp[sigmas == float('inf')] = 1.
+ noises = [
+ noise.clone(),
+ ]
+ for i in trange(1, len(sigmas) - 1, disable=not show_progress):
+ sigma = sigmas_vp[i]
+ alpha = torch.sqrt(1 - sigma**2)
+ # x = alpha * denoised + sigma * torch.randn_like(noise)
+ # x = alpha * denoised + sigma * (eta * noise + (1 - eta ** 2) ** 0.5 * torch.randn_like(noise))
+ # eta = 0.2*sigma / (sigma + 1.0)
+ # noise = eta * noise + (1 - eta ** 2) ** 0.5 * torch.randn_like(noise)
+ noise2 = 0
+ for n in noises:
+ noise2 += eta * n
+ noise2 += (1 - (eta * len(noises))**2)**0.5 * torch.randn_like(noise)
+ noises.append(noise2.clone())
+ # noise = torch.randn_like(noise)
+ x = alpha * denoised + sigma * noise2
+ denoised = model(x, sigmas[i])
+ denoised_ema = ema * denoised_ema + (1.0 - ema) * denoised
+ return denoised_ema
diff --git a/scepter/modules/model/network/ldm/__init__.py b/scepter/modules/model/network/ldm/__init__.py
index bb8d1a9..9f8f971 100644
--- a/scepter/modules/model/network/ldm/__init__.py
+++ b/scepter/modules/model/network/ldm/__init__.py
@@ -1,6 +1,7 @@
# -*- coding: utf-8 -*-
# Copyright (c) Alibaba, Inc. and its affiliates.
from scepter.modules.model.network.ldm.ldm import LatentDiffusion
+from scepter.modules.model.network.ldm.ldm_edit import LatentDiffusionEdit
from scepter.modules.model.network.ldm.ldm_sce import (
LatentDiffusionSCEControl, LatentDiffusionSCETuning,
LatentDiffusionXLSCEControl, LatentDiffusionXLSCETuning)
diff --git a/scepter/modules/model/network/ldm/ldm.py b/scepter/modules/model/network/ldm/ldm.py
index 4a6964f..492039a 100644
--- a/scepter/modules/model/network/ldm/ldm.py
+++ b/scepter/modules/model/network/ldm/ldm.py
@@ -5,7 +5,6 @@ import random
from collections import OrderedDict
import torch
-
from scepter.modules.model.network.diffusion.diffusion import GaussianDiffusion
from scepter.modules.model.network.diffusion.schedules import noise_schedule
from scepter.modules.model.network.train_module import TrainModule
diff --git a/scepter/modules/model/network/ldm/ldm_edit.py b/scepter/modules/model/network/ldm/ldm_edit.py
new file mode 100644
index 0000000..742f4b5
--- /dev/null
+++ b/scepter/modules/model/network/ldm/ldm_edit.py
@@ -0,0 +1,302 @@
+# -*- coding: utf-8 -*-
+# Copyright (c) Alibaba, Inc. and its affiliates.
+import copy
+import numbers
+import random
+
+import numpy as np
+import torch
+from scepter.modules.model.network.ldm.ldm import LatentDiffusion
+from scepter.modules.model.registry import MODELS
+from scepter.modules.model.utils.basic_utils import default
+from scepter.modules.utils.config import dict_to_yaml
+from scepter.modules.utils.distribute import we
+
+
+@MODELS.register_class()
+class LatentDiffusionEdit(LatentDiffusion):
+ para_dict = {
+ 'CONCAT_NO_SCALE_FACTOR': {
+ 'value': False,
+ 'description': 'Whether concat input scaled after VAE.'
+ },
+ 'I_ZERO': {
+ 'value': 0.0,
+ 'description': 'P-zero of concat image.'
+ },
+ }
+ para_dict.update(LatentDiffusion.para_dict)
+
+ def __init__(self, cfg, logger):
+ super().__init__(cfg, logger=logger)
+ self.concat_no_scale_factor = self.cfg.get('CONCAT_NO_SCALE_FACTOR',
+ False)
+ self.i_zero = self.cfg.get('I_ZERO', 0.0)
+ # # overwrite the original diffusion
+ # self.diffusion = GaussianDiffusion(
+ # sigmas=self.sigmas, prediction_type=self.parameterization)
+
+ def forward_train(self, image=None, noise=None, prompt=None, **kwargs):
+ condition_attn = None
+ if 'condition_attn' in kwargs and kwargs['condition_attn'] is not None:
+ condition_attn = kwargs.pop('condition_attn')
+ if np.random.uniform() < self.i_zero:
+ condition_attn = torch.zeros_like(condition_attn)
+
+ condition_cat = None
+ if 'condition_cat' in kwargs and kwargs['condition_cat'] is not None:
+ condition_cat = kwargs.pop('condition_cat')
+ if np.random.uniform() < self.i_zero:
+ condition_cat = torch.zeros_like(condition_cat)
+
+ ###############################
+ x_start = self.encode_first_stage(image, **kwargs)
+ t = torch.randint(0,
+ self.num_timesteps, (x_start.shape[0], ),
+ device=x_start.device).long()
+
+ context = {}
+ if prompt and self.cond_stage_model:
+ zeros = (torch.rand(len(prompt)) < self.p_zero).numpy().tolist()
+ prompt = [
+ self.train_n_prompt if zeros[idx] else p
+ for idx, p in enumerate(prompt)
+ ]
+ self.register_probe({'after_prompt': prompt})
+ with torch.autocast(device_type='cuda', enabled=False):
+ if condition_attn is None:
+ context['crossattn'] = self.encode_condition(prompt)
+ else:
+ image_feature = self.encode_condition(condition_attn,
+ type='image')
+ context['crossattn'] = self.encode_condition(prompt,
+ image_feature,
+ type='hybrid')
+ if isinstance(context['crossattn'], dict):
+ attn = context.pop('crossattn')
+ context.update(attn)
+
+ if condition_cat is not None:
+ cat = self.encode_first_stage(condition_cat, **kwargs)
+ if self.concat_no_scale_factor:
+ cat /= self.scale_factor
+ context['concat'] = cat
+
+ if 'hint' in kwargs and kwargs['hint'] is not None:
+ hint = kwargs.pop('hint')
+ context['hint'] = hint
+
+ if self.min_snr_gamma is not None:
+ alphas = self.diffusion.alphas.to(we.device_id)[t]
+ sigmas = self.diffusion.sigmas.pow(2).to(we.device_id)[t]
+ snrs = (alphas / sigmas).clamp(min=1e-20)
+ min_snrs = snrs.clamp(max=self.min_snr_gamma)
+ weights = min_snrs / snrs
+ else:
+ weights = 1
+ self.register_probe({'snrs_weights': weights})
+
+ loss = self.diffusion.loss(x0=x_start,
+ t=t,
+ model=self.model,
+ model_kwargs={'cond': context},
+ noise=noise,
+ **kwargs)
+ loss = loss * weights
+ loss = loss.mean()
+ ret = {'loss': loss, 'probe_data': {'prompt': prompt}}
+ # ret = {'loss': loss, 'probe_data': {'prompt': prompt, 'concat': condition_cat, 'attn': condition_attn}}
+ return ret
+
+ @torch.no_grad()
+ @torch.autocast('cuda', dtype=torch.float16)
+ def forward_test(self,
+ prompt=None,
+ n_prompt=None,
+ sampler='ddim',
+ sample_steps=50,
+ seed=2023,
+ guide_scale=7.5,
+ guide_rescale=0.5,
+ discretization='trailing',
+ run_train_n=True,
+ **kwargs):
+ condition_attn = None
+ if 'condition_attn' in kwargs and kwargs['condition_attn'] is not None:
+ condition_attn = kwargs.pop('condition_attn')
+
+ condition_cat = None
+ if 'condition_cat' in kwargs and kwargs['condition_cat'] is not None:
+ condition_cat = kwargs.pop('condition_cat')
+
+ image = None
+ if 'image' in kwargs and kwargs['image'] is not None:
+ image = kwargs.pop('image')
+
+ ###############################
+ g = torch.Generator(device=we.device_id)
+ seed = seed if seed >= 0 else random.randint(0, 2**32 - 1)
+ g.manual_seed(seed)
+ # torch.manual_seed(seed)
+ num_samples = len(prompt)
+
+ # if 'dynamic_encode_text' in kwargs and kwargs.pop(
+ # 'dynamic_encode_text'):
+ # method = 'dynamic_encode_text'
+ # else:
+ # method = 'encode_text'
+
+ n_prompt = default(n_prompt, [self.default_n_prompt] * len(prompt))
+ assert isinstance(prompt, list) and \
+ isinstance(n_prompt, list) and \
+ len(prompt) == len(n_prompt)
+
+ context = {}
+ with torch.autocast(device_type='cuda', enabled=False):
+ if condition_attn is None:
+ context['crossattn'] = self.encode_condition(prompt)
+ else:
+ image_feature = self.encode_condition(condition_attn,
+ type='image')
+ context['crossattn'] = self.encode_condition(prompt,
+ image_feature,
+ type='hybrid')
+ if isinstance(context['crossattn'], dict):
+ attn = context.pop('crossattn')
+ context.update(attn)
+
+ null_context = {}
+ null_context['crossattn'] = self.encode_condition(n_prompt)
+ if isinstance(null_context['crossattn'], dict):
+ attn = null_context.pop('crossattn')
+ null_context.update(attn)
+
+ if 'hint' in kwargs and kwargs['hint'] is not None:
+ hint = kwargs.pop('hint')
+ context['hint'] = hint
+ null_context['hint'] = hint
+ else:
+ hint = None
+
+ model_kwargs = [{'cond': context}]
+ if condition_cat is not None:
+ cat = self.encode_first_stage(condition_cat, **kwargs)
+ if self.concat_no_scale_factor:
+ cat /= self.scale_factor
+ context['concat'] = cat
+ null_context['concat'] = torch.zeros_like(cat)
+
+ mid_context = {}
+ mid_context.update(null_context)
+ mid_context.update({'concat': cat})
+ model_kwargs.append({'cond': mid_context})
+ model_kwargs.append({'cond': null_context})
+
+ if 'index' in kwargs:
+ kwargs.pop('index')
+ image_size = None
+
+ if 'meta' in kwargs:
+ meta = kwargs.pop('meta')
+ if 'image_size' in meta:
+ h = int(meta['image_size'][0][0])
+ w = int(meta['image_size'][1][0])
+ image_size = [h, w]
+ if 'image_size' in kwargs:
+ image_size = kwargs.pop('image_size')
+ if condition_cat is not None:
+ image_size = condition_cat.shape[2:4]
+ if isinstance(image_size, numbers.Number):
+ image_size = [image_size, image_size]
+ if image_size is None:
+ image_size = [1024, 1024]
+ height, width = image_size
+
+ noise = self.noise_sample(num_samples, height // self.size_factor,
+ width // self.size_factor, g)
+ # UNet use input n_prompt
+ samples = self.diffusion.sample(solver=sampler,
+ noise=noise,
+ model=self.model,
+ model_kwargs=model_kwargs,
+ steps=sample_steps,
+ guide_scale=guide_scale,
+ guide_rescale=guide_rescale,
+ discretization=discretization,
+ show_progress=True,
+ seed=seed,
+ condition_fn=None,
+ clamp=None,
+ percentile=None,
+ t_max=None,
+ t_min=None,
+ discard_penultimate_step=None,
+ return_intermediate=None,
+ **kwargs)
+ x_samples = self.decode_first_stage(samples).float()
+ x_samples = torch.clamp((x_samples + 1.0) / 2.0, min=0.0, max=1.0)
+ if image is not None:
+ x_samples = torch.cat([image, x_samples], dim=-1)
+ if condition_attn is not None:
+ condition_attn = torch.clamp((condition_attn + 1.8) / 4,
+ min=0.0,
+ max=1.0)
+ x_samples = torch.cat([condition_attn, x_samples], dim=-1)
+ if condition_cat is not None:
+ condition_cat = torch.clamp((condition_cat + 1.0) / 2.0,
+ min=0.0,
+ max=1.0)
+ x_samples = torch.cat([condition_cat, x_samples], dim=-1)
+ # UNet use train n_prompt
+ # deleted!
+ train_n_prompt = ['' for _ in prompt]
+ t_x_samples = [None for _ in prompt]
+
+ outputs = list()
+ for i, (p, n_p, tnp, img, t_img) in enumerate(
+ zip(prompt, n_prompt, train_n_prompt, x_samples, t_x_samples)):
+ one_tup = {'prompt': p, 'n_prompt': n_p, 'image': img}
+
+ if hint is not None:
+ one_tup.update({'hint': hint[i]})
+ if t_img is not None:
+ one_tup['train_n_prompt'] = tnp
+ one_tup['train_n_image'] = t_img
+ outputs.append(one_tup)
+
+ return outputs
+
+ def encode_condition(self, data, data2=None, type='text'):
+ assert hasattr(self, 'tokenizer')
+ if type == 'image' and (
+ hasattr(self.cond_stage_model, 'build_new_tokens')
+ and not hasattr(self.cond_stage_model, 'new_tokens_to_ids')):
+ self.cond_stage_model.build_new_tokens(self.tokenizer)
+
+ if type == 'text':
+ text = self.tokenizer(data).to(we.device_id)
+ return self.cond_stage_model.encode_text(text)
+ elif type == 'image':
+ return self.cond_stage_model.encode_image(data)
+ elif type == 'hybrid':
+ text = self.tokenizer(data).to(we.device_id)
+ return self.cond_stage_model.encode_text(text, data2)
+
+ def save_pretrained(self,
+ *args,
+ destination=None,
+ prefix='',
+ keep_vars=False):
+ return self.model.state_dict(*args,
+ destination=destination,
+ keep_vars=keep_vars)
+
+ def save_pretrained_config(self):
+ return copy.deepcopy(self.cfg.COND_STAGE_MODEL.cfg_dict)
+
+ @staticmethod
+ def get_config_template():
+ return dict_to_yaml('MODELS',
+ __class__.__name__,
+ LatentDiffusionEdit.para_dict,
+ set_name=True)
diff --git a/scepter/modules/model/network/ldm/ldm_sce.py b/scepter/modules/model/network/ldm/ldm_sce.py
index e398953..e60a371 100644
--- a/scepter/modules/model/network/ldm/ldm_sce.py
+++ b/scepter/modules/model/network/ldm/ldm_sce.py
@@ -5,7 +5,6 @@ import copy
import torch
import torch.nn as nn
import torchvision.transforms as TT
-
from scepter.modules.annotator.registry import ANNOTATORS
from scepter.modules.model.registry import MODELS, TUNERS
from scepter.modules.utils.config import Config, dict_to_yaml
diff --git a/scepter/modules/model/network/ldm/ldm_xl.py b/scepter/modules/model/network/ldm/ldm_xl.py
index 0730670..502ca11 100644
--- a/scepter/modules/model/network/ldm/ldm_xl.py
+++ b/scepter/modules/model/network/ldm/ldm_xl.py
@@ -6,7 +6,6 @@ from collections import OrderedDict
import torch
import torch.nn.functional as F
-
from scepter.modules.model.network.ldm import LatentDiffusion
from scepter.modules.model.registry import BACKBONES, MODELS
from scepter.modules.model.utils.basic_utils import default
diff --git a/scepter/modules/model/network/train_module.py b/scepter/modules/model/network/train_module.py
index b13439a..2248c92 100644
--- a/scepter/modules/model/network/train_module.py
+++ b/scepter/modules/model/network/train_module.py
@@ -4,7 +4,6 @@
from abc import ABCMeta, abstractmethod
import torch
-
from scepter.modules.model.base_model import BaseModel
from scepter.modules.utils.config import dict_to_yaml
diff --git a/scepter/modules/model/tokenizer/tokenizer.py b/scepter/modules/model/tokenizer/tokenizer.py
index 9a03a08..92c8d86 100644
--- a/scepter/modules/model/tokenizer/tokenizer.py
+++ b/scepter/modules/model/tokenizer/tokenizer.py
@@ -1,14 +1,13 @@
# -*- coding: utf-8 -*-
# Copyright (c) Alibaba, Inc. and its affiliates.
import open_clip
-from transformers import CLIPTokenizer as transformer_clip_tokenizer
-
from scepter.modules.model.registry import TOKENIZERS
from scepter.modules.model.tokenizer import BaseTokenizer
from scepter.modules.model.tokenizer.tokenizer_component import (
basic_clean, whitespace_clean)
from scepter.modules.utils.config import dict_to_yaml
from scepter.modules.utils.file_system import FS
+from transformers import CLIPTokenizer as transformer_clip_tokenizer
@TOKENIZERS.register_class()
diff --git a/scepter/modules/model/tuner/sce/scetuning.py b/scepter/modules/model/tuner/sce/scetuning.py
index 667aa6e..827b15d 100644
--- a/scepter/modules/model/tuner/sce/scetuning.py
+++ b/scepter/modules/model/tuner/sce/scetuning.py
@@ -4,7 +4,6 @@ from collections import OrderedDict
import torch
import torch.nn as nn
-
from scepter.modules.model.registry import TUNERS
from scepter.modules.model.tuner.base_tuner import BaseTuner
from scepter.modules.model.tuner.tuner_component import conv_nd, zero_module
diff --git a/scepter/modules/model/tuner/sce/scetuning_component.py b/scepter/modules/model/tuner/sce/scetuning_component.py
index c5520e6..acf77c0 100644
--- a/scepter/modules/model/tuner/sce/scetuning_component.py
+++ b/scepter/modules/model/tuner/sce/scetuning_component.py
@@ -3,7 +3,6 @@
import math
import torch.nn as nn
-
from scepter.modules.model.tuner.tuner_utils import (choose_weight_type,
get_weight_value)
diff --git a/scepter/modules/opt/lr_schedulers/define_schedulers.py b/scepter/modules/opt/lr_schedulers/define_schedulers.py
index b03bab5..764c9da 100644
--- a/scepter/modules/opt/lr_schedulers/define_schedulers.py
+++ b/scepter/modules/opt/lr_schedulers/define_schedulers.py
@@ -1,10 +1,9 @@
# -*- coding: utf-8 -*-
# Copyright (c) Alibaba, Inc. and its affiliates.
-from torch.optim.lr_scheduler import _LRScheduler
-
from scepter.modules.opt.lr_schedulers.base_scheduler import BaseScheduler
from scepter.modules.opt.lr_schedulers.registry import LR_SCHEDULERS
from scepter.modules.utils.config import dict_to_yaml
+from torch.optim.lr_scheduler import _LRScheduler
class PolyLR(_LRScheduler):
diff --git a/scepter/modules/opt/lr_schedulers/official_schedulers.py b/scepter/modules/opt/lr_schedulers/official_schedulers.py
index 8b304db..70160c6 100644
--- a/scepter/modules/opt/lr_schedulers/official_schedulers.py
+++ b/scepter/modules/opt/lr_schedulers/official_schedulers.py
@@ -1,7 +1,6 @@
# -*- coding: utf-8 -*-
# Copyright (c) Alibaba, Inc. and its affiliates.
import torch.optim.lr_scheduler as lr_sch
-
from scepter.modules.opt.lr_schedulers.base_scheduler import BaseScheduler
from scepter.modules.opt.lr_schedulers.registry import LR_SCHEDULERS
from scepter.modules.utils.config import dict_to_yaml
diff --git a/scepter/modules/opt/lr_schedulers/warmup.py b/scepter/modules/opt/lr_schedulers/warmup.py
index 97f30d0..f8ffe31 100644
--- a/scepter/modules/opt/lr_schedulers/warmup.py
+++ b/scepter/modules/opt/lr_schedulers/warmup.py
@@ -3,11 +3,10 @@
import math
import torch.optim.lr_scheduler as lr_scheduler
-from torch.optim.lr_scheduler import _LRScheduler
-
from scepter.modules.opt.lr_schedulers import LR_SCHEDULERS
from scepter.modules.opt.lr_schedulers.base_scheduler import BaseScheduler
from scepter.modules.utils.config import dict_to_yaml
+from torch.optim.lr_scheduler import _LRScheduler
@LR_SCHEDULERS.register_class()
diff --git a/scepter/modules/opt/optimizers/official_optimizers.py b/scepter/modules/opt/optimizers/official_optimizers.py
index 45909a4..f71aee1 100644
--- a/scepter/modules/opt/optimizers/official_optimizers.py
+++ b/scepter/modules/opt/optimizers/official_optimizers.py
@@ -2,7 +2,6 @@
# Copyright (c) Alibaba, Inc. and its affiliates.
import torch.optim as optim
-
from scepter.modules.opt.optimizers.base_optimizer import BaseOptimize
from scepter.modules.opt.optimizers.registry import OPTIMIZERS
from scepter.modules.utils.config import dict_to_yaml
diff --git a/scepter/modules/solver/base_solver.py b/scepter/modules/solver/base_solver.py
index c7b49ae..9fd18c9 100644
--- a/scepter/modules/solver/base_solver.py
+++ b/scepter/modules/solver/base_solver.py
@@ -8,8 +8,6 @@ from abc import ABCMeta
from collections import OrderedDict, defaultdict
import torch
-from torch.nn.parallel import DistributedDataParallel
-
from scepter.modules.data.dataset import DATASETS
from scepter.modules.model.base_model import BaseModel
from scepter.modules.model.metric.registry import METRICS
@@ -25,6 +23,7 @@ from scepter.modules.utils.file_system import FS
from scepter.modules.utils.logger import get_logger, init_logger
from scepter.modules.utils.probe import (ProbeData, merge_gathered_probe,
register_data)
+from torch.nn.parallel import DistributedDataParallel
try:
import pytorch_lightning as pl
diff --git a/scepter/modules/solver/diffusion_solver.py b/scepter/modules/solver/diffusion_solver.py
index 4997a81..03fba64 100644
--- a/scepter/modules/solver/diffusion_solver.py
+++ b/scepter/modules/solver/diffusion_solver.py
@@ -4,16 +4,11 @@ import copy
import os
from collections import OrderedDict, defaultdict
+from tqdm import tqdm
+
import numpy as np
import torch
import torch.cuda.amp as amp
-from torch.distributed.fsdp import (BackwardPrefetch, CPUOffload,
- FullStateDictConfig,
- FullyShardedDataParallel, MixedPrecision,
- ShardingStrategy, StateDictType)
-from torch.nn.parallel import DistributedDataParallel
-from tqdm import tqdm
-
from scepter.modules.data.dataset import DATASETS
from scepter.modules.opt.lr_schedulers import LR_SCHEDULERS
from scepter.modules.opt.optimizers import OPTIMIZERS
@@ -23,6 +18,11 @@ from scepter.modules.utils.config import Config, dict_to_yaml
from scepter.modules.utils.data import transfer_data_to_cuda
from scepter.modules.utils.distribute import we
from scepter.modules.utils.probe import ProbeData
+from torch.distributed.fsdp import (BackwardPrefetch, CPUOffload,
+ FullStateDictConfig,
+ FullyShardedDataParallel, MixedPrecision,
+ ShardingStrategy, StateDictType)
+from torch.nn.parallel import DistributedDataParallel
sharding_strategy_map = {
'full_shard': ShardingStrategy.FULL_SHARD,
@@ -127,13 +127,7 @@ class LatentDiffusionSolver(BaseSolver):
self.construct_model()
self.construct_metrics()
self.model_to_device()
- if 'train' in self.datas and self.cfg.have('OPTIMIZER'):
- if we.world_size > 1:
- all_batch_size = self.datas['train'].batch_size * we.world_size
- else:
- all_batch_size = self.datas['train'].batch_size
- self.cfg.OPTIMIZER.LEARNING_RATE *= all_batch_size
- self.cfg.OPTIMIZER.LEARNING_RATE /= 640
+ self.init_lr()
self.init_opti()
def construct_hook(self):
@@ -184,6 +178,16 @@ class LatentDiffusionSolver(BaseSolver):
def model_to_device(self):
self.model = self.model.to(we.device_id)
+ def init_lr(self):
+ rescale_lr = self.cfg.get('RESCALE_LR', True)
+ if rescale_lr and 'train' in self.datas and self.cfg.have('OPTIMIZER'):
+ if we.world_size > 1:
+ all_batch_size = self.datas['train'].batch_size * we.world_size
+ else:
+ all_batch_size = self.datas['train'].batch_size
+ self.cfg.OPTIMIZER.LEARNING_RATE *= all_batch_size
+ self.cfg.OPTIMIZER.LEARNING_RATE /= 640
+
def init_opti(self):
if hasattr(self.model, 'ignored_parameters'):
train_params, ignored_params = self.model.parameters(
@@ -367,6 +371,7 @@ class LatentDiffusionSolver(BaseSolver):
if 'eval' in self._mode_set and (self.eval_interval > 0
and step == self.max_steps - 1):
self.run_eval()
+ self.train_mode()
self.after_all_iter(self.hooks_dict[self._mode])
@torch.no_grad()
diff --git a/scepter/modules/solver/hooks/backward.py b/scepter/modules/solver/hooks/backward.py
index 08e5e8e..d9c087a 100644
--- a/scepter/modules/solver/hooks/backward.py
+++ b/scepter/modules/solver/hooks/backward.py
@@ -3,7 +3,6 @@
import warnings
import torch
-
from scepter.modules.solver.hooks.hook import Hook
from scepter.modules.solver.hooks.registry import HOOKS
from scepter.modules.utils.config import dict_to_yaml
diff --git a/scepter/modules/solver/hooks/checkpoint.py b/scepter/modules/solver/hooks/checkpoint.py
index ef3f674..856ceb7 100644
--- a/scepter/modules/solver/hooks/checkpoint.py
+++ b/scepter/modules/solver/hooks/checkpoint.py
@@ -3,19 +3,17 @@
import json
import os
import os.path as osp
-import shutil
import sys
import warnings
import torch
import torch.distributed as du
-from swift import push_to_hub
-
from scepter.modules.solver.hooks.hook import Hook
from scepter.modules.solver.hooks.registry import HOOKS
from scepter.modules.utils.config import dict_to_yaml
from scepter.modules.utils.distribute import we
from scepter.modules.utils.file_system import FS
+from swift import push_to_hub
_DEFAULT_CHECKPOINT_PRIORITY = 300
@@ -51,10 +49,8 @@ class CheckpointHook(Hook):
'If save the best model, which order should be sorted, +/-!'
},
'DISABLE_SNAPSHOT': {
- 'value':
- False,
- 'description':
- 'Skip to save snapshot checkpoint.'
+ 'value': False,
+ 'description': 'Skip to save snapshot checkpoint.'
}
}]
@@ -223,47 +219,13 @@ class CheckpointHook(Hook):
torch.save(checkpoint['pre_state_dict'], f)
client.put_object_from_local_file(local_file, save_path)
- def create_or_update_model_card(self, model, output_dir: str):
- """
- Updates or create the model card.
- """
- if not os.path.exists(os.path.join(output_dir, 'README.md')):
- lines = []
- else:
- with open(os.path.join(output_dir, 'README.md'), 'r') as f:
- lines = f.readlines()
-
- # write the lines back to README.md
- with open(os.path.join(output_dir, 'README.md'), 'w') as f:
- f.writelines(lines)
-
def after_all_iter(self, solver):
if we.rank == 0:
if self.push_to_hub and self.last_ckpt:
- if os.path.isfile(self.last_ckpt):
- base_dir = os.path.dirname(self.last_ckpt)
- base_file = os.path.basename(self.last_ckpt)
- save_path = os.path.join(base_dir, 'after_all_iter')
- os.makedirs(save_path)
- self.create_or_update_model_card(solver.model, save_path)
- try:
- os.link(self.last_ckpt,
- os.path.join(save_path, base_file))
- except OSError:
- shutil.copyfile(self.last_ckpt,
- os.path.join(save_path, base_file))
-
- push_to_hub(repo_name=self.hub_model_id,
- output_dir=self.last_ckpt,
- private=self.hub_private)
- current_dir = os.path.dirname(__file__)
- base_path = os.sep.join(current_dir.split(os.sep)[:-4])
- base_path = os.path.join(base_path, 'config')
- file_name = self.hub_model_id.replace(os.sep, '_')
- content = {'name': self.hub_model_id}
- import json
- with open(os.path.join(base_path, file_name), 'w') as f:
- json.dump(content, f)
+ with FS.get_dir_to_local_dir(self.last_ckpt) as local_dir:
+ push_to_hub(repo_name=self.hub_model_id,
+ output_dir=local_dir,
+ private=self.hub_private)
@staticmethod
def get_config_template():
diff --git a/scepter/modules/solver/hooks/data_probe.py b/scepter/modules/solver/hooks/data_probe.py
index b51aaeb..b0de316 100644
--- a/scepter/modules/solver/hooks/data_probe.py
+++ b/scepter/modules/solver/hooks/data_probe.py
@@ -4,7 +4,6 @@ import json
import os
import torch
-
from scepter.modules.solver.hooks.hook import Hook
from scepter.modules.solver.hooks.registry import HOOKS
from scepter.modules.utils.config import dict_to_yaml
@@ -34,6 +33,7 @@ class ProbeDataHook(Hook):
self.save_name_prefix = cfg.get('SAVE_NAME_PREFIX', 'step')
self.save_probe_prefix = cfg.get('SAVE_PROBE_PREFIX', None)
self.save_last = cfg.get('SAVE_LAST', False)
+ self.save_image_postfix = cfg.get('SAVE_IMAGE_POSTFIX', 'jpg')
def before_all_iter(self, solver):
pass
@@ -58,7 +58,7 @@ class ProbeDataHook(Hook):
ret_prefix = os.path.join(
save_folder,
k.replace('/', '_') + f'_step_{solver.total_iter}')
- ret_one = v.to_log(ret_prefix)
+ ret_one = v.to_log(ret_prefix, self.save_image_postfix)
if (isinstance(ret_one, list)
or isinstance(ret_one, dict)) and len(ret_one) < 1:
continue
@@ -90,7 +90,7 @@ class ProbeDataHook(Hook):
ret_prefix = os.path.join(
save_folder,
k.replace('/', '_') + f'_step_{step}')
- ret_one = v.to_log(ret_prefix)
+ ret_one = v.to_log(ret_prefix, self.save_image_postfix)
if (isinstance(ret_one, list)
or isinstance(ret_one, dict)) and len(ret_one) < 1:
continue
diff --git a/scepter/modules/solver/hooks/ema.py b/scepter/modules/solver/hooks/ema.py
index 0d3b042..e3e5711 100644
--- a/scepter/modules/solver/hooks/ema.py
+++ b/scepter/modules/solver/hooks/ema.py
@@ -1,12 +1,12 @@
# -*- coding: utf-8 -*-
+# Copyright (c) Alibaba, Inc. and its affiliates.
import torch
-from torch.distributed.fsdp import (FullStateDictConfig,
- FullyShardedDataParallel, StateDictType)
-
from scepter.modules.solver.hooks.hook import Hook
from scepter.modules.solver.hooks.registry import HOOKS
from scepter.modules.utils.config import dict_to_yaml
from scepter.modules.utils.distribute import we
+from torch.distributed.fsdp import (FullStateDictConfig,
+ FullyShardedDataParallel, StateDictType)
@HOOKS.register_class()
diff --git a/scepter/modules/solver/hooks/log.py b/scepter/modules/solver/hooks/log.py
index 4ea3b4c..2ef47f1 100644
--- a/scepter/modules/solver/hooks/log.py
+++ b/scepter/modules/solver/hooks/log.py
@@ -11,7 +11,6 @@ from typing import Optional
import numpy as np
import torch
-
from scepter.modules.solver.hooks.hook import Hook
from scepter.modules.solver.hooks.registry import HOOKS
from scepter.modules.utils.config import dict_to_yaml
diff --git a/scepter/modules/solver/hooks/safetensors.py b/scepter/modules/solver/hooks/safetensors.py
index 5abfb4d..73925f0 100644
--- a/scepter/modules/solver/hooks/safetensors.py
+++ b/scepter/modules/solver/hooks/safetensors.py
@@ -4,7 +4,6 @@ import os.path as osp
import torch
from safetensors.torch import save_file
-
from scepter.modules.solver.hooks.hook import Hook
from scepter.modules.solver.hooks.registry import HOOKS
from scepter.modules.utils.config import dict_to_yaml
diff --git a/scepter/modules/solver/train_val_solver.py b/scepter/modules/solver/train_val_solver.py
index 25e65b6..3e0af6f 100644
--- a/scepter/modules/solver/train_val_solver.py
+++ b/scepter/modules/solver/train_val_solver.py
@@ -4,7 +4,6 @@ import os.path as osp
from collections import OrderedDict, defaultdict
import torch
-
from scepter.modules.solver.base_solver import BaseSolver
from scepter.modules.solver.registry import SOLVERS
from scepter.modules.utils.config import dict_to_yaml
diff --git a/scepter/modules/transform/augmention.py b/scepter/modules/transform/augmention.py
index c419443..89926b3 100644
--- a/scepter/modules/transform/augmention.py
+++ b/scepter/modules/transform/augmention.py
@@ -5,14 +5,13 @@ import random
# https://github.com/TengdaHan/DPC/blob/master/utils/augmentation.py
import torch
-from torchvision.transforms import Compose, Lambda
-
from scepter.modules.transform.image import ImageTransform
from scepter.modules.transform.registry import TRANSFORMS
from scepter.modules.transform.utils import (BACKEND_CV2, BACKEND_PILLOW,
BACKEND_TORCHVISION,
TORCHVISION_CAPABILITY)
from scepter.modules.utils.config import dict_to_yaml
+from torchvision.transforms import Compose, Lambda
if TORCHVISION_CAPABILITY:
BACKENDS = (BACKEND_PILLOW, BACKEND_CV2, BACKEND_TORCHVISION)
diff --git a/scepter/modules/transform/image.py b/scepter/modules/transform/image.py
index fea07d0..7208bb9 100644
--- a/scepter/modules/transform/image.py
+++ b/scepter/modules/transform/image.py
@@ -8,7 +8,6 @@ import opencv_transforms.transforms as cv2_transforms
import torch
import torchvision.transforms as transforms
import torchvision.transforms.functional as TF
-
from scepter.modules.transform.registry import TRANSFORMS
from scepter.modules.transform.utils import (
BACKEND_CV2, BACKEND_PILLOW, BACKEND_TORCHVISION, INPUT_CV2_TYPE_WARNING,
diff --git a/scepter/modules/transform/io.py b/scepter/modules/transform/io.py
index b49cc02..76c7d34 100644
--- a/scepter/modules/transform/io.py
+++ b/scepter/modules/transform/io.py
@@ -7,7 +7,6 @@ import cv2
import numpy as np
import torch
from PIL import Image, ImageFile
-
from scepter.modules.transform.registry import TRANSFORMS
from scepter.modules.utils.config import dict_to_yaml
from scepter.modules.utils.distribute import we
diff --git a/scepter/modules/transform/io_video.py b/scepter/modules/transform/io_video.py
index b0a7170..267c39b 100644
--- a/scepter/modules/transform/io_video.py
+++ b/scepter/modules/transform/io_video.py
@@ -8,7 +8,6 @@ import threading
import numpy as np
import torch
-
from scepter.modules.transform import LoadImageFromFile
from scepter.modules.transform.registry import TRANSFORMS
from scepter.modules.utils.config import dict_to_yaml
diff --git a/scepter/modules/transform/tensor.py b/scepter/modules/transform/tensor.py
index ea281e2..044ff60 100644
--- a/scepter/modules/transform/tensor.py
+++ b/scepter/modules/transform/tensor.py
@@ -4,7 +4,6 @@
import numpy as np
import torch
from PIL import Image
-
from scepter.modules.transform.registry import TRANSFORMS
from scepter.modules.utils.config import dict_to_yaml
from scepter.modules.utils.distribute import we
diff --git a/scepter/modules/transform/transform_xl.py b/scepter/modules/transform/transform_xl.py
index b3ba963..ec95ea9 100644
--- a/scepter/modules/transform/transform_xl.py
+++ b/scepter/modules/transform/transform_xl.py
@@ -7,7 +7,6 @@ import opencv_transforms.functional as cv2_TF
import torch
import torchvision.transforms.functional as TF
from PIL.Image import Image
-
from scepter.modules.transform import TRANSFORMS, ImageTransform
from scepter.modules.transform.image import BACKENDS
from scepter.modules.transform.utils import BACKEND_PILLOW, BACKEND_TORCHVISION
diff --git a/scepter/modules/transform/utils.py b/scepter/modules/transform/utils.py
index f842915..f1d7827 100644
--- a/scepter/modules/transform/utils.py
+++ b/scepter/modules/transform/utils.py
@@ -1,9 +1,10 @@
# -*- coding: utf-8 -*-
# Copyright (c) Alibaba, Inc. and its affiliates.
+from packaging import version
+
import cv2
import numpy as np
import torch
-from packaging import version
from PIL import Image
from torchvision.version import __version__ as tv_version
diff --git a/scepter/modules/transform/video.py b/scepter/modules/transform/video.py
index af5d00a..24212fa 100644
--- a/scepter/modules/transform/video.py
+++ b/scepter/modules/transform/video.py
@@ -3,18 +3,18 @@
import random
+from packaging import version
+
import numpy as np
import torch
import torchvision.transforms.functional as functional
import torchvision.transforms.transforms as transforms
-from packaging import version
-from torchvision.version import __version__ as tv_version
-
from scepter.modules.transform.registry import TRANSFORMS
from scepter.modules.transform.utils import (BACKEND_TORCHVISION,
INTERPOLATION_STYLE, is_tensor)
# torchvision.transform._transforms_video is deprecated since torchvision 0.10.0, use transform instead
from scepter.modules.utils.config import dict_to_yaml
+from torchvision.version import __version__ as tv_version
use_video_transforms = version.parse(tv_version) < version.parse('0.10.0')
diff --git a/scepter/modules/utils/__init__.py b/scepter/modules/utils/__init__.py
index c243788..8e97972 100644
--- a/scepter/modules/utils/__init__.py
+++ b/scepter/modules/utils/__init__.py
@@ -1,3 +1,4 @@
# -*- coding: utf-8 -*-
# Copyright (c) Alibaba, Inc. and its affiliates.
-from scepter.modules.utils import config, distribute, file_clients, file_system
+from scepter.modules.utils import (config, distribute, file_clients,
+ file_system, module_transform)
diff --git a/scepter/modules/utils/config.py b/scepter/modules/utils/config.py
index a109fdb..a498c74 100644
--- a/scepter/modules/utils/config.py
+++ b/scepter/modules/utils/config.py
@@ -5,6 +5,7 @@ import copy
import json
import numbers
import os
+import re
import sys
import yaml
@@ -207,6 +208,21 @@ def dict_to_yaml(module_name, name, json_config, set_name=False):
return yaml_str
+pattern = re.compile('.*?(\${\w+}).*?') # noqa
+
+
+def env_var_constructor(loader, node):
+ value = loader.construct_scalar(node)
+ for item in pattern.findall(value):
+ var_name = item.strip('${}')
+ value = value.replace(item, os.getenv(var_name, item))
+ return value
+
+
+yaml.SafeLoader.add_constructor('$', env_var_constructor)
+yaml.SafeLoader.add_implicit_resolver('$', pattern, None)
+
+
def _parse_args(parser):
if parser is None:
parser = argparse.ArgumentParser(
diff --git a/scepter/modules/utils/data.py b/scepter/modules/utils/data.py
index b4e734a..c5e75dd 100644
--- a/scepter/modules/utils/data.py
+++ b/scepter/modules/utils/data.py
@@ -1,8 +1,9 @@
# -*- coding: utf-8 -*-
# Copyright (c) Alibaba, Inc. and its affiliates.
-
+import base64
from collections import OrderedDict
+import numpy as np
import torch
@@ -86,3 +87,17 @@ def transfer_data_to_cuda(data_map: dict) -> dict:
else:
ret[key] = value
return ret
+
+
+def np_to_base64(np_array):
+ shape = list(np_array.shape)
+ dtype = str(np_array.dtype)
+ np_str = np_array.tostring()
+ np_base64 = base64.b64encode(np_str).decode()
+ return {'array': np_base64, 'shape': shape, 'dtype': dtype}
+
+
+def base64_to_np(base64_str, shape, dtype=np.float32):
+ base64_str = base64.b64decode(base64_str)
+ np_array = np.frombuffer(base64_str, dtype).reshape(shape)
+ return np_array
diff --git a/scepter/modules/utils/distribute.py b/scepter/modules/utils/distribute.py
index 3fc81dc..19d5671 100644
--- a/scepter/modules/utils/distribute.py
+++ b/scepter/modules/utils/distribute.py
@@ -10,7 +10,6 @@ from collections import OrderedDict
import numpy as np
import torch
import torch.distributed as dist
-
from scepter.modules.utils.model import StdMsg
__all__ = [
@@ -447,8 +446,8 @@ class Workenv(object):
environ_str += f'Current pod have {self.device_count} devices!\n'
environ_str += f'Current task executes on device {self.device_id}!\n'
environ_str += f"Current task's global rank is {self.rank} \n"
- environ_str += f"Current task's data online is set {self.data_online}"
- environ_str += f"Current task's share storage is set {self.share_storage}"
+ environ_str += f"Current task's data online is set {self.data_online} \n"
+ environ_str += f"Current task's share storage is set {self.share_storage} \n"
environ_str += f"Current task's global seed is set {self.seed}"
return environ_str
diff --git a/scepter/modules/utils/export_model.py b/scepter/modules/utils/export_model.py
index 679e3ef..9f43750 100644
--- a/scepter/modules/utils/export_model.py
+++ b/scepter/modules/utils/export_model.py
@@ -6,9 +6,8 @@ from io import BytesIO
import onnx
import onnxruntime
import torch
-from torch.onnx import OperatorExportTypes
-
from scepter.modules.utils.distribute import we
+from torch.onnx import OperatorExportTypes
type_map = {
'float32': torch.float32,
diff --git a/scepter/modules/utils/file_clients/aliyun_oss_fs.py b/scepter/modules/utils/file_clients/aliyun_oss_fs.py
index 622710c..4c21ffb 100644
--- a/scepter/modules/utils/file_clients/aliyun_oss_fs.py
+++ b/scepter/modules/utils/file_clients/aliyun_oss_fs.py
@@ -14,11 +14,11 @@ import time
import warnings
from typing import Optional
+from tqdm import tqdm
+
import oss2
from oss2 import determine_part_size
from oss2.models import PartInfo
-from tqdm import tqdm
-
from scepter.modules.utils.config import dict_to_yaml
from scepter.modules.utils.directory import get_md5
from scepter.modules.utils.file_clients.base_fs import BaseFs
@@ -451,8 +451,14 @@ class AliyunOssFs(BaseFs):
else:
return False
- def check_folder(self, check_file):
+ def check_folder(self, check_file, sign_key=None):
meta_dict = json.load(open(check_file, 'r'))
+ if sign_key in meta_dict:
+ etag, size = self.get_meta(sign_key)
+ if not etag == meta_dict[sign_key]:
+ return False
+ else:
+ return True
for key, v in meta_dict.items():
etag, size = self.get_meta(key)
if not etag == v:
@@ -567,6 +573,7 @@ class AliyunOssFs(BaseFs):
wait_finish=False,
timeout=3600,
multi_thread=False,
+ sign_key=None,
worker_id=-1) -> Optional[str]:
if not self.isdir(target_path):
self.logger.info(
@@ -586,7 +593,8 @@ class AliyunOssFs(BaseFs):
from scepter.modules.utils.distribute import we
wait_times = timeout
while wait_times > 0 and not (osp.exists(check_file)
- and self.check_folder(check_file)):
+ and self.check_folder(
+ check_file, sign_key=sign_key)):
if we.share_storage and we.rank == 0:
break
if not we.share_storage and (we.device_id == 0
@@ -599,7 +607,8 @@ class AliyunOssFs(BaseFs):
)
time.sleep(5)
wait_times -= 1
- if osp.exists(check_file) and self.check_folder(check_file):
+ if osp.exists(check_file) and self.check_folder(check_file,
+ sign_key=sign_key):
return local_path
if osp.exists(check_file):
@@ -941,10 +950,11 @@ class AliyunOssFs(BaseFs):
target_path,
set_public=False,
lifecycle=3600 * 100,
+ skip_check=False,
slash_safe=True):
key = osp.relpath(target_path, self._prefix)
_bucket = self._init_bucket()
- if not _bucket.object_exists(key):
+ if not skip_check and not _bucket.object_exists(key):
self.logger.info(f'{target_path} is not exists!')
return None
retry = 0
diff --git a/scepter/modules/utils/file_clients/http_fs.py b/scepter/modules/utils/file_clients/http_fs.py
index a6ad579..fadc133 100644
--- a/scepter/modules/utils/file_clients/http_fs.py
+++ b/scepter/modules/utils/file_clients/http_fs.py
@@ -128,10 +128,15 @@ class HttpFs(BaseFs):
wait_finish=False,
multi_thread=False,
timeout=3600,
+ sign_key=None,
worker_id=0) -> Optional[str]:
raise NotImplementedError
- def get_url(self, target_path, set_public=False, lifecycle=3600 * 100):
+ def get_url(self,
+ target_path,
+ set_public=False,
+ skip_check=False,
+ lifecycle=3600 * 100):
return target_path
def exists(self, target_path) -> bool:
diff --git a/scepter/modules/utils/file_clients/huggingface_fs.py b/scepter/modules/utils/file_clients/huggingface_fs.py
index a7375cf..d51dc4d 100644
--- a/scepter/modules/utils/file_clients/huggingface_fs.py
+++ b/scepter/modules/utils/file_clients/huggingface_fs.py
@@ -85,6 +85,7 @@ class HuggingfaceFs(BaseFs):
local_path=None,
wait_finish=False,
timeout=3600,
+ sign_key=None,
worker_id=-1) -> Optional[str]:
from huggingface_hub import snapshot_download
assert target_path.startswith(self.get_prefix())
@@ -181,7 +182,11 @@ class HuggingfaceFs(BaseFs):
delimiter=None) -> (Union[bytes, str, None], Optional[int]):
raise NotImplementedError
- def get_url(self, target_path, set_public=False, lifecycle=3600 * 100):
+ def get_url(self,
+ target_path,
+ set_public=False,
+ skip_check=False,
+ lifecycle=3600 * 100):
return target_path
def exists(self, target_path) -> bool:
diff --git a/scepter/modules/utils/file_clients/local_fs.py b/scepter/modules/utils/file_clients/local_fs.py
index 8a97443..7be8a6e 100644
--- a/scepter/modules/utils/file_clients/local_fs.py
+++ b/scepter/modules/utils/file_clients/local_fs.py
@@ -87,6 +87,7 @@ class LocalFs(BaseFs):
wait_finish=False,
multi_thread=False,
timeout=3600,
+ sign_key=None,
worker_id=0) -> Optional[str]:
if not self.isdir(target_path):
self.logger.info(
@@ -255,7 +256,11 @@ class LocalFs(BaseFs):
return False
return True
- def get_url(self, target_path, set_public=False, lifecycle=3600 * 100):
+ def get_url(self,
+ target_path,
+ set_public=False,
+ skip_check=False,
+ lifecycle=3600 * 100):
return target_path
def make_dir(self, target_dir) -> bool:
diff --git a/scepter/modules/utils/file_clients/modelscope_fs.py b/scepter/modules/utils/file_clients/modelscope_fs.py
index f71233c..eb152e8 100644
--- a/scepter/modules/utils/file_clients/modelscope_fs.py
+++ b/scepter/modules/utils/file_clients/modelscope_fs.py
@@ -94,6 +94,7 @@ class ModelscopeFs(BaseFs):
wait_finish=False,
multi_thread=False,
timeout=3600,
+ sign_key=None,
worker_id=-1) -> Optional[str]:
from modelscope.hub.snapshot_download import snapshot_download
assert target_path.startswith(self.get_prefix())
@@ -199,7 +200,11 @@ class ModelscopeFs(BaseFs):
delimiter=None) -> (Union[bytes, str, None], Optional[int]):
raise NotImplementedError
- def get_url(self, target_path, set_public=False, lifecycle=3600 * 100):
+ def get_url(self,
+ target_path,
+ set_public=False,
+ skip_check=False,
+ lifecycle=3600 * 100):
return target_path
def exists(self, target_path) -> bool:
diff --git a/scepter/modules/utils/file_system.py b/scepter/modules/utils/file_system.py
index 042bfac..6fc2313 100644
--- a/scepter/modules/utils/file_system.py
+++ b/scepter/modules/utils/file_system.py
@@ -131,6 +131,7 @@ class FileSystem(object):
wait_finish=False,
timeout=3600,
multi_thread=False,
+ sign_key=None,
worker_id=0):
with self.get_fs_client(target_path) as client:
local_path = client.get_dir_to_local_dir(target_path,
@@ -138,6 +139,7 @@ class FileSystem(object):
wait_finish=wait_finish,
timeout=timeout,
multi_thread=multi_thread,
+ sign_key=sign_key,
worker_id=worker_id)
if local_path is None:
raise ReadException(
@@ -247,10 +249,15 @@ class FileSystem(object):
f'Failed to fetch {target_path} to {local_path}')
return IoString(local_path)
- def get_url(self, target_path, set_public=False, lifecycle=3600 * 100):
+ def get_url(self,
+ target_path,
+ set_public=False,
+ skip_check=False,
+ lifecycle=3600 * 100):
with self.get_fs_client(target_path) as client:
output_url = client.get_url(target_path,
set_public=set_public,
+ skip_check=skip_check,
lifecycle=lifecycle)
return output_url
@@ -258,7 +265,7 @@ class FileSystem(object):
with self.get_fs_client(target_path) as client:
local_data = client.get_object(target_path)
if local_data is None:
- return IoBytes(None)
+ return IoBytes(b'')
return IoBytes(local_data)
def put_object(self, local_data, target_path):
diff --git a/scepter/modules/utils/logger.py b/scepter/modules/utils/logger.py
index 7a5648d..caf51b3 100644
--- a/scepter/modules/utils/logger.py
+++ b/scepter/modules/utils/logger.py
@@ -9,7 +9,6 @@ from collections import OrderedDict
import numpy as np
import torch
-
from scepter.modules.utils.distribute import get_dist_info
diff --git a/scepter/modules/utils/module_transform.py b/scepter/modules/utils/module_transform.py
new file mode 100644
index 0000000..d89ae28
--- /dev/null
+++ b/scepter/modules/utils/module_transform.py
@@ -0,0 +1,1195 @@
+# -*- coding: utf-8 -*-
+# Copyright (c) Alibaba, Inc. and its affiliates.
+# codes borrowed from https://github.com/kohya-ss/sd-scripts
+NUM_TRAIN_TIMESTEPS = 1000
+BETA_START = 0.00085
+BETA_END = 0.0120
+
+UNET_PARAMS_MODEL_CHANNELS = 320
+UNET_PARAMS_CHANNEL_MULT = [1, 2, 4, 4]
+UNET_PARAMS_ATTENTION_RESOLUTIONS = [4, 2, 1]
+UNET_PARAMS_IMAGE_SIZE = 64 # fixed from old invalid value `32`
+UNET_PARAMS_IN_CHANNELS = 4
+UNET_PARAMS_OUT_CHANNELS = 4
+UNET_PARAMS_NUM_RES_BLOCKS = 2
+UNET_PARAMS_CONTEXT_DIM = 768
+UNET_PARAMS_NUM_HEADS = 8
+
+VAE_PARAMS_Z_CHANNELS = 4
+VAE_PARAMS_RESOLUTION = 256
+VAE_PARAMS_IN_CHANNELS = 3
+VAE_PARAMS_OUT_CH = 3
+VAE_PARAMS_CH = 128
+VAE_PARAMS_CH_MULT = [1, 2, 4, 4]
+VAE_PARAMS_NUM_RES_BLOCKS = 2
+
+# V2
+V2_UNET_PARAMS_ATTENTION_HEAD_DIM = [5, 10, 20, 20]
+V2_UNET_PARAMS_CONTEXT_DIM = 1024
+
+DIFFUSERS_REF_MODEL_ID_V1 = 'runwayml/stable-diffusion-v1-5'
+DIFFUSERS_REF_MODEL_ID_V2 = 'stabilityai/stable-diffusion-2-1'
+
+CIVITAI_TO_SCEPTER_PARAMS_DICT = {
+ 'down_blocks_0_attentions_0_transformer_blocks_0_attn1_to_q.lora_down.weight':
+ 'input_blocks.1.1.transformer_blocks.0.attn1.to_q.lora_A.0_SwiftLoRA.weight',
+ 'down_blocks_0_attentions_0_transformer_blocks_0_attn1_to_q.lora_up.weight':
+ 'input_blocks.1.1.transformer_blocks.0.attn1.to_q.lora_B.0_SwiftLoRA.weight',
+ 'down_blocks_0_attentions_0_transformer_blocks_0_attn1_to_k.lora_down.weight':
+ 'input_blocks.1.1.transformer_blocks.0.attn1.to_k.lora_A.0_SwiftLoRA.weight',
+ 'down_blocks_0_attentions_0_transformer_blocks_0_attn1_to_k.lora_up.weight':
+ 'input_blocks.1.1.transformer_blocks.0.attn1.to_k.lora_B.0_SwiftLoRA.weight',
+ 'down_blocks_0_attentions_0_transformer_blocks_0_attn1_to_v.lora_down.weight':
+ 'input_blocks.1.1.transformer_blocks.0.attn1.to_v.lora_A.0_SwiftLoRA.weight',
+ 'down_blocks_0_attentions_0_transformer_blocks_0_attn1_to_v.lora_up.weight':
+ 'input_blocks.1.1.transformer_blocks.0.attn1.to_v.lora_B.0_SwiftLoRA.weight',
+ 'down_blocks_0_attentions_0_transformer_blocks_0_attn1_to_out_0.lora_down.weight':
+ 'input_blocks.1.1.transformer_blocks.0.attn1.to_out.0.lora_A.0_SwiftLoRA.weight',
+ 'down_blocks_0_attentions_0_transformer_blocks_0_attn1_to_out_0.lora_up.weight':
+ 'input_blocks.1.1.transformer_blocks.0.attn1.to_out.0.lora_B.0_SwiftLoRA.weight',
+ 'down_blocks_0_attentions_0_transformer_blocks_0_ff_net_0_proj.lora_down.weight':
+ 'input_blocks.1.1.transformer_blocks.0.ff.net.0.proj.lora_A.0_SwiftLoRA.weight',
+ 'down_blocks_0_attentions_0_transformer_blocks_0_ff_net_0_proj.lora_up.weight':
+ 'input_blocks.1.1.transformer_blocks.0.ff.net.0.proj.lora_B.0_SwiftLoRA.weight',
+ 'down_blocks_0_attentions_0_transformer_blocks_0_ff_net_2.lora_down.weight':
+ 'input_blocks.1.1.transformer_blocks.0.ff.net.2.lora_A.0_SwiftLoRA.weight',
+ 'down_blocks_0_attentions_0_transformer_blocks_0_ff_net_2.lora_up.weight':
+ 'input_blocks.1.1.transformer_blocks.0.ff.net.2.lora_B.0_SwiftLoRA.weight',
+ 'down_blocks_0_attentions_0_transformer_blocks_0_attn2_to_q.lora_down.weight':
+ 'input_blocks.1.1.transformer_blocks.0.attn2.to_q.lora_A.0_SwiftLoRA.weight',
+ 'down_blocks_0_attentions_0_transformer_blocks_0_attn2_to_q.lora_up.weight':
+ 'input_blocks.1.1.transformer_blocks.0.attn2.to_q.lora_B.0_SwiftLoRA.weight',
+ 'down_blocks_0_attentions_0_transformer_blocks_0_attn2_to_k.lora_down.weight':
+ 'input_blocks.1.1.transformer_blocks.0.attn2.to_k.lora_A.0_SwiftLoRA.weight',
+ 'down_blocks_0_attentions_0_transformer_blocks_0_attn2_to_k.lora_up.weight':
+ 'input_blocks.1.1.transformer_blocks.0.attn2.to_k.lora_B.0_SwiftLoRA.weight',
+ 'down_blocks_0_attentions_0_transformer_blocks_0_attn2_to_v.lora_down.weight':
+ 'input_blocks.1.1.transformer_blocks.0.attn2.to_v.lora_A.0_SwiftLoRA.weight',
+ 'down_blocks_0_attentions_0_transformer_blocks_0_attn2_to_v.lora_up.weight':
+ 'input_blocks.1.1.transformer_blocks.0.attn2.to_v.lora_B.0_SwiftLoRA.weight',
+ 'down_blocks_0_attentions_0_transformer_blocks_0_attn2_to_out_0.lora_down.weight':
+ 'input_blocks.1.1.transformer_blocks.0.attn2.to_out.0.lora_A.0_SwiftLoRA.weight',
+ 'down_blocks_0_attentions_0_transformer_blocks_0_attn2_to_out_0.lora_up.weight':
+ 'input_blocks.1.1.transformer_blocks.0.attn2.to_out.0.lora_B.0_SwiftLoRA.weight',
+ 'down_blocks_0_attentions_1_transformer_blocks_0_attn1_to_q.lora_down.weight':
+ 'input_blocks.2.1.transformer_blocks.0.attn1.to_q.lora_A.0_SwiftLoRA.weight',
+ 'down_blocks_0_attentions_1_transformer_blocks_0_attn1_to_q.lora_up.weight':
+ 'input_blocks.2.1.transformer_blocks.0.attn1.to_q.lora_B.0_SwiftLoRA.weight',
+ 'down_blocks_0_attentions_1_transformer_blocks_0_attn1_to_k.lora_down.weight':
+ 'input_blocks.2.1.transformer_blocks.0.attn1.to_k.lora_A.0_SwiftLoRA.weight',
+ 'down_blocks_0_attentions_1_transformer_blocks_0_attn1_to_k.lora_up.weight':
+ 'input_blocks.2.1.transformer_blocks.0.attn1.to_k.lora_B.0_SwiftLoRA.weight',
+ 'down_blocks_0_attentions_1_transformer_blocks_0_attn1_to_v.lora_down.weight':
+ 'input_blocks.2.1.transformer_blocks.0.attn1.to_v.lora_A.0_SwiftLoRA.weight',
+ 'down_blocks_0_attentions_1_transformer_blocks_0_attn1_to_v.lora_up.weight':
+ 'input_blocks.2.1.transformer_blocks.0.attn1.to_v.lora_B.0_SwiftLoRA.weight',
+ 'down_blocks_0_attentions_1_transformer_blocks_0_attn1_to_out_0.lora_down.weight':
+ 'input_blocks.2.1.transformer_blocks.0.attn1.to_out.0.lora_A.0_SwiftLoRA.weight',
+ 'down_blocks_0_attentions_1_transformer_blocks_0_attn1_to_out_0.lora_up.weight':
+ 'input_blocks.2.1.transformer_blocks.0.attn1.to_out.0.lora_B.0_SwiftLoRA.weight',
+ 'down_blocks_0_attentions_1_transformer_blocks_0_ff_net_0_proj.lora_down.weight':
+ 'input_blocks.2.1.transformer_blocks.0.ff.net.0.proj.lora_A.0_SwiftLoRA.weight',
+ 'down_blocks_0_attentions_1_transformer_blocks_0_ff_net_0_proj.lora_up.weight':
+ 'input_blocks.2.1.transformer_blocks.0.ff.net.0.proj.lora_B.0_SwiftLoRA.weight',
+ 'down_blocks_0_attentions_1_transformer_blocks_0_ff_net_2.lora_down.weight':
+ 'input_blocks.2.1.transformer_blocks.0.ff.net.2.lora_A.0_SwiftLoRA.weight',
+ 'down_blocks_0_attentions_1_transformer_blocks_0_ff_net_2.lora_up.weight':
+ 'input_blocks.2.1.transformer_blocks.0.ff.net.2.lora_B.0_SwiftLoRA.weight',
+ 'down_blocks_0_attentions_1_transformer_blocks_0_attn2_to_q.lora_down.weight':
+ 'input_blocks.2.1.transformer_blocks.0.attn2.to_q.lora_A.0_SwiftLoRA.weight',
+ 'down_blocks_0_attentions_1_transformer_blocks_0_attn2_to_q.lora_up.weight':
+ 'input_blocks.2.1.transformer_blocks.0.attn2.to_q.lora_B.0_SwiftLoRA.weight',
+ 'down_blocks_0_attentions_1_transformer_blocks_0_attn2_to_k.lora_down.weight':
+ 'input_blocks.2.1.transformer_blocks.0.attn2.to_k.lora_A.0_SwiftLoRA.weight',
+ 'down_blocks_0_attentions_1_transformer_blocks_0_attn2_to_k.lora_up.weight':
+ 'input_blocks.2.1.transformer_blocks.0.attn2.to_k.lora_B.0_SwiftLoRA.weight',
+ 'down_blocks_0_attentions_1_transformer_blocks_0_attn2_to_v.lora_down.weight':
+ 'input_blocks.2.1.transformer_blocks.0.attn2.to_v.lora_A.0_SwiftLoRA.weight',
+ 'down_blocks_0_attentions_1_transformer_blocks_0_attn2_to_v.lora_up.weight':
+ 'input_blocks.2.1.transformer_blocks.0.attn2.to_v.lora_B.0_SwiftLoRA.weight',
+ 'down_blocks_0_attentions_1_transformer_blocks_0_attn2_to_out_0.lora_down.weight':
+ 'input_blocks.2.1.transformer_blocks.0.attn2.to_out.0.lora_A.0_SwiftLoRA.weight',
+ 'down_blocks_0_attentions_1_transformer_blocks_0_attn2_to_out_0.lora_up.weight':
+ 'input_blocks.2.1.transformer_blocks.0.attn2.to_out.0.lora_B.0_SwiftLoRA.weight',
+ 'down_blocks_1_attentions_0_transformer_blocks_0_attn1_to_q.lora_down.weight':
+ 'input_blocks.4.1.transformer_blocks.0.attn1.to_q.lora_A.0_SwiftLoRA.weight',
+ 'down_blocks_1_attentions_0_transformer_blocks_0_attn1_to_q.lora_up.weight':
+ 'input_blocks.4.1.transformer_blocks.0.attn1.to_q.lora_B.0_SwiftLoRA.weight',
+ 'down_blocks_1_attentions_0_transformer_blocks_0_attn1_to_k.lora_down.weight':
+ 'input_blocks.4.1.transformer_blocks.0.attn1.to_k.lora_A.0_SwiftLoRA.weight',
+ 'down_blocks_1_attentions_0_transformer_blocks_0_attn1_to_k.lora_up.weight':
+ 'input_blocks.4.1.transformer_blocks.0.attn1.to_k.lora_B.0_SwiftLoRA.weight',
+ 'down_blocks_1_attentions_0_transformer_blocks_0_attn1_to_v.lora_down.weight':
+ 'input_blocks.4.1.transformer_blocks.0.attn1.to_v.lora_A.0_SwiftLoRA.weight',
+ 'down_blocks_1_attentions_0_transformer_blocks_0_attn1_to_v.lora_up.weight':
+ 'input_blocks.4.1.transformer_blocks.0.attn1.to_v.lora_B.0_SwiftLoRA.weight',
+ 'down_blocks_1_attentions_0_transformer_blocks_0_attn1_to_out_0.lora_down.weight':
+ 'input_blocks.4.1.transformer_blocks.0.attn1.to_out.0.lora_A.0_SwiftLoRA.weight',
+ 'down_blocks_1_attentions_0_transformer_blocks_0_attn1_to_out_0.lora_up.weight':
+ 'input_blocks.4.1.transformer_blocks.0.attn1.to_out.0.lora_B.0_SwiftLoRA.weight',
+ 'down_blocks_1_attentions_0_transformer_blocks_0_ff_net_0_proj.lora_down.weight':
+ 'input_blocks.4.1.transformer_blocks.0.ff.net.0.proj.lora_A.0_SwiftLoRA.weight',
+ 'down_blocks_1_attentions_0_transformer_blocks_0_ff_net_0_proj.lora_up.weight':
+ 'input_blocks.4.1.transformer_blocks.0.ff.net.0.proj.lora_B.0_SwiftLoRA.weight',
+ 'down_blocks_1_attentions_0_transformer_blocks_0_ff_net_2.lora_down.weight':
+ 'input_blocks.4.1.transformer_blocks.0.ff.net.2.lora_A.0_SwiftLoRA.weight',
+ 'down_blocks_1_attentions_0_transformer_blocks_0_ff_net_2.lora_up.weight':
+ 'input_blocks.4.1.transformer_blocks.0.ff.net.2.lora_B.0_SwiftLoRA.weight',
+ 'down_blocks_1_attentions_0_transformer_blocks_0_attn2_to_q.lora_down.weight':
+ 'input_blocks.4.1.transformer_blocks.0.attn2.to_q.lora_A.0_SwiftLoRA.weight',
+ 'down_blocks_1_attentions_0_transformer_blocks_0_attn2_to_q.lora_up.weight':
+ 'input_blocks.4.1.transformer_blocks.0.attn2.to_q.lora_B.0_SwiftLoRA.weight',
+ 'down_blocks_1_attentions_0_transformer_blocks_0_attn2_to_k.lora_down.weight':
+ 'input_blocks.4.1.transformer_blocks.0.attn2.to_k.lora_A.0_SwiftLoRA.weight',
+ 'down_blocks_1_attentions_0_transformer_blocks_0_attn2_to_k.lora_up.weight':
+ 'input_blocks.4.1.transformer_blocks.0.attn2.to_k.lora_B.0_SwiftLoRA.weight',
+ 'down_blocks_1_attentions_0_transformer_blocks_0_attn2_to_v.lora_down.weight':
+ 'input_blocks.4.1.transformer_blocks.0.attn2.to_v.lora_A.0_SwiftLoRA.weight',
+ 'down_blocks_1_attentions_0_transformer_blocks_0_attn2_to_v.lora_up.weight':
+ 'input_blocks.4.1.transformer_blocks.0.attn2.to_v.lora_B.0_SwiftLoRA.weight',
+ 'down_blocks_1_attentions_0_transformer_blocks_0_attn2_to_out_0.lora_down.weight':
+ 'input_blocks.4.1.transformer_blocks.0.attn2.to_out.0.lora_A.0_SwiftLoRA.weight',
+ 'down_blocks_1_attentions_0_transformer_blocks_0_attn2_to_out_0.lora_up.weight':
+ 'input_blocks.4.1.transformer_blocks.0.attn2.to_out.0.lora_B.0_SwiftLoRA.weight',
+ 'down_blocks_1_attentions_1_transformer_blocks_0_attn1_to_q.lora_down.weight':
+ 'input_blocks.5.1.transformer_blocks.0.attn1.to_q.lora_A.0_SwiftLoRA.weight',
+ 'down_blocks_1_attentions_1_transformer_blocks_0_attn1_to_q.lora_up.weight':
+ 'input_blocks.5.1.transformer_blocks.0.attn1.to_q.lora_B.0_SwiftLoRA.weight',
+ 'down_blocks_1_attentions_1_transformer_blocks_0_attn1_to_k.lora_down.weight':
+ 'input_blocks.5.1.transformer_blocks.0.attn1.to_k.lora_A.0_SwiftLoRA.weight',
+ 'down_blocks_1_attentions_1_transformer_blocks_0_attn1_to_k.lora_up.weight':
+ 'input_blocks.5.1.transformer_blocks.0.attn1.to_k.lora_B.0_SwiftLoRA.weight',
+ 'down_blocks_1_attentions_1_transformer_blocks_0_attn1_to_v.lora_down.weight':
+ 'input_blocks.5.1.transformer_blocks.0.attn1.to_v.lora_A.0_SwiftLoRA.weight',
+ 'down_blocks_1_attentions_1_transformer_blocks_0_attn1_to_v.lora_up.weight':
+ 'input_blocks.5.1.transformer_blocks.0.attn1.to_v.lora_B.0_SwiftLoRA.weight',
+ 'down_blocks_1_attentions_1_transformer_blocks_0_attn1_to_out_0.lora_down.weight':
+ 'input_blocks.5.1.transformer_blocks.0.attn1.to_out.0.lora_A.0_SwiftLoRA.weight',
+ 'down_blocks_1_attentions_1_transformer_blocks_0_attn1_to_out_0.lora_up.weight':
+ 'input_blocks.5.1.transformer_blocks.0.attn1.to_out.0.lora_B.0_SwiftLoRA.weight',
+ 'down_blocks_1_attentions_1_transformer_blocks_0_ff_net_0_proj.lora_down.weight':
+ 'input_blocks.5.1.transformer_blocks.0.ff.net.0.proj.lora_A.0_SwiftLoRA.weight',
+ 'down_blocks_1_attentions_1_transformer_blocks_0_ff_net_0_proj.lora_up.weight':
+ 'input_blocks.5.1.transformer_blocks.0.ff.net.0.proj.lora_B.0_SwiftLoRA.weight',
+ 'down_blocks_1_attentions_1_transformer_blocks_0_ff_net_2.lora_down.weight':
+ 'input_blocks.5.1.transformer_blocks.0.ff.net.2.lora_A.0_SwiftLoRA.weight',
+ 'down_blocks_1_attentions_1_transformer_blocks_0_ff_net_2.lora_up.weight':
+ 'input_blocks.5.1.transformer_blocks.0.ff.net.2.lora_B.0_SwiftLoRA.weight',
+ 'down_blocks_1_attentions_1_transformer_blocks_0_attn2_to_q.lora_down.weight':
+ 'input_blocks.5.1.transformer_blocks.0.attn2.to_q.lora_A.0_SwiftLoRA.weight',
+ 'down_blocks_1_attentions_1_transformer_blocks_0_attn2_to_q.lora_up.weight':
+ 'input_blocks.5.1.transformer_blocks.0.attn2.to_q.lora_B.0_SwiftLoRA.weight',
+ 'down_blocks_1_attentions_1_transformer_blocks_0_attn2_to_k.lora_down.weight':
+ 'input_blocks.5.1.transformer_blocks.0.attn2.to_k.lora_A.0_SwiftLoRA.weight',
+ 'down_blocks_1_attentions_1_transformer_blocks_0_attn2_to_k.lora_up.weight':
+ 'input_blocks.5.1.transformer_blocks.0.attn2.to_k.lora_B.0_SwiftLoRA.weight',
+ 'down_blocks_1_attentions_1_transformer_blocks_0_attn2_to_v.lora_down.weight':
+ 'input_blocks.5.1.transformer_blocks.0.attn2.to_v.lora_A.0_SwiftLoRA.weight',
+ 'down_blocks_1_attentions_1_transformer_blocks_0_attn2_to_v.lora_up.weight':
+ 'input_blocks.5.1.transformer_blocks.0.attn2.to_v.lora_B.0_SwiftLoRA.weight',
+ 'down_blocks_1_attentions_1_transformer_blocks_0_attn2_to_out_0.lora_down.weight':
+ 'input_blocks.5.1.transformer_blocks.0.attn2.to_out.0.lora_A.0_SwiftLoRA.weight',
+ 'down_blocks_1_attentions_1_transformer_blocks_0_attn2_to_out_0.lora_up.weight':
+ 'input_blocks.5.1.transformer_blocks.0.attn2.to_out.0.lora_B.0_SwiftLoRA.weight',
+ 'down_blocks_2_attentions_0_transformer_blocks_0_attn1_to_q.lora_down.weight':
+ 'input_blocks.7.1.transformer_blocks.0.attn1.to_q.lora_A.0_SwiftLoRA.weight',
+ 'down_blocks_2_attentions_0_transformer_blocks_0_attn1_to_q.lora_up.weight':
+ 'input_blocks.7.1.transformer_blocks.0.attn1.to_q.lora_B.0_SwiftLoRA.weight',
+ 'down_blocks_2_attentions_0_transformer_blocks_0_attn1_to_k.lora_down.weight':
+ 'input_blocks.7.1.transformer_blocks.0.attn1.to_k.lora_A.0_SwiftLoRA.weight',
+ 'down_blocks_2_attentions_0_transformer_blocks_0_attn1_to_k.lora_up.weight':
+ 'input_blocks.7.1.transformer_blocks.0.attn1.to_k.lora_B.0_SwiftLoRA.weight',
+ 'down_blocks_2_attentions_0_transformer_blocks_0_attn1_to_v.lora_down.weight':
+ 'input_blocks.7.1.transformer_blocks.0.attn1.to_v.lora_A.0_SwiftLoRA.weight',
+ 'down_blocks_2_attentions_0_transformer_blocks_0_attn1_to_v.lora_up.weight':
+ 'input_blocks.7.1.transformer_blocks.0.attn1.to_v.lora_B.0_SwiftLoRA.weight',
+ 'down_blocks_2_attentions_0_transformer_blocks_0_attn1_to_out_0.lora_down.weight':
+ 'input_blocks.7.1.transformer_blocks.0.attn1.to_out.0.lora_A.0_SwiftLoRA.weight',
+ 'down_blocks_2_attentions_0_transformer_blocks_0_attn1_to_out_0.lora_up.weight':
+ 'input_blocks.7.1.transformer_blocks.0.attn1.to_out.0.lora_B.0_SwiftLoRA.weight',
+ 'down_blocks_2_attentions_0_transformer_blocks_0_ff_net_0_proj.lora_down.weight':
+ 'input_blocks.7.1.transformer_blocks.0.ff.net.0.proj.lora_A.0_SwiftLoRA.weight',
+ 'down_blocks_2_attentions_0_transformer_blocks_0_ff_net_0_proj.lora_up.weight':
+ 'input_blocks.7.1.transformer_blocks.0.ff.net.0.proj.lora_B.0_SwiftLoRA.weight',
+ 'down_blocks_2_attentions_0_transformer_blocks_0_ff_net_2.lora_down.weight':
+ 'input_blocks.7.1.transformer_blocks.0.ff.net.2.lora_A.0_SwiftLoRA.weight',
+ 'down_blocks_2_attentions_0_transformer_blocks_0_ff_net_2.lora_up.weight':
+ 'input_blocks.7.1.transformer_blocks.0.ff.net.2.lora_B.0_SwiftLoRA.weight',
+ 'down_blocks_2_attentions_0_transformer_blocks_0_attn2_to_q.lora_down.weight':
+ 'input_blocks.7.1.transformer_blocks.0.attn2.to_q.lora_A.0_SwiftLoRA.weight',
+ 'down_blocks_2_attentions_0_transformer_blocks_0_attn2_to_q.lora_up.weight':
+ 'input_blocks.7.1.transformer_blocks.0.attn2.to_q.lora_B.0_SwiftLoRA.weight',
+ 'down_blocks_2_attentions_0_transformer_blocks_0_attn2_to_k.lora_down.weight':
+ 'input_blocks.7.1.transformer_blocks.0.attn2.to_k.lora_A.0_SwiftLoRA.weight',
+ 'down_blocks_2_attentions_0_transformer_blocks_0_attn2_to_k.lora_up.weight':
+ 'input_blocks.7.1.transformer_blocks.0.attn2.to_k.lora_B.0_SwiftLoRA.weight',
+ 'down_blocks_2_attentions_0_transformer_blocks_0_attn2_to_v.lora_down.weight':
+ 'input_blocks.7.1.transformer_blocks.0.attn2.to_v.lora_A.0_SwiftLoRA.weight',
+ 'down_blocks_2_attentions_0_transformer_blocks_0_attn2_to_v.lora_up.weight':
+ 'input_blocks.7.1.transformer_blocks.0.attn2.to_v.lora_B.0_SwiftLoRA.weight',
+ 'down_blocks_2_attentions_0_transformer_blocks_0_attn2_to_out_0.lora_down.weight':
+ 'input_blocks.7.1.transformer_blocks.0.attn2.to_out.0.lora_A.0_SwiftLoRA.weight',
+ 'down_blocks_2_attentions_0_transformer_blocks_0_attn2_to_out_0.lora_up.weight':
+ 'input_blocks.7.1.transformer_blocks.0.attn2.to_out.0.lora_B.0_SwiftLoRA.weight',
+ 'down_blocks_2_attentions_1_transformer_blocks_0_attn1_to_q.lora_down.weight':
+ 'input_blocks.8.1.transformer_blocks.0.attn1.to_q.lora_A.0_SwiftLoRA.weight',
+ 'down_blocks_2_attentions_1_transformer_blocks_0_attn1_to_q.lora_up.weight':
+ 'input_blocks.8.1.transformer_blocks.0.attn1.to_q.lora_B.0_SwiftLoRA.weight',
+ 'down_blocks_2_attentions_1_transformer_blocks_0_attn1_to_k.lora_down.weight':
+ 'input_blocks.8.1.transformer_blocks.0.attn1.to_k.lora_A.0_SwiftLoRA.weight',
+ 'down_blocks_2_attentions_1_transformer_blocks_0_attn1_to_k.lora_up.weight':
+ 'input_blocks.8.1.transformer_blocks.0.attn1.to_k.lora_B.0_SwiftLoRA.weight',
+ 'down_blocks_2_attentions_1_transformer_blocks_0_attn1_to_v.lora_down.weight':
+ 'input_blocks.8.1.transformer_blocks.0.attn1.to_v.lora_A.0_SwiftLoRA.weight',
+ 'down_blocks_2_attentions_1_transformer_blocks_0_attn1_to_v.lora_up.weight':
+ 'input_blocks.8.1.transformer_blocks.0.attn1.to_v.lora_B.0_SwiftLoRA.weight',
+ 'down_blocks_2_attentions_1_transformer_blocks_0_attn1_to_out_0.lora_down.weight':
+ 'input_blocks.8.1.transformer_blocks.0.attn1.to_out.0.lora_A.0_SwiftLoRA.weight',
+ 'down_blocks_2_attentions_1_transformer_blocks_0_attn1_to_out_0.lora_up.weight':
+ 'input_blocks.8.1.transformer_blocks.0.attn1.to_out.0.lora_B.0_SwiftLoRA.weight',
+ 'down_blocks_2_attentions_1_transformer_blocks_0_ff_net_0_proj.lora_down.weight':
+ 'input_blocks.8.1.transformer_blocks.0.ff.net.0.proj.lora_A.0_SwiftLoRA.weight',
+ 'down_blocks_2_attentions_1_transformer_blocks_0_ff_net_0_proj.lora_up.weight':
+ 'input_blocks.8.1.transformer_blocks.0.ff.net.0.proj.lora_B.0_SwiftLoRA.weight',
+ 'down_blocks_2_attentions_1_transformer_blocks_0_ff_net_2.lora_down.weight':
+ 'input_blocks.8.1.transformer_blocks.0.ff.net.2.lora_A.0_SwiftLoRA.weight',
+ 'down_blocks_2_attentions_1_transformer_blocks_0_ff_net_2.lora_up.weight':
+ 'input_blocks.8.1.transformer_blocks.0.ff.net.2.lora_B.0_SwiftLoRA.weight',
+ 'down_blocks_2_attentions_1_transformer_blocks_0_attn2_to_q.lora_down.weight':
+ 'input_blocks.8.1.transformer_blocks.0.attn2.to_q.lora_A.0_SwiftLoRA.weight',
+ 'down_blocks_2_attentions_1_transformer_blocks_0_attn2_to_q.lora_up.weight':
+ 'input_blocks.8.1.transformer_blocks.0.attn2.to_q.lora_B.0_SwiftLoRA.weight',
+ 'down_blocks_2_attentions_1_transformer_blocks_0_attn2_to_k.lora_down.weight':
+ 'input_blocks.8.1.transformer_blocks.0.attn2.to_k.lora_A.0_SwiftLoRA.weight',
+ 'down_blocks_2_attentions_1_transformer_blocks_0_attn2_to_k.lora_up.weight':
+ 'input_blocks.8.1.transformer_blocks.0.attn2.to_k.lora_B.0_SwiftLoRA.weight',
+ 'down_blocks_2_attentions_1_transformer_blocks_0_attn2_to_v.lora_down.weight':
+ 'input_blocks.8.1.transformer_blocks.0.attn2.to_v.lora_A.0_SwiftLoRA.weight',
+ 'down_blocks_2_attentions_1_transformer_blocks_0_attn2_to_v.lora_up.weight':
+ 'input_blocks.8.1.transformer_blocks.0.attn2.to_v.lora_B.0_SwiftLoRA.weight',
+ 'down_blocks_2_attentions_1_transformer_blocks_0_attn2_to_out_0.lora_down.weight':
+ 'input_blocks.8.1.transformer_blocks.0.attn2.to_out.0.lora_A.0_SwiftLoRA.weight',
+ 'down_blocks_2_attentions_1_transformer_blocks_0_attn2_to_out_0.lora_up.weight':
+ 'input_blocks.8.1.transformer_blocks.0.attn2.to_out.0.lora_B.0_SwiftLoRA.weight',
+ 'mid_block_attentions_0_transformer_blocks_0_attn1_to_q.lora_down.weight':
+ 'middle_block.1.transformer_blocks.0.attn1.to_q.lora_A.0_SwiftLoRA.weight',
+ 'mid_block_attentions_0_transformer_blocks_0_attn1_to_q.lora_up.weight':
+ 'middle_block.1.transformer_blocks.0.attn1.to_q.lora_B.0_SwiftLoRA.weight',
+ 'mid_block_attentions_0_transformer_blocks_0_attn1_to_k.lora_down.weight':
+ 'middle_block.1.transformer_blocks.0.attn1.to_k.lora_A.0_SwiftLoRA.weight',
+ 'mid_block_attentions_0_transformer_blocks_0_attn1_to_k.lora_up.weight':
+ 'middle_block.1.transformer_blocks.0.attn1.to_k.lora_B.0_SwiftLoRA.weight',
+ 'mid_block_attentions_0_transformer_blocks_0_attn1_to_v.lora_down.weight':
+ 'middle_block.1.transformer_blocks.0.attn1.to_v.lora_A.0_SwiftLoRA.weight',
+ 'mid_block_attentions_0_transformer_blocks_0_attn1_to_v.lora_up.weight':
+ 'middle_block.1.transformer_blocks.0.attn1.to_v.lora_B.0_SwiftLoRA.weight',
+ 'mid_block_attentions_0_transformer_blocks_0_attn1_to_out_0.lora_down.weight':
+ 'middle_block.1.transformer_blocks.0.attn1.to_out.0.lora_A.0_SwiftLoRA.weight',
+ 'mid_block_attentions_0_transformer_blocks_0_attn1_to_out_0.lora_up.weight':
+ 'middle_block.1.transformer_blocks.0.attn1.to_out.0.lora_B.0_SwiftLoRA.weight',
+ 'mid_block_attentions_0_transformer_blocks_0_ff_net_0_proj.lora_down.weight':
+ 'middle_block.1.transformer_blocks.0.ff.net.0.proj.lora_A.0_SwiftLoRA.weight',
+ 'mid_block_attentions_0_transformer_blocks_0_ff_net_0_proj.lora_up.weight':
+ 'middle_block.1.transformer_blocks.0.ff.net.0.proj.lora_B.0_SwiftLoRA.weight',
+ 'mid_block_attentions_0_transformer_blocks_0_ff_net_2.lora_down.weight':
+ 'middle_block.1.transformer_blocks.0.ff.net.2.lora_A.0_SwiftLoRA.weight',
+ 'mid_block_attentions_0_transformer_blocks_0_ff_net_2.lora_up.weight':
+ 'middle_block.1.transformer_blocks.0.ff.net.2.lora_B.0_SwiftLoRA.weight',
+ 'mid_block_attentions_0_transformer_blocks_0_attn2_to_q.lora_down.weight':
+ 'middle_block.1.transformer_blocks.0.attn2.to_q.lora_A.0_SwiftLoRA.weight',
+ 'mid_block_attentions_0_transformer_blocks_0_attn2_to_q.lora_up.weight':
+ 'middle_block.1.transformer_blocks.0.attn2.to_q.lora_B.0_SwiftLoRA.weight',
+ 'mid_block_attentions_0_transformer_blocks_0_attn2_to_k.lora_down.weight':
+ 'middle_block.1.transformer_blocks.0.attn2.to_k.lora_A.0_SwiftLoRA.weight',
+ 'mid_block_attentions_0_transformer_blocks_0_attn2_to_k.lora_up.weight':
+ 'middle_block.1.transformer_blocks.0.attn2.to_k.lora_B.0_SwiftLoRA.weight',
+ 'mid_block_attentions_0_transformer_blocks_0_attn2_to_v.lora_down.weight':
+ 'middle_block.1.transformer_blocks.0.attn2.to_v.lora_A.0_SwiftLoRA.weight',
+ 'mid_block_attentions_0_transformer_blocks_0_attn2_to_v.lora_up.weight':
+ 'middle_block.1.transformer_blocks.0.attn2.to_v.lora_B.0_SwiftLoRA.weight',
+ 'mid_block_attentions_0_transformer_blocks_0_attn2_to_out_0.lora_down.weight':
+ 'middle_block.1.transformer_blocks.0.attn2.to_out.0.lora_A.0_SwiftLoRA.weight',
+ 'mid_block_attentions_0_transformer_blocks_0_attn2_to_out_0.lora_up.weight':
+ 'middle_block.1.transformer_blocks.0.attn2.to_out.0.lora_B.0_SwiftLoRA.weight',
+ 'up_blocks_1_attentions_0_transformer_blocks_0_attn1_to_q.lora_down.weight':
+ 'output_blocks.3.1.transformer_blocks.0.attn1.to_q.lora_A.0_SwiftLoRA.weight',
+ 'up_blocks_1_attentions_0_transformer_blocks_0_attn1_to_q.lora_up.weight':
+ 'output_blocks.3.1.transformer_blocks.0.attn1.to_q.lora_B.0_SwiftLoRA.weight',
+ 'up_blocks_1_attentions_0_transformer_blocks_0_attn1_to_k.lora_down.weight':
+ 'output_blocks.3.1.transformer_blocks.0.attn1.to_k.lora_A.0_SwiftLoRA.weight',
+ 'up_blocks_1_attentions_0_transformer_blocks_0_attn1_to_k.lora_up.weight':
+ 'output_blocks.3.1.transformer_blocks.0.attn1.to_k.lora_B.0_SwiftLoRA.weight',
+ 'up_blocks_1_attentions_0_transformer_blocks_0_attn1_to_v.lora_down.weight':
+ 'output_blocks.3.1.transformer_blocks.0.attn1.to_v.lora_A.0_SwiftLoRA.weight',
+ 'up_blocks_1_attentions_0_transformer_blocks_0_attn1_to_v.lora_up.weight':
+ 'output_blocks.3.1.transformer_blocks.0.attn1.to_v.lora_B.0_SwiftLoRA.weight',
+ 'up_blocks_1_attentions_0_transformer_blocks_0_attn1_to_out_0.lora_down.weight':
+ 'output_blocks.3.1.transformer_blocks.0.attn1.to_out.0.lora_A.0_SwiftLoRA.weight',
+ 'up_blocks_1_attentions_0_transformer_blocks_0_attn1_to_out_0.lora_up.weight':
+ 'output_blocks.3.1.transformer_blocks.0.attn1.to_out.0.lora_B.0_SwiftLoRA.weight',
+ 'up_blocks_1_attentions_0_transformer_blocks_0_ff_net_0_proj.lora_down.weight':
+ 'output_blocks.3.1.transformer_blocks.0.ff.net.0.proj.lora_A.0_SwiftLoRA.weight',
+ 'up_blocks_1_attentions_0_transformer_blocks_0_ff_net_0_proj.lora_up.weight':
+ 'output_blocks.3.1.transformer_blocks.0.ff.net.0.proj.lora_B.0_SwiftLoRA.weight',
+ 'up_blocks_1_attentions_0_transformer_blocks_0_ff_net_2.lora_down.weight':
+ 'output_blocks.3.1.transformer_blocks.0.ff.net.2.lora_A.0_SwiftLoRA.weight',
+ 'up_blocks_1_attentions_0_transformer_blocks_0_ff_net_2.lora_up.weight':
+ 'output_blocks.3.1.transformer_blocks.0.ff.net.2.lora_B.0_SwiftLoRA.weight',
+ 'up_blocks_1_attentions_0_transformer_blocks_0_attn2_to_q.lora_down.weight':
+ 'output_blocks.3.1.transformer_blocks.0.attn2.to_q.lora_A.0_SwiftLoRA.weight',
+ 'up_blocks_1_attentions_0_transformer_blocks_0_attn2_to_q.lora_up.weight':
+ 'output_blocks.3.1.transformer_blocks.0.attn2.to_q.lora_B.0_SwiftLoRA.weight',
+ 'up_blocks_1_attentions_0_transformer_blocks_0_attn2_to_k.lora_down.weight':
+ 'output_blocks.3.1.transformer_blocks.0.attn2.to_k.lora_A.0_SwiftLoRA.weight',
+ 'up_blocks_1_attentions_0_transformer_blocks_0_attn2_to_k.lora_up.weight':
+ 'output_blocks.3.1.transformer_blocks.0.attn2.to_k.lora_B.0_SwiftLoRA.weight',
+ 'up_blocks_1_attentions_0_transformer_blocks_0_attn2_to_v.lora_down.weight':
+ 'output_blocks.3.1.transformer_blocks.0.attn2.to_v.lora_A.0_SwiftLoRA.weight',
+ 'up_blocks_1_attentions_0_transformer_blocks_0_attn2_to_v.lora_up.weight':
+ 'output_blocks.3.1.transformer_blocks.0.attn2.to_v.lora_B.0_SwiftLoRA.weight',
+ 'up_blocks_1_attentions_0_transformer_blocks_0_attn2_to_out_0.lora_down.weight':
+ 'output_blocks.3.1.transformer_blocks.0.attn2.to_out.0.lora_A.0_SwiftLoRA.weight',
+ 'up_blocks_1_attentions_0_transformer_blocks_0_attn2_to_out_0.lora_up.weight':
+ 'output_blocks.3.1.transformer_blocks.0.attn2.to_out.0.lora_B.0_SwiftLoRA.weight',
+ 'up_blocks_1_attentions_1_transformer_blocks_0_attn1_to_q.lora_down.weight':
+ 'output_blocks.4.1.transformer_blocks.0.attn1.to_q.lora_A.0_SwiftLoRA.weight',
+ 'up_blocks_1_attentions_1_transformer_blocks_0_attn1_to_q.lora_up.weight':
+ 'output_blocks.4.1.transformer_blocks.0.attn1.to_q.lora_B.0_SwiftLoRA.weight',
+ 'up_blocks_1_attentions_1_transformer_blocks_0_attn1_to_k.lora_down.weight':
+ 'output_blocks.4.1.transformer_blocks.0.attn1.to_k.lora_A.0_SwiftLoRA.weight',
+ 'up_blocks_1_attentions_1_transformer_blocks_0_attn1_to_k.lora_up.weight':
+ 'output_blocks.4.1.transformer_blocks.0.attn1.to_k.lora_B.0_SwiftLoRA.weight',
+ 'up_blocks_1_attentions_1_transformer_blocks_0_attn1_to_v.lora_down.weight':
+ 'output_blocks.4.1.transformer_blocks.0.attn1.to_v.lora_A.0_SwiftLoRA.weight',
+ 'up_blocks_1_attentions_1_transformer_blocks_0_attn1_to_v.lora_up.weight':
+ 'output_blocks.4.1.transformer_blocks.0.attn1.to_v.lora_B.0_SwiftLoRA.weight',
+ 'up_blocks_1_attentions_1_transformer_blocks_0_attn1_to_out_0.lora_down.weight':
+ 'output_blocks.4.1.transformer_blocks.0.attn1.to_out.0.lora_A.0_SwiftLoRA.weight',
+ 'up_blocks_1_attentions_1_transformer_blocks_0_attn1_to_out_0.lora_up.weight':
+ 'output_blocks.4.1.transformer_blocks.0.attn1.to_out.0.lora_B.0_SwiftLoRA.weight',
+ 'up_blocks_1_attentions_1_transformer_blocks_0_ff_net_0_proj.lora_down.weight':
+ 'output_blocks.4.1.transformer_blocks.0.ff.net.0.proj.lora_A.0_SwiftLoRA.weight',
+ 'up_blocks_1_attentions_1_transformer_blocks_0_ff_net_0_proj.lora_up.weight':
+ 'output_blocks.4.1.transformer_blocks.0.ff.net.0.proj.lora_B.0_SwiftLoRA.weight',
+ 'up_blocks_1_attentions_1_transformer_blocks_0_ff_net_2.lora_down.weight':
+ 'output_blocks.4.1.transformer_blocks.0.ff.net.2.lora_A.0_SwiftLoRA.weight',
+ 'up_blocks_1_attentions_1_transformer_blocks_0_ff_net_2.lora_up.weight':
+ 'output_blocks.4.1.transformer_blocks.0.ff.net.2.lora_B.0_SwiftLoRA.weight',
+ 'up_blocks_1_attentions_1_transformer_blocks_0_attn2_to_q.lora_down.weight':
+ 'output_blocks.4.1.transformer_blocks.0.attn2.to_q.lora_A.0_SwiftLoRA.weight',
+ 'up_blocks_1_attentions_1_transformer_blocks_0_attn2_to_q.lora_up.weight':
+ 'output_blocks.4.1.transformer_blocks.0.attn2.to_q.lora_B.0_SwiftLoRA.weight',
+ 'up_blocks_1_attentions_1_transformer_blocks_0_attn2_to_k.lora_down.weight':
+ 'output_blocks.4.1.transformer_blocks.0.attn2.to_k.lora_A.0_SwiftLoRA.weight',
+ 'up_blocks_1_attentions_1_transformer_blocks_0_attn2_to_k.lora_up.weight':
+ 'output_blocks.4.1.transformer_blocks.0.attn2.to_k.lora_B.0_SwiftLoRA.weight',
+ 'up_blocks_1_attentions_1_transformer_blocks_0_attn2_to_v.lora_down.weight':
+ 'output_blocks.4.1.transformer_blocks.0.attn2.to_v.lora_A.0_SwiftLoRA.weight',
+ 'up_blocks_1_attentions_1_transformer_blocks_0_attn2_to_v.lora_up.weight':
+ 'output_blocks.4.1.transformer_blocks.0.attn2.to_v.lora_B.0_SwiftLoRA.weight',
+ 'up_blocks_1_attentions_1_transformer_blocks_0_attn2_to_out_0.lora_down.weight':
+ 'output_blocks.4.1.transformer_blocks.0.attn2.to_out.0.lora_A.0_SwiftLoRA.weight',
+ 'up_blocks_1_attentions_1_transformer_blocks_0_attn2_to_out_0.lora_up.weight':
+ 'output_blocks.4.1.transformer_blocks.0.attn2.to_out.0.lora_B.0_SwiftLoRA.weight',
+ 'up_blocks_1_attentions_2_transformer_blocks_0_attn1_to_q.lora_down.weight':
+ 'output_blocks.5.1.transformer_blocks.0.attn1.to_q.lora_A.0_SwiftLoRA.weight',
+ 'up_blocks_1_attentions_2_transformer_blocks_0_attn1_to_q.lora_up.weight':
+ 'output_blocks.5.1.transformer_blocks.0.attn1.to_q.lora_B.0_SwiftLoRA.weight',
+ 'up_blocks_1_attentions_2_transformer_blocks_0_attn1_to_k.lora_down.weight':
+ 'output_blocks.5.1.transformer_blocks.0.attn1.to_k.lora_A.0_SwiftLoRA.weight',
+ 'up_blocks_1_attentions_2_transformer_blocks_0_attn1_to_k.lora_up.weight':
+ 'output_blocks.5.1.transformer_blocks.0.attn1.to_k.lora_B.0_SwiftLoRA.weight',
+ 'up_blocks_1_attentions_2_transformer_blocks_0_attn1_to_v.lora_down.weight':
+ 'output_blocks.5.1.transformer_blocks.0.attn1.to_v.lora_A.0_SwiftLoRA.weight',
+ 'up_blocks_1_attentions_2_transformer_blocks_0_attn1_to_v.lora_up.weight':
+ 'output_blocks.5.1.transformer_blocks.0.attn1.to_v.lora_B.0_SwiftLoRA.weight',
+ 'up_blocks_1_attentions_2_transformer_blocks_0_attn1_to_out_0.lora_down.weight':
+ 'output_blocks.5.1.transformer_blocks.0.attn1.to_out.0.lora_A.0_SwiftLoRA.weight',
+ 'up_blocks_1_attentions_2_transformer_blocks_0_attn1_to_out_0.lora_up.weight':
+ 'output_blocks.5.1.transformer_blocks.0.attn1.to_out.0.lora_B.0_SwiftLoRA.weight',
+ 'up_blocks_1_attentions_2_transformer_blocks_0_ff_net_0_proj.lora_down.weight':
+ 'output_blocks.5.1.transformer_blocks.0.ff.net.0.proj.lora_A.0_SwiftLoRA.weight',
+ 'up_blocks_1_attentions_2_transformer_blocks_0_ff_net_0_proj.lora_up.weight':
+ 'output_blocks.5.1.transformer_blocks.0.ff.net.0.proj.lora_B.0_SwiftLoRA.weight',
+ 'up_blocks_1_attentions_2_transformer_blocks_0_ff_net_2.lora_down.weight':
+ 'output_blocks.5.1.transformer_blocks.0.ff.net.2.lora_A.0_SwiftLoRA.weight',
+ 'up_blocks_1_attentions_2_transformer_blocks_0_ff_net_2.lora_up.weight':
+ 'output_blocks.5.1.transformer_blocks.0.ff.net.2.lora_B.0_SwiftLoRA.weight',
+ 'up_blocks_1_attentions_2_transformer_blocks_0_attn2_to_q.lora_down.weight':
+ 'output_blocks.5.1.transformer_blocks.0.attn2.to_q.lora_A.0_SwiftLoRA.weight',
+ 'up_blocks_1_attentions_2_transformer_blocks_0_attn2_to_q.lora_up.weight':
+ 'output_blocks.5.1.transformer_blocks.0.attn2.to_q.lora_B.0_SwiftLoRA.weight',
+ 'up_blocks_1_attentions_2_transformer_blocks_0_attn2_to_k.lora_down.weight':
+ 'output_blocks.5.1.transformer_blocks.0.attn2.to_k.lora_A.0_SwiftLoRA.weight',
+ 'up_blocks_1_attentions_2_transformer_blocks_0_attn2_to_k.lora_up.weight':
+ 'output_blocks.5.1.transformer_blocks.0.attn2.to_k.lora_B.0_SwiftLoRA.weight',
+ 'up_blocks_1_attentions_2_transformer_blocks_0_attn2_to_v.lora_down.weight':
+ 'output_blocks.5.1.transformer_blocks.0.attn2.to_v.lora_A.0_SwiftLoRA.weight',
+ 'up_blocks_1_attentions_2_transformer_blocks_0_attn2_to_v.lora_up.weight':
+ 'output_blocks.5.1.transformer_blocks.0.attn2.to_v.lora_B.0_SwiftLoRA.weight',
+ 'up_blocks_1_attentions_2_transformer_blocks_0_attn2_to_out_0.lora_down.weight':
+ 'output_blocks.5.1.transformer_blocks.0.attn2.to_out.0.lora_A.0_SwiftLoRA.weight',
+ 'up_blocks_1_attentions_2_transformer_blocks_0_attn2_to_out_0.lora_up.weight':
+ 'output_blocks.5.1.transformer_blocks.0.attn2.to_out.0.lora_B.0_SwiftLoRA.weight',
+ 'up_blocks_2_attentions_0_transformer_blocks_0_attn1_to_q.lora_down.weight':
+ 'output_blocks.6.1.transformer_blocks.0.attn1.to_q.lora_A.0_SwiftLoRA.weight',
+ 'up_blocks_2_attentions_0_transformer_blocks_0_attn1_to_q.lora_up.weight':
+ 'output_blocks.6.1.transformer_blocks.0.attn1.to_q.lora_B.0_SwiftLoRA.weight',
+ 'up_blocks_2_attentions_0_transformer_blocks_0_attn1_to_k.lora_down.weight':
+ 'output_blocks.6.1.transformer_blocks.0.attn1.to_k.lora_A.0_SwiftLoRA.weight',
+ 'up_blocks_2_attentions_0_transformer_blocks_0_attn1_to_k.lora_up.weight':
+ 'output_blocks.6.1.transformer_blocks.0.attn1.to_k.lora_B.0_SwiftLoRA.weight',
+ 'up_blocks_2_attentions_0_transformer_blocks_0_attn1_to_v.lora_down.weight':
+ 'output_blocks.6.1.transformer_blocks.0.attn1.to_v.lora_A.0_SwiftLoRA.weight',
+ 'up_blocks_2_attentions_0_transformer_blocks_0_attn1_to_v.lora_up.weight':
+ 'output_blocks.6.1.transformer_blocks.0.attn1.to_v.lora_B.0_SwiftLoRA.weight',
+ 'up_blocks_2_attentions_0_transformer_blocks_0_attn1_to_out_0.lora_down.weight':
+ 'output_blocks.6.1.transformer_blocks.0.attn1.to_out.0.lora_A.0_SwiftLoRA.weight',
+ 'up_blocks_2_attentions_0_transformer_blocks_0_attn1_to_out_0.lora_up.weight':
+ 'output_blocks.6.1.transformer_blocks.0.attn1.to_out.0.lora_B.0_SwiftLoRA.weight',
+ 'up_blocks_2_attentions_0_transformer_blocks_0_ff_net_0_proj.lora_down.weight':
+ 'output_blocks.6.1.transformer_blocks.0.ff.net.0.proj.lora_A.0_SwiftLoRA.weight',
+ 'up_blocks_2_attentions_0_transformer_blocks_0_ff_net_0_proj.lora_up.weight':
+ 'output_blocks.6.1.transformer_blocks.0.ff.net.0.proj.lora_B.0_SwiftLoRA.weight',
+ 'up_blocks_2_attentions_0_transformer_blocks_0_ff_net_2.lora_down.weight':
+ 'output_blocks.6.1.transformer_blocks.0.ff.net.2.lora_A.0_SwiftLoRA.weight',
+ 'up_blocks_2_attentions_0_transformer_blocks_0_ff_net_2.lora_up.weight':
+ 'output_blocks.6.1.transformer_blocks.0.ff.net.2.lora_B.0_SwiftLoRA.weight',
+ 'up_blocks_2_attentions_0_transformer_blocks_0_attn2_to_q.lora_down.weight':
+ 'output_blocks.6.1.transformer_blocks.0.attn2.to_q.lora_A.0_SwiftLoRA.weight',
+ 'up_blocks_2_attentions_0_transformer_blocks_0_attn2_to_q.lora_up.weight':
+ 'output_blocks.6.1.transformer_blocks.0.attn2.to_q.lora_B.0_SwiftLoRA.weight',
+ 'up_blocks_2_attentions_0_transformer_blocks_0_attn2_to_k.lora_down.weight':
+ 'output_blocks.6.1.transformer_blocks.0.attn2.to_k.lora_A.0_SwiftLoRA.weight',
+ 'up_blocks_2_attentions_0_transformer_blocks_0_attn2_to_k.lora_up.weight':
+ 'output_blocks.6.1.transformer_blocks.0.attn2.to_k.lora_B.0_SwiftLoRA.weight',
+ 'up_blocks_2_attentions_0_transformer_blocks_0_attn2_to_v.lora_down.weight':
+ 'output_blocks.6.1.transformer_blocks.0.attn2.to_v.lora_A.0_SwiftLoRA.weight',
+ 'up_blocks_2_attentions_0_transformer_blocks_0_attn2_to_v.lora_up.weight':
+ 'output_blocks.6.1.transformer_blocks.0.attn2.to_v.lora_B.0_SwiftLoRA.weight',
+ 'up_blocks_2_attentions_0_transformer_blocks_0_attn2_to_out_0.lora_down.weight':
+ 'output_blocks.6.1.transformer_blocks.0.attn2.to_out.0.lora_A.0_SwiftLoRA.weight',
+ 'up_blocks_2_attentions_0_transformer_blocks_0_attn2_to_out_0.lora_up.weight':
+ 'output_blocks.6.1.transformer_blocks.0.attn2.to_out.0.lora_B.0_SwiftLoRA.weight',
+ 'up_blocks_2_attentions_1_transformer_blocks_0_attn1_to_q.lora_down.weight':
+ 'output_blocks.7.1.transformer_blocks.0.attn1.to_q.lora_A.0_SwiftLoRA.weight',
+ 'up_blocks_2_attentions_1_transformer_blocks_0_attn1_to_q.lora_up.weight':
+ 'output_blocks.7.1.transformer_blocks.0.attn1.to_q.lora_B.0_SwiftLoRA.weight',
+ 'up_blocks_2_attentions_1_transformer_blocks_0_attn1_to_k.lora_down.weight':
+ 'output_blocks.7.1.transformer_blocks.0.attn1.to_k.lora_A.0_SwiftLoRA.weight',
+ 'up_blocks_2_attentions_1_transformer_blocks_0_attn1_to_k.lora_up.weight':
+ 'output_blocks.7.1.transformer_blocks.0.attn1.to_k.lora_B.0_SwiftLoRA.weight',
+ 'up_blocks_2_attentions_1_transformer_blocks_0_attn1_to_v.lora_down.weight':
+ 'output_blocks.7.1.transformer_blocks.0.attn1.to_v.lora_A.0_SwiftLoRA.weight',
+ 'up_blocks_2_attentions_1_transformer_blocks_0_attn1_to_v.lora_up.weight':
+ 'output_blocks.7.1.transformer_blocks.0.attn1.to_v.lora_B.0_SwiftLoRA.weight',
+ 'up_blocks_2_attentions_1_transformer_blocks_0_attn1_to_out_0.lora_down.weight':
+ 'output_blocks.7.1.transformer_blocks.0.attn1.to_out.0.lora_A.0_SwiftLoRA.weight',
+ 'up_blocks_2_attentions_1_transformer_blocks_0_attn1_to_out_0.lora_up.weight':
+ 'output_blocks.7.1.transformer_blocks.0.attn1.to_out.0.lora_B.0_SwiftLoRA.weight',
+ 'up_blocks_2_attentions_1_transformer_blocks_0_ff_net_0_proj.lora_down.weight':
+ 'output_blocks.7.1.transformer_blocks.0.ff.net.0.proj.lora_A.0_SwiftLoRA.weight',
+ 'up_blocks_2_attentions_1_transformer_blocks_0_ff_net_0_proj.lora_up.weight':
+ 'output_blocks.7.1.transformer_blocks.0.ff.net.0.proj.lora_B.0_SwiftLoRA.weight',
+ 'up_blocks_2_attentions_1_transformer_blocks_0_ff_net_2.lora_down.weight':
+ 'output_blocks.7.1.transformer_blocks.0.ff.net.2.lora_A.0_SwiftLoRA.weight',
+ 'up_blocks_2_attentions_1_transformer_blocks_0_ff_net_2.lora_up.weight':
+ 'output_blocks.7.1.transformer_blocks.0.ff.net.2.lora_B.0_SwiftLoRA.weight',
+ 'up_blocks_2_attentions_1_transformer_blocks_0_attn2_to_q.lora_down.weight':
+ 'output_blocks.7.1.transformer_blocks.0.attn2.to_q.lora_A.0_SwiftLoRA.weight',
+ 'up_blocks_2_attentions_1_transformer_blocks_0_attn2_to_q.lora_up.weight':
+ 'output_blocks.7.1.transformer_blocks.0.attn2.to_q.lora_B.0_SwiftLoRA.weight',
+ 'up_blocks_2_attentions_1_transformer_blocks_0_attn2_to_k.lora_down.weight':
+ 'output_blocks.7.1.transformer_blocks.0.attn2.to_k.lora_A.0_SwiftLoRA.weight',
+ 'up_blocks_2_attentions_1_transformer_blocks_0_attn2_to_k.lora_up.weight':
+ 'output_blocks.7.1.transformer_blocks.0.attn2.to_k.lora_B.0_SwiftLoRA.weight',
+ 'up_blocks_2_attentions_1_transformer_blocks_0_attn2_to_v.lora_down.weight':
+ 'output_blocks.7.1.transformer_blocks.0.attn2.to_v.lora_A.0_SwiftLoRA.weight',
+ 'up_blocks_2_attentions_1_transformer_blocks_0_attn2_to_v.lora_up.weight':
+ 'output_blocks.7.1.transformer_blocks.0.attn2.to_v.lora_B.0_SwiftLoRA.weight',
+ 'up_blocks_2_attentions_1_transformer_blocks_0_attn2_to_out_0.lora_down.weight':
+ 'output_blocks.7.1.transformer_blocks.0.attn2.to_out.0.lora_A.0_SwiftLoRA.weight',
+ 'up_blocks_2_attentions_1_transformer_blocks_0_attn2_to_out_0.lora_up.weight':
+ 'output_blocks.7.1.transformer_blocks.0.attn2.to_out.0.lora_B.0_SwiftLoRA.weight',
+ 'up_blocks_2_attentions_2_transformer_blocks_0_attn1_to_q.lora_down.weight':
+ 'output_blocks.8.1.transformer_blocks.0.attn1.to_q.lora_A.0_SwiftLoRA.weight',
+ 'up_blocks_2_attentions_2_transformer_blocks_0_attn1_to_q.lora_up.weight':
+ 'output_blocks.8.1.transformer_blocks.0.attn1.to_q.lora_B.0_SwiftLoRA.weight',
+ 'up_blocks_2_attentions_2_transformer_blocks_0_attn1_to_k.lora_down.weight':
+ 'output_blocks.8.1.transformer_blocks.0.attn1.to_k.lora_A.0_SwiftLoRA.weight',
+ 'up_blocks_2_attentions_2_transformer_blocks_0_attn1_to_k.lora_up.weight':
+ 'output_blocks.8.1.transformer_blocks.0.attn1.to_k.lora_B.0_SwiftLoRA.weight',
+ 'up_blocks_2_attentions_2_transformer_blocks_0_attn1_to_v.lora_down.weight':
+ 'output_blocks.8.1.transformer_blocks.0.attn1.to_v.lora_A.0_SwiftLoRA.weight',
+ 'up_blocks_2_attentions_2_transformer_blocks_0_attn1_to_v.lora_up.weight':
+ 'output_blocks.8.1.transformer_blocks.0.attn1.to_v.lora_B.0_SwiftLoRA.weight',
+ 'up_blocks_2_attentions_2_transformer_blocks_0_attn1_to_out_0.lora_down.weight':
+ 'output_blocks.8.1.transformer_blocks.0.attn1.to_out.0.lora_A.0_SwiftLoRA.weight',
+ 'up_blocks_2_attentions_2_transformer_blocks_0_attn1_to_out_0.lora_up.weight':
+ 'output_blocks.8.1.transformer_blocks.0.attn1.to_out.0.lora_B.0_SwiftLoRA.weight',
+ 'up_blocks_2_attentions_2_transformer_blocks_0_ff_net_0_proj.lora_down.weight':
+ 'output_blocks.8.1.transformer_blocks.0.ff.net.0.proj.lora_A.0_SwiftLoRA.weight',
+ 'up_blocks_2_attentions_2_transformer_blocks_0_ff_net_0_proj.lora_up.weight':
+ 'output_blocks.8.1.transformer_blocks.0.ff.net.0.proj.lora_B.0_SwiftLoRA.weight',
+ 'up_blocks_2_attentions_2_transformer_blocks_0_ff_net_2.lora_down.weight':
+ 'output_blocks.8.1.transformer_blocks.0.ff.net.2.lora_A.0_SwiftLoRA.weight',
+ 'up_blocks_2_attentions_2_transformer_blocks_0_ff_net_2.lora_up.weight':
+ 'output_blocks.8.1.transformer_blocks.0.ff.net.2.lora_B.0_SwiftLoRA.weight',
+ 'up_blocks_2_attentions_2_transformer_blocks_0_attn2_to_q.lora_down.weight':
+ 'output_blocks.8.1.transformer_blocks.0.attn2.to_q.lora_A.0_SwiftLoRA.weight',
+ 'up_blocks_2_attentions_2_transformer_blocks_0_attn2_to_q.lora_up.weight':
+ 'output_blocks.8.1.transformer_blocks.0.attn2.to_q.lora_B.0_SwiftLoRA.weight',
+ 'up_blocks_2_attentions_2_transformer_blocks_0_attn2_to_k.lora_down.weight':
+ 'output_blocks.8.1.transformer_blocks.0.attn2.to_k.lora_A.0_SwiftLoRA.weight',
+ 'up_blocks_2_attentions_2_transformer_blocks_0_attn2_to_k.lora_up.weight':
+ 'output_blocks.8.1.transformer_blocks.0.attn2.to_k.lora_B.0_SwiftLoRA.weight',
+ 'up_blocks_2_attentions_2_transformer_blocks_0_attn2_to_v.lora_down.weight':
+ 'output_blocks.8.1.transformer_blocks.0.attn2.to_v.lora_A.0_SwiftLoRA.weight',
+ 'up_blocks_2_attentions_2_transformer_blocks_0_attn2_to_v.lora_up.weight':
+ 'output_blocks.8.1.transformer_blocks.0.attn2.to_v.lora_B.0_SwiftLoRA.weight',
+ 'up_blocks_2_attentions_2_transformer_blocks_0_attn2_to_out_0.lora_down.weight':
+ 'output_blocks.8.1.transformer_blocks.0.attn2.to_out.0.lora_A.0_SwiftLoRA.weight',
+ 'up_blocks_2_attentions_2_transformer_blocks_0_attn2_to_out_0.lora_up.weight':
+ 'output_blocks.8.1.transformer_blocks.0.attn2.to_out.0.lora_B.0_SwiftLoRA.weight',
+ 'up_blocks_3_attentions_0_transformer_blocks_0_attn1_to_q.lora_down.weight':
+ 'output_blocks.9.1.transformer_blocks.0.attn1.to_q.lora_A.0_SwiftLoRA.weight',
+ 'up_blocks_3_attentions_0_transformer_blocks_0_attn1_to_q.lora_up.weight':
+ 'output_blocks.9.1.transformer_blocks.0.attn1.to_q.lora_B.0_SwiftLoRA.weight',
+ 'up_blocks_3_attentions_0_transformer_blocks_0_attn1_to_k.lora_down.weight':
+ 'output_blocks.9.1.transformer_blocks.0.attn1.to_k.lora_A.0_SwiftLoRA.weight',
+ 'up_blocks_3_attentions_0_transformer_blocks_0_attn1_to_k.lora_up.weight':
+ 'output_blocks.9.1.transformer_blocks.0.attn1.to_k.lora_B.0_SwiftLoRA.weight',
+ 'up_blocks_3_attentions_0_transformer_blocks_0_attn1_to_v.lora_down.weight':
+ 'output_blocks.9.1.transformer_blocks.0.attn1.to_v.lora_A.0_SwiftLoRA.weight',
+ 'up_blocks_3_attentions_0_transformer_blocks_0_attn1_to_v.lora_up.weight':
+ 'output_blocks.9.1.transformer_blocks.0.attn1.to_v.lora_B.0_SwiftLoRA.weight',
+ 'up_blocks_3_attentions_0_transformer_blocks_0_attn1_to_out_0.lora_down.weight':
+ 'output_blocks.9.1.transformer_blocks.0.attn1.to_out.0.lora_A.0_SwiftLoRA.weight',
+ 'up_blocks_3_attentions_0_transformer_blocks_0_attn1_to_out_0.lora_up.weight':
+ 'output_blocks.9.1.transformer_blocks.0.attn1.to_out.0.lora_B.0_SwiftLoRA.weight',
+ 'up_blocks_3_attentions_0_transformer_blocks_0_ff_net_0_proj.lora_down.weight':
+ 'output_blocks.9.1.transformer_blocks.0.ff.net.0.proj.lora_A.0_SwiftLoRA.weight',
+ 'up_blocks_3_attentions_0_transformer_blocks_0_ff_net_0_proj.lora_up.weight':
+ 'output_blocks.9.1.transformer_blocks.0.ff.net.0.proj.lora_B.0_SwiftLoRA.weight',
+ 'up_blocks_3_attentions_0_transformer_blocks_0_ff_net_2.lora_down.weight':
+ 'output_blocks.9.1.transformer_blocks.0.ff.net.2.lora_A.0_SwiftLoRA.weight',
+ 'up_blocks_3_attentions_0_transformer_blocks_0_ff_net_2.lora_up.weight':
+ 'output_blocks.9.1.transformer_blocks.0.ff.net.2.lora_B.0_SwiftLoRA.weight',
+ 'up_blocks_3_attentions_0_transformer_blocks_0_attn2_to_q.lora_down.weight':
+ 'output_blocks.9.1.transformer_blocks.0.attn2.to_q.lora_A.0_SwiftLoRA.weight',
+ 'up_blocks_3_attentions_0_transformer_blocks_0_attn2_to_q.lora_up.weight':
+ 'output_blocks.9.1.transformer_blocks.0.attn2.to_q.lora_B.0_SwiftLoRA.weight',
+ 'up_blocks_3_attentions_0_transformer_blocks_0_attn2_to_k.lora_down.weight':
+ 'output_blocks.9.1.transformer_blocks.0.attn2.to_k.lora_A.0_SwiftLoRA.weight',
+ 'up_blocks_3_attentions_0_transformer_blocks_0_attn2_to_k.lora_up.weight':
+ 'output_blocks.9.1.transformer_blocks.0.attn2.to_k.lora_B.0_SwiftLoRA.weight',
+ 'up_blocks_3_attentions_0_transformer_blocks_0_attn2_to_v.lora_down.weight':
+ 'output_blocks.9.1.transformer_blocks.0.attn2.to_v.lora_A.0_SwiftLoRA.weight',
+ 'up_blocks_3_attentions_0_transformer_blocks_0_attn2_to_v.lora_up.weight':
+ 'output_blocks.9.1.transformer_blocks.0.attn2.to_v.lora_B.0_SwiftLoRA.weight',
+ 'up_blocks_3_attentions_0_transformer_blocks_0_attn2_to_out_0.lora_down.weight':
+ 'output_blocks.9.1.transformer_blocks.0.attn2.to_out.0.lora_A.0_SwiftLoRA.weight',
+ 'up_blocks_3_attentions_0_transformer_blocks_0_attn2_to_out_0.lora_up.weight':
+ 'output_blocks.9.1.transformer_blocks.0.attn2.to_out.0.lora_B.0_SwiftLoRA.weight',
+ 'up_blocks_3_attentions_1_transformer_blocks_0_attn1_to_q.lora_down.weight':
+ 'output_blocks.10.1.transformer_blocks.0.attn1.to_q.lora_A.0_SwiftLoRA.weight',
+ 'up_blocks_3_attentions_1_transformer_blocks_0_attn1_to_q.lora_up.weight':
+ 'output_blocks.10.1.transformer_blocks.0.attn1.to_q.lora_B.0_SwiftLoRA.weight',
+ 'up_blocks_3_attentions_1_transformer_blocks_0_attn1_to_k.lora_down.weight':
+ 'output_blocks.10.1.transformer_blocks.0.attn1.to_k.lora_A.0_SwiftLoRA.weight',
+ 'up_blocks_3_attentions_1_transformer_blocks_0_attn1_to_k.lora_up.weight':
+ 'output_blocks.10.1.transformer_blocks.0.attn1.to_k.lora_B.0_SwiftLoRA.weight',
+ 'up_blocks_3_attentions_1_transformer_blocks_0_attn1_to_v.lora_down.weight':
+ 'output_blocks.10.1.transformer_blocks.0.attn1.to_v.lora_A.0_SwiftLoRA.weight',
+ 'up_blocks_3_attentions_1_transformer_blocks_0_attn1_to_v.lora_up.weight':
+ 'output_blocks.10.1.transformer_blocks.0.attn1.to_v.lora_B.0_SwiftLoRA.weight',
+ 'up_blocks_3_attentions_1_transformer_blocks_0_attn1_to_out_0.lora_down.weight':
+ 'output_blocks.10.1.transformer_blocks.0.attn1.to_out.0.lora_A.0_SwiftLoRA.weight',
+ 'up_blocks_3_attentions_1_transformer_blocks_0_attn1_to_out_0.lora_up.weight':
+ 'output_blocks.10.1.transformer_blocks.0.attn1.to_out.0.lora_B.0_SwiftLoRA.weight',
+ 'up_blocks_3_attentions_1_transformer_blocks_0_ff_net_0_proj.lora_down.weight':
+ 'output_blocks.10.1.transformer_blocks.0.ff.net.0.proj.lora_A.0_SwiftLoRA.weight',
+ 'up_blocks_3_attentions_1_transformer_blocks_0_ff_net_0_proj.lora_up.weight':
+ 'output_blocks.10.1.transformer_blocks.0.ff.net.0.proj.lora_B.0_SwiftLoRA.weight',
+ 'up_blocks_3_attentions_1_transformer_blocks_0_ff_net_2.lora_down.weight':
+ 'output_blocks.10.1.transformer_blocks.0.ff.net.2.lora_A.0_SwiftLoRA.weight',
+ 'up_blocks_3_attentions_1_transformer_blocks_0_ff_net_2.lora_up.weight':
+ 'output_blocks.10.1.transformer_blocks.0.ff.net.2.lora_B.0_SwiftLoRA.weight',
+ 'up_blocks_3_attentions_1_transformer_blocks_0_attn2_to_q.lora_down.weight':
+ 'output_blocks.10.1.transformer_blocks.0.attn2.to_q.lora_A.0_SwiftLoRA.weight',
+ 'up_blocks_3_attentions_1_transformer_blocks_0_attn2_to_q.lora_up.weight':
+ 'output_blocks.10.1.transformer_blocks.0.attn2.to_q.lora_B.0_SwiftLoRA.weight',
+ 'up_blocks_3_attentions_1_transformer_blocks_0_attn2_to_k.lora_down.weight':
+ 'output_blocks.10.1.transformer_blocks.0.attn2.to_k.lora_A.0_SwiftLoRA.weight',
+ 'up_blocks_3_attentions_1_transformer_blocks_0_attn2_to_k.lora_up.weight':
+ 'output_blocks.10.1.transformer_blocks.0.attn2.to_k.lora_B.0_SwiftLoRA.weight',
+ 'up_blocks_3_attentions_1_transformer_blocks_0_attn2_to_v.lora_down.weight':
+ 'output_blocks.10.1.transformer_blocks.0.attn2.to_v.lora_A.0_SwiftLoRA.weight',
+ 'up_blocks_3_attentions_1_transformer_blocks_0_attn2_to_v.lora_up.weight':
+ 'output_blocks.10.1.transformer_blocks.0.attn2.to_v.lora_B.0_SwiftLoRA.weight',
+ 'up_blocks_3_attentions_1_transformer_blocks_0_attn2_to_out_0.lora_down.weight':
+ 'output_blocks.10.1.transformer_blocks.0.attn2.to_out.0.lora_A.0_SwiftLoRA.weight',
+ 'up_blocks_3_attentions_1_transformer_blocks_0_attn2_to_out_0.lora_up.weight':
+ 'output_blocks.10.1.transformer_blocks.0.attn2.to_out.0.lora_B.0_SwiftLoRA.weight',
+ 'up_blocks_3_attentions_2_transformer_blocks_0_attn1_to_q.lora_down.weight':
+ 'output_blocks.11.1.transformer_blocks.0.attn1.to_q.lora_A.0_SwiftLoRA.weight',
+ 'up_blocks_3_attentions_2_transformer_blocks_0_attn1_to_q.lora_up.weight':
+ 'output_blocks.11.1.transformer_blocks.0.attn1.to_q.lora_B.0_SwiftLoRA.weight',
+ 'up_blocks_3_attentions_2_transformer_blocks_0_attn1_to_k.lora_down.weight':
+ 'output_blocks.11.1.transformer_blocks.0.attn1.to_k.lora_A.0_SwiftLoRA.weight',
+ 'up_blocks_3_attentions_2_transformer_blocks_0_attn1_to_k.lora_up.weight':
+ 'output_blocks.11.1.transformer_blocks.0.attn1.to_k.lora_B.0_SwiftLoRA.weight',
+ 'up_blocks_3_attentions_2_transformer_blocks_0_attn1_to_v.lora_down.weight':
+ 'output_blocks.11.1.transformer_blocks.0.attn1.to_v.lora_A.0_SwiftLoRA.weight',
+ 'up_blocks_3_attentions_2_transformer_blocks_0_attn1_to_v.lora_up.weight':
+ 'output_blocks.11.1.transformer_blocks.0.attn1.to_v.lora_B.0_SwiftLoRA.weight',
+ 'up_blocks_3_attentions_2_transformer_blocks_0_attn1_to_out_0.lora_down.weight':
+ 'output_blocks.11.1.transformer_blocks.0.attn1.to_out.0.lora_A.0_SwiftLoRA.weight',
+ 'up_blocks_3_attentions_2_transformer_blocks_0_attn1_to_out_0.lora_up.weight':
+ 'output_blocks.11.1.transformer_blocks.0.attn1.to_out.0.lora_B.0_SwiftLoRA.weight',
+ 'up_blocks_3_attentions_2_transformer_blocks_0_ff_net_0_proj.lora_down.weight':
+ 'output_blocks.11.1.transformer_blocks.0.ff.net.0.proj.lora_A.0_SwiftLoRA.weight',
+ 'up_blocks_3_attentions_2_transformer_blocks_0_ff_net_0_proj.lora_up.weight':
+ 'output_blocks.11.1.transformer_blocks.0.ff.net.0.proj.lora_B.0_SwiftLoRA.weight',
+ 'up_blocks_3_attentions_2_transformer_blocks_0_ff_net_2.lora_down.weight':
+ 'output_blocks.11.1.transformer_blocks.0.ff.net.2.lora_A.0_SwiftLoRA.weight',
+ 'up_blocks_3_attentions_2_transformer_blocks_0_ff_net_2.lora_up.weight':
+ 'output_blocks.11.1.transformer_blocks.0.ff.net.2.lora_B.0_SwiftLoRA.weight',
+ 'up_blocks_3_attentions_2_transformer_blocks_0_attn2_to_q.lora_down.weight':
+ 'output_blocks.11.1.transformer_blocks.0.attn2.to_q.lora_A.0_SwiftLoRA.weight',
+ 'up_blocks_3_attentions_2_transformer_blocks_0_attn2_to_q.lora_up.weight':
+ 'output_blocks.11.1.transformer_blocks.0.attn2.to_q.lora_B.0_SwiftLoRA.weight',
+ 'up_blocks_3_attentions_2_transformer_blocks_0_attn2_to_k.lora_down.weight':
+ 'output_blocks.11.1.transformer_blocks.0.attn2.to_k.lora_A.0_SwiftLoRA.weight',
+ 'up_blocks_3_attentions_2_transformer_blocks_0_attn2_to_k.lora_up.weight':
+ 'output_blocks.11.1.transformer_blocks.0.attn2.to_k.lora_B.0_SwiftLoRA.weight',
+ 'up_blocks_3_attentions_2_transformer_blocks_0_attn2_to_v.lora_down.weight':
+ 'output_blocks.11.1.transformer_blocks.0.attn2.to_v.lora_A.0_SwiftLoRA.weight',
+ 'up_blocks_3_attentions_2_transformer_blocks_0_attn2_to_v.lora_up.weight':
+ 'output_blocks.11.1.transformer_blocks.0.attn2.to_v.lora_B.0_SwiftLoRA.weight',
+ 'up_blocks_3_attentions_2_transformer_blocks_0_attn2_to_out_0.lora_down.weight':
+ 'output_blocks.11.1.transformer_blocks.0.attn2.to_out.0.lora_A.0_SwiftLoRA.weight',
+ 'up_blocks_3_attentions_2_transformer_blocks_0_attn2_to_out_0.lora_up.weight':
+ 'output_blocks.11.1.transformer_blocks.0.attn2.to_out.0.lora_B.0_SwiftLoRA.weight'
+}
+
+
+def convert_tuner_civitai_to_scepter(ckpt):
+ params_dict = CIVITAI_TO_SCEPTER_PARAMS_DICT
+ swift_lora, lora_config = {}, {}
+ lora_config = {
+ 'alpha_pattern': {},
+ 'auto_mapping': None,
+ 'base_model_name_or_path': None,
+ 'bias': 'none',
+ 'enable_lora': None,
+ 'fan_in_fan_out': False,
+ 'inference_mode': False,
+ 'init_lora_weights': True,
+ 'layer_replication': None,
+ 'layers_pattern': None,
+ 'layers_to_transform': None,
+ 'loftq_config': {},
+ 'lora_alpha': 256,
+ 'lora_dropout': 0.0,
+ 'lora_dtype': None,
+ 'lorap_emb_lr': 1e-06,
+ 'lorap_lr_ratio': 16.0,
+ 'megatron_config': None,
+ 'megatron_core': 'megatron.core',
+ 'model_key_mapping': None,
+ 'modules_to_save': None,
+ 'peft_type': 'LORA',
+ 'r': 256,
+ 'rank_pattern': {},
+ 'revision': None,
+ 'swift_type': 'LORA',
+ 'target_modules':
+ '(cond_stage_model.*(q_proj|k_proj|v_proj|out_proj|mlp.fc1|mlp.fc2))|(model.*(to_q|to_k|to_v|to_out.0|net.0.proj|net.2))$', # noqa
+ 'task_type': None,
+ 'use_dora': False,
+ 'use_merged_linear': False,
+ 'use_qa_lora': False,
+ 'use_rslora': False,
+ }
+ alpha, r = -1, -1
+ unload_params = []
+ for k, v in ckpt.items():
+ if k[len('lora_unet_'):] in params_dict and 'lora_unet' in k:
+ swift_key = 'model.' + params_dict[k[len('lora_unet_'):]]
+ swift_lora[swift_key] = v
+ elif 'lora_te' in k:
+ # 'lora_te_text_model_encoder_layers_0_mlp_fc1.lora_down.weight'
+ # 'cond_stage_model.transformer.text_model.encoder.layers.0.self_attn.k_proj.lora_A.0_SwiftLoRA.weight'
+ swift_key = k.replace('lora_te_',
+ 'transformer.') # .replace('_', '.')
+ swift_key = swift_key.replace('lora_down', 'lora_A').replace(
+ 'lora_up', 'lora_B')
+ swift_key = swift_key.replace('_', '.').replace(
+ '.model', '_model').replace('.A', '_A').replace('.B', '_B')
+ swift_key = swift_key.replace('self.',
+ 'self_').replace('.proj', '_proj')
+ swift_key = 'cond_stage_model.' + swift_key.replace(
+ '.weight', '.0_SwiftLoRA.weight')
+ swift_lora[swift_key] = v
+ elif 'alpha' not in k:
+ unload_params.append(k)
+ if 'alpha' in k and alpha == -1:
+ alpha = v.item()
+ if 'lora_down' in k and r == -1:
+ r = v.size(0)
+ assert r != -1 and alpha != -1
+ lora_config['r'] = r
+ lora_config['lora_alpha'] = alpha
+
+ return lora_config, swift_lora, unload_params
+
+
+def convert_lora_checkpoint(ckpt_text=None,
+ ckpt_unet=None,
+ lora_prefix_text='lora_te',
+ lora_prefix_unet='lora_unet'):
+ model_dict = {}
+ if ckpt_text is not None:
+ for key, val in ckpt_text.items():
+ key = (lora_prefix_text + '.' + key).replace('.', '_').replace(
+ '_0_SwiftLoRA_weight', '')
+ if key.endswith('_lora_A'):
+ key = key.replace('_lora_A', '.lora_down.weight')
+ if key.endswith('_lora_B'):
+ key = key.replace('_lora_B', '.lora_up.weight')
+ model_dict[key] = val
+ if ckpt_unet is not None:
+ for key, val in ckpt_unet.items():
+ key = (lora_prefix_unet + '.' + key).replace('.', '_').replace(
+ '_0_SwiftLoRA_weight', '')
+ if key.endswith('_lora_A'):
+ key = key.replace('_lora_A', '.lora_down.weight')
+ if key.endswith('_lora_B'):
+ key = key.replace('_lora_B', '.lora_up.weight')
+ model_dict[key] = val
+
+ return model_dict
+
+
+def create_unet_diffusers_config(v2):
+ """
+ Creates a config for the diffusers based on the config of the LDM model.
+ """
+ # unet_params = original_config.model.params.unet_config.params
+
+ block_out_channels = [
+ UNET_PARAMS_MODEL_CHANNELS * mult for mult in UNET_PARAMS_CHANNEL_MULT
+ ]
+
+ down_block_types = []
+ resolution = 1
+ for i in range(len(block_out_channels)):
+ block_type = 'CrossAttnDownBlock2D' if resolution in UNET_PARAMS_ATTENTION_RESOLUTIONS else 'DownBlock2D'
+ down_block_types.append(block_type)
+ if i != len(block_out_channels) - 1:
+ resolution *= 2
+
+ up_block_types = []
+ for i in range(len(block_out_channels)):
+ block_type = 'CrossAttnUpBlock2D' if resolution in UNET_PARAMS_ATTENTION_RESOLUTIONS else 'UpBlock2D'
+ up_block_types.append(block_type)
+ resolution //= 2
+
+ config = dict(
+ sample_size=UNET_PARAMS_IMAGE_SIZE,
+ in_channels=UNET_PARAMS_IN_CHANNELS,
+ out_channels=UNET_PARAMS_OUT_CHANNELS,
+ down_block_types=tuple(down_block_types),
+ up_block_types=tuple(up_block_types),
+ block_out_channels=tuple(block_out_channels),
+ layers_per_block=UNET_PARAMS_NUM_RES_BLOCKS,
+ cross_attention_dim=UNET_PARAMS_CONTEXT_DIM
+ if not v2 else V2_UNET_PARAMS_CONTEXT_DIM,
+ attention_head_dim=UNET_PARAMS_NUM_HEADS
+ if not v2 else V2_UNET_PARAMS_ATTENTION_HEAD_DIM,
+ )
+
+ return config
+
+
+def convert_ldm_clip_checkpoint_v1(checkpoint):
+ keys = list(checkpoint.keys())
+ text_model_dict = {}
+ for key in keys:
+ if key.startswith('cond_stage_model.transformer'):
+ text_model_dict[
+ key[len('cond_stage_model.transformer.'):]] = checkpoint[key]
+ return text_model_dict
+
+
+def convert_ldm_unet_tuner_checkpoint(v2,
+ checkpoint,
+ config,
+ unet_key='model.diffusion_model.'):
+ """
+ Takes a state dict and a config, and returns a converted checkpoint.
+ """
+
+ # extract state_dict for UNet
+ unet_state_dict = {}
+ keys = list(checkpoint.keys())
+ for key in keys:
+ if key.startswith(unet_key):
+ unet_state_dict[key.replace(unet_key, '')] = checkpoint.pop(key)
+
+ new_checkpoint = {}
+
+ if 'time_embed.0.weight' in unet_state_dict:
+ new_checkpoint['time_embedding.linear_1.weight'] = unet_state_dict[
+ 'time_embed.0.weight']
+ if 'time_embedding.linear_1.bias' in unet_state_dict:
+ new_checkpoint['time_embedding.linear_1.bias'] = unet_state_dict[
+ 'time_embed.0.bias']
+ if 'time_embedding.linear_2.weight' in unet_state_dict:
+ new_checkpoint['time_embedding.linear_2.weight'] = unet_state_dict[
+ 'time_embed.2.weight']
+ if 'time_embedding.linear_2.bias' in unet_state_dict:
+ new_checkpoint['time_embedding.linear_2.bias'] = unet_state_dict[
+ 'time_embed.2.bias']
+
+ if 'conv_in.weight' in unet_state_dict:
+ new_checkpoint['conv_in.weight'] = unet_state_dict[
+ 'input_blocks.0.0.weight']
+ if 'conv_in.bias' in unet_state_dict:
+ new_checkpoint['conv_in.bias'] = unet_state_dict[
+ 'input_blocks.0.0.bias']
+
+ if 'conv_norm_out.weight' in unet_state_dict:
+ new_checkpoint['conv_norm_out.weight'] = unet_state_dict[
+ 'out.0.weight']
+ if 'conv_norm_out.bias' in unet_state_dict:
+ new_checkpoint['conv_norm_out.bias'] = unet_state_dict['out.0.bias']
+ if 'conv_out.weight' in unet_state_dict:
+ new_checkpoint['conv_out.weight'] = unet_state_dict['out.2.weight']
+ if 'conv_out.bias' in unet_state_dict:
+ new_checkpoint['conv_out.bias'] = unet_state_dict['out.2.bias']
+
+ # Retrieves the keys for the input blocks only
+ # num_input_blocks_list = len({".".join(layer.split(".")[]) for layer in unet_state_dict
+ # if "input_blocks" in layer})
+ num_input_blocks_list = set([
+ int(layer.split('.')[1]) for layer in unet_state_dict
+ if 'input_blocks' in layer
+ ])
+ input_blocks = {
+ layer_id:
+ [key for key in unet_state_dict if f'input_blocks.{layer_id}.' in key]
+ for layer_id in num_input_blocks_list
+ }
+
+ # Retrieves the keys for the middle blocks only
+ # num_middle_blocks_list = len({".".join(layer.split(".")[:2]) for layer in unet_state_dict
+ # if "middle_block" in layer})
+ num_middle_blocks_list = set([
+ int(layer.split('.')[1]) for layer in unet_state_dict
+ if 'middle_block' in layer
+ ])
+ middle_blocks = {
+ layer_id:
+ [key for key in unet_state_dict if f'middle_block.{layer_id}.' in key]
+ for layer_id in num_middle_blocks_list
+ }
+
+ # Retrieves the keys for the output blocks only
+ # num_output_blocks_list = len({".".join(layer.split(".")[:2]) for layer in unet_state_dict
+ # if "output_blocks" in layer})
+ num_output_blocks_list = set([
+ int(layer.split('.')[1]) for layer in unet_state_dict
+ if 'output_blocks' in layer
+ ])
+ output_blocks = {
+ layer_id: [
+ key for key in unet_state_dict
+ if f'output_blocks.{layer_id}.' in key
+ ]
+ for layer_id in num_output_blocks_list
+ }
+
+ for i in num_input_blocks_list:
+ block_id = (i - 1) // (config['layers_per_block'] + 1)
+ layer_in_block_id = (i - 1) % (config['layers_per_block'] + 1)
+
+ resnets = [
+ key for key in input_blocks[i] if f'input_blocks.{i}.0' in key
+ and f'input_blocks.{i}.0.op' not in key
+ ]
+ attentions = [
+ key for key in input_blocks[i] if f'input_blocks.{i}.1' in key
+ ]
+
+ if f'input_blocks.{i}.0.op.weight' in unet_state_dict:
+ new_checkpoint[
+ f'down_blocks.{block_id}.downsamplers.0.conv.weight'] = unet_state_dict.pop(
+ f'input_blocks.{i}.0.op.weight')
+ new_checkpoint[
+ f'down_blocks.{block_id}.downsamplers.0.conv.bias'] = unet_state_dict.pop(
+ f'input_blocks.{i}.0.op.bias')
+
+ paths = renew_resnet_paths(resnets)
+ meta_path = {
+ 'old': f'input_blocks.{i}.0',
+ 'new': f'down_blocks.{block_id}.resnets.{layer_in_block_id}'
+ }
+ assign_to_checkpoint(paths,
+ new_checkpoint,
+ unet_state_dict,
+ additional_replacements=[meta_path],
+ config=config)
+
+ if len(attentions):
+ paths = renew_attention_paths(attentions)
+ meta_path = {
+ 'old': f'input_blocks.{i}.1',
+ 'new': f'down_blocks.{block_id}.attentions.{layer_in_block_id}'
+ }
+ assign_to_checkpoint(paths,
+ new_checkpoint,
+ unet_state_dict,
+ additional_replacements=[meta_path],
+ config=config)
+
+ if 0 in middle_blocks:
+ resnet_0 = middle_blocks[0]
+ resnet_0_paths = renew_resnet_paths(resnet_0)
+ assign_to_checkpoint(resnet_0_paths,
+ new_checkpoint,
+ unet_state_dict,
+ config=config)
+
+ if 2 in middle_blocks:
+ resnet_1 = middle_blocks[2]
+ resnet_1_paths = renew_resnet_paths(resnet_1)
+ assign_to_checkpoint(resnet_1_paths,
+ new_checkpoint,
+ unet_state_dict,
+ config=config)
+
+ if 1 in middle_blocks:
+ attentions = middle_blocks[1]
+ attentions_paths = renew_attention_paths(attentions)
+ meta_path = {'old': 'middle_block.1', 'new': 'mid_block.attentions.0'}
+ assign_to_checkpoint(attentions_paths,
+ new_checkpoint,
+ unet_state_dict,
+ additional_replacements=[meta_path],
+ config=config)
+
+ for i in num_output_blocks_list:
+ block_id = i // (config['layers_per_block'] + 1)
+ layer_in_block_id = i % (config['layers_per_block'] + 1)
+ output_block_layers = [
+ shave_segments(name, 2) for name in output_blocks[i]
+ ]
+ output_block_list = {}
+
+ for layer in output_block_layers:
+ layer_id, layer_name = layer.split('.')[0], shave_segments(
+ layer, 1)
+ if layer_id in output_block_list:
+ output_block_list[layer_id].append(layer_name)
+ else:
+ output_block_list[layer_id] = [layer_name]
+
+ # if len(output_block_list) > 1:
+ if len(output_block_list) > 1 or (len(output_block_list) == 1
+ and '1' in output_block_list):
+ resnets = [
+ key for key in output_blocks[i]
+ if f'output_blocks.{i}.0' in key
+ ]
+ attentions = [
+ key for key in output_blocks[i]
+ if f'output_blocks.{i}.1' in key
+ ]
+
+ resnet_0_paths = renew_resnet_paths(resnets)
+ paths = renew_resnet_paths(resnets)
+
+ meta_path = {
+ 'old': f'output_blocks.{i}.0',
+ 'new': f'up_blocks.{block_id}.resnets.{layer_in_block_id}'
+ }
+ assign_to_checkpoint(paths,
+ new_checkpoint,
+ unet_state_dict,
+ additional_replacements=[meta_path],
+ config=config)
+
+ # if ["conv.weight", "conv.bias"] in output_block_list.values():
+ # index = list(output_block_list.values()).index(["conv.weight", "conv.bias"])
+
+ for v in output_block_list.values():
+ v.sort()
+
+ if ['conv.bias', 'conv.weight'] in output_block_list.values():
+ index = list(output_block_list.values()).index(
+ ['conv.bias', 'conv.weight'])
+ new_checkpoint[
+ f'up_blocks.{block_id}.upsamplers.0.conv.bias'] = unet_state_dict[
+ f'output_blocks.{i}.{index}.conv.bias']
+ new_checkpoint[
+ f'up_blocks.{block_id}.upsamplers.0.conv.weight'] = unet_state_dict[
+ f'output_blocks.{i}.{index}.conv.weight']
+
+ # Clear attentions as they have been attributed above.
+ if len(attentions) == 2:
+ attentions = []
+
+ if len(attentions):
+ paths = renew_attention_paths(attentions)
+ meta_path = {
+ 'old': f'output_blocks.{i}.1',
+ 'new':
+ f'up_blocks.{block_id}.attentions.{layer_in_block_id}',
+ }
+ assign_to_checkpoint(paths,
+ new_checkpoint,
+ unet_state_dict,
+ additional_replacements=[meta_path],
+ config=config)
+ else:
+ resnet_0_paths = renew_resnet_paths(output_block_layers,
+ n_shave_prefix_segments=1)
+ for path in resnet_0_paths:
+ old_path = '.'.join(['output_blocks', str(i), path['old']])
+ new_path = '.'.join([
+ 'up_blocks',
+ str(block_id), 'resnets',
+ str(layer_in_block_id), path['new']
+ ])
+
+ new_checkpoint[new_path] = unet_state_dict[old_path]
+
+ if v2:
+ linear_transformer_to_conv(new_checkpoint)
+
+ return new_checkpoint
+
+
+def renew_resnet_paths(old_list, n_shave_prefix_segments=0):
+ """
+ Updates paths inside resnets to the new naming scheme (local renaming)
+ """
+ mapping = []
+ for old_item in old_list:
+ new_item = old_item.replace('in_layers.0', 'norm1')
+ new_item = new_item.replace('in_layers.2', 'conv1')
+
+ new_item = new_item.replace('out_layers.0', 'norm2')
+ new_item = new_item.replace('out_layers.3', 'conv2')
+
+ new_item = new_item.replace('emb_layers.1', 'time_emb_proj')
+ new_item = new_item.replace('skip_connection', 'conv_shortcut')
+
+ new_item = shave_segments(
+ new_item, n_shave_prefix_segments=n_shave_prefix_segments)
+
+ mapping.append({'old': old_item, 'new': new_item})
+
+ return mapping
+
+
+def linear_transformer_to_conv(checkpoint):
+ keys = list(checkpoint.keys())
+ tf_keys = ['proj_in.weight', 'proj_out.weight']
+ for key in keys:
+ if '.'.join(key.split('.')[-2:]) in tf_keys:
+ if checkpoint[key].ndim == 2:
+ checkpoint[key] = checkpoint[key].unsqueeze(2).unsqueeze(2)
+
+
+def assign_to_checkpoint(paths,
+ checkpoint,
+ old_checkpoint,
+ attention_paths_to_split=None,
+ additional_replacements=None,
+ config=None):
+ """
+ This does the final conversion step: take locally converted weights and apply a global renaming
+ to them. It splits attention layers, and takes into account additional replacements
+ that may arise.
+
+ Assigns the weights to the new checkpoint.
+ """
+ assert isinstance(
+ paths, list
+ ), "Paths should be a list of dicts containing 'old' and 'new' keys."
+
+ # Splits the attention layers into three variables.
+ if attention_paths_to_split is not None:
+ for path, path_map in attention_paths_to_split.items():
+ old_tensor = old_checkpoint[path]
+ channels = old_tensor.shape[0] // 3
+
+ target_shape = (-1,
+ channels) if len(old_tensor.shape) == 3 else (-1)
+
+ num_heads = old_tensor.shape[0] // config['num_head_channels'] // 3
+
+ old_tensor = old_tensor.reshape((num_heads, 3 * channels //
+ num_heads) + old_tensor.shape[1:])
+ query, key, value = old_tensor.split(channels // num_heads, dim=1)
+
+ checkpoint[path_map['query']] = query.reshape(target_shape)
+ checkpoint[path_map['key']] = key.reshape(target_shape)
+ checkpoint[path_map['value']] = value.reshape(target_shape)
+
+ for path in paths:
+ new_path = path['new']
+
+ # These have already been assigned
+ if attention_paths_to_split is not None and new_path in attention_paths_to_split:
+ continue
+
+ # Global renaming happens here
+ new_path = new_path.replace('middle_block.0', 'mid_block.resnets.0')
+ new_path = new_path.replace('middle_block.1', 'mid_block.attentions.0')
+ new_path = new_path.replace('middle_block.2', 'mid_block.resnets.1')
+
+ if additional_replacements is not None:
+ for replacement in additional_replacements:
+ new_path = new_path.replace(replacement['old'],
+ replacement['new'])
+
+ # proj_attn.weight has to be converted from conv 1D to linear
+ if 'proj_attn.weight' in new_path:
+ checkpoint[new_path] = old_checkpoint[path['old']][:, :, 0]
+ else:
+ checkpoint[new_path] = old_checkpoint[path['old']]
+
+
+def shave_segments(path, n_shave_prefix_segments=1):
+ """
+ Removes segments. Positive values shave the first segments, negative shave the last segments.
+ """
+ if n_shave_prefix_segments >= 0:
+ return '.'.join(path.split('.')[n_shave_prefix_segments:])
+ else:
+ return '.'.join(path.split('.')[:n_shave_prefix_segments])
+
+
+def renew_attention_paths(old_list, n_shave_prefix_segments=0):
+ """
+ Updates paths inside attentions to the new naming scheme (local renaming)
+ """
+ mapping = []
+ for old_item in old_list:
+ new_item = old_item
+
+ # new_item = new_item.replace('norm.weight', 'group_norm.weight')
+ # new_item = new_item.replace('norm.bias', 'group_norm.bias')
+
+ # new_item = new_item.replace('proj_out.weight', 'proj_attn.weight')
+ # new_item = new_item.replace('proj_out.bias', 'proj_attn.bias')
+
+ # new_item = shave_segments(new_item, n_shave_prefix_segments=n_shave_prefix_segments)
+
+ mapping.append({'old': old_item, 'new': new_item})
+
+ return mapping
diff --git a/scepter/modules/utils/probe.py b/scepter/modules/utils/probe.py
index 2dc7dcc..cbdefe2 100644
--- a/scepter/modules/utils/probe.py
+++ b/scepter/modules/utils/probe.py
@@ -7,7 +7,6 @@ from numbers import Number
import numpy as np
import torch
from PIL import Image
-
from scepter.modules.utils.file_system import FS
@@ -200,18 +199,18 @@ class ProbeData():
build_label, dict)
self.build_label = build_label
- def save_image(self, file_prefix, images):
+ def save_image(self, file_prefix, images, image_postfix):
np_shape = images.shape
# 4D
shape_str = '_'.join([str(v) for v in np_shape])
if len(np_shape) == 4:
# channel is 1 or 3
- if np_shape[-1] == 1 or np_shape[-1] == 3:
+ if np_shape[-1] == 1 or np_shape[-1] == 3 or np_shape[-1] == 4:
if np_shape[-1] == 1:
images = images.reshape(images.shape[:-1])
file_list = []
for idx in range(np_shape[0]):
- file_path = file_prefix + f'_probe_{idx}_[{shape_str}].jpg'
+ file_path = file_prefix + f'_probe_{idx}_[{shape_str}].{image_postfix}'
with FS.put_to(file_path) as local_path:
Image.fromarray(images[idx, ...]).save(local_path)
file_list.append(file_path)
@@ -219,18 +218,18 @@ class ProbeData():
else:
raise f"Ensure your data's dim is BWHC, and channel is 1 or 3 for {file_prefix}"
elif len(np_shape) == 3:
- if np_shape[-1] == 1 or np_shape[-1] == 3:
+ if np_shape[-1] == 1 or np_shape[-1] == 3 or np_shape[-1] == 4:
if np_shape[-1] == 1:
images = images.reshape(images.shape[:-1])
- file_path = file_prefix + f'_probe_[{shape_str}].jpg'
+ file_path = file_prefix + f'_probe_[{shape_str}].{image_postfix}'
with FS.put_to(file_path) as local_path:
Image.fromarray(images).save(local_path)
return file_path
else:
images = images.reshape(list(images.shape) + [1])
- return self.save_image(file_prefix, images)
+ return self.save_image(file_prefix, images, image_postfix)
elif len(np_shape) == 2:
- file_path = file_prefix + f'_probe_[{shape_str}].jpg'
+ file_path = file_prefix + f'_probe_[{shape_str}].{image_postfix}'
with FS.put_to(file_path) as local_path:
Image.fromarray(images).save(local_path)
return file_path
@@ -278,13 +277,13 @@ class ProbeData():
def distribute(self):
return self._distribute_dict
- def to_log(self, prefix=None):
+ def to_log(self, prefix=None, image_postfix='jpg'):
if isinstance(self.data, np.ndarray):
if prefix is None:
raise 'You should provide the save prefix for array sample.'
# save jpg
if self.is_image:
- ret_data = self.save_image(prefix, self.data)
+ ret_data = self.save_image(prefix, self.data, image_postfix)
if isinstance(ret_data, list):
ret_data = [ret_data]
if self.build_html:
@@ -314,7 +313,8 @@ class ProbeData():
for idx, v in enumerate(self.data):
prefix_path = os.path.join(prefix, f'{idx}')
if self.is_image:
- ret_images = self.save_image(prefix_path, v)
+ ret_images = self.save_image(prefix_path, v,
+ image_postfix)
ret_data.append(ret_images if isinstance(
ret_images, list) else [ret_images])
if self.build_html:
@@ -354,7 +354,8 @@ class ProbeData():
for k, v in self.data:
prefix_path = os.path.join(prefix, f'{k}_')
if self.is_image:
- ret_images = self.save_image(prefix_path, v)
+ ret_images = self.save_image(prefix_path, v,
+ image_postfix)
if isinstance(ret_images, list):
ret_data.append(ret_images)
else:
diff --git a/scepter/modules/utils/video_reader/frame_sampler.py b/scepter/modules/utils/video_reader/frame_sampler.py
index 943eb12..aea2687 100644
--- a/scepter/modules/utils/video_reader/frame_sampler.py
+++ b/scepter/modules/utils/video_reader/frame_sampler.py
@@ -53,7 +53,6 @@ import math
import random
import torch
-
from scepter.modules.utils.config import Config
from scepter.modules.utils.registry import Registry
diff --git a/scepter/modules/utils/video_reader/video_reader.py b/scepter/modules/utils/video_reader/video_reader.py
index ff6684e..3fad856 100644
--- a/scepter/modules/utils/video_reader/video_reader.py
+++ b/scepter/modules/utils/video_reader/video_reader.py
@@ -9,7 +9,6 @@ import cv2
import numpy as np
import torch
import torch.utils.dlpack as dlpack
-
from scepter.modules.utils.file_system import FS
from scepter.modules.utils.video_reader.frame_sampler import do_frame_sample
diff --git a/scepter/studio/home/home.py b/scepter/studio/home/home.py
index 9b87e80..0c48594 100644
--- a/scepter/studio/home/home.py
+++ b/scepter/studio/home/home.py
@@ -2,7 +2,6 @@
# Copyright (c) Alibaba, Inc. and its affiliates.
import gradio as gr
-
from scepter.modules.utils.config import Config
from scepter.studio.home.home_ui.desc_ui import DescUI
from scepter.studio.home.home_ui.guide_ui import GuideUI
diff --git a/scepter/studio/home/home_ui/desc_ui.py b/scepter/studio/home/home_ui/desc_ui.py
index 1748a83..1d964d2 100644
--- a/scepter/studio/home/home_ui/desc_ui.py
+++ b/scepter/studio/home/home_ui/desc_ui.py
@@ -1,7 +1,6 @@
# -*- coding: utf-8 -*-
# Copyright (c) Alibaba, Inc. and its affiliates.
import gradio as gr
-
from scepter.studio.home.home_ui.component_names import DescUIName
from scepter.studio.utils.uibase import UIBase
diff --git a/scepter/studio/home/home_ui/guide_ui.py b/scepter/studio/home/home_ui/guide_ui.py
index 54105a6..2098bf0 100644
--- a/scepter/studio/home/home_ui/guide_ui.py
+++ b/scepter/studio/home/home_ui/guide_ui.py
@@ -1,7 +1,6 @@
# -*- coding: utf-8 -*-
# Copyright (c) Alibaba, Inc. and its affiliates.
import gradio as gr
-
from scepter.studio.home.home_ui.component_names import GuideUIName
from scepter.studio.utils.uibase import UIBase
diff --git a/scepter/studio/inference/inference.py b/scepter/studio/inference/inference.py
index e7c2fc0..090bf54 100644
--- a/scepter/studio/inference/inference.py
+++ b/scepter/studio/inference/inference.py
@@ -5,7 +5,6 @@ from collections import OrderedDict
from glob import glob
import gradio as gr
-
import scepter
from scepter.modules.utils.config import Config
from scepter.modules.utils.file_system import FS
@@ -156,54 +155,70 @@ class InferenceUI():
def change_setting_tab(check_box, default_diffusion_model, *args):
selected_tab = 'diffusion_ui'
- ui_tabs_state = [False] * len(args)
- largen_index = self.check_box_controlled_tabs.index('largen')
- largen_key = self.component_names.check_box_for_setting[
- largen_index]
- largen_status = args[largen_index]
- stylebooth_index = self.check_box_controlled_tabs.index(
- 'stylebooth')
- stylebooth_key = self.component_names.check_box_for_setting[
- stylebooth_index]
- stylebooth_status = args[stylebooth_index]
- for key in check_box:
- i = self.component_names.check_box_for_setting.index(key)
- ui_tabs_state[i] = True
- if ui_tabs_state[i] != args[i]:
- selected_tab = self.check_box_controlled_tabs[i] + '_ui'
+ name2key_map = dict(
+ zip(self.component_names.check_box_for_setting,
+ self.check_box_controlled_tabs))
+ key2name_map = dict(
+ zip(self.check_box_controlled_tabs,
+ self.component_names.check_box_for_setting))
+ ui_tabs_state = dict.fromkeys(self.check_box_controlled_tabs,
+ False)
+ gr_state = dict(zip(self.check_box_controlled_tabs, args))
+ for name in check_box:
+ key = name2key_map[name]
+ ui_tabs_state[key] = True
+ if ui_tabs_state[key] != gr_state[key]:
+ selected_tab = key + '_ui'
+ if len(check_box) >= 1 and selected_tab == 'diffusion_ui':
+ selected_tab = name2key_map[check_box[0]] + '_ui'
+
new_check_box_value = check_box
- for key in check_box:
- i = self.component_names.check_box_for_setting.index(key)
- if ui_tabs_state[i] != args[i]:
- if i in [largen_index, stylebooth_index]:
- new_check_box_value = [key]
- for j in range(len(ui_tabs_state)):
- ui_tabs_state[j] = j == i
- else:
- new_check_box_value = [
- k for k in check_box
- if k not in [largen_key, stylebooth_key]
+ for name in check_box:
+ key = name2key_map[name]
+ if ui_tabs_state[key] != gr_state[key]:
+ if key == 'largen':
+ allowed_keys = [key]
+ elif key == 'stylebooth':
+ allowed_keys = [key, 'tuner']
+ elif key == 'tuner':
+ allowed_keys = [
+ key for key in self.check_box_controlled_tabs
+ if key not in ('largen')
]
- ui_tabs_state[largen_index] = False
- ui_tabs_state[stylebooth_index] = False
+ else:
+ allowed_keys = [
+ key for key in self.check_box_controlled_tabs
+ if key not in ('largen', 'stylebooth')
+ ]
+ allowed_names = [key2name_map[key] for key in allowed_keys]
+ new_check_box_value = [
+ n for n in check_box if n in allowed_names
+ ]
+ ui_tabs_state = {
+ key: (value and key in allowed_keys)
+ for key, value in ui_tabs_state.items()
+ }
- ui_tabs_updates = [gr.update(visible=v) for v in ui_tabs_state]
+ ui_tabs_updates = [
+ gr.update(visible=ui_tabs_state[key])
+ for key in self.check_box_controlled_tabs
+ ]
- if ui_tabs_state[largen_index]:
+ if ui_tabs_state['largen']:
diffusion_model = gr.Dropdown(
label=self.model_manage_ui.component_names.diffusion_model,
choices=self.model_manage_ui.
default_choices['diffusion_model']['choices'],
value='LARGEN_LargenUNetXL',
interactive=False)
- elif ui_tabs_state[stylebooth_index]:
+ elif ui_tabs_state['stylebooth']:
diffusion_model = gr.Dropdown(
label=self.model_manage_ui.component_names.diffusion_model,
choices=self.model_manage_ui.
default_choices['diffusion_model']['choices'],
value='EDIT_DiffusionUNet',
interactive=False)
- elif largen_status or stylebooth_status:
+ elif gr_state['largen'] or gr_state['stylebooth']:
diffusion_model = gr.Dropdown(
label=self.model_manage_ui.component_names.diffusion_model,
choices=self.model_manage_ui.
@@ -219,12 +234,18 @@ class InferenceUI():
value=default_diffusion_model,
interactive=True)
- return gr.CheckboxGroup(
+ app_choices = self.stylebooth_ui.component_names.apps[
+ -1 if ui_tabs_state['stylebooth'] and ui_tabs_state['tuner']
+ else 0]
+ ui_tabs_state = [
+ ui_tabs_state[key] for key in self.check_box_controlled_tabs
+ ]
+ return (gr.CheckboxGroup(
choices=self.component_names.check_box_for_setting,
value=new_check_box_value,
- show_label=False), gr.update(
- selected=selected_tab
- ), *ui_tabs_state, *ui_tabs_updates, diffusion_model
+ show_label=False), gr.update(selected=selected_tab),
+ *ui_tabs_state, *ui_tabs_updates, diffusion_model,
+ gr.update(value=app_choices))
gr_states = [
self.tab_ui[name].state for name in self.check_box_controlled_tabs
@@ -240,7 +261,8 @@ class InferenceUI():
],
outputs=[
self.check_box_for_setting, self.setting_tab, *gr_states,
- *gr_tabs, self.model_manage_ui.diffusion_model
+ *gr_tabs, self.model_manage_ui.diffusion_model,
+ self.stylebooth_ui.selected_app
],
queue=True)
diff --git a/scepter/studio/inference/inference_ui/component_names.py b/scepter/studio/inference/inference_ui/component_names.py
index 70f8ccd..98dab99 100644
--- a/scepter/studio/inference/inference_ui/component_names.py
+++ b/scepter/studio/inference/inference_ui/component_names.py
@@ -505,8 +505,10 @@ class StyleboothUIName():
def __init__(self, language='en'):
if language == 'en':
self.dropdown_name = 'Application'
- self.apps = ['Text-based Style Editing']
- # self.apps = ["Text-based Style Editing", "Exemplar-based Style Editing"]
+ self.apps = [
+ 'Text-based Style Editing', 'Editing Image with Tuners'
+ ]
+ # self.apps = ["Text-based Style Editing", "Exemplar-based Style Editing", 'Editing Image with Tuners']
self.source_image = 'Source Image'
self.exemplar_image = 'Exemplar Image'
self.ins_format = 'Instruction Format (select or rewrite, en only)'
@@ -518,8 +520,8 @@ class StyleboothUIName():
self.compose_button = 'Assemble Style Editing Instruction to Prompt'
elif language == 'zh':
self.dropdown_name = '应用'
- self.apps = ['根据文本编辑风格']
- # self.apps = ["根据文本编辑风格", "根据风格样例编辑风格"]
+ self.apps = ['根据文本编辑风格', '使用微调编辑图像']
+ # self.apps = ["根据文本编辑风格", "根据风格样例编辑风格", '使用微调编辑图像']
self.source_image = '源图片'
self.exemplar_image = '样例图片'
self.ins_format = '指令模版 (选择或者新写,仅英文)'
diff --git a/scepter/studio/inference/inference_ui/control_ui.py b/scepter/studio/inference/inference_ui/control_ui.py
index 05c8a19..a065c54 100644
--- a/scepter/studio/inference/inference_ui/control_ui.py
+++ b/scepter/studio/inference/inference_ui/control_ui.py
@@ -5,7 +5,6 @@ import gradio as gr
import numpy as np
import torchvision.transforms as TT
from PIL import Image
-
from scepter.modules.annotator.registry import ANNOTATORS
from scepter.modules.utils.distribute import we
from scepter.studio.inference.inference_ui.component_names import ControlUIName
diff --git a/scepter/studio/inference/inference_ui/diffusion_ui.py b/scepter/studio/inference/inference_ui/diffusion_ui.py
index d23023a..c7146e9 100644
--- a/scepter/studio/inference/inference_ui/diffusion_ui.py
+++ b/scepter/studio/inference/inference_ui/diffusion_ui.py
@@ -4,7 +4,6 @@ import copy
import random
import gradio as gr
-
from scepter.studio.inference.inference_ui.component_names import \
DiffusionUIName
from scepter.studio.utils.uibase import UIBase
diff --git a/scepter/studio/inference/inference_ui/gallery_ui.py b/scepter/studio/inference/inference_ui/gallery_ui.py
index 15cd893..6eb3c3a 100644
--- a/scepter/studio/inference/inference_ui/gallery_ui.py
+++ b/scepter/studio/inference/inference_ui/gallery_ui.py
@@ -6,7 +6,6 @@ from collections import OrderedDict
import gradio as gr
import numpy as np
from PIL import Image
-
from scepter.modules.utils.file_system import FS
from scepter.studio.inference.inference_ui.component_names import GalleryUIName
from scepter.studio.utils.uibase import UIBase
diff --git a/scepter/studio/inference/inference_ui/largen_ui.py b/scepter/studio/inference/inference_ui/largen_ui.py
index 327d366..4845499 100644
--- a/scepter/studio/inference/inference_ui/largen_ui.py
+++ b/scepter/studio/inference/inference_ui/largen_ui.py
@@ -1,6 +1,7 @@
# -*- coding: utf-8 -*-
# Copyright (c) Alibaba, Inc. and its affiliates.
+import albumentations as A
import cv2
import gradio as gr
import numpy as np
@@ -8,8 +9,6 @@ import torch
import torchvision.transforms as T
import torchvision.transforms.functional as TF
from PIL import Image
-
-import albumentations as A
from scepter.modules.annotator.registry import ANNOTATORS
from scepter.modules.model.utils.data_utils import (box2squre, expand_bbox,
get_bbox_from_mask,
diff --git a/scepter/studio/inference/inference_ui/mantra_ui.py b/scepter/studio/inference/inference_ui/mantra_ui.py
index 654251c..23bb5a3 100644
--- a/scepter/studio/inference/inference_ui/mantra_ui.py
+++ b/scepter/studio/inference/inference_ui/mantra_ui.py
@@ -2,9 +2,9 @@
# Copyright (c) Alibaba, Inc. and its affiliates.
import os
-import gradio as gr
from tqdm import tqdm
+import gradio as gr
from scepter.modules.utils.file_system import FS
from scepter.studio.inference.inference_ui.component_names import MantraUIName
from scepter.studio.utils.uibase import UIBase
diff --git a/scepter/studio/inference/inference_ui/model_manage_ui.py b/scepter/studio/inference/inference_ui/model_manage_ui.py
index 14a0b73..4de6fb5 100644
--- a/scepter/studio/inference/inference_ui/model_manage_ui.py
+++ b/scepter/studio/inference/inference_ui/model_manage_ui.py
@@ -2,7 +2,6 @@
# Copyright (c) Alibaba, Inc. and its affiliates.
import gradio as gr
-
from scepter.studio.inference.inference_ui.component_names import \
ModelManageUIName
from scepter.studio.utils.uibase import UIBase
diff --git a/scepter/studio/inference/inference_ui/refiner_ui.py b/scepter/studio/inference/inference_ui/refiner_ui.py
index 4b27aac..e925e58 100644
--- a/scepter/studio/inference/inference_ui/refiner_ui.py
+++ b/scepter/studio/inference/inference_ui/refiner_ui.py
@@ -1,7 +1,6 @@
# -*- coding: utf-8 -*-
# Copyright (c) Alibaba, Inc. and its affiliates.
import gradio as gr
-
from scepter.studio.inference.inference_ui.component_names import RefinerUIName
from scepter.studio.utils.uibase import UIBase
diff --git a/scepter/studio/inference/inference_ui/stylebooth_ui.py b/scepter/studio/inference/inference_ui/stylebooth_ui.py
index edff6cb..334b3a6 100644
--- a/scepter/studio/inference/inference_ui/stylebooth_ui.py
+++ b/scepter/studio/inference/inference_ui/stylebooth_ui.py
@@ -2,7 +2,6 @@
# Copyright (c) Alibaba, Inc. and its affiliates.
import gradio as gr
-
from scepter.studio.inference.inference_ui.component_names import \
StyleboothUIName
from scepter.studio.utils.uibase import UIBase
@@ -22,7 +21,6 @@ class StyleboothUI(UIBase):
label=self.component_names.dropdown_name,
choices=self.component_names.apps,
value=self.component_names.apps[0],
- type='index',
interactive=False)
with gr.Row(equal_height=True):
with gr.Column(variant='panel',
@@ -38,38 +36,32 @@ class StyleboothUI(UIBase):
scale=1,
min_width=0,
visible=True) as self.col2:
- with gr.Group(visible=True):
+ with gr.Group():
self.exemplar_image = gr.Image(
label=self.component_names.exemplar_image,
type='pil',
interactive=True,
visible=False)
- with gr.Row(equal_height=True):
- with gr.Group(visible=True):
- self.instruction_format = gr.Dropdown(
- label=self.component_names.ins_format,
- choices=self.component_names.
- tb_ins_format_choice,
- value=self.component_names.
- tb_ins_format_choice[0],
- multiselect=False,
- interactive=True,
- allow_custom_value=True)
- self.target_style = gr.Dropdown(
- label=self.component_names.style_format.
- format(self.component_names.tb_identifier),
- choices=self.component_names.
- tb_target_style,
- value=None,
- multiselect=False,
- interactive=True,
- allow_custom_value=True)
- self.compose_instruction = gr.Button(
- label=self.component_names.compose_button,
- value=self.component_names.compose_button,
- elem_classes='type_row',
- elem_id='push',
- visible=True)
+ self.instruction_format = gr.Dropdown(
+ label=self.component_names.ins_format,
+ choices=self.component_names.tb_ins_format_choice,
+ value=self.component_names.tb_ins_format_choice[0],
+ multiselect=False,
+ interactive=True,
+ allow_custom_value=True)
+ self.target_style = gr.Dropdown(
+ label=self.component_names.style_format.format(
+ self.component_names.tb_identifier),
+ choices=self.component_names.tb_target_style,
+ value=None,
+ multiselect=False,
+ interactive=True,
+ allow_custom_value=True)
+ self.compose_instruction = gr.Button(
+ label=self.component_names.compose_button,
+ value=self.component_names.compose_button,
+ elem_classes='type_row',
+ elem_id='push')
with gr.Column(variant='panel', scale=1, min_width=0):
with gr.Group(visible=True):
self.guide_scale_text = gr.Slider(
@@ -130,42 +122,51 @@ class StyleboothUI(UIBase):
def set_callbacks(self, model_manage_ui, diffusion_ui, gallery_ui,
**kwargs):
def app_change(app):
- selected = app
- # selected = None
- # for i, name in enumerate(self.component_names.apps):
- # if name == app:
- # selected = i
- # continue
- # assert selected in (0, 1)
- if not selected:
+ if app == self.component_names.apps[-1]:
+ format_choices = ['']
+ style_choices = ['']
+ identifier = '<>'
+ image_visible = False
+ style_visible = False
+ elif app == self.component_names.apps[0]:
format_choices = self.component_names.tb_ins_format_choice
style_choices = self.component_names.tb_target_style
+ identifier = self.component_names.tb_identifier
+ image_visible = False
+ style_visible = True
else:
format_choices = self.component_names.eb_ins_format_choice
style_choices = self.component_names.eb_target_style
+ identifier = self.component_names.eb_identifier
+ image_visible = True
+ style_visible = True
- identifier = self.component_names.tb_identifier if selected == 0 else self.component_names.eb_identifier
- return (gr.update(value=None, visible=(selected != 0)),
+ return (gr.update(value=None, visible=image_visible),
gr.update(choices=format_choices, value=format_choices[0]),
- gr.update(choices=style_choices,
- value=style_choices[0],
- interactive=(selected == 0),
- label=self.component_names.style_format.format(
- identifier)))
+ gr.update(
+ choices=style_choices,
+ value=style_choices[0],
+ interactive=(app == self.component_names.apps[0]),
+ label=self.component_names.style_format.format(
+ identifier)), gr.update(visible=style_visible))
self.selected_app.change(app_change,
inputs=[self.selected_app],
outputs=[
self.exemplar_image,
- self.instruction_format, self.target_style
+ self.instruction_format,
+ self.target_style, self.col2
],
queue=False)
def compose_instruction(format, style, app):
- if app == 1:
+ if app == self.component_names.apps[-1]:
+ return ''
+ elif app == self.component_names.apps[0]:
+ identifier = self.component_names.tb_identifier
+ return format.replace(identifier, style)
+ else:
return format
- identifier = self.component_names.tb_identifier if app == 0 else self.component_names.eb_identifier
- return format.replace(identifier, style)
self.compose_instruction.click(compose_instruction,
inputs=[
diff --git a/scepter/studio/inference/inference_ui/tuner_ui.py b/scepter/studio/inference/inference_ui/tuner_ui.py
index 111ae5e..cbe646a 100644
--- a/scepter/studio/inference/inference_ui/tuner_ui.py
+++ b/scepter/studio/inference/inference_ui/tuner_ui.py
@@ -2,9 +2,9 @@
# Copyright (c) Alibaba, Inc. and its affiliates.
import os
-import gradio as gr
from tqdm import tqdm
+import gradio as gr
from scepter.modules.utils.file_system import FS
from scepter.studio.inference.inference_ui.component_names import TunerUIName
from scepter.studio.utils.uibase import UIBase
@@ -145,10 +145,22 @@ class TunerUI(UIBase):
if tuner_model is not None and len(tuner_model) > 0:
tuner_info = self.name_level_tuners.get(now_pipeline, {}).get(
tuner_model[-1], {})
- if tuner_info.get(
- 'IMAGE_PATH',
- None) and not os.path.exists(tuner_info.IMAGE_PATH):
- tuner_info.IMAGE_PATH = FS.get_from(tuner_info.IMAGE_PATH)
+ if tuner_info.get('IMAGE_PATH', None):
+ if not FS.exists(tuner_info.IMAGE_PATH):
+ if FS.exists(
+ os.path.join(tuner_info.MODEL_PATH,
+ tuner_info.IMAGE_PATH)):
+ local_image_path = FS.get_from(
+ os.path.join(tuner_info.MODEL_PATH,
+ tuner_info.IMAGE_PATH))
+ else:
+ local_image_path = FS.get_from(tuner_info.IMAGE_PATH)
+ else:
+ local_image_path = FS.get_from(tuner_info.IMAGE_PATH)
+
+ if FS.exists(local_image_path):
+ tuner_info.IMAGE_PATH = str(local_image_path)
+
return (gr.Text(value=tuner_info.get('TUNER_TYPE', '')),
gr.Text(value=tuner_info.get('BASE_MODEL', '')),
gr.Text(value=tuner_info.get('DESCRIPTION', '')),
@@ -181,10 +193,23 @@ class TunerUI(UIBase):
if tuner_model is not None and len(tuner_model) > 0:
tuner_info = self.name_level_tuners.get(now_pipeline, {}).get(
tuner_model[-1], {})
- if tuner_info.get(
- 'IMAGE_PATH',
- None) and not os.path.exists(tuner_info.IMAGE_PATH):
- tuner_info.IMAGE_PATH = FS.get_from(tuner_info.IMAGE_PATH)
+
+ if tuner_info.get('IMAGE_PATH', None):
+ if not FS.exists(tuner_info.IMAGE_PATH):
+ if FS.exists(
+ os.path.join(tuner_info.MODEL_PATH,
+ tuner_info.IMAGE_PATH)):
+ local_image_path = FS.get_from(
+ os.path.join(tuner_info.MODEL_PATH,
+ tuner_info.IMAGE_PATH))
+ else:
+ local_image_path = FS.get_from(tuner_info.IMAGE_PATH)
+ else:
+ local_image_path = FS.get_from(tuner_info.IMAGE_PATH)
+
+ if FS.exists(local_image_path):
+ tuner_info.IMAGE_PATH = str(local_image_path)
+
return (gr.Tabs(selected='tuner_manager'),
gr.Text(value=tuner_info.NAME), gr.Text(value=''),
gr.Text(value=tuner_info.get('TUNER_TYPE', '')),
diff --git a/scepter/studio/preprocess/caption_editor_ui/component_names.py b/scepter/studio/preprocess/caption_editor_ui/component_names.py
index 5945944..76e4464 100644
--- a/scepter/studio/preprocess/caption_editor_ui/component_names.py
+++ b/scepter/studio/preprocess/caption_editor_ui/component_names.py
@@ -30,9 +30,19 @@ class CreateDatasetUIName():
self.zip_file = 'Upload Dataset(Zip/Txt)'
self.zip_file_url = 'Dataset Url'
self.default_dataset_repo = 'https://www.modelscope.cn/api/v1/models/iic/scepter/'
- self.default_dataset_zip = \
- self.default_dataset_repo + 'repo?Revision=master&FilePath=datasets/3D_example_csv.zip'
- self.default_dataset_name = '3D_example'
+ self.default_dataset_zip = {
+ 'scepter_txt2img':
+ f' {self.default_dataset_repo}repo?Revision=master&FilePath=datasets/3D_example_csv.zip ',
+ 'scepter_img2img':
+ f' {self.default_dataset_repo}repo?Revision=master&FilePath=datasets/hed_pair.zip '
+ }
+ self.default_dataset_zip = ' and '.join([f"[{k}]({v})" for k, v in self.default_dataset_zip.items()])
+
+ self.default_dataset_name = {
+ 'scepter_txt2img': '3D_example',
+ 'scepter_img2img': 'hed_example'
+ }
+
self.btn_create_datasets_from_file = 'Create Dataset From File'
self.user_direction = (
'### User Guide: \n' +
@@ -45,8 +55,8 @@ class CreateDatasetUIName():
"train.csv' (which will use the image paths in this file); "
'The first line is Target:FILE, Prompt, followed by the format of each line: image path, description.'
'we also surpport the zip of '
- 'one level subfolder of images whose format are in jpg, jpeg, png, webp.'
- f'The ZIP example is: {self.default_dataset_zip}. \n' # noqa
+ 'one level subfolder of images whose format are in jpg, jpeg, png, webp. '
+ f'See the ZIP examples: {self.default_dataset_zip}. \n' # noqa
f'* If you have refreshed the page, please click the {self.refresh_list_button} '
'button to ensure all previously created datasets are visible in the dropdown menu.\n'
'* For processing and training with large-scale data(for example more than 10K samples), '
@@ -93,9 +103,18 @@ class CreateDatasetUIName():
self.zip_file = '上传数据集'
self.zip_file_url = '数据集链接'
self.default_dataset_repo = 'https://www.modelscope.cn/api/v1/models/iic/scepter/'
- self.default_dataset_zip = \
- self.default_dataset_repo + 'repo?Revision=master&FilePath=datasets/3D_example_csv.zip'
- self.default_dataset_name = '3D_example'
+ self.default_dataset_zip = {
+ 'scepter_txt2img':
+ f' {self.default_dataset_repo}repo?Revision=master&FilePath=datasets/3D_example_csv.zip ',
+ 'scepter_img2img':
+ f' {self.default_dataset_repo}repo?Revision=master&FilePath=datasets/hed_pair.zip '
+ }
+ self.default_dataset_zip = ' 和 '.join([f"[{k}]({v})" for k, v in self.default_dataset_zip.items()])
+
+ self.default_dataset_name = {
+ 'scepter_txt2img': '3D_example',
+ 'scepter_img2img': 'hed_example'
+ }
self.btn_create_datasets_from_file = '从文件新建'
self.user_direction = (
'### 使用说明 \n' +
@@ -129,23 +148,30 @@ class CreateDatasetUIName():
class DatasetGalleryUIName():
def __init__(self, language='en'):
if language == 'en':
- self.system_log = 'System Log: {} '
- self.upload_image = 'Upload Image'
+ self.system_log = 'Operation Log: {} '
+ self.illegal_blank_dataset = 'Illgal or blank dataset is not allowed editing.'
+ self.delete_blank_dataset = 'Blank dataset is not allowed deleting.'
+ self.upload_image = 'Upload Target Image'
+ self.upload_src_image = 'Upload Source Image'
self.upload_image_btn = '\U00002714' # ✔️
self.cancel_upload_btn = '\U00002716' # ✖️
self.image_caption = 'Image Caption'
- self.ori_caption = 'Original Caption'
self.btn_modify = '\U0001F4DD' # 📝
self.btn_delete = '\U0001f5d1' # 🗑️
self.btn_add = '\U00002795' # ➕
+ self.ori_caption = 'Original Caption'
self.dataset_images = f'Original Images,click{self.btn_modify} into editable mode.'
+ self.dataset_src_images = f'Source Images to be edited,click{self.btn_modify} into editable mode.'
+
self.edit_caption = f'Editable Caption,click{self.btn_modify} into editable mode.'
- self.dataset_images = f'Original Images,click{self.btn_modify} into editable mode.'
+ self.edit_dataset_images = f'Editable Images,click{self.btn_modify} into editable mode.'
+ self.edit_dataset_src_images = 'Editable Source Images to be edited.'
self.ori_dataset = 'Original Data Height({}) * Width({}) and Image Format({})'
self.edit_dataset = 'Editable Data Height({}) * Width({}) and Image Format({})'
- self.upload_image_info = 'Image Information: Height({}) * Width({}) and Image Format({})'
+ self.upload_image_info = 'Image Information: Height({}) * Width({})'
+ self.upload_src_image_info = 'Source Image Information: Height({}) * Width({})'
self.range_mode_name = [
'Current sample', 'All samples', 'Samples in range'
@@ -190,18 +216,21 @@ class DatasetGalleryUIName():
# Error or Warning
elif language == 'zh':
- self.system_log = '系统日志: {} '
- self.upload_image = '上传图片'
+ self.system_log = '操作日志: {} '
+ self.illegal_blank_dataset = '不合法或空白数据集不允许编辑。'
+ self.delete_blank_dataset = '空白数据集不允许删除。'
+ self.upload_image = '上传目标图片'
+ self.upload_src_image = '上传待编辑图片'
self.upload_image_btn = '\U00002714' # ✔️
self.cancel_upload_btn = '\U00002716' # ✖️
self.image_caption = '图片描述'
- # self.image_height = '高度'
- # self.image_width = '宽度'
- # self.image_format = '格式'
-
self.btn_modify = '\U0001F4DD' # 📝
self.dataset_images = f'图片数据,点击{self.btn_modify}进入编辑模式'
+ self.dataset_src_images = f'待编辑图片数据,点击{self.btn_modify}进入编辑模式'
+
+ self.edit_dataset_images = '可编辑图片数据'
+ self.edit_dataset_src_images = '可编辑待编辑图片数据'
self.btn_delete = '\U0001f5d1' # 🗑️
self.btn_add = '\U00002795' # ➕
@@ -213,6 +242,7 @@ class DatasetGalleryUIName():
self.ori_dataset = '原始数据 高({}) * 宽({}) 图像格式({})'
self.edit_dataset = '可编辑数据 高({}) * 宽({}) 图像格式({})'
self.upload_image_info = '图像信息 高({}) * 宽({})'
+ self.upload_src_image_info = '源图像信息 高({}) * 宽({})'
self.range_mode_name = ['当前样本', '全部样本', '指定范围']
self.samples_range = '处理样本范围'
@@ -262,6 +292,7 @@ class ExportDatasetUIName():
self.upload_err1 = 'Failed to compress the file!'
self.go_to_train = 'Go to train...'
+ self.dataset_source = 'Dataset Management'
elif language == 'zh':
self.btn_export_zip = '导出数据'
self.btn_export_list = '导出列表'
@@ -270,6 +301,7 @@ class ExportDatasetUIName():
self.upload_err1 = '压缩文件失败!'
self.go_to_train = '去训练...'
+ self.dataset_source = '数据管理器'
class Text2ImageDataCardName():
diff --git a/scepter/studio/preprocess/caption_editor_ui/create_dataset_ui.py b/scepter/studio/preprocess/caption_editor_ui/create_dataset_ui.py
index 0815d7e..9a764ef 100644
--- a/scepter/studio/preprocess/caption_editor_ui/create_dataset_ui.py
+++ b/scepter/studio/preprocess/caption_editor_ui/create_dataset_ui.py
@@ -6,12 +6,16 @@ import datetime
import os.path
from collections import OrderedDict
-import gradio as gr
+from tqdm import tqdm
+import gradio as gr
from scepter.modules.utils.file_system import FS
from scepter.studio.preprocess.caption_editor_ui.component_names import \
CreateDatasetUIName
-from scepter.studio.preprocess.utils.data_card import Text2ImageDataCard
+from scepter.studio.preprocess.utils.img2img_data_card import \
+ Image2ImageDataCard
+from scepter.studio.preprocess.utils.txt2img_data_card import \
+ Text2ImageDataCard
from scepter.studio.utils.uibase import UIBase
refresh_symbol = '\U0001f504' # 🔄
@@ -31,8 +35,12 @@ class CreateDatasetUI(UIBase):
def __init__(self, cfg, is_debug=False, language='en'):
self.work_dir = cfg.WORK_DIR
self.language = language
- self.dataset_type_dict = OrderedDict(
- {'scepter_txt2img': Text2ImageDataCard})
+ self.dataset_type_dict = OrderedDict({
+ 'scepter_txt2img':
+ Text2ImageDataCard,
+ 'scepter_img2img':
+ Image2ImageDataCard
+ })
self.components_name = CreateDatasetUIName(language)
self.default_dataset_type = list(self.dataset_type_dict.keys())[0]
self.default_dataset_cls = Text2ImageDataCard
@@ -54,32 +62,47 @@ class CreateDatasetUI(UIBase):
}
'''
self.init_example()
+ self.default_dataset = self.example_dataset_ins[
+ self.default_dataset_type]
self.user_level_dataset_list = self.load_history()
+ self.load_history_time = datetime.datetime.now()
def init_example(self):
- file_url = self.components_name.default_dataset_zip
- file_name, surfix = os.path.splitext(file_url)
- save_file = os.path.join(
- self.work_dir,
- f'{self.components_name.default_dataset_name}{surfix}')
- save_file, res = wget_file(file_url, save_file)
- if not FS.exists(save_file):
- print('Init example eroor, skip!')
- self.example_dataset_ins = None
- return
+ self.example_dataset_ins = {}
+ for example_type, example_name in self.components_name.default_dataset_name.items(
+ ):
+ dataset_folder = os.path.join(
+ self.work_dir, '_'.join([example_type, example_name]))
- dataset_folder = os.path.join(
- self.work_dir, '_'.join([
- self.default_dataset_type,
- self.components_name.default_dataset_name
- ]))
- self.example_dataset_ins = self.default_dataset_cls(
- dataset_folder,
- dataset_name=self.components_name.default_dataset_name,
- src_file=save_file,
- surfix=surfix,
- user_name='example',
- language=self.language)
+ meta_file = os.path.join(dataset_folder, 'meta.json')
+ if FS.exists(meta_file):
+ self.example_dataset_ins[
+ example_type] = self.dataset_type_dict[example_type](
+ dataset_folder,
+ dataset_name=self.components_name.default_dataset_name,
+ user_name='example',
+ language=self.language)
+ continue
+ file_url = self.components_name.default_dataset_zip[example_type]
+ file_name, surfix = os.path.splitext(file_url)
+ save_file = os.path.join(
+ self.work_dir,
+ f'{self.components_name.default_dataset_name[example_type]}{surfix}'
+ )
+ save_file, res = wget_file(file_url, save_file)
+ if not FS.exists(save_file):
+ print('Init example eroor, skip!')
+ self.example_dataset_ins[example_type] = None
+ continue
+
+ self.example_dataset_ins[example_type] = self.dataset_type_dict[
+ example_type](dataset_folder,
+ dataset_name=self.components_name.
+ default_dataset_name[example_type],
+ src_file=save_file,
+ surfix=surfix,
+ user_name='example',
+ language=self.language)
# add to list by load_history.
def user_filter(self, dataset_ins, login_user_name):
@@ -93,10 +116,28 @@ class CreateDatasetUI(UIBase):
return False
def load_history(self, login_user_name='admin'):
+ # load history every day
+ if hasattr(self, 'load_history_time') and (
+ datetime.datetime.now() -
+ self.load_history_time).days < 1 and hasattr(
+ self, 'user_level_dataset_list'):
+ if login_user_name not in self.user_level_dataset_list:
+ self.user_level_dataset_list[login_user_name] = {}
+ for dataset_t, name_dataset_ins in self.dataset_dict.items():
+ for dataset_name, dataset_ins in name_dataset_ins.items():
+ if self.user_filter(dataset_ins, login_user_name):
+ if dataset_t not in self.user_level_dataset_list[
+ login_user_name]:
+ self.user_level_dataset_list[login_user_name][
+ dataset_t] = []
+ self.user_level_dataset_list[login_user_name][
+ dataset_t].append(dataset_ins.dataset_name)
+ self.load_history_time = datetime.datetime.now()
+ return self.user_level_dataset_list
dataset_list = {login_user_name: {}}
self.dir_list = FS.walk_dir(self.work_dir, recurse=False)
# From v0.0.5 we use the classname of DataCard as prefix of folder to indicate the type of data.
- for one_dir in self.dir_list:
+ for one_dir in tqdm(self.dir_list):
if not FS.isdir(one_dir):
continue
# the meta.json is the unique sign for dataset
@@ -140,23 +181,23 @@ class CreateDatasetUI(UIBase):
interactive=True,
value=self.components_name.dataset_type_name[
self.default_dataset_type])
- with gr.Column(scale=3, min_width=0):
+ with gr.Column(scale=4, min_width=0):
self.dataset_name = gr.Dropdown(
label=self.components_name.dataset_name,
choices=self.user_level_dataset_list.get(
'admin', {}).get(self.default_dataset_type, []),
- value=None if self.example_dataset_ins is None else
- self.example_dataset_ins.dataset_name,
+ value=None if self.default_dataset is None else
+ self.default_dataset.dataset_name,
interactive=True)
- with gr.Column(scale=3, min_width=0):
+ with gr.Column(scale=4, min_width=0):
self.user_dataset_name = gr.Text(
label=self.components_name.user_data_name,
- value='' if self.example_dataset_ins is None else
- self.example_dataset_ins.dataset_name,
+ value='' if self.default_dataset is None else
+ self.default_dataset.dataset_name,
interactive=True)
self.user_data_name_state = gr.State(
- value=None if self.example_dataset_ins is None else
- self.example_dataset_ins.dataset_name)
+ value=None if self.default_dataset is None else self.
+ default_dataset.dataset_name)
self.create_mode = gr.State(value=0)
with gr.Column(scale=1, min_width=0):
with gr.Column(scale=1, min_width=0):
diff --git a/scepter/studio/preprocess/caption_editor_ui/dataset_gallery_ui.py b/scepter/studio/preprocess/caption_editor_ui/dataset_gallery_ui.py
index c3f7761..f32cea5 100644
--- a/scepter/studio/preprocess/caption_editor_ui/dataset_gallery_ui.py
+++ b/scepter/studio/preprocess/caption_editor_ui/dataset_gallery_ui.py
@@ -8,7 +8,6 @@ import time
import gradio as gr
import imagehash
from PIL import Image
-
from scepter.modules.utils.directory import get_md5
from scepter.modules.utils.file_system import FS
from scepter.studio.preprocess.caption_editor_ui.component_names import \
@@ -31,7 +30,7 @@ class DatasetGalleryUI(UIBase):
self.component_names = DatasetGalleryUIName(language)
if create_ins is not None:
- self.default_dataset = create_ins.example_dataset_ins
+ self.default_dataset = create_ins.default_dataset
current_info = self.default_dataset.current_record
self.default_ori_caption = current_info.get('caption', '')
self.default_edit_caption = current_info.get('edit_caption', '')
@@ -56,6 +55,7 @@ class DatasetGalleryUI(UIBase):
for v in self.default_dataset.data
]
self.default_image_list = image_list
+ self.default_dataset_type = create_ins.default_dataset_type
else:
self.default_dataset = None
self.default_ori_caption = ''
@@ -69,6 +69,7 @@ class DatasetGalleryUI(UIBase):
self.default_select_index = -1
self.default_image_list = []
self.default_info = ''
+ self.default_dataset_type = 'scepter_txt2img'
def create_ui(self):
with gr.Row(variant='panel',
@@ -81,66 +82,93 @@ class DatasetGalleryUI(UIBase):
self.mode_state = gr.Text(label='mode_state',
value='view',
visible=False)
- with gr.Column(min_width=0, visible=False) as self.edit_panel:
+ self.src_dataset_state = gr.Checkbox(label='src_state',
+ value=False,
+ visible=False)
+ with gr.Column(variant='panel', min_width=0,
+ visible=False) as self.edit_panel:
+
with gr.Row():
self.edit_image_info = gr.Markdown(
self.component_names.edit_dataset.format(
self.default_edit_image_height,
self.default_edit_image_width,
self.default_edit_image_format))
+ with gr.Row():
+ self.edit_caption = gr.Textbox(
+ label=self.component_names.edit_caption,
+ placeholder='',
+ value=self.default_edit_caption,
+ lines=4,
+ autoscroll=False,
+ interactive=True,
+ visible=False)
with gr.Row(equal_height=True):
- with gr.Column(scale=3, min_width=0):
- with gr.Row():
- self.edit_gl_dataset_images = gr.Gallery(
- label=self.component_names.dataset_images,
- elem_id='dataset_tag_editor_dataset_gallery',
- value=self.default_image_list,
- selected_index=self.default_select_index,
- columns=4,
- visible=False,
- interactive=False)
- with gr.Column(ariant='panel', scale=2, min_width=0):
- with gr.Row():
- self.edit_caption = gr.Textbox(
- label=self.component_names.edit_caption,
- placeholder='',
- value=self.default_edit_caption,
- lines=18,
- autoscroll=False,
- interactive=True,
- visible=False)
+ with gr.Column(scale=1, min_width=0,
+ visible=False) as self.edit_src_panel:
+ self.edit_src_gl_dataset_images = gr.Gallery(
+ label=self.component_names.edit_dataset_src_images,
+ elem_id='dataset_tag_editor_dataset_src_gallery',
+ value=self.default_image_list,
+ selected_index=self.default_select_index,
+ columns=4,
+ visible=False,
+ interactive=False)
+ with gr.Column(scale=1, min_width=0):
+ self.edit_gl_dataset_images = gr.Gallery(
+ label=self.component_names.edit_dataset_images,
+ elem_id='dataset_tag_editor_dataset_gallery',
+ value=self.default_image_list,
+ selected_index=self.default_select_index,
+ columns=4,
+ visible=False,
+ interactive=False)
+ # with gr.Column(ariant='panel', scale=2, min_width=0):
- with gr.Column(min_width=0):
+ with gr.Column(variant='panel', min_width=0):
with gr.Row():
self.image_info = gr.Markdown(
self.component_names.ori_dataset.format(
self.default_image_height,
self.default_image_width,
self.default_image_format))
+ with gr.Row():
+ self.ori_caption = gr.Textbox(
+ label=self.component_names.ori_caption,
+ placeholder='',
+ value=self.default_ori_caption,
+ lines=4,
+ autoscroll=False,
+ interactive=False)
with gr.Row(equal_height=True):
- with gr.Column(scale=3, min_width=0):
+ with gr.Column(scale=1, min_width=0,
+ visible=False) as self.src_panel:
+ self.src_gl_dataset_images = gr.Gallery(
+ label=self.component_names.dataset_src_images,
+ elem_id='dataset_tag_editor_dataset_src_gallery',
+ value=self.default_image_list,
+ selected_index=self.default_select_index,
+ columns=4,
+ visible=False,
+ interactive=False)
+ with gr.Column(scale=1, min_width=0):
with gr.Row():
self.gl_dataset_images = gr.Gallery(
label=self.component_names.dataset_images,
elem_id='dataset_tag_editor_dataset_gallery',
value=self.default_image_list,
selected_index=self.default_select_index,
- columns=4)
- with gr.Column(variant='panel', scale=2, min_width=0):
- with gr.Row():
- self.ori_caption = gr.Textbox(
- label=self.component_names.ori_caption,
- placeholder='',
- value=self.default_ori_caption,
- lines=18,
- autoscroll=False,
- interactive=False)
+ columns=4,
+ preview=True,
+ allow_preview=True,
+ object_fit='fill')
+ # with gr.Column(variant='panel', scale=2, min_width=0):
# with gr.Row(visible=False) as :
with gr.Row(visible=False) as self.edit_setting_panel:
self.sys_log = gr.Markdown(
self.component_names.system_log.format(''))
- with gr.Row():
+ with (gr.Row()):
with gr.Column(variant='panel',
visible=False,
scale=1,
@@ -180,19 +208,34 @@ class DatasetGalleryUI(UIBase):
value=None)
with gr.Column(variant='panel',
visible=False,
- scale=1,
+ scale=2,
min_width=0) as self.upload_panel:
with gr.Row():
- self.upload_image = gr.Image(
- label=self.component_names.upload_image, type='pil')
+ self.upload_src_image_info = gr.Markdown(value='',
+ visible=False)
with gr.Row():
self.upload_image_info = gr.Markdown(value='')
+
with gr.Row():
- self.caption = gr.Textbox(
+ self.upload_caption = gr.Textbox(
label=self.component_names.image_caption,
placeholder='',
value='',
lines=5)
+ with gr.Row():
+ with gr.Column(
+ variant='panel',
+ scale=1,
+ min_width=0,
+ visible=self.default_dataset_type ==
+ 'scepter_img2img') as self.upload_src_image_panel:
+ self.upload_src_image = gr.Image(
+ label=self.component_names.upload_src_image,
+ type='pil')
+ with gr.Column(variant='panel', scale=1, min_width=0):
+ self.upload_image = gr.Image(
+ label=self.component_names.upload_image,
+ type='pil')
with gr.Row():
with gr.Column(min_width=0):
self.upload_button = gr.Button(
@@ -203,201 +246,222 @@ class DatasetGalleryUI(UIBase):
with gr.Column(variant='panel',
visible=False,
scale=2,
- min_width=0) as self.image_preprocess_panel:
- with gr.Box():
- with gr.Column(variant='panel', min_width=0):
- with gr.Row():
- self.image_preprocess_method = gr.Dropdown(
- label=self.component_names.
- image_processor_type,
- choices=self.processors_manager.get_choices(
- 'image'),
- value=self.processors_manager.get_default(
- 'image'),
- interactive=True)
- image_processor_ins = self.processors_manager.get_processor(
- 'image',
- self.processors_manager.get_default('image'))
- with gr.Row():
- default_height_ratio = image_processor_ins.system_para.get(
- 'HEIGHT_RATIO', {})
- self.height_ratio = gr.Slider(
- label=self.component_names.height_ratio,
- minimum=default_height_ratio.get('MIN', 1),
- maximum=default_height_ratio.get('MAX', 10),
- step=default_height_ratio.get('STEP', 1),
- value=default_height_ratio.get('VALUE', 1),
- visible=len(default_height_ratio) > 0,
- interactive=True)
- with gr.Row():
- default_width_ratio = image_processor_ins.system_para.get(
- 'WIDTH_RATIO', {})
- self.width_ratio = gr.Slider(
- label=self.component_names.width_ratio,
- minimum=default_width_ratio.get('MIN', 1),
- maximum=default_width_ratio.get('MAX', 10),
- step=default_width_ratio.get('STEP', 1),
- value=default_width_ratio.get('VALUE', 1),
- visible=len(default_width_ratio) > 0,
- interactive=True)
- with gr.Row():
- self.image_preprocess_btn = gr.Button(
- value=self.component_names.image_preprocess_btn
- )
- with gr.Column(variant='panel',
- visible=False,
- scale=2,
- min_width=0) as self.caption_preprocess_panel:
- with gr.Box():
- with gr.Column(variant='panel', min_width=0):
- with gr.Row():
- self.caption_preprocess_method = gr.Dropdown(
- label=self.component_names.
- caption_processor_type,
- choices=self.processors_manager.get_choices(
- 'caption'),
- value=self.processors_manager.get_default(
- 'caption'),
- interactive=True)
- with gr.Row():
- with gr.Column(scale=1, min_width=0):
- self.caption_use_device = gr.Text(
- label=self.component_names.used_device,
- value=self.processors_manager.
- get_default_device('caption'),
- interactive=False)
- with gr.Column(scale=1, min_width=0):
- self.caption_use_memory = gr.Text(
- label=self.component_names.used_memory,
- value=self.processors_manager.
- get_default_memory('caption'),
- interactive=False)
- default_processor_method = self.processors_manager.get_default(
- 'caption')
- default_processor_ins = self.processors_manager.get_processor(
- 'caption', default_processor_method)
- with gr.Column(scale=1, min_width=0):
- self.caption_language = gr.Dropdown(
- label=self.component_names.
- caption_language,
- choices=default_processor_ins.
- get_language_choice,
- value=default_processor_ins.
- get_language_default)
- with gr.Column(scale=1, min_width=0):
- self.caption_update_mode = gr.Dropdown(
- label=self.component_names.
- caption_update_mode,
- choices=self.component_names.
- caption_update_choices,
- value=self.component_names.
- caption_update_choices[0] if
- len(self.component_names.
- caption_update_choices) > 0 else None)
- with gr.Accordion(
- label=self.component_names.advance_setting,
- open=False):
+ min_width=0) as self.preprocess_panel:
+ with gr.Row(
+ variant='panel',
+ visible=False,
+ ) as self.image_preprocess_panel:
+ with gr.Box():
+ with gr.Column(variant='panel', min_width=0):
with gr.Row():
- self.sys_prompt = gr.Text(
- label=self.component_names.system_prompt,
- interactive=True,
- value=default_processor_ins.
- get_para_by_language(
+ self.image_preprocess_method = gr.Dropdown(
+ label=self.component_names.
+ image_processor_type,
+ choices=self.processors_manager.
+ get_choices('image'),
+ value=self.processors_manager.get_default(
+ 'image'),
+ interactive=True)
+ image_processor_ins = self.processors_manager.get_processor(
+ 'image',
+ self.processors_manager.get_default('image'))
+ with gr.Row():
+ default_height_ratio = image_processor_ins.system_para.get(
+ 'HEIGHT_RATIO', {})
+ self.height_ratio = gr.Slider(
+ label=self.component_names.height_ratio,
+ minimum=default_height_ratio.get('MIN', 1),
+ maximum=default_height_ratio.get(
+ 'MAX', 10),
+ step=default_height_ratio.get('STEP', 1),
+ value=default_height_ratio.get('VALUE', 1),
+ visible=len(default_height_ratio) > 0,
+ interactive=True)
+ with gr.Row():
+ default_width_ratio = image_processor_ins.system_para.get(
+ 'WIDTH_RATIO', {})
+ self.width_ratio = gr.Slider(
+ label=self.component_names.width_ratio,
+ minimum=default_width_ratio.get('MIN', 1),
+ maximum=default_width_ratio.get('MAX', 10),
+ step=default_width_ratio.get('STEP', 1),
+ value=default_width_ratio.get('VALUE', 1),
+ visible=len(default_width_ratio) > 0,
+ interactive=True)
+ with gr.Row():
+ self.image_preprocess_btn = gr.Button(
+ value=self.component_names.
+ image_preprocess_btn)
+ with gr.Row(variant='panel',
+ visible=False) as self.caption_preprocess_panel:
+ with gr.Box():
+ with gr.Column(variant='panel', min_width=0):
+ with gr.Row():
+ self.caption_preprocess_method = gr.Dropdown(
+ label=self.component_names.
+ caption_processor_type,
+ choices=self.processors_manager.
+ get_choices('caption'),
+ value=self.processors_manager.get_default(
+ 'caption'),
+ interactive=True)
+ with gr.Row():
+ with gr.Column(scale=1, min_width=0):
+ self.caption_use_device = gr.Text(
+ label=self.component_names.used_device,
+ value=self.processors_manager.
+ get_default_device('caption'),
+ interactive=False)
+ with gr.Column(scale=1, min_width=0):
+ self.caption_use_memory = gr.Text(
+ label=self.component_names.used_memory,
+ value=self.processors_manager.
+ get_default_memory('caption'),
+ interactive=False)
+ default_processor_method = self.processors_manager.get_default(
+ 'caption')
+ default_processor_ins = self.processors_manager.get_processor(
+ 'caption', default_processor_method)
+ with gr.Column(scale=1, min_width=0):
+ self.caption_language = gr.Dropdown(
+ label=self.component_names.
+ caption_language,
+ choices=default_processor_ins.
+ get_language_choice,
+ value=default_processor_ins.
+ get_language_default)
+ with gr.Column(scale=1, min_width=0):
+ self.caption_update_mode = gr.Dropdown(
+ label=self.component_names.
+ caption_update_mode,
+ choices=self.component_names.
+ caption_update_choices,
+ value=self.component_names.
+ caption_update_choices[0]
+ if len(self.component_names.
+ caption_update_choices) > 0 else
+ None)
+ with gr.Accordion(
+ label=self.component_names.advance_setting,
+ open=False):
+ with gr.Row():
+ self.sys_prompt = gr.Text(
+ label=self.component_names.
+ system_prompt,
+ interactive=True,
+ value=default_processor_ins.
+ get_para_by_language(
+ default_processor_ins.
+ get_language_default).get(
+ 'PROMPT', ''),
+ lines=2,
+ visible='PROMPT'
+ in default_processor_ins.
+ get_para_by_language(
+ default_processor_ins.
+ get_language_default))
+ with gr.Row():
+ default_max_new_tokens = default_processor_ins.get_para_by_language(
default_processor_ins.
get_language_default).get(
- 'PROMPT', ''),
- lines=2,
- visible='PROMPT' in
- default_processor_ins.get_para_by_language(
+ 'MAX_NEW_TOKENS', {})
+ self.max_new_tokens = gr.Slider(
+ label=self.component_names.
+ max_new_tokens,
+ minimum=default_max_new_tokens.get(
+ 'MIN', 0),
+ maximum=default_max_new_tokens.get(
+ 'MAX', 1.0),
+ step=default_max_new_tokens.get(
+ 'STEP', 0.1),
+ value=default_max_new_tokens.get(
+ 'VALUE', 0.1),
+ visible=len(default_max_new_tokens) >
+ 0,
+ interactive=True)
+ with gr.Row():
+ default_min_new_tokens = default_processor_ins.get_para_by_language(
default_processor_ins.
- get_language_default))
+ get_language_default).get(
+ 'MIN_NEW_TOKENS', {})
+
+ self.min_new_tokens = gr.Slider(
+ label=self.component_names.
+ min_new_tokens,
+ minimum=default_min_new_tokens.get(
+ 'MIN', 0),
+ maximum=default_min_new_tokens.get(
+ 'MAX', 1.0),
+ step=default_min_new_tokens.get(
+ 'STEP', 0.1),
+ value=default_min_new_tokens.get(
+ 'VALUE', 0.1),
+ visible=len(default_min_new_tokens) >
+ 0,
+ interactive=True)
+ with gr.Row():
+ default_num_beams = default_processor_ins.get_para_by_language(
+ default_processor_ins.
+ get_language_default).get(
+ 'NUM_BEAMS', {})
+
+ self.num_beams = gr.Slider(
+ label=self.component_names.num_beams,
+ minimum=default_num_beams.get(
+ 'MIN', 0),
+ maximum=default_num_beams.get(
+ 'MAX', 1.0),
+ step=default_num_beams.get(
+ 'STEP', 0.1),
+ value=default_num_beams.get(
+ 'VALUE', 0.1),
+ visible=len(default_num_beams) > 0,
+ interactive=True)
+ with gr.Row():
+ default_repetition_penalty = default_processor_ins.get_para_by_language(
+ default_processor_ins.
+ get_language_default).get(
+ 'REPETITION_PENALTY', {})
+
+ self.repetition_penalty = gr.Slider(
+ label=self.component_names.
+ repetition_penalty,
+ minimum=default_repetition_penalty.get(
+ 'MIN', 0),
+ maximum=default_repetition_penalty.get(
+ 'MAX', 1.0),
+ step=default_repetition_penalty.get(
+ 'STEP', 0.1),
+ value=default_repetition_penalty.get(
+ 'VALUE', 0.1),
+ visible=len(default_repetition_penalty)
+ > 0,
+ interactive=True)
+ with gr.Row():
+ default_temperature = default_processor_ins.get_para_by_language(
+ default_processor_ins.
+ get_language_default).get(
+ 'TEMPERATURE', {})
+
+ self.temperature = gr.Slider(
+ label=self.component_names.temperature,
+ minimum=default_temperature.get(
+ 'MIN', 0),
+ maximum=default_temperature.get(
+ 'MAX', 1.0),
+ step=default_temperature.get(
+ 'STEP', 0.1),
+ value=default_temperature.get(
+ 'VALUE', 0.1),
+ visible=len(default_temperature) > 0,
+ interactive=True)
+
with gr.Row():
- default_max_new_tokens = default_processor_ins.get_para_by_language(
- default_processor_ins.get_language_default
- ).get('MAX_NEW_TOKENS', {})
- self.max_new_tokens = gr.Slider(
- label=self.component_names.max_new_tokens,
- minimum=default_max_new_tokens.get(
- 'MIN', 0),
- maximum=default_max_new_tokens.get(
- 'MAX', 1.0),
- step=default_max_new_tokens.get(
- 'STEP', 0.1),
- value=default_max_new_tokens.get(
- 'VALUE', 0.1),
- visible=len(default_max_new_tokens) > 0,
- interactive=True)
- with gr.Row():
- default_min_new_tokens = default_processor_ins.get_para_by_language(
- default_processor_ins.get_language_default
- ).get('MIN_NEW_TOKENS', {})
- self.min_new_tokens = gr.Slider(
- label=self.component_names.min_new_tokens,
- minimum=default_min_new_tokens.get(
- 'MIN', 0),
- maximum=default_min_new_tokens.get(
- 'MAX', 1.0),
- step=default_min_new_tokens.get(
- 'STEP', 0.1),
- value=default_min_new_tokens.get(
- 'VALUE', 0.1),
- visible=len(default_min_new_tokens) > 0,
- interactive=True)
- with gr.Row():
- default_num_beams = default_processor_ins.get_para_by_language(
- default_processor_ins.get_language_default
- ).get('NUM_BEAMS', {})
-
- self.num_beams = gr.Slider(
- label=self.component_names.num_beams,
- minimum=default_num_beams.get('MIN', 0),
- maximum=default_num_beams.get('MAX', 1.0),
- step=default_num_beams.get('STEP', 0.1),
- value=default_num_beams.get('VALUE', 0.1),
- visible=len(default_num_beams) > 0,
- interactive=True)
- with gr.Row():
- default_repetition_penalty = default_processor_ins.get_para_by_language(
- default_processor_ins.get_language_default
- ).get('REPETITION_PENALTY', {})
-
- self.repetition_penalty = gr.Slider(
- label=self.component_names.
- repetition_penalty,
- minimum=default_repetition_penalty.get(
- 'MIN', 0),
- maximum=default_repetition_penalty.get(
- 'MAX', 1.0),
- step=default_repetition_penalty.get(
- 'STEP', 0.1),
- value=default_repetition_penalty.get(
- 'VALUE', 0.1),
- visible=len(default_repetition_penalty) >
- 0,
- interactive=True)
- with gr.Row():
- default_temperature = default_processor_ins.get_para_by_language(
- default_processor_ins.get_language_default
- ).get('TEMPERATURE', {})
-
- self.temperature = gr.Slider(
- label=self.component_names.temperature,
- minimum=default_temperature.get('MIN', 0),
- maximum=default_temperature.get(
- 'MAX', 1.0),
- step=default_temperature.get('STEP', 0.1),
- value=default_temperature.get(
- 'VALUE', 0.1),
- visible=len(default_temperature) > 0,
- interactive=True)
-
- with gr.Row():
-
- with gr.Column(scale=1, min_width=0):
- self.caption_preprocess_btn = gr.Button(
- value=self.component_names.
- caption_preprocess_btn)
+ with gr.Column(scale=1, min_width=0):
+ self.caption_preprocess_btn = gr.Button(
+ value=self.component_names.
+ caption_preprocess_btn)
with gr.Row(variant='panel', equal_height=True):
with gr.Column(scale=1, min_width=0):
@@ -426,40 +490,88 @@ class DatasetGalleryUI(UIBase):
hit_range_mode = reverse_mode[range_mode]
return hit_range_mode
+ # Used to change the target gallery state( is not used now)
def change_gallery(dataset_type, dataset_name):
dataset_type = create_dataset.get_trans_dataset_type(dataset_type)
- dataset_ins = create_dataset.dataset_dict[dataset_type][
- dataset_name]
+ dataset_ins = create_dataset.dataset_dict.get(
+ dataset_type, {}).get(dataset_name, None)
+ if dataset_ins is None:
+ return gr.Gallery(), gr.Gallery(), gr.Column(), gr.Text()
cursor = dataset_ins.cursor
image_list = [
os.path.join(dataset_ins.meta['local_work_dir'],
v['relative_path']) for v in dataset_ins.data
]
- if cursor >= 0:
- return gr.Gallery(label=dataset_name,
- value=image_list,
- selected_index=cursor)
+ if dataset_type == 'scepter_img2img':
+ src_image_list = [
+ os.path.join(dataset_ins.meta['local_work_dir'],
+ v['src_relative_path'])
+ for v in dataset_ins.data
+ ]
+ if cursor >= 0:
+ ret_src_gallery = gr.Gallery(label=dataset_name,
+ value=src_image_list,
+ selected_index=cursor,
+ visible=True)
+ else:
+ ret_src_gallery = gr.Gallery(label=dataset_name,
+ value=src_image_list,
+ selected_index=None,
+ visible=True)
+ ret_src_panel = gr.Column(visible=True)
else:
- return gr.Gallery(label=dataset_name,
- value=image_list,
- selected_index=None)
+ ret_src_gallery = gr.Gallery(visible=False)
+ ret_src_panel = gr.Column(visible=False)
+
+ if cursor >= 0:
+ return (gr.Gallery(label=dataset_name,
+ value=image_list,
+ selected_index=cursor), ret_src_gallery,
+ ret_src_panel, gr.Text(value='view'))
+ else:
+ return (gr.Gallery(label=dataset_name,
+ value=image_list,
+ selected_index=None), ret_src_gallery,
+ ret_src_panel, gr.Text(value='view'))
self.gallery_state.change(
change_gallery,
inputs=[create_dataset.dataset_type, create_dataset.dataset_name],
- outputs=[self.gl_dataset_images],
+ outputs=[
+ self.gl_dataset_images, self.src_gl_dataset_images,
+ self.src_panel, self.mode_state
+ ],
queue=False)
+ # select one target image return new select index for source image and target image
def select_image(dataset_type, dataset_name, evt: gr.SelectData):
dataset_type = create_dataset.get_trans_dataset_type(dataset_type)
- dataset_ins = create_dataset.dataset_dict[dataset_type][
- dataset_name]
+ dataset_ins = create_dataset.dataset_dict.get(
+ dataset_type, {}).get(dataset_name, None)
+ if dataset_ins is None:
+ return gr.Gallery(), gr.Gallery(), gr.Textbox(), '', gr.Text()
dataset_ins.set_cursor(evt.index)
current_info = dataset_ins.current_record
all_number = len(dataset_ins)
-
- ret_image_gl = gr.Gallery(selected_index=dataset_ins.cursor) if dataset_ins.cursor >= 0 \
+ image_list = [
+ os.path.join(dataset_ins.meta['local_work_dir'],
+ v['relative_path']) for v in dataset_ins.data
+ ]
+ ret_image_gl = gr.Gallery(
+ value=image_list,
+ selected_index=dataset_ins.cursor) if dataset_ins.cursor >= 0 \
else gr.Gallery(value=[], selected_index=None)
+ if dataset_type == 'scepter_img2img':
+ src_image_list = [
+ os.path.join(dataset_ins.meta['local_work_dir'],
+ v['src_relative_path'])
+ for v in dataset_ins.data
+ ]
+ ret_src_image_gl = gr.Gallery(value=src_image_list, selected_index=dataset_ins.cursor, visible=True) \
+ if dataset_ins.cursor >= 0 else gr.Gallery(value=[], selected_index=None)
+ else:
+ ret_src_image_gl = gr.Gallery(visible=False)
+
ret_caption = gr.Textbox(value=current_info.get('caption', ''))
ret_info = gr.Text(value=f'{dataset_ins.cursor+1}/{all_number}')
@@ -471,22 +583,27 @@ class DatasetGalleryUI(UIBase):
image_info = self.component_names.ori_dataset.format(
ret_image_height, ret_image_width, ret_image_format)
- return (ret_image_gl, ret_caption, image_info, ret_info)
+ return (ret_image_gl, ret_src_image_gl, ret_caption, image_info,
+ ret_info)
self.gl_dataset_images.select(
select_image,
inputs=[create_dataset.dataset_type, create_dataset.dataset_name],
outputs=[
- self.gl_dataset_images, self.ori_caption, self.image_info,
- self.info
+ self.gl_dataset_images, self.src_gl_dataset_images,
+ self.ori_caption, self.image_info, self.info
],
queue=False)
+ # select one target image return new select index for source image and target image in edit mode
def edit_select_image(dataset_type, dataset_name, mode_state,
evt: gr.SelectData):
dataset_type = create_dataset.get_trans_dataset_type(dataset_type)
- dataset_ins = create_dataset.dataset_dict[dataset_type][
- dataset_name]
+ dataset_ins = create_dataset.dataset_dict.get(
+ dataset_type, {}).get(dataset_name, None)
+ if dataset_ins is None:
+ return gr.Gallery(), gr.Gallery(), gr.Gallery(), gr.Gallery(
+ ), gr.Textbox(), '', gr.Text()
cursor = dataset_ins.cursor_from_edit_index(evt.index)
dataset_ins.set_cursor(cursor)
@@ -496,7 +613,20 @@ class DatasetGalleryUI(UIBase):
ret_image_gl = gr.Gallery(selected_index=dataset_ins.cursor) if dataset_ins.cursor >= 0 \
else gr.Gallery(value=[], selected_index=None)
dataset_ins.edit_cursor = evt.index
- ret_edit_image_gl = gr.Gallery(selected_index=evt.index)
+ ret_edit_image_gl = gr.Gallery(
+ selected_index=dataset_ins.edit_cursor)
+
+ if dataset_type == 'scepter_img2img':
+ ret_src_image_gl = gr.Gallery(selected_index=dataset_ins.cursor, visible=True) \
+ if dataset_ins.cursor >= 0 \
+ else gr.Gallery(value=[], selected_index=None, visible=True)
+ ret_src_edit_image_gl = gr.Gallery(selected_index=dataset_ins.edit_cursor, visible=True) \
+ if dataset_ins.cursor >= 0 \
+ else gr.Gallery(value=[], selected_index=None, visible=True)
+ else:
+ ret_src_image_gl = gr.Gallery(visible=False)
+ ret_src_edit_image_gl = gr.Gallery(visible=False)
+
ret_edit_caption = gr.Textbox(value=current_info.get(
'edit_caption', ''),
visible=True)
@@ -514,27 +644,71 @@ class DatasetGalleryUI(UIBase):
ret_edit_image_format)
ret_info = gr.Text(value=f'{dataset_ins.cursor+1}/{all_number}')
- return (ret_image_gl, ret_edit_image_gl, ret_edit_caption,
- edit_image_info, ret_info)
+ return (ret_image_gl, ret_src_image_gl, ret_edit_image_gl,
+ ret_src_edit_image_gl, ret_edit_caption, edit_image_info,
+ ret_info)
- self.edit_gl_dataset_images.select(edit_select_image,
- inputs=[
- create_dataset.dataset_type,
- create_dataset.dataset_name,
- self.mode_state
- ],
- outputs=[
- self.gl_dataset_images,
- self.edit_gl_dataset_images,
- self.edit_caption,
- self.edit_image_info, self.info
- ],
- queue=False)
+ self.edit_gl_dataset_images.select(
+ edit_select_image,
+ inputs=[
+ create_dataset.dataset_type, create_dataset.dataset_name,
+ self.mode_state
+ ],
+ outputs=[
+ self.gl_dataset_images, self.src_gl_dataset_images,
+ self.edit_gl_dataset_images, self.edit_src_gl_dataset_images,
+ self.edit_caption, self.edit_image_info, self.info
+ ],
+ queue=False)
+ def src_select_image(dataset_type, dataset_name, evt: gr.SelectData):
+ dataset_type = create_dataset.get_trans_dataset_type(dataset_type)
+ dataset_ins = create_dataset.dataset_dict.get(
+ dataset_type, {}).get(dataset_name, None)
+ if dataset_ins is None:
+ return gr.Gallery(), gr.Gallery(), gr.Textbox(), '', gr.Text()
+ dataset_ins.set_cursor(evt.index)
+ ret_image_gl = gr.Gallery(selected_index=dataset_ins.cursor) if dataset_ins.cursor >= 0 \
+ else gr.Gallery(value=[], selected_index=None)
+
+ return ret_image_gl
+
+ self.src_gl_dataset_images.select(
+ src_select_image,
+ inputs=[create_dataset.dataset_type, create_dataset.dataset_name],
+ outputs=[self.gl_dataset_images],
+ queue=False)
+
+ def edit_src_select_image(dataset_type, dataset_name, mode_state,
+ evt: gr.SelectData):
+ dataset_type = create_dataset.get_trans_dataset_type(dataset_type)
+ dataset_ins = create_dataset.dataset_dict.get(
+ dataset_type, {}).get(dataset_name, None)
+ if dataset_ins is None:
+ return gr.Gallery()
+ cursor = dataset_ins.cursor_from_edit_index(evt.index)
+ dataset_ins.set_cursor(cursor)
+ dataset_ins.edit_cursor = evt.index
+ ret_edit_image_gl = gr.Gallery(
+ selected_index=dataset_ins.edit_cursor)
+ return ret_edit_image_gl
+
+ self.edit_src_gl_dataset_images.select(
+ edit_src_select_image,
+ inputs=[
+ create_dataset.dataset_type, create_dataset.dataset_name,
+ self.mode_state
+ ],
+ outputs=[self.edit_gl_dataset_images],
+ queue=False)
+
+ # target image gallery changed
def change_gallery(dataset_type, dataset_name):
dataset_type = create_dataset.get_trans_dataset_type(dataset_type)
- dataset_ins = create_dataset.dataset_dict[dataset_type][
- dataset_name]
+ dataset_ins = create_dataset.dataset_dict.get(
+ dataset_type, {}).get(dataset_name, None)
+ if dataset_ins is None:
+ return gr.Textbox(), '', gr.Textbox(), '', gr.Text()
current_info = dataset_ins.current_record
ret_image_height = current_info.get('height', -1)
ret_image_width = current_info.get('width', -1)
@@ -588,10 +762,13 @@ class DatasetGalleryUI(UIBase):
outputs=[self.mode_state],
queue=False)
+ # reset edit information to clean the status of editing
def reset_edit(dataset_type, dataset_name):
dataset_type = create_dataset.get_trans_dataset_type(dataset_type)
- dataset_ins = create_dataset.dataset_dict[dataset_type][
- dataset_name]
+ dataset_ins = create_dataset.dataset_dict.get(
+ dataset_type, {}).get(dataset_name, None)
+ if dataset_ins is None:
+ return gr.Gallery(), gr.Text(), ''
for idx, one_data in enumerate(dataset_ins.edit_samples):
current_cursor = dataset_ins.cursor_from_edit_index(idx)
dataset_ins.edit_samples[idx][
@@ -607,6 +784,19 @@ class DatasetGalleryUI(UIBase):
current_cursor]['width']
dataset_ins.edit_samples[idx][
'edit_height'] = dataset_ins.data[current_cursor]['height']
+ if dataset_type == 'scepter_img2img':
+ dataset_ins.edit_samples[idx][
+ 'edit_src_relative_path'] = dataset_ins.data[
+ current_cursor]['src_relative_path']
+ dataset_ins.edit_samples[idx][
+ 'edit_src_image_path'] = dataset_ins.data[
+ current_cursor]['src_image_path']
+ dataset_ins.edit_samples[idx][
+ 'edit_src_width'] = dataset_ins.data[current_cursor][
+ 'src_width']
+ dataset_ins.edit_samples[idx][
+ 'edit_src_height'] = dataset_ins.data[current_cursor][
+ 'src_height']
image_list = [
os.path.join(dataset_ins.meta['local_work_dir'],
@@ -640,15 +830,21 @@ class DatasetGalleryUI(UIBase):
],
queue=False)
+ # confirm edit upload sample
def confirm_edit(dataset_type, dataset_name):
dataset_type = create_dataset.get_trans_dataset_type(dataset_type)
- dataset_ins = create_dataset.dataset_dict[dataset_type][
- dataset_name]
+ dataset_ins = create_dataset.dataset_dict.get(
+ dataset_type, {}).get(dataset_name, None)
+ if dataset_ins is None:
+ return (gr.Gallery(), gr.Gallery(), gr.Textbox(), gr.Text(),
+ gr.Text(), gr.Text(),
+ self.component_names.system_log.format('None'),
+ gr.Text())
is_flg, msg = dataset_ins.apply_changes()
if not is_flg:
- return (gr.Gallery(), gr.Textbox(), gr.Text(), gr.Text(),
- gr.Text(), self.component_names.system_log.format(msg),
- gr.Text())
+ return (gr.Gallery(), gr.Gallery(), gr.Textbox(), gr.Text(),
+ gr.Text(), gr.Text(),
+ self.component_names.system_log.format(msg), gr.Text())
image_list = [
os.path.join(dataset_ins.local_work_dir, v['relative_path'])
for v in dataset_ins.data
@@ -661,8 +857,23 @@ class DatasetGalleryUI(UIBase):
image_info = self.component_names.ori_dataset.format(
ret_image_height, ret_image_width, ret_image_format)
+
+ if dataset_type == 'scepter_img2img':
+ src_image_list = [
+ os.path.join(dataset_ins.local_work_dir,
+ v['src_relative_path'])
+ for v in dataset_ins.data
+ ]
+ ret_src_image_gl = gr.Gallery(
+ value=src_image_list,
+ selected_index=dataset_ins.cursor,
+ visible=True)
+ else:
+ ret_src_image_gl = gr.Gallery(visible=False)
+
return (gr.Gallery(value=image_list,
selected_index=dataset_ins.cursor),
+ ret_src_image_gl,
gr.Textbox(value=current_record.get('caption', '')),
image_info, self.component_names.system_log.format(''),
gr.Text(value='view'))
@@ -671,8 +882,9 @@ class DatasetGalleryUI(UIBase):
confirm_edit,
inputs=[create_dataset.dataset_type, create_dataset.dataset_name],
outputs=[
- self.gl_dataset_images, self.ori_caption, self.image_info,
- self.sys_log, self.mode_state
+ self.gl_dataset_images, self.src_gl_dataset_images,
+ self.ori_caption, self.image_info, self.sys_log,
+ self.mode_state
],
queue=False)
@@ -688,23 +900,31 @@ class DatasetGalleryUI(UIBase):
image_proc_status = True
elif hit_status == 1:
caption_proc_status = True
- return gr.Column(visible=image_proc_status), gr.Column(
- visible=caption_proc_status)
+ return (
+ # gr.Column(visible=image_proc_status), gr.Column(
+ # visible=caption_proc_status)
+ gr.Column(visible=image_proc_status or caption_proc_status),
+ gr.Row(visible=image_proc_status),
+ gr.Row(visible=caption_proc_status))
self.preprocess_checkbox.change(preprocess_box_change,
inputs=[self.preprocess_checkbox],
outputs=[
+ self.preprocess_panel,
self.image_preprocess_panel,
self.caption_preprocess_panel
],
queue=False)
def preprocess_image(mode_state, preprocess_method, upload_image,
- upload_caption, height_ratio, width_ratio,
- dataset_type, dataset_name):
+ upload_src_image, upload_caption, height_ratio,
+ width_ratio, dataset_type, dataset_name):
dataset_type = create_dataset.get_trans_dataset_type(dataset_type)
- dataset_ins = create_dataset.dataset_dict[dataset_type][
- dataset_name]
+ dataset_ins = create_dataset.dataset_dict.get(
+ dataset_type, {}).get(dataset_name, None)
+ if dataset_ins is None:
+ return (gr.Gallery(), gr.Gallery(), '', gr.Image(), gr.Image(),
+ '', '', self.component_names.system_log.format('None'))
if hasattr(manager, 'inference'):
for k, v in manager.inference.pipe_manager.pipeline_level_modules.items(
):
@@ -714,32 +934,38 @@ class DatasetGalleryUI(UIBase):
'image', preprocess_method)
if processor_ins is None:
sys_log = 'Current processor is illegal'
- return (gr.Gallery(), '', gr.Image(), '',
+ return (gr.Gallery(), gr.Gallery(), '', gr.Image(),
+ gr.Image(), '', '',
self.component_names.system_log.format(sys_log))
is_flag, msg = processor_ins.load_model()
if not is_flag:
sys_log = f'Load processor failed: {msg}'
- return (gr.Gallery(), '', gr.Image(), '',
+ return (gr.Gallery(), gr.Gallery(), '', gr.Image(),
+ gr.Image(), '', '',
self.component_names.system_log.format(sys_log))
if mode_state == 'edit':
+ save_folders = 'edit_images'
+ os.makedirs(os.path.join(dataset_ins.meta['local_work_dir'],
+ save_folders),
+ exist_ok=True)
+
edit_index_list = dataset_ins.edit_list
for index in edit_index_list:
one_data = dataset_ins.data[index]
+ # process target image
relative_image_path = one_data.get(
'edit_relative_path', one_data['relative_path'])
file_name, surfix = os.path.splitext(relative_image_path)
- src_image = os.path.join(
+
+ input_image = os.path.join(
dataset_ins.meta['local_work_dir'],
relative_image_path)
- target_image = processor_ins(
- Image.open(src_image).convert('RGB'),
+ output_image = processor_ins(
+ Image.open(input_image).convert('RGB'),
height_ratio=height_ratio,
width_ratio=width_ratio)
- now_time = time.time()
- save_folders = 'edit_images'
- os.makedirs(os.path.join(
- dataset_ins.meta['local_work_dir'], save_folders),
- exist_ok=True)
+
+ now_time = int(time.time())
save_file_name = f'{os.path.basename(file_name)}_{now_time}'
save_relative_image_path = os.path.join(
save_folders, f'{get_md5(save_file_name)}{surfix}')
@@ -748,17 +974,58 @@ class DatasetGalleryUI(UIBase):
local_save_image_math = os.path.join(
dataset_ins.meta['local_work_dir'],
save_relative_image_path)
- target_image.save(local_save_image_math)
+ output_image.save(local_save_image_math)
FS.put_object_from_local_file(local_save_image_math,
save_image_path)
+
dataset_ins.data[index][
'edit_relative_path'] = save_relative_image_path
dataset_ins.data[index][
'edit_image_path'] = save_image_path
- dataset_ins.data[index]['edit_width'] = target_image.size[
+ dataset_ins.data[index]['edit_width'] = output_image.size[
0]
- dataset_ins.data[index]['edit_height'] = target_image.size[
+ dataset_ins.data[index]['edit_height'] = output_image.size[
1]
+
+ if dataset_type == 'scepter_img2img':
+ # process target image
+ src_relative_image_path = one_data.get(
+ 'edit_src_relative_path',
+ one_data['src_relative_path'])
+ file_name, surfix = os.path.splitext(
+ src_relative_image_path)
+
+ input_image = os.path.join(
+ dataset_ins.meta['local_work_dir'],
+ src_relative_image_path)
+ output_image = processor_ins(
+ Image.open(input_image).convert('RGB'),
+ height_ratio=height_ratio,
+ width_ratio=width_ratio)
+
+ now_time = int(time.time())
+ save_file_name = f'{os.path.basename(file_name)}_{now_time}'
+ save_src_relative_image_path = os.path.join(
+ save_folders, f'{get_md5(save_file_name)}{surfix}')
+ save_src_image_path = os.path.join(
+ dataset_ins.meta['work_dir'],
+ save_src_relative_image_path)
+ local_save_src_image_math = os.path.join(
+ dataset_ins.meta['local_work_dir'],
+ save_src_relative_image_path)
+ output_image.save(local_save_src_image_math)
+ FS.put_object_from_local_file(
+ local_save_src_image_math, save_src_image_path)
+
+ dataset_ins.data[index][
+ 'edit_src_relative_path'] = save_src_relative_image_path
+ dataset_ins.data[index][
+ 'edit_src_image_path'] = save_src_image_path
+ dataset_ins.data[index][
+ 'edit_src_width'] = output_image.size[0]
+ dataset_ins.data[index][
+ 'edit_src_height'] = output_image.size[1]
+
dataset_ins.update_dataset()
image_list = [
os.path.join(
@@ -787,8 +1054,23 @@ class DatasetGalleryUI(UIBase):
edit_image_info = ''
ret_image_gallery = gr.Gallery(value=image_list)
+
+ if dataset_type == 'scepter_img2img':
+ src_image_list = [
+ os.path.join(
+ dataset_ins.meta['local_work_dir'],
+ v.get('edit_src_relative_path',
+ v['src_relative_path']))
+ for v in dataset_ins.edit_samples
+ ]
+ ret_src_image_gallery = gr.Gallery(value=src_image_list)
+ else:
+ ret_src_image_gallery = gr.Gallery()
+
ret_upload_image = gr.Image()
+ ret_src_upload_image = gr.Image()
ret_upload_image_info = ''
+ ret_upload_src_image_info = gr.Markdown(visible=False)
elif mode_state == 'add':
if isinstance(upload_image, dict):
image = upload_image['image']
@@ -799,37 +1081,63 @@ class DatasetGalleryUI(UIBase):
width_ratio=width_ratio)
w, h = target_image.size
ret_image_gallery = gr.Gallery()
+ ret_src_image_gallery = gr.Gallery()
ret_upload_image = gr.Image(target_image)
+
ret_upload_image_info = self.component_names.upload_image_info.format(
h, w)
+ if dataset_type == 'scepter_img2img':
+ if isinstance(upload_src_image, dict):
+ src_image = upload_src_image['image']
+ else:
+ src_image = upload_src_image
+ src_target_image = processor_ins(src_image.convert('RGB'),
+ height_ratio=height_ratio,
+ width_ratio=width_ratio)
+
+ ret_src_upload_image = gr.Image(src_target_image)
+ src_w, src_h = src_target_image.size
+ ret_upload_src_image_info = gr.Markdown(
+ value=self.component_names.upload_src_image_info.
+ format(src_h, src_w),
+ visible=True)
+ else:
+ ret_src_upload_image = gr.Image()
+ ret_upload_src_image_info = gr.Markdown(visible=False)
edit_image_info = ''
else:
ret_image_gallery = gr.Gallery()
+ ret_src_image_gallery = gr.Gallery()
ret_upload_image = gr.Image()
+ ret_src_upload_image = gr.Image()
ret_upload_image_info = ''
+ ret_upload_src_image_info = gr.Markdown()
edit_image_info = ''
is_flag, msg = processor_ins.unload_model()
if not is_flag:
sys_log = f'Unoad processor failed: {msg}'
return (ret_image_gallery, edit_image_info, ret_upload_image,
- ret_upload_image_info,
+ ret_src_upload_image, ret_upload_image_info,
self.component_names.system_log.format(sys_log))
- return (ret_image_gallery, edit_image_info, ret_upload_image,
- ret_upload_image_info,
+ return (ret_image_gallery, ret_src_image_gallery, edit_image_info,
+ ret_upload_image, ret_src_upload_image,
+ ret_upload_image_info, ret_upload_src_image_info,
self.component_names.system_log.format(''))
self.image_preprocess_btn.click(
preprocess_image,
inputs=[
self.mode_state, self.image_preprocess_method,
- self.upload_image, self.caption, self.height_ratio,
- self.width_ratio, create_dataset.dataset_type,
- create_dataset.dataset_name
+ self.upload_image, self.upload_src_image, self.upload_caption,
+ self.height_ratio, self.width_ratio,
+ create_dataset.dataset_type, create_dataset.dataset_name
],
outputs=[
- self.edit_gl_dataset_images, self.edit_image_info,
- self.upload_image, self.upload_image_info, self.sys_log
+ self.edit_gl_dataset_images, self.edit_src_gl_dataset_images,
+ self.edit_image_info, self.upload_image, self.upload_src_image,
+ self.upload_image_info, self.upload_src_image_info,
+ self.sys_log
],
queue=False)
@@ -946,7 +1254,8 @@ class DatasetGalleryUI(UIBase):
max_new_tokens, min_new_tokens, num_beams,
repetition_penalty, temperature,
caption_update_mode, upload_image,
- upload_caption, dataset_type, dataset_name):
+ upload_src_image, upload_caption, dataset_type,
+ dataset_name):
reverse_update_mode = {
v: idx
@@ -969,8 +1278,11 @@ class DatasetGalleryUI(UIBase):
return gr.Textbox(), gr.Textbox(
), self.component_names.system_log.format(sys_log)
dataset_type = create_dataset.get_trans_dataset_type(dataset_type)
- dataset_ins = create_dataset.dataset_dict[dataset_type][
- dataset_name]
+ dataset_ins = create_dataset.dataset_dict.get(
+ dataset_type, {}).get(dataset_name, None)
+ if dataset_ins is None:
+ return gr.Textbox(), gr.Textbox(
+ ), self.component_names.system_log.format('None')
if mode_state == 'edit':
edit_index_list = dataset_ins.edit_list
for index in edit_index_list:
@@ -988,9 +1300,28 @@ class DatasetGalleryUI(UIBase):
num_beams=num_beams,
repetition_penalty=repetition_penalty,
temperature=temperature)
+
+ if dataset_type == 'scepter_img2img':
+ relative_image_path = one_data.get(
+ 'edit_relative_path',
+ one_data['src_relative_path'])
+ src_image = os.path.join(
+ dataset_ins.meta['local_work_dir'],
+ relative_image_path)
+ src_response = processor_ins(
+ src_image,
+ prompt=sys_prompt,
+ max_new_tokens=max_new_tokens,
+ min_new_tokens=min_new_tokens,
+ num_beams=num_beams,
+ repetition_penalty=repetition_penalty,
+ temperature=temperature)
+ response = 'src: ' + src_response + ' target: ' + response
+
if update_mode == 0:
- dataset_ins.data[index][
- 'edit_caption'] += ';' + response
+ if len(dataset_ins.data[index]['edit_caption']) > 0:
+ dataset_ins.data[index]['edit_caption'] += ';'
+ dataset_ins.data[index]['edit_caption'] += response
elif update_mode == 1:
dataset_ins.data[index]['edit_caption'] = response
@@ -1019,9 +1350,33 @@ class DatasetGalleryUI(UIBase):
num_beams=num_beams,
repetition_penalty=repetition_penalty,
temperature=temperature)
+
+ if dataset_type == 'scepter_img2img':
+ if isinstance(upload_src_image, dict):
+ src_image = upload_src_image['image']
+ else:
+ src_image = upload_src_image
+ w, h = src_image.size
+ src_image_path = os.path.join(
+ save_folder,
+ f'{imagehash.phash(src_image)}_{w}_{h}.png')
+ if not os.path.exists(src_image_path):
+ src_image.save(src_image_path)
+ src_response = processor_ins(
+ src_image_path,
+ prompt=sys_prompt,
+ max_new_tokens=max_new_tokens,
+ min_new_tokens=min_new_tokens,
+ num_beams=num_beams,
+ repetition_penalty=repetition_penalty,
+ temperature=temperature)
+ response = 'src: ' + src_response + ' target: ' + response
+
ret_edit_caption = gr.Textbox()
if update_mode == 0:
- upload_caption += ';' + response
+ if len(upload_caption) > 0:
+ upload_caption += ';'
+ upload_caption += response
elif update_mode == 1:
upload_caption = response
ret_upload_caption = gr.Textbox(value=upload_caption)
@@ -1045,19 +1400,46 @@ class DatasetGalleryUI(UIBase):
self.mode_state, self.caption_preprocess_method,
self.sys_prompt, self.max_new_tokens, self.min_new_tokens,
self.num_beams, self.repetition_penalty, self.temperature,
- self.caption_update_mode, self.upload_image, self.caption,
+ self.caption_update_mode, self.upload_image,
+ self.upload_src_image, self.upload_caption,
create_dataset.dataset_type, create_dataset.dataset_name
],
- outputs=[self.edit_caption, self.caption, self.sys_log],
+ outputs=[self.edit_caption, self.upload_caption, self.sys_log],
queue=False)
def mode_state_change(mode_state, dataset_type, dataset_name):
# default is editing current sample
+ dataset_type = create_dataset.get_trans_dataset_type(dataset_type)
if mode_state == 'edit':
- dataset_type = create_dataset.get_trans_dataset_type(
- dataset_type)
- dataset_ins = create_dataset.dataset_dict[dataset_type][
- dataset_name]
+ dataset_ins = create_dataset.dataset_dict.get(
+ dataset_type, {}).get(dataset_name, None)
+ if dataset_ins is None or len(dataset_ins) < 1:
+ return (
+ gr.Gallery(),
+ gr.Gallery(),
+ gr.Column(),
+ gr.Row(visible=True),
+ gr.Column(),
+ gr.Column(),
+ gr.Image(),
+ gr.Column(),
+ '',
+ gr.Markdown(),
+ gr.Textbox(),
+ gr.CheckboxGroup(),
+ gr.Column(),
+ # gr.Column(),
+ gr.Row(),
+ # gr.Column(),
+ gr.Row(),
+ gr.Column(),
+ gr.Gallery(),
+ gr.Gallery(),
+ gr.Column(),
+ gr.Dropdown(),
+ gr.Dropdown(value=[]),
+ self.component_names.system_log.format(
+ self.component_names.illegal_blank_dataset))
dataset_ins.set_edit_range(str(dataset_ins.cursor + 1))
image_list = [
os.path.join(
@@ -1068,29 +1450,192 @@ class DatasetGalleryUI(UIBase):
selected_index = dataset_ins.edit_index_from_cursor(
dataset_ins.cursor)
dataset_ins.edit_cursor = selected_index
- return (gr.Row(visible=True), gr.Column(visible=True),
- gr.Column(visible=False), gr.CheckboxGroup(value=None),
- gr.Column(visible=False), gr.Column(visible=False),
- gr.Column(visible=True),
- gr.Gallery(value=image_list,
- selected_index=selected_index,
- visible=True),
- gr.Dropdown(
- value=self.component_names.range_mode_name[0]))
+ current_info = dataset_ins.current_record
+ ret_edit_caption = gr.Textbox(value=current_info.get(
+ 'edit_caption', ''),
+ visible=True)
+
+ if dataset_type == 'scepter_img2img':
+ src_image_list = [
+ os.path.join(
+ dataset_ins.meta['local_work_dir'],
+ v.get('edit_src_relative_path',
+ v['src_relative_path']))
+ for v in dataset_ins.edit_samples
+ ]
+ if dataset_ins.edit_cursor >= 0:
+ ret_edit_src_gallery = gr.Gallery(
+ label=dataset_name,
+ value=src_image_list,
+ selected_index=selected_index,
+ visible=True)
+ else:
+ ret_edit_src_gallery = gr.Gallery(label=dataset_name,
+ value=src_image_list,
+ selected_index=None,
+ visible=True)
+ ret_edit_src_panel = gr.Column(visible=True)
+ else:
+ ret_edit_src_gallery = gr.Gallery(visible=False)
+ ret_edit_src_panel = gr.Column(visible=False)
+ return (
+ gr.Gallery(),
+ gr.Gallery(),
+ gr.Column(),
+ gr.Row(visible=True),
+ gr.Column(visible=True),
+ gr.Column(visible=False),
+ gr.Image(),
+ gr.Column(),
+ '',
+ gr.Markdown(visible=False),
+ gr.Textbox(),
+ gr.CheckboxGroup(value=None),
+ gr.Column(visible=False),
+ # gr.Column(visible=False),
+ gr.Row(visible=False),
+ # gr.Column(visible=False),
+ gr.Row(visible=False),
+ gr.Column(visible=True),
+ gr.Gallery(value=image_list,
+ selected_index=selected_index,
+ visible=True),
+ ret_edit_caption,
+ ret_edit_src_gallery,
+ ret_edit_src_panel,
+ gr.Dropdown(
+ # choices=self.component_names.range_mode_name,
+ # value=self.component_names.range_mode_name[0]
+ ),
+ gr.Dropdown(value=[]),
+ self.component_names.system_log.format(''))
elif mode_state == 'add':
- return (gr.Row(visible=False), gr.Column(visible=False),
- gr.Column(visible=True), gr.CheckboxGroup(),
- gr.Column(visible=True), gr.Column(visible=True),
- gr.Column(visible=False), gr.Gallery(visible=False),
- gr.Dropdown(
- value=self.component_names.range_mode_name[0]))
+ return (
+ gr.Gallery(),
+ gr.Gallery(),
+ gr.Column(),
+ gr.Row(visible=False),
+ gr.Column(visible=False),
+ gr.Column(visible=True),
+ gr.Image(),
+ gr.Column(visible=True) if dataset_type
+ == 'scepter_img2img' else gr.Column(visible=False),
+ '',
+ gr.Markdown(visible=True) if dataset_type
+ == 'scepter_img2img' else gr.Markdown(visible=False),
+ gr.Textbox(value=''),
+ gr.CheckboxGroup(),
+ gr.Column(visible=True),
+ # gr.Column(visible=True),
+ gr.Row(visible=True),
+ # gr.Column(visible=True),
+ gr.Row(visible=True),
+ gr.Column(visible=False),
+ gr.Gallery(visible=False),
+ gr.Textbox(),
+ gr.Gallery(visible=False),
+ gr.Column(visible=False),
+ gr.Dropdown(
+ # choices=self.component_names.range_mode_name,
+ # value=self.component_names.range_mode_name[0]
+ ),
+ gr.Dropdown(value=[]),
+ self.component_names.system_log.format(''))
else:
- return (gr.Row(visible=False), gr.Column(visible=False),
- gr.Column(visible=False), gr.CheckboxGroup(value=None),
- gr.Column(visible=False), gr.Column(visible=False),
- gr.Column(visible=False), gr.Gallery(visible=False),
- gr.Dropdown(
- value=self.component_names.range_mode_name[0]))
+ dataset_ins = create_dataset.dataset_dict.get(
+ dataset_type, {}).get(dataset_name, None)
+ if dataset_ins is None:
+ return (
+ gr.Gallery(),
+ gr.Gallery(),
+ gr.Column(),
+ gr.Row(visible=True),
+ gr.Column(),
+ gr.Column(),
+ gr.Image(),
+ gr.Column(),
+ '',
+ gr.Markdown(),
+ gr.Textbox(),
+ gr.CheckboxGroup(),
+ gr.Column(),
+ # gr.Column(),
+ gr.Row(),
+ # gr.Column(),
+ gr.Row(),
+ gr.Column(),
+ gr.Gallery(),
+ gr.Textbox(),
+ gr.Gallery(),
+ gr.Column(),
+ gr.Dropdown(),
+ gr.Dropdown(value=[]),
+ self.component_names.system_log.format(
+ self.component_names.illegal_blank_dataset))
+ cursor = dataset_ins.cursor
+ image_list = [
+ os.path.join(dataset_ins.meta['local_work_dir'],
+ v['relative_path']) for v in dataset_ins.data
+ ]
+ if dataset_type == 'scepter_img2img':
+ src_image_list = [
+ os.path.join(dataset_ins.meta['local_work_dir'],
+ v['src_relative_path'])
+ for v in dataset_ins.data
+ ]
+ if cursor >= 0:
+ ret_src_gallery = gr.Gallery(label=dataset_name,
+ value=src_image_list,
+ selected_index=cursor,
+ visible=True)
+ else:
+ ret_src_gallery = gr.Gallery(label=dataset_name,
+ value=src_image_list,
+ selected_index=None,
+ visible=True)
+ ret_src_panel = gr.Column(visible=True)
+ else:
+ ret_src_gallery = gr.Gallery(visible=False)
+ ret_src_panel = gr.Column(visible=False)
+
+ if cursor >= 0:
+ ret_gl_gallery = gr.Gallery(label=dataset_name,
+ value=image_list,
+ selected_index=cursor)
+ else:
+ ret_gl_gallery = gr.Gallery(label=dataset_name,
+ value=image_list,
+ selected_index=None)
+
+ return (
+ ret_gl_gallery,
+ ret_src_gallery,
+ ret_src_panel,
+ gr.Row(visible=False),
+ gr.Column(visible=False),
+ gr.Column(visible=False),
+ gr.Image(),
+ gr.Column(),
+ '',
+ gr.Markdown(visible=False),
+ gr.Textbox(value=''),
+ gr.CheckboxGroup(value=None),
+ gr.Column(visible=False),
+ # gr.Column(visible=False),
+ gr.Row(visible=False),
+ # gr.Column(visible=False),
+ gr.Row(visible=False),
+ gr.Column(visible=False),
+ gr.Gallery(visible=False),
+ gr.Textbox(),
+ gr.Gallery(visible=False),
+ gr.Column(visible=False),
+ gr.Dropdown(
+ # choices=self.component_names.range_mode_name,
+ # value=self.component_names.range_mode_name[0]
+ ),
+ gr.Dropdown(value=[]),
+ '')
self.mode_state.change(
mode_state_change,
@@ -1099,22 +1644,31 @@ class DatasetGalleryUI(UIBase):
create_dataset.dataset_name
],
outputs=[
- self.edit_setting_panel, self.edit_confirm_panel,
- self.upload_panel, self.preprocess_checkbox,
+ self.gl_dataset_images, self.src_gl_dataset_images,
+ self.src_panel, self.edit_setting_panel,
+ self.edit_confirm_panel, self.upload_panel, self.upload_image,
+ self.upload_src_image_panel, self.upload_image_info,
+ self.upload_src_image_info, self.upload_caption,
+ self.preprocess_checkbox, self.preprocess_panel,
self.image_preprocess_panel, self.caption_preprocess_panel,
- self.edit_panel, self.edit_gl_dataset_images, self.range_mode
+ self.edit_panel, self.edit_gl_dataset_images,
+ self.edit_caption, self.edit_src_gl_dataset_images,
+ self.edit_src_panel, self.range_mode, self.data_range,
+ self.sys_log
],
queue=False)
def range_change(range_mode, dataset_type, dataset_name):
hit_range_mode = range_state_trans(range_mode)
if hit_range_mode == 2:
- return (gr.Dropdown(visible=True), gr.Gallery())
+ return (gr.Dropdown(visible=True), gr.Gallery(), gr.Gallery())
else:
dataset_type = create_dataset.get_trans_dataset_type(
dataset_type)
- dataset_ins = create_dataset.dataset_dict[dataset_type][
- dataset_name]
+ dataset_ins = create_dataset.dataset_dict.get(
+ dataset_type, {}).get(dataset_name, None)
+ if dataset_ins is None:
+ return (gr.Dropdown(), gr.Gallery(), gr.Gallery())
if hit_range_mode == 1:
dataset_ins.set_edit_range(-1)
else:
@@ -1128,39 +1682,66 @@ class DatasetGalleryUI(UIBase):
selected_index = dataset_ins.edit_index_from_cursor(
dataset_ins.cursor)
dataset_ins.edit_cursor = selected_index
+ if dataset_type == 'scepter_img2img':
+ src_image_list = [
+ os.path.join(
+ dataset_ins.meta['local_work_dir'],
+ v.get('edit_src_relative_path',
+ v['src_relative_path']))
+ for v in dataset_ins.edit_samples
+ ]
+ if dataset_ins.edit_cursor >= 0:
+ ret_edit_src_gallery = gr.Gallery(
+ label=dataset_name,
+ value=src_image_list,
+ selected_index=selected_index)
+ else:
+ ret_edit_src_gallery = gr.Gallery(label=dataset_name,
+ value=src_image_list,
+ selected_index=None)
+ else:
+ ret_edit_src_gallery = gr.Gallery()
return (gr.Dropdown(visible=False),
gr.Gallery(value=image_list,
selected_index=selected_index,
- visible=True))
+ visible=True), ret_edit_src_gallery)
- self.range_mode.change(
- range_change,
- inputs=[
- self.range_mode, create_dataset.dataset_type,
- create_dataset.dataset_name
- ],
- outputs=[self.data_range, self.edit_gl_dataset_images],
- queue=False)
+ self.range_mode.change(range_change,
+ inputs=[
+ self.range_mode,
+ create_dataset.dataset_type,
+ create_dataset.dataset_name
+ ],
+ outputs=[
+ self.data_range,
+ self.edit_gl_dataset_images,
+ self.edit_src_gl_dataset_images
+ ],
+ queue=False)
def set_range(data_range, dataset_type, dataset_name):
if len(data_range) == 0:
- return (gr.Gallery(), gr.Gallery(), gr.Textbox(), gr.Text(),
- gr.Textbox(), gr.Text(), gr.Text(),
+ return (gr.Gallery(), gr.Gallery(), gr.Gallery(), gr.Textbox(),
+ gr.Text(), gr.Textbox(), gr.Text(), gr.Text(),
self.component_names.system_log.format(''))
data_range = ','.join(data_range)
dataset_type = create_dataset.get_trans_dataset_type(dataset_type)
- dataset_ins = create_dataset.dataset_dict[dataset_type][
- dataset_name]
+ dataset_ins = create_dataset.dataset_dict.get(
+ dataset_type, {}).get(dataset_name, None)
+ if dataset_ins is None:
+ return (gr.Gallery(), gr.Gallery(), gr.Gallery(), gr.Textbox(),
+ gr.Text(), gr.Textbox(), gr.Text(), gr.Text(), 'None')
flg, msg = dataset_ins.set_edit_range(data_range)
if not flg:
sys_log = self.component_names.system_log.format(msg)
- return (gr.Gallery(), gr.Gallery(), gr.Textbox(), gr.Text(),
- gr.Textbox(), gr.Text(), gr.Text(), sys_log)
+ return (gr.Gallery(), gr.Gallery(), gr.Gallery(), gr.Textbox(),
+ gr.Text(), gr.Textbox(), gr.Text(), gr.Text(), sys_log)
image_list = [
os.path.join(dataset_ins.meta['local_work_dir'],
v.get('edit_relative_path', v['relative_path']))
for v in dataset_ins.edit_samples
]
+
selected_index = 0 if len(image_list) > 0 else -1
if selected_index >= 0:
cursor = dataset_ins.cursor_from_edit_index(selected_index)
@@ -1173,6 +1754,21 @@ class DatasetGalleryUI(UIBase):
ret_edit_image_gl = gr.Gallery(value=image_list,
selected_index=selected_index,
visible=True)
+ if dataset_type == 'scepter_img2img':
+ src_image_list = [
+ os.path.join(
+ dataset_ins.meta['local_work_dir'],
+ v.get('edit_src_relative_path',
+ v['src_relative_path']))
+ for v in dataset_ins.edit_samples
+ ]
+ ret_edit_src_image_gl = gr.Gallery(
+ value=src_image_list,
+ selected_index=selected_index,
+ visible=True)
+ else:
+ ret_edit_src_image_gl = gr.Gallery()
+
ret_caption = gr.Textbox(value=current_info.get('caption', ''),
visible=True)
ret_edit_caption = gr.Textbox(value=current_info.get(
@@ -1205,72 +1801,53 @@ class DatasetGalleryUI(UIBase):
else:
ret_image_gl = gr.Gallery()
ret_edit_image_gl = gr.Gallery()
+ ret_edit_src_image_gl = gr.Gallery()
ret_caption = gr.Textbox()
ret_edit_caption = gr.Textbox()
image_info = ''
edit_image_info = ''
ret_info = gr.Text()
- return (ret_image_gl, ret_edit_image_gl, ret_caption, image_info,
- ret_edit_caption, edit_image_info, ret_info,
- self.component_names.system_log.format(''))
+ return (ret_image_gl, ret_edit_image_gl, ret_edit_src_image_gl,
+ ret_caption, image_info, ret_edit_caption, edit_image_info,
+ ret_info, self.component_names.system_log.format(''))
- self.data_range.change(set_range,
- inputs=[
- self.data_range,
- create_dataset.dataset_type,
- create_dataset.dataset_name
- ],
- outputs=[
- self.gl_dataset_images,
- self.edit_gl_dataset_images, self.caption,
- self.image_info, self.edit_caption,
- self.edit_image_info, self.info,
- self.sys_log
- ],
- queue=False)
+ self.data_range.change(
+ set_range,
+ inputs=[
+ self.data_range, create_dataset.dataset_type,
+ create_dataset.dataset_name
+ ],
+ outputs=[
+ self.gl_dataset_images, self.edit_gl_dataset_images,
+ self.edit_src_gl_dataset_images, self.ori_caption,
+ self.image_info, self.edit_caption, self.edit_image_info,
+ self.info, self.sys_log
+ ],
+ queue=False)
def delete_file(dataset_type, dataset_name):
dataset_type = create_dataset.get_trans_dataset_type(dataset_type)
- dataset_ins = create_dataset.dataset_dict[dataset_type][
- dataset_name]
+ dataset_ins = create_dataset.dataset_dict.get(
+ dataset_type, {}).get(dataset_name, None)
+ if dataset_ins is None or len(dataset_ins) < 1:
+ return (gr.Gallery(), gr.Checkbox(), gr.Row(visible=True),
+ self.component_names.system_log.format(
+ self.component_names.delete_blank_dataset))
dataset_ins.delete_record()
- current_info = dataset_ins.current_record
-
- ret_image_height = current_info.get('height', -1)
- ret_image_width = current_info.get('width', -1)
- ret_image_format = os.path.splitext(
- current_info.get('relative_path', ''))[-1]
-
- image_info = self.component_names.ori_dataset.format(
- ret_image_height, ret_image_width, ret_image_format)
-
- ret_edit_image_width = current_info.get(
- 'edit_width', current_info.get('width', -1))
- ret_edit_image_height = current_info.get(
- 'edit_height', current_info.get('height', -1))
- ret_edit_image_format = os.path.splitext(
- current_info.get('edit_relative_path',
- current_info.get('relative_path', '')))[-1]
-
- edit_image_info = self.component_names.edit_dataset.format(
- ret_edit_image_height, ret_edit_image_width,
- ret_edit_image_format)
-
- image_list = [
- os.path.join(dataset_ins.local_work_dir, v['relative_path'])
- for v in dataset_ins.data
- ]
- return (gr.Gallery(value=image_list,
- selected_index=dataset_ins.cursor),
- gr.Textbox(value=current_info.get('caption', '')),
- image_info,
- gr.Textbox(
- value=current_info.get('caption', '') if current_info.
- get('edit_caption', '') ==
- '' else current_info['edit_caption']), edit_image_info,
- gr.Text(
- value=f'{dataset_ins.cursor + 1}/{len(dataset_ins)}'))
+ if len(dataset_ins) > 0:
+ image_list = [
+ os.path.join(dataset_ins.local_work_dir,
+ v['relative_path']) for v in dataset_ins.data
+ ]
+ ret_gallery = gr.Gallery(value=image_list,
+ selected_index=dataset_ins.cursor)
+ ret_state = gr.Checkbox(value=False)
+ else:
+ ret_gallery = gr.Gallery(value=[], selected_index=None)
+ ret_state = gr.Checkbox(value=True)
+ return (ret_gallery, ret_state, gr.Row(visible=True),
+ self.component_names.system_log.format(''))
self.delete_button.click(delete_file,
inputs=[
@@ -1278,12 +1855,55 @@ class DatasetGalleryUI(UIBase):
create_dataset.user_dataset_name
],
outputs=[
- self.gl_dataset_images, self.ori_caption,
- self.image_info, self.edit_caption,
- self.edit_image_info, self.info
+ self.gl_dataset_images,
+ self.src_dataset_state,
+ self.edit_setting_panel, self.sys_log
],
queue=False)
+ def src_dataset_change(src_dataset_state, dataset_type, dataset_name):
+ dataset_type = create_dataset.get_trans_dataset_type(dataset_type)
+ dataset_ins = create_dataset.dataset_dict.get(
+ dataset_type, {}).get(dataset_name, None)
+ if dataset_ins is None:
+ return (gr.Gallery(), gr.Row(visible=True),
+ self.component_names.system_log.format(
+ self.component_names.illegal_blank_dataset))
+ if src_dataset_state:
+ if dataset_type == 'scepter_img2img':
+ src_image_list = [
+ os.path.join(dataset_ins.meta['local_work_dir'],
+ v['src_relative_path'])
+ for v in dataset_ins.data
+ ]
+ if len(dataset_ins) > 0:
+ ret_src_image_gl = gr.Gallery(
+ value=src_image_list,
+ selected_index=dataset_ins.cursor,
+ visible=True)
+ else:
+ ret_src_image_gl = gr.Gallery(value=[],
+ selected_index=None,
+ visible=True)
+ else:
+ ret_src_image_gl = gr.Gallery(visible=False)
+ else:
+ ret_src_image_gl = gr.Gallery()
+ return (ret_src_image_gl, gr.Row(visible=True),
+ self.component_names.system_log.format(''))
+
+ self.src_dataset_state.change(src_dataset_change,
+ inputs=[
+ self.src_dataset_state,
+ create_dataset.dataset_type,
+ create_dataset.user_dataset_name
+ ],
+ outputs=[
+ self.src_gl_dataset_images,
+ self.edit_setting_panel, self.sys_log
+ ],
+ queue=False)
+
def image_upload(upload_image):
if isinstance(upload_image, dict):
image = upload_image['image']
@@ -1297,14 +1917,37 @@ class DatasetGalleryUI(UIBase):
outputs=[self.upload_image_info],
queue=False)
+ def image_src_upload(upload_image):
+ if isinstance(upload_image, dict):
+ image = upload_image['image']
+ else:
+ image = upload_image
+ w, h = image.size
+ return gr.Markdown(
+ value=self.component_names.upload_src_image_info.format(h, w),
+ visible=True)
+
+ self.upload_src_image.upload(image_src_upload,
+ inputs=[self.upload_src_image],
+ outputs=[self.upload_src_image_info],
+ queue=False)
+
def image_clear():
- return ''
+ return gr.Markdown(visible=False)
self.upload_image.clear(image_clear,
inputs=[],
outputs=[self.upload_image_info],
queue=False)
+ def src_image_clear():
+ return ''
+
+ self.upload_src_image.clear(image_clear,
+ inputs=[],
+ outputs=[self.upload_src_image_info],
+ queue=False)
+
def show_add_record_panel():
return gr.Text(value='add')
@@ -1314,69 +1957,52 @@ class DatasetGalleryUI(UIBase):
outputs=[self.mode_state],
)
- def add_file(dataset_type, dataset_name, upload_image, caption):
+ def add_file(dataset_type, dataset_name, upload_image,
+ upload_src_image, caption):
if upload_image is None:
return (gr.Gallery(), gr.Textbox(), '', gr.Textbox(), '',
- gr.Image(), '', '', gr.Text(value=''))
+ gr.Text(), gr.Image(), gr.Image(), gr.Text(), '', '',
+ gr.Text())
if isinstance(upload_image, dict):
image = upload_image['image']
else:
image = upload_image
+
+ if isinstance(upload_src_image, dict):
+ src_image = upload_src_image['image']
+ else:
+ src_image = upload_src_image
+
dataset_type = create_dataset.get_trans_dataset_type(dataset_type)
- dataset_ins = create_dataset.dataset_dict[dataset_type][
- dataset_name]
- dataset_ins.add_record(image, caption)
+ dataset_ins = create_dataset.dataset_dict.get(
+ dataset_type, {}).get(dataset_name, None)
+ if dataset_ins is None:
+ return (gr.Gallery(), gr.Textbox(), '', gr.Textbox(), '',
+ gr.Text(), gr.Image(), gr.Image(), gr.Text(), '', '',
+ gr.Text())
+ dataset_ins.add_record(image, caption, src_image=src_image)
+ return (gr.Image(value=None), gr.Image(value=None),
+ gr.Text(value=''), '', '', gr.Text(value='view'))
- current_info = dataset_ins.current_record
-
- ret_image_height = current_info.get('height', -1)
- ret_image_width = current_info.get('width', -1)
- ret_image_format = os.path.splitext(
- current_info.get('relative_path', ''))[-1]
-
- image_info = self.component_names.ori_dataset.format(
- ret_image_height, ret_image_width, ret_image_format)
-
- image_list = [
- os.path.join(dataset_ins.local_work_dir, v['relative_path'])
- for v in dataset_ins.data
- ]
-
- ret_edit_image_width = current_info.get(
- 'edit_width', current_info.get('width', -1))
- ret_edit_image_height = current_info.get(
- 'edit_height', current_info.get('height', -1))
- ret_edit_image_format = os.path.splitext(
- current_info.get('edit_relative_path',
- current_info.get('relative_path', '')))[-1]
-
- edit_image_info = self.component_names.edit_dataset.format(
- ret_edit_image_height, ret_edit_image_width,
- ret_edit_image_format)
-
- return (gr.Gallery(value=image_list,
- selected_index=dataset_ins.cursor),
- gr.Textbox(value=caption), image_info,
- gr.Textbox(value=caption), edit_image_info,
- gr.Text(
- value=f'{dataset_ins.cursor + 1}/{len(dataset_ins)}'),
- gr.Image(value=None), gr.Text(value=''), '',
- gr.Text(value='view'))
-
- self.upload_button.click(add_file,
- inputs=[
- create_dataset.dataset_type,
- create_dataset.dataset_name,
- self.upload_image, self.caption
- ],
- outputs=[
- self.gl_dataset_images, self.ori_caption,
- self.image_info, self.edit_caption,
- self.edit_image_info, self.info,
- self.upload_image, self.caption,
- self.upload_image_info, self.mode_state
- ],
- queue=False)
+ self.upload_button.click(
+ add_file,
+ inputs=[
+ create_dataset.dataset_type, create_dataset.dataset_name,
+ self.upload_image, self.upload_src_image, self.upload_caption
+ ],
+ outputs=[
+ # self.gl_dataset_images,
+ # self.ori_caption,
+ # self.image_info, self.edit_caption,
+ # self.edit_image_info, self.info,
+ self.upload_image,
+ self.upload_src_image,
+ self.upload_caption,
+ self.upload_image_info,
+ self.upload_src_image_info,
+ self.mode_state
+ ],
+ queue=False)
def cancel_add_file():
return gr.Text(value='view')
@@ -1388,8 +2014,10 @@ class DatasetGalleryUI(UIBase):
def edit_caption_change(dataset_type, dataset_name, edit_caption):
dataset_type = create_dataset.get_trans_dataset_type(dataset_type)
- dataset_ins = create_dataset.dataset_dict[dataset_type][
- dataset_name]
+ dataset_ins = create_dataset.dataset_dict.get(
+ dataset_type, {}).get(dataset_name, None)
+ if dataset_ins is None:
+ return
dataset_ins.edit_caption(edit_caption)
self.edit_caption.change(edit_caption_change,
diff --git a/scepter/studio/preprocess/caption_editor_ui/export_dataset_ui.py b/scepter/studio/preprocess/caption_editor_ui/export_dataset_ui.py
index e2ff71d..aeeb59f 100644
--- a/scepter/studio/preprocess/caption_editor_ui/export_dataset_ui.py
+++ b/scepter/studio/preprocess/caption_editor_ui/export_dataset_ui.py
@@ -5,7 +5,6 @@ from __future__ import annotations
import os
import gradio as gr
-
from scepter.studio.preprocess.caption_editor_ui.component_names import \
ExportDatasetUIName
from scepter.studio.utils.uibase import UIBase
@@ -56,20 +55,25 @@ class ExportDatasetUI(UIBase):
queue=False)
def go_to_train(dataset_type, dataset_name):
- dataset_type = create_dataset.get_trans_dataset_type(dataset_type)
- dataset_ins = create_dataset.dataset_dict[dataset_type][
+ dataset_type_ori = create_dataset.get_trans_dataset_type(
+ dataset_type)
+ dataset_ins = create_dataset.dataset_dict[dataset_type_ori][
dataset_name]
dataset_ins.update_dataset()
return (gr.Tabs(selected='self_train'),
+ gr.Dropdown(value=self.component_names.dataset_source),
+ gr.Dropdown(value=dataset_type),
gr.Textbox(
value=os.path.abspath(dataset_ins.local_work_dir)),
- dataset_name)
+ gr.Textbox(value=dataset_name))
self.go_to_train.click(
go_to_train,
inputs=[create_dataset.dataset_type, create_dataset.dataset_name],
outputs=[
- manager.tabs, manager.self_train.trainer_ui.ms_data_name,
+ manager.tabs, manager.self_train.trainer_ui.data_source,
+ manager.self_train.trainer_ui.data_type,
+ manager.self_train.trainer_ui.ms_data_name,
manager.self_train.trainer_ui.ori_data_name
],
queue=False)
diff --git a/scepter/studio/preprocess/preprocess.py b/scepter/studio/preprocess/preprocess.py
index 1432a73..666e0b3 100644
--- a/scepter/studio/preprocess/preprocess.py
+++ b/scepter/studio/preprocess/preprocess.py
@@ -3,7 +3,6 @@
import os.path
import gradio as gr
-
from scepter.modules.utils.config import Config
from scepter.modules.utils.file_system import FS
from scepter.studio.preprocess.caption_editor_ui.create_dataset_ui import \
diff --git a/scepter/studio/preprocess/processors/base_processor.py b/scepter/studio/preprocess/processors/base_processor.py
index b4219a2..adcb6fd 100644
--- a/scepter/studio/preprocess/processors/base_processor.py
+++ b/scepter/studio/preprocess/processors/base_processor.py
@@ -2,7 +2,6 @@
# Copyright (c) Alibaba, Inc. and its affiliates.
import torch
-
from scepter.studio.utils.env import get_available_memory
diff --git a/scepter/studio/preprocess/processors/caption_processors.py b/scepter/studio/preprocess/processors/caption_processors.py
index ac2b600..4568252 100644
--- a/scepter/studio/preprocess/processors/caption_processors.py
+++ b/scepter/studio/preprocess/processors/caption_processors.py
@@ -7,7 +7,6 @@ import time
import torch
from PIL import Image
-
from scepter.modules.utils.distribute import we
from scepter.modules.utils.file_system import FS
from scepter.studio.preprocess.processors.base_processor import \
diff --git a/scepter/studio/preprocess/processors/image_processors.py b/scepter/studio/preprocess/processors/image_processors.py
index 82213a1..920a6f8 100644
--- a/scepter/studio/preprocess/processors/image_processors.py
+++ b/scepter/studio/preprocess/processors/image_processors.py
@@ -2,7 +2,6 @@
# Copyright (c) Alibaba, Inc. and its affiliates.
import torchvision.transforms as TT
-
from scepter.studio.preprocess.processors.base_processor import \
BaseImageProcessor
diff --git a/scepter/studio/preprocess/utils/data_card.py b/scepter/studio/preprocess/utils/data_card.py
index a3364d4..c2f4b0e 100644
--- a/scepter/studio/preprocess/utils/data_card.py
+++ b/scepter/studio/preprocess/utils/data_card.py
@@ -2,20 +2,12 @@
# Copyright (c) Alibaba, Inc. and its affiliates.
import copy
-import csv
import datetime
import json
import os.path
-import gradio as gr
-import imagehash
from PIL import Image
-from tqdm import tqdm
-
-from scepter.modules.utils.directory import get_md5
from scepter.modules.utils.file_system import FS
-from scepter.studio.preprocess.caption_editor_ui.component_names import \
- Text2ImageDataCardName
def find_prefix(file_path):
@@ -45,7 +37,7 @@ def del_prefix(file_path, prefix=''):
def get_image_meta(image):
img = Image.open(image)
- return img.size
+ return *img.size, img
class BaseDataCard(object):
@@ -99,7 +91,8 @@ class BaseDataCard(object):
}
if FS.exists(self.meta_file):
FS.get_dir_to_local_dir(self.dataset_folder,
- self.local_dataset_folder)
+ self.local_dataset_folder,
+ sign_key=self.meta_file)
if FS.exists(self.local_meta):
self.meta = self.check_legal_dataset(
json.load(open(self.local_meta, 'r')))
@@ -340,6 +333,8 @@ class BaseDataCard(object):
def current_record(self):
if self.cursor >= len(self):
self.set_cursor(0)
+ if len(self) < 1:
+ self.set_cursor(-1)
if self.cursor >= 0:
return self.meta['file_list'][self.cursor]
else:
@@ -357,823 +352,3 @@ class BaseDataCard(object):
if self.cursor >= 0:
self.data[self.cursor]['caption'] = self.data[self.cursor][
'edit_caption'] if edit_caption is None else edit_caption
-
-
-class Text2ImageDataCard(BaseDataCard):
- def __init__(self,
- dataset_folder,
- dataset_name=None,
- src_file=None,
- surfix=None,
- user_name='admin',
- language='en'):
- super().__init__(dataset_folder,
- dataset_name=dataset_name,
- user_name=user_name)
- self.meta['task_type'] = 'txt2img'
- self.components_name = Text2ImageDataCardName(language)
- if self.new_dataset:
- # new dataset
- if surfix == '.zip':
- file_list = self.load_from_zip(src_file, dataset_folder,
- self.local_dataset_folder)
- elif surfix in ['.txt', '.csv']:
- file_list = self.load_from_list(src_file, dataset_folder,
- self.local_dataset_folder)
- elif surfix is None:
- file_list = []
- else:
- raise gr.Error(
- f'{self.components_name.illegal_data_err2} {surfix}')
-
- is_flag = FS.put_dir_from_local_dir(self.local_dataset_folder,
- dataset_folder,
- multi_thread=True)
- if not is_flag:
- raise gr.Error(f'{self.components_name.illegal_data_err3}')
-
- self.meta['cursor'] = 0 if len(file_list) > 0 else -1
- self.meta['file_list'] = file_list
- self.update_dataset()
- else:
- for da_idx, cur_data in enumerate(self.data):
- if 'edit_caption' not in cur_data:
- self.data[da_idx]['edit_caption'] = cur_data['caption']
- if 'edit_image_path' not in cur_data:
- self.data[da_idx]['edit_image_path'] = cur_data[
- 'image_path']
- if 'edit_relative_path' not in cur_data:
- self.data[da_idx]['edit_relative_path'] = cur_data[
- 'relative_path']
- if 'edit_width' not in cur_data:
- self.data[da_idx]['edit_width'] = cur_data['width']
- if 'edit_height' not in cur_data:
- self.data[da_idx]['edit_height'] = cur_data['height']
-
- def load_from_zip(self, save_file, data_folder, local_dataset_folder):
- with FS.get_from(save_file) as local_path:
- res = os.popen(
- f"unzip -o '{local_path}' -d '{local_dataset_folder}'")
- res = res.readlines()
- if not os.path.exists(local_dataset_folder):
- raise gr.Error(f'Unzip {save_file} failed {str(res)}')
- file_folder = None
- train_list = None
- hit_dir = None
- raw_list = {}
- mac_osx = os.path.join(local_dataset_folder, '__MACOSX')
- if os.path.exists(mac_osx):
- res = os.popen(f"rm -rf '{mac_osx}'")
- res = res.readlines()
- for one_dir in FS.walk_dir(local_dataset_folder, recurse=False):
- if one_dir.endswith('__MACOSX'):
- res = os.popen(f"rm -rf '{one_dir}'")
- res = res.readlines()
- continue
- if FS.isdir(one_dir):
- if one_dir.endswith('images') or one_dir.endswith('images/'):
- file_folder = one_dir
- hit_dir = one_dir
- else:
- sub_dir = FS.walk_dir(one_dir)
- for one_s_dir in sub_dir:
- if FS.isdir(one_s_dir) and one_s_dir.split(
- one_dir)[1].replace('/', '') == 'images':
- file_folder = one_s_dir
- hit_dir = one_dir
- if FS.isfile(one_s_dir) and one_s_dir.split(
- one_dir)[1].replace('/', '') == 'train.csv':
- train_list = one_s_dir
- if file_folder is not None and train_list is not None:
- break
- if (one_s_dir.endswith('.jpg')
- or one_s_dir.endswith('.jpeg')
- or one_s_dir.endswith('.png')
- or one_s_dir.endswith('.webp')):
- file_name, surfix = os.path.splitext(one_s_dir)
- txt_file = file_name + '.txt'
- if os.path.exists(txt_file):
- raw_list[one_s_dir] = txt_file
- else:
- raw_list[one_s_dir] = None
- elif one_dir.endswith('train.csv'):
- train_list = one_dir
- else:
- if (one_dir.endswith('.jpg') or one_dir.endswith('.jpeg')
- or one_dir.endswith('.png')
- or one_dir.endswith('.webp')):
- file_name, surfix = os.path.splitext(one_dir)
- txt_file = file_name + '.txt'
- if os.path.exists(txt_file):
- raw_list[one_dir] = txt_file
- else:
- raw_list[one_dir] = None
- if file_folder is not None and train_list is not None:
- break
- if file_folder is None and len(raw_list) < 1:
- raise gr.Error(
- "images folder or train.csv doesn't exists, or nothing exists in your zip"
- )
- new_file_folder = f'{local_dataset_folder}/images'
- os.makedirs(new_file_folder, exist_ok=True)
- if file_folder is not None:
- _ = FS.get_dir_to_local_dir(file_folder, new_file_folder)
- elif len(raw_list) > 0:
- raw_list = [[k, v] for k, v in raw_list.items()]
- for img_id, cur_image in enumerate(raw_list):
- image_name, surfix = os.path.splitext(cur_image[0])
- if cur_image[1] is not None and os.path.exists(cur_image[1]):
- prompt = open(cur_image[1], 'r').read()
- else:
- prompt = image_name.split('/')[-1]
- try:
- os.rename(
- os.path.abspath(cur_image[0]),
- f'{new_file_folder}/{get_md5(cur_image[0])}{surfix}')
- raw_list[img_id] = [
- os.path.join('images',
- f'{get_md5(cur_image[0])}{surfix}'),
- prompt
- ]
- except Exception as e:
- print(e)
-
- if not os.path.exists(new_file_folder):
- raise gr.Error(f'{str(res)}')
- new_train_list = f'{local_dataset_folder}/train.csv'
- if train_list is None or not os.path.exists(train_list):
- with open(new_train_list, 'w') as f:
- writer = csv.writer(f)
- writer.writerow(['Target:FILE', 'Prompt'])
- for cur_image, cur_prompt in raw_list:
- writer.writerow([cur_image, cur_prompt])
- else:
- res = os.popen(f"mv '{train_list}' '{new_train_list}'")
- res = res.readlines()
- if not os.path.exists(new_train_list):
- raise gr.Error(f'{str(res)}')
- if not file_folder == hit_dir:
- try:
- res = os.popen(f"rm -rf '{hit_dir}/images/*'")
- _ = res.readlines()
- res = os.popen(f"rm -rf '{hit_dir}'")
- _ = res.readlines()
- except Exception:
- pass
- file_list = self.load_train_file(new_train_list, data_folder)
- # remove unused data
- for one_dir in FS.walk_dir(local_dataset_folder):
- if "images" in one_dir or one_dir.endswith("file.csv") or one_dir.endswith("train.csv"):
- continue
- try:
- os.system(f"rm -rf {one_dir}")
- except:
- pass
- return file_list
-
- def load_train_file(self, file_path, data_folder):
- base_folder = os.path.dirname(file_path)
- file_list = []
- with open(file_path, 'r') as f:
- reader = csv.reader(f)
- for row in reader:
- image_path, prompt = row[0], row[1]
- if image_path == 'Target:FILE':
- continue
- local_image_path = os.path.join(base_folder, image_path)
- w, h = get_image_meta(local_image_path)
- file_list.append({
- 'image_path':
- os.path.join(data_folder, image_path),
- 'relative_path':
- image_path,
- 'width':
- w,
- 'height':
- h,
- 'caption':
- prompt,
- 'prefix':
- '',
- 'edit_caption':
- prompt,
- 'edit_image_path':
- os.path.join(data_folder, image_path),
- 'edit_relative_path':
- image_path,
- 'edit_width':
- w,
- 'edit_height':
- h,
- })
- return file_list
-
- def load_from_list(self, save_file, dataset_folder, local_dataset_folder):
- file_list = []
- images_folder = os.path.join(local_dataset_folder, 'images')
- os.makedirs(images_folder, exist_ok=True)
- with FS.get_from(save_file) as local_path:
- all_remote_list, all_local_list = [], []
- all_save_list = []
- with open(local_path, 'r') as f:
- for line in tqdm(f):
- line = line.strip()
- if line == '':
- continue
- try:
- image_path, width, height, caption = line.split(
- '#;#', 3)
- except Exception:
- try:
- image_path, width, height, caption = line.split(
- ',', 3)
- except Exception:
- raise gr.Error(
- self.components_name.illegal_data_err1)
- is_legal, new_path, prefix = find_prefix(image_path)
- try:
- int(width), int(height)
- except Exception:
- raise gr.Error(
- self.components_name.illegal_data_err4.format(
- width, height))
-
- if not is_legal:
- raise gr.Error(
- self.components_name.illegal_data_err5.format(
- image_path))
- relative_path = os.path.join('images',
- image_path.split('/')[-1])
-
- all_remote_list.append(new_path)
- all_local_list.append(
- os.path.join(local_dataset_folder, relative_path))
- all_save_list.append(
- os.path.join(dataset_folder, relative_path))
- file_list.append({
- 'image_path':
- os.path.join(dataset_folder, relative_path),
- 'relative_path':
- relative_path,
- 'width':
- int(width),
- 'height':
- int(height),
- 'caption':
- caption,
- 'prefix':
- prefix,
- 'edit_caption':
- caption,
- 'edit_image_path':
- os.path.join(dataset_folder, image_path),
- 'edit_relative_path':
- image_path,
- 'edit_width':
- int(width),
- 'edit_height':
- int(height),
- })
- cache_file_list = []
- for idx, local_path in enumerate(
- FS.get_batch_objects_from(all_remote_list)):
- if local_path is None:
- raise gr.Error(
- self.components_name.illegal_data_err6.format(
- all_remote_list[idx]))
- _ = FS.put_object_from_local_file(local_path, all_local_list[idx])
- cache_file_list.append(local_path)
-
- for local_path, target_path, flg in FS.put_batch_objects_to(
- cache_file_list, all_save_list):
- if not flg:
- raise gr.Error(
- self.components_name.illegal_data_err7.format(local_path))
- if os.path.exists(local_path):
- try:
- os.remove(local_path)
- except Exception:
- pass
-
- return file_list
-
- def write_train_file(self):
- file_list = self.meta['file_list']
- with open(self.local_train_file, 'w') as f:
- writer = csv.writer(f)
- writer.writerow(['Target:FILE', 'Prompt'])
- for one_file in file_list:
- relative_file = one_file['relative_path']
- if relative_file.startswith('/'):
- relative_file = relative_file[1:]
- writer.writerow([relative_file, one_file['caption']])
- FS.put_object_from_local_file(self.local_train_file, self.train_file)
-
- def write_data_file(self):
- file_list = self.meta['file_list']
- with open(self.local_save_file_list, 'w') as f:
- for one_file in file_list:
- is_flag, file_path = del_prefix(one_file['image_path'],
- prefix=one_file['prefix'])
- f.write('{}#;#{}#;#{}#;#{}\n'.format(file_path,
- one_file['width'],
- one_file['height'],
- one_file['caption']))
- FS.put_object_from_local_file(self.local_save_file_list,
- self.save_file_list)
-
- def add_record(self, image, caption, **kwargs):
- local_work_dir = self.meta['local_work_dir']
- work_dir = self.meta['work_dir']
-
- save_folder = os.path.join(local_work_dir, 'images')
- os.makedirs(save_folder, exist_ok=True)
-
- w, h = image.size
- relative_path = os.path.join('images', f'{imagehash.phash(image)}.png')
- image_path = os.path.join(work_dir, relative_path)
- local_image_path = os.path.join(local_work_dir, relative_path)
- with FS.put_to(image_path) as local_path:
- image.save(local_path)
-
- image.save(local_image_path)
-
- FS.put_object_from_local_file(local_image_path, image_path)
-
- self.data.append({
- 'image_path': image_path,
- 'relative_path': relative_path,
- 'width': w,
- 'height': h,
- 'caption': caption,
- 'prefix': '',
- 'edit_caption': caption,
- 'edit_image_path': image_path,
- 'edit_relative_path': relative_path,
- 'edit_width': w,
- 'edit_height': h
- })
-
- self.set_cursor(len(self.meta['file_list']) - 1)
- self.update_dataset()
- return True
-
- def delete_record(self):
- if len(self) < 1:
- raise gr.Error(self.components_name.delete_err1)
- current_file = self.data.pop(self.cursor)
- local_file = os.path.join(self.meta['local_work_dir'],
- current_file['relative_path'])
- try:
- os.remove(local_file)
- except Exception:
- print(f'remove file {local_file} error')
- if self.cursor >= len(self.meta['file_list']):
- self.set_cursor(0)
- if len(self.meta['file_list']) == 0:
- self.set_cursor(-1)
- self.update_dataset()
-
- def export_zip(self, export_folder):
- self.update_dataset()
- zip_path = os.path.join(export_folder, f'{self.dataset_name}.zip')
- local_zip, _ = FS.map_to_local(zip_path)
- os.makedirs(os.path.dirname(local_zip), exist_ok=True)
- res = os.popen(
- f"cd '{self.local_work_dir}' && mkdir -p '{self.dataset_name}' "
- f"&& cp -rf images '{self.dataset_name}/images' "
- f"&& cp -rf train.csv '{self.dataset_name}/train.csv' "
- f"&& zip -r '{os.path.abspath(local_zip)}' '{self.dataset_name}'/* "
- f"&& rm -rf '{self.dataset_name}'")
- print(res.readlines())
- if not FS.exists(zip_path):
- raise gr.Error(self.components_name.export_zip_err1)
- return local_zip
-
-
-class Image2ImageDataCard(BaseDataCard):
- def __init__(self,
- dataset_folder,
- dataset_name=None,
- src_file=None,
- surfix=None,
- user_name='admin',
- language='en'):
- super().__init__(dataset_folder,
- dataset_name=dataset_name,
- user_name=user_name)
- self.meta['task_type'] = 'txt2img'
- self.components_name = Text2ImageDataCardName(language)
- if self.new_dataset:
- # new dataset
- if surfix == '.zip':
- file_list = self.load_from_zip(src_file, dataset_folder,
- self.local_dataset_folder)
- elif surfix in ['.txt', '.csv']:
- file_list = self.load_from_list(src_file, dataset_folder,
- self.local_dataset_folder)
- elif surfix is None:
- file_list = []
- else:
- raise gr.Error(
- f'{self.components_name.illegal_data_err2} {surfix}')
-
- is_flag = FS.put_dir_from_local_dir(self.local_dataset_folder,
- dataset_folder,
- multi_thread=True)
- if not is_flag:
- raise gr.Error(f'{self.components_name.illegal_data_err3}')
-
- self.meta['cursor'] = 0 if len(file_list) > 0 else -1
- self.meta['file_list'] = file_list
- self.update_dataset()
-
- def load_from_zip(self, save_file, data_folder, local_dataset_folder):
- with FS.get_from(save_file) as local_path:
- res = os.popen(
- f"unzip -o '{local_path}' -d '{local_dataset_folder}'")
- res = res.readlines()
- if not os.path.exists(local_dataset_folder):
- raise gr.Error(f'Unzip {save_file} failed {str(res)}')
- file_folder = None
- train_list = None
- hit_dir = None
- raw_list = {}
- mac_osx = os.path.join(local_dataset_folder, '__MACOSX')
- if os.path.exists(mac_osx):
- res = os.popen(f"rm -rf '{mac_osx}'")
- res = res.readlines()
- for one_dir in FS.walk_dir(local_dataset_folder, recurse=False):
- if one_dir.endswith('__MACOSX'):
- res = os.popen(f"rm -rf '{one_dir}'")
- res = res.readlines()
- continue
- if FS.isdir(one_dir):
- if one_dir.endswith('images') or one_dir.endswith('images/'):
- file_folder = one_dir
- hit_dir = one_dir
- else:
- sub_dir = FS.walk_dir(one_dir)
- for one_s_dir in sub_dir:
- if FS.isdir(one_s_dir) and one_s_dir.split(
- one_dir)[1].replace('/', '') == 'images':
- file_folder = one_s_dir
- hit_dir = one_dir
- if FS.isfile(one_s_dir) and one_s_dir.split(
- one_dir)[1].replace('/', '') == 'train.csv':
- train_list = one_s_dir
- if file_folder is not None and train_list is not None:
- break
- if (one_s_dir.endswith('.jpg')
- or one_s_dir.endswith('.jpeg')
- or one_s_dir.endswith('.png')
- or one_s_dir.endswith('.webp')):
- file_name, surfix = os.path.splitext(one_s_dir)
- txt_file = file_name + '.txt'
- if os.path.exists(txt_file):
- raw_list[one_s_dir] = txt_file
- else:
- raw_list[one_s_dir] = None
- elif one_dir.endswith('train.csv'):
- train_list = one_dir
- else:
- if (one_dir.endswith('.jpg') or one_dir.endswith('.jpeg')
- or one_dir.endswith('.png')
- or one_dir.endswith('.webp')):
- file_name, surfix = os.path.splitext(one_dir)
- txt_file = file_name + '.txt'
- if os.path.exists(txt_file):
- raw_list[one_dir] = txt_file
- else:
- raw_list[one_dir] = None
- if file_folder is not None and train_list is not None:
- break
- if file_folder is None and len(raw_list) < 1:
- raise gr.Error(
- "images doesn't exist, or nothing exists in your zip")
-
- if train_list is None:
- raise gr.Error("pair list doesn't exist")
- new_file_folder = f'{local_dataset_folder}/images'
- os.makedirs(new_file_folder, exist_ok=True)
-
- images_dict = {}
- if file_folder is not None:
- _ = FS.get_dir_to_local_dir(file_folder, new_file_folder)
- elif len(raw_list) > 0:
- raw_list = [[k, v] for k, v in raw_list.items()]
- for img_id, cur_image in enumerate(raw_list):
- image_name, surfix = os.path.splitext(cur_image[0])
- try:
- os.rename(
- os.path.abspath(cur_image[0]),
- f'{new_file_folder}/{get_md5(cur_image[0])}{surfix}')
- images_dict[os.path.basename(image_name)] = os.path.join(
- 'images', f'{get_md5(cur_image[0])}{surfix}'),
- except Exception as e:
- print(e)
-
- if not os.path.exists(new_file_folder):
- raise gr.Error(f'{str(res)}')
- new_train_list = f'{local_dataset_folder}/train.csv'
- res = os.popen(f"mv '{train_list}' '{new_train_list}'")
- res = res.readlines()
- if not os.path.exists(new_train_list):
- raise gr.Error(f'{str(res)}')
- if not file_folder == hit_dir:
- try:
- res = os.popen(f"rm -rf '{hit_dir}/images/*'")
- _ = res.readlines()
- res = os.popen(f"rm -rf '{hit_dir}'")
- _ = res.readlines()
- except Exception:
- pass
- file_list = self.load_train_file(new_train_list, data_folder,
- images_dict)
- return file_list
-
- def load_train_file(self, file_path, data_folder, images_dict={}):
- base_folder = os.path.dirname(file_path)
- file_list = []
- with open(file_path, 'r') as f:
- reader = csv.reader(f)
- for row in reader:
- src_image_path, image_path, prompt = row[0], row[1], row[2]
- if image_path == 'Target:FILE':
- continue
-
- src_image_name, surfix = os.path.splitext(src_image_path)
- src_image_path = images_dict.get(
- src_image_path, os.path.basename(src_image_name))
- local_src_image_path = os.path.join(base_folder,
- src_image_path)
- src_w, src_h = get_image_meta(local_src_image_path)
-
- image_name, surfix = os.path.splitext(image_path)
- image_path = images_dict.get(image_path,
- os.path.basename(image_name))
- local_image_path = os.path.join(base_folder, image_path)
- w, h = get_image_meta(local_image_path)
-
- file_list.append({
- 'image_path':
- os.path.join(data_folder, image_path),
- 'relative_path':
- image_path,
- 'width':
- w,
- 'height':
- h,
- 'src_image_path':
- os.path.join(data_folder, src_image_path),
- 'src_relative_path':
- src_image_path,
- 'src_width':
- src_w,
- 'src_height':
- src_h,
- 'caption':
- prompt,
- 'prefix':
- '',
- 'edit_caption':
- prompt
- })
- return file_list
-
- def load_from_list(self, save_file, dataset_folder, local_dataset_folder):
- file_list = []
- images_folder = os.path.join(local_dataset_folder, 'images')
- os.makedirs(images_folder, exist_ok=True)
- with FS.get_from(save_file) as local_path:
- all_remote_list, all_local_list = [], []
- all_src_remote_list, all_src_local_list = [], []
- all_save_list, all_src_save_list = [], []
- with open(local_path, 'r') as f:
- for line in tqdm(f):
- line = line.strip()
- if line == '':
- continue
- try:
- image_path, width, height, src_image_path, src_width, src_height, caption = line.split(
- '#;#', 6)
- except Exception:
- try:
- image_path, width, height, src_image_path, src_width, src_height, caption = line.split(
- ',', 6)
- except Exception:
- raise gr.Error(
- self.components_name.illegal_data_err1)
- is_legal, new_path, prefix = find_prefix(image_path)
- try:
- int(width), int(height)
- except Exception:
- raise gr.Error(
- self.components_name.illegal_data_err4.format(
- width, height))
-
- is_legal, new_src_path, src_prefix = find_prefix(
- src_image_path)
- try:
- int(src_width), int(src_height)
- except Exception:
- raise gr.Error(
- self.components_name.illegal_data_err4.format(
- src_width, src_height))
-
- if not is_legal:
- raise gr.Error(
- self.components_name.illegal_data_err5.format(
- image_path + ' ' + src_image_path))
- relative_path = os.path.join('images',
- image_path.split('/')[-1])
-
- src_relative_path = os.path.join(
- 'images',
- src_image_path.split('/')[-1])
-
- all_remote_list.append(new_path)
- all_local_list.append(
- os.path.join(local_dataset_folder, relative_path))
- all_save_list.append(
- os.path.join(dataset_folder, relative_path))
-
- all_src_remote_list.append(new_src_path)
- all_src_local_list.append(
- os.path.join(local_dataset_folder, src_relative_path))
- all_src_save_list.append(
- os.path.join(dataset_folder, src_relative_path))
-
- file_list.append({
- 'image_path':
- os.path.join(dataset_folder, relative_path),
- 'src_image_path':
- os.path.join(dataset_folder, src_relative_path),
- 'relative_path':
- relative_path,
- 'src_relative_path':
- src_relative_path,
- 'width':
- int(width),
- 'height':
- int(height),
- 'src_width':
- int(src_width),
- 'src_height':
- int(src_height),
- 'caption':
- caption,
- 'prefix':
- prefix,
- 'edit_caption':
- caption
- })
- cache_file_list = []
- for idx, local_path in enumerate(
- FS.get_batch_objects_from(all_remote_list)):
- if local_path is None:
- raise gr.Error(
- self.components_name.illegal_data_err6.format(
- all_remote_list[idx]))
- _ = FS.put_object_from_local_file(local_path, all_local_list[idx])
- cache_file_list.append(local_path)
-
- for local_path, target_path, flg in FS.put_batch_objects_to(
- cache_file_list, all_save_list):
- if not flg:
- raise gr.Error(
- self.components_name.illegal_data_err7.format(local_path))
- if os.path.exists(local_path):
- try:
- os.remove(local_path)
- except Exception:
- pass
-
- cache_src_file_list = []
- for idx, local_path in enumerate(
- FS.get_batch_objects_from(all_src_remote_list)):
- if local_path is None:
- raise gr.Error(
- self.components_name.illegal_data_err6.format(
- all_src_remote_list[idx]))
- _ = FS.put_object_from_local_file(local_path,
- all_src_local_list[idx])
- cache_src_file_list.append(local_path)
-
- for local_path, target_path, flg in FS.put_batch_objects_to(
- cache_src_file_list, all_src_save_list):
- if not flg:
- raise gr.Error(
- self.components_name.illegal_data_err7.format(local_path))
- if os.path.exists(local_path):
- try:
- os.remove(local_path)
- except Exception:
- pass
- return file_list
-
- def write_train_file(self):
- file_list = self.meta['file_list']
- with open(self.local_train_file, 'w') as f:
- writer = csv.writer(f)
- writer.writerow(['Target:FILE', 'Source:FILE', 'Prompt'])
- for one_file in file_list:
- relative_file = one_file['relative_path']
- if relative_file.startswith('/'):
- relative_file = relative_file[1:]
-
- src_relative_file = one_file['src_relative_path']
- if src_relative_file.startswith('/'):
- src_relative_file = src_relative_file[1:]
-
- writer.writerow(
- [relative_file, src_relative_file, one_file['caption']])
- FS.put_object_from_local_file(self.local_train_file, self.train_file)
-
- def write_data_file(self):
- file_list = self.meta['file_list']
- with open(self.local_save_file_list, 'w') as f:
- for one_file in file_list:
- is_flag, file_path = del_prefix(one_file['image_path'],
- prefix=one_file['prefix'])
- is_flag, src_file_path = del_prefix(one_file['src_image_path'],
- prefix=one_file['prefix'])
- f.write('{}#;#{}#;#{}#;#{}#;#{}#;#{}#;#{}\n'.format(
- file_path, one_file['width'], one_file['height'],
- src_file_path, one_file['src_width'],
- one_file['src_height'], one_file['caption']))
- FS.put_object_from_local_file(self.local_save_file_list,
- self.save_file_list)
-
- def add_record(self, images, caption, **kwargs):
- local_work_dir = self.meta['local_work_dir']
- work_dir = self.meta['work_dir']
-
- save_folder = os.path.join(local_work_dir, 'images')
- os.makedirs(save_folder, exist_ok=True)
- image, src_image = images
-
- w, h = image.size
- relative_path = os.path.join('images', f'{imagehash.phash(image)}.png')
- image_path = os.path.join(work_dir, relative_path)
- local_image_path = os.path.join(local_work_dir, relative_path)
- image.save(local_image_path)
- FS.put_object_from_local_file(local_image_path, image_path)
-
- src_w, src_h = src_image.size
- src_relative_path = os.path.join('images',
- f'{imagehash.phash(src_image)}.png')
- src_image_path = os.path.join(work_dir, src_relative_path)
- local_src_image_path = os.path.join(local_work_dir, src_relative_path)
- image.save(local_src_image_path)
- FS.put_object_from_local_file(local_src_image_path, src_image_path)
-
- self.data.append({
- 'image_path': image_path,
- 'relative_path': relative_path,
- 'width': w,
- 'height': h,
- 'src_image_path': src_image_path,
- 'src_relative_path': src_relative_path,
- 'src_width': src_w,
- 'src_height': src_h,
- 'caption': caption,
- 'prefix': '',
- 'edit_caption': caption
- })
-
- self.set_cursor(len(self.meta['file_list']) - 1)
- self.update_dataset()
- return True
-
- def delete_record(self):
- if len(self) < 1:
- raise gr.Error(self.components_name.delete_err1)
- current_file = self.data.pop(self.cursor)
- local_file = os.path.join(self.meta['local_work_dir'],
- current_file['relative_path'])
- try:
- os.remove(local_file)
- except Exception:
- print(f'remove file {local_file} error')
- if self.cursor >= len(self.meta['file_list']):
- self.set_cursor(0)
- if len(self.meta['file_list']) == 0:
- self.set_cursor(-1)
- self.update_dataset()
-
- def export_zip(self, export_folder):
- self.update_dataset()
- zip_path = os.path.join(export_folder, f'{self.dataset_name}.zip')
- local_zip, _ = FS.map_to_local(zip_path)
- os.makedirs(os.path.dirname(local_zip), exist_ok=True)
- res = os.popen(
- f"cd '{self.local_work_dir}' && mkdir -p '{self.dataset_name}' "
- f"&& cp -rf images '{self.dataset_name}/images' "
- f"&& cp -rf train.csv '{self.dataset_name}/train.csv' "
- f"&& zip -r '{os.path.abspath(local_zip)}' '{self.dataset_name}'/* "
- f"&& rm -rf '{self.dataset_name}'")
- print(res.readlines())
- if not FS.exists(zip_path):
- raise gr.Error(self.components_name.export_zip_err1)
- return local_zip
diff --git a/scepter/studio/preprocess/utils/img2img_data_card.py b/scepter/studio/preprocess/utils/img2img_data_card.py
new file mode 100644
index 0000000..1ef3864
--- /dev/null
+++ b/scepter/studio/preprocess/utils/img2img_data_card.py
@@ -0,0 +1,511 @@
+# -*- coding: utf-8 -*-
+# Copyright (c) Alibaba, Inc. and its affiliates.
+import csv
+import os
+import time
+
+from tqdm import tqdm
+
+import gradio as gr
+import imagehash
+from scepter.modules.utils.file_system import FS
+from scepter.studio.preprocess.caption_editor_ui.component_names import \
+ Image2ImageDataCardName
+from scepter.studio.preprocess.utils.data_card import (BaseDataCard,
+ del_prefix, find_prefix,
+ get_image_meta)
+
+
+class Image2ImageDataCard(BaseDataCard):
+ def __init__(self,
+ dataset_folder,
+ dataset_name=None,
+ src_file=None,
+ surfix=None,
+ user_name='admin',
+ language='en'):
+ super().__init__(dataset_folder,
+ dataset_name=dataset_name,
+ user_name=user_name)
+ self.meta['task_type'] = 'img2img'
+ self.components_name = Image2ImageDataCardName(language)
+ if self.new_dataset:
+ # new dataset
+ if surfix == '.zip':
+ file_list = self.load_from_zip(src_file, dataset_folder,
+ self.local_dataset_folder)
+ elif surfix in ['.txt', '.csv']:
+ file_list = self.load_from_list(src_file, dataset_folder,
+ self.local_dataset_folder)
+ elif surfix is None:
+ file_list = []
+ else:
+ raise gr.Error(
+ f'{self.components_name.illegal_data_err2} {surfix}')
+
+ is_flag = FS.put_dir_from_local_dir(self.local_dataset_folder,
+ dataset_folder,
+ multi_thread=True)
+ if not is_flag:
+ raise gr.Error(f'{self.components_name.illegal_data_err3}')
+
+ self.meta['cursor'] = 0 if len(file_list) > 0 else -1
+ self.meta['file_list'] = file_list
+ self.update_dataset()
+ else:
+ for da_idx, cur_data in enumerate(self.data):
+ if 'edit_caption' not in cur_data:
+ self.data[da_idx]['edit_caption'] = cur_data['caption']
+ if 'edit_image_path' not in cur_data:
+ self.data[da_idx]['edit_image_path'] = cur_data[
+ 'image_path']
+ if 'edit_relative_path' not in cur_data:
+ self.data[da_idx]['edit_relative_path'] = cur_data[
+ 'relative_path']
+ if 'edit_width' not in cur_data:
+ self.data[da_idx]['edit_width'] = cur_data['width']
+ if 'edit_height' not in cur_data:
+ self.data[da_idx]['edit_height'] = cur_data['height']
+
+ if 'edit_src_image_path' not in cur_data:
+ self.data[da_idx]['edit_src_image_path'] = cur_data[
+ 'src_image_path']
+ if 'edit_relative_path' not in cur_data:
+ self.data[da_idx]['edit_src_relative_path'] = cur_data[
+ 'src_relative_path']
+ if 'edit_width' not in cur_data:
+ self.data[da_idx]['edit_src_width'] = cur_data['src_width']
+ if 'edit_height' not in cur_data:
+ self.data[da_idx]['edit_src_height'] = cur_data[
+ 'src_height']
+
+ def load_from_zip(self, save_file, data_folder, local_dataset_folder):
+ with FS.get_from(save_file) as local_path:
+ res = os.popen(
+ f"unzip -o '{local_path}' -d '{local_dataset_folder}'")
+ res = res.readlines()
+ if not os.path.exists(local_dataset_folder):
+ raise gr.Error(f'Unzip {save_file} failed {str(res)}')
+ file_folder = None
+ train_list = None
+ hit_dir = None
+ raw_list = {}
+ mac_osx = os.path.join(local_dataset_folder, '__MACOSX')
+ if os.path.exists(mac_osx):
+ res = os.popen(f"rm -rf '{mac_osx}'")
+ res = res.readlines()
+ for one_dir in FS.walk_dir(local_dataset_folder, recurse=False):
+ if one_dir.endswith('__MACOSX'):
+ res = os.popen(f"rm -rf '{one_dir}'")
+ res = res.readlines()
+ continue
+ if FS.isdir(one_dir):
+ if one_dir.endswith('images') or one_dir.endswith('images/'):
+ file_folder = one_dir
+ hit_dir = one_dir
+ else:
+ sub_dir = FS.walk_dir(one_dir)
+ for one_s_dir in sub_dir:
+ if FS.isdir(one_s_dir) and one_s_dir.split(
+ one_dir)[1].replace('/', '') == 'images':
+ file_folder = one_s_dir
+ hit_dir = one_dir
+ if FS.isfile(one_s_dir) and one_s_dir.split(
+ one_dir)[1].replace('/', '') == 'train.csv':
+ train_list = one_s_dir
+ if file_folder is not None and train_list is not None:
+ break
+ elif one_dir.endswith('train.csv'):
+ train_list = one_dir
+ else:
+ continue
+ if file_folder is not None and train_list is not None:
+ break
+ if file_folder is None and len(raw_list) < 1:
+ raise gr.Error(
+ "images doesn't exist, or nothing exists in your zip")
+
+ if train_list is None:
+ raise gr.Error("pair list doesn't exist")
+ new_file_folder = f'{local_dataset_folder}/images'
+ os.makedirs(new_file_folder, exist_ok=True)
+
+ if file_folder is not None:
+ _ = FS.get_dir_to_local_dir(file_folder, new_file_folder)
+
+ if not os.path.exists(new_file_folder):
+ raise gr.Error(f'{str(res)}')
+ new_train_list = f'{local_dataset_folder}/train.csv'
+ res = os.popen(f"mv '{train_list}' '{new_train_list}'")
+ res = res.readlines()
+ if not os.path.exists(new_train_list):
+ raise gr.Error(f'{str(res)}')
+ if not file_folder == hit_dir:
+ try:
+ res = os.popen(f"rm -rf '{hit_dir}/images/*'")
+ _ = res.readlines()
+ res = os.popen(f"rm -rf '{hit_dir}'")
+ _ = res.readlines()
+ except Exception:
+ pass
+ file_list = self.load_train_file(new_train_list, data_folder)
+ # remove unused data
+ for one_dir in FS.walk_dir(local_dataset_folder):
+ if 'images' in one_dir or one_dir.endswith(
+ 'file.csv') or one_dir.endswith('train.csv'):
+ continue
+ # try:
+ # os.system(f'rm -rf {one_dir}')
+ # except:
+ # pass
+ os.system(f'rm -rf {one_dir}')
+ return file_list
+
+ def load_train_file(self, file_path, data_folder):
+ base_folder = os.path.dirname(file_path)
+ file_list = []
+ image_set = set()
+ with open(file_path, 'r') as f:
+ reader = csv.reader(f)
+ for row in reader:
+ src_image_path, image_path, prompt = row[0], row[1], row[2]
+ if image_path == 'Target:FILE':
+ continue
+
+ local_src_image_path = os.path.join(base_folder,
+ src_image_path)
+ src_w, src_h, src_img = get_image_meta(local_src_image_path)
+ if src_image_path in image_set:
+ src_image_name, surfix = os.path.splitext(src_image_path)
+ src_image_path = f'{src_image_name}_{int(time.time())}{surfix}'
+ new_local_image_path = os.path.join(
+ base_folder, src_image_path)
+ src_img.save(new_local_image_path)
+ image_set.add(src_image_path)
+
+ local_image_path = os.path.join(base_folder, image_path)
+ w, h, img = get_image_meta(local_image_path)
+ if image_path in image_set:
+ image_name, surfix = os.path.splitext(image_path)
+ image_path = f'{image_name}_{int(time.time())}{surfix}'
+ new_local_image_path = os.path.join(
+ base_folder, image_path)
+ img.save(new_local_image_path)
+ image_set.add(image_path)
+
+ file_list.append({
+ 'image_path':
+ os.path.join(data_folder, image_path),
+ 'relative_path':
+ image_path,
+ 'width':
+ w,
+ 'height':
+ h,
+ 'src_image_path':
+ os.path.join(data_folder, src_image_path),
+ 'src_relative_path':
+ src_image_path,
+ 'src_width':
+ src_w,
+ 'src_height':
+ src_h,
+ 'caption':
+ prompt,
+ 'prefix':
+ '',
+ 'edit_caption':
+ prompt,
+ 'edit_image_path':
+ os.path.join(data_folder, image_path),
+ 'edit_relative_path':
+ image_path,
+ 'edit_width':
+ w,
+ 'edit_height':
+ h,
+ 'edit_src_image_path':
+ os.path.join(data_folder, src_image_path),
+ 'edit_src_relative_path':
+ src_image_path,
+ 'edit_src_width':
+ src_w,
+ 'edit_src_height':
+ src_h,
+ })
+ return file_list
+
+ def load_from_list(self, save_file, dataset_folder, local_dataset_folder):
+ file_list = []
+ images_folder = os.path.join(local_dataset_folder, 'images')
+ os.makedirs(images_folder, exist_ok=True)
+ with FS.get_from(save_file) as local_path:
+ all_remote_list, all_local_list = [], []
+ all_src_remote_list, all_src_local_list = [], []
+ all_save_list, all_src_save_list = [], []
+ with open(local_path, 'r') as f:
+ for line in tqdm(f):
+ line = line.strip()
+ if line == '':
+ continue
+ try:
+ src_image_path, src_width, src_height, image_path, width, height, caption = line.split(
+ '#;#', 6)
+ except Exception:
+ try:
+ src_image_path, src_width, src_height, image_path, width, height, caption = line.split(
+ ',', 6)
+ except Exception:
+ raise gr.Error(
+ self.components_name.illegal_data_err1)
+ is_legal, new_path, prefix = find_prefix(image_path)
+ try:
+ int(width), int(height)
+ except Exception:
+ raise gr.Error(
+ self.components_name.illegal_data_err4.format(
+ width, height))
+
+ is_legal, new_src_path, src_prefix = find_prefix(
+ src_image_path)
+ try:
+ int(src_width), int(src_height)
+ except Exception:
+ raise gr.Error(
+ self.components_name.illegal_data_err4.format(
+ src_width, src_height))
+
+ if not is_legal:
+ raise gr.Error(
+ self.components_name.illegal_data_err5.format(
+ image_path + ' ' + src_image_path))
+ relative_path = os.path.join(
+ 'images',
+ f'{int(time.time())}_' + image_path.split('/')[-1])
+
+ src_relative_path = os.path.join(
+ 'images',
+ f'{int(time.time())}_' + src_image_path.split('/')[-1])
+
+ all_remote_list.append(new_path)
+ all_local_list.append(
+ os.path.join(local_dataset_folder, relative_path))
+ all_save_list.append(
+ os.path.join(dataset_folder, relative_path))
+
+ all_src_remote_list.append(new_src_path)
+ all_src_local_list.append(
+ os.path.join(local_dataset_folder, src_relative_path))
+ all_src_save_list.append(
+ os.path.join(dataset_folder, src_relative_path))
+
+ file_list.append({
+ 'image_path':
+ os.path.join(dataset_folder, relative_path),
+ 'src_image_path':
+ os.path.join(dataset_folder, src_relative_path),
+ 'relative_path':
+ relative_path,
+ 'src_relative_path':
+ src_relative_path,
+ 'width':
+ int(width),
+ 'height':
+ int(height),
+ 'src_width':
+ int(src_width),
+ 'src_height':
+ int(src_height),
+ 'caption':
+ caption,
+ 'prefix':
+ prefix,
+ 'edit_caption':
+ caption,
+ 'edit_image_path':
+ os.path.join(dataset_folder, relative_path),
+ 'edit_relative_path':
+ relative_path,
+ 'edit_width':
+ int(width),
+ 'edit_height':
+ int(height),
+ 'edit_src_image_path':
+ os.path.join(dataset_folder, src_relative_path),
+ 'edit_src_relative_path':
+ src_image_path,
+ 'edit_src_width':
+ int(src_width),
+ 'edit_src_height':
+ int(src_height)
+ })
+ cache_file_list = []
+ for idx, local_path in enumerate(
+ FS.get_batch_objects_from(all_remote_list)):
+ if local_path is None:
+ raise gr.Error(
+ self.components_name.illegal_data_err6.format(
+ all_remote_list[idx]))
+ _ = FS.put_object_from_local_file(local_path, all_local_list[idx])
+ cache_file_list.append(local_path)
+
+ for local_path, target_path, flg in FS.put_batch_objects_to(
+ cache_file_list, all_save_list):
+ if not flg:
+ raise gr.Error(
+ self.components_name.illegal_data_err7.format(local_path))
+ if os.path.exists(local_path):
+ try:
+ os.remove(local_path)
+ except Exception:
+ pass
+
+ cache_src_file_list = []
+ for idx, local_path in enumerate(
+ FS.get_batch_objects_from(all_src_remote_list)):
+ if local_path is None:
+ raise gr.Error(
+ self.components_name.illegal_data_err6.format(
+ all_src_remote_list[idx]))
+ _ = FS.put_object_from_local_file(local_path,
+ all_src_local_list[idx])
+ cache_src_file_list.append(local_path)
+
+ for local_path, target_path, flg in FS.put_batch_objects_to(
+ cache_src_file_list, all_src_save_list):
+ if not flg:
+ raise gr.Error(
+ self.components_name.illegal_data_err7.format(local_path))
+ if os.path.exists(local_path):
+ try:
+ os.remove(local_path)
+ except Exception:
+ pass
+ return file_list
+
+ def write_train_file(self):
+ file_list = self.meta['file_list']
+ with open(self.local_train_file, 'w') as f:
+ writer = csv.writer(f)
+ writer.writerow(['Source:FILE', 'Target:FILE', 'Prompt'])
+ for one_file in file_list:
+ relative_file = one_file['relative_path']
+ if relative_file.startswith('/'):
+ relative_file = relative_file[1:]
+
+ src_relative_file = one_file['src_relative_path']
+ if src_relative_file.startswith('/'):
+ src_relative_file = src_relative_file[1:]
+
+ writer.writerow(
+ [src_relative_file, relative_file, one_file['caption']])
+ FS.put_object_from_local_file(self.local_train_file, self.train_file)
+
+ def write_data_file(self):
+ file_list = self.meta['file_list']
+ with open(self.local_save_file_list, 'w') as f:
+ for one_file in file_list:
+ is_flag, file_path = del_prefix(one_file['image_path'],
+ prefix=one_file['prefix'])
+ is_flag, src_file_path = del_prefix(one_file['src_image_path'],
+ prefix=one_file['prefix'])
+ f.write('{}#;#{}#;#{}#;#{}#;#{}#;#{}#;#{}\n'.format(
+ src_file_path, one_file['src_width'],
+ one_file['src_height'], file_path, one_file['width'],
+ one_file['height'], one_file['caption']))
+ FS.put_object_from_local_file(self.local_save_file_list,
+ self.save_file_list)
+
+ def add_record(self, image, caption, **kwargs):
+ local_work_dir = self.meta['local_work_dir']
+ work_dir = self.meta['work_dir']
+
+ save_folder = os.path.join(local_work_dir, 'images')
+ os.makedirs(save_folder, exist_ok=True)
+
+ w, h = image.size
+ relative_path = os.path.join(
+ 'images', f'{imagehash.phash(image)}_{int(time.time())}.jpg')
+ image_path = os.path.join(work_dir, relative_path)
+ local_image_path = os.path.join(local_work_dir, relative_path)
+ image.save(local_image_path)
+ FS.put_object_from_local_file(local_image_path, image_path)
+
+ src_image = kwargs.pop('src_image')
+ src_w, src_h = src_image.size
+ src_relative_path = os.path.join(
+ 'images', f'{imagehash.phash(src_image)}_{int(time.time())}.jpg')
+ src_image_path = os.path.join(work_dir, src_relative_path)
+ local_src_image_path = os.path.join(local_work_dir, src_relative_path)
+ src_image.save(local_src_image_path)
+ FS.put_object_from_local_file(local_src_image_path, src_image_path)
+
+ self.data.append({
+ 'image_path': image_path,
+ 'relative_path': relative_path,
+ 'width': w,
+ 'height': h,
+ 'src_image_path': src_image_path,
+ 'src_relative_path': src_relative_path,
+ 'src_width': src_w,
+ 'src_height': src_h,
+ 'caption': caption,
+ 'prefix': '',
+ 'edit_caption': caption,
+ 'edit_image_path': image_path,
+ 'edit_relative_path': relative_path,
+ 'edit_width': w,
+ 'edit_height': h,
+ 'edit_src_image_path': src_image_path,
+ 'edit_src_relative_path': src_relative_path,
+ 'edit_src_width': src_w,
+ 'edit_src_height': src_h
+ })
+
+ self.set_cursor(len(self.meta['file_list']) - 1)
+ self.update_dataset()
+ return True
+
+ def delete_record(self):
+ if len(self) < 1:
+ raise gr.Error(self.components_name.delete_err1)
+ current_file = self.data.pop(self.cursor)
+ self.set_cursor(self.cursor - 1)
+ local_file = os.path.join(self.meta['local_work_dir'],
+ current_file['relative_path'])
+ try:
+ os.remove(local_file)
+ except Exception:
+ print(f'remove file {local_file} error')
+
+ local_src_file = os.path.join(self.meta['local_work_dir'],
+ current_file['src_relative_path'])
+ try:
+ os.remove(local_src_file)
+ except Exception:
+ print(f'remove file {local_src_file} error')
+
+ if self.cursor >= len(self.meta['file_list']):
+ self.set_cursor(0)
+ if self.cursor < 0:
+ self.set_cursor(len(self) - 1)
+ if len(self.meta['file_list']) == 0:
+ self.set_cursor(-1)
+ self.update_dataset()
+
+ def export_zip(self, export_folder):
+ self.update_dataset()
+ zip_path = os.path.join(export_folder, f'{self.dataset_name}.zip')
+ local_zip, _ = FS.map_to_local(zip_path)
+ os.makedirs(os.path.dirname(local_zip), exist_ok=True)
+ res = os.popen(
+ f"cd '{self.local_work_dir}' && mkdir -p '{self.dataset_name}' "
+ f"&& cp -rf images '{self.dataset_name}/images' "
+ f"&& cp -rf train.csv '{self.dataset_name}/train.csv' "
+ f"&& zip -r '{os.path.abspath(local_zip)}' '{self.dataset_name}'/* "
+ f"&& rm -rf '{self.dataset_name}'")
+ print(res.readlines())
+ FS.put_object_from_local_file(local_zip, zip_path)
+ if not FS.exists(zip_path):
+ raise gr.Error(self.components_name.export_zip_err1)
+ return local_zip
diff --git a/scepter/studio/preprocess/utils/txt2img_data_card.py b/scepter/studio/preprocess/utils/txt2img_data_card.py
new file mode 100644
index 0000000..2e45313
--- /dev/null
+++ b/scepter/studio/preprocess/utils/txt2img_data_card.py
@@ -0,0 +1,418 @@
+# -*- coding: utf-8 -*-
+# Copyright (c) Alibaba, Inc. and its affiliates.
+import csv
+import os
+import time
+
+from tqdm import tqdm
+
+import gradio as gr
+import imagehash
+from scepter.modules.utils.directory import get_md5
+from scepter.modules.utils.file_system import FS
+from scepter.studio.preprocess.caption_editor_ui.component_names import \
+ Text2ImageDataCardName
+from scepter.studio.preprocess.utils.data_card import (BaseDataCard,
+ find_prefix,
+ get_image_meta)
+
+
+class Text2ImageDataCard(BaseDataCard):
+ def __init__(self,
+ dataset_folder,
+ dataset_name=None,
+ src_file=None,
+ surfix=None,
+ user_name='admin',
+ language='en'):
+ super().__init__(dataset_folder,
+ dataset_name=dataset_name,
+ user_name=user_name)
+ self.meta['task_type'] = 'txt2img'
+ self.components_name = Text2ImageDataCardName(language)
+ if self.new_dataset:
+ # new dataset
+ if surfix == '.zip':
+ file_list = self.load_from_zip(src_file, dataset_folder,
+ self.local_dataset_folder)
+ elif surfix in ['.txt', '.csv']:
+ file_list = self.load_from_list(src_file, dataset_folder,
+ self.local_dataset_folder)
+ elif surfix is None:
+ file_list = []
+ else:
+ raise gr.Error(
+ f'{self.components_name.illegal_data_err2} {surfix}')
+
+ is_flag = FS.put_dir_from_local_dir(self.local_dataset_folder,
+ dataset_folder,
+ multi_thread=True)
+ if not is_flag:
+ raise gr.Error(f'{self.components_name.illegal_data_err3}')
+
+ self.meta['cursor'] = 0 if len(file_list) > 0 else -1
+ self.meta['file_list'] = file_list
+ self.update_dataset()
+ else:
+ for da_idx, cur_data in enumerate(self.data):
+ if 'edit_caption' not in cur_data:
+ self.data[da_idx]['edit_caption'] = cur_data['caption']
+ if 'edit_image_path' not in cur_data:
+ self.data[da_idx]['edit_image_path'] = cur_data[
+ 'image_path']
+ if 'edit_relative_path' not in cur_data:
+ self.data[da_idx]['edit_relative_path'] = cur_data[
+ 'relative_path']
+ if 'edit_width' not in cur_data:
+ self.data[da_idx]['edit_width'] = cur_data['width']
+ if 'edit_height' not in cur_data:
+ self.data[da_idx]['edit_height'] = cur_data['height']
+
+ def load_from_zip(self, save_file, data_folder, local_dataset_folder):
+ with FS.get_from(save_file) as local_path:
+ res = os.popen(
+ f"unzip -o '{local_path}' -d '{local_dataset_folder}'")
+ res = res.readlines()
+ if not os.path.exists(local_dataset_folder):
+ raise gr.Error(f'Unzip {save_file} failed {str(res)}')
+ file_folder = None
+ train_list = None
+ hit_dir = None
+ raw_list = {}
+ mac_osx = os.path.join(local_dataset_folder, '__MACOSX')
+ if os.path.exists(mac_osx):
+ res = os.popen(f"rm -rf '{mac_osx}'")
+ res = res.readlines()
+ for one_dir in FS.walk_dir(local_dataset_folder, recurse=False):
+ if one_dir.endswith('__MACOSX'):
+ res = os.popen(f"rm -rf '{one_dir}'")
+ res = res.readlines()
+ continue
+ if FS.isdir(one_dir):
+ if one_dir.endswith('images') or one_dir.endswith('images/'):
+ file_folder = one_dir
+ hit_dir = one_dir
+ else:
+ sub_dir = FS.walk_dir(one_dir)
+ for one_s_dir in sub_dir:
+ if FS.isdir(one_s_dir) and one_s_dir.split(
+ one_dir)[1].replace('/', '') == 'images':
+ file_folder = one_s_dir
+ hit_dir = one_dir
+ if FS.isfile(one_s_dir) and one_s_dir.split(
+ one_dir)[1].replace('/', '') == 'train.csv':
+ train_list = one_s_dir
+ if file_folder is not None and train_list is not None:
+ break
+ if (one_s_dir.endswith('.jpg')
+ or one_s_dir.endswith('.jpeg')
+ or one_s_dir.endswith('.png')
+ or one_s_dir.endswith('.webp')):
+ file_name, surfix = os.path.splitext(one_s_dir)
+ txt_file = file_name + '.txt'
+ if os.path.exists(txt_file):
+ raw_list[one_s_dir] = txt_file
+ else:
+ raw_list[one_s_dir] = None
+ elif one_dir.endswith('train.csv'):
+ train_list = one_dir
+ else:
+ if (one_dir.endswith('.jpg') or one_dir.endswith('.jpeg')
+ or one_dir.endswith('.png')
+ or one_dir.endswith('.webp')):
+ file_name, surfix = os.path.splitext(one_dir)
+ txt_file = file_name + '.txt'
+ if os.path.exists(txt_file):
+ raw_list[one_dir] = txt_file
+ else:
+ raw_list[one_dir] = None
+ if file_folder is not None and train_list is not None:
+ break
+ if file_folder is None and len(raw_list) < 1:
+ raise gr.Error(
+ "images folder or train.csv doesn't exists, or nothing exists in your zip"
+ )
+ new_file_folder = f'{local_dataset_folder}/images'
+ os.makedirs(new_file_folder, exist_ok=True)
+ if file_folder is not None:
+ _ = FS.get_dir_to_local_dir(file_folder, new_file_folder)
+ elif len(raw_list) > 0:
+ raw_list = [[k, v] for k, v in raw_list.items()]
+ for img_id, cur_image in enumerate(raw_list):
+ image_name, surfix = os.path.splitext(cur_image[0])
+ if cur_image[1] is not None and os.path.exists(cur_image[1]):
+ prompt = open(cur_image[1], 'r').read()
+ else:
+ prompt = image_name.split('/')[-1]
+ try:
+ new_name = f'{get_md5(cur_image[0])}_{int(time.time())}{surfix}'
+ os.rename(os.path.abspath(cur_image[0]),
+ f'{new_file_folder}/{new_name}')
+ raw_list[img_id] = [
+ os.path.join('images', new_name), prompt
+ ]
+ except Exception as e:
+ print(e)
+
+ if not os.path.exists(new_file_folder):
+ raise gr.Error(f'{str(res)}')
+ new_train_list = f'{local_dataset_folder}/train.csv'
+ if train_list is None or not os.path.exists(train_list):
+ with open(new_train_list, 'w') as f:
+ writer = csv.writer(f)
+ writer.writerow(['Target:FILE', 'Prompt'])
+ for cur_image, cur_prompt in raw_list:
+ writer.writerow([cur_image, cur_prompt])
+ else:
+ res = os.popen(f"mv '{train_list}' '{new_train_list}'")
+ res = res.readlines()
+ if not os.path.exists(new_train_list):
+ raise gr.Error(f'{str(res)}')
+ if not file_folder == hit_dir:
+ try:
+ res = os.popen(f"rm -rf '{hit_dir}/images/*'")
+ _ = res.readlines()
+ res = os.popen(f"rm -rf '{hit_dir}'")
+ _ = res.readlines()
+ except Exception:
+ pass
+ file_list = self.load_train_file(new_train_list, data_folder)
+ # remove unused data
+ for one_dir in FS.walk_dir(local_dataset_folder):
+ if 'images' in one_dir or one_dir.endswith(
+ 'file.csv') or one_dir.endswith('train.csv'):
+ continue
+ # try:
+ # os.system(f'rm -rf {one_dir}')
+ # except:
+ # pass
+ os.system(f'rm -rf {one_dir}')
+ return file_list
+
+ def load_train_file(self, file_path, data_folder):
+ base_folder = os.path.dirname(file_path)
+ file_list = []
+ image_set = set()
+ with open(file_path, 'r') as f:
+ reader = csv.reader(f)
+ for row in reader:
+ image_path, prompt = row[0], row[1]
+ if image_path == 'Target:FILE':
+ continue
+ local_image_path = os.path.join(base_folder, image_path)
+ w, h, img = get_image_meta(local_image_path)
+ # deal with the duplication
+ if image_path in image_set:
+ basename, surfix = os.path.splitext(local_image_path)
+ image_path = f'{basename}_{int(time.time())}{surfix}'
+ new_local_image_path = os.path.join(
+ base_folder, image_path)
+ img.save(new_local_image_path)
+ image_set.add(image_path)
+ file_list.append({
+ 'image_path':
+ os.path.join(data_folder, image_path),
+ 'relative_path':
+ image_path,
+ 'width':
+ w,
+ 'height':
+ h,
+ 'caption':
+ prompt,
+ 'prefix':
+ '',
+ 'edit_caption':
+ prompt,
+ 'edit_image_path':
+ os.path.join(data_folder, image_path),
+ 'edit_relative_path':
+ image_path,
+ 'edit_width':
+ w,
+ 'edit_height':
+ h,
+ })
+ return file_list
+
+ def load_from_list(self, save_file, dataset_folder, local_dataset_folder):
+ file_list = []
+ images_folder = os.path.join(local_dataset_folder, 'images')
+ os.makedirs(images_folder, exist_ok=True)
+ with FS.get_from(save_file) as local_path:
+ all_remote_list, all_local_list = [], []
+ all_save_list = []
+ with open(local_path, 'r') as f:
+ for line in tqdm(f):
+ line = line.strip()
+ if line == '':
+ continue
+ try:
+ image_path, width, height, caption = line.split(
+ '#;#', 3)
+ except Exception:
+ try:
+ image_path, width, height, caption = line.split(
+ ',', 3)
+ except Exception:
+ raise gr.Error(
+ self.components_name.illegal_data_err1)
+ is_legal, new_path, prefix = find_prefix(image_path)
+ try:
+ int(width), int(height)
+ except Exception:
+ raise gr.Error(
+ self.components_name.illegal_data_err4.format(
+ width, height))
+
+ if not is_legal:
+ raise gr.Error(
+ self.components_name.illegal_data_err5.format(
+ image_path))
+ relative_path = os.path.join(
+ 'images',
+ f'{int(time.time())}_' + image_path.split('/')[-1])
+
+ all_remote_list.append(new_path)
+ all_local_list.append(
+ os.path.join(local_dataset_folder, relative_path))
+ all_save_list.append(
+ os.path.join(dataset_folder, relative_path))
+ file_list.append({
+ 'image_path':
+ os.path.join(dataset_folder, relative_path),
+ 'relative_path':
+ relative_path,
+ 'width':
+ int(width),
+ 'height':
+ int(height),
+ 'caption':
+ caption,
+ 'prefix':
+ prefix,
+ 'edit_caption':
+ caption,
+ 'edit_image_path':
+ os.path.join(dataset_folder, image_path),
+ 'edit_relative_path':
+ image_path,
+ 'edit_width':
+ int(width),
+ 'edit_height':
+ int(height),
+ })
+ cache_file_list = []
+ for idx, local_path in enumerate(
+ FS.get_batch_objects_from(all_remote_list)):
+ if local_path is None:
+ raise gr.Error(
+ self.components_name.illegal_data_err6.format(
+ all_remote_list[idx]))
+ _ = FS.put_object_from_local_file(local_path, all_local_list[idx])
+ cache_file_list.append(local_path)
+
+ for local_path, target_path, flg in FS.put_batch_objects_to(
+ cache_file_list, all_save_list):
+ if not flg:
+ raise gr.Error(
+ self.components_name.illegal_data_err7.format(local_path))
+ if os.path.exists(local_path):
+ try:
+ os.remove(local_path)
+ except Exception:
+ pass
+
+ return file_list
+
+ def write_train_file(self):
+ file_list = self.meta['file_list']
+ with open(self.local_train_file, 'w') as f:
+ writer = csv.writer(f)
+ writer.writerow(['Target:FILE', 'Prompt'])
+ for one_file in file_list:
+ relative_file = one_file['relative_path']
+ if relative_file.startswith('/'):
+ relative_file = relative_file[1:]
+ writer.writerow([relative_file, one_file['caption']])
+ FS.put_object_from_local_file(self.local_train_file, self.train_file)
+
+ def write_data_file(self):
+ file_list = self.meta['file_list']
+ with open(self.local_save_file_list, 'w') as f:
+ for one_file in file_list:
+ file_path = os.path.join(self.local_work_dir,
+ one_file['relative_path'])
+ f.write('{}#;#{}#;#{}#;#{}\n'.format(file_path,
+ one_file['width'],
+ one_file['height'],
+ one_file['caption']))
+ FS.put_object_from_local_file(self.local_save_file_list,
+ self.save_file_list)
+
+ def add_record(self, image, caption, **kwargs):
+ local_work_dir = self.meta['local_work_dir']
+ work_dir = self.meta['work_dir']
+
+ save_folder = os.path.join(local_work_dir, 'images')
+ os.makedirs(save_folder, exist_ok=True)
+
+ w, h = image.size
+ relative_path = os.path.join(
+ 'images', f'{imagehash.phash(image)}_{int(time.time())}.jpg')
+ image_path = os.path.join(work_dir, relative_path)
+ local_image_path = os.path.join(local_work_dir, relative_path)
+ image.save(local_image_path)
+ FS.put_object_from_local_file(local_image_path, image_path)
+
+ self.data.append({
+ 'image_path': image_path,
+ 'relative_path': relative_path,
+ 'width': w,
+ 'height': h,
+ 'caption': caption,
+ 'prefix': '',
+ 'edit_caption': caption,
+ 'edit_image_path': image_path,
+ 'edit_relative_path': relative_path,
+ 'edit_width': w,
+ 'edit_height': h
+ })
+
+ self.set_cursor(len(self.meta['file_list']) - 1)
+ self.update_dataset()
+ return True
+
+ def delete_record(self):
+ if len(self) < 1:
+ raise gr.Error(self.components_name.delete_err1)
+ current_file = self.data.pop(self.cursor)
+ self.set_cursor(self.cursor + 1)
+ local_file = os.path.join(self.meta['local_work_dir'],
+ current_file['relative_path'])
+ try:
+ os.remove(local_file)
+ except Exception:
+ print(f'remove file {local_file} error')
+ if self.cursor >= len(self.meta['file_list']):
+ self.set_cursor(0)
+ if len(self.meta['file_list']) == 0:
+ self.set_cursor(-1)
+ self.update_dataset()
+
+ def export_zip(self, export_folder):
+ self.update_dataset()
+ zip_path = os.path.join(export_folder, f'{self.dataset_name}.zip')
+ local_zip, _ = FS.map_to_local(zip_path)
+ os.makedirs(os.path.dirname(local_zip), exist_ok=True)
+ res = os.popen(
+ f"cd '{self.local_work_dir}' && mkdir -p '{self.dataset_name}' "
+ f"&& cp -rf images '{self.dataset_name}/images' "
+ f"&& cp -rf train.csv '{self.dataset_name}/train.csv' "
+ f"&& zip -r '{os.path.abspath(local_zip)}' '{self.dataset_name}'/* "
+ f"&& rm -rf '{self.dataset_name}'")
+ print(res.readlines())
+ FS.put_object_from_local_file(local_zip, zip_path)
+ if not FS.exists(zip_path):
+ raise gr.Error(self.components_name.export_zip_err1)
+ return local_zip
diff --git a/scepter/studio/self_train/scripts/run_task.py b/scepter/studio/self_train/scripts/run_task.py
index 20bc89f..c00b279 100644
--- a/scepter/studio/self_train/scripts/run_task.py
+++ b/scepter/studio/self_train/scripts/run_task.py
@@ -6,7 +6,6 @@ import os
import cv2
import numpy as np
import torch
-
from scepter.modules.solver.hooks.checkpoint import CheckpointHook
from scepter.modules.solver.hooks.data_probe import ProbeDataHook
from scepter.modules.solver.registry import SOLVERS
diff --git a/scepter/studio/self_train/scripts/trainer.py b/scepter/studio/self_train/scripts/trainer.py
index e6948ce..7680254 100644
--- a/scepter/studio/self_train/scripts/trainer.py
+++ b/scepter/studio/self_train/scripts/trainer.py
@@ -8,7 +8,6 @@ import time
import psutil
import torch
-
from scepter.modules.utils.file_system import FS
from scepter.modules.utils.logger import as_time
@@ -25,9 +24,9 @@ class TaskStatus():
@property
def error_msg(self):
if os.path.exists(self.error_log):
- return "\n".join(open(self.error_log, "r").readlines()[-50:])
+ return '\n'.join(open(self.error_log, 'r').readlines()[-50:])
else:
- return "No error msg."
+ return 'No error msg.'
def kill_job(pid):
@@ -52,9 +51,9 @@ class Trainer():
def __call__(self, task_name):
torch.cuda.empty_cache()
- error_folder = "./error_logs"
+ error_folder = './error_logs'
os.makedirs(error_folder, exist_ok=True)
- self.status_message.error_log = f"{error_folder}/{int(time.time())}.log"
+ self.status_message.error_log = f'{error_folder}/{int(time.time())}.log'
cmd = f'PYTHONPATH=. python {self.run_script} ' \
f'--cfg={task_name}/train.yaml 2> {self.status_message.error_log}'
# cmd = [f"python {self.run_script}"]
diff --git a/scepter/studio/self_train/self_train.py b/scepter/studio/self_train/self_train.py
index d2d4727..e16a512 100644
--- a/scepter/studio/self_train/self_train.py
+++ b/scepter/studio/self_train/self_train.py
@@ -3,7 +3,6 @@
import os
import gradio as gr
-
import scepter
from scepter.modules.utils.config import Config
from scepter.modules.utils.file_system import FS
diff --git a/scepter/studio/self_train/self_train_ui/component_names.py b/scepter/studio/self_train/self_train_ui/component_names.py
index 7c27e32..7b34118 100644
--- a/scepter/studio/self_train/self_train_ui/component_names.py
+++ b/scepter/studio/self_train/self_train_ui/component_names.py
@@ -71,54 +71,73 @@ class ModelUIName():
class TrainerUIName():
def __init__(self, language='en'):
+ self.task_choices = ['Text2Image', 'Image Editing']
+ self.data_task_map = {
+ 'scepter_txt2img': None,
+ 'scepter_img2img': 'edit'
+ }
if language == 'en':
self.user_direction = '''
### User Guide
- - Data: Select the template data from Examples, or prepare your custom data
- for upload according to the format of the example dog.zip package.
+ - Data: Data preparation is done through the Data Manager. (zip example: [3D](https://www.modelscope.cn/api/v1/models/iic/scepter/repo?Revision=master&FilePath=datasets/3D_example_csv.zip))
- Parameters: You can try modifying the related parameters.
- Training: Click on [Start Training].
- - Testing: After completing the training, click [Go to inference ].
+ - Testing: After completing the training, click [Go to inference].
- Note: Timeouts may cause the connection to disconnect (an Error may occur).
After waiting for the time when the training is likely to be almost complete,
refresh the interface and then click [Refresh Model] at the bottom of the page.
The trained model should appear in the [Output Model Name] if training was successful;
if not, the training may be incomplete or have failed.
- - zip example: https://www.modelscope.cn/api/v1/models/iic/scepter/repo?Revision=master&FilePath=datasets/3D_example_csv.zip
- For processing and training with large-scale data, it is recommended to use the command line.
''' # noqa
- self.data_type_choices = ['Dataset zip', 'MaaS Dataset']
- self.data_type_value = 'Dataset zip'
- self.data_type_name = 'Data Source'
+ self.data_source_choices = [
+ 'Dataset zip', 'MaaS Dataset', 'Dataset Management'
+ ]
+ self.data_source_value = 'Dataset zip'
+ self.data_source_name = 'Data Source'
+ self.data_type_map = {
+ 'scepter_txt2img': 'Text2Image Generation',
+ 'scepter_img2img': 'Image Edit Generation'
+ }
+ self.data_type_choices = list(self.data_type_map.keys())
+ self.data_type_value = 'scepter_txt2img'
+ self.data_type_name = 'Data Type'
self.ori_data_name = 'Data Name'
- self.ms_data_name_place_hold = 'Supports MaaS dataset/local/HTTP Zip package'
+ # Supports MaaS dataset/local/HTTP Zip package
+ self.ms_data_name_place_hold = 'Please use Dataset Management.'
self.ms_data_space = 'ModelScope Space'
self.ms_data_subname = 'MaaS Dataset - Subset'
+ self.task = 'Eval Editing Image'
+ self.eval_data = 'Evaluation Data'
+ self.train_data = 'Training Data'
+ self.eval_prompts = 'Eval Prompts'
+ self.eval_image = 'Eval Image'
self.training_block = 'Training Parameters'
self.base_model = 'Base Model'
self.tuner_name = 'Tuner Method'
self.base_model_revision = 'Model Version Number'
- self.resolution_height = 'Resolution Height'
- self.resolution_width = 'Resolution Width'
+ self.resolution_height = 'Train Image Height'
+ self.resolution_width = 'Train Image Width'
self.resolution_height_max = 'Resolution Height Max'
self.resolution_width_max = 'Resolution Width Max'
- self.train_epoch = 'Number of Training Epochs'
+ self.train_epoch = 'Total Training Epochs'
self.learning_rate = 'Learning Rate'
- self.save_interval = 'Save Interval'
+ self.save_interval = 'Checkpoint Save Interval (Epochs)'
self.train_batch_size = 'Training Batch Size'
self.prompt_prefix = 'Prefix'
self.replace_keywords = 'Trigger Keywords'
self.work_name = 'Save Model Name (refresh to get a random value)'
self.push_to_hub = 'Push to hub'
self.training_button = 'Start Training'
- self.eval_prompts = 'Eval Prompts'
self.tuner_param = 'Tuner Parameters'
self.enable_resolution_bucket = 'Enable Resolution Bucket'
+ self.enable_resolution_bucket_ins = 'Automatically Pack Multi-Resolution Batches'
self.resolution_param = 'Resolution Parameters'
self.min_bucket_resolution = 'Min Bucket Resolution'
self.max_bucket_resolution = 'Max Bucket Resolution'
self.bucket_resolution_steps = 'Bucket Resolution Steps'
self.bucket_no_upscale = 'Bucket No Upscale'
+ self.bucket_no_upscale_ins = 'Disable Automatic Image Upscaling'
# Error or Warning
self.training_err1 = 'CUDA is unavailable.'
self.training_err2 = 'Currently insufficient VRAM, training failed!'
@@ -130,45 +149,57 @@ class TrainerUIName():
elif language == 'zh':
self.user_direction = '''
### 使用说明
- - 数据: 选择Example的模版数据或可以按照样例中dog.zip包的格式准备自定义数据进行上传
+ - 数据: 通过数据管理器进行数据的准备(ZIP样例:[3D](https://www.modelscope.cn/api/v1/models/iic/scepter/repo?Revision=master&FilePath=datasets/3D_example_csv.zip))
- 参数: 可尝试进行相关参数的修改
- 训练: 点击【开始训练】
- 测试: 完成训练后点击【使用模型】
- 注意:超时可能导致连接断开(出现Error),可以等差不多可能训完后,刷新界面再点击页面最后的[刷新模型],即可在[产出模型名称中]出现已经完成训练的模型,若不存在则没有完成训练或训练失败
- - ZIP样例:https://www.modelscope.cn/api/v1/models/iic/scepter/repo?Revision=master&FilePath=datasets/3D_example_csv.zip
- 对于大规模数据的处理和训练,建议使用命令行形式
''' # noqa
- self.data_type_choices = ['数据集zip', 'MaaS数据集']
- self.data_type_value = '数据集zip'
- self.data_type_name = '数据集来源'
+ self.data_source_choices = ['数据集zip', 'MaaS数据集', '数据管理器']
+ self.data_source_value = '数据集zip'
+ self.data_source_name = '数据集来源'
+ self.data_type_map = {
+ 'scepter_txt2img': '文生图数据',
+ 'scepter_img2img': '图像编辑(图生图)数据'
+ }
+ self.data_type_choices = list(self.data_type_map.keys())
+ self.data_type_value = 'scepter_txt2img'
+ self.data_type_name = '数据类型'
self.ori_data_name = '数据集名称'
- self.ms_data_name_place_hold = '支持MaaS数据集/本地/Http Zip包'
+ self.ms_data_name_place_hold = '请使用数据管理器导入' # '支持MaaS数据集/本地/Http Zip包'
self.ms_data_space = 'ModelScope 空间'
self.ms_data_subname = 'MaaS数据集-子集'
+ self.task = '任务'
+ self.eval_data = '评测数据'
+ self.train_data = '训练数据'
+ self.eval_prompts = '评测文本'
+ self.eval_image = '评测图片'
self.training_block = '训练参数'
self.base_model = '基础模型'
self.tuner_name = '微调方法'
self.base_model_revision = '模型版本号'
- self.resolution_height = '训练高度'
- self.resolution_width = '训练宽度'
+ self.resolution_height = '训练图片高度'
+ self.resolution_width = '训练图片宽度'
self.resolution_height_max = '最大训练高度'
self.resolution_width_max = '最大训练宽度'
- self.train_epoch = '训练轮数'
+ self.train_epoch = '总训练轮数'
self.learning_rate = '学习率'
- self.save_interval = '存储间隔'
- self.train_batch_size = '训练批次'
+ self.save_interval = '中间结果存储间隔(轮数)'
+ self.train_batch_size = '每批次数据条数(Batch Size)'
self.prompt_prefix = '前缀'
self.replace_keywords = '触发关键词'
self.work_name = '保存模型名称(刷新获得随机值)'
self.push_to_hub = '推送魔搭社区'
- self.eval_prompts = '评测文本'
self.tuner_param = '微调参数'
self.enable_resolution_bucket = '开启分辨率分桶'
+ self.enable_resolution_bucket_ins = '自动组装多分辨率Batch'
self.resolution_param = '分辨率参数'
self.min_bucket_resolution = '最小分桶分辨率'
self.max_bucket_resolution = '最大分桶分辨率'
self.bucket_resolution_steps = '分桶分辨率步长'
self.bucket_no_upscale = '分桶分辨率不做放大'
+ self.bucket_no_upscale_ins = '禁止图片分辨率上采样'
# Error or Warning
self.training_err1 = 'CUDA不可用.'
self.training_err2 = '目前显存不足,训练失败!'
diff --git a/scepter/studio/self_train/self_train_ui/model_ui.py b/scepter/studio/self_train/self_train_ui/model_ui.py
index a37e158..0852661 100644
--- a/scepter/studio/self_train/self_train_ui/model_ui.py
+++ b/scepter/studio/self_train/self_train_ui/model_ui.py
@@ -6,9 +6,9 @@ import os
import queue
import time
-import gradio as gr
import yaml
+import gradio as gr
from scepter.modules.utils.config import Config
from scepter.modules.utils.file_system import FS
from scepter.studio.self_train.self_train_ui.component_names import ModelUIName
@@ -422,11 +422,20 @@ class ModelUI(UIBase):
manager.inference.tuner_ui.name_level_tuners[base_model][
output_model] = tuner_cfg
+ if tuner_cfg.BASE_MODEL == 'EDIT':
+ selected_tab = 'stylebooth_ui'
+ checkboxes = [
+ '使用微调', 'StyleBooth'
+ ] if self.language == 'zh' else ['Use Tuners', 'StyleBooth']
+ else:
+ selected_tab = 'tuner_ui'
+ checkboxes = ['使用微调'
+ ] if self.language == 'zh' else ['Use Tuners']
+
return (
gr.Tabs(selected='inference'), cfg_file,
- gr.Tabs(selected='tuner_ui'),
- gr.CheckboxGroup(
- value='使用微调' if self.language == 'zh' else 'Use Tuners'),
+ gr.Tabs(selected=selected_tab),
+ gr.CheckboxGroup(value=checkboxes),
gr.Dropdown(value=diffusion_model),
gr.Dropdown(choices=tunner_choices, value=tunner_default)
# gr.Text(value=tuner_cfg.get('TUNER_TYPE', '')),
diff --git a/scepter/studio/self_train/self_train_ui/trainer_ui.py b/scepter/studio/self_train/self_train_ui/trainer_ui.py
index 0aaa2d1..f9488cd 100644
--- a/scepter/studio/self_train/self_train_ui/trainer_ui.py
+++ b/scepter/studio/self_train/self_train_ui/trainer_ui.py
@@ -8,10 +8,10 @@ import random
from collections import OrderedDict
import gradio as gr
-import torch
import yaml
import scepter
+import torch
from scepter.modules.utils.file_system import FS
from scepter.studio.self_train.scripts.trainer import TrainManager
from scepter.studio.self_train.self_train_ui.component_names import \
@@ -100,58 +100,98 @@ class TrainerUI(UIBase):
def create_ui(self):
with gr.Box():
with gr.Row(variant='panel', equal_height=True):
- with gr.Column(variant='panel'):
+ with gr.Column(scale=1, min_width=0, variant='panel'):
gr.Markdown(self.component_names.user_direction)
- self.data_type = gr.Dropdown(
- choices=self.component_names.data_type_choices,
- value=self.component_names.data_type_value,
- label=self.component_names.data_type_name,
- interactive=True)
- self.ori_data_name = gr.Textbox(
- label=self.component_names.ori_data_name,
- max_lines=1,
- placeholder=self.component_names.ori_data_name,
- interactive=True)
- self.ms_data_name = gr.Textbox(
- label=' or '.join(
- self.component_names.data_type_choices),
- max_lines=1,
- placeholder=self.component_names.
- ms_data_name_place_hold,
- interactive=True)
- with gr.Box(visible=False) as self.ms_data_box:
- with gr.Row():
- self.ms_data_space = gr.Textbox(
- label=self.component_names.ms_data_space,
- max_lines=1)
- self.ms_data_subname = gr.Textbox(
- label=self.component_names.ms_data_subname,
- value='default',
- max_lines=1)
- with gr.Column(variant='panel'):
+ with gr.Box():
+ gr.Markdown(self.component_names.train_data)
+ self.data_source = gr.Dropdown(
+ choices=self.component_names.data_source_choices,
+ value=self.component_names.data_source_value,
+ label=self.component_names.data_source_name,
+ placeholder=self.component_names.data_source_name,
+ interactive=False)
+ self.data_type = gr.Dropdown(
+ choices=[
+ self.component_names.data_type_map[key]
+ for key in self.component_names.data_type_choices
+ ],
+ value=self.component_names.data_type_map[
+ self.component_names.data_type_value],
+ label=self.component_names.data_type_name,
+ placeholder=self.component_names.data_type_name,
+ interactive=False)
+ self.ori_data_name = gr.Textbox(
+ label=self.component_names.ori_data_name,
+ max_lines=1,
+ placeholder=self.component_names.ori_data_name,
+ interactive=False)
+ self.ms_data_name = gr.Textbox(
+ label=' or '.join(
+ self.component_names.data_source_choices),
+ max_lines=1,
+ placeholder=self.component_names.
+ ms_data_name_place_hold,
+ visible=False,
+ interactive=False)
+ with gr.Box(visible=False) as self.ms_data_box:
+ with gr.Row():
+ self.ms_data_space = gr.Textbox(
+ label=self.component_names.ms_data_space,
+ max_lines=1)
+ self.ms_data_subname = gr.Textbox(
+ label=self.component_names.ms_data_subname,
+ value='default',
+ max_lines=1)
+ with gr.Box():
+ gr.Markdown(self.component_names.eval_data)
+ self.eval_prompts = gr.Dropdown(
+ value=None,
+ choices=self.train_para_data.get(
+ 'EVAL_PROMPTS', []),
+ label=self.component_names.eval_prompts,
+ interactive=True,
+ multiselect=True,
+ allow_custom_value=True,
+ max_choices=20)
+ # self.task = gr.Radio(
+ # choices=self.component_names.task_choices,
+ # label=self.component_names.task,
+ # value=self.component_names.task_choices[0],
+ # interactive=False)
+ self.eval_image = gr.Image(
+ label=self.component_names.eval_image,
+ type='pil',
+ tool='editor',
+ interactive=False,
+ visible=False)
+ with gr.Column(scale=2, min_width=0, variant='panel'):
with gr.Box():
gr.Markdown(self.component_names.training_block)
with gr.Row():
- with gr.Column(scale=1, min_width=0):
- self.base_model = gr.Dropdown(
- choices=self.para_data.get(
- 'model_choices', []),
- value=self.para_data.get(
- 'model_default', ''),
- label=self.component_names.base_model,
- interactive=True)
- with gr.Column(scale=1, min_width=0):
- self.base_model_revision = gr.Dropdown(
- choices=self.para_data.get(
- 'version_choices', []),
- value=self.para_data.get(
- 'version_default', ''),
- label=self.component_names.
- base_model_revision,
- interactive=True)
-
- with gr.Row():
- with gr.Column(scale=1, min_width=0):
+ self.base_model = gr.Dropdown(
+ choices=self.para_data.get(
+ 'model_choices', []),
+ value=self.para_data.get(
+ 'model_default', ''),
+ label=self.component_names.base_model,
+ interactive=True)
+ self.base_model_revision = gr.Dropdown(
+ choices=self.para_data.get(
+ 'version_choices', []),
+ value=self.para_data.get(
+ 'version_default', ''),
+ label=self.component_names.
+ base_model_revision,
+ interactive=True)
+ with gr.Box():
+ gr.Markdown(self.component_names.tuner_param)
+ # with gr.Column(scale=1, min_width=0):
+ if 'TUNER' in self.para_data:
+ lora_visible, text_lora_visible, sce_visible = judge_tuner_visible(
+ self.para_data['TUNER'])
+ else:
+ lora_visible, text_lora_visible, sce_visible = False, False, False
+ with gr.Row():
self.tuner_name = gr.Dropdown(
choices=self.para_data.get(
'tuner_choices', []),
@@ -159,18 +199,8 @@ class TrainerUI(UIBase):
'tuner_default', ''),
label=self.component_names.tuner_name,
interactive=True)
-
- with gr.Row():
- with gr.Accordion(
- label=self.component_names.tuner_param,
- open=False):
- if 'TUNER' in self.para_data:
- lora_visible, text_lora_visible, sce_visible = judge_tuner_visible(
- self.para_data['TUNER'])
- else:
- lora_visible, text_lora_visible, sce_visible = False, False, False
- with gr.Row(visible=lora_visible
- ) as self.lora_param:
+ with gr.Row():
+ with gr.Row(visible=lora_visible) as self.lora_param:
self.lora_alpha = gr.Number(
label='LoRA Alpha',
value=self.para_data.get(
@@ -181,8 +211,7 @@ class TrainerUI(UIBase):
value=self.para_data.get(
'lora_rank', 256),
interactive=True)
- with gr.Row(visible=text_lora_visible
- ) as self.text_lora_param:
+ with gr.Row(visible=text_lora_visible) as self.text_lora_param:
self.text_lora_alpha = gr.Number(
label='Text LoRA Alpha',
value=self.para_data.get(
@@ -193,19 +222,18 @@ class TrainerUI(UIBase):
value=self.para_data.get(
'text_lora_rank', 256),
interactive=True)
- with gr.Row(
- visible=sce_visible) as self.sce_param:
- self.sce_ratio = gr.Slider(
- label='SCE Ratio',
- minimum=0.2,
- maximum=2.0,
- step=0.1,
- value=self.para_data.get(
- 'sce_ratio', 1.0),
- interactive=True)
-
- with gr.Row():
- with gr.Column(scale=2, min_width=0):
+ self.sce_ratio = gr.Slider(
+ label='SCE Ratio',
+ minimum=0.2,
+ maximum=2.0,
+ step=0.1,
+ value=self.para_data.get(
+ 'sce_ratio', 1.0),
+ interactive=True,
+ visible=sce_visible)
+ with gr.Box():
+ gr.Markdown(self.component_names.resolution_param)
+ with gr.Row(equal_height=True):
self.resolution_height = gr.Dropdown(
choices=list(self.h_level_dict.keys()),
value=self.para_data.get(
@@ -214,8 +242,6 @@ class TrainerUI(UIBase):
resolution_height,
allow_custom_value=True,
interactive=True)
-
- with gr.Column(scale=2, min_width=0):
self.resolution_width = gr.Dropdown(
choices=self.h_level_dict[
self.resolution_height.value],
@@ -225,102 +251,79 @@ class TrainerUI(UIBase):
resolution_width,
allow_custom_value=True,
interactive=True)
-
- with gr.Row():
- with gr.Accordion(label=self.component_names.
- resolution_param,
- open=False):
- self.enable_resolution_bucket = gr.Checkbox(
- value=False,
- container=True,
- interactive=True,
- label=self.component_names.
- enable_resolution_bucket)
- with gr.Column(
- visible=self.enable_resolution_bucket.
+ with gr.Box():
+ self.enable_resolution_bucket = gr.Checkbox(
+ value=False,
+ container=True,
+ interactive=True,
+ label=self.component_names.enable_resolution_bucket,
+ info=self.component_names.enable_resolution_bucket_ins)
+ with gr.Column(visible=self.enable_resolution_bucket.
value) as self.resolution_bucket_param:
- with gr.Row():
- self.min_bucket_resolution = gr.Number(
- label=self.component_names.
- min_bucket_resolution,
- value=self.para_data.get(
- 'min_bucket_resolution', 256),
- interactive=True)
- self.max_bucket_resolution = gr.Number(
- label=self.component_names.
- max_bucket_resolution,
- value=self.para_data.get(
- 'max_bucket_resolution', 1024),
- interactive=True)
- with gr.Row():
- self.bucket_resolution_steps = gr.Number(
- label=self.component_names.
- bucket_resolution_steps,
- value=self.para_data.get(
- 'bucket_resolution_steps', 64),
- interactive=True)
+ with gr.Row():
+ self.min_bucket_resolution = gr.Number(
+ label=self.component_names.
+ min_bucket_resolution,
+ value=self.para_data.get(
+ 'min_bucket_resolution', 256),
+ interactive=True)
+ self.max_bucket_resolution = gr.Number(
+ label=self.component_names.
+ max_bucket_resolution,
+ value=self.para_data.get(
+ 'max_bucket_resolution', 1024),
+ interactive=True)
+ with gr.Row(equal_height=True):
+ self.bucket_resolution_steps = gr.Number(
+ label=self.component_names.
+ bucket_resolution_steps,
+ value=self.para_data.get(
+ 'bucket_resolution_steps', 64),
+ interactive=True)
+ with gr.Box():
self.bucket_no_upscale = gr.Checkbox(
value=False,
container=True,
interactive=True,
- label=self.component_names.
- bucket_no_upscale)
+ label=self.component_names.bucket_no_upscale,
+ info=self.component_names.bucket_no_upscale_ins)
with gr.Row():
- with gr.Column(scale=1, min_width=0):
- self.train_epoch = gr.Number(
- label=self.component_names.train_epoch,
- value=self.para_data.get('EPOCHS', 10),
- precision=0,
- interactive=True)
- with gr.Column(scale=1, min_width=0):
- self.learning_rate = gr.Number(
- label=self.component_names.learning_rate,
- value=self.para_data.get(
- 'LEARNING_RATE', 0.0001),
- interactive=True)
+ self.train_epoch = gr.Number(
+ label=self.component_names.train_epoch,
+ value=self.para_data.get('EPOCHS', 10),
+ precision=0,
+ interactive=True)
+ self.learning_rate = gr.Number(
+ label=self.component_names.learning_rate,
+ value=self.para_data.get(
+ 'LEARNING_RATE', 0.0001),
+ interactive=True)
with gr.Row():
- with gr.Column(scale=1, min_width=0):
- self.save_interval = gr.Number(
- label=self.component_names.save_interval,
- value=self.para_data.get(
- 'SAVE_INTERVAL', 10),
- precision=0,
- interactive=True)
- with gr.Column(scale=1, min_width=0):
- self.train_batch_size = gr.Number(
- label=self.component_names.
- train_batch_size,
- value=self.para_data.get(
- 'TRAIN_BATCH_SIZE', 4),
- precision=0,
- interactive=True)
+ self.save_interval = gr.Number(
+ label=self.component_names.save_interval,
+ value=self.para_data.get(
+ 'SAVE_INTERVAL', 10),
+ precision=0,
+ interactive=True)
+ self.train_batch_size = gr.Number(
+ label=self.component_names.
+ train_batch_size,
+ value=self.para_data.get(
+ 'TRAIN_BATCH_SIZE', 4),
+ precision=0,
+ interactive=True)
with gr.Row():
- with gr.Column(scale=1, min_width=0):
- self.prompt_prefix = gr.Text(
- label=self.component_names.prompt_prefix,
- value=self.para_data.get(
- 'TRAIN_PREFIX', ''))
- with gr.Column(scale=1, min_width=0):
- self.replace_keywords = gr.Text(
- label=self.component_names.
- replace_keywords,
- value='')
-
- with gr.Row():
- with gr.Column(scale=1, min_width=0):
- self.eval_prompts = gr.Dropdown(
- value=None,
- choices=self.train_para_data.get(
- 'EVAL_PROMPTS', []),
- label=self.component_names.eval_prompts,
- interactive=True,
- multiselect=True,
- allow_custom_value=True,
- max_choices=20)
-
+ self.prompt_prefix = gr.Text(
+ label=self.component_names.prompt_prefix,
+ value=self.para_data.get(
+ 'TRAIN_PREFIX', ''))
+ self.replace_keywords = gr.Text(
+ label=self.component_names.
+ replace_keywords,
+ value='')
with gr.Row(variant='panel', equal_height=True):
with gr.Box():
with gr.Row(variant='panel', equal_height=True):
@@ -345,33 +348,64 @@ class TrainerUI(UIBase):
self.examples = gr.Examples(
examples=[
[
- self.component_names.data_type_choices[0],
+ self.component_names.data_source_choices[0],
+ self.component_names.data_type_map[
+ self.component_names.data_type_value],
'',
'https://www.modelscope.cn/api/v1/models/iic/scepter/repo?Revision=master&FilePath=datasets/3D_example_csv.zip', # noqa
+ '3D_example_csv',
''
],
[
- self.component_names.data_type_choices[1], 'damo',
- 'style_custom_dataset', '3D'
+ self.component_names.data_source_choices[1],
+ self.component_names.data_type_map[
+ self.component_names.data_type_value], 'damo',
+ 'style_custom_dataset', 'style_custom_dataset',
+ '3D'
]
],
inputs=[
- self.data_type, self.ms_data_space, self.ms_data_name,
+ self.data_source, self.data_type, self.ms_data_space,
+ self.ms_data_name, self.ori_data_name,
self.ms_data_subname
])
with gr.Row(variant='panel', equal_height=True):
self.training_button = gr.Button()
+ def get_trans_dataset_type(self, dataset_type):
+ reverse_data_type = {
+ v: k
+ for k, v in self.component_names.data_type_map.items()
+ }
+ trans_dataset_type = reverse_data_type[dataset_type]
+ return trans_dataset_type
+
def set_callbacks(self, inference_ui, manager):
- def change_data_type(data_type):
- if data_type == self.component_names.data_type_choices[0]:
+ def change_data_source(data_source):
+ if data_source in [
+ self.component_names.data_source_choices[0],
+ self.component_names.data_source_choices[2]
+ ]:
return gr.Box(visible=False)
- elif data_type == self.component_names.data_type_choices[1]:
+ elif data_source == self.component_names.data_source_choices[1]:
return gr.Box(visible=True)
+ self.data_source.change(fn=change_data_source,
+ inputs=[self.data_source],
+ outputs=[self.ms_data_box],
+ queue=False)
+
+ def change_data_type(data_type):
+ data_type_key = self.get_trans_dataset_type(data_type)
+ if data_type_key in self.component_names.data_task_map and self.component_names.data_task_map[
+ data_type_key] is not None:
+ return self.component_names.data_task_map[data_type_key]
+ else:
+ return self.para_data.get('model_default', '') # gr.Dropdown()
+
self.data_type.change(fn=change_data_type,
inputs=[self.data_type],
- outputs=[self.ms_data_box],
+ outputs=[self.base_model],
queue=False)
self.work_name_button.click(fn=get_work_name,
@@ -383,6 +417,16 @@ class TrainerUI(UIBase):
outputs=[self.work_name],
queue=False)
+ # def change_eval_image_by_task(task):
+ # # ret_data.get('EVAL_PROMPTS', eval_prompts)
+ # visible = True if task == 'Image Editing' else False
+ # return gr.Image(interactive=visible, visible=visible), \
+ # gr.Dropdown(choices=, multiselect=False)
+ # self.task.change(fn=change_eval_image_by_task,
+ # inputs=[self.task],
+ # outputs=[self.eval_image],
+ # queue=False)
+
def change_train_value_by_model(base_model):
'''
Changes to the base model will affect the training parameters,
@@ -397,6 +441,11 @@ class TrainerUI(UIBase):
Prefix for Saved Model:
'''
ret_data = get_values_by_model(self.BASE_CFG_VALUE, base_model)
+ task = ret_data.get('TASK', 'Text2Image')
+ is_edit = task == 'Image Editing'
+ eval_prompts = [] if is_edit else self.train_para_data.get(
+ 'EVAL_PROMPTS', [])
+ eval_prompts = ret_data.get('EVAL_PROMPTS', eval_prompts)
return ret_data.get('EPOCHS', 10), \
ret_data.get('LEARNING_RATE', 0.0001), \
ret_data.get('SAVE_INTERVAL', 10), \
@@ -411,19 +460,29 @@ class TrainerUI(UIBase):
interactive=True), \
gr.Dropdown(value=ret_data.get('RESOLUTION', 1024)[1],
choices=self.h_level_dict[ret_data.get('RESOLUTION', 1024)[0]],
- interactive=True)
+ interactive=True), \
+ gr.Image(visible=is_edit, interactive=is_edit, value=None), \
+ gr.Dropdown(choices=eval_prompts, multiselect=not is_edit)
+ # gr.Dropdown(value=task)
- self.base_model.change(fn=change_train_value_by_model,
- inputs=[self.base_model],
- outputs=[
- self.train_epoch, self.learning_rate,
- self.save_interval, self.train_batch_size,
- self.prompt_prefix,
- self.base_model_revision, self.tuner_name,
- self.resolution_height,
- self.resolution_width
- ],
- queue=False)
+ self.base_model.change(
+ fn=change_train_value_by_model,
+ inputs=[self.base_model],
+ outputs=[
+ self.train_epoch,
+ self.learning_rate,
+ self.save_interval,
+ self.train_batch_size,
+ self.prompt_prefix,
+ self.base_model_revision,
+ self.tuner_name,
+ self.resolution_height,
+ self.resolution_width,
+ self.eval_image,
+ self.eval_prompts,
+ # self.task
+ ],
+ queue=False)
#
def change_train_value_by_model_version(base_model,
@@ -516,7 +575,7 @@ class TrainerUI(UIBase):
self.save_interval, self.train_batch_size,
self.prompt_prefix, self.resolution_height,
self.resolution_width, self.lora_param,
- self.text_lora_param, self.sce_param
+ self.text_lora_param, self.sce_ratio
],
queue=False)
@@ -552,16 +611,16 @@ class TrainerUI(UIBase):
],
queue=False)
- def run_train(work_name, data_type, ori_data_name, ms_data_space,
- ms_data_name, ms_data_subname, base_model,
+ def run_train(work_name, data_source, data_type, ori_data_name,
+ ms_data_space, ms_data_name, ms_data_subname, base_model,
base_model_revision, tuner_name, resolution_height,
resolution_width, train_epoch, learning_rate,
save_interval, train_batch_size, prompt_prefix,
- replace_keywords, push_to_hub, eval_prompts, lora_alpha,
- lora_rank, text_lora_alpha, text_lora_rank, sce_ratio,
- enable_resolution_bucket, min_bucket_resolution,
- max_bucket_resolution, bucket_resolution_steps,
- bucket_no_upscale):
+ replace_keywords, push_to_hub, eval_prompts, eval_image,
+ lora_alpha, lora_rank, text_lora_alpha, text_lora_rank,
+ sce_ratio, enable_resolution_bucket,
+ min_bucket_resolution, max_bucket_resolution,
+ bucket_resolution_steps, bucket_no_upscale):
# Check Cuda
if not torch.cuda.is_available() and not self.is_debug:
raise gr.Error(self.component_names.training_err1)
@@ -579,12 +638,14 @@ class TrainerUI(UIBase):
with open(f'.flag/{work_name}.tmp', 'w') as f:
f.write('new line.')
# save params
+ exclude_keys = ['exclude_keys', 'ms_data_name']
with open(os.path.join(work_dir, 'params.json'), 'w') as f_out:
json.dump(
{
key: val
for key, val in locals().items()
if is_basic_or_container_type(val)
+ and key not in exclude_keys
},
f_out,
ensure_ascii=False)
@@ -613,7 +674,7 @@ class TrainerUI(UIBase):
int(resolution_height),
int(resolution_width)
]
- if data_type in self.component_names.data_type_choices:
+ if data_source in self.component_names.data_source_choices:
if ms_data_name.startswith(
'http') or ms_data_name.endswith('zip'):
work_data_dir = os.path.join(work_dir, 'data')
@@ -724,7 +785,18 @@ class TrainerUI(UIBase):
int(resolution_height),
int(resolution_width)
]
- data_cfg['PROMPT_DATA'] = eval_prompts
+ if eval_image is not None:
+ ep = eval_prompts
+ ep = '' if ep is None else ep
+ ep = ep[0] if isinstance(ep, list) else ep
+
+ eval_image_path = os.path.join(work_dir, 'eval_image.jpg')
+ with FS.put_to(eval_image_path) as local_file:
+ eval_image.save(local_file)
+ data_cfg['PROMPT_DATA'] = [ep + '#;#' + eval_image_path]
+ data_cfg['FIELDS'] = ['prompt', 'src_path']
+ else:
+ data_cfg['PROMPT_DATA'] = eval_prompts
return data_cfg
def prepare_train_config():
@@ -837,15 +909,16 @@ class TrainerUI(UIBase):
self.training_button.click(
run_train,
inputs=[
- self.work_name, self.data_type, self.ori_data_name,
- self.ms_data_space, self.ms_data_name, self.ms_data_subname,
- self.base_model, self.base_model_revision, self.tuner_name,
+ self.work_name, self.data_source, self.data_type,
+ self.ori_data_name, self.ms_data_space, self.ms_data_name,
+ self.ms_data_subname, self.base_model,
+ self.base_model_revision, self.tuner_name,
self.resolution_height, self.resolution_width,
self.train_epoch, self.learning_rate, self.save_interval,
self.train_batch_size, self.prompt_prefix,
self.replace_keywords, self.push_to_hub, self.eval_prompts,
- self.lora_alpha, self.lora_rank, self.text_lora_alpha,
- self.text_lora_rank, self.sce_ratio,
+ self.eval_image, self.lora_alpha, self.lora_rank,
+ self.text_lora_alpha, self.text_lora_rank, self.sce_ratio,
self.enable_resolution_bucket, self.min_bucket_resolution,
self.max_bucket_resolution, self.bucket_resolution_steps,
self.bucket_no_upscale
diff --git a/scepter/studio/tuner_manager/manager_ui/browser_ui.py b/scepter/studio/tuner_manager/manager_ui/browser_ui.py
index b0f21bc..271f4d9 100644
--- a/scepter/studio/tuner_manager/manager_ui/browser_ui.py
+++ b/scepter/studio/tuner_manager/manager_ui/browser_ui.py
@@ -1,28 +1,42 @@
# -*- coding: utf-8 -*-
# Copyright (c) Alibaba, Inc. and its affiliates.
import os
+import shutil
from collections import OrderedDict
import gradio as gr
-from swift import push_to_hub
+from huggingface_hub import HfApi, snapshot_download
import scepter
from scepter.modules.utils.config import Config
from scepter.modules.utils.file_system import FS
+from scepter.modules.utils.module_transform import \
+ convert_tuner_civitai_to_scepter
from scepter.studio.tuner_manager.manager_ui.component_names import \
TunerManagerNames
from scepter.studio.tuner_manager.utils.dict import (delete_2level_dict,
update_2level_dict)
-from scepter.studio.tuner_manager.utils.path import is_valid_filename
+from scepter.studio.tuner_manager.utils.path import (
+ is_valid_filename, is_valid_huggingface_filename,
+ is_valid_modelscope_filename)
from scepter.studio.tuner_manager.utils.yaml import save_yaml
from scepter.studio.utils.uibase import UIBase
+from swift import push_to_hub
+
+
+def wget_file(file_url, save_file):
+ if 'oss' in file_url:
+ file_url = file_url.split('?')[0]
+ local_path, _ = FS.map_to_local(save_file)
+ res = os.popen(f"wget -c '{file_url}' -O '{local_path}'")
+ res.readlines()
+ FS.put_object_from_local_file(local_path, save_file)
+ return save_file, res
class BrowserUI(UIBase):
def __init__(self, cfg, language='en'):
self.work_dir = cfg.WORK_DIR
- self.train_dir = cfg.SELF_TRAIN_DIR
- self.base_model_tuner_methods = cfg.BASE_MODEL_VERSION
self.yaml = os.path.join(self.work_dir, cfg.TUNER_LIST_YAML)
if not FS.exists(self.yaml):
self.saved_tuners = []
@@ -37,13 +51,22 @@ class BrowserUI(UIBase):
self.language = language
self.export_folder = os.path.join(self.work_dir, cfg.EXPORT_DIR)
self.readme_file = cfg.README_EN if self.language == 'en' else cfg.README_ZH
- self.readme_file = os.path.join(os.path.dirname(scepter.dirname), self.readme_file)
+ self.readme_file = os.path.join(os.path.dirname(scepter.dirname),
+ self.readme_file)
+ self.base_model_tuner_methods = cfg.BASE_MODEL_VERSION
+ self.base_model_tuner_methods_map = {}
+ for base_model_item in self.base_model_tuner_methods:
+ self.base_model_tuner_methods_map[
+ base_model_item.BASE_MODEL] = base_model_item.TUNER_TYPE
def saved_tuners_to_category(self):
self.saved_tuners_category = OrderedDict()
for tuner in self.saved_tuners:
first_level = f"{tuner['BASE_MODEL']}-{tuner['TUNER_TYPE']}"
second_level = f"{tuner['NAME']}"
+ local_tuner_work_dir, _ = FS.map_to_local(tuner['MODEL_PATH'])
+ if not os.path.exists(local_tuner_work_dir):
+ FS.get_dir_to_local_dir(tuner['MODEL_PATH'])
update_2level_dict(self.saved_tuners_category,
{first_level: {
second_level: tuner
@@ -102,9 +125,9 @@ class BrowserUI(UIBase):
elem_classes='type_row',
elem_id='delete_button',
visible=False)
- self.model_upload = gr.Button(
- label='ModelScope Upload',
- value=self.component_names.upload,
+ self.model_export = gr.Button(
+ label='Model Export',
+ value=self.component_names.model_export,
elem_classes='type_row',
elem_id='save_button',
visible=True)
@@ -115,30 +138,32 @@ class BrowserUI(UIBase):
elem_classes='type_row',
elem_id='refresh_button',
visible=True)
- self.model_download = gr.Button(
- label='ModelScope Download',
- value=self.component_names.download,
+ self.model_import = gr.Button(
+ label='Model Import',
+ value=self.component_names.model_import,
elem_classes='type_row',
elem_id='save_button',
visible=True)
- with gr.Box(visible=False) as self.upload_setting:
+ with gr.Box(visible=False) as self.export_setting:
gr.Markdown(self.component_names.export_desc)
with gr.Column(variant='panel'):
with gr.Row(equal_height=True):
with gr.Column(scale=9, min_width=0):
- self.import_src = gr.Dropdown(
- choices=['modelscope'],
+ self.export_to = gr.Dropdown(
+ choices=['modelscope', 'huggingface'],
value='modelscope',
label=None,
show_label=False)
with gr.Column(scale=1, min_width=0):
- self.ms_upload_close = gr.Button(
- label='Close MS Upload',
+ self.export_close = gr.Button(
+ label='Close Export',
value=self.component_names.close,
elem_classes='type_row',
elem_id='save_button')
- with gr.Row(equal_height=True):
+
+ with gr.Row(
+ equal_height=True) as self.ms_export_setting:
with gr.Column(scale=3, min_width=0):
self.ms_sdk = gr.Text(
label=self.component_names.ms_sdk,
@@ -147,39 +172,71 @@ class BrowserUI(UIBase):
placeholder='ModelScope SDK Token',
value='')
with gr.Column(scale=3, min_width=0):
- self.ms_upload_username = gr.Text(
+ self.ms_export_username = gr.Text(
label=self.component_names.ms_username,
show_label=False,
container=False,
placeholder='ModelScope UserName',
value='')
with gr.Column(scale=3, min_width=0):
- self.model_private = gr.Checkbox(
- label=self.component_names.model_private,
+ self.ms_model_private = gr.Checkbox(
+ label=self.component_names.
+ ms_model_private,
value=False)
with gr.Column(scale=1, min_width=0):
- self.ms_upload_submit = gr.Button(
+ self.ms_export_submit = gr.Button(
label='Submit MS',
- value=self.component_names.ms_submit,
+ value=self.component_names.submit,
elem_classes='type_row',
elem_id='save_button')
- with gr.Box(visible=False) as self.download_setting:
+ with gr.Row(equal_height=True,
+ visible=False) as self.hf_export_setting:
+ with gr.Column(scale=3, min_width=0):
+ self.hf_sdk = gr.Text(
+ label=self.component_names.hf_sdk,
+ show_label=False,
+ container=False,
+ placeholder='HuggingFace SDK Token',
+ value='')
+ with gr.Column(scale=3, min_width=0):
+ self.hf_export_username = gr.Text(
+ label=self.component_names.hf_username,
+ show_label=False,
+ container=False,
+ placeholder='HuggingFace UserName',
+ value='')
+ with gr.Column(scale=3, min_width=0):
+ self.hf_model_private = gr.Checkbox(
+ label=self.component_names.
+ hf_model_private,
+ value=False)
+ with gr.Column(scale=1, min_width=0):
+ self.hf_export_submit = gr.Button(
+ label='Submit HF',
+ value=self.component_names.submit,
+ elem_classes='type_row',
+ elem_id='save_button')
+
+ with gr.Box(visible=False) as self.import_setting:
gr.Markdown(self.component_names.import_desc)
with gr.Column(variant='panel'):
with gr.Row(equal_height=True):
with gr.Column(scale=9, min_width=0):
- self.import_src = gr.Dropdown(
- choices=['modelscope', 'local'],
+ self.import_from = gr.Dropdown(
+ choices=[
+ 'modelscope', 'huggingface', 'local'
+ ],
value='modelscope',
label=None,
show_label=False)
with gr.Column(scale=1, min_width=0):
- self.ms_download_close = gr.Button(
- label='Close MS Download',
+ self.import_close = gr.Button(
+ label='Close Download',
value=self.component_names.close,
elem_classes='type_row',
elem_id='save_button')
+
with gr.Row(
equal_height=True) as self.ms_import_setting:
with gr.Column(scale=4.5, min_width=0):
@@ -190,25 +247,62 @@ class BrowserUI(UIBase):
placeholder='ModelScope Model Path',
value='')
with gr.Column(scale=4.5, min_width=0):
- self.ms_download_username = gr.Text(
+ self.ms_import_username = gr.Text(
label=self.component_names.ms_username,
show_label=False,
container=False,
placeholder='ModelScope UserName',
value='')
with gr.Column(scale=1, min_width=0):
- self.ms_download_submit = gr.Button(
+ self.ms_import_submit = gr.Button(
label='Submit MS',
- value=self.component_names.ms_submit,
+ value=self.component_names.submit,
elem_classes='type_row',
elem_id='save_button')
+
+ with gr.Row(equal_height=True,
+ visible=False) as self.hf_import_setting:
+ with gr.Column(scale=3, min_width=0):
+ self.hf_modelid = gr.Text(
+ label=self.component_names.hf_modelid,
+ show_label=False,
+ container=False,
+ placeholder='HuggingFace Model Path',
+ value='')
+ with gr.Column(scale=3, min_width=0):
+ self.hf_import_username = gr.Text(
+ label=self.component_names.hf_username,
+ show_label=False,
+ container=False,
+ placeholder='HuggingFace UserName',
+ value='')
+ with gr.Column(scale=3, min_width=0):
+ self.hf_sdk2 = gr.Text(
+ label=self.component_names.hf_sdk,
+ show_label=False,
+ container=False,
+ placeholder='HuggingFace SDK Token',
+ value='')
+ with gr.Column(scale=1, min_width=0):
+ self.hf_import_submit = gr.Button(
+ label='Submit HF',
+ value=self.component_names.submit,
+ elem_classes='type_row',
+ elem_id='save_button')
+
with gr.Row(visible=False, equal_height=True
) as self.local_import_setting:
- with gr.Column(scale=2, min_width=0):
+ with gr.Column(scale=1, min_width=0):
self.file_path = gr.File(
label=self.component_names.zip_file,
min_width=0,
- file_types=['.zip'],
+ file_types=['.zip', '.safetensors'],
+ elem_classes='upload_zone')
+ with gr.Column(scale=1, min_width=0):
+ self.file_url = gr.Text(
+ label=self.component_names.file_url,
+ min_width=0,
+ show_label=True,
elem_classes='upload_zone')
with gr.Column(scale=1, min_width=0):
self.upload_base_models = gr.Dropdown(
@@ -240,59 +334,72 @@ class BrowserUI(UIBase):
value='')
self.local_upload_bt = gr.Button(
label='Submit Local Model',
- value=self.component_names.ms_submit,
+ value=self.component_names.submit,
elem_classes='type_row',
elem_id='upload_button')
def check_new_name(self, tuner_name):
if tuner_name.strip() == '':
- return False, f"'{tuner_name}' is whitespace! Only support 'a-z', 'A-Z', '0-9' and '_'."
+ return False, f"'{tuner_name}' is whitespace! Only support 'a-z', 'A-Z', '0-9', '@', '.', '-' and '_'."
if not is_valid_filename(tuner_name):
- return False, f"'{tuner_name}' is not a valid tuner name! Only support 'a-z', 'A-Z', '0-9' and '_'."
+ return False, (
+ f"'{tuner_name}' is not a valid tuner name! "
+ f"Only support 'a-z', 'A-Z', '0-9', '@', '.', '-' and '_'.")
for tuner in self.saved_tuners:
if tuner_name == tuner['NAME']:
return False, f"Tuner name '{tuner_name}' has been taken!"
return True, 'legal'
- def save_tuner(self, src_path, sub_dir, tuner_name, tuner_desc,
- tuner_example, tuner_prompt_example):
+ def save_tuner_file_params(self, src_path, sub_dir, tuner_name, tuner_desc,
+ tuner_example, tuner_prompt_example):
tar_path = os.path.join(self.work_dir, sub_dir)
if not FS.exists(tar_path):
FS.make_dir(tar_path)
tar_path = os.path.join(tar_path, tuner_name)
-
+ if FS.exists(tar_path):
+ raise gr.Error(self.component_names.same_name)
+ local_model_dir, _ = FS.map_to_local(tar_path)
FS.put_dir_from_local_dir(src_path, tar_path)
-
# save image
tuner_example_path = None
if tuner_example is not None:
from PIL import Image
tuner_example_path = os.path.join(tar_path, 'image.jpg')
- if not os.path.exists(tuner_example_path):
+ local_example_path = os.path.join(local_model_dir, 'image.jpg')
+ if not FS.exists(tuner_example_path):
tuner_example = Image.fromarray(tuner_example)
- with FS.put_to(tuner_example_path) as local_path:
- tuner_example.save(local_path)
+ tuner_example.save(local_example_path)
+ FS.put_object_from_local_file(local_example_path,
+ tuner_example_path)
# save param
enable_share = True
split_path = src_path.split('/')
- if split_path[-2] == 'checkpoints':
+ if len(split_path) > 1 and split_path[-2] == 'checkpoints':
src_dir = '/'.join(split_path[:-2])
ckpt_name = split_path[-1]
meta_read = f'{src_dir}/meta_{ckpt_name}.yaml'
+ meta_local = f'{local_model_dir}/params.yaml'
meta_save = f'{tar_path}/params.yaml'
else:
meta_read = f'{src_path}/params.yaml'
+ meta_local = f'{local_model_dir}/params.yaml'
meta_save = f'{tar_path}/params.yaml'
if os.path.exists(meta_read):
meta = Config(cfg_file=meta_read)
- with FS.put_to(meta_save) as local_path:
- enable_share = Config.get_plain_cfg(meta.get('IS_SHARE', True))
- params = Config.get_plain_cfg(meta.get('PARAMS', {}))
- params['work_dir'] = ''
- params['work_name'] = ''
- save_yaml({'PARAMS': params}, local_path)
+ enable_share = Config.get_plain_cfg(meta.get('IS_SHARE', True))
+ params = Config.get_plain_cfg(meta.get('PARAMS', {}))
+ params['work_dir'] = ''
+ params['work_name'] = ''
+ save_yaml(
+ {
+ 'PARAMS':
+ params,
+ 'DESCRIPTION':
+ tuner_desc if len(tuner_desc) > 0 else tuner_name
+ }, meta_local)
+ FS.put_object_from_local_file(meta_local, meta_save)
# rewrite readme
with open(self.readme_file, 'r') as f:
@@ -321,17 +428,81 @@ class BrowserUI(UIBase):
meta['PARAMS'].get('data_type', ''))
rc = rc.replace(r'{MS_DATA_SPACE}',
meta['PARAMS'].get('ms_data_space', ''))
- rc = rc.replace(r'{MS_DATA_NAME}',
- meta['PARAMS'].get('ms_data_name', ''))
+ rc = rc.replace(
+ r'{MS_DATA_NAME}',
+ meta['PARAMS']['ms_data_name'] if 'ms_data_name'
+ in meta['PARAMS'] else meta['PARAMS'].get('ori_data_name', ''))
rc = rc.replace(r'{MS_DATA_SUBNAME}',
meta['PARAMS'].get('ms_data_subname', ''))
-
- with FS.put_to(os.path.join(tar_path, 'README.md')) as local_path:
- with open(local_path, 'w') as f:
- f.write(rc)
-
+ local_readme_file = os.path.join(local_model_dir, 'README.md')
+ with open(local_readme_file, 'w') as f:
+ f.write(rc)
+ FS.put_object_from_local_file(local_readme_file,
+ os.path.join(tar_path, 'README.md'))
+ # repull to a official dir
+ # FS.get_dir_to_local_dir(tar_path)
return tar_path, tuner_example_path, enable_share
+ def save_tuner(self, manager, tuner_name, new_name, tuner_desc,
+ tuner_example, tuner_prompt_example, base_model,
+ tuner_type):
+ is_legal, msg = self.check_new_name(new_name)
+ if not is_legal:
+ raise gr.Error('Save failed because ' + msg)
+
+ sub_dir = f'{base_model}-{tuner_type}'
+ if hasattr(manager, 'self_train'):
+ self_train_work_dir = manager.self_train.trainer_ui.work_dir_pre
+ else:
+ self_train_work_dir = self.work_dir
+ if FS.exists(os.path.join(self_train_work_dir, '@'.join(tuner_name.split('@')[:-1]))) \
+ and len(tuner_name.split('@')[:-1]) > 0:
+ steps = tuner_name.split('@')[-1]
+ source_dir = os.path.join(self_train_work_dir,
+ '@'.join(tuner_name.split('@')[:-1]),
+ 'checkpoints', steps)
+ else:
+ source_dir = self.saved_tuners_category.get(sub_dir, {}).get(
+ tuner_name, {}).get('MODEL_PATH', '')
+ if source_dir == '':
+ raise gr.Error(self.component_names.model_err4 + tuner_name)
+
+ model_dir, tuner_example, enable_share = self.save_tuner_file_params(
+ source_dir, sub_dir, new_name, tuner_desc, tuner_example,
+ tuner_prompt_example)
+ # config info update
+ new_tuner = {
+ 'NAME': new_name,
+ 'NAME_ZH': new_name,
+ 'SOURCE': 'self_train',
+ 'DESCRIPTION': tuner_desc,
+ 'BASE_MODEL': base_model,
+ 'MODEL_PATH': model_dir,
+ 'TUNER_TYPE': tuner_type,
+ 'PROMPT_EXAMPLE': tuner_prompt_example,
+ 'ENABLE_SHARE': enable_share,
+ }
+ if tuner_example is not None:
+ new_tuner.update({'IMAGE_PATH': tuner_example.split('/')[-1]})
+ pipeline_level_modules = manager.inference.model_manage_ui.pipe_manager.pipeline_level_modules
+ if new_tuner['BASE_MODEL'] not in pipeline_level_modules:
+ raise gr.Error(self.component_names.model_err3 +
+ new_tuner['BASE_MODEL'])
+ pipeline_ins = pipeline_level_modules[new_tuner['BASE_MODEL']]
+ now_diffusion_model = f"{new_tuner['BASE_MODEL']}_{pipeline_ins.diffusion_model['name']}"
+
+ custom_tuner_choices = self.add_tuner(new_tuner, manager,
+ now_diffusion_model)
+
+ gr.Info('Successfully save tuner model!')
+
+ return (gr.update(choices=list(self.saved_tuners_category.keys()),
+ value=sub_dir),
+ gr.update(choices=list(
+ self.saved_tuners_category.get(sub_dir, {}).keys()),
+ value=new_name), gr.Text(value=new_name),
+ gr.Dropdown(choices=custom_tuner_choices))
+
def add_tuner(self, new_tuner, manager, now_diffusion_model):
self.saved_tuners.append(new_tuner)
self.saved_tuners_to_category()
@@ -433,90 +604,57 @@ class BrowserUI(UIBase):
if tuner_model is None:
# fix refresh bug
return (gr.Text(), gr.Text(), gr.Text(), gr.Text(), gr.Text(),
- gr.Image(), gr.Text(), gr.Text())
+ gr.Image(), gr.Text(), gr.Text(), gr.Text())
tuner_info = self.saved_tuners_category[diffusion_model][
tuner_model]
+ local_model_dir, _ = FS.map_to_local(tuner_info['MODEL_PATH'])
image_path = tuner_info.get('IMAGE_PATH', None)
if image_path is not None:
- image_path = FS.get_from(image_path)
+ local_image_path = os.path.join(local_model_dir, image_path)
+ if not FS.exists(local_image_path):
+ local_image_path = None
+ else:
+ local_image_path = None
return (gr.Text(value=tuner_info.get('NAME', '')),
gr.Text(value=tuner_info.get('NAME', ''),
interactive=True),
gr.Text(value=tuner_info.get('TUNER_TYPE', '')),
gr.Text(value=tuner_info.get('BASE_MODEL', '')),
gr.Text(value=tuner_info.get('DESCRIPTION', ''),
- interactive=True), gr.Image(value=image_path),
+ interactive=True),
+ gr.Image(value=local_image_path),
gr.Text(value=tuner_info.get('PROMPT_EXAMPLE', ''),
interactive=True),
gr.Text(value=tuner_info.get('MODELSCOPE_URL', ''),
+ interactive=False),
+ gr.Text(value=tuner_info.get('HUGGINGFACE_URL', ''),
interactive=False))
self.tuner_models.change(
tuner_model_change,
inputs=[self.tuner_models, self.diffusion_models],
outputs=[
- info_ui.tuner_name, info_ui.new_name, info_ui.tuner_type,
- info_ui.base_model, info_ui.tuner_desc, info_ui.tuner_example,
- info_ui.tuner_prompt_example, info_ui.ms_url
+ info_ui.tuner_name,
+ info_ui.new_name,
+ info_ui.tuner_type,
+ info_ui.base_model,
+ info_ui.tuner_desc,
+ info_ui.tuner_example,
+ info_ui.tuner_prompt_example,
+ info_ui.ms_url,
+ info_ui.hf_url,
],
queue=False)
- def save_tuner(tuner_name, new_name, tuner_desc, tuner_example,
- tuner_prompt_example, base_model, tuner_type):
- is_legal, msg = self.check_new_name(new_name)
- if not is_legal:
- gr.Info('Save failed because ' + msg)
- return (gr.Dropdown(), gr.Dropdown(), gr.Text(), gr.Dropdown())
-
- sub_dir = f'{base_model}-{tuner_type}'
- if os.path.exists(os.path.join(self.train_dir, '@'.join(tuner_name.split('@')[:-1]))) \
- and len(tuner_name.split('@')[:-1]) > 0:
- steps = tuner_name.split('@')[-1]
- model_dir = os.path.join(self.train_dir,
- '@'.join(tuner_name.split('@')[:-1]),
- 'checkpoints', steps)
- else:
- model_dir = self.saved_tuners_category.get(sub_dir, {}).get(
- tuner_name, {}).get('MODEL_PATH', '')
- if model_dir == '':
- gr.Error(self.component_names.model_err4 + tuner_name)
-
- model_dir, tuner_example, enable_share = self.save_tuner(
- model_dir, sub_dir, new_name, tuner_desc, tuner_example,
- tuner_prompt_example)
- # config info update
- new_tuner = {
- 'NAME': new_name,
- 'NAME_ZH': new_name,
- 'SOURCE': 'self_train',
- 'DESCRIPTION': tuner_desc,
- 'BASE_MODEL': base_model,
- 'MODEL_PATH': model_dir,
- 'IMAGE_PATH': tuner_example,
- 'TUNER_TYPE': tuner_type,
- 'PROMPT_EXAMPLE': tuner_prompt_example,
- 'ENABLE_SHARE': enable_share,
- }
- pipeline_level_modules = manager.inference.model_manage_ui.pipe_manager.pipeline_level_modules
- if new_tuner['BASE_MODEL'] not in pipeline_level_modules:
- gr.Error(self.component_names.model_err3 +
- new_tuner['BASE_MODEL'])
- pipeline_ins = pipeline_level_modules[new_tuner['BASE_MODEL']]
- now_diffusion_model = f"{new_tuner['BASE_MODEL']}_{pipeline_ins.diffusion_model['name']}"
-
- custom_tuner_choices = self.add_tuner(new_tuner, manager,
- now_diffusion_model)
-
- return (gr.update(choices=list(self.saved_tuners_category.keys()),
- value=sub_dir),
- gr.update(choices=list(
- self.saved_tuners_category.get(sub_dir, {}).keys()),
- value=new_name), gr.Text(value=new_name),
- gr.Dropdown(choices=custom_tuner_choices))
+ def save_tuner_func(tuner_name, new_name, tuner_desc, tuner_example,
+ tuner_prompt_example, base_model, tuner_type):
+ return self.save_tuner(manager, tuner_name, new_name, tuner_desc,
+ tuner_example, tuner_prompt_example,
+ base_model, tuner_type)
self.save_button.click(
- save_tuner,
+ save_tuner_func,
inputs=[
info_ui.tuner_name, info_ui.new_name, info_ui.tuner_desc,
info_ui.tuner_example, info_ui.tuner_prompt_example,
@@ -554,67 +692,144 @@ class BrowserUI(UIBase):
def change_visible():
return gr.update(visible=True), gr.update(visible=False)
- self.model_upload.click(
+ self.model_export.click(
fn=change_visible,
inputs=[],
- outputs=[self.upload_setting, self.download_setting],
- queue=False)
- self.model_download.click(
- fn=change_visible,
- inputs=[],
- outputs=[self.download_setting, self.upload_setting],
+ outputs=[self.export_setting, self.import_setting],
queue=False)
+ def change_visible_load_base_model_tuner():
+ base_versions = list(self.base_model_tuner_methods_map.keys())
+ default_version = base_versions[0]
+ default_tuner_type_choices = self.base_model_tuner_methods_map[
+ default_version]
+ default_tuner_type = default_tuner_type_choices[0]
+
+ return gr.update(visible=True), gr.update(visible=False), \
+ gr.Dropdown(
+ label=self.component_names.ubase_model,
+ choices=base_versions,
+ value=default_version,
+ multiselect=False,
+ interactive=True), \
+ gr.Dropdown(
+ label=self.component_names.utuner_type,
+ choices=default_tuner_type_choices,
+ value=default_tuner_type,
+ multiselect=False,
+ interactive=True
+ )
+
+ self.model_import.click(fn=change_visible_load_base_model_tuner,
+ inputs=[],
+ outputs=[
+ self.import_setting, self.export_setting,
+ self.upload_base_models,
+ self.upload_tuner_type
+ ],
+ queue=False)
+
def change_invisible():
return gr.update(visible=False)
- self.ms_upload_close.click(fn=change_invisible,
- inputs=[],
- outputs=[self.upload_setting],
- queue=False)
- self.ms_download_close.click(fn=change_invisible,
- inputs=[],
- outputs=[self.download_setting],
- queue=False)
+ self.export_close.click(fn=change_invisible,
+ inputs=[],
+ outputs=[self.export_setting],
+ queue=False)
+ self.import_close.click(fn=change_invisible,
+ inputs=[],
+ outputs=[self.import_setting],
+ queue=False)
- def change_import_source(import_src):
- if import_src == 'modelscope':
+ def change_export_source(export_to):
+ if export_to == 'modelscope':
ms_visible = True
- local_visible = False
- elif import_src == 'local':
+ hf_visible = False
+ elif export_to == 'huggingface':
+ hf_visible = True
ms_visible = False
+
+ return gr.update(visible=ms_visible), gr.update(visible=hf_visible)
+
+ self.export_to.change(
+ fn=change_export_source,
+ inputs=[self.export_to],
+ outputs=[self.ms_export_setting, self.hf_export_setting],
+ queue=False)
+
+ def change_import_source(import_from):
+ if import_from == 'modelscope':
+ ms_visible = True
+ hf_visible = False
+ local_visible = False
+ elif import_from == 'huggingface':
+ ms_visible = False
+ hf_visible = True
+ local_visible = False
+ elif import_from == 'local':
+ ms_visible = False
+ hf_visible = False
local_visible = True
return gr.update(visible=ms_visible), gr.update(
- visible=local_visible)
+ visible=hf_visible), gr.update(visible=local_visible)
- self.import_src.change(
- fn=change_import_source,
- inputs=[self.import_src],
- outputs=[self.ms_import_setting, self.local_import_setting],
- queue=False)
+ self.import_from.change(fn=change_import_source,
+ inputs=[self.import_from],
+ outputs=[
+ self.ms_import_setting,
+ self.hf_import_setting,
+ self.local_import_setting
+ ],
+ queue=False)
def push_to_modelscope(ms_sdk, username, private, base_model_name,
tuner_model_name):
+ gr.Info('Start uploading tuner model to ModelScope!')
+ if (isinstance(base_model_name, list) and len(base_model_name) == 0
+ ) or (isinstance(tuner_model_name, list)
+ and len(tuner_model_name)
+ == 0) or tuner_model_name is None or (
+ base_model_name not in self.saved_tuners_category
+ and tuner_model_name
+ not in self.saved_tuners_category[base_model_name]):
+ raise gr.Error(
+ 'Please save model first or select a valid base model name.'
+ )
tuner = self.saved_tuners_category[base_model_name][
tuner_model_name]
enable_share = tuner.get('ENABLE_SHARE', True)
if enable_share:
+ if not is_valid_modelscope_filename(tuner_model_name):
+ raise gr.Error(
+ f"'{tuner_model_name}' is not a valid tuner name for modelscope! "
+ f"Only support 'a-z', 'A-Z', '0-9', '-' and '_'. Please rename it."
+ )
repo_name = f'{username}/{tuner_model_name}'
ckpt_path = tuner['MODEL_PATH']
ms_url = f'https://www.modelscope.cn/models/{repo_name}'
-
- with open(os.path.join(ckpt_path, 'README.md'), 'r') as f:
- rc = f.read()
- rc = rc.replace(r'{MODEL_URL}', ms_url)
- rc = rc.replace(r'{USER_NAME}', username)
- with open(os.path.join(ckpt_path, 'README.md'), 'w') as f:
- f.write(rc)
+ local_ckpt_path, _ = FS.map_to_local(ckpt_path)
+ local_readme = os.path.join(local_ckpt_path, 'README.md')
+ if FS.exists(local_readme):
+ with open(local_readme, 'r') as f:
+ rc = f.read()
+ rc = rc.replace(r'{MODEL_URL}', ms_url)
+ rc = rc.replace(r'{USER_NAME}', username)
+ with open(local_readme, 'w') as f:
+ f.write(rc)
+ local_configuration = os.path.join(local_ckpt_path,
+ 'configuration.json')
+ if not FS.exists(local_configuration):
+ with open(local_configuration, 'w') as f:
+ f.write('{}')
push_status = push_to_hub(repo_name,
- ckpt_path,
+ local_ckpt_path,
token=ms_sdk,
private=private)
+ if FS.exists(local_readme):
+ FS.put_object_from_local_file(
+ local_readme, os.path.join(ckpt_path, 'README.md'))
if push_status:
update_items = {'MODELSCOPE_URL': ms_url}
self.update_tuner_info(base_model_name, tuner_model_name,
@@ -622,59 +837,69 @@ class BrowserUI(UIBase):
gr.Info(
'The tuner model has been uploaded to ModelScope Successfully!'
)
- return update_items['MODELSCOPE_URL']
+ return update_items['MODELSCOPE_URL'], gr.update(
+ visible=False)
else:
- gr.Info(
+ raise gr.Error(
'Error: The model failed to be uploaded to ModelScope!'
)
- return ''
else:
- gr.Info(
+ raise gr.Error(
'Error: The model is not allowed to be shared to ModelScope!'
)
- return ''
- self.ms_upload_submit.click(fn=push_to_modelscope,
- inputs=[
- self.ms_sdk, self.ms_upload_username,
- self.model_private,
- self.diffusion_models,
- self.tuner_models
- ],
- outputs=[info_ui.ms_url],
- queue=True)
+ self.ms_export_submit.click(
+ fn=push_to_modelscope,
+ inputs=[
+ self.ms_sdk, self.ms_export_username, self.ms_model_private,
+ self.diffusion_models, self.tuner_models
+ ],
+ outputs=[info_ui.ms_url, self.export_setting],
+ queue=True)
def pull_from_modelscope(modelid, username):
- tar_path = os.path.join(self.work_dir, 'modelscope')
+ gr.Info('Start pulling tuner model from ModelScope to Local!')
src_path = f'ms://{username}/{modelid}'
- FS.get_dir_to_local_dir(src_path, tar_path)
+ local_work_dir, _ = FS.map_to_local(src_path)
+ FS.get_dir_to_local_dir(src_path, local_work_dir)
+
gr.Info(
'The tuner model has been downloaded from ModelScope Successfully!'
)
- tar_path = f'{tar_path}/{username}/{modelid}'
- meta_file = f'{tar_path}/params.yaml'
+ #
+ meta_file = f'{local_work_dir}/{username}/{modelid}/params.yaml'
meta = Config(cfg_file=meta_file)
base_model = meta['PARAMS']['base_model_revision']
tuner_type = meta['PARAMS']['tuner_name']
- tuner_prompt_example = meta['PARAMS']['eval_prompts'][0]
+ tuner_prompt_example = meta['PARAMS']['eval_prompts']
+ if isinstance(tuner_prompt_example, list):
+ tuner_prompt_example = tuner_prompt_example[0]
tuner_category = f'{base_model}-{tuner_type}'
new_name = f'modelscope@{username}@{modelid}'
+ tar_path = os.path.join(
+ self.work_dir,
+ f'{tuner_category}/modelscope_{username}_{modelid}')
+ FS.put_dir_from_local_dir(f'{local_work_dir}/{username}/{modelid}',
+ tar_path)
+ if os.path.exists(local_work_dir):
+ shutil.rmtree(local_work_dir)
+
new_tuner = {
'NAME': new_name,
'NAME_ZH': new_name,
'SOURCE': 'modelscope',
- 'DESCRIPTION': '',
+ 'DESCRIPTION': meta.get('DESCRIPTION', ''),
'BASE_MODEL': base_model,
'MODEL_PATH': tar_path,
- 'IMAGE_PATH': f'{tar_path}/image.jpg',
+ 'IMAGE_PATH': 'image.jpg',
'TUNER_TYPE': tuner_type,
'PROMPT_EXAMPLE': tuner_prompt_example
}
pipeline_level_modules = manager.inference.model_manage_ui.pipe_manager.pipeline_level_modules
if new_tuner['BASE_MODEL'] not in pipeline_level_modules:
- gr.Error(self.component_names.model_err3 +
- new_tuner['BASE_MODEL'])
+ raise gr.Error(self.component_names.model_err3 +
+ new_tuner['BASE_MODEL'])
pipeline_ins = pipeline_level_modules[new_tuner['BASE_MODEL']]
now_diffusion_model = f"{new_tuner['BASE_MODEL']}_{pipeline_ins.diffusion_model['name']}"
@@ -695,26 +920,192 @@ class BrowserUI(UIBase):
self.saved_tuners_category.get(tuner_category,
{}).keys()),
value=new_name), gr.Text(value=new_name),
- gr.Dropdown(choices=custom_tuner_choices))
+ gr.Dropdown(choices=custom_tuner_choices),
+ gr.update(visible=False))
- self.ms_download_submit.click(
+ self.ms_import_submit.click(
fn=pull_from_modelscope,
inputs=[
self.ms_modelid,
- self.ms_download_username,
+ self.ms_import_username,
],
outputs=[
self.diffusion_models, self.tuner_models, info_ui.tuner_name,
- manager.inference.tuner_ui.custom_tuner_model
+ manager.inference.tuner_ui.custom_tuner_model,
+ self.import_setting
+ ],
+ queue=True)
+
+ def push_to_huggingface(sdk, username, private, base_model_name,
+ tuner_model_name):
+ gr.Info('Start uploading tuner model to HuggingFace!')
+ if (isinstance(base_model_name, list) and len(base_model_name) == 0
+ ) or (isinstance(tuner_model_name, list)
+ and len(tuner_model_name)
+ == 0) or tuner_model_name is None or (
+ base_model_name not in self.saved_tuners_category
+ and tuner_model_name
+ not in self.saved_tuners_category[base_model_name]):
+ raise gr.Error(
+ 'Please save model first or select a valid base model name.'
+ )
+ tuner = self.saved_tuners_category[base_model_name][
+ tuner_model_name]
+
+ enable_share = tuner.get('ENABLE_SHARE', True)
+ if enable_share:
+ if not is_valid_huggingface_filename(tuner_model_name):
+ raise gr.Error(
+ f"'{tuner_model_name}' is not a valid tuner name for huggingface! "
+ f"Only support 'a-z', 'A-Z', '0-9', '-' and '_'. Please rename it."
+ )
+ repo_name = f'{username}/{tuner_model_name}'
+ ckpt_path = tuner['MODEL_PATH']
+ hf_url = f'https://huggingface.co/{repo_name}'
+
+ local_readme = os.path.join(ckpt_path, 'README.md')
+ if FS.exists(local_readme):
+ with open(local_readme, 'r') as f:
+ rc = f.read()
+ rc = rc.replace(r'{MODEL_URL}', hf_url)
+ rc = rc.replace(r'{USER_NAME}', username)
+ with open(local_readme, 'w') as f:
+ f.write(rc)
+ local_configuration = os.path.join(ckpt_path,
+ 'configuration.json')
+ if not FS.exists(local_configuration):
+ with open(local_configuration, 'w') as f:
+ f.write('{}')
+
+ api = HfApi(token=sdk)
+ api.create_repo(repo_id=repo_name,
+ private=private,
+ exist_ok=True)
+ commit_info = api.upload_folder(folder_path=ckpt_path,
+ repo_id=repo_name,
+ repo_type='model',
+ commit_message='')
+ if commit_info:
+ update_items = {'HUGGINGFACE_URL': hf_url}
+ self.update_tuner_info(base_model_name, tuner_model_name,
+ update_items)
+ gr.Info(
+ 'The tuner model has been uploaded to HuggingFace Successfully!'
+ )
+ return update_items['HUGGINGFACE_URL'], gr.update(
+ visible=False)
+ else:
+ raise gr.Error(
+ 'Error: The model failed to be uploaded to HuggingFace!'
+ )
+ else:
+ raise gr.Error(
+ 'Error: The model is not allowed to be shared to HuggingFace!'
+ )
+
+ self.hf_export_submit.click(
+ fn=push_to_huggingface,
+ inputs=[
+ self.hf_sdk, self.hf_export_username, self.hf_model_private,
+ self.diffusion_models, self.tuner_models
+ ],
+ outputs=[info_ui.hf_url, self.export_setting],
+ queue=True)
+
+ def pull_from_huggingface(modelid, username, hf_sdk):
+ gr.Info('Start pulling tuner model from HuggingFace to Local!')
+ src_path = f'{username}/{modelid}'
+
+ local_tar_path = f'cache/temp_dir/{src_path}'
+ snapshot_download(repo_id=src_path,
+ repo_type='model',
+ local_dir=local_tar_path,
+ local_dir_use_symlinks=False,
+ token=hf_sdk if len(hf_sdk) > 0 else None)
+
+ meta_file = f'{local_tar_path}/params.yaml'
+ if not os.path.exists(meta_file):
+ raise gr.Error(
+ 'The tuner model failed to be downloaded from HuggingFace!'
+ )
+
+ gr.Info(
+ 'The tuner model has been downloaded from HuggingFace Successfully!'
+ )
+ meta = Config(cfg_file=meta_file)
+ base_model = meta['PARAMS']['base_model_revision']
+ tuner_type = meta['PARAMS']['tuner_name']
+ tuner_prompt_example = meta['PARAMS']['eval_prompts']
+ if isinstance(tuner_prompt_example, list):
+ tuner_prompt_example = tuner_prompt_example[0]
+ tuner_category = f'{base_model}-{tuner_type}'
+ new_name = f'huggingface@{username}@{modelid}'
+ tar_path = os.path.join(
+ self.work_dir,
+ f'{tuner_category}/huggingface_{username}_{modelid}')
+ FS.put_dir_from_local_dir(local_tar_path, tar_path)
+ if os.path.exists(local_tar_path):
+ shutil.rmtree(local_tar_path)
+
+ new_tuner = {
+ 'NAME': new_name,
+ 'NAME_ZH': new_name,
+ 'SOURCE': 'huggingface',
+ 'DESCRIPTION': meta.get('DESCRIPTION', ''),
+ 'BASE_MODEL': base_model,
+ 'MODEL_PATH': tar_path,
+ 'IMAGE_PATH': 'image.jpg',
+ 'TUNER_TYPE': tuner_type,
+ 'PROMPT_EXAMPLE': tuner_prompt_example
+ }
+ pipeline_level_modules = manager.inference.model_manage_ui.pipe_manager.pipeline_level_modules
+ if new_tuner['BASE_MODEL'] not in pipeline_level_modules:
+ raise gr.Error(self.component_names.model_err3 +
+ new_tuner['BASE_MODEL'])
+ pipeline_ins = pipeline_level_modules[new_tuner['BASE_MODEL']]
+ now_diffusion_model = f"{new_tuner['BASE_MODEL']}_{pipeline_ins.diffusion_model['name']}"
+
+ custom_tuner_choices = self.add_tuner(new_tuner, manager,
+ now_diffusion_model)
+
+ update_items = {
+ 'HUGGINGFACE_URL':
+ f'https://huggingface.co/{username}/{modelid}'
+ }
+ self.update_tuner_info(tuner_category,
+ new_name,
+ update_items=update_items)
+
+ return (gr.update(choices=list(self.saved_tuners_category.keys()),
+ value=tuner_category),
+ gr.update(choices=list(
+ self.saved_tuners_category.get(tuner_category,
+ {}).keys()),
+ value=new_name), gr.Text(value=new_name),
+ gr.Dropdown(choices=custom_tuner_choices),
+ gr.update(visible=False))
+
+ self.hf_import_submit.click(
+ fn=pull_from_huggingface,
+ inputs=[
+ self.hf_modelid,
+ self.hf_import_username,
+ self.hf_sdk2,
+ ],
+ outputs=[
+ self.diffusion_models, self.tuner_models, info_ui.tuner_name,
+ manager.inference.tuner_ui.custom_tuner_model,
+ self.import_setting
],
queue=True)
def change_tuner_type_by_model_version(base_model_revision):
- for base_model_tuner in self.base_model_tuner_methods:
- if base_model_tuner.BASE_MODEL == base_model_revision:
- return gr.Dropdown(value=base_model_tuner.TUNER_TYPE[0],
- choices=base_model_tuner.TUNER_TYPE,
- interactive=True)
+ if base_model_revision in self.base_model_tuner_methods_map:
+ base_model_tuner = self.base_model_tuner_methods_map[
+ base_model_revision]
+ return gr.Dropdown(value=base_model_tuner[0],
+ choices=base_model_tuner,
+ interactive=True)
return gr.Dropdown(value='', choices=[], interactive=True)
self.upload_base_models.change(fn=change_tuner_type_by_model_version,
@@ -722,36 +1113,105 @@ class BrowserUI(UIBase):
outputs=[self.upload_tuner_type],
queue=False)
- def upload_zip(file_path, tuner_name, base_model, tuner_type):
+ def analyse_lora(model_path, model_dir):
+ from safetensors import safe_open
+ import json
+ import torch
+ civitai_lora = {}
+ with safe_open(model_path, framework='pt', device='cpu') as f:
+ for k in f.keys():
+ civitai_lora[k] = f.get_tensor(k)
+ lora_config, swift_lora, unload_params = convert_tuner_civitai_to_scepter(
+ civitai_lora)
+ local_model_dir, _ = FS.map_to_local(model_dir)
+ os.makedirs(local_model_dir, exist_ok=True)
+ config_path = os.path.join(model_dir, '0_SwiftLoRA',
+ 'adapter_config.json')
+ module_path = os.path.join(model_dir, '0_SwiftLoRA',
+ 'adapter_model.bin')
+ with FS.put_to(config_path) as local_config:
+ with open(local_config, 'w') as fw:
+ fw.write(json.dumps(lora_config))
+ with FS.put_to(module_path) as local_module:
+ torch.save(swift_lora, local_module)
+ FS.get_dir_to_local_dir(model_dir, local_model_dir)
+ return model_dir, local_model_dir
+
+ def upload_zip(file_path, file_url, tuner_name, base_model,
+ tuner_type):
sub_dir = f'{base_model}-{tuner_type}'
- save_file = os.path.join(self.work_dir, sub_dir,
- f'{tuner_name}.zip')
- model_dir = os.path.join(self.work_dir, sub_dir, tuner_name)
- with FS.put_to(save_file) as local_zip:
- res = os.popen(f"cp '{file_path.name}' '{local_zip}'")
+ sub_work_dir = os.path.join(self.work_dir, sub_dir)
+ if not FS.exists(sub_work_dir):
+ FS.make_dir(sub_work_dir)
+ model_dir = os.path.join(sub_work_dir, tuner_name)
+ if FS.exists(model_dir):
+ raise gr.Error(self.component_names.same_name)
+ if file_url == '':
+ if file_path is None:
+ raise gr.Error(self.component_names.files_null)
+ model_input_path = file_path.name
+ else:
+ if '.zip' in file_url:
+ save_file = os.path.join(self.work_dir, sub_dir,
+ f'{tuner_name}.zip')
+ elif '.safetensors' in file_url:
+ save_file = os.path.join(self.work_dir, sub_dir,
+ f'{tuner_name}.safetensors')
+ else:
+ raise gr.Error(self.component_names.url_invalid)
+ save_file, _ = wget_file(file_url, save_file=save_file)
+ model_input_path, _ = FS.map_to_local(save_file)
+ if not FS.exists(model_input_path):
+ raise gr.Error(self.component_names.upload_file_error2)
+
+ if model_input_path.endswith('.safetensors'):
+ # analyse lora from civitai.com
+ model_dir, local_model_dir = analyse_lora(
+ model_input_path, model_dir)
+ else:
+ save_file = os.path.join(self.work_dir, sub_dir,
+ f'{tuner_name}.zip')
+ FS.put_object_from_local_file(model_input_path, save_file)
+ local_model_dir, _ = FS.map_to_local(model_dir)
+ os.makedirs(local_model_dir, exist_ok=True)
+ with FS.get_from(save_file) as local_path:
+ res = os.popen(
+ f"unzip -o '{local_path}' -d '{local_model_dir}/tmp'")
+ res = res.readlines()
+ local_model_subdir = ''
+ for root_path, dirs, files in os.walk(f'{local_model_dir}/tmp',
+ topdown=False):
+ if 'adapter_model.bin' in files:
+ local_model_subdir = '/'.join(
+ root_path.split('/')[:-1])
+ break
+ if local_model_subdir == '':
+ raise gr.Error(self.component_names.upload_file_error)
+ res = os.popen(
+ f"cp -r '{local_model_subdir}'/* '{local_model_dir}' "
+ f"&& rm -rf '{local_model_dir}'/tmp")
res = res.readlines()
- with FS.get_from(save_file) as local_path:
- res = os.popen(f"unzip -o '{local_path}' -d '{model_dir}'")
- res = res.readlines()
- if not os.path.exists(model_dir):
- raise gr.Error(f'解压{save_file}失败{str(res)}')
+
+ FS.put_dir_from_local_dir(local_model_dir, model_dir)
+ if not FS.exists(model_dir):
+ raise gr.Error(f'unzip {save_file} failed, {str(res)}')
+
# find meta.yaml
- if os.path.exists(os.path.join(model_dir, 'meta.yaml')):
- meta = Config(cfg_file=os.path.join(model_dir, 'meta.yaml'))
+ if FS.exists(os.path.join(model_dir, 'meta.yaml')):
+ local_meta_file = os.path.join(local_model_dir, 'meta.yaml')
+ if not FS.exists(local_meta_file):
+ FS.get_from(os.path.join(model_dir, 'meta.yaml'),
+ local_meta_file)
+ meta = Config(cfg_file=local_meta_file)
tuner_desc = meta.get('DESCRIPTION', '')
tuner_example = meta.get('IMAGE_PATH', None)
if tuner_example is not None:
tuner_example = os.path.join(
model_dir, os.path.basename(tuner_example))
- if os.path.exists(tuner_example):
- from PIL import Image
- tuner_example_path = os.path.join(
- model_dir, 'image.jpg')
- if not os.path.exists(tuner_example_path):
- tuner_example = Image.open(tuner_example)
- with FS.put_to(tuner_example_path) as local_path:
- tuner_example.save(local_path)
- tuner_example = tuner_example_path
+ if FS.exists(tuner_example):
+ tuner_example = tuner_example.split('/')[-1]
+ elif FS.exists(os.path.join(model_dir, 'image.jpg')):
+ tuner_example = 'image.jpg'
else:
tuner_example = None
tuner_prompt_example = meta.get('PROMPT_EXAMPLE', '')
@@ -771,19 +1231,25 @@ class BrowserUI(UIBase):
'DESCRIPTION': tuner_desc,
'BASE_MODEL': base_model,
'MODEL_PATH': model_dir,
- 'IMAGE_PATH': tuner_example,
'TUNER_TYPE': tuner_type,
'PROMPT_EXAMPLE': tuner_prompt_example
}
+ if tuner_example is not None:
+ new_tuner.update({'IMAGE_PATH': tuner_example})
+ local_tuner_example = os.path.join(local_model_dir,
+ tuner_example)
+ else:
+ local_tuner_example = None
pipeline_level_modules = manager.inference.model_manage_ui.pipe_manager.pipeline_level_modules
if new_tuner['BASE_MODEL'] not in pipeline_level_modules:
- gr.Error(self.component_names.model_err3 +
- new_tuner['BASE_MODEL'])
+ raise gr.Error(self.component_names.model_err3 +
+ new_tuner['BASE_MODEL'])
pipeline_ins = pipeline_level_modules[new_tuner['BASE_MODEL']]
now_diffusion_model = f"{new_tuner['BASE_MODEL']}_{pipeline_ins.diffusion_model['name']}"
custom_tuner_choices = self.add_tuner(new_tuner, manager,
now_diffusion_model)
+ gr.Info(self.component_names.upload_success)
return (gr.Dropdown(choices=list(
self.saved_tuners_category.keys()),
@@ -794,19 +1260,21 @@ class BrowserUI(UIBase):
gr.Text(value=tuner_type), gr.Text(value=base_model),
gr.Text(value=tuner_desc),
gr.Text(value=tuner_prompt_example),
- gr.Image(value=tuner_example),
- gr.Dropdown(choices=custom_tuner_choices))
+ gr.Image(value=local_tuner_example),
+ gr.Dropdown(choices=custom_tuner_choices),
+ gr.update(visible=False))
self.local_upload_bt.click(
upload_zip,
inputs=[
- self.file_path, self.upload_tuner_name,
+ self.file_path, self.file_url, self.upload_tuner_name,
self.upload_base_models, self.upload_tuner_type
],
outputs=[
self.diffusion_models, self.tuner_models, info_ui.tuner_name,
info_ui.tuner_type, info_ui.base_model, info_ui.tuner_desc,
info_ui.tuner_prompt_example, info_ui.tuner_example,
- manager.inference.tuner_ui.custom_tuner_model
+ manager.inference.tuner_ui.custom_tuner_model,
+ self.import_setting
],
queue=False)
diff --git a/scepter/studio/tuner_manager/manager_ui/component_names.py b/scepter/studio/tuner_manager/manager_ui/component_names.py
index e6892e4..df81c99 100644
--- a/scepter/studio/tuner_manager/manager_ui/component_names.py
+++ b/scepter/studio/tuner_manager/manager_ui/component_names.py
@@ -8,9 +8,9 @@ class TunerManagerNames():
self.save_symbol = '\U0001F4BE' # 💾
self.delete_symbol = '\U0001f5d1' # 🗑️
self.refresh_symbol = '\U0001f504' # 🔄
- self.upload = '\U0001F517' # 🔗
- self.download = '\U00002795' # ➕
- self.ms_submit = '\U00002714' # ✔️
+ self.model_export = '\U0001F517' # 🔗
+ self.model_import = '\U00002795' # ➕
+ self.submit = '\U00002714' # ✔️
self.close = '\U00002716' # ✖️
if language == 'en':
@@ -28,29 +28,50 @@ class TunerManagerNames():
self.tuner_prompt_example = 'Prompt Example'
self.model_err3 = "Doesn't surpport this base model"
self.model_err4 = \
- "This model maybe not finish training, because model doesn't exist. Please save model first."
+ f'Custom model does not exist. Please save{self.save_symbol} model first.'
self.model_err5 = 'Model name not registered locally.'
self.go_to_inference = 'Go To Inference'
self.save = 'save changes'
self.delete = 'Delete'
+
self.ms_sdk = 'ModelScope API Token'
self.ms_username = 'ModelScope User Name'
- self.model_private = 'Model Private'
+ self.ms_model_private = 'ModelScope Model Private'
self.ms_modelid = 'ModelScope Model ID'
self.ms_url = 'ModelScope Model Url'
- self.ms_model_path = 'Hub Model ID'
+
+ self.hf_sdk = 'HuggingFace API Token'
+ self.hf_username = 'HuggingFace User Name'
+ self.hf_model_private = 'HuggingFace Model Private'
+ self.hf_modelid = 'HuggingFace Model ID'
+ self.hf_url = 'HuggingFace Model Url'
+
self.export_file = 'Download Model'
+ self.save_start = 'Start export model...'
+ self.save_end = 'Export model successfully!'
self.export_zip_err1 = 'export model failure'
self.zip_file = 'upload model'
+ self.file_url = 'upload model url'
+ self.upload_success = 'Upload Successfully'
+ self.same_name = 'Upload model name already exists'
+ self.upload_file_error = 'Upload without .bin file'
+ self.upload_file_error2 = 'Upload file failed'
+ self.url_invalid = 'Url is invalid'
+ self.files_null = 'Upload files/url Null'
self.utuner_name = 'Upload Tuner Name'
self.ubase_model = 'Upload Base Model'
self.utuner_type = 'Upload Tuner Type'
self.illegal_data_err1 = 'Upload File Format Error(not .zip)'
self.download_to_local = 'Download to Local'
- self.export_desc = 'Model Export To ModelScope (\U00002714: Submit; \U00002716: Close)'
- self.import_desc = 'Model Import From **ModelScope/Local** (\U00002714: Submit; \U00002716: Close)'
+ self.export_desc = 'Model Export To **ModelScope/HuggingFace** (\U00002714: Submit; \U00002716: Close)'
+ self.import_desc = (
+ 'Model Import From **ModelScope/HuggingFace/Local** '
+ '(\U00002714: Submit; \U00002716: Close)')
elif language == 'zh':
- self.browser_block_name = '微调模型查找 (\U0001F4BE: 保存; \U0001f504: 刷新; \U0001F517: 导出; \U00002795: 导入)'
+ self.browser_block_name = (
+ '微调模型查找 '
+ '(\U0001F4BE: 保存; \U0001f504: 刷新; \U0001F517: 导出; \U00002795: 导入)'
+ )
self.base_models = '基模型-微调类型'
self.tuner_models = '微调模型名称'
self.info_block_name = '微调模型详情'
@@ -62,24 +83,40 @@ class TunerManagerNames():
self.tuner_example = '示例结果'
self.tuner_prompt_example = '示例提示词'
self.model_err3 = '不支持的基础模型'
- self.model_err4 = '模型可能没有训练完成或者模型不存在,请先保存模型'
+ self.model_err4 = f'自定义模型不存在,请先保存{self.save_symbol}模型'
self.model_err5 = '模型名未本地注册'
self.go_to_inference = '使用模型'
self.save = '保存修改'
self.delete = '删除'
+
self.ms_sdk = 'ModelScope API Token'
self.ms_username = 'ModelScope用户名'
- self.model_private = '模型不公开'
+ self.ms_model_private = 'ModelScope模型不公开'
self.ms_modelid = 'ModelScope模型ID'
self.ms_url = 'ModelScope模型地址'
- self.ms_model_path = 'MS模型地址'
+
+ self.hf_sdk = 'HuggingFace API Token'
+ self.hf_username = 'HuggingFace 用户名'
+ self.hf_model_private = 'HuggingFace 模型不公开'
+ self.hf_modelid = 'HuggingFace 模型ID'
+ self.hf_url = 'HuggingFace 模型地址'
+
self.export_file = '下载数据'
+ self.save_start = '开始导出模型...'
+ self.save_end = '导出模型成功!'
self.export_zip_err1 = '导出模型失败'
self.zip_file = '上传模型'
+ self.file_url = '上传模型链接'
+ self.upload_success = '上传成功'
+ self.same_name = '上传模型名已存在'
+ self.upload_file_error = '上传缺少.bin文件'
+ self.upload_file_error2 = '上传文件失败'
+ self.url_invalid = '链接无效'
+ self.files_null = '上传文件为空'
self.utuner_name = '上传微调模型名称'
self.ubase_model = '上传基模型类型'
self.utuner_type = '上传微调模型类型'
self.illegal_data_err1 = '上传文件格式错误(not .zip)'
self.download_to_local = '下载至本地'
- self.export_desc = '模型导出至modelscope (\U00002714: 提交; \U00002716: 关闭)'
- self.import_desc = '模型从 **modelscope/本地** 导入 (\U00002714: 提交; \U00002716: 关闭)'
+ self.export_desc = '模型导出至**ModelScope/HuggingFace** (\U00002714: 提交; \U00002716: 关闭)'
+ self.import_desc = '模型从 **ModelScope/HuggingFace/本地** 导入 (\U00002714: 提交; \U00002716: 关闭)'
diff --git a/scepter/studio/tuner_manager/manager_ui/info_ui.py b/scepter/studio/tuner_manager/manager_ui/info_ui.py
index a69908e..bcbcd84 100644
--- a/scepter/studio/tuner_manager/manager_ui/info_ui.py
+++ b/scepter/studio/tuner_manager/manager_ui/info_ui.py
@@ -3,16 +3,37 @@
import copy
import os
-import gradio as gr
import yaml
+import gradio as gr
+import torch
+from safetensors.torch import save_file
from scepter.modules.utils.config import Config
-from scepter.modules.utils.file_system import FS
+from scepter.modules.utils.directory import get_md5
+from scepter.modules.utils.file_system import FS, IoString
+from scepter.modules.utils.module_transform import (
+ convert_ldm_clip_checkpoint_v1, convert_ldm_unet_tuner_checkpoint,
+ convert_lora_checkpoint, create_unet_diffusers_config)
from scepter.studio.tuner_manager.manager_ui.component_names import \
TunerManagerNames
from scepter.studio.utils.uibase import UIBase
+def check_data(data):
+ if isinstance(data, dict):
+ for k, v in data.items():
+ data[k] = check_data(v)
+ return data
+ elif isinstance(data, list):
+ for idx, v in enumerate(data):
+ data[idx] = check_data(v)
+ return data
+ else:
+ if isinstance(data, IoString):
+ return str(data)
+ return data
+
+
class InfoUI(UIBase):
def __init__(self, cfg, language='en'):
self.component_names = TunerManagerNames(language)
@@ -49,11 +70,22 @@ class InfoUI(UIBase):
label=self.component_names.
base_model_name,
interactive=False)
+ with gr.Row(equal_height=True):
with gr.Column(scale=1):
self.tuner_desc = gr.Text(
value='',
label=self.component_names.tuner_desc,
lines=4)
+ with gr.Row(equal_height=True):
+ with gr.Column(scale=1):
+ self.save_bt2 = gr.Button(
+ value=self.component_names.save_symbol,
+ label='Save',
+ elem_classes='type_row',
+ elem_id='save_button',
+ visible=True,
+ # lines=4
+ )
with gr.Column(variant='panel', scale=1, min_width=0):
with gr.Group(visible=True):
with gr.Row(equal_height=True):
@@ -72,7 +104,12 @@ class InfoUI(UIBase):
self.ms_url = gr.Text(
value='',
label=self.component_names.ms_url,
- lines=2)
+ lines=1)
+ with gr.Row(equal_height=True):
+ self.hf_url = gr.Text(
+ value='',
+ label=self.component_names.hf_url,
+ lines=1)
with gr.Row(equal_height=True):
with gr.Column(scale=1, min_width=0):
self.go_to_inferece_btn = gr.Button(
@@ -84,28 +121,44 @@ class InfoUI(UIBase):
download_to_local,
# elem_classes='type_row',
elem_id='save_button')
- self.export_url = gr.File(
- label=self.component_names.export_file,
- visible=False,
- value=None,
- interactive=False,
- show_label=True)
+ with gr.Row(
+ equal_height=True,
+ visible=False,
+ variant='panel') as self.download_choices:
+ with gr.Column(scale=4, min_width=0):
+ self.download_select = gr.Dropdown(
+ choices=['.zip', '.safetensors'],
+ value='.zip',
+ interactive=True,
+ label='Select Download Format',
+ show_label=False)
+ with gr.Column(scale=1, min_width=0):
+ self.download_confirm = gr.Button(
+ label='Confirm Download Format',
+ value=self.component_names.submit,
+ elem_classes='type_row',
+ elem_id='save_button')
+ with gr.Row(equal_height=True):
+ self.export_url = gr.File(
+ label=self.component_names.export_file,
+ visible=False,
+ value=None,
+ interactive=False,
+ show_label=True)
- def set_callbacks(self, manager):
+ def set_callbacks(self, manager, browser_ui):
+ # def set_callbacks(self, manager):
def go_to_inferece(new_name, tuner_desc, tuner_prompt_example,
tuner_type, base_model):
+ all_tuners = manager.tuner_manager.browser_ui.saved_tuners_category
sub_dir = f'{base_model}-{tuner_type}'
- tar_path = os.path.join(self.work_dir, sub_dir)
- model_dir = os.path.join(tar_path, new_name)
+ current_model = all_tuners.get(sub_dir, {}).get(new_name, None)
+ if current_model is None:
+ raise gr.Error(self.component_names.model_err4)
+ model_dir, _ = FS.map_to_local(current_model['MODEL_PATH'])
if not os.path.exists(model_dir):
- tuner_list = Config(
- cfg_file=os.path.join(self.work_dir, 'tuner_list.yaml'))
- for tuner_item in tuner_list.get('TUNERS', []):
- if tuner_item.NAME == new_name:
- model_dir = tuner_item.MODEL_PATH
- tuner_example = os.path.join(model_dir, 'image.jpg')
- if not os.path.exists(tuner_example):
- tuner_example = None
+ FS.get_dir_to_local_dir(current_model['MODEL_PATH'])
+
tuner_dict = {
'NAME': new_name,
'NAME_ZH': new_name,
@@ -113,19 +166,24 @@ class InfoUI(UIBase):
'DESCRIPTION': tuner_desc,
'BASE_MODEL': base_model,
'MODEL_PATH': model_dir,
- 'IMAGE_PATH': tuner_example,
'TUNER_TYPE': tuner_type,
'PROMPT_EXAMPLE': tuner_prompt_example
}
+ if 'IMAGE_PATH' in current_model:
+ tuner_example_abspath = os.path.join(
+ model_dir, current_model['IMAGE_PATH'])
+ if FS.exists(tuner_example_abspath):
+ tuner_dict.update({'IMAGE_PATH': tuner_example_abspath})
+
tuner_cfg = Config(cfg_dict=tuner_dict, load=False)
cfg_file = os.path.join(model_dir, 'meta.yaml')
if not os.path.exists(model_dir):
- gr.Error(self.component_names.model_err4)
+ raise gr.Error(self.component_names.model_err4)
pipeline_level_modules = manager.inference.model_manage_ui.pipe_manager.pipeline_level_modules
if tuner_cfg.BASE_MODEL not in pipeline_level_modules:
- gr.Error(self.component_names.model_err3 +
- tuner_cfg.BASE_MODEL)
+ raise gr.Error(self.component_names.model_err3 +
+ tuner_cfg.BASE_MODEL)
pipeline_ins = pipeline_level_modules[tuner_cfg.BASE_MODEL]
diffusion_model = f"{tuner_cfg.BASE_MODEL}_{pipeline_ins.diffusion_model['name']}"
@@ -139,11 +197,11 @@ class InfoUI(UIBase):
tunner_default = tuner_cfg.NAME if self.language == 'en' else tuner_cfg.NAME_ZH
if tunner_default not in tunner_choices:
if self.language == 'zh':
- gr.Error(self.component_names.model_err5 +
- tuner_cfg.NAME_ZH)
+ raise gr.Error(self.component_names.model_err5 +
+ tuner_cfg.NAME_ZH)
else:
- gr.Error(self.component_names.model_err5 +
- tuner_cfg.NAME)
+ raise gr.Error(self.component_names.model_err5 +
+ tuner_cfg.NAME)
if not isinstance(tunner_default, list):
tunner_default = [tunner_default]
else:
@@ -151,7 +209,7 @@ class InfoUI(UIBase):
tunner_default = []
with open(cfg_file, 'w') as f_out:
- yaml.dump(copy.deepcopy(tuner_cfg.cfg_dict),
+ yaml.dump(copy.deepcopy(check_data(tuner_cfg.cfg_dict)),
f_out,
encoding='utf-8',
allow_unicode=True,
@@ -166,13 +224,21 @@ class InfoUI(UIBase):
manager.inference.tuner_ui.name_level_tuners[base_model][
tuner_cfg.NAME] = tuner_cfg
- return (
- gr.Tabs(selected='inference'), cfg_file,
- gr.Tabs(selected='tuner_ui'),
- gr.CheckboxGroup(
- value='使用微调' if self.language == 'zh' else 'Use Tuners'),
- gr.Dropdown(value=diffusion_model),
- gr.Dropdown(choices=tunner_choices, value=tunner_default))
+ if tuner_cfg.BASE_MODEL == 'EDIT':
+ selected_tab = 'stylebooth_ui' if tuner_cfg.BASE_MODEL == 'EDIT' else 'tuner_ui'
+ checkboxes = [
+ '使用微调', 'StyleBooth'
+ ] if self.language == 'zh' else ['Use Tuners', 'StyleBooth']
+ else:
+ selected_tab = 'tuner_ui'
+ checkboxes = ['使用微调'
+ ] if self.language == 'zh' else ['Use Tuners']
+
+ return (gr.Tabs(selected='inference'), cfg_file,
+ gr.Tabs(selected=selected_tab),
+ gr.CheckboxGroup(value=checkboxes),
+ gr.Dropdown(value=diffusion_model),
+ gr.Dropdown(choices=tunner_choices, value=tunner_default))
self.go_to_inferece_btn.click(
go_to_inferece,
@@ -190,33 +256,118 @@ class InfoUI(UIBase):
queue=True)
def export_zip(tuner_name, base_model, tuner_type):
+ all_tuners = manager.tuner_manager.browser_ui.saved_tuners_category
sub_dir = f'{base_model}-{tuner_type}'
- if os.path.exists(os.path.join(self.work_dir, sub_dir,
- tuner_name)):
- model_dir = os.path.join(self.work_dir, sub_dir, tuner_name)
- else:
- model_dir = ''
- tuner_list = Config(
- cfg_file=os.path.join(self.work_dir, 'tuner_list.yaml'))
- for tuner_item in tuner_list.get('TUNERS', []):
- if tuner_item.NAME == tuner_name:
- model_dir = tuner_item.MODEL_PATH
- break
- if not os.path.exists(model_dir) or model_dir == '':
- raise gr.Error(self.component_names.model_err4)
- zip_path = os.path.join(self.export_folder, f'{tuner_name}.zip')
+ current_model = all_tuners.get(sub_dir, {}).get(tuner_name, None)
+ if current_model is None:
+ raise gr.Error(self.component_names.model_err4)
+ enable_share = current_model.get('ENABLE_SHARE', True)
+ if not enable_share:
+ gr.Info('Error: The model is not allowed to Export!')
+ return gr.File()
+ model_dir = FS.get_dir_to_local_dir(current_model['MODEL_PATH'])
+ zip_path = get_md5(os.path.join(self.export_folder,
+ tuner_name)) + '.zip'
with FS.put_to(zip_path) as local_zip:
res = os.popen(
- f"cd '{model_dir}' "
+ f"cd '{os.path.abspath(model_dir)}' "
f"&& zip -r '{os.path.abspath(local_zip)}' ./* ")
print(res.readlines())
if not FS.exists(zip_path):
raise gr.Error(self.component_names.export_zip_err1)
local_zip = FS.get_from(zip_path)
+ gr.Info(self.component_names.save_end)
return gr.File(value=local_zip, visible=True)
- self.local_download_bt.click(
- export_zip,
- inputs=[self.tuner_name, self.base_model, self.tuner_type],
- outputs=[self.export_url],
- queue=False)
+ def export_safetensors(tuner_name, base_model, tuner_type):
+ # only support sd1.5
+ all_tuners = manager.tuner_manager.browser_ui.saved_tuners_category
+ sub_dir = f'{base_model}-{tuner_type}'
+ current_model = all_tuners.get(sub_dir, {}).get(tuner_name, None)
+ if current_model is None:
+ raise gr.Error(self.component_names.model_err4)
+ enable_share = current_model.get('ENABLE_SHARE', True)
+ if not enable_share:
+ gr.Info('Error: The model is not allowed to Export!')
+ return gr.File()
+
+ model_dir = FS.get_dir_to_local_dir(current_model['MODEL_PATH'])
+
+ swift_checkpoint = {}
+ swift_dirs = os.listdir(model_dir)
+ for swift_dir in swift_dirs:
+ if not os.path.isdir(os.path.join(model_dir, swift_dir)):
+ continue
+ swift_files = os.listdir(os.path.join(model_dir, swift_dir))
+ for swift_file in swift_files:
+ if '.bin' in swift_file:
+ checkpoint_path = os.path.join(model_dir, swift_dir,
+ swift_file)
+ checkpoint = torch.load(checkpoint_path,
+ map_location='cpu')
+ swift_checkpoint.update(checkpoint)
+
+ unet_config = create_unet_diffusers_config(v2=False)
+ ckpt_unet = convert_ldm_unet_tuner_checkpoint(
+ v2=False,
+ checkpoint=swift_checkpoint,
+ config=unet_config,
+ unet_key='model.')
+ lora_state_dict = convert_lora_checkpoint(ckpt_unet=ckpt_unet)
+ ckpt_te = convert_ldm_clip_checkpoint_v1(swift_checkpoint)
+ lora_te_state_dict = convert_lora_checkpoint(ckpt_text=ckpt_te)
+ lora_state_dict.update(lora_te_state_dict)
+
+ save_path = get_md5(os.path.join(self.export_folder,
+ tuner_name)) + '.safetensors'
+ with FS.put_to(save_path) as local_file:
+ save_file(lora_state_dict, local_file)
+ if not FS.exists(save_path):
+ raise gr.Error(self.component_names.export_zip_err1)
+ local_zip = FS.get_from(save_path)
+ gr.Info(self.component_names.save_end)
+ return gr.File(value=local_zip, visible=True)
+
+ def export_file(tuner_name, base_model, tuner_type, download_type):
+ gr.Info(self.component_names.save_start)
+ if download_type == '.zip':
+ return export_zip(tuner_name, base_model, tuner_type)
+ elif download_type == '.safetensors':
+ return export_safetensors(tuner_name, base_model, tuner_type)
+
+ def change_visible():
+ return gr.update(visible=True)
+
+ self.local_download_bt.click(change_visible,
+ inputs=[],
+ outputs=[self.download_choices],
+ queue=False)
+
+ self.download_confirm.click(export_file,
+ inputs=[
+ self.tuner_name, self.base_model,
+ self.tuner_type, self.download_select
+ ],
+ outputs=[self.export_url],
+ queue=True)
+
+ def save_tuner_func(tuner_name, new_name, tuner_desc, tuner_example,
+ tuner_prompt_example, base_model, tuner_type):
+ return browser_ui.save_tuner(manager, tuner_name, new_name,
+ tuner_desc, tuner_example,
+ tuner_prompt_example, base_model,
+ tuner_type)
+
+ self.save_bt2.click(save_tuner_func,
+ inputs=[
+ self.tuner_name, self.new_name,
+ self.tuner_desc, self.tuner_example,
+ self.tuner_prompt_example, self.base_model,
+ self.tuner_type
+ ],
+ outputs=[
+ browser_ui.diffusion_models,
+ browser_ui.tuner_models, self.tuner_name,
+ manager.inference.tuner_ui.custom_tuner_model
+ ],
+ queue=True)
diff --git a/scepter/studio/tuner_manager/tuner_manager.py b/scepter/studio/tuner_manager/tuner_manager.py
index 17217aa..e0b50ad 100644
--- a/scepter/studio/tuner_manager/tuner_manager.py
+++ b/scepter/studio/tuner_manager/tuner_manager.py
@@ -18,8 +18,6 @@ class TunerManagerUI():
cfg_general = Config(cfg_file=cfg_general_file)
cfg_general.WORK_DIR = os.path.join(root_work_dir,
cfg_general.WORK_DIR)
- cfg_general.SELF_TRAIN_DIR = os.path.join(root_work_dir,
- cfg_general.SELF_TRAIN_DIR)
if not FS.exists(cfg_general.WORK_DIR):
FS.make_dir(cfg_general.WORK_DIR)
@@ -32,5 +30,5 @@ class TunerManagerUI():
self.info_ui.create_ui()
def set_callbacks(self, manager):
- self.info_ui.set_callbacks(manager)
+ self.info_ui.set_callbacks(manager, self.browser_ui)
self.browser_ui.set_callbacks(manager, self.info_ui)
diff --git a/scepter/studio/tuner_manager/utils/path.py b/scepter/studio/tuner_manager/utils/path.py
index 45aae38..f8a1f2a 100644
--- a/scepter/studio/tuner_manager/utils/path.py
+++ b/scepter/studio/tuner_manager/utils/path.py
@@ -4,7 +4,21 @@ import re
def is_valid_filename(filename):
- if re.match('^[A-Za-z0-9_@]+$', filename):
+ if re.match('^[A-Za-z0-9_@.-]+$', filename):
+ return True
+ else:
+ return False
+
+
+def is_valid_modelscope_filename(filename):
+ if re.match('^[A-Za-z0-9_-]+$', filename):
+ return True
+ else:
+ return False
+
+
+def is_valid_huggingface_filename(filename):
+ if re.match('^[A-Za-z0-9_-]+$', filename):
return True
else:
return False
diff --git a/scepter/studio/tuner_manager/utils/yaml.py b/scepter/studio/tuner_manager/utils/yaml.py
index 2b4db07..b94b2b7 100644
--- a/scepter/studio/tuner_manager/utils/yaml.py
+++ b/scepter/studio/tuner_manager/utils/yaml.py
@@ -2,10 +2,27 @@
# Copyright (c) Alibaba, Inc. and its affiliates.
import yaml
+from scepter.modules.utils.file_system import IoString
+
+
+def check_data(data):
+ if isinstance(data, dict):
+ for k, v in data.items():
+ data[k] = check_data(v)
+ return data
+ elif isinstance(data, list):
+ for idx, v in enumerate(data):
+ data[idx] = check_data(v)
+ return data
+ else:
+ if isinstance(data, IoString):
+ return str(data)
+ return data
+
def save_yaml(data, file_path):
with open(file_path, 'w') as f_out:
- yaml.dump(data,
+ yaml.dump(check_data(data),
f_out,
encoding='utf-8',
allow_unicode=True,
diff --git a/scepter/tools/convert_tuner.py b/scepter/tools/convert_tuner.py
new file mode 100644
index 0000000..7b91a81
--- /dev/null
+++ b/scepter/tools/convert_tuner.py
@@ -0,0 +1,137 @@
+# -*- coding: utf-8 -*-
+# Copyright (c) Alibaba, Inc. and its affiliates.
+import argparse
+import importlib
+# from safetensors.torch import save_file
+# from safetensors import safe_open
+import json
+import os
+import sys
+
+import safetensors
+import torch
+from scepter.modules.utils.config import Config
+from scepter.modules.utils.file_system import FS
+from scepter.modules.utils.module_transform import (
+ convert_ldm_clip_checkpoint_v1, convert_ldm_unet_tuner_checkpoint,
+ convert_lora_checkpoint, convert_tuner_civitai_to_scepter,
+ create_unet_diffusers_config)
+
+if os.path.exists('__init__.py'):
+ package_name = 'scepter_ext'
+ spec = importlib.util.spec_from_file_location(package_name, '__init__.py')
+ package = importlib.util.module_from_spec(spec)
+ sys.modules[package_name] = package
+ spec.loader.exec_module(package)
+
+
+def str2bool(v):
+ if isinstance(v, bool):
+ return v
+ if v.lower() in ('yes', 'true', 't', 'y', '1'):
+ return True
+ elif v.lower() in ('no', 'false', 'f', 'n', '0'):
+ return False
+ else:
+ raise argparse.ArgumentTypeError('Boolean value expected.')
+
+
+def scepter_to_civitai(cfg):
+ scepter_checkpoint = {}
+ local_source, _ = FS.map_to_local(cfg.args.source)
+ if not FS.exists(local_source):
+ FS.get_dir_to_local_dir(cfg.args.source, local_source)
+ for name in FS.walk_dir(local_source):
+ path = os.path.join(local_source, name)
+ if not FS.isdir(path):
+ continue
+ for sub_name in FS.walk_dir(path):
+ if '.bin' in sub_name:
+ checkpoint_path = os.path.join(local_source, name, sub_name)
+ checkpoint = torch.load(checkpoint_path, map_location='cpu')
+ scepter_checkpoint.update(checkpoint)
+ unet_config = create_unet_diffusers_config(v2=False)
+ ckpt_unet = convert_ldm_unet_tuner_checkpoint(
+ v2=False,
+ checkpoint=scepter_checkpoint,
+ config=unet_config,
+ unet_key='model.')
+ lora_state_dict = convert_lora_checkpoint(ckpt_unet=ckpt_unet)
+ ckpt_te = convert_ldm_clip_checkpoint_v1(scepter_checkpoint)
+ lora_te_state_dict = convert_lora_checkpoint(ckpt_text=ckpt_te)
+ lora_state_dict.update(lora_te_state_dict)
+ with FS.put_to(cfg.args.target) as local_file:
+ safetensors.torch.save_file(lora_state_dict, local_file)
+ if not FS.exists(cfg.args.target):
+ raise Exception(
+ f'Transform Error From {cfg.args.source} To {cfg.args.target}.')
+ else:
+ print(
+ f'Transform Success From {cfg.args.source} To {cfg.args.target}.')
+
+
+def civitai_to_scepter(cfg):
+ civitai_lora = {}
+ local_source, _ = FS.map_to_local(cfg.args.source)
+ if not FS.exists(local_source):
+ FS.get_from(cfg.args.source, local_source)
+ with safetensors.safe_open(local_source, framework='pt',
+ device='cpu') as f:
+ for k in f.keys():
+ civitai_lora[k] = f.get_tensor(k)
+ tuner_config, scepter_tuner, unload_params = convert_tuner_civitai_to_scepter(
+ civitai_lora)
+ local_target_dir, _ = FS.map_to_local(cfg.args.target)
+ FS.make_dir(local_target_dir)
+ config_path = os.path.join(local_target_dir, '0_SwiftLoRA',
+ 'adapter_config.json')
+ module_path = os.path.join(local_target_dir, '0_SwiftLoRA',
+ 'adapter_model.bin')
+ with FS.put_to(config_path) as local_config:
+ with open(local_config, 'w') as fw:
+ fw.write(json.dumps(tuner_config))
+ with FS.put_to(module_path) as local_module:
+ torch.save(scepter_tuner, local_module)
+ if not FS.exists(cfg.args.target):
+ raise Exception(
+ f'Transform Error From {cfg.args.source} To {cfg.args.target}.')
+ else:
+ print(
+ f'Transform Success From {cfg.args.source} To {cfg.args.target}.')
+
+
+def transform_module_format(cfg):
+ if 'FILE_SYSTEM' in cfg:
+ if isinstance(cfg.FILE_SYSTEM, list):
+ for file_cfg in cfg.FILE_SYSTEM:
+ FS.init_fs_client(file_cfg)
+ else:
+ FS.init_fs_client(cfg.FILE_SYSTEM)
+ if cfg.args.export:
+ scepter_to_civitai(cfg)
+ else:
+ civitai_to_scepter(cfg)
+
+
+def run():
+ parser = argparse.ArgumentParser(description='Argparser for Scepter:\n')
+ parser.add_argument('--source',
+ dest='source',
+ help='The source model path!',
+ default=None)
+ parser.add_argument('--target',
+ dest='target',
+ help='The target model path!',
+ default=None)
+ parser.add_argument('--export',
+ dest='export',
+ type=str2bool,
+ help='Use export mode',
+ default=True)
+
+ cfg = Config(load=True, parser_ins=parser)
+ transform_module_format(cfg)
+
+
+if __name__ == '__main__':
+ run()
diff --git a/scepter/tools/process_watcher.py b/scepter/tools/process_watcher.py
new file mode 100644
index 0000000..74a2bae
--- /dev/null
+++ b/scepter/tools/process_watcher.py
@@ -0,0 +1,114 @@
+# -*- coding: utf-8 -*-
+# Copyright (c) Alibaba, Inc. and its affiliates.
+import argparse
+import os
+import random
+import subprocess
+import time
+from datetime import datetime
+
+import psutil
+
+parser = argparse.ArgumentParser(
+ description='Argparser for process watcher:\n')
+
+parser.add_argument(
+ '--python_engine',
+ dest='python_engine',
+ help='the engine path of python interpreter!',
+ default='/home/pai/envs/scepter/bin/python',
+ type=str,
+)
+
+parser.add_argument(
+ '--script',
+ dest='script',
+ help='the script to run!',
+ default='main_mmpose.py',
+ type=str,
+)
+parser.add_argument(
+ '--cfg',
+ dest='cfg',
+ help='the cfg file for script!',
+ default='',
+ type=str,
+)
+
+parser.add_argument(
+ '--offset',
+ dest='offset',
+ help='the offset for modify the current seed!',
+ default=0,
+ type=int,
+)
+
+parser.add_argument(
+ '--interval',
+ dest='interval',
+ help='the interval bettween two tasks!',
+ default=0,
+ type=int,
+)
+
+parser.add_argument(
+ '--ins',
+ dest='ins',
+ help='the number of instance to start!',
+ default=1,
+ type=int,
+)
+
+parser.add_argument(
+ '--runtime',
+ dest='runtime',
+ help='total runtime for all tasks!',
+ default=144,
+ type=int,
+)
+
+args = parser.parse_args()
+seed = datetime.now().hour
+random.seed(seed + args.offset)
+random_port_start = random.randint(1100, 7080)
+all_tasks = []
+start_time = time.time()
+for i in range(args.ins):
+ cmd = (
+ f'MASTER_PORT={random_port_start + i} {args.python_engine} -W ignore '
+ f'{args.script} --cfg={args.cfg} ')
+ print(cmd)
+ proc = subprocess.Popen(cmd, shell=True)
+ all_tasks.append([proc, cmd])
+ time.sleep(args.interval)
+
+while True:
+ if time.time() - start_time > args.runtime * 60 * 60:
+ print(f'reach to the max running time {args.runtime}h')
+ for proc, cmd in all_tasks:
+ print(f'kill process {proc.pid} with cmd {cmd}')
+ os.system('kill -term {}'.format(proc.pid))
+ break
+ time.sleep(120)
+ print(f'Have processed {time.time() - start_time}s')
+ is_finished = False
+ status_list = []
+ for idx, (proc, cmd) in enumerate(all_tasks):
+ current_process = psutil.Process(proc.pid)
+ if not current_process.status() in ('running', 'sleeping',
+ 'disk-sleep', 'waking'):
+ retcode = proc.wait()
+ print(
+ f'process {proc.pid} with cmd {cmd} exit with code {retcode}')
+ if retcode == 0:
+ print(f'task {proc.pid} finished!')
+ status_list.append(idx)
+ else:
+ print(f'restart {proc.pid} with cmd {cmd}.')
+ proc = subprocess.Popen(cmd, shell=True)
+ all_tasks[idx] = [proc, cmd]
+ for idx in status_list:
+ all_tasks.pop(idx)
+ if len(all_tasks) == 0:
+ print('all tasks finished!')
+ break
diff --git a/scepter/tools/run_inference.py b/scepter/tools/run_inference.py
index 5bb9bdc..349da04 100644
--- a/scepter/tools/run_inference.py
+++ b/scepter/tools/run_inference.py
@@ -10,7 +10,6 @@ import torch
import torch.cuda.amp as amp
import torchvision.transforms as TT
from PIL import Image
-
from scepter.modules.solver.registry import SOLVERS
from scepter.modules.utils.config import Config
from scepter.modules.utils.data import transfer_data_to_cuda
diff --git a/scepter/tools/webui.py b/scepter/tools/webui.py
index 6e28aac..086ed5d 100644
--- a/scepter/tools/webui.py
+++ b/scepter/tools/webui.py
@@ -8,7 +8,6 @@ import random
import sys
import gradio as gr
-
import scepter
from scepter.modules.utils.config import Config
from scepter.modules.utils.file_system import FS
diff --git a/scepter/version.py b/scepter/version.py
index 230866d..737ae04 100644
--- a/scepter/version.py
+++ b/scepter/version.py
@@ -1,7 +1,7 @@
# -*- coding: utf-8 -*-
# Copyright (c) Alibaba, Inc. and its affiliates.
-__version__ = '0.0.5.post1'
+__version__ = '1.0.0'
version_info = tuple(int(x) for x in __version__.split('.')[0:3])
diff --git a/tests/modules/test_diffusion_inference.py b/tests/modules/test_diffusion_inference.py
index dc963e9..fc95c08 100644
--- a/tests/modules/test_diffusion_inference.py
+++ b/tests/modules/test_diffusion_inference.py
@@ -8,8 +8,6 @@ import numpy as np
import torchvision.transforms as TT
import torchvision.transforms.functional as TF
from PIL import Image
-from torchvision.utils import save_image
-
from scepter.modules.annotator.registry import ANNOTATORS
from scepter.modules.inference.diffusion_inference import DiffusionInference
from scepter.modules.inference.stylebooth_inference import StyleboothInference
@@ -17,6 +15,7 @@ from scepter.modules.utils.config import Config
from scepter.modules.utils.distribute import we
from scepter.modules.utils.file_system import FS
from scepter.modules.utils.logger import get_logger
+from torchvision.utils import save_image
class DiffusionInferenceTest(unittest.TestCase):
@@ -68,7 +67,7 @@ class DiffusionInferenceTest(unittest.TestCase):
'sdxl_test_prompt_a_cute_dog.png')
save_image(output['images'], save_path)
- # @unittest.skip('')
+ @unittest.skip('')
def test_sd15_scedit_t2i_2D(self):
# init model
config_file = 'scepter/methods/studio/inference/stable_diffusion/sd15_pro.yaml'
@@ -84,7 +83,7 @@ class DiffusionInferenceTest(unittest.TestCase):
'IMAGE_PATH': None,
'TUNER_TYPE': 'SwiftSCE',
'MODEL_PATH':
- 'ms://damo/scepter_scedit@tuners_model/SD1.5/Flat2DArt',
+ 'ms://iic/scepter_scedit@tuners_model/SD1.5/Flat2DArt',
'PROMPT_EXAMPLE': None
}
tuner_model = Config(cfg_dict=tuner_model, load=False)
@@ -100,6 +99,61 @@ class DiffusionInferenceTest(unittest.TestCase):
save_image(output['images'], save_path)
# @unittest.skip('')
+ def test_sd21_scedit_ctr_canny(self):
+ # init model
+ config_file = 'scepter/methods/studio/inference/stable_diffusion/sd21_pro.yaml'
+ cfg = Config(cfg_file=config_file)
+ diff_infer = DiffusionInference(logger=self.logger)
+ diff_infer.init_from_cfg(cfg)
+ # extract condition
+ canny_dict = {
+ 'NAME': 'CannyAnnotator',
+ 'LOW_THRESHOLD': 100,
+ 'HIGH_THRESHOLD': 200
+ }
+ canny_anno = Config(cfg_dict=canny_dict, load=False)
+ canny_ins = ANNOTATORS.build(canny_anno).to(we.device_id)
+ output_height, output_width = 768, 768
+ control_cond_image = Image.open('asset/images/flower.jpg')
+ control_cond_image = TT.Resize(min(output_height,
+ output_width))(control_cond_image)
+ control_cond_image = TT.CenterCrop(
+ (output_height, output_width))(control_cond_image)
+ control_cond_image = canny_ins(np.array(control_cond_image))
+ control_save_path = os.path.join(self.tmp_dir,
+ 'sd21_flower_canny_preproccess.png')
+ save_image(TF.to_tensor(control_cond_image), control_save_path)
+ control_cond_image = Image.open(control_save_path)
+ # load control model
+ control_model = {
+ 'NAME':
+ 'canny',
+ 'NAME_ZH':
+ None,
+ 'DESCRIPTION':
+ None,
+ 'BASE_MODEL':
+ 'SD2.1',
+ 'TYPE':
+ 'Canny',
+ 'MODEL_PATH':
+ 'ms://iic/scepter_scedit@controllable_model/SD2.1/canny_control'
+ }
+ control_model = Config(cfg_dict=control_model, load=False)
+ # prepare data
+ input_data = {'prompt': 'a single flower is shown in front of a tree'}
+ input_params = {
+ 'control_model': control_model,
+ 'control_cond_image': control_cond_image,
+ 'control_scale': 1.0,
+ 'crop_type': 'CenterCrop',
+ 'seed': 2024
+ }
+ output = diff_infer(input_data, **input_params)
+ save_path = os.path.join(self.tmp_dir, 'sd21_flower_canny.png')
+ save_image(output['images'], save_path)
+
+ @unittest.skip('')
def test_sdxl_scedit_ctr_canny(self):
# init model
config_file = 'scepter/methods/studio/inference/sdxl/sdxl1.0_pro.yaml'
@@ -138,7 +192,7 @@ class DiffusionInferenceTest(unittest.TestCase):
'TYPE':
'Canny',
'MODEL_PATH':
- 'ms://damo/scepter_scedit@controllable_model/SD_XL1.0/canny_control'
+ 'ms://iic/scepter_scedit@controllable_model/SD_XL1.0/canny_control'
}
control_model = Config(cfg_dict=control_model, load=False)
# prepare data
@@ -154,7 +208,7 @@ class DiffusionInferenceTest(unittest.TestCase):
save_path = os.path.join(self.tmp_dir, 'sdxl_flower_canny.png')
save_image(output['images'], save_path)
- # @unittest.skip('')
+ @unittest.skip('')
def test_stylebooth(self):
config_file = 'scepter/methods/studio/inference/edit/stylebooth_tb_pro.yaml'
cfg = Config(cfg_file=config_file)
@@ -166,7 +220,7 @@ class DiffusionInferenceTest(unittest.TestCase):
style_edit_image=Image.open(
'asset/images/inpainting_text_ref/ex4_scene_im.jpg'),
style_guide_scale_text=7.5,
- style_guide_scale_image=0.5)
+ style_guide_scale_image=1.5)
save_path = os.path.join(self.tmp_dir,
'stylebooth_test_lowpoly_cute_dog.png')
save_image(output['images'], save_path)
diff --git a/tests/tools/test_annotators.py b/tests/tools/test_annotators.py
index 89b42c0..b7107ab 100644
--- a/tests/tools/test_annotators.py
+++ b/tests/tools/test_annotators.py
@@ -6,7 +6,6 @@ import unittest
import numpy as np
from PIL import Image
-
from scepter.modules.annotator.registry import ANNOTATORS
from scepter.modules.utils.config import Config
from scepter.modules.utils.distribute import we
@@ -79,7 +78,7 @@ class AnnotatorTest(unittest.TestCase):
'NAME':
'HedAnnotator',
'PRETRAINED_MODEL':
- 'ms://damo/scepter_scedit@annotator/ckpts/ControlNetHED.pth'
+ 'ms://iic/scepter_scedit@annotator/ckpts/ControlNetHED.pth'
}
hed_anno = Config(cfg_dict=hed_dict, load=False)
hed_ins = ANNOTATORS.build(hed_anno).to(we.device_id)
@@ -95,9 +94,9 @@ class AnnotatorTest(unittest.TestCase):
'NAME':
'OpenposeAnnotator',
'BODY_MODEL_PATH':
- 'ms://damo/scepter_scedit@annotator/ckpts/body_pose_model.pth',
+ 'ms://iic/scepter_scedit@annotator/ckpts/body_pose_model.pth',
'HAND_MODEL_PATH':
- 'ms://damo/scepter_scedit@annotator/ckpts/hand_pose_model.pth'
+ 'ms://iic/scepter_scedit@annotator/ckpts/hand_pose_model.pth'
}
openpose_anno = Config(cfg_dict=openpose_dict, load=False)
openpose_ins = ANNOTATORS.build(openpose_anno).to(we.device_id)
@@ -112,7 +111,7 @@ class AnnotatorTest(unittest.TestCase):
midas_dict = {
'NAME': 'MidasDetector',
'PRETRAINED_MODEL':
- 'ms://damo/scepter_scedit@annotator/ckpts/dpt_hybrid-midas-501f0c75.pt',
+ 'ms://iic/scepter_scedit@annotator/ckpts/dpt_hybrid-midas-501f0c75.pt',
'A': 6.2,
'BG_TH': 0.1
}
@@ -129,7 +128,7 @@ class AnnotatorTest(unittest.TestCase):
mlsd_dict = {
'NAME': 'MLSDdetector',
'PRETRAINED_MODEL':
- 'ms://damo/scepter_scedit@annotator/ckpts/mlsd_large_512_fp32.pth',
+ 'ms://iic/scepter_scedit@annotator/ckpts/mlsd_large_512_fp32.pth',
'THR_V': 0.1,
'THR_D': 0.1
}
@@ -184,30 +183,30 @@ class AnnotatorTest(unittest.TestCase):
hed_dict = {
'NAME': 'HedAnnotator',
'PRETRAINED_MODEL':
- 'ms://damo/scepter_scedit@annotator/ckpts/ControlNetHED.pth',
+ 'ms://iic/scepter_scedit@annotator/ckpts/ControlNetHED.pth',
'INPUT_KEYS': ['img'],
'OUTPUT_KEYS': ['hed_img']
}
openpose_dict = {
'NAME': 'OpenposeAnnotator',
'BODY_MODEL_PATH':
- 'ms://damo/scepter_scedit@annotator/ckpts/body_pose_model.pth',
+ 'ms://iic/scepter_scedit@annotator/ckpts/body_pose_model.pth',
'HAND_MODEL_PATH':
- 'ms://damo/scepter_scedit@annotator/ckpts/hand_pose_model.pth',
+ 'ms://iic/scepter_scedit@annotator/ckpts/hand_pose_model.pth',
'INPUT_KEYS': ['img'],
'OUTPUT_KEYS': ['openpose_img']
}
midas_dict = {
'NAME': 'MidasDetector',
'PRETRAINED_MODEL':
- 'ms://damo/scepter_scedit@annotator/ckpts/dpt_hybrid-midas-501f0c75.pt',
+ 'ms://iic/scepter_scedit@annotator/ckpts/dpt_hybrid-midas-501f0c75.pt',
'INPUT_KEYS': ['img'],
'OUTPUT_KEYS': ['midas_img']
}
mlsd_dict = {
'NAME': 'MLSDdetector',
'PRETRAINED_MODEL':
- 'ms://damo/scepter_scedit@annotator/ckpts/mlsd_large_512_fp32.pth',
+ 'ms://iic/scepter_scedit@annotator/ckpts/mlsd_large_512_fp32.pth',
'INPUT_KEYS': ['img'],
'OUTPUT_KEYS': ['mlsd_img']
}
diff --git a/tests/tools/test_convert_tuner.py b/tests/tools/test_convert_tuner.py
new file mode 100644
index 0000000..3a6f106
--- /dev/null
+++ b/tests/tools/test_convert_tuner.py
@@ -0,0 +1,58 @@
+# -*- coding: utf-8 -*-
+# Copyright (c) Alibaba, Inc. and its affiliates.
+
+import os
+import unittest
+
+from scepter.modules.utils.config import Config
+from scepter.modules.utils.file_system import FS
+
+
+class ConvertTunerTest(unittest.TestCase):
+ def setUp(self):
+ print(('Testing %s.%s' % (type(self).__name__, self._testMethodName)))
+ self.convert_path = './cache/save_data/module_transform'
+ self.convert_source_path = './cache/save_data/module_transform/source'
+ self.convert_target_path = './cache/save_data/module_transform/target'
+ if not os.path.exists(self.convert_target_path):
+ os.makedirs(self.convert_target_path)
+ fs_info = {
+ 'NAME': 'ModelscopeFs',
+ 'TEMP_DIR': self.convert_source_path
+ }
+ config = Config(load=False, cfg_dict=fs_info)
+ FS.init_fs_client(config)
+
+ def tearDown(self):
+ super().tearDown()
+
+ # @unittest.skip('')
+ def test_scepter_to_civitai(self):
+ save_path = os.path.join(self.convert_target_path, 'civitai_tuner',
+ 'tuner.safetensors')
+ scepter_tuner_path = 'ms://sd_lora/SD15-LoRA-3DStyle-Scepter-Test'
+ with FS.get_dir_to_local_dir(scepter_tuner_path,
+ wait_finish=True) as local_path:
+ print(f'Download from {scepter_tuner_path} to {local_path}')
+ self.assertTrue(os.path.exists(local_path))
+ os.system('python scepter/tools/convert_tuner.py '
+ f'--source {local_path} '
+ f'--target {save_path} '
+ f'--export true')
+
+ # @unittest.skip('')
+ def test_civitai_to_scepter(self):
+ save_path = os.path.join(self.convert_target_path, 'scepter_tuner')
+ civitai_tuner_path = 'ms://sd_lora/SD15-LoRA-AnimeLineartStyle@animeoutlineV4_16.safetensors'
+ with FS.get_dir_to_local_dir(civitai_tuner_path,
+ wait_finish=True) as local_path:
+ print(f'Download from {civitai_tuner_path} to {local_path}')
+ self.assertTrue(os.path.exists(local_path))
+ os.system('python scepter/tools/convert_tuner.py '
+ f'--source {local_path} '
+ f'--target {save_path} '
+ f'--export false')
+
+
+if __name__ == '__main__':
+ unittest.main()
diff --git a/tests/tools/test_inference.py b/tests/tools/test_inference.py
index e77f133..76cc20a 100644
--- a/tests/tools/test_inference.py
+++ b/tests/tools/test_inference.py
@@ -166,7 +166,7 @@ class InferenceTest(unittest.TestCase):
"--prompt 'a single flower is shown in front of a tree' --save_folder 'test_flower_canny' "
"--image_size 768 --task control --image 'asset/images/flower.jpg' --control_mode canny "
'--pretrained_model '
- 'ms://damo/scepter_scedit@controllable_model/SD2.1/canny_control/0_SwiftSCETuning/pytorch_model.bin'
+ 'ms://iic/scepter_scedit@controllable_model/SD2.1/canny_control/0_SwiftSCETuning/pytorch_model.bin'
)
os.system(
@@ -175,7 +175,7 @@ class InferenceTest(unittest.TestCase):
"--prompt 'super mario' --save_folder 'test_mario_pose' "
"--image_size 768 --task control --image 'asset/images/pose_source.png' --control_mode source "
'--pretrained_model '
- 'ms://damo/scepter_scedit@controllable_model/SD2.1/pose_control/0_SwiftSCETuning/pytorch_model.bin'
+ 'ms://iic/scepter_scedit@controllable_model/SD2.1/pose_control/0_SwiftSCETuning/pytorch_model.bin'
)
diff --git a/tests/tools/test_train.py b/tests/tools/test_train.py
index 418de33..431a4b2 100644
--- a/tests/tools/test_train.py
+++ b/tests/tools/test_train.py
@@ -13,11 +13,19 @@ class TrainTest(unittest.TestCase):
os.makedirs(self.tmp_dir)
self.data_dir = './cache/datasets'
if not os.path.exists(self.data_dir):
- data_cmd = """mkdir -p cache/datasets/ && wget 'https://www.modelscope.cn/api/v1/models
- /iic/scepter/repo?Revision=master&FilePath=datasets/3D_example_txt.zip'
- -O cache/datasets/3D_example_txt.zip &&
- unzip cache/datasets/3D_example_txt.zip
- -d cache/datasets/ && rm cache/datasets/3D_example_txt.zip"""
+ data_cmd = (
+ 'mkdir -p cache/datasets/ '
+ "&& wget 'https://www.modelscope.cn/api/v1/models/iic/scepter/repo?Revision=master&FilePath="
+ "datasets/3D_example_txt.zip' -O cache/datasets/3D_example_txt.zip "
+ '&& unzip cache/datasets/3D_example_txt.zip -d cache/datasets/ '
+ '&& rm cache/datasets/3D_example_txt.zip')
+ os.system(data_cmd)
+ data_cmd = (
+ 'mkdir -p cache/datasets/ '
+ "&& wget 'https://www.modelscope.cn/api/v1/models/iic/scepter/repo?Revision=master&FilePath="
+ "datasets/hed_pair.zip' -O cache/datasets/hed_pair.zip "
+ '&& unzip cache/datasets/hed_pair.zip -d cache/datasets/ '
+ '&& rm cache/datasets/hed_pair.zip')
os.system(data_cmd)
def tearDown(self):
@@ -209,6 +217,14 @@ class TrainTest(unittest.TestCase):
os.path.join(self.tmp_dir,
'sdxl_1024_sce_ctr_color_datatxt/checkpoints')))
+ def test_edit_example(self):
+ os.system('python scepter/tools/run_train.py '
+ '--cfg scepter/methods/edit/edit_512_lora.yaml '
+ '--max_steps 100')
+ self.assertTrue(
+ os.path.exists(
+ os.path.join(self.tmp_dir, 'edit_512_lora/checkpoints')))
+
if __name__ == '__main__':
unittest.main()
diff --git a/tests/utils/test_fs.py b/tests/utils/test_fs.py
index 4023e53..06b7a5e 100644
--- a/tests/utils/test_fs.py
+++ b/tests/utils/test_fs.py
@@ -80,7 +80,7 @@ class FSTest(unittest.TestCase):
FS.init_fs_client(config)
st_time = time.time()
- path = 'ms://damo/scepter_scedit'
+ path = 'ms://iic/scepter_scedit'
with FS.get_dir_to_local_dir(path, wait_finish=True) as local_path:
print(
f'Download from {path} to {local_path}, take {time.time()-st_time}'
@@ -88,7 +88,7 @@ class FSTest(unittest.TestCase):
self.assertTrue(os.path.exists(local_path))
st_time = time.time()
- path = 'ms://damo/scepter_scedit'
+ path = 'ms://iic/scepter_scedit'
with FS.get_dir_to_local_dir(path, wait_finish=True) as local_path:
print(
f'Download from {path} to {local_path}, take {time.time()-st_time}'
@@ -96,7 +96,7 @@ class FSTest(unittest.TestCase):
self.assertTrue(os.path.exists(local_path))
st_time = time.time()
- path = 'ms://damo/scepter_scedit@controllable_model/SD2.1/canny_control/'
+ path = 'ms://iic/scepter_scedit@controllable_model/SD2.1/canny_control/'
with FS.get_dir_to_local_dir(path, wait_finish=True) as local_path:
print(
f'Download from {path} to {local_path}, take {time.time()-st_time}'
@@ -104,7 +104,7 @@ class FSTest(unittest.TestCase):
self.assertTrue(os.path.exists(local_path))
st_time = time.time()
- path = 'ms://damo/scepter_scedit@controllable_model/SD2.1/canny_control/'
+ path = 'ms://iic/scepter_scedit@controllable_model/SD2.1/canny_control/'
with FS.get_dir_to_local_dir(path, wait_finish=True) as local_path:
print(
f'Download from {path} to {local_path}, take {time.time()-st_time}'
@@ -112,7 +112,7 @@ class FSTest(unittest.TestCase):
self.assertTrue(os.path.exists(local_path))
st_time = time.time()
- path = 'ms://damo/scepter@mantra_images/SD_XL1.0/894f40ed44b37c3372e6a22b8ae577a4.png'
+ path = 'ms://iic/scepter@mantra_images_jpg/SD_XL1.0/894f40ed44b37c3372e6a22b8ae577a4.jpg'
with FS.get_from(path, wait_finish=True) as local_path:
print(
f'Download from {path} to {local_path}, take {time.time()-st_time}'
@@ -120,7 +120,7 @@ class FSTest(unittest.TestCase):
self.assertTrue(os.path.exists(local_path))
st_time = time.time()
- path = 'ms://damo/scepter@mantra_images/SD2.1/894f40ed44b37c3372e6a22b8ae577a4.png'
+ path = 'ms://iic/scepter@mantra_images_jpg/SD2.1/894f40ed44b37c3372e6a22b8ae577a4.jpg'
with FS.get_from(path, wait_finish=True) as local_path:
print(
f'Download from {path} to {local_path}, take {time.time()-st_time}'
@@ -128,7 +128,7 @@ class FSTest(unittest.TestCase):
self.assertTrue(os.path.exists(local_path))
st_time = time.time()
- path = 'ms://damo/scepter@mantra_images/SD2.1/894f40ed44b37c3372e6a22b8ae577a4.png'
+ path = 'ms://iic/scepter@mantra_images_jpg/SD2.1/894f40ed44b37c3372e6a22b8ae577a4.jpg'
with FS.get_from(path, wait_finish=True) as local_path:
print(
f'Download from {path} to {local_path}, take {time.time()-st_time}'