v1.0.0 update

This commit is contained in:
hanzhn
2024-05-27 13:15:48 +08:00
parent 8076aae7da
commit c70ef0fc47
186 changed files with 7505 additions and 3117 deletions
+1 -1
View File
@@ -15,6 +15,6 @@ dev
scepter.egg-info
.readthedocs.yml
1.9
MANIFEST.in
#MANIFEST.in
*resources
*.ipynb_checkpoints*
Binary file not shown.

After

Width:  |  Height:  |  Size: 90 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 66 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 66 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 27 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 87 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 91 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 27 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 72 KiB

+1
View File
@@ -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
+15 -2
View File
@@ -29,8 +29,21 @@ Given an original image, image editing aims to generate an image that align with
<td><img src="../../../asset/images/stylebooth/retrogame.jpeg" width="240"></td>
<td><img src="../../../asset/images/stylebooth/vangogh.jpeg" width="240"></td>
</tr>
<tr>
<td><strong>Origin Image</strong></td>
<td><strong>Lowpoly</strong></td>
<td><strong>Colored Pencil Art</strong></td>
<td><strong>Watercolor</strong></td>
<td><strong>misc-disco</strong></td>
</tr>
<tr>
<td><img src="../../../asset/images/stylebooth/mountain.jpg" width="240"></td>
<td><img src="../../../asset/images/stylebooth/lowpoly.jpg" width="240"></td>
<td><img src="../../../asset/images/stylebooth/colorpencil.jpeg" width="240"></td>
<td><img src="../../../asset/images/stylebooth/watercolor.jpeg" width="240"></td>
<td><img src="../../../asset/images/stylebooth/disco.jpeg" width="240"></td>
</tr>
</table>
## 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)
+6 -1
View File
@@ -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
```
+2 -2
View File
@@ -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
```
+1
View File
@@ -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
-1
View File
@@ -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
+8 -29
View File
@@ -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
<table>
<tr>
<td><strong>Origin Image</strong><br>Gold Dragon Tuner</td>
<td><strong>Graffiti Art</strong></td>
<td><strong>Adorable Kawaii</strong></td>
<td><strong>game-retro game</strong></td>
<td><strong>Vincent van Gogh</strong></td>
</tr>
<tr>
<td><img src="asset/images/scedit/tuner_gold_dragon.jpeg" width="240"></td>
<td><img src="asset/images/stylebooth/graffiti.jpeg" width="240"></td>
<td><img src="asset/images/stylebooth/kawaii.jpeg" width="240"></td>
<td><img src="asset/images/stylebooth/retrogame.jpeg" width="240"></td>
<td><img src="asset/images/stylebooth/vangogh.jpeg" width="240"></td>
</tr>
</table>
### 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)
<table>
<tr>
<td><strong>Origin Image</strong></td>
<td><strong>Lowpoly</strong></td>
<td><strong>Colored Pencil Art</strong></td>
<td><strong>Watercolor</strong></td>
<td><strong>misc-disco</strong></td>
<td align="center"><strong>De-Text</strong><br><img src="asset/images/edit_tuner/text.jpg" width="300"><img src="asset/images/edit_tuner/detext.jpeg" width="300"><br>Prompt: <strong>"Remove the texts"</strong> (Left: input Right: output)</td>
<td align="center"><strong>Image2Hed</strong><br><img src="asset/images/edit_tuner/cat_512.jpg" width="300"><img src="asset/images/edit_tuner/hed.jpeg" width="300"><br>Prompt: <strong>"Convert to an edge map"</strong> (Left: input Right: output)</td>
</tr>
<tr>
<td><img src="asset/images/stylebooth/mountain.jpg" width="240"></td>
<td><img src="asset/images/stylebooth/lowpoly.jpg" width="240"></td>
<td><img src="asset/images/stylebooth/colorpencil.jpeg" width="240"></td>
<td><img src="asset/images/stylebooth/watercolor.jpeg" width="240"></td>
<td><img src="asset/images/stylebooth/disco.jpeg" width="240"></td>
<td align="center"><strong>Image2Depth</strong><br><img src="asset/images/edit_tuner/house.jpg" width="300"><img src="asset/images/edit_tuner/image2depth.jpeg" width="300"><br>Prompt: <strong>"Calculate the depth map"</strong> (Left: input Right: output)</td>
<td align="center"><strong>Depth2Image</strong><br><img src="asset/images/edit_tuner/depth.jpg" width="300"><img src="asset/images/edit_tuner/depth2image.jpeg" width="300"><br>Prompt: <strong>"Convert depth map into color image"</strong> (Left: input Right: output)</td>
</tr>
</table>
@@ -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) |
+250
View File
@@ -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'
@@ -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
@@ -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
@@ -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
@@ -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
File diff suppressed because it is too large Load Diff
@@ -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
@@ -2,7 +2,7 @@ NAME: EDIT
IS_DEFAULT: False
DEFAULT_PARAS:
PARAS:
RESOLUTIONS: [[1024, 1024]]
RESOLUTIONS: [[512, 512], [1024, 1024]]
INPUT:
IMAGE:
PROMPT: ""
@@ -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
-
@@ -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'
@@ -1,7 +1,7 @@
---
frameworks:
- Pytorch
license: Apache License 2.0
license: apache-2.0
tasks:
- efficient-diffusion-tuning
---
@@ -1,7 +1,7 @@
---
frameworks:
- Pytorch
license: Apache License 2.0
license: apache-2.0
tasks:
- efficient-diffusion-tuning
---
@@ -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' ]
@@ -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
-1
View File
@@ -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
-1
View File
@@ -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
+15 -12
View File
@@ -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():
@@ -0,0 +1,2 @@
# -*- coding: utf-8 -*-
# Copyright (c) Alibaba, Inc. and its affiliates.
+1
View File
@@ -1,4 +1,5 @@
# -*- coding: utf-8 -*-
# Copyright (c) Alibaba, Inc. and its affiliates.
# based on https://github.com/isl-org/MiDaS
import cv2
@@ -1,4 +1,5 @@
# -*- coding: utf-8 -*-
# Copyright (c) Alibaba, Inc. and its affiliates.
import torch
@@ -1,4 +1,5 @@
# -*- coding: utf-8 -*-
# Copyright (c) Alibaba, Inc. and its affiliates.
import torch
import torch.nn as nn
@@ -1,4 +1,5 @@
# -*- coding: utf-8 -*-
# Copyright (c) Alibaba, Inc. and its affiliates.
import torch
import torch.nn as nn
@@ -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
@@ -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
@@ -1,4 +1,5 @@
# -*- coding: utf-8 -*-
# Copyright (c) Alibaba, Inc. and its affiliates.
import math
import cv2
+1
View File
@@ -1,4 +1,5 @@
# -*- coding: utf-8 -*-
# Copyright (c) Alibaba, Inc. and its affiliates.
"""Utils for monoDepth."""
import re
import sys
+1
View File
@@ -1,4 +1,5 @@
# -*- coding: utf-8 -*-
# Copyright (c) Alibaba, Inc. and its affiliates.
import math
import types
-1
View File
@@ -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
@@ -0,0 +1,2 @@
# -*- coding: utf-8 -*-
# Copyright (c) Alibaba, Inc. and its affiliates.
@@ -1,4 +1,5 @@
# -*- coding: utf-8 -*-
# Copyright (c) Alibaba, Inc. and its affiliates.
import torch
import torch.nn as nn
@@ -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
+1
View File
@@ -1,4 +1,5 @@
# -*- coding: utf-8 -*-
# Copyright (c) Alibaba, Inc. and its affiliates.
# modified by lihaoweicv
# pytorch version
-1
View File
@@ -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
+2 -3
View File
@@ -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'
+5 -5
View File
@@ -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']
}
+1 -2
View File
@@ -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):
+5 -1
View File
@@ -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:
+18 -11
View File
@@ -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
},
+1 -2
View File
@@ -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, )
+1 -2
View File
@@ -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):
-1
View File
@@ -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,
@@ -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
@@ -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),
@@ -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,
@@ -7,7 +7,6 @@ import os
import warnings
import torch
from scepter.modules.utils.file_system import FS
try:
@@ -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()
@@ -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
@@ -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()
@@ -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
@@ -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,
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -4,7 +4,6 @@
import os
import torch.nn as nn
from scepter.modules.utils.config import dict_to_yaml
@@ -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
@@ -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
-1
View File
@@ -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,
+1 -2
View File
@@ -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
@@ -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()
+2 -2
View File
@@ -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()
+1 -2
View File
@@ -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()
@@ -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
@@ -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
@@ -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
+2 -3
View File
@@ -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}
@@ -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
@@ -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
@@ -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)
-1
View File
@@ -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
@@ -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)
@@ -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
@@ -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
@@ -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
+1 -2
View File
@@ -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()
@@ -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

Some files were not shown because too many files have changed in this diff Show More