Copy disabled (too large)
Download .txt
Showing preview only (32,438K chars total). Download the full file to get everything.
Repository: vladmandic/sdnext
Branch: master
Commit: c9e21a51db77
Files: 1302
Total size: 30.7 MB
Directory structure:
gitextract_kfv17jig/
├── .dockerignore
├── .gitignore
├── .gitmodules
├── .pylintrc
├── .ruff.toml
├── CHANGELOG.md
├── CITATION.cff
├── CODE_OF_CONDUCT
├── CONTRIBUTING
├── README.md
├── SECURITY.md
├── TODO.md
├── cli/
│ ├── api-checkpoint.py
│ ├── api-control.py
│ ├── api-detect.py
│ ├── api-enhance.py
│ ├── api-faceid.py
│ ├── api-grid.py
│ ├── api-history.py
│ ├── api-img2img.py
│ ├── api-info.py
│ ├── api-interrogate.py
│ ├── api-json.py
│ ├── api-mask.py
│ ├── api-model.js
│ ├── api-preprocess.py
│ ├── api-progress.py
│ ├── api-pulid.js
│ ├── api-samplers.py
│ ├── api-txt2img.js
│ ├── api-txt2img.py
│ ├── api-upscale.py
│ ├── api-vqa.py
│ ├── api-xyz.py
│ ├── api-xyzenum.py
│ ├── civitai-search.py
│ ├── download-file.py
│ ├── full-test.sh
│ ├── gen-styles.py
│ ├── generate-random.json
│ ├── generate.json
│ ├── generate.py
│ ├── git-clone.py
│ ├── hf-search.py
│ ├── image-encode.py
│ ├── image-exif.py
│ ├── image-grid.py
│ ├── image-palette.py
│ ├── image-search.py
│ ├── image-watermark.py
│ ├── install-stablefast.py
│ ├── lcm-convert.py
│ ├── load-unet.py
│ ├── locale-sanitize-override.py
│ ├── localize.js
│ ├── model-keys.py
│ ├── model-metadata.py
│ ├── nvidia-smi.py
│ ├── process.py
│ ├── process_options.py
│ ├── requirements.txt
│ ├── run-benchmark.py
│ ├── sdapi.py
│ ├── search-docs.py
│ ├── test-schedulers.py
│ ├── test-tagger.py
│ ├── test-weighted-lists.py
│ ├── util.py
│ ├── validate-locale.py
│ ├── video-extract.py
│ └── zluda-python.py
├── configs/
│ ├── Dockerfile.cuda
│ ├── Dockerfile.ipex
│ ├── Dockerfile.openvino
│ ├── Dockerfile.rocm
│ ├── chroma/
│ │ ├── model_index.json
│ │ ├── scheduler/
│ │ │ └── scheduler_config.json
│ │ ├── text_encoder/
│ │ │ └── config.json
│ │ ├── tokenizer/
│ │ │ ├── added_tokens.json
│ │ │ ├── special_tokens_map.json
│ │ │ ├── spiece.model
│ │ │ └── tokenizer_config.json
│ │ ├── transformer/
│ │ │ ├── config.json
│ │ │ └── diffusion_pytorch_model.safetensors.index.json
│ │ └── vae/
│ │ └── config.json
│ ├── flux/
│ │ ├── model_index.json
│ │ ├── scheduler/
│ │ │ └── scheduler_config.json
│ │ ├── text_encoder/
│ │ │ └── config.json
│ │ ├── text_encoder_2/
│ │ │ ├── config.json
│ │ │ └── model.safetensors.index.json
│ │ ├── tokenizer/
│ │ │ ├── merges.txt
│ │ │ ├── special_tokens_map.json
│ │ │ ├── tokenizer_config.json
│ │ │ └── vocab.json
│ │ ├── tokenizer_2/
│ │ │ ├── special_tokens_map.json
│ │ │ ├── spiece.model
│ │ │ ├── tokenizer.json
│ │ │ └── tokenizer_config.json
│ │ ├── transformer/
│ │ │ ├── config.json
│ │ │ └── diffusion_pytorch_model.safetensors.index.json
│ │ └── vae/
│ │ └── config.json
│ ├── olive/
│ │ ├── sd/
│ │ │ ├── text_encoder.json
│ │ │ ├── unet.json
│ │ │ ├── vae_decoder.json
│ │ │ └── vae_encoder.json
│ │ └── sdxl/
│ │ ├── text_encoder.json
│ │ ├── text_encoder_2.json
│ │ ├── unet.json
│ │ ├── vae_decoder.json
│ │ └── vae_encoder.json
│ ├── playground-v2.5-1024px-aesthetic.fp16_vae.json
│ ├── sd15/
│ │ ├── feature_extractor/
│ │ │ └── preprocessor_config.json
│ │ ├── model_index.json
│ │ ├── safety_checker/
│ │ │ └── config.json
│ │ ├── scheduler/
│ │ │ └── scheduler_config.json
│ │ ├── text_encoder/
│ │ │ └── config.json
│ │ ├── tokenizer/
│ │ │ ├── merges.txt
│ │ │ ├── special_tokens_map.json
│ │ │ ├── tokenizer_config.json
│ │ │ └── vocab.json
│ │ ├── unet/
│ │ │ └── config.json
│ │ └── vae/
│ │ └── config.json
│ ├── sd3/
│ │ ├── model_index.json
│ │ ├── scheduler/
│ │ │ └── scheduler_config.json
│ │ ├── text_encoder/
│ │ │ └── config.json
│ │ ├── text_encoder_2/
│ │ │ └── config.json
│ │ ├── text_encoder_3/
│ │ │ └── config.json
│ │ ├── tokenizer/
│ │ │ ├── merges.txt
│ │ │ ├── special_tokens_map.json
│ │ │ ├── tokenizer_config.json
│ │ │ └── vocab.json
│ │ ├── tokenizer_2/
│ │ │ ├── merges.txt
│ │ │ ├── special_tokens_map.json
│ │ │ ├── tokenizer_config.json
│ │ │ └── vocab.json
│ │ ├── tokenizer_3/
│ │ │ ├── special_tokens_map.json
│ │ │ ├── spiece.model
│ │ │ ├── tokenizer.json
│ │ │ └── tokenizer_config.json
│ │ ├── transformer/
│ │ │ └── config.json
│ │ └── vae/
│ │ └── config.json
│ ├── sdxl/
│ │ ├── model_index.json
│ │ ├── scheduler/
│ │ │ └── scheduler_config.json
│ │ ├── text_encoder/
│ │ │ └── config.json
│ │ ├── text_encoder_2/
│ │ │ └── config.json
│ │ ├── tokenizer/
│ │ │ ├── merges.txt
│ │ │ ├── special_tokens_map.json
│ │ │ ├── tokenizer_config.json
│ │ │ └── vocab.json
│ │ ├── tokenizer_2/
│ │ │ ├── merges.txt
│ │ │ ├── special_tokens_map.json
│ │ │ ├── tokenizer_config.json
│ │ │ └── vocab.json
│ │ ├── unet/
│ │ │ └── config.json
│ │ └── vae/
│ │ └── config.json
│ ├── sdxl-refiner/
│ │ ├── model_index.json
│ │ ├── scheduler/
│ │ │ └── scheduler_config.json
│ │ ├── text_encoder_2/
│ │ │ └── config.json
│ │ ├── tokenizer_2/
│ │ │ ├── merges.txt
│ │ │ ├── special_tokens_map.json
│ │ │ ├── tokenizer_config.json
│ │ │ └── vocab.json
│ │ ├── unet/
│ │ │ └── config.json
│ │ └── vae/
│ │ └── config.json
│ └── stable-cascade/
│ ├── prior/
│ │ └── config.json
│ └── prior_lite/
│ └── config.json
├── data/
│ ├── previews.json
│ ├── reference-cloud.json
│ ├── reference-community.json
│ ├── reference-distilled.json
│ ├── reference-quant.json
│ ├── reference.json
│ └── upscalers.json
├── eslint.config.mjs
├── html/
│ ├── art-styles.json
│ ├── licenses.html
│ ├── locale_de.json
│ ├── locale_en.json
│ ├── locale_es.json
│ ├── locale_fr.json
│ ├── locale_hr.json
│ ├── locale_it.json
│ ├── locale_ja.json
│ ├── locale_ko.json
│ ├── locale_pt.json
│ ├── locale_ru.json
│ ├── locale_zh.json
│ ├── manifest.json
│ ├── override_en.json
│ ├── override_hr.json
│ ├── override_ko.json
│ └── swagger.css
├── installer.py
├── javascript/
│ ├── amethyst-nightfall.css
│ ├── aspectRatioOverlay.js
│ ├── authWrap.js
│ ├── base.css
│ ├── black-gray.css
│ ├── black-orange.css
│ ├── black-teal-reimagined.css
│ ├── black-teal.css
│ ├── changelog.js
│ ├── civitai.js
│ ├── contextMenus.js
│ ├── control.js
│ ├── docs.js
│ ├── dragDrop.js
│ ├── editAttention.js
│ ├── emerald-paradise.css
│ ├── exifr.js
│ ├── extensions.js
│ ├── extraNetworks.js
│ ├── gallery.js
│ ├── generationParams.js
│ ├── gpu.js
│ ├── guidance.js
│ ├── hires.js
│ ├── history.js
│ ├── imageParams.js
│ ├── imageViewer.js
│ ├── indexdb.js
│ ├── inputAccordion.js
│ ├── invoked.css
│ ├── light-teal.css
│ ├── loader.js
│ ├── logMonitor.js
│ ├── logger.js
│ ├── login.js
│ ├── midnight-barbie.css
│ ├── monitor.js
│ ├── notification.js
│ ├── orchid-dreams.css
│ ├── panZoom.js
│ ├── progressBar.js
│ ├── promptChecker.js
│ ├── script.js
│ ├── sdnext.css
│ ├── setHints.js
│ ├── settings.js
│ ├── simple-dark.css
│ ├── simple-light.css
│ ├── startup.js
│ ├── timeless-beige.css
│ ├── timesheet.css
│ ├── timesheet.js
│ ├── trainMonitor.js
│ ├── ui.js
│ └── uiConfig.js
├── launch.py
├── models/
│ └── VAE-approx/
│ └── model.pt
├── modules/
│ ├── apg/
│ │ ├── __init__.py
│ │ ├── pipeline_stable_cascade_prior_apg.py
│ │ ├── pipeline_stable_diffision_xl_apg.py
│ │ └── pipeline_stable_diffusion_apg.py
│ ├── api/
│ │ ├── api.py
│ │ ├── control.py
│ │ ├── docs.py
│ │ ├── endpoints.py
│ │ ├── gallery.py
│ │ ├── generate.py
│ │ ├── gpu.py
│ │ ├── helpers.py
│ │ ├── loras.py
│ │ ├── middleware.py
│ │ ├── mime.py
│ │ ├── models.py
│ │ ├── nudenet.py
│ │ ├── nvml.py
│ │ ├── process.py
│ │ ├── rocm_smi.py
│ │ ├── script.py
│ │ ├── server.py
│ │ ├── xpu_smi.py
│ │ └── xyz_grid.py
│ ├── attention.py
│ ├── ben2/
│ │ ├── __init__.py
│ │ └── ben2_model.py
│ ├── cachedit.py
│ ├── call_queue.py
│ ├── cfgzero/
│ │ ├── __init__.py
│ │ ├── cogview4_pipeline.py
│ │ ├── flux_pipeline.py
│ │ ├── hidream_pipeline.py
│ │ ├── hunyuan_t2v_pipeline.py
│ │ ├── sd3_pipeline.py
│ │ └── wan_t2v_pipeline.py
│ ├── civitai/
│ │ ├── api_civitai.py
│ │ ├── download_civitai.py
│ │ ├── metadata_civitai.py
│ │ └── search_civitai.py
│ ├── cmd_args.py
│ ├── control/
│ │ ├── proc/
│ │ │ ├── __init__.py
│ │ │ ├── canny.py
│ │ │ ├── depth_anything/
│ │ │ │ ├── __init__.py
│ │ │ │ ├── blocks.py
│ │ │ │ ├── dpt.py
│ │ │ │ └── util/
│ │ │ │ └── transform.py
│ │ │ ├── depth_pro/
│ │ │ │ └── __init__.py
│ │ │ ├── dpt.py
│ │ │ ├── dwpose/
│ │ │ │ ├── __init__.py
│ │ │ │ ├── config/
│ │ │ │ │ ├── dwpose-l_384x288.py
│ │ │ │ │ ├── rtmpose-l_8xb32-270e_coco-ubody-wholebody-384x288.py
│ │ │ │ │ ├── rtmpose-m_8xb64-270e_coco-ubody-wholebody-256x192.py
│ │ │ │ │ ├── rtmpose-t_8xb64-270e_coco-ubody-wholebody-256x192.py
│ │ │ │ │ └── yolox_l_8xb8-300e_coco.py
│ │ │ │ ├── draw.py
│ │ │ │ └── wholebody.py
│ │ │ ├── edge.py
│ │ │ ├── glpn.py
│ │ │ ├── hed.py
│ │ │ ├── leres/
│ │ │ │ ├── __init__.py
│ │ │ │ ├── leres/
│ │ │ │ │ ├── LICENSE
│ │ │ │ │ ├── Resnet.py
│ │ │ │ │ ├── Resnext_torch.py
│ │ │ │ │ ├── __init__.py
│ │ │ │ │ ├── depthmap.py
│ │ │ │ │ ├── multi_depth_model_woauxi.py
│ │ │ │ │ ├── net_tools.py
│ │ │ │ │ └── network_auxi.py
│ │ │ │ └── pix2pix/
│ │ │ │ ├── LICENSE
│ │ │ │ ├── __init__.py
│ │ │ │ ├── models/
│ │ │ │ │ ├── __init__.py
│ │ │ │ │ ├── base_model.py
│ │ │ │ │ ├── base_model_hg.py
│ │ │ │ │ ├── networks.py
│ │ │ │ │ └── pix2pix4depth_model.py
│ │ │ │ ├── options/
│ │ │ │ │ ├── __init__.py
│ │ │ │ │ ├── base_options.py
│ │ │ │ │ └── test_options.py
│ │ │ │ └── util/
│ │ │ │ ├── __init__.py
│ │ │ │ └── util.py
│ │ │ ├── lineart.py
│ │ │ ├── lineart_anime.py
│ │ │ ├── marigold/
│ │ │ │ ├── __init__.py
│ │ │ │ ├── marigold_pipeline.py
│ │ │ │ └── util/
│ │ │ │ ├── batchsize.py
│ │ │ │ ├── ensemble.py
│ │ │ │ ├── image_util.py
│ │ │ │ └── seed_all.py
│ │ │ ├── mediapipe_face.py
│ │ │ ├── mediapipe_face_util.py
│ │ │ ├── midas/
│ │ │ │ ├── LICENSE
│ │ │ │ ├── __init__.py
│ │ │ │ ├── api.py
│ │ │ │ ├── midas/
│ │ │ │ │ ├── __init__.py
│ │ │ │ │ ├── base_model.py
│ │ │ │ │ ├── blocks.py
│ │ │ │ │ ├── dpt_depth.py
│ │ │ │ │ ├── midas_net.py
│ │ │ │ │ ├── midas_net_custom.py
│ │ │ │ │ ├── transforms.py
│ │ │ │ │ └── vit.py
│ │ │ │ └── utils.py
│ │ │ ├── mlsd/
│ │ │ │ ├── LICENSE
│ │ │ │ ├── __init__.py
│ │ │ │ ├── models/
│ │ │ │ │ ├── __init__.py
│ │ │ │ │ ├── mbv2_mlsd_large.py
│ │ │ │ │ └── mbv2_mlsd_tiny.py
│ │ │ │ └── utils.py
│ │ │ ├── normalbae/
│ │ │ │ ├── LICENSE
│ │ │ │ ├── __init__.py
│ │ │ │ └── nets/
│ │ │ │ ├── NNET.py
│ │ │ │ ├── __init__.py
│ │ │ │ ├── baseline.py
│ │ │ │ └── submodules/
│ │ │ │ ├── __init__.py
│ │ │ │ ├── decoder.py
│ │ │ │ ├── efficientnet_repo/
│ │ │ │ │ ├── BENCHMARK.md
│ │ │ │ │ ├── LICENSE
│ │ │ │ │ ├── README.md
│ │ │ │ │ ├── __init__.py
│ │ │ │ │ ├── geffnet/
│ │ │ │ │ │ ├── __init__.py
│ │ │ │ │ │ ├── activations/
│ │ │ │ │ │ │ ├── __init__.py
│ │ │ │ │ │ │ ├── activations.py
│ │ │ │ │ │ │ ├── activations_jit.py
│ │ │ │ │ │ │ └── activations_me.py
│ │ │ │ │ │ ├── config.py
│ │ │ │ │ │ ├── conv2d_layers.py
│ │ │ │ │ │ ├── efficientnet_builder.py
│ │ │ │ │ │ ├── gen_efficientnet.py
│ │ │ │ │ │ ├── helpers.py
│ │ │ │ │ │ ├── mobilenetv3.py
│ │ │ │ │ │ ├── model_factory.py
│ │ │ │ │ │ └── version.py
│ │ │ │ │ ├── hubconf.py
│ │ │ │ │ ├── requirements.txt
│ │ │ │ │ ├── setup.py
│ │ │ │ │ ├── utils.py
│ │ │ │ │ └── validate.py
│ │ │ │ ├── encoder.py
│ │ │ │ └── submodules.py
│ │ │ ├── openpose/
│ │ │ │ ├── LICENSE
│ │ │ │ ├── __init__.py
│ │ │ │ ├── body.py
│ │ │ │ ├── face.py
│ │ │ │ ├── hand.py
│ │ │ │ ├── model.py
│ │ │ │ └── util.py
│ │ │ ├── pidi.py
│ │ │ ├── pidi_model.py
│ │ │ ├── segment_anything/
│ │ │ │ ├── __init__.py
│ │ │ │ ├── automatic_mask_generator.py
│ │ │ │ ├── build_sam.py
│ │ │ │ ├── modeling/
│ │ │ │ │ ├── __init__.py
│ │ │ │ │ ├── common.py
│ │ │ │ │ ├── image_encoder.py
│ │ │ │ │ ├── mask_decoder.py
│ │ │ │ │ ├── prompt_encoder.py
│ │ │ │ │ ├── sam.py
│ │ │ │ │ ├── tiny_vit_sam.py
│ │ │ │ │ └── transformer.py
│ │ │ │ ├── predictor.py
│ │ │ │ └── utils/
│ │ │ │ ├── __init__.py
│ │ │ │ ├── amg.py
│ │ │ │ ├── onnx.py
│ │ │ │ └── transforms.py
│ │ │ ├── shuffle.py
│ │ │ └── zoe/
│ │ │ ├── LICENSE
│ │ │ ├── __init__.py
│ │ │ └── zoedepth/
│ │ │ ├── __init__.py
│ │ │ ├── models/
│ │ │ │ ├── __init__.py
│ │ │ │ ├── base_models/
│ │ │ │ │ ├── __init__.py
│ │ │ │ │ ├── midas.py
│ │ │ │ │ └── midas_repo/
│ │ │ │ │ ├── LICENSE
│ │ │ │ │ ├── README.md
│ │ │ │ │ ├── __init__.py
│ │ │ │ │ ├── hubconf.py
│ │ │ │ │ └── midas/
│ │ │ │ │ ├── __init__.py
│ │ │ │ │ ├── backbones/
│ │ │ │ │ │ ├── __init__.py
│ │ │ │ │ │ ├── beit.py
│ │ │ │ │ │ ├── levit.py
│ │ │ │ │ │ ├── next_vit.py
│ │ │ │ │ │ ├── swin.py
│ │ │ │ │ │ ├── swin2.py
│ │ │ │ │ │ ├── swin_common.py
│ │ │ │ │ │ ├── utils.py
│ │ │ │ │ │ └── vit.py
│ │ │ │ │ ├── base_model.py
│ │ │ │ │ ├── blocks.py
│ │ │ │ │ ├── dpt_depth.py
│ │ │ │ │ ├── midas_net.py
│ │ │ │ │ ├── midas_net_custom.py
│ │ │ │ │ ├── model_loader.py
│ │ │ │ │ └── transforms.py
│ │ │ │ ├── builder.py
│ │ │ │ ├── depth_model.py
│ │ │ │ ├── layers/
│ │ │ │ │ ├── __init__.py
│ │ │ │ │ ├── attractor.py
│ │ │ │ │ ├── dist_layers.py
│ │ │ │ │ ├── localbins_layers.py
│ │ │ │ │ └── patch_transformer.py
│ │ │ │ ├── model_io.py
│ │ │ │ ├── zoedepth/
│ │ │ │ │ ├── __init__.py
│ │ │ │ │ ├── config_zoedepth.json
│ │ │ │ │ ├── config_zoedepth_kitti.json
│ │ │ │ │ └── zoedepth_v1.py
│ │ │ │ └── zoedepth_nk/
│ │ │ │ ├── __init__.py
│ │ │ │ ├── config_zoedepth_nk.json
│ │ │ │ └── zoedepth_nk_v1.py
│ │ │ └── utils/
│ │ │ ├── __init__.py
│ │ │ ├── arg_utils.py
│ │ │ ├── config.py
│ │ │ └── easydict/
│ │ │ └── __init__.py
│ │ ├── processor.py
│ │ ├── processors.py
│ │ ├── run.py
│ │ ├── test.py
│ │ ├── tile.py
│ │ ├── unit.py
│ │ ├── units/
│ │ │ ├── controlnet.py
│ │ │ ├── detect.py
│ │ │ ├── lite.py
│ │ │ ├── lite_model.py
│ │ │ ├── reference.py
│ │ │ ├── t2iadapter.py
│ │ │ ├── xs.py
│ │ │ ├── xs_model.py
│ │ │ └── xs_pipe.py
│ │ └── util.py
│ ├── detailer.py
│ ├── devices.py
│ ├── devices_mac.py
│ ├── dml/
│ │ ├── Generator.py
│ │ ├── __init__.py
│ │ ├── amp/
│ │ │ ├── __init__.py
│ │ │ └── autocast_mode.py
│ │ ├── backend.py
│ │ ├── device.py
│ │ ├── device_properties.py
│ │ ├── hijack/
│ │ │ ├── __init__.py
│ │ │ ├── realesrgan_model.py
│ │ │ ├── tomesd.py
│ │ │ ├── torch.py
│ │ │ ├── transformers.py
│ │ │ └── utils.py
│ │ ├── memory.py
│ │ ├── memory_amd/
│ │ │ ├── __init__.py
│ │ │ └── driver/
│ │ │ ├── atiadlxx.py
│ │ │ ├── atiadlxx_apis.py
│ │ │ ├── atiadlxx_defines.py
│ │ │ └── atiadlxx_structures.py
│ │ ├── pdh/
│ │ │ ├── __init__.py
│ │ │ ├── apis.py
│ │ │ ├── defines.py
│ │ │ ├── errors.py
│ │ │ ├── msvcrt.py
│ │ │ └── structures.py
│ │ └── utils.py
│ ├── errorlimiter.py
│ ├── errors.py
│ ├── extensions.py
│ ├── extra_networks.py
│ ├── extras.py
│ ├── face/
│ │ ├── __init__.py
│ │ ├── faceid.py
│ │ ├── faceswap.py
│ │ ├── insightface.py
│ │ ├── instantid.py
│ │ ├── instantid_model.py
│ │ ├── photomaker.py
│ │ ├── photomaker_model_v1.py
│ │ ├── photomaker_model_v2.py
│ │ ├── photomaker_pipeline.py
│ │ ├── reswapper.py
│ │ ├── reswapper_model.py
│ │ └── reswapper_utils.py
│ ├── face_restoration.py
│ ├── facelib/
│ │ ├── __init__.py
│ │ ├── detection/
│ │ │ ├── __init__.py
│ │ │ ├── align_trans.py
│ │ │ ├── matlab_cp2tform.py
│ │ │ ├── retinaface/
│ │ │ │ ├── retinaface.py
│ │ │ │ ├── retinaface_net.py
│ │ │ │ └── retinaface_utils.py
│ │ │ └── yolov5face/
│ │ │ ├── __init__.py
│ │ │ ├── face_detector.py
│ │ │ ├── models/
│ │ │ │ ├── __init__.py
│ │ │ │ ├── common.py
│ │ │ │ ├── experimental.py
│ │ │ │ ├── yolo.py
│ │ │ │ ├── yolov5l.yaml
│ │ │ │ └── yolov5n.yaml
│ │ │ └── utils/
│ │ │ ├── __init__.py
│ │ │ ├── autoanchor.py
│ │ │ ├── datasets.py
│ │ │ ├── extract_ckpt.py
│ │ │ ├── general.py
│ │ │ └── torch_utils.py
│ │ ├── parsing/
│ │ │ ├── __init__.py
│ │ │ ├── bisenet.py
│ │ │ ├── parsenet.py
│ │ │ └── resnet.py
│ │ └── utils/
│ │ ├── __init__.py
│ │ ├── face_restoration_helper.py
│ │ ├── face_utils.py
│ │ └── misc.py
│ ├── files_cache.py
│ ├── flash_attn_triton_amd/
│ │ ├── __init__.py
│ │ ├── fwd_prefill.py
│ │ ├── interface_fa.py
│ │ └── utils.py
│ ├── framepack/
│ │ ├── create-video.py
│ │ ├── encode-video.py
│ │ ├── framepack_api.py
│ │ ├── framepack_hijack.py
│ │ ├── framepack_install.py
│ │ ├── framepack_load.py
│ │ ├── framepack_ui.py
│ │ ├── framepack_vae.py
│ │ ├── framepack_worker.py
│ │ ├── framepack_wrappers.py
│ │ └── pipeline/
│ │ ├── bucket_tools.py
│ │ ├── clip_vision.py
│ │ ├── dit_common.py
│ │ ├── hunyuan.py
│ │ ├── hunyuan_video_packed.py
│ │ ├── k_diffusion_hunyuan.py
│ │ ├── thread_utils.py
│ │ ├── uni_pc_fm.py
│ │ ├── utils.py
│ │ └── wrapper.py
│ ├── generation_parameters_copypaste.py
│ ├── ggml/
│ │ ├── __init__.py
│ │ ├── gguf_tensor.py
│ │ └── gguf_utils.py
│ ├── gr_hijack.py
│ ├── gr_tempdir.py
│ ├── hashes.py
│ ├── hidiffusion/
│ │ ├── __init__.py
│ │ ├── hidiffusion.py
│ │ ├── hidiffusion_controlnet.py
│ │ └── utils.py
│ ├── history.py
│ ├── images.py
│ ├── images_grid.py
│ ├── images_namegen.py
│ ├── images_resize.py
│ ├── img2img.py
│ ├── infotext.py
│ ├── infotext_utils.py
│ ├── intel/
│ │ ├── ipex/
│ │ │ ├── __init__.py
│ │ │ ├── attention.py
│ │ │ ├── device_prop.py
│ │ │ ├── diffusers.py
│ │ │ └── hijacks.py
│ │ └── openvino/
│ │ └── __init__.py
│ ├── interrogate/
│ │ ├── deepbooru.py
│ │ ├── deepbooru_model.py
│ │ ├── deepseek.py
│ │ ├── interrogate.py
│ │ ├── joycaption.py
│ │ ├── joytag.py
│ │ ├── moondream3.py
│ │ ├── openclip.py
│ │ ├── tagger.py
│ │ ├── vqa.py
│ │ ├── vqa_detection.py
│ │ └── waifudiffusion.py
│ ├── ipadapter.py
│ ├── json_helpers.py
│ ├── lama.py
│ ├── linfusion/
│ │ ├── __init__.py
│ │ ├── attention.py
│ │ └── linfusion.py
│ ├── loader.py
│ ├── localization.py
│ ├── lora/
│ │ ├── extra_networks_lora.py
│ │ ├── lora_apply.py
│ │ ├── lora_common.py
│ │ ├── lora_convert.py
│ │ ├── lora_diffusers.py
│ │ ├── lora_extract.py
│ │ ├── lora_load.py
│ │ ├── lora_nunchaku.py
│ │ ├── lora_overrides.py
│ │ ├── lora_timers.py
│ │ ├── lyco_helpers.py
│ │ ├── network.py
│ │ ├── network_full.py
│ │ ├── network_glora.py
│ │ ├── network_hada.py
│ │ ├── network_ia3.py
│ │ ├── network_lokr.py
│ │ ├── network_lora.py
│ │ ├── network_norm.py
│ │ ├── network_oft.py
│ │ └── networks.py
│ ├── ltx/
│ │ ├── ltx_process.py
│ │ ├── ltx_ui.py
│ │ └── ltx_util.py
│ ├── masking.py
│ ├── memmon.py
│ ├── memstats.py
│ ├── merging/
│ │ ├── convert_sdxl.py
│ │ ├── merge.py
│ │ ├── merge_PermSpec.py
│ │ ├── merge_PermSpec_SDXL.py
│ │ ├── merge_methods.py
│ │ ├── merge_presets.py
│ │ ├── merge_rebasin.py
│ │ ├── merge_utils.py
│ │ └── modules_sdxl.py
│ ├── migrate.py
│ ├── mit_nunchaku.py
│ ├── model_quant.py
│ ├── model_te.py
│ ├── model_tools.py
│ ├── modeldata.py
│ ├── modelloader.py
│ ├── models_hf.py
│ ├── modelstats.py
│ ├── modular.py
│ ├── modular_guiders.py
│ ├── olive_script.py
│ ├── onnx_impl/
│ │ ├── __init__.py
│ │ ├── execution_providers.py
│ │ ├── pipelines/
│ │ │ ├── __init__.py
│ │ │ ├── onnx_stable_diffusion_img2img_pipeline.py
│ │ │ ├── onnx_stable_diffusion_inpaint_pipeline.py
│ │ │ ├── onnx_stable_diffusion_pipeline.py
│ │ │ ├── onnx_stable_diffusion_upscale_pipeline.py
│ │ │ ├── onnx_stable_diffusion_xl_img2img_pipeline.py
│ │ │ ├── onnx_stable_diffusion_xl_pipeline.py
│ │ │ └── utils.py
│ │ ├── ui.py
│ │ └── utils.py
│ ├── options.py
│ ├── options_handler.py
│ ├── pag/
│ │ ├── __init__.py
│ │ ├── pipe_sd.py
│ │ └── pipe_sdxl.py
│ ├── para_attention.py
│ ├── patches.py
│ ├── paths.py
│ ├── paths_internal.py
│ ├── postprocess/
│ │ ├── aurasr_arch.py
│ │ ├── aurasr_model.py
│ │ ├── codeformer_arch.py
│ │ ├── codeformer_model.py
│ │ ├── dcc.py
│ │ ├── esrgan_model.py
│ │ ├── esrgan_model_arch.py
│ │ ├── gfpgan_model.py
│ │ ├── hqx.py
│ │ ├── icbi.py
│ │ ├── pixelart.py
│ │ ├── realesrgan_model.py
│ │ ├── realesrgan_model_arch.py
│ │ ├── restorer.py
│ │ ├── scunet_model.py
│ │ ├── scunet_model_arch.py
│ │ ├── sdupscaler_model.py
│ │ ├── seedvr_model.py
│ │ ├── swinir_model.py
│ │ ├── swinir_model_arch.py
│ │ ├── swinir_model_arch_v2.py
│ │ ├── vqgan_arch.py
│ │ └── yolo.py
│ ├── postprocessing.py
│ ├── processing.py
│ ├── processing_args.py
│ ├── processing_callbacks.py
│ ├── processing_class.py
│ ├── processing_correction.py
│ ├── processing_diffusers.py
│ ├── processing_helpers.py
│ ├── processing_info.py
│ ├── processing_prompt.py
│ ├── processing_vae.py
│ ├── progress.py
│ ├── prompt_parser.py
│ ├── prompt_parser_diffusers.py
│ ├── prompt_parser_xhinker.py
│ ├── ras/
│ │ ├── __init__.py
│ │ ├── ras_attention.py
│ │ ├── ras_forward.py
│ │ ├── ras_manager.py
│ │ └── ras_scheduler.py
│ ├── res4lyf/
│ │ ├── __init__.py
│ │ ├── abnorsett_scheduler.py
│ │ ├── bong_tangent_scheduler.py
│ │ ├── common_sigma_scheduler.py
│ │ ├── deis_scheduler_alt.py
│ │ ├── etdrk_scheduler.py
│ │ ├── gauss_legendre_scheduler.py
│ │ ├── langevin_dynamics_scheduler.py
│ │ ├── lawson_scheduler.py
│ │ ├── linear_rk_scheduler.py
│ │ ├── lobatto_scheduler.py
│ │ ├── pec_scheduler.py
│ │ ├── phi_functions.py
│ │ ├── radau_iia_scheduler.py
│ │ ├── res_multistep_scheduler.py
│ │ ├── res_multistep_sde_scheduler.py
│ │ ├── res_singlestep_scheduler.py
│ │ ├── res_singlestep_sde_scheduler.py
│ │ ├── res_unified_scheduler.py
│ │ ├── riemannian_flow_scheduler.py
│ │ ├── rungekutta_44s_scheduler.py
│ │ ├── rungekutta_57s_scheduler.py
│ │ ├── rungekutta_67s_scheduler.py
│ │ ├── scheduler_utils.py
│ │ ├── simple_exponential_scheduler.py
│ │ ├── specialized_rk_scheduler.py
│ │ └── variants.py
│ ├── rife/
│ │ ├── __init__.py
│ │ ├── loss.py
│ │ ├── model_ifnet.py
│ │ ├── model_rife.py
│ │ ├── refine.py
│ │ ├── ssim.py
│ │ └── warplayer.py
│ ├── rocm.py
│ ├── rocm_triton_windows.py
│ ├── safe.py
│ ├── schedulers/
│ │ ├── perflow/
│ │ │ ├── __init__.py
│ │ │ ├── pfode_solver.py
│ │ │ ├── scheduler_perflow.py
│ │ │ └── utils_perflow.py
│ │ ├── scheduler_bdia.py
│ │ ├── scheduler_dc.py
│ │ ├── scheduler_dpm_flowmatch.py
│ │ ├── scheduler_flashflow.py
│ │ ├── scheduler_tcd.py
│ │ ├── scheduler_tdd.py
│ │ ├── scheduler_ufogen.py
│ │ ├── scheduler_unipc_flowmatch.py
│ │ └── scheduler_vdm.py
│ ├── script_callbacks.py
│ ├── script_loading.py
│ ├── scripts.py
│ ├── scripts_auto_postprocessing.py
│ ├── scripts_manager.py
│ ├── scripts_postprocessing.py
│ ├── sd_checkpoint.py
│ ├── sd_detect.py
│ ├── sd_hijack.py
│ ├── sd_hijack_accelerate.py
│ ├── sd_hijack_dynamic_atten.py
│ ├── sd_hijack_freeu.py
│ ├── sd_hijack_hypertile.py
│ ├── sd_hijack_safetensors.py
│ ├── sd_hijack_te.py
│ ├── sd_hijack_utils.py
│ ├── sd_hijack_vae.py
│ ├── sd_models.py
│ ├── sd_models_compile.py
│ ├── sd_models_utils.py
│ ├── sd_modules.py
│ ├── sd_offload.py
│ ├── sd_samplers.py
│ ├── sd_samplers_common.py
│ ├── sd_samplers_diffusers.py
│ ├── sd_te_remote.py
│ ├── sd_unet.py
│ ├── sd_vae.py
│ ├── sdnq/
│ │ ├── __init__.py
│ │ ├── common.py
│ │ ├── dequantizer.py
│ │ ├── file_loader.py
│ │ ├── forward.py
│ │ ├── layers/
│ │ │ ├── __init__.py
│ │ │ ├── conv/
│ │ │ │ ├── conv_fp16.py
│ │ │ │ ├── conv_fp8.py
│ │ │ │ ├── conv_fp8_tensorwise.py
│ │ │ │ ├── conv_int8.py
│ │ │ │ └── forward.py
│ │ │ └── linear/
│ │ │ ├── forward.py
│ │ │ ├── linear_fp16.py
│ │ │ ├── linear_fp8.py
│ │ │ ├── linear_fp8_tensorwise.py
│ │ │ └── linear_int8.py
│ │ ├── loader.py
│ │ ├── packed_float.py
│ │ ├── packed_int.py
│ │ ├── quantizer.py
│ │ └── triton_mm.py
│ ├── seedvr/
│ │ ├── __init__.py
│ │ ├── config_3b.yaml
│ │ ├── config_7b.yaml
│ │ ├── rotary_embedding.py
│ │ ├── src/
│ │ │ ├── __init__.py
│ │ │ ├── common/
│ │ │ │ ├── __init__.py
│ │ │ │ ├── cache.py
│ │ │ │ ├── config.py
│ │ │ │ ├── decorators.py
│ │ │ │ ├── diffusion/
│ │ │ │ │ ├── __init__.py
│ │ │ │ │ ├── config.py
│ │ │ │ │ ├── samplers/
│ │ │ │ │ │ ├── base.py
│ │ │ │ │ │ └── euler.py
│ │ │ │ │ ├── schedules/
│ │ │ │ │ │ ├── base.py
│ │ │ │ │ │ └── lerp.py
│ │ │ │ │ ├── timesteps/
│ │ │ │ │ │ ├── base.py
│ │ │ │ │ │ └── sampling/
│ │ │ │ │ │ └── trailing.py
│ │ │ │ │ ├── types.py
│ │ │ │ │ └── utils.py
│ │ │ │ ├── distributed/
│ │ │ │ │ ├── __init__.py
│ │ │ │ │ ├── advanced.py
│ │ │ │ │ ├── basic.py
│ │ │ │ │ ├── meta_init_utils.py
│ │ │ │ │ └── ops.py
│ │ │ │ ├── half_precision_fixes.py
│ │ │ │ ├── logger.py
│ │ │ │ ├── partition.py
│ │ │ │ └── seed.py
│ │ │ ├── core/
│ │ │ │ ├── __init__.py
│ │ │ │ ├── generation.py
│ │ │ │ ├── infer.py
│ │ │ │ └── model_manager.py
│ │ │ ├── data/
│ │ │ │ └── image/
│ │ │ │ └── transforms/
│ │ │ │ ├── area_resize.py
│ │ │ │ ├── divisible_crop.py
│ │ │ │ ├── na_resize.py
│ │ │ │ └── side_resize.py
│ │ │ ├── models/
│ │ │ │ ├── dit/
│ │ │ │ │ ├── attention.py
│ │ │ │ │ ├── blocks/
│ │ │ │ │ │ ├── __init__.py
│ │ │ │ │ │ └── mmdit_window_block.py
│ │ │ │ │ ├── embedding.py
│ │ │ │ │ ├── mlp.py
│ │ │ │ │ ├── mm.py
│ │ │ │ │ ├── modulation.py
│ │ │ │ │ ├── na.py
│ │ │ │ │ ├── nablocks/
│ │ │ │ │ │ ├── __init__.py
│ │ │ │ │ │ └── mmsr_block.py
│ │ │ │ │ ├── nadit.py
│ │ │ │ │ ├── normalization.py
│ │ │ │ │ ├── patch.py
│ │ │ │ │ ├── rope.py
│ │ │ │ │ └── window.py
│ │ │ │ ├── dit_v2/
│ │ │ │ │ ├── attention.py
│ │ │ │ │ ├── embedding.py
│ │ │ │ │ ├── mlp.py
│ │ │ │ │ ├── mm.py
│ │ │ │ │ ├── modulation.py
│ │ │ │ │ ├── na.py
│ │ │ │ │ ├── nablocks/
│ │ │ │ │ │ ├── __init__.py
│ │ │ │ │ │ ├── attention/
│ │ │ │ │ │ │ ├── __init__.py
│ │ │ │ │ │ │ └── mmattn.py
│ │ │ │ │ │ └── mmsr_block.py
│ │ │ │ │ ├── nadit.py
│ │ │ │ │ ├── normalization.py
│ │ │ │ │ ├── patch/
│ │ │ │ │ │ ├── __init__.py
│ │ │ │ │ │ └── patch_v1.py
│ │ │ │ │ ├── rope.py
│ │ │ │ │ └── window.py
│ │ │ │ └── video_vae_v3/
│ │ │ │ ├── modules/
│ │ │ │ │ ├── attn_video_vae.py
│ │ │ │ │ ├── causal_inflation_lib.py
│ │ │ │ │ ├── context_parallel_lib.py
│ │ │ │ │ ├── global_config.py
│ │ │ │ │ ├── inflated_layers.py
│ │ │ │ │ ├── inflated_lib.py
│ │ │ │ │ ├── types.py
│ │ │ │ │ └── video_vae.py.old
│ │ │ │ └── s8_c16_t4_inflation_sd3.yaml
│ │ │ ├── optimization/
│ │ │ │ ├── __init__.py
│ │ │ │ ├── memory_manager.py
│ │ │ │ └── performance.py
│ │ │ └── utils/
│ │ │ ├── __init__.py
│ │ │ └── color_fix.py
│ │ └── test.py
│ ├── server.py
│ ├── shared.py
│ ├── shared_defaults.py
│ ├── shared_helpers.py
│ ├── shared_items.py
│ ├── shared_legacy.py
│ ├── shared_state.py
│ ├── styles.py
│ ├── sub_quadratic_attention.py
│ ├── taesd/
│ │ ├── hybrid_small.py
│ │ ├── taehv.py
│ │ ├── taem1.py
│ │ └── taesd.py
│ ├── teacache/
│ │ ├── __init__.py
│ │ ├── teacache_chroma.py
│ │ ├── teacache_cogvideox.py
│ │ ├── teacache_flux.py
│ │ ├── teacache_hidream.py
│ │ ├── teacache_ltx.py
│ │ ├── teacache_lumina2.py
│ │ └── teacache_mochi.py
│ ├── textual_inversion.py
│ ├── theme.py
│ ├── timer.py
│ ├── todo/
│ │ ├── __init__.py
│ │ ├── todo_merge.py
│ │ └── todo_utils.py
│ ├── token_merge.py
│ ├── transformer_cache.py
│ ├── txt2img.py
│ ├── ui.py
│ ├── ui_caption.py
│ ├── ui_common.py
│ ├── ui_components.py
│ ├── ui_control.py
│ ├── ui_control_elements.py
│ ├── ui_control_helpers.py
│ ├── ui_docs.py
│ ├── ui_extensions.py
│ ├── ui_extra_networks.py
│ ├── ui_extra_networks_checkpoints.py
│ ├── ui_extra_networks_history.py
│ ├── ui_extra_networks_lora.py
│ ├── ui_extra_networks_styles.py
│ ├── ui_extra_networks_textual_inversion.py
│ ├── ui_extra_networks_vae.py
│ ├── ui_extra_networks_wildcards.py
│ ├── ui_gallery.py
│ ├── ui_guidance.py
│ ├── ui_history.py
│ ├── ui_img2img.py
│ ├── ui_javascript.py
│ ├── ui_loadsave.py
│ ├── ui_models.py
│ ├── ui_models_load.py
│ ├── ui_postprocessing.py
│ ├── ui_prompt_styles.py
│ ├── ui_sections.py
│ ├── ui_settings.py
│ ├── ui_symbols.py
│ ├── ui_txt2img.py
│ ├── ui_video.py
│ ├── ui_video_vlm.py
│ ├── update.py
│ ├── upscaler.py
│ ├── upscaler_algo.py
│ ├── upscaler_simple.py
│ ├── upscaler_spandrel.py
│ ├── upscaler_vae.py
│ ├── vae/
│ │ ├── sd_vae_approx.py
│ │ ├── sd_vae_fal.py
│ │ ├── sd_vae_natten.py
│ │ ├── sd_vae_ostris.py
│ │ ├── sd_vae_remote.py
│ │ ├── sd_vae_repa.py
│ │ ├── sd_vae_stablecascade.py
│ │ └── sd_vae_taesd.py
│ ├── video.py
│ ├── video_models/
│ │ ├── google_veo.py
│ │ ├── models_def.py
│ │ ├── video_cache.py
│ │ ├── video_load.py
│ │ ├── video_overrides.py
│ │ ├── video_prompt.py
│ │ ├── video_run.py
│ │ ├── video_save.py
│ │ ├── video_ui.py
│ │ ├── video_utils.py
│ │ └── video_vae.py
│ ├── zluda.py
│ └── zluda_installer.py
├── motd
├── package.json
├── pipelines/
│ ├── bria/
│ │ ├── __init__.py
│ │ ├── bria_pipeline.py
│ │ ├── bria_utils.py
│ │ ├── transformer_block.py
│ │ └── transformer_bria.py
│ ├── f_lite/
│ │ ├── __init__.py
│ │ ├── f_lite.model.py
│ │ ├── model.py
│ │ └── pipeline.py
│ ├── flex2/
│ │ └── __init__.py
│ ├── flux/
│ │ ├── flux_bnb.py
│ │ ├── flux_legacy_loader.py
│ │ ├── flux_lora.py
│ │ ├── flux_nf4.py
│ │ ├── flux_nunchaku.py
│ │ └── flux_quanto.py
│ ├── generic.py
│ ├── hdm/
│ │ ├── __init__.py
│ │ ├── hdm/
│ │ │ ├── __init__.py
│ │ │ ├── data/
│ │ │ │ ├── __init__.py
│ │ │ │ ├── base.py
│ │ │ │ └── kohya.py
│ │ │ ├── loader.py
│ │ │ ├── modules/
│ │ │ │ ├── base.py
│ │ │ │ ├── rope.py
│ │ │ │ ├── text_encoders.py
│ │ │ │ ├── unet_patch.py
│ │ │ │ └── xut.py
│ │ │ ├── pipeline.py
│ │ │ ├── trainer/
│ │ │ │ ├── __init__.py
│ │ │ │ ├── callbacks.py
│ │ │ │ ├── diffusion.py
│ │ │ │ └── trainer.py
│ │ │ └── utils/
│ │ │ ├── __init__.py
│ │ │ └── config.py
│ │ └── xut/
│ │ ├── __init__.py
│ │ ├── env.py
│ │ ├── modules/
│ │ │ ├── __init__.py
│ │ │ ├── adaln.py
│ │ │ ├── attention.py
│ │ │ ├── axial_rope.py
│ │ │ ├── layers.py
│ │ │ ├── norm.py
│ │ │ ├── patch.py
│ │ │ ├── time_emb.py
│ │ │ └── transformer.py
│ │ ├── utils/
│ │ │ └── __init__.py
│ │ └── xut.py
│ ├── hidream/
│ │ └── pipeline_hidream_image_editing.py
│ ├── meissonic/
│ │ ├── __init__.py
│ │ ├── pipeline.py
│ │ ├── pipeline_img2img.py
│ │ ├── pipeline_inpaint.py
│ │ ├── scheduler.py
│ │ ├── test.py
│ │ └── transformer.py
│ ├── model_anima.py
│ ├── model_auraflow.py
│ ├── model_bria.py
│ ├── model_chroma.py
│ ├── model_chrono.py
│ ├── model_cogview.py
│ ├── model_cosmos.py
│ ├── model_flex.py
│ ├── model_flite.py
│ ├── model_flux.py
│ ├── model_flux2.py
│ ├── model_flux2_klein.py
│ ├── model_glm.py
│ ├── model_google.py
│ ├── model_hdm.py
│ ├── model_hidream.py
│ ├── model_hunyuandit.py
│ ├── model_hyimage.py
│ ├── model_kandinsky.py
│ ├── model_kolors.py
│ ├── model_longcat.py
│ ├── model_lumina.py
│ ├── model_meissonic.py
│ ├── model_nextstep.py
│ ├── model_omnigen.py
│ ├── model_ovis.py
│ ├── model_pixart.py
│ ├── model_prx.py
│ ├── model_qwen.py
│ ├── model_sana.py
│ ├── model_sd3.py
│ ├── model_stablecascade.py
│ ├── model_wanai.py
│ ├── model_xomni.py
│ ├── model_z_image.py
│ ├── omnigen2/
│ │ ├── __init__.py
│ │ ├── image_processor.py
│ │ ├── models/
│ │ │ ├── attention_processor.py
│ │ │ ├── embeddings.py
│ │ │ └── transformers/
│ │ │ ├── __init__.py
│ │ │ ├── block_lumina2.py
│ │ │ ├── repo.py
│ │ │ └── transformer_omnigen2.py
│ │ └── pipeline_omnigen2.py
│ ├── qwen/
│ │ ├── __init__.py
│ │ ├── qwen_nunchaku.py
│ │ └── qwen_pruning.py
│ ├── segmoe/
│ │ └── segmoe_model.py
│ ├── wan/
│ │ └── wan_image.py
│ └── xomni/
│ ├── __init__.py
│ ├── configuration_xomni.py
│ ├── modeling_siglip_flux.py
│ ├── modeling_siglip_tokenizer.py
│ ├── modeling_vit.py
│ └── modeling_xomni.py
├── requirements.txt
├── scripts/
│ ├── animatediff.py
│ ├── apg.py
│ ├── automatic_color_inpaint.py
│ ├── blipdiffusion.py
│ ├── consistory/
│ │ ├── __init__.py
│ │ ├── attention_processor.py
│ │ ├── consistory_pipeline.py
│ │ ├── consistory_run.py
│ │ ├── consistory_unet_sdxl.py
│ │ ├── consistory_utils.py
│ │ └── utils/
│ │ ├── general_utils.py
│ │ └── ptp_utils.py
│ ├── consistory_ext.py
│ ├── ctrlx/
│ │ ├── __init__.py
│ │ ├── features.py
│ │ ├── media.py
│ │ ├── sdxl.py
│ │ └── utils.py
│ ├── ctrlx_ext.py
│ ├── custom_code.py
│ ├── daam/
│ │ ├── __init__.py
│ │ ├── evaluate.py
│ │ ├── experiment.py
│ │ ├── heatmap.py
│ │ ├── hook.py
│ │ ├── trace.py
│ │ └── utils.py
│ ├── daam_ext.py
│ ├── demofusion.py
│ ├── differential_diffusion.py
│ ├── example.py
│ ├── flux_enhance.py
│ ├── flux_tools.py
│ ├── freescale/
│ │ ├── __init__.py
│ │ ├── free_lunch_utils.py
│ │ ├── freescale_pipeline.py
│ │ ├── freescale_pipeline_img2img.py
│ │ └── scale_attention.py
│ ├── freescale_ext.py
│ ├── hdr.py
│ ├── image2video.py
│ ├── infiniteyou/
│ │ ├── __init__.py
│ │ ├── pipeline_flux_infusenet.py
│ │ ├── pipeline_infu_flux.py
│ │ └── resampler.py
│ ├── infiniteyou_ext.py
│ ├── init_latents.py
│ ├── instantir/
│ │ ├── __init__.py
│ │ ├── aggregator.py
│ │ ├── ip_adapter/
│ │ │ ├── __init__.py
│ │ │ ├── attention_processor.py
│ │ │ ├── ip_adapter.py
│ │ │ ├── resampler.py
│ │ │ └── utils.py
│ │ ├── lcm_single_step_scheduler.py
│ │ └── sdxl_instantir.py
│ ├── instantir_ext.py
│ ├── ipadapter.py
│ ├── ipinstruct.py
│ ├── kohya_hires_fix.py
│ ├── layerdiffuse/
│ │ ├── __init__.py
│ │ ├── layerdiffuse_loader.py
│ │ └── layerdiffuse_model.py
│ ├── layerdiffuse_ext.py
│ ├── lbm/
│ │ ├── __init__.py
│ │ ├── base/
│ │ │ ├── __init__.py
│ │ │ ├── base_model.py
│ │ │ └── model_config.py
│ │ ├── config.py
│ │ ├── embedders/
│ │ │ ├── __init__.py
│ │ │ ├── base/
│ │ │ │ ├── __init__.py
│ │ │ │ ├── base_conditioner.py
│ │ │ │ └── base_conditioner_config.py
│ │ │ ├── conditioners_wrapper.py
│ │ │ └── latents_concat/
│ │ │ ├── __init__.py
│ │ │ ├── latents_concat_embedder_config.py
│ │ │ └── latents_concat_embedder_model.py
│ │ ├── extract.py
│ │ ├── inference.py
│ │ ├── lbm/
│ │ │ ├── __init__.py
│ │ │ ├── lbm_config.py
│ │ │ └── lbm_model.py
│ │ ├── tiler.py
│ │ ├── unets/
│ │ │ ├── __init__.py
│ │ │ └── unet.py
│ │ ├── utils.py
│ │ └── vae/
│ │ ├── __init__.py
│ │ ├── autoencoderKL.py
│ │ └── autoencoderKL_config.py
│ ├── lbm_ext.py
│ ├── ledits.py
│ ├── loopback.py
│ ├── lut.py
│ ├── mixture_of_diffusers.py
│ ├── mixture_tiling.py
│ ├── mod/
│ │ └── __init__.py
│ ├── mulan.py
│ ├── nudenet/
│ │ ├── bannedwords.py
│ │ ├── imageguard.py
│ │ ├── langdetect.py
│ │ └── nudenet.py
│ ├── nudenet_ext.py
│ ├── outpainting_mk_2.py
│ ├── pixelsmith/
│ │ ├── __init__.py
│ │ ├── autoencoder_kl.py
│ │ ├── pixelsmith_pipeline.py
│ │ └── vae.py
│ ├── pixelsmith_ext.py
│ ├── poor_mans_outpainting.py
│ ├── postprocessing_codeformer.py
│ ├── postprocessing_gfpgan.py
│ ├── postprocessing_pixelart.py
│ ├── postprocessing_upscale.py
│ ├── postprocessing_video.py
│ ├── prompt_enhance.py
│ ├── prompt_matrix.py
│ ├── prompts_from_file.py
│ ├── pulid/
│ │ ├── __init__.py
│ │ ├── attention_processor.py
│ │ ├── encoders_transformer.py
│ │ ├── eva_clip/
│ │ │ ├── __init__.py
│ │ │ ├── constants.py
│ │ │ ├── eva_vit_model.py
│ │ │ ├── factory.py
│ │ │ ├── hf_configs.py
│ │ │ ├── hf_model.py
│ │ │ ├── loss.py
│ │ │ ├── model.py
│ │ │ ├── model_configs/
│ │ │ │ ├── EVA01-CLIP-B-16.json
│ │ │ │ ├── EVA01-CLIP-g-14-plus.json
│ │ │ │ ├── EVA01-CLIP-g-14.json
│ │ │ │ ├── EVA02-CLIP-B-16.json
│ │ │ │ ├── EVA02-CLIP-L-14-336.json
│ │ │ │ ├── EVA02-CLIP-L-14.json
│ │ │ │ ├── EVA02-CLIP-bigE-14-plus.json
│ │ │ │ └── EVA02-CLIP-bigE-14.json
│ │ │ ├── modified_resnet.py
│ │ │ ├── openai.py
│ │ │ ├── pretrained.py
│ │ │ ├── rope.py
│ │ │ ├── timm_model.py
│ │ │ ├── tokenizer.py
│ │ │ ├── transform.py
│ │ │ ├── transformer.py
│ │ │ └── utils.py
│ │ ├── pulid_flux.py
│ │ ├── pulid_sampling.py
│ │ ├── pulid_sdxl.py
│ │ └── pulid_utils.py
│ ├── pulid_ext.py
│ ├── regional_prompting.py
│ ├── resadapter.py
│ ├── sd_upscale.py
│ ├── skip_layer_guidance.py
│ ├── softfill.py
│ ├── stablevideodiffusion.py
│ ├── style_aligned/
│ │ ├── inversion.py
│ │ └── sa_handler.py
│ ├── style_aligned_ext.py
│ ├── t_gate.py
│ ├── text2video.py
│ ├── tiling.py
│ ├── xadapter/
│ │ ├── adapter.py
│ │ ├── pipeline_sd_xl_adapter.py
│ │ ├── pipeline_sd_xl_adapter_controlnet.py
│ │ ├── pipeline_sd_xl_adapter_controlnet_img2img.py
│ │ ├── unet_adapter.py
│ │ ├── utils.py
│ │ └── xadapter_hijacks.py
│ ├── xadapter_ext.py
│ ├── xyz/
│ │ ├── xyz_grid_classes.py
│ │ ├── xyz_grid_draw.py
│ │ └── xyz_grid_shared.py
│ ├── xyz_grid.py
│ └── xyz_grid_on.py
├── webui.bat
├── webui.ps1
├── webui.py
└── webui.sh
================================================
FILE CONTENTS
================================================
================================================
FILE: .dockerignore
================================================
# defaults
.history
.vscode/
/__pycache__
/.ruff_cache
/cache
/cache.json
/config.json
/extensions/*
/html/extensions.json
/html/themes.json
/metadata.json
/node_modules
/outputs/*
/package-lock.json
/params.txt
/pnpm-lock.yaml
/styles.csv
/tmp
/ui-config.json
/user.css
/venv
/webui-user.bat
/webui-user.sh
/*.log.*
/*.log
================================================
FILE: .gitignore
================================================
# defaults
venv/
__pycache__
.ruff_cache
/*.json
/*.yaml
/params.txt
/styles.csv
/user.css
/webui-user.bat
/webui-user.sh
/data/metadata.json
/data/extensions.json
/data/cache.json
/data/themes.json
config_states
node_modules
pnpm-lock.yaml
package-lock.json
.history
cache
**/.DS_Store
tunableop_results*.csv
# all models and temp files
*.log
*.log.*
*.bak
*.ckpt
*.safetensors
*.pth
*.pt
*.bin
*.optim
*.lock
*.zip
*.rar
*.7z
*.pyc
/*.bat
/*.sh
/*.txt
/*.mp3
/*.lnk
/*.swp
!webui.bat
!webui.sh
!package.json
!requirements.txt
# all dynamic stuff
/extensions/**/*
/outputs/**/*
/embeddings/**/*
/models/**/*
/interrogate/**/*
/train/log/**/*
/textual_inversion/**/*
/detected_maps/**/*
/tmp
/log
/cert
.vscode/
.idea/
/localizations
.*/
# force included
!/data
!/models/VAE-approx
!/models/VAE-approx/model.pt
!/models/Reference
!/models/Reference/**/*
================================================
FILE: .gitmodules
================================================
[submodule "wiki"]
path = wiki
url = https://github.com/vladmandic/sdnext.wiki
ignore = dirty
[submodule "extensions-builtin/sd-extension-system-info"]
path = extensions-builtin/sd-extension-system-info
url = https://github.com/vladmandic/sd-extension-system-info
ignore = dirty
[submodule "extensions-builtin/sd-extension-chainner"]
path = extensions-builtin/sd-extension-chainner
url = https://github.com/vladmandic/sd-extension-chainner
ignore = dirty
[submodule "extensions-builtin/stable-diffusion-webui-rembg"]
path = extensions-builtin/stable-diffusion-webui-rembg
url = https://github.com/vladmandic/sd-extension-rembg
ignore = dirty
[submodule "extensions-builtin/sdnext-modernui"]
path = extensions-builtin/sdnext-modernui
url = https://github.com/BinaryQuantumSoul/sdnext-modernui
[submodule "extensions-builtin/sdnext-kanvas"]
path = extensions-builtin/sdnext-kanvas
url = https://github.com/vladmandic/sdnext-kanvas
================================================
FILE: .pylintrc
================================================
[MAIN]
analyse-fallback-blocks=no
clear-cache-post-run=no
extension-pkg-allow-list=
prefer-stubs=yes
extension-pkg-whitelist=
fail-on=
fail-under=10
ignore=CVS
ignore-paths=/usr/lib/.*$,
venv,
.git,
.ruff_cache,
.vscode,
modules/apg,
modules/cfgzero,
modules/control/proc,
modules/control/units,
modules/dml,
modules/facelib,
modules/flash_attn_triton_amd,
modules/ggml,
modules/hidiffusion,
modules/hijack/ddpm_edit.py,
modules/intel,
modules/intel/ipex,
modules/framepack/pipeline,
modules/onnx_impl,
modules/pag,
modules/postprocess/aurasr_arch.py,
modules/prompt_parser_xhinker.py,
modules/ras,
modules/seedvr,
modules/rife,
modules/schedulers,
modules/taesd,
modules/teacache,
modules/todo,
modules/res4lyf,
pipelines/bria,
pipelines/flex2,
pipelines/f_lite,
pipelines/hidream,
pipelines/hdm,
pipelines/meissonic,
pipelines/omnigen2,
pipelines/segmoe,
pipelines/xomni,
pipelines/chrono,
scripts/consistory,
scripts/ctrlx,
scripts/daam,
scripts/demofusion,
scripts/freescale,
scripts/infiniteyou,
scripts/instantir,
scripts/lbm,
scripts/layerdiffuse,
scripts/mod,
scripts/pixelsmith,
scripts/differential_diffusion.py,
scripts/pulid,
scripts/xadapter,
repositories,
extensions-builtin/sd-extension-chainner/nodes,
extensions-builtin/sd-webui-agent-scheduler,
extensions-builtin/sdnext-modernui/node_modules,
extensions-builtin/sdnext-kanvas/node_modules,
ignore-patterns=.*test*.py$,
.*_model.py$,
.*_arch.py$,
.*_model_arch.py*,
.*_model_arch_v2.py$,
ignored-modules=
jobs=8
limit-inference-results=100
load-plugins=
persistent=no
py-version=3.10
recursive=no
source-roots=
unsafe-load-any-extension=no
[BASIC]
argument-naming-style=snake_case
attr-naming-style=snake_case
bad-names=foo, bar, baz, toto, tutu, tata
bad-names-rgxs=
class-attribute-naming-style=any
class-const-naming-style=UPPER_CASE
class-naming-style=PascalCase
const-naming-style=snake_case
docstring-min-length=-1
function-naming-style=snake_case
good-names=i,j,k,e,ex,ok,p,x,y,id
good-names-rgxs=
include-naming-hint=no
inlinevar-naming-style=any
method-naming-style=snake_case
module-naming-style=snake_case
name-group=
no-docstring-rgx=^_
property-classes=abc.abstractproperty
variable-naming-style=snake_case
[CLASSES]
check-protected-access-in-special-methods=no
defining-attr-methods=__init__, __new__,
exclude-protected=_asdict,_fields,_replace,_source,_make,os._exit
valid-classmethod-first-arg=cls
valid-metaclass-classmethod-first-arg=mcs
[DESIGN]
exclude-too-few-public-methods=
ignored-parents=
max-args=199
max-attributes=99
max-bool-expr=99
max-branches=199
max-locals=99
max-parents=99
max-public-methods=99
max-returns=99
max-statements=199
min-public-methods=1
[EXCEPTIONS]
overgeneral-exceptions=builtins.BaseException,builtins.Exception
[FORMAT]
expected-line-ending-format=
ignore-long-lines=^\s*(# )?<?https?://\S+>?$
indent-after-paren=4
indent-string=' '
max-line-length=200
max-module-lines=9999
single-line-class-stmt=no
single-line-if-stmt=no
[IMPORTS]
allow-any-import-level=
allow-reexport-from-package=no
allow-wildcard-with-all=no
deprecated-modules=
ext-import-graph=
import-graph=
int-import-graph=
known-standard-library=
known-third-party=enchant
preferred-modules=
[LOGGING]
logging-format-style=new
logging-modules=logging
[MESSAGES CONTROL]
confidence=HIGH,
CONTROL_FLOW,
INFERENCE,
INFERENCE_FAILURE,
UNDEFINED
# disable=C,R,W
disable=abstract-method,
bad-inline-option,
bare-except,
broad-exception-caught,
chained-comparison,
consider-iterating-dictionary,
consider-merging-isinstance,
consider-using-dict-items,
consider-using-enumerate,
consider-using-from-import,
consider-using-generator,
consider-using-get,
consider-using-in,
consider-using-max-builtin,
consider-using-min-builtin,
consider-using-sys-exit,
cyclic-import,
dangerous-default-value,
deprecated-pragma,
duplicate-code,
file-ignored,
import-error,
import-outside-toplevel,
invalid-name,
line-too-long,
locally-disabled,
logging-fstring-interpolation,
missing-class-docstring,
missing-function-docstring,
missing-module-docstring,
no-else-raise,
no-else-return,
not-callable,
pointless-string-statement,
raw-checker-failed,
simplifiable-if-expression,
suppressed-message,
too-few-public-methods,
too-many-instance-attributes,
too-many-locals,
too-many-nested-blocks,
too-many-positional-arguments,
too-many-statements,
unidiomatic-typecheck,
unknown-option-value,
unnecessary-dict-index-lookup,
unnecessary-dunder-call,
unnecessary-lambda-assigment,
unnecessary-lambda,
unused-wildcard-import,
unpacking-non-sequence,
unsubscriptable-object,
useless-return,
use-dict-literal,
use-symbolic-message-instead,
useless-suppression,
wrong-import-position,
enable=c-extension-no-member
[METHOD_ARGS]
timeout-methods=requests.api.delete,requests.api.get,requests.api.head,requests.api.options,requests.api.patch,requests.api.post,requests.api.put,requests.api.request
[MISCELLANEOUS]
notes=FIXME,
XXX,
TODO
notes-rgx=
[REFACTORING]
max-nested-blocks=5
never-returning-functions=sys.exit,argparse.parse_error
[REPORTS]
evaluation=max(0, 0 if fatal else 10.0 - ((float(5 * error + warning + refactor + convention) / statement) * 10))
msg-template=
reports=no
score=no
[SIMILARITIES]
ignore-comments=yes
ignore-docstrings=yes
ignore-imports=yes
ignore-signatures=yes
min-similarity-lines=4
[SPELLING]
max-spelling-suggestions=4
spelling-dict=
spelling-ignore-comment-directives=fmt: on,fmt: off,noqa:,noqa,nosec,isort:skip,mypy:
spelling-ignore-words=
spelling-private-dict-file=
spelling-store-unknown-words=no
[STRING]
check-quote-consistency=no
check-str-concat-over-line-jumps=no
[TYPECHECK]
contextmanager-decorators=contextlib.contextmanager
generated-members=numpy.*,logging.*,torch.*,cv2.*
ignore-none=yes
ignore-on-opaque-inference=yes
ignored-checks-for-mixins=no-member,
not-async-context-manager,
not-context-manager,
attribute-defined-outside-init
ignored-classes=optparse.Values,thread._local,_thread._local,argparse.Namespace
missing-member-hint=yes
missing-member-hint-distance=1
missing-member-max-choices=1
mixin-class-rgx=.*[Mm]ixin
signature-mutators=
[VARIABLES]
additional-builtins=
allow-global-unused-variables=yes
allowed-redefined-builtins=
callbacks=cb_,
dummy-variables-rgx=_+$|(_[a-zA-Z0-9_]*[a-zA-Z0-9]+?$)|dummy|^ignored_|^unused_
ignored-argument-names=_.*|^ignored_|^unused_
init-import=no
redefining-builtins-modules=six.moves,past.builtins,future.builtins,builtins,io
================================================
FILE: .ruff.toml
================================================
line-length = 250
indent-width = 4
target-version = "py310"
exclude = [
"venv",
".git",
".ruff_cache",
".vscode",
"modules/cfgzero",
"modules/facelib",
"modules/flash_attn_triton_amd",
"modules/hidiffusion",
"modules/intel/ipex",
"modules/pag",
"modules/schedulers",
"modules/teacache",
"modules/seedvr",
"modules/control/proc",
"modules/control/units",
"modules/control/units/xs_pipe.py",
"modules/postprocess/aurasr_arch.py",
"pipelines/meissonic",
"pipelines/omnigen2",
"pipelines/hdm",
"pipelines/segmoe",
"pipelines/xomni",
"pipelines/chrono",
"scripts/lbm",
"scripts/daam",
"scripts/xadapter",
"scripts/pulid",
"scripts/instantir",
"scripts/freescale",
"scripts/consistory",
"repositories",
"extensions-builtin/Lora",
"extensions-builtin/sd-extension-chainner/nodes",
"extensions-builtin/sd-webui-agent-scheduler",
"extensions-builtin/sdnext-modernui/node_modules",
]
[lint]
select = [
"F",
"E",
"W",
"C",
"B",
"I",
"YTT",
"ASYNC",
"RUF",
"AIR",
"NPY",
"C4",
"T10",
"EXE",
"ISC",
"ICN",
"RSE",
"TCH",
"TID",
"INT",
"PLE",
]
ignore = [
"B006", # Do not use mutable data structures for argument defaults
"B008", # Do not perform function call in argument defaults
"B905", # Strict zip() usage
"C420", # Unnecessary dict comprehension for iterable; use `dict.fromkeys` instead
"C408", # Unnecessary `dict` call
"I001", # Import block is un-sorted or un-formatted
"E402", # Module level import not at top of file
"E501", # Line too long
"E721", # Do not compare types, use `isinstance()`
"E731", # Do not assign a `lambda` expression, use a `def`
"E741", # Ambiguous variable name
"F401", # Imported by unused
"EXE001", # file with shebang is not marked executable
"NPY002", # replace legacy random
"RUF005", # Consider iterable unpacking
"RUF008", # Do not use mutable default values for dataclass
"RUF010", # Use explicit conversion flag
"RUF012", # Mutable class attributes
"RUF013", # PEP 484 prohibits implicit `Optional`
"RUF015", # Prefer `next(...)` over single element slice
"RUF046", # Value being cast to `int` is already an integer
"RUF059", # Unpacked variables are not used
"RUF051", # Prefer pop over del
]
fixable = ["ALL"]
unfixable = []
dummy-variable-rgx = "^(_+|(_+[a-zA-Z0-9_]*[a-zA-Z0-9]+?))$"
[format]
quote-style = "double"
indent-style = "space"
skip-magic-trailing-comma = false
line-ending = "auto"
docstring-code-format = false
[lint.mccabe]
max-complexity = 150
================================================
FILE: CHANGELOG.md
================================================
# Change Log for SD.Next
## Update for 2026-02-07
- **Upscalers**
- add support for [spandrel](https://github.com/chaiNNer-org/spandrel)
upscaling engine with suport for new upscaling model families
- add two new ai upscalers: *RealPLKSR NomosWebPhoto* and *RealPLKSR AnimeSharpV2*
- add two new interpolation methods: *HQX* and *ICB*
- **Features**
- pipelines: add **ZImageInpaint**, thanks @CalamitousFelicitousness
- add `--remote` command line flag that reduces client/server chatter and improves link stability
for long-running generates, useful when running on remote servers
- **UI**
- ui: **themes** add *CTD-NT64Light* and *CTD-NT64Dark*, thanks @resonantsky
- ui: **gallery** add option to auto-refresh gallery, thanks @awsr
- **Internal**
- refactor: reorganize `cli` scripts
- **Fixes**
- fix: add metadata restore to always-on scripts
- fix: improve wildcard weights parsing, thanks @Tillerz
- fix: ui gallery cace recursive cleanup, thanks @awsr
- fix: `anima` model detection
- fix: lora unwanted unload
- fix: improve preview error handler
## Update for 2026-02-04
### Highlights for 2026-02-04
Refresh release two weeks after prior release, yet we still somehow managed to pack in *~150 commits*!
Highlights would be two new models: **Z-Image-Base** and **Anima**, *captioning* support for **tagger** models and a massive addition of new **schedulers**
Also here are updates to `torch` and additional GPU archs support for `ROCm` backends, plus a lot of internal improvements and fixes.
[ReadMe](https://github.com/vladmandic/automatic/blob/master/README.md) | [ChangeLog](https://github.com/vladmandic/automatic/blob/master/CHANGELOG.md) | [Docs](https://vladmandic.github.io/sdnext-docs/) | [WiKi](https://github.com/vladmandic/automatic/wiki) | [Discord](https://discord.com/invite/sd-next-federal-batch-inspectors-1101998836328697867) | [Sponsor](https://github.com/sponsors/vladmandic)
### Details for 2026-02-04
- **Models**
- [Tongyi-MAI Z-Image Base](https://tongyi-mai.github.io/Z-Image-blog/)
yup, its finally here, the full base model of **Z-Image**
- [CircleStone Anima](https://huggingface.co/circlestone-labs/Anima)
2B anime optimized model based on a modified Cosmos-Predict, using Qwen3-0.6B as a text encoder
- **Features**
- **caption** tab support for Booru tagger models, thanks @CalamitousFelicitousness
- add SmilingWolf WD14/WaifuDiffusion tagger models, thanks @CalamitousFelicitousness
- support comments in wildcard files, using `#`
- support aliases in metadata skip params, thanks @CalamitousFelicitousness
- ui gallery improve cache cleanup and add manual option, thanks @awsr
- selectable options to add system info to metadata, thanks @Athari
see *settings -> image metadata*
- **Schedulers**
- schedulers documentation has new home: <https://vladmandic.github.io/sdnext-docs/Schedulers/>
- add 13(!) new scheduler families
not a port, but more of inspired-by [res4lyf](https://github.com/ClownsharkBatwing/RES4LYF) library
all schedulers should be compatible with both `epsilon` and `flow` prediction style!
*note*: each family may have multiple actual schedulers, so the list total is 56(!) new schedulers
- core family: *RES*
- exponential: *DEIS, ETD, Lawson, ABNorsett*
- integrators: *Runge-Kutta, Linear-RK, Specialized-RK, Lobatto, Radau-IIA, Gauss-Legendre*
- flow: *PEC, Riemannian, Euclidean, Hyperbolic, Lorentzian, Langevin-Dynamics*
- add 3 additional schedulers: *CogXDDIM, DDIMParallel, DDPMParallel*
not originally intended to be a general purpose schedulers, but they work quite nicely and produce good results
- image metadata: always log scheduler class used
- **API**
- add `/sdapi/v1/xyz-grid` to enumerate xyz-grid axis options and their choices
see `/cli/api-xyzenum.py` for example usage
- add `/sdapi/v1/sampler` to get current sampler config
- modify `/sdapi/v1/samplers` to enumerate available samplers possible options
see `/cli/api-samplers.py` for example usage
- **Internal**
- tagged release history: <https://github.com/vladmandic/sdnext/tags>
each major for the past year is now tagged for easier reference
- **torch** update
*note*: may cause slow first startup/generate
**cuda**: update to `torch==2.10.0`
**xpu**: update to `torch==2.10.0`
**rocm**: update to `torch==2.10.0`
**openvino**: update to `torch==2.10.0` and `openvino==2025.4.1`
- rocm: expand available gfx archs, thanks @crashingalexsan
- rocm: set `MIOPEN_FIND_MODE=2` by default, thanks @crashingalexsan
- relocate all json data files to `data/` folder
existing data files are auto-migrated on startup
- refactor and improve connection monitor, thanks @awsr
- further work on type consistency and type checking, thanks @awsr
- log captured exceptions
- improve temp folder handling and cleanup
- remove torch errors/warings on fast server shutdown
- add ui placeholders for future agent-scheduler work, thanks @ryanmeador
- implement abort system on repeated errors, thanks @awsr
currently used by lora and textual-inversion loaders
- update package requirements
- **Fixes**
- add video ui elem_ids, thanks @ryanmeador
- use base steps as-is for non sd/sdxl models
- ui css fixes for modernui
- support lora inside prompt selector
- framepack video save
- metadata save for manual saves
## Update for 2026-01-22
Bugfix refresh
- add `SD_DEVICE_DEBUG` env variable to trace rocm/xpu/directml init failures
- fix detailer double save
- fix lora load when using peft/diffusers loader
- fix rocm hipblaslt detection
- fix image delete, thanks @awsr
- fix `all_seeds` error
- fix qwen settings typo, thanks @liutyi
- improve `wrap_gradio` error handling
- use refiner/detail steps as-is for non sd/sdxl models
## Update for 2026-01-20
### Highlights for 2026-01-20
First release of 2026 brings quite a few new models: **Flux.2-Klein, Qwen-Image-2512, LTX-2-Dev, GLM-Image**
There are also improvements to *SDNQ* quantization engine, updated *Prompt Enhance*, *Image Preview* and many others.
Plus some significant under-the-hood changes to improve code coverage and quality which resulted in more than usual levels of bug-fixes and some ~330 commits!
For full list of changes, see full changelog.
[ReadMe](https://github.com/vladmandic/automatic/blob/master/README.md) | [ChangeLog](https://github.com/vladmandic/automatic/blob/master/CHANGELOG.md) | [Docs](https://vladmandic.github.io/sdnext-docs/) | [WiKi](https://github.com/vladmandic/automatic/wiki) | [Discord](https://discord.com/invite/sd-next-federal-batch-inspectors-1101998836328697867) | [Sponsor](https://github.com/sponsors/vladmandic)
### Details for 2026-01-20
- **Models**
- [Flux.2 Klein](https://bfl.ai/blog/flux2-klein-towards-interactive-visual-intelligence)
Flux.2-Klein is a new family of compact models from BFL in *4B and 9B sizes* and avaialable as *destilled and base* variants
also includes are *sdnq prequantized variants*
*note*: 9B variant is [gated](https://vladmandic.github.io/sdnext-docs/Gated/)
- [Qwen-Image-2512](https://qwen.ai/blog?id=qwen-image-2512)
Qwen-Image successor, significantly reduces the AI-generated look and adds finer natural detailils and improved text rendering
available in both *original*, *sdnq-svd prequantized* and *sdnq-dynamic prequantized* variants
thanks @CalamitousFelicitousness
- [LTX-2 19B Dev](https://ltx.io/model/ltx-2)
LTX-2 is a new very large 19B parameter video generation model from Lightricks using Gemma-3 text encoder
available for T2I/I2I workflows in original and sdnq prequantized variants
*note*: model is very sensitive to input params and will result in errors otherwise
- [GLM-Image](https://z.ai/blog/glm-image)
GLM-image is a new image generation model that adopts a hybrid autoregressive with diffusion decoder architecture
available in both *original* and *sdnq-dynamic prequantized* variants
thanks @CalamitousFelicitousness
*note*: model requires pre-release versions of `transformers` package:
> pip install --upgrade git+https://github.com/huggingface/transformers.git
> ./webui.sh --experimental
- [Nunchaku Z-Image Turbo](https://huggingface.co/nunchaku-tech/nunchaku-z-image-turbo)
nunchaku optimized z-image turbo
- **Feaures**
- **SDNQ**: add *dynamic* quantization method
sdnq can dynamically determine best quantization method for each module layer
slower to quantize on-the-fly, but results in better quality with minimal resource usage
- **SDNQ** now has *19 int* based and *69 float* based quantization types
*note*: not all are exposed via ui purely for simplicity, but all are available via api and scripts
- **wildcards**: allow weights, thanks @Tillerz
- **sampler**: add laplace beta schedule
results in better prompt adherence and smoother infills
- **prompt enhance**: improve handling and refresh ui, thanks @CalamitousFelicitousness
new models such moondream-3 and xiaomo-mimo
add support for *thinking* mode where model can reason about the prompt
add support for *vision* processing where prompt enhance can also optionally analyze input image
add support for *pre-fill* mode where prompt enhance can continue from existing caption
- **chroma**: add inpaint pipeline support
- **taesd preview**: support for more models, thanks @alerikaisattera
- **image ouput paths**: better handling of relative/absolute paths, thanks @CalamitousFelicitousness
- **UI**
- kanvas add send-to functionality
- kanvas improve support for standardui
- improve extensions tab layout and behavior, thanks @awsr
- indicate collapsed/hidden sections
- persistent panel minimize/maximize state
- gallery improve sorting behavior
- gallery implement prev/next navigation in full screen viewer, thanks @ryanmeador
- **Internal**
- **lora** native support by default will now skip text-encoder
can be enabled in *settings -> networks*
- update core js linting to `eslint9`, thanks @awsr
- update modernui js linting to `eslint9`, thanks @awsr
- update kanvas js linting to `eslint9`, thanks @awsr
- update strong typing checks, thanks @awsr
- update reference models previews, thanks @liutyi
- update models specs page, thanks @alerikaisattera
- sdnq improvements
- startup sequence optimizations
- rocm/hip/hipblast detection and initialization improvements
- zluda detection and initialization improvements
- new env variable `SD_VAE_DEFAULT` to force default vae processing
- update `nunchaku==1.1.0`
- lora switch logic from force-diffusers to allow-native
- split `reference.json`
- print system env on startup
- disable fallback on models with custom loaders
- refactor triggering of prompt parser and set secondary prompts when needed
- refactor handling of seeds
- allow unsafe ssl context for downloads
- **Fixes**
- controlnet: controlnet with non-english ui locales
- core: add skip_keys to offloading logic, fixes wan frames mismatch, thanks @ryanmeador
- core: force model move on offload=none
- core: hidiffusion tracing
- core: hip device name detection
- core: reduce triton test verbosity
- core: switch processing class not restoring params
- extension tab: update checker, date handling, formatting etc., thanks @awsr
- lora force unapply on change
- lora handle null description, thanks @CalamitousFelicitousness
- lora loading when using torch without distributed support
- lora skip with strength zero
- lora: generate slowdown when consequtive lora-diffusers enabled
- model: google-genai auth, thanks @CalamitousFelicitousness
- model: improve qwen i2i handling
- model: kandinsky-5 image and video on non-cuda platforms
- model: meituan-longca-image-edit missing image param
- model: wan 2.2 i2v
- model: z-image single-file loader
- other: update civitai base models, thanks @trojaner
- ui: gallery save/delete
- ui: mobile auto-collapse when using side panel, thanks @awsr
- ui: networks filter by model type
- ui: networks icon/list view type switch, thanks @awsr
- vae: force align width/height to vae scale factor
- wildards with folder specification
## Update for 2025-12-26
### Highlights for 2025-12-26
End of year release update, just two weeks after previous one, with several new models and features:
- Several new models including highly anticipated **Qwen-Image-Edit 2511** as well as **Qwen-Image-Layered**, **LongCat Image** and **Ovis Image**
- New features including support for **Z-Image** *ControlNets* and *fine-tunes* and **Detailer** segmentation support
[ReadMe](https://github.com/vladmandic/automatic/blob/master/README.md) | [ChangeLog](https://github.com/vladmandic/automatic/blob/master/CHANGELOG.md) | [Docs](https://vladmandic.github.io/sdnext-docs/) | [WiKi](https://github.com/vladmandic/automatic/wiki) | [Discord](https://discord.com/invite/sd-next-federal-batch-inspectors-1101998836328697867) | [Sponsor](https://github.com/sponsors/vladmandic)
### Details for 2025-12-26
- **Models**
- [LongCat Image](https://github.com/meituan-longcat/LongCat-Image) in *Image* and *Image Edit* variants
LongCat is a new 8B diffusion base model using Qwen-2.5 as text encoder
- [Qwen-Image-Edit 2511](https://huggingface.co/Qwen/Qwen-Image-Edit-2511) in *base* and *pre-quantized* variants
Key enhancements: mitigate image drift, improved character consistency, enhanced industrial design generation, and strengthened geometric reasoning ability
- [Qwen-Image-Layered](https://huggingface.co/Qwen/Qwen-Image-Layered) in *base* and *pre-quantized* variants
Qwen-Image-Layered, a model capable of decomposing an image into multiple RGBA layers
*note*: set number of desired output layers in *settings -> model options*
- [Ovis Image 7B](https://huggingface.co/AIDC-AI/Ovis-Image-7B)
Ovis Image is a new text-to-image base model based on Qwen3 text-encoder and optimized for text-rendering
- **Features**
- Google **Gemini** and **Veo** models support for both *Dev* and *Vertex* access methods
see [docs](https://vladmandic.github.io/sdnext-docs/Google-GenAI/) for details
- **Z-Image Turbo** support loading transformer file-tunes in safetensors format
as with any transformers/unet finetunes, place them then `models/unet`
and use **UNET Model** to load safetensors file as they are not complete models
- **Z-Image Turbo** support for **ControlNet Union**
includes 1.0, 2.0 and 2.1 variants
- **Detailer** support for segmentation models
some detection models can produce exact segmentation mask and not just box
to enable, set `use segmentation` option
added segmentation models: *anzhc-eyes-seg*, *anzhc-face-1024-seg-8n*, *anzhc-head-seg-8n*
- **Internal**
- update nightlies to `rocm==7.1`
- mark `python==3.9` as deprecated
- extensions improved status indicators, thanks @awsr
- additional type-safety checks, thanks @awsr
- add model info to ui overlay
- **Wiki/Docs/Illustrations**
- update models page, thanks @alerikaisattera
- update reference models samples, thanks @liutyi
- **Fixes**
- generate forever fix loop checks, thanks @awsr
- tokenizer expclit use for flux2, thanks @CalamitousFelicitousness
- torch.compile skip offloading steps
- kanvas css with standardui
- control input media with non-english locales
- handle embeds when on meta device
- improve offloading when model has manual modules
- ui section colapsible state, thanks @awsr
- ui filter by model type
## Update for 2025-12-11
### Highlights for 2025-12-11
*What's new?*
New native [kanvas](https://vladmandic.github.io/sdnext-docs/Kanvas/) module for image manipulation that fully replaces *img2img*, *inpaint* and *outpaint* controls, massive update to **Captioning/VQA** models and features
New generation of **Flux.2** large image model, new **Z-Image** model that is creating a lot of buzz, new **Kandinsky 5 Lite** image model and new **Photoroom PRX** model
And first cloud models with **Google Nano Banana** *2.5 Flash and 3.0 Pro* and **Google Veo** *3.1* video model
Also new are **HunyuanVideo 1.5** and **Kandinsky 5 Pro** video models
Plus a lot of internal improvements and fixes

[ReadMe](https://github.com/vladmandic/automatic/blob/master/README.md) | [ChangeLog](https://github.com/vladmandic/automatic/blob/master/CHANGELOG.md) | [Docs](https://vladmandic.github.io/sdnext-docs/) | [WiKi](https://github.com/vladmandic/automatic/wiki) | [Discord](https://discord.com/invite/sd-next-federal-batch-inspectors-1101998836328697867) | [Sponsor](https://github.com/sponsors/vladmandic)
### Details for 2025-12-11
- **Models**
- [Black Forest Labs FLUX.2 Dev](https://bfl.ai/blog/flux-2) and prequantized variation [SDNQ-SVD-Uint4](https://huggingface.co/Disty0/FLUX.2-dev-SDNQ-uint4-svd-r32)
**FLUX.2-Dev** is a brand new model from BFL and uses large 32B DiT together with Mistral 24B as text encoder
model is available for text, image and edit tasks and can optionally use control input as second input image
this is a very large model at ~100GB, so use of prequantized model at ~32GB is strongly advised
using prequant version and default offloading, model runs on GPUs with ~20GB
*note*: model is [gated](https://vladmandic.github.io/sdnext-docs/Gated/)
- [Z-Image Turbo](https://huggingface.co/Tongyi-MAI/Z-Image-Turbo) and prequantized variation [SDNQ-SVD-Uint4](https://huggingface.co/Disty0/Z-Image-Turbo-SDNQ-uint4-svd-r32)
**Z-Image** is a powerful and highly efficient image generation model with 6B parameters and using Qwen-3 as text encoder
unlike most of new models that are far larger, Z-Image architecture allows it to run with good performance even on mid-range hardware
*note*: initial release is *Turbo* variant only with *Base* and *Edit* variants to follow
- [Kandinsky 5.0 Lite]() is a new 6B model using Qwen-2.5 as text encoder
it comes in text-to-image and image-edit variants
- **Google Gemini Nano Banana** [2.5 Flash](https://blog.google/products/gemini/gemini-nano-banana-examples/) and [3.0 Pro](https://deepmind.google/models/gemini-image/pro/)
first cloud-based model directly supported in SD.Next UI
*note*: need to set `GOOGLE_API_KEY` environment variable with your key to use this model
- [Photoroom PRX 1024 Beta](https://huggingface.co/Photoroom/prx-1024-t2i-beta)
PRX (Photoroom Experimental) is a small 1.3B parameter t2i model trained entirely from scratch, it uses T5-Gemma text-encoder
- **Video**
- [HunyuanVideo 1.5](https://huggingface.co/tencent/HunyuanVideo-1.5) in T2V and I2V variants, both standard and distilled and both 720p and 480p resolutions
**HunyuanVideo 1.5** improves upon previous 1.0 version with better quality and higher resolution outputs, it uses Qwen2.5-VL text-encoder
distilled variants provide faster generation with slightly reduced quality
- [Kandinsky 5.0 Pro Video](https://huggingface.co/kandinskylab/Kandinsky-5.0-T2V-Pro-sft-5s-Diffusers) in T2V and I2V variants
larger 19B (and more powerful version) of previously released Lite 2B models
- [Google Veo 3.1](https://gemini.google/us/overview/video-generation/) for T2V and I2V workflows
*note*: need to set `GOOGLE_API_KEY` environment variable with your key to use this model
- **Kanvas**: new module for native canvas-based image manipulation
kanvas is a full replacement for *img2img, inpaint and outpaint* controls
see [docs](https://vladmandic.github.io/sdnext-docs/Kanvas/) for details
*experimental*: report any feedback in master [issue](https://github.com/vladmandic/sdnext/issues/4358)
- **Captioning** and **VQA: Visual Question & Answer**
massive update to both features and supported models, thanks @CalamitousFelicitousness
models:
- additional `mooondream-2` features
- support for `moondream-3-preview`
- support for `qwen3-vl` with thinking
- additional `gemma-3-vl` finetunes
- support for `XiaomiMiMo`
ui:
- ability to annotate actual image, not just generate captions/answers
e.g. actualy mark detected regions/points
features:
- ui indicator of model capabilities
- support for *prefill* style of prompting/answering
- support for *reasoning* mode for supported models
with option to output answer-only or reasoning-process
- additional debug logging
- **Other Features**
- **wildcards**: allow recursive inline wildcards using curly braces syntax
- **sdnq**: simplify pre-quantization saved config
- **attention**: additional torch attention settings
- **lora**: separate fuse setting for native-vs-diffuser implementations
- **auth**: strong-enforce auth check on all api endpoints
- **amdgpu**: prefer rocm-on-windows over zluda
- **amdgpu**: improve rocm-on-windows installer
- **sdnq**: improve dequant logic
- **gallery**: significant performance improvements, thanks @awsr
- **API**
- `/control` endpoint is now fully compatible with scripts
- `/control` additional params to to control *xyz grid*
see `cli/api-xyz.py` for simple example
- `/detailers` new endpoint to list available detailers, both built-in and any custom downloaded
- `/face-restorers` expanded to list model folders
- **Internal**
- python: set 3.10 as minimum supported version
- sdnq: multiple improvements to quantization and dequantization logic
- torch: update to `torch==2.9.1` for *cuda, ipex, openvino, rocm* backends
- attention: refactor attention handling
- scripts: remove obsolete video scripts
- lint: update global lint rules
- chrono: switch to official pipeline
- pipeline: add optional preprocess and postprocess hooks
- auth: wrap all internal api calls with auth check and use token when possible
- installer: reduce requirements
- installer: auto-restart on self-update
- server: set correct mime-types
- sdnq: unconditional register on startup
- python: start work on future-proofing for modern python versions, thanks @awsr
- nunchaku: update to `1.0.2`
- lint: add rules for run-on-windows
- gallery: setting to enable/disable client-side caching, thanks @awsr
- gallery: faster thumbnail generation, thanks @awsr
- gallery: purge old thumbnails, thanks @awsr
- **Docs**
- update supported models table with VAE information, thanks @alerikaisattera
- **Fixes**
- xyz-grid: improve parsing of axis lists, thanks @awsr
- hires: strength save/load in metadata, thanks @awsr
- imgi2img: fix initial scale tab, thanks @awsr
- img2img: fix restoring refine sampler from metadata, thanks @awsr
- log: client log formatting, thanks @awsr
- rocm: check if installed before forcing install
- pony-v7: fix text-encoder
- detailer: with face-restorers
- detailer: using lora in detailer prompt
- detailer: fail on unsupported models instead of corrputing results
- ui: fix collapsible panels
- svd: fix stable-video-diffusion dtype mismatch
- animatediff: disable sdnq if used
- lora: restore pipeline type if reload/recompile needed
- process: improve send-to functionality
- control: safe load non-sparse controlnet
- control: fix marigold preprocessor with bfloat16
- auth: fix password being shown in clear text during login
- firefox: remove obsolete checks, thanks @awsr
- runai streamer: cleanup logging, thanks @CalamitousFelicitousness
- gradio: event handlers, thanks @awsr
## Update for 2025-11-06
### Highlights for 2025-11-06
Service pack release that handles critical issues and improvements for **ROCm-on-Windows** and **ZLUDA** backends
Also included are several new features, notably improvements to **detailer** and ability to run [SD.Next](https://github.com/vladmandic/sdnext) with specific modules disabled
And new video model, **nVidia SANA 2B**

[ReadMe](https://github.com/vladmandic/automatic/blob/master/README.md) | [ChangeLog](https://github.com/vladmandic/automatic/blob/master/CHANGELOG.md) | [Docs](https://vladmandic.github.io/sdnext-docs/) | [WiKi](https://github.com/vladmandic/automatic/wiki) | [Discord](https://discord.com/invite/sd-next-federal-batch-inspectors-1101998836328697867) | [Sponsor](https://github.com/sponsors/vladmandic)
### Details for 2025-11-06
- **Models**
- [SANA Video_2B_480p T2V](https://huggingface.co/Efficient-Large-Model/SANA-Video_2B_480p_diffusers) is a small 2B ultra-efficient diffusion model
designed for rapid generation of high-quality videos and uses Gemma2 text encoder
- **Features**
- **ROCm for Windows** switch to using **TheRock** `torch` builds when available
recommended to run: `webui --use-rocm --reinstall`
- **ZLUDA** improve detection and handling of unsupported GPUs
recommended to run: `webui --use-zluda --reinstall`
- **detailer**
optional include detection image to output results
optional sort detection objects left-to-right for improved prompt consistency
enable multi-subject and multi-model prompts
- **disable modules**
ability to disable parts of the app
useful for custom deployments where some features are not desired
*note*: this doesn't just hide it from user, it completely disables the code paths
use `--disable x,y,z`
possible values:
- main tabs: *control,txt2img,img2img,video,extras,caption,gallery*
- aside tabs: *extensions,models,info,update,history,monitor,onnx,system,networks,logs*
- special: *settings,config* (hidden instead of disabled)
- **wildcards**: add inline processing using curly braces syntax
- add setting to control `cudnn` enable/disable
*note*: this can also be used to enable/disable `MIOpen` on ROCm backends
- change `vlm` beams to 1 by default for faster response
- **controlnet** allow processor to keep aspect-ratio for override images based on i2i or t2i resolution
- **networks** info details now displays image metadata from preview image
- **networks** new model previews, thanks @liutyi
- **Fixes**
- zluda: test and disable MIOpen as needed
- qwen: improve lora compatibility
- chrono: transformers handling
- chrono: extract last frame
- chrono: add vae scale override, thanks @CalamitousFelicitousness
- runai: improve streamer integration
- transformers: `dtype` use new syntax
- rocm: possible endless loop during hip detection
- rocm: auto-disable `miopen` for gfx120x
- detailer: better handling of settings, thanks @awsr
- installer: cleanup `--optional`
- hires: guard against multi-controlnet
- inpaint: fix init
- version: detection when cloned with .git suffix, thanks @awsr
- sdnq: init on video model load
- model type: detection
- model type: add tracing to model detection
- settings: guard against non-string values, thanks @awsr
- ui: wait for server options to be ready before initializing ui
- ui: fix full-screen image viewer buttons with non-standard ui theme
- ui: control tab show override section
- ui: mobile layout for video tab
- ui: increase init timeout
- video: save to subfolder
- taesd: warn on long decode times
- metadata: keep exif on thumbnail generation
- wildcard: obey seed for reproducible results
- sageattention: handle possible triton issues on some nvidia gpus, thanks @CalamitousFelicitousness
## Update for 2025-10-31
### Highlights for 2025-10-31
Less than 2 weeks since last release, here's a service-pack style update with a lot of fixes and improvements:
- Reorganization of **Reference Models** into *Base, Quantized, Distilled and Community* sections for easier navigation
and introduction of optimized **pre-quantized** variants for many popular models - use this as your quick start!
- New models:
**HunyuanImage 2.1** capable of 2K images natively, **HunyuanImage 3.0** large unified multimodal autoregressive model,
**ChronoEdit** that re-purposes temporal consistency of generation for image editing
**Pony 7** based on AuraFlow architecture, **Kandinsky 5** 10s video models
- New **offline mode** to use previously downloaded models without internet connection
- Optimizations to **WAN-2.2** given its popularity
plus addition of native **VAE Upscaler** and optimized **pre-quantized** variants
- New SOTA model loader using **Run:ai streamer**
- Updates to `rocm` and `xpu` backends
- Fixes, fixes, fixes... too many to list here!

[ReadMe](https://github.com/vladmandic/automatic/blob/master/README.md) | [ChangeLog](https://github.com/vladmandic/automatic/blob/master/CHANGELOG.md) | [Docs](https://vladmandic.github.io/sdnext-docs/) | [WiKi](https://github.com/vladmandic/automatic/wiki) | [Discord](https://discord.com/invite/sd-next-federal-batch-inspectors-1101998836328697867) | [Sponsor](https://github.com/sponsors/vladmandic)
### Details for 2025-10-31
- **Reference** networks section is now split into actual *Base* models plus:
- **Quantized**: pre-quantized variants of the base models using SDNQ-SVD quantization for optimal quality and smallest possible resource usage
examples: *FLUX.1-Dev/Krea/Kontext/Schnell, Qwen-Image/Edit/2509, Chroma1-HD, WAN-2.2-A44B, etc.*
*note*: pre-quantized *WAN-2.2-14B* is also available in video models and runs with only 12GB VRAM!
- **Distilled**: distilled variants of base models
examples: *Turbo, Lightning, Lite, SRPO, Distill, Pruning, etc.*
- **Community**: community highlights
examples: *Tempest, Juggernaut, Illustrious, Pony, NoobAI, etc.*
and all reference models have new preview images, thanks @liutyi
- **Models Reference**
- [Tencent HunyuanImage 2.1](https://huggingface.co/tencent/HunyuanImage-2.1) in *full*, *distilled* and *refiner* variants
*HunyuanImage-2.1* is a large (51GB) T2I model capable of natively generating 2K images and uses Qwen2.5 + T5 text-encoders and 32x VAE
- [Tencent HunyuanImage 3.0](https://huggingface.co/tencent/HunyuanImage-3.0) in [pre-quant](https://huggingface.co/Disty0/HunyuanImage3-SDNQ-uint4-svd-r32) only variant due to massive size
*HunyuanImage 3.0* is very large at 47GB pre-quantized (oherwise its 157GB) that unifies multimodal understanding and generation within an autoregressive framework
- [nVidia ChronoEdit](https://huggingface.co/nvidia/ChronoEdit-14B-Diffusers)
*ChronoEdit* is a 14B image editing model based on *WAN*
this model reframes image editing as a video generation task, using input and edited images as start/end frames to leverage pretrained video models with temporal consistency
to extend temporal consistency for image editing, set *settings -> model options -> chrono temporal steps* to desired number of temporaly reasoning steps
- [Kandinsky 5 Lite 10s](https://huggingface.co/ai-forever/Kandinsky-5.0-T2V-Lite-sft-10s-Diffusers') in *SFT, CFG-distilled and Steps-distilled* variants
second series of models in *Kandinsky5* series is T2V model optimized for 10sec videos and uses Qwen2.5 text encoder
- [Pony 7](https://huggingface.co/purplesmartai/pony-v7-base)
Pony 7 steps in a different direction from previous Pony models and is based on AuraFlow architecture and UMT5 encoder
- **Models Auxiliary**
- [Qwen 3-VL](https://huggingface.co/Qwen/Qwen3-VL-4B-Instruct) VLM for interrogate and prompt enhance, thanks @CalamitousFelicitousness
this includes *2B, 4B and 8B* variants
- [WAN Asymettric Upscale](https://huggingface.co/spacepxl/Wan2.1-VAE-upscale2x)
available as general purpose upscaler that can be used during standard workflow or process tab
available as VAE for compatible video models: *WAN-2.x-14B, SkyReels-v2* models
- [Apple DepthPro](https://huggingface.co/apple/DepthPro) controlnet processor, thanks @nolbert82
- [LibreFlux controlnet](https://huggingface.co/neuralvfx/LibreFlux-ControlNet) segmentation controlnet for FLUX.1
- **Features**
- **offline mode**: enable in *settings -> hugginface*
enables fully offline mode where previously downloaded models can be used as-is
*note*: must be enabled only after all packages have been installed and model has been run online at least once
- **model load**: SOTA method using nVidia's [Run:ai streamer](https://github.com/run-ai/runai-model-streamer)
enable in *settings -> model options -> runai streamer*
applies to *diffusers, transformers and sdnq* loaders, note this is linux-only feature
*experimental* but shows significant model load speedups, 20-40% depending on model and hardware
- **Backend**
- switch to `torch==2.9` for *ipex, rocm and openvino*
- switch to `rocm==7.0` for nightlies
- log `triton` availability on startup
- add `xpu` stats in gpu monitor
- **Other**
- improved **SDNQ SVD** and low-bit matmul performance
- reduce RAM usage on model load using **SDNQ SVD**
- change default **schedulers** for sdxl
- warn on `python==3.9` end-of-life and `python==3.10` not actively supported
- **scheduler** add base and max shift parameters for flow-matching samplers
- enhance `--optional` flag to pre-install optional packages
- add `[lora]` to recognized filename patterns
- when using **shared-t5** *(default)*, it will load standard or pre-quant depending on model
- enhanced LoRA support for **Wan-2.2-14B**
- log available attention mechanisms on startup
- support for switching back-and-forth **t2i** and **t2v** for *wan-2.x* models
- control `api` cache controlnets
- additional model modules **deduplication** for both normal and pre-quant models: *umt5, qwen25-vl*
- **Fixes**
- startup error with `--profile` enabled if using `--skip`
- restore orig init image for each batch sequence
- fix modernui hints layout
- fix `wan-2.2-a14b` stage selection
- fix `wan-2.2-5b` vae decode
- disabling live preview should not disable progress updates
- video tab create `params.txt` with metadata
- fix full-screen image-viewer toolbar actions with control tab
- improve filename sanitization
- lora auto-detect low/high stage if not specified
- lora disable fuse on partially applied network
- fix networks display with extended characters, thanks @awsr
- installer handle different `opencv` package variants
- fix using pre-quantized shared-t5
- fix `wan-2.2-14b-vace` single-stage exectution
- fix `wan-2.2-5b` tiled vae decode
- fix `controlnet` loading with quantization
- video use pre-quantized text-encoder if selected model is pre-quantized
- handle sparse `controlnet` models
- catch `xet` warnings
- avoid unnecessary pipe variant switching
- validate pipelines on import
- fix `nudenet` process tab operations
- `controlnet` input validation
- log metadata keys that cannot be applied
- fix `framepack` with image input
## Update for 2025-10-18
- **Models**
[Kandinsky 5 Lite](https://huggingface.co/ai-forever/Kandinsky-5.0-T2V-Lite-sft-5s-Diffusers') in *SFT, CFG-distilled and Steps-distilled* variants
first model in Kandinsky5 series is T2V model optimized for 5sec videos and uses Qwen2.5 text encoder
- **Fixes**
- ROCm-on-Windows additional checks
- SDNQ-SVD fallback on incompatible layers
- Huggingface model download
- Video implement dynamic and manual sampler shift
- Fix interrupt batch processing
- Delay import of control processors until used
- Fix tiny VAE with batched results
- Fix CFG scale not added to metadata and set valid range to >=1.0
- **Other**
- Optimized Video tab layout
- Video enable VAE slicing and framewise decoding when possible
- Detect and log `flash-attn` and `sageattention` if installed
- Remove unused UI settings
## Update for 2025-10-17
### Highlights for 2025-10-17
It's been a month since the last release and number of changes is yet again massive with over 300 commits!
Highlight are:
- **Torch**: ROCm on Windows for AMD GPUs
if you have a compatible GPU, performance gains are significant!
- **Models**:
a lot of new stuff with **Qwen-Image-Edit** including multi-image edits and distilled variants,
new **Flux**, **WAN**, **LTX**, **HiDream** variants, expanded **Nunchaku** support and new SOTA upscaler with **SeedVR2**
plus improved video support in general, including new methods of video encoding
- **Quantization**:
new **SVD**-style quantization using SDNQ offers almost zero-loss even with **4bit** quantization
and now you can also test your favorite quantization on-the-fly and then save/load model for future use
- Other: support for **Huggingface** mirrors, changes to installer to prevent unwanted `torch-cpu` operations, improved VAE previews, etc.

[ReadMe](https://github.com/vladmandic/automatic/blob/master/README.md) | [ChangeLog](https://github.com/vladmandic/automatic/blob/master/CHANGELOG.md) | [Docs](https://vladmandic.github.io/sdnext-docs/) | [WiKi](https://github.com/vladmandic/automatic/wiki) | [Discord](https://discord.com/invite/sd-next-federal-batch-inspectors-1101998836328697867) | [Sponsor](https://github.com/sponsors/vladmandic)
### Details for 2025-10-17
- **Models**
- [WAN 2.2 14B VACE](https://huggingface.co/alibaba-pai/Wan2.2-VACE-Fun-A14B)
available for *text-to-image* and *text-to-video* and *image-to-video* workflows
- [Qwen Image Edit 2509](https://huggingface.co/Qwen/Qwen-Image-Edit-2509) and [Nunchaku Qwen Image Edit 2509](https://huggingface.co/nunchaku-tech/nunchaku-qwen-image-edit-2509)
updated version of Qwen Image Edit with improved image consistency
- [Qwen Image Pruning](https://huggingface.co/OPPOer/Qwen-Image-Pruning) and [Qwen Image Edit Pruning](https://huggingface.co/OPPOer/Qwen-Image-Edit-Pruning)
pruned versions of Qwen with 13B params instead of 20B, with some quality tradeoff
- [Tencent FLUX.1 Dev SRPO](https://huggingface.co/tencent/SRPO)
SRPO is trained by Tencent with specific technique: directly aligning the full diffusion trajectory with fine-grained human preference
- [Nunchaku SDXL](https://huggingface.co/nunchaku-tech/nunchaku-sdxl) and [Nunchaku SDXL Turbo](https://huggingface.co/nunchaku-tech/nunchaku-sdxl-turbo)
impact of nunchaku engine on unet-based model such as sdxl is much less than on a dit-based models, but its still significantly faster than baseline
note that nunchaku optimized and pre-quantized unet is replacement for base unet, so its only applicable to base models, not any of fine-tunes
*how to use*: enable nunchaku in settings -> quantization and then load either sdxl-base or sdxl-base-turbo reference models
- [HiDream E1.1](https://huggingface.co/HiDream-ai/HiDream-E1-1)
updated version of HiDream-E1 image editing model
- [LTXVideo 0.9.8](https://huggingface.co/Lightricks/LTX-Video-0.9.8-13B-distilled)
updated version of LTXVideo t2v/i2iv model
- [SeedVR2](https://iceclear.github.io/projects/seedvr/)
originally designed for video restoration, seedvr works great for image detailing and upscaling!
available in 3B, 7B and 7B-sharp variants, use as any other upscaler!
note: seedvr is a very large model (6.4GB and 16GB respectively) and not designed for lower-end hardware, quantization is highly recommended
note: seedvr is highly sensitive to its cfg scale, set in *settings -> postprocessing*
lower values will result in smoother output while higher values add details
- [X-Omni SFT](https://x-omni-team.github.io/)
*experimental*: X-omni is a transformer-only discrete auto-regressive image generative model trained with reinforcement learning
- **Features**
- **Model save**: ability to save currently loaded model as a new standalone model
why? SD.Next always prefers to start with full model and quantize on-demand during load
however, when you find your exact preferred quantization settings that work well for you,
saving such model as a new model allows for faster loads and reduced disk space usage
so its best of both worlds: you can experiment and test different quantization methods and once you find the one that works for you, save it as a new model
saved models appear in network tab as normal models and can be loaded as such
available in *models* tab
- [Qwen Image-Edit](https://huggingface.co/Qwen/Qwen-Image-Edit-2509) multi-image editing
requires qwen-image-edit-2509 or its variant as multi-image edits are not available in original qwen-image
in ui control tab: inputs -> separate init image
add image for *input media* and *control media*
can be
- [Cache-DiT](https://github.com/vipshop/cache-dit)
cache-dit is a unified, flexible and training-free cache acceleration framework
compatible with many dit-based models such as FLUX.1, Qwen, HunyuanImage, Wan2.2, Chroma, etc.
enable in *settings -> pipeline modifiers -> cache-dit*
- [Nunchaku Flux.1 PulID](https://nunchaku.tech/docs/nunchaku/python_api/nunchaku.pipeline.pipeline_flux_pulid.html)
automatically enabled if loaded model is FLUX.1 with Nunchaku engine enabled and when PulID script is enabled
- **Huggingface mirror** in *settings -> huggingface*
if you're working from location with limited access to huggingface, you can now specify a mirror site
for example enter, `https://hf-mirror.com`
- **Compute**
- **ROCm** for Windows
support for both official torch preview release of `torch-rocm` for windows and **TheRock** unofficial `torch-rocm` builds for windows
note that rocm for windows is still in preview and has limited gpu support, please check rocm docs for details
- **DirectML** warn as *end-of-life*
`torch-directml` received no updates in over 1 year and its currently superseded by `rocm` or `zluda`
- command line params `--use-zluda` and `--use-rocm` will attempt desired operation or fail if not possible
previously sdnext was performing a fallback to `torch-cpu` which is not desired
- **installer** if `--use-cuda` or `--use-rocm` are specified and `torch-cpu` is installed, installer will attempt to reinstall correct torch package
- **installer** warn if *cuda* or *rocm* are available and `torch-cpu` is installed
- support for `torch==2.10-nightly` with `cuda==13.0`
- **Extensions**
- [Agent-Scheduler](https://github.com/SipherAGI/sd-webui-agent-scheduler)
was a high-value built-in extension, but it has not been maintained for 1.5 years
it also does not work with control and video tabs which are the core of sdnext nowadays
so it has been removed from built-in extensions: manual installation is still possible
- [DAAM: Diffusion Attentive Attribution Maps](https://github.com/castorini/daam)
create heatmap visualizations of which parts of the prompt influenced which parts of the image
available in scripts for sdxl text-to-image workflows
- **Offloading**
- improve offloading for pipelines with multiple stages such as *wan-2.2-14b*
- add timers to measure onload/offload times during generate
- experimental offloading using `torch.streams`
enable in settings -> model offloading
- new feature to specify which models types not to offload
in *settings -> model offloading -> model types not to offload*
- **UI**
- **connection monitor**
main logo in top-left corner now indicates server connection status and hovering over it shows connection details
- separate guidance and detail sections
- networks ability to filter lora by base model version
- add interrogate button to input images
- disable spellchecks on all text inputs
- **SDNQ**
- add `SVDQuant` quantization method support
- make sdnq scales compatible with balanced offload
- add int8 `matmul` support for RDNA2 GPUs via triton
- improve int8 `matmul` performance on Intel GPUs
- **Other**
- server will note when restart is recommended due to package updates
- **interrupt** will now show last known preview image
*keep incomplete* setting is now *save interrupted*
- **logging** enable `debug`, `docs` and `api-docs` by default
- **logging** add detailed ram/vram utilization info to log
logging frequency can be specified using `--monitor x` command line param, where x is number of seconds
- **ipex** simplify internal implementation
- refactor to use new libraries
- styles and wildcards now use same seed as main generate for reproducible results
- **api** new endpoint POST `/sdapi/v1/civitai` to trigger civitai models metadata update
accepts optional `page` parameter to search specific networks page
- **reference models** additional example images, thanks @liutyi
- **reference models** add model size and release date, thanks @alerikaisattera
- **video** support for configurable multi-stage models such as WAN-2.2-14B
- **video** new LTX model selection
- replace `pynvml` with `nvidia-ml-py` for gpu monitoring
- update **loopback** script with radon seed option, thanks @rabanti
- **vae** slicing enable for *lowvram/medvram*, tiling for *lowvram*, both disabled otherwise
- **attention** remove split-attention and add explicitly attention slicing enable/disable option
enable in *settings -> compute settings*
can be combined with sdp, enabling may improve stability when used on iGPU or shared memory systems
- **nunchaku** update to `1.0.1` and enhance installer
- **xyz-grid** add guidance section
- **preview** implement configurable layers for WAN, Qwen, HV
- update swagger `/docs` endpoint style
- add `[epoch]` to filename template
- starting `[seq]` for filename template is now higher of largest previous sequence or number of files in folder
- **Video**
- use shared **T5** text encoder for video models when possible
- use shared **LLama** text encoder for video models when possible
- unified video save code across all video models
also avoids creation of temporary files for each frame unless user wants to save them
- unified prompt enhance code across all video models
- add job state tracking for video generation
- fix quantization not being applied on load for some models
- improve offloading for **ltx** and **wan**
- fix model selection in **ltx** tab
- **Experimental**
- `new` command line flag enables new `pydantic` and `albumentations` packages
- **modular pipelines**: enable in *settings -> model options*
only compatible with some pipelines, invalidates preview generation
- **modular guiders**: automatically used for compatible pipelines when *modular pipelines* is enabled
allows for using many different guidance methods:
*CFG, CFGZero, PAG, APG, SLG, SEG, TCFG, FDG*
- **Wiki**
- updates to *AMD-ROCm, ZLUDA, LoRA, DirectML, SDNQ, Quantization, Prompting, LoRA* pages
- new *Stability-Matrix* page
- **Fixes**
- **Microsoft Florence 2** both base and large variants
*note* this will trigger download of the new variant of the model, feel free to delete older variant in `huggingface` folder
- **MiaoshouAI PromptGen** 1.5/2.0 in both base and large variants
- fix prompt scheduling, thanks @nolbert82
- ui: fix image metadata display when switching selected image in control tab
- framepack: add explicit hf-login before framepack load
- framepack: patch solver for unsupported gpus
- benchmark: remove forced sampler from system info benchmark
- xyz-grid: fix xyz grid with random seeds
- reference: fix download for sd15/sdxl reference models
- fix checks in init/mask image decode
- fix hf token with extra chars
- image viewer refocus on gallery after returning from full screen mode
- fix attention guidance metadata save/restore
- vae preview add explicity cuda.sync
## Update for 2025-09-15
### Highlights for 2025-09-15
*What's new*? Big one is that we're (*finally*) switching the default UI to **ModernUI**, for both desktop and mobile use!
**StandardUI** is still available and can be selected in settings, but ModernUI is now the default for new installs
*What's else*? **Chroma** is in its final form, there are several new **Qwen-Image** variants and **Nunchaku** hit version 1.0!
Also, there are quite a few offloading improvements and many quality-of-life changes to UI and overall workflows
And check out new **history** tab in the right panel, it now shows visualization of entire processing timeline!

[ReadMe](https://github.com/vladmandic/automatic/blob/master/README.md) | [ChangeLog](https://github.com/vladmandic/automatic/blob/master/CHANGELOG.md) | [Docs](https://vladmandic.github.io/sdnext-docs/) | [WiKi](https://github.com/vladmandic/automatic/wiki) | [Discord](https://discord.com/invite/sd-next-federal-batch-inspectors-1101998836328697867) | [Sponsor](https://github.com/sponsors/vladmandic)
### Details for 2025-09-15
- **Models**
- **Chroma** final versions: [Chroma1-HD](https://huggingface.co/lodestones/Chroma1-HD), [Chroma1-Base](https://huggingface.co/lodestones/Chroma1-Base) and [Chroma1-Flash](https://huggingface.co/lodestones/Chroma1-Flash)
- **Qwen-Image** [InstantX ControlNet Union](https://huggingface.co/InstantX/Qwen-Image-ControlNet-Union) support
*note* qwen-image is already a very large model and controlnet adds 3.5GB on top of that so quantization and offloading are highly recommended!
- [Qwen-Lightning-Edit](https://huggingface.co/vladmandic/Qwen-Lightning-Edit) and [Qwen-Image-Distill](https://huggingface.co/SahilCarterr/Qwen-Image-Distill-Full) variants
- **Nunchaku** variants of [Qwen-Image-Lightning](https://huggingface.co/nunchaku-tech/nunchaku-qwen-image), [Qwen-Image-Edit](https://huggingface.co/nunchaku-tech/nunchaku-qwen-image-edit), [Nunchaku-Qwen-Image-Edit-Lightning](https://huggingface.co/nunchaku-tech/nunchaku-qwen-image-edit)
- **Nunchaku** variant of [Flux.1-Krea-Dev](https://huggingface.co/nunchaku-tech/nunchaku-flux.1-krea-dev)
if you have a compatible nVidia GPU, Nunchaku is the fastest quantization & inference engine
- [HunyuanDiT ControlNet](https://huggingface.co/Tencent-Hunyuan/HYDiT-ControlNet-v1.2) Canny, Depth, Pose
- [KBlueLeaf/HDM-xut-340M-anime](https://huggingface.co/KBlueLeaf/HDM-xut-340M-anime)
highly experimental: HDM *Home-made-Diffusion-Model* is a project to investigate specialized training recipe/scheme
for pre-training T2I model at home based on super-light architecture
*requires*: generator=cpu, dtype=float16, offload=none, both positive and negative prompts are required and must be long & detailed
- [Apple FastVLM](https://huggingface.co/apple/FastVLM-0.5B) in 0.5B, 1.5B and 7B variants
available in captioning tab
- updated [SD.Next Model Samples Gallery](https://vladmandic.github.io/sd-samples/compare.html)
- **UI**
- default to **ModernUI**
standard ui is still available via *settings -> user interface -> theme type*
- mobile-friendly!
- new **History** section in the right panel
shows detailed job history plus timeline of the execution
- make hints touch-friendly: hold touch to display hint
- improved image scaling in img2img and control interfaces
- add base model type to networks display, thanks @Artheriax
- additional hints to ui, thanks @Artheriax
- add video support to gallery, thanks @CalamitousFelicitousness
- additional artwork for reference models in networks, thanks @liutyi
- improve ui hints display
- restyled all toolbuttons to be modernui native
- reordered system settings
- dynamic direction of dropdowns
- improve process tab layout
- improve detection of active tab
- configurable horizontal vs vertical panel layout
in settings -> user interface -> panel min width
*example*: if panel width is less than specified value, layout switches to vertical
- configurable grid images size
in *settings -> user interface -> grid image size*
- gallery now includes reference model images
- reference models now include indicator if they are *ready* or *need download*
- **Offloading**
- **balanced**
- enable offload during pre-forward by default
- improve offloading of models with multiple dits
- improve offloading of models with impliciy vae processing
- improve offloading of models with controlnet
- more aggressive offloading of controlnet with lowvram flag
- **group**
- new offloading method, using *type=leaf* works on a similar level as sequential offloading
and can present significant savings on low-vram gpus, but comes at the higher performance cost
- **Quantization**
- option to specify models types not to quantize: *settings -> quantization*
allows for having quantization enabled, but skipping specific model types that do not need it
*example*: `sd, sdxl`
- **sdnq**
- add quantized matmul support for all quantization types and group sizes
- improve the performance of low bit quants
- **nunchaku**: update to `nunchaku==1.0.0`
*note*: nunchaku updated the repo which will trigger re-download of nunchaku models when first used
nunchaku is currently available for: *Flux.1 Dev/Schnell/Kontext/Krea/Depth/Fill*, *Qwen-Image/Qwen-Lightning*, *SANA-1.6B*
- **tensorrt**: new quantization engine from nvidia
*experimental*: requires new pydantic package which *may* break other things, to enable start sdnext with `--new` flag
*note*: this is model quantization only, no support for tensorRT inference yet
- **Other**
- **LoRA** allow specifying module to apply lora on
*example*: `<lora:mylora:1.0:module=unet>` would apply lora *only* on unet regardless of lora content
this is particularly useful when you have multiple loras and you want to apply them on different parts of the model
*example*: `<lora:firstlora:1.0:high>` and `<lora:secondlora:1.0:low>`
*note*: `low` is shorthand for `module=transformer_2` and `high` is shortcut for `module=transformer`
- **Detailer** allow manually setting processing resolution
*note*: this does not impact the actual image resolution, only the resolution at which detailer internally operates
- refactor reuse-seed and add functionality to all tabs
- refactor modernui js codebase
- move zluda flash attenion to *Triton Flash attention* option
- remove samplers filtering
- allow both flow-matching and discrete samplers for sdxl models
- cleanup command line parameters
- add `--new` command line flag to enable testing of new packages without breaking existing installs
- downgrade rocm to `torch==2.7.1`
- set the minimum supported rocm version on linux to `rocm==6.0`
- disallow `zluda` and `directml` on non-windows platforms
- update openvino to `openvino==2025.3.0`
- add deprecation warning for `python==3.9`
- allow setting denoise strength to 0 in control/img2img
this allows to run workflows which only refine or detail existing image without changing it
- **Fixes**
- normalize path hanlding when deleting images
- unified compile upscalers
- fix OpenVINO with ControlNet
- fix hidden model tags in networks display
- fix networks reference models display on windows
- fix handling of pre-quantized `flux` models
- fix `wan` use correct pipeline for i2v models
- fix `qwen-image` with hires
- fix `omnigen-2` failure
- fix `auraflow` quantization
- fix `kandinsky-3` noise
- fix `infiniteyou` pipeline offloading
- fix `skyreels-v2` image-to-video
- fix `flex2` img2img denoising strength
- fix `flex2` contronet vs inpaint image selection, thanks @alerikaisattera
- fix some use cases with access via reverse-proxy
- fix segfault on startup with `rocm==6.4.3` and `torch==2.8`
- fix wildcards folders traversal, thanks @dymil
- fix zluda flash attention with enable_gqa
- fix `wan a14b` quantization
- fix reprocess workflow for control with hires
- fix samplers set timesteps vs sigmas
- fix `detailer` missing metadata
- fix `infiniteyou` lora load with
## Update for 2025-08-20
A quick service release with several important hotfixes, improved localization support and adding new **Qwen** model variants...
[ReadMe](https://github.com/vladmandic/automatic/blob/master/README.md) | [ChangeLog](https://github.com/vladmandic/automatic/blob/master/CHANGELOG.md) | [Docs](https://vladmandic.github.io/sdnext-docs/) | [WiKi](https://github.com/vladmandic/automatic/wiki) | [Discord](https://discord.com/invite/sd-next-federal-batch-inspectors-1101998836328697867)
- **Models**
- [Qwen-Image-Edit](https://huggingface.co/Qwen/Qwen-Image-Edit)
Image editing using natural language prompting, similar to `Flux.1-Kontext`, but based on larger 20B `Qwen-Image` model
- [Nunchaku-Qwen-Image](https://huggingface.co/nunchaku-tech/nunchaku-qwen-image)
if you have a compatible nVidia GPU, Nunchaku is the fastest quantization engine, currently available for Flux.1, SANA and Qwen-Image models
*note*: release version of `nunchaku==0.3.2` does NOT include support, so you need to build [nunchaku](https://nunchaku.tech/docs/nunchaku/installation/installation.html) from source
- [SD.Next Model Samples Gallery](https://vladmandic.github.io/sd-samples/compare.html)
- updated with new models
- **Features**
- new *setting -> huggingface -> download method*
default is `rust` as new `xet` is known to cause issues
- support for `flux.1-kontext` lora
- support for `qwen-image` lora
- new *setting -> quantization -> modules dtype dict*
used to manually override quant types per module
- **UI**
- new artwork for reference models in networks
thanks @liutyi
- updated [localization](https://vladmandic.github.io/sdnext-docs/Locale/) for all 8 languages
- localization support for ModernUI
- single-click on locale rotates current locale
double-click on locale resets locale to `en`
- exclude ModernUI from list of extensions
ModernUI is enabled in settings, not by manually enabling extension
- **Docs**
- Models and Video pages updated with links to original model repos, model licenses and original release dates
thanks @alerikaisattera
- **Fixes**
- nunchaku use new download links and default to `0.3.2`
nunchaku wheels: <https://huggingface.co/nunchaku-tech/nunchaku/tree/main>
- fix OpenVINO with offloading
- add explicit offload calls on prompt encode
- error reporting on model load failure
- fix torch version checks
- remove extra cache clear
- enable explicit sync calls for `rocm` on windows
- note if restart-needed on initial startup import error
- bypass diffusers-lora-fuse on quantized models
- monkey-patch diffusers to use original weights shape when loading lora
- guard against null prompt
- install `hf_transfter` and `hf_xet` when needed
- fix ui cropped network tags
- enum reference models on startup
- dont report errors if agent scheduler is disabled
## Update for 2025-08-15
### Highlights for 2025-08-15
New release two weeks after the last one and its a big one with over 150 commits!
- Several new models: [Qwen-Image](https://qwenlm.github.io/blog/qwen-image/) (plus *Lightning* variant) and [FLUX.1-Krea-Dev](https://www.krea.ai/blog/flux-krea-open-source-release)
- Several updated models: [Chroma](https://huggingface.co/lodestones/Chroma), [SkyReels-V2](https://huggingface.co/Skywork/SkyReels-V2-DF-14B-720P-Diffusers), [Wan-VACE](https://huggingface.co/Wan-AI/Wan2.1-VACE-14B-diffusers), [HunyuanDiT](https://huggingface.co/Tencent-Hunyuan/HunyuanDiT-v1.2-Diffusers-Distilled)
- Plus continuing with major **UI** work with new embedded **Docs/Wiki** search, redesigned real-time **hints**, **wildcards** UI selector, built-in **GPU monitor**, **CivitAI** integration and more!
- On the compute side, new profiles for high-vram GPUs, offloading improvements, parallel-load for large models, support for new `torch` release and improved quality when using low-bit quantization!
- [SD.Next Model Samples Gallery](https://vladmandic.github.io/sd-samples/compare.html): pre-generated image gallery with 60 models (45 base and 15 finetunes) and 40 different styles resulting in 2,400 high resolution images!
gallery additionally includes model details such as typical load and inference times as well as sizes and types of each model component (*e.g. unet, transformer, text-encoder, vae*)
- And (*as always*) many bugfixes and improvements to existing features!

[ReadMe](https://github.com/vladmandic/automatic/blob/master/README.md) | [ChangeLog](https://github.com/vladmandic/automatic/blob/master/CHANGELOG.md) | [Docs](https://vladmandic.github.io/sdnext-docs/) | [WiKi](https://github.com/vladmandic/automatic/wiki) | [Discord](https://discord.com/invite/sd-next-federal-batch-inspectors-1101998836328697867)
*Note*: Change-in-behavior - locations of downloaded HuggingFace models and components are changed to allow for de-duplication of common modules and switched from using system default cache folder to `models/huggingface`
SD.Next will warn on startup on unused cache entries that can be removed. Also, to take advantage of de-duplication, you'll need to delete models from your `models/Diffusers` folder and let SD.Next re-download them!
### Details for 2025-08-15
- **Models**
- [Qwen-Image](https://qwenlm.github.io/blog/qwen-image/)
new image foundational model with *20B* params DiT and using *Qwen2.5-VL-7B* as the text-encoder!
available via *networks -> models -> reference*
*note*: this model is almost 2x the size of Flux, quantization and offloading are highly recommended!
*recommended* params: *steps=50, attention-guidance=4*
also available is pre-packaged [Qwen-Lightning](https://huggingface.co/vladmandic/Qwen-Lightning)
which is an unofficial merge of [Qwen-Image](https://qwenlm.github.io/blog/qwen-image/) with [Qwen-Lightning-LoRA](https://github.com/ModelTC/Qwen-Image-Lightning/) to improve quality and allow for generating in 8-steps!
- [FLUX.1-Krea-Dev](https://www.krea.ai/blog/flux-krea-open-source-release)
new 12B base model compatible with FLUX.1-Dev from *Black Forest Labs* with opinionated aesthetics and aesthetic preferences in mind
available via *networks -> models -> reference*
- [Chroma](https://huggingface.co/lodestones/Chroma)
great model based on FLUX.1 and then redesigned and retrained by *lodestones*
update with latest **HD**, **HD Flash** and **HD Annealed** variants which are based on *v50* release
available via *networks -> models -> reference*
- [SkyReels-V2](https://huggingface.co/Skywork/SkyReels-V2-DF-14B-720P-Diffusers)
SkyReels-V2 is a genarative video model based on Wan-2.1 but with heavily modified execution to allow for infinite-length video generation
supported variants are:
- diffusion-forcing: *T2I DF 1.3B* for 540p videos, *T2I DF 14B* for 720p videos, *I2I DF 14B* for 720p videos
- standard: *T2I 14B* for 720p videos and *I2I 14B* for 720p videos
- [Wan-VACE](https://huggingface.co/Wan-AI/Wan2.1-VACE-14B-diffusers)
basic support for *Wan 2.1 VACE 1.3B* and *14B* variants
optimized support with granular guidance control will follow soon
- [HunyuanDiT-Distilled](https://huggingface.co/Tencent-Hunyuan/HunyuanDiT-v1.2-Diffusers-Distilled)
variant of HunyuanDiT with reduced steps and improved performance
**Torch**
- Set default to `torch==2.8.0` for *CUDA, ROCm and OpenVINO*
- Add support for `torch==2.9.0-nightly`
- **UI**
- new embedded docs/wiki search!
**Docs** search: fully-local and works in real-time on all document pages
**Wiki** search: uses github api to search online wiki pages
- updated real-time hints, thanks @CalamitousFelicitousness
- add **Wilcards** UI
in networks display
- every heading element is collapsible!
- quicksettings reset button to restore all quicksettings to default values
because things do sometimes get wrong...
- configurable image fit in all image views
- rewritten **CivitAI downloader**
in *models -> civitai*
*hint*: you can enter model id in a search bar to pull information on specific model directly
*hint*: you can download individual versions or batch-download all-at-once!
- redesigned **GPU monitor**
- standard-ui: *system -> gpu monitor*
- modern-ui: *aside -> console -> gpu monitor*
- supported for *nVidia CUDA* and *AMD ROCm* platforms
- configurable interval in *settings -> user interface*
- updated *models* tab
- updated *models -> current* tab
- updated *models -> list models* tab
- updated *models -> metadata* tab
- updated *extensions* tab
- redesigned *settings -> user interface*
- gallery bypass browser cache for thumbnails
- gallery safer delete operation
- networks display indicator for currently active items
applies to: *styles, loras*
- apply privacy blur to hf and civitai tokens
- image download will now use actual image filename
- increase default and maximum ui request timeout to 2min/5min
- *hint*: card layout
card layout is used by networks, gallery, civitai search, etc.
you can change card size in *settings -> user interface*
- **Offloading**
- changed **default** values for offloading based on detected gpu memory
see [offloading docs](https://vladmandic.github.io/sdnext-docs/Offload/) for details
- new feature to specify which modules to offload always or never
in *settings -> model offloading -> offload always/never*
- new `highvram` profile provides significant performance boost on gpus with more than 24gb
- new `offload during pre-forward` option
in *settings -> model offloading*
switches from explicit offloading to implicit offloading on module execution change
- new `diffusers_offload_nonblocking` exerimental setting
instructs torch to use non-blocking move operations when possible
- **Features**
- new `T5: Use shared instance of text encoder` option
in *settings -> text encoder*
since a lot of new models use T5 text encoder, this option allows to share
the same instance across all models without duplicate downloads
*note* this will not reduce size of your already downloaded models, but will reduce size of future downloads
- **Wan** select which stage to run: *first/second/both* with configurable *boundary ration* when running both stages
in settings -> model options
- prompt parser allow explict `BOS` and `EOS` tokens in prompt
- **Nunchaku** support for *FLUX.1-Fill* and *FLUX.1-Depth* models
- update requirements/packages
- use model vae scale-factor for image width/heigt calculations
- **SDNQ** add `modules_dtype_dict` to quantize *Qwen Image* with mixed dtype
- **prompt enhance**
add `allura-org/Gemma-3-Glitter-4B`, `Qwen/Qwen3-4B-Instruct-2507`, `Qwen/Qwen2.5-VL-3B-Instruct` model support
improve system prompt
- **schedulers** add **Flash FlowMatch**
- **model loader** add parallel loader option
enabled by default, selectable in *settings -> model loading*
- **filename namegen** use exact sequence number instead of next available
this allows for more predictable and consistent filename generation
- **network delete** new feature that allows to delete network from disk
in *networks -> show details -> delete*
this will also delete description, metadata and previews associated with the network
only applicable to safetensors networks, not downloaded diffuser models
- **Wiki**
- Models page updated with links to original model repos and model licenses, thanks @alerikaisattera
- Updated Model-Support with newly supported models
- Updated Offload, Prompting, API pages
- **API**
- add `/sdapi/v1/checkpoint` POST endpoint to simply load a model
- add `/sdapi/v1/modules` GET endpoint to get info on model components/modules
- all generate endpoints now support `sd_model_checkpoint` parameter
this allows to specify which model to use for generation without needing to use additional endpoints
- **Refactor**
- change default huggingface cache folder from system default to `models/huggingface`
sd.next will warn on startup on unused cache entries
- new unified pipeline component loader in `pipelines/generic`
- remove **LDSR**
- remove `api-only` cli option
- **Docker**
- update cuda base image: `pytorch/pytorch:2.8.0-cuda12.8-cudnn9-runtime`
- update official builds: <https://hub.docker.com/r/vladmandic/sdnext-cuda/tags>
- **Fixes**
- refactor legacy processing loop
- fix settings components mismatch
- fix *Wan 2.2-5B I2V* workflow
- fix *Wan* T2I workflow
- fix OpenVINO
- fix video model vs pipeline mismatch
- fix video generic save frames
- fix inpaint image metadata
- fix processing image save loop
- fix progress bar with refine/detailer
- fix api progress reporting endpoint
- fix `openvino` backend failing to compile
- fix `zluda` with hip-sdk==6.4
- fix `nunchaku` fallback on unsupported model
- fix `nunchaku` windows download links
- fix *Flux.1-Kontext-Dev* with variable resolution
- use `utf_16_be` as primary metadata decoding
- fix `sd35` width/height alignment
- fix `nudenet` api
- fix global state tracking
- fix ui tab detection for networks
- fix ui checkbox/radio styling for non-default themes
- fix loading custom transformers and t5 safetensors tunes
- add mtime to reference models
- patch torch version so 3rd party libraries can use expected format
- unified stat size/mtime calls
- reapply offloading on ipadapter load
- api set default script-name
- avoid forced gc and rely on thresholds
- add missing interrogate in output panel
## Update for 2025-07-29
### Highlights for 2025-07-29
This is a big one: simply looking at number of changes, probably the biggest release since the project started!
Feature highlights include:
- [ModernUI](https://github.com/user-attachments/assets/6f156154-0b0a-4be2-94f0-979e9f679501) has quite some redesign which should make it more user friendly and easier to navigate plus several new UI themes
If you're still using **StandardUI**, give [ModernUI](https://vladmandic.github.io/sdnext-docs/Themes/) a try!
- New models such as [WanAI 2.2](https://wan.video/) in 5B and A14B variants for both *text-to-video* and *image-to-video* workflows as well as *text-to-image* workflow!
and also [FreePik F-Lite](https://huggingface.co/Freepik/F-Lite), [Bria 3.2](https://huggingface.co/briaai/BRIA-3.2) and [bigASP 2.5](https://civitai.com/models/1789765?modelVersionId=2025412)
- Redesigned [Video](https://vladmandic.github.io/sdnext-docs/Video) interface with support for general video models plus optimized [FramePack](https://vladmandic.github.io/sdnext-docs/FramePack) and [LTXVideo](https://vladmandic.github.io/sdnext-docs/LTX) support
- Fully integrated nudity detection and optional censorship with [NudeNet](https://vladmandic.github.io/sdnext-docs/NudeNet)
- New background replacement and relightning methods using **Latent Bridge Matching** and new **PixelArt** processing filter
- Enhanced auto-detection of default sampler types/settings results in avoiding common mistakes
- Additional **LLM/VLM** models available for captioning and prompt enhance
- Number of workflow and general quality-of-life improvements, especially around **Styles**, **Detailer**, **Preview**, **Batch**, **Control**
- Compute improvements
- [Wiki](https://github.com/vladmandic/automatic/wiki) & [Docs](https://vladmandic.github.io/sdnext-docs/) updates, especially new end-to-end [Parameters](https://vladmandic.github.io/sdnext-docs/Parameters/) page
In this release we finally break with legacy with the removal of the original [A1111](https://github.com/AUTOMATIC1111/stable-diffusion-webui/) codebase which has not been maintained for a while now
This plus major cleanup of codebase and external dependencies resulted in ~55k LoC (*lines-of-code*) reduction and spread over [~750 files](https://github.com/vladmandic/sdnext/pull/4017) in ~200 commits!
We also switched project license to [Apache-2.0](https://github.com/vladmandic/sdnext/blob/dev/LICENSE.txt) which means that SD.Next is now fully compatible with commercial and non-commercial use and redistribution regardless of modifications!
And (*as always*) many bugfixes and improvements to existing features!
For details, see [ChangeLog](https://github.com/vladmandic/automatic/blob/master/CHANGELOG.md)
> [!NOTE]
> We recommend clean install for this release due to sheer size of changes
> Although upgrades and existing installations are tested and should work fine!

[ReadMe](https://github.com/vladmandic/automatic/blob/master/README.md) | [ChangeLog](https://github.com/vladmandic/automatic/blob/master/CHANGELOG.md) | [Docs](https://vladmandic.github.io/sdnext-docs/) | [WiKi](https://github.com/vladmandic/automatic/wiki) | [Discord](https://discord.com/invite/sd-next-federal-batch-inspectors-1101998836328697867)
### Details for 2025-07-29
- **License**
- SD.Next [license](https://github.com/vladmandic/sdnext/blob/dev/LICENSE.txt) switched from **aGPL-v3.0** to **Apache-v2.0**
this means that SD.Next is now fully compatible with commercial and non-commercial use and redistribution regardless of modifications!
- **Models**
- [WanAI Wan 2.2](https://github.com/Wan-Video/Wan2.2) both 5B and A14B variants, for both T2V and I2V support
go to: *video -> generic -> wan -> pick variant*
optimized support with *VACE*, etc. will follow soon
*caution* Wan2.2 on its own is ~68GB, but also includes optional second-stage for later low-noise processing which is absolutely massive at additional ~54GB
you can enable second stage processing in *settings -> model options*, its disabled by default
*note*: quantization and offloading are highly recommended regardless of first-stage only or both stages!
- [WanAI Wan](https://wan.video/) T2V models for T2I workflows
Wan is originally designed for *video* workflows, but now also be used for *text-to-image* workflows!
supports *Wan-2.1 in 1.3B* and 14B variants and *Wan-2.2 in 5B and A14B* variants
supports all standard features such as quantization, offloading, TAESD preview generation, LoRA support etc.
can also load unet/transformer fine-tunes in safetensors format using UNET loader
simply select in *networks -> models -> reference*
*note* 1.3B model is a bit too small for good results and 14B is very large at 78GB even without second-stage so aggressive quantization and offloading are recommended
- [FreePik F-Lite](https://huggingface.co/Freepik/F-Lite) in *7B, 10B and Texture* variants
F-Lite is a 7B/10B model trained exclusively on copyright-safe and SFW content, trained on internal dataset comprising approximately 80 million copyright-safe images
available via *networks -> models -> reference*
- [Bria 3.2](https://huggingface.co/briaai/BRIA-3.2)
Bria is a smaller 4B parameter model built entirely on licensed data and safe for commercial use
*note*: this is a gated model, you need to [accept terms](https://huggingface.co/briaai/BRIA-3.2) and set your [huggingface token](https://vladmandic.github.io/sdnext-docs/Gated/)
available via *networks -> models -> reference*
- [bigASP 2.5](https://civitai.com/models/1789765)
bigASP is an experimental SDXL finetune using Flow matching method
load as usual, and leave sampler set to *Default*
or you can use following samplers: *UniPC, DPM, DEIS, SA*
required sampler settings: *prediction-method=flow-prediction*, *sigma-method=flowmatch*
recommended sampler settings: *flow-shift=1.0*
- [LBM: Latent Bridge Matching](https://github.com/gojasper/LBM)
very fast automatic image background replacement methods with relightning!
*simple*: automatic background replacement using [BiRefNet](https://github.com/ZhengPeng7/BiRefNet)
*relighting*: automatic background replacement with reglighting so source image fits desired background
with optional composite blending
available in *img2img or control -> scripts*
- add **FLUX.1-Kontext-Dev** inpaint workflow
- add **FLUX.1-Kontext-Dev** **Nunchaku** support
*note*: FLUX.1 Kontext is about 2-3x faster with Nunchaku vs standard execution!
- support **FLUX.1** all-in-one safetensors
- support for [Google Gemma 3n](https://huggingface.co/google/gemma-3n-E4B-it) E2B and E4B LLM/VLM models
available in **prompt enhance** and process **captioning**
- support for [HuggingFace SmolLM3](https://huggingface.co/HuggingFaceTB/SmolLM3-3B) 3B LLM model
available in **prompt enhance**
- add [fal AuraFlow 0.2](https://huggingface.co/fal/AuraFlow-v0.2) in addition to existing [fal AuraFlow 0.3](https://huggingface.co/fal/AuraFlow-v0.3) due to large differences in model behavior
available via *networks -> models -> reference*
- add integrated [NudeNet](https://vladmandic.github.io/sdnext-docs/NudeNet) as built-in functionality
*note*: used to be available as a separate [extension](https://github.com/vladmandic/sd-extension-nudenet)
- **Video**
- redesigned **Video** interface
- support for **Generic** video models
includes support for many video models without specific per-model optimizations
included: *Hunyuan, LTX, WAN, Mochi, Latte, Allegro, Cog*
supports quantization, offloading, frame interpolation, etc.
- support for optimized [FramePack](https://vladmandic.github.io/sdnext-docs/FramePack)
with *t2i, i2i, flf2v* workflows
LoRA support, prompt enhance, etc.
now fully integrated instead of being a separate extension
- support for optmized [LTXVideo](https://vladmandic.github.io/sdnext-docs/LTX)
with *t2i, i2i, v2v* workflows
optional native upsampling and video refine workflows
LoRA support with different conditioning types such as Canny/Depth/Pose, etc.
- support for post load quantization
- **UI**
- major update to modernui layout
- add new Windows-like *Blocks* UI theme
- redesign of the *Flat* UI theme
- enhanced look&feel for *Gallery* tab with better search and collapsible sections, thanks to @CalamitousFelicitousness
- **WIKI**
- new [Parameters](https://vladmandic.github.io/sdnext-docs/Parameters/) page that lists and explains all generation parameters
massive thanks to @CalamitousFelicitousness for bringing this to life!
- updated *Models, Video, LTX, FramePack, Styles*, etc.
- **Compute**
- support for [SageAttention2++](https://github.com/thu-ml/SageAttention)
provides 10-15% performance improvement over default SDPA for transformer-based models!
enable in *settings -> compute settings -> sdp options*
*note*: SD.Next will use either SageAttention v1/v2/v2++, depending which one is installed
until authors provide pre-build wheels for v2++, you need to install it manually or SD.Next will auto-install v1
- support for `torch.compile` for LLM: captioning/prompt-enhannce
- support for `torch.compile` with repeated-blocks
reduces time-to-compile 5x without loss of performance!
enable in *settings -> model compile -> repeated*
*note*: torch.compile is not compatible with balanced offload
- **Other**
- **Styles** can now include both generation params and server settings
see [Styles docs](https://vladmandic.github.io/sdnext-docs/Styles/) for details
- **TAESD** is now default preview type since its the only one that supports most new models
- support **TAESD** preview and remote VAE for **HunyuanDit**
- support **TAESD** preview and remote VAE for **AuraFlow**
- support **TAESD** preview for **WanAI**
- SD.Next now starts with *locked* state preventing model loading until startup is complete
- warn when modifying legacy settings that are no longer supported, but available for compatibilty
- warn on incompatible sampler and automatically restore default sampler
- **XYZ grid** can now work with control tab:
if controlnet or processor are selected in xyz grid, they will overwrite settings from first unit in control tab,
when using controlnet/processor selected in xyz grid, behavior is forced as control-only
also freely selectable are control strength, start and end values
- **Batch** warn on unprocessable images and skip operations on errors so that other images can still be processed
- **Metadata** improved parsing and detect foreign metadata
detect ComfyUI images
detect InvokeAI images
- **Detailer** add `expert` mode where list of detailer models can be converted to textbox for manual editing
see [docs](https://vladmandic.github.io/sdnext-docs/Detailer/) for more information
- **Detailer** add option to merge multiple results from each detailer model
for example, hands model can result in two hands each being processed separately or both hands can be merged into one composite job
- **Control** auto-update width/height on image upload
- **Control** auto-determine image save path depending on operations performed
- autodetect **V-prediction** models and override default sampler prediction type as needed
- **SDNQ**
- use inference context during quantization
- use static compile
- rename quantization type for text encoders `default` option to `Same as model`
- **API**
- add `/sdapi/v1/lock-checkpoint` endpoint that can be used to lock/unlock model changes
if model is locked, it cannot be changed using normal load or unload methods
- **Fixes**
- allow theme type `None` to be set in config
- installer dont cache installed state
- fix Cosmos-Predict2 retrying TAESD download
- better handle startup import errors
- fix traceback width preventing copy&paste
- fix ansi controle output from scripts/extensions
- fix diffusers models non-unique hash
- fix loading of manually downloaded diffuser models
- fix api `/sdapi/v1/embeddings` endpoint
- fix incorrect reporting of deleted and modified files
- fix SD3.x loader and TAESD preview
- fix xyz with control enabled
- fix control order of image save operations
- fix control batch-input processing
- fix modules merge save model
- fix torchvision bicubic upsample with ipex
- fix instantir pipeline
- fix prompt encoding if prompts within batch have different segment counts
- fix detailer min/max size
- fix loopback script
- fix networks tags display
- fix yolo refresh models
- cleanup control infotext
- allow upscaling with models that have implicit VAE processing
- framepack improve offloading
- improve prompt parser tokenizer loader
- improve scripts error handling
- improve infotext param parsing
- improve extensions ui search
- improve model type autodetection
- improve model auth check for hf repos
- improve Chroma prompt padding as per recommendations
- lock directml torch to `torch-directml==0.2.4.dev240913`
- lock directml transformers to `transformers==4.52.4`
- improve install of `sentencepiece` tokenizer
- add int8 matmul fallback for ipex with onednn qlinear
- **Refactoring**
*note*: none of the removals result in loss-of-functionality since all those features are already re-implemented
goal here is to remove legacy code, code duplication and reduce code complexity
- obsolete **original backend**
- remove majority of legacy **a1111** codebase
- remove legacy ldm codebase: `/repositories/ldm`
- remove legacy blip codebase: `/repositories/blip`
- remove legacy codeformer codebase: `/repositories/codeformer`
- remove legacy clip patch model: `/models/karlo`
- remove legacy model configs: `/configs/*.yaml`
- remove legacy submodule: `/modules/k-diffusion`
- remove legacy hypernetworks support: `/modules/hypernetworks`
- remove legacy lora support: `/extensions-builtin/Lora`
- remove legacy clip/blip interrogate module
- remove modern-ui remove `only-original` vs `only-diffusers` code paths
- refactor control processing and separate preprocessing and image save ops
- refactor modernui layouts to rely on accordions more than individual controls
- refactore pipeline apply/unapply optional components & features
- split monolithic `shared.py`
- cleanup `/modules`: move pipeline loaders to `/pipelines` root
- cleanup `/modules`: move code folders used by pipelines to `/pipelines/<pipeline>` folder
- cleanup `/modules`: move code folders used by scripts to `/scripts/<script>` folder
- cleanup `/modules`: global rename `modules.scripts` to avoid conflict with `/scripts`
- override `gradio` installer
- major refactoring of requirements and dependencies to unblock `numpy>=2.1.0`
- patch `insightface`
- patch `facelib`
- patch `numpy`
- stronger lint rules
add separate `npm run lint`, `npm run todo`, `npm run test`, `npm run format` macros
## Update for 2025-06-30
### Highlights for 2025-06-30
New release with ~100 commits...So what's new? Well, its been a busy few weeks with new models coming out quite frequently:
- New T2I/I2I models: **OmniGen-2, Cosmos-Predict2, FLUX.1-Kontext, Chroma**
- Additional VLM models: **JoyCaption Beta, MoonDream 2**
- Additional upscalers: **UltraSharp v2**
And (as always) many bugfixes and improvements to existing features!
[ReadMe](https://github.com/vladmandic/automatic/blob/master/README.md) | [ChangeLog](https://github.com/vladmandic/automatic/blob/master/CHANGELOG.md) | [Docs](https://vladmandic.github.io/sdnext-docs/) | [WiKi](https://github.com/vladmandic/automatic/wiki) | [Discord](https://discord.com/invite/sd-next-federal-batch-inspectors-1101998836328697867)
### Details for 2025-06-30
- **Models**
- [Models Wiki page](https://vladmandic.github.io/sdnext-docs/Models/) is updated will all new models
*note* all new image models larger than 30GB, so [offloading](https://vladmandic.github.io/sdnext-docs/Offload/) and [quantization](https://vladmandic.github.io/sdnext-docs/Quantization/) are necessary!
- [OmniGen2](https://huggingface.co/OmniGen2/OmniGen2)
- OmniGen2 is a powerful unified multimodal model that supports t2i and i2i workflows and uses 4B transformer with Qwen-VL-2.5 4B VLM
- available via *networks -> models -> reference*
- [nVidia Cosmos-Predict2 T2I](https://research.nvidia.com/labs/dir/cosmos-predict2/) *2B and 14B*
- Cosmos-Predict2 T2I is a new foundational model from Nvidia in two variants: small 2B and large 14B
- available via *networks -> models -> reference*
- *note*: 14B variant is a very large model at 36GB
- *note*: this is a gated model, you need to [accept terms](https://huggingface.co/nvidia/Cosmos-Predict2-2B-Text2Image) and set your [huggingface token](https://vladmandic.github.io/sdnext-docs/Gated/)
- [Black Forest Labs FLUX.1 Kontext I2I](https://bfl.ai/announcements/flux-1-kontext-dev) *Dev* variant
- FLUX.1-Kontext is a 12B model billion parameter capable of editing images based on text instructions
- model is primarily designed for image editing workflows, but also works for text-to-image workflows
- requirements are similar to regular FLUX.1 although 2x slower
- available via *networks -> models -> reference*
- *note*: this is a gated model, you need to [accept terms](https://huggingface.co/black-forest-labs/FLUX.1-Kontext-dev) and set your [huggingface token](https://vladmandic.github.io/sdnext-docs/Gated/)
- [lodestones Chroma](https://huggingface.co/lodestones/Chroma)
- Chroma is a 8.9B parameter model based on *FLUX.1-schnell* and fully Apache 2.0 licensed
- available via *networks -> models -> reference*
- *note*: model is still in training so future updates will trigger re-download
- large credits to @Trojaner for work on bringing Chroma support to SD.Next and all the optimizations around it!
- [JoyCaption Beta](https://huggingface.co/fancyfeast/llama-joycaption-beta-one-hf-llava) support (in addition to existing JoyCaption Alpha)
- new version of highly popular captioning model
- available via *caption -> vlm caption*
- [MoonDream 2](https://huggingface.co/vikhyatk/moondream2) support (updated)
- really good 2B captioning model that can work on different levels of detail
- available via *caption -> vlm caption*
- [UltraSharp v2](https://huggingface.co/Kim2091/UltraSharpV2) support
- one of the best upscalers (traditional, non-diffusion) available today!
- available via *process -> upscale -> chainner*
- **Changes**
- Update all core requirements
- Support Remote VAE with *Omnigen, Lumina 2 and PixArt*
- Enable quantization for captioning: *Gemma, Qwen, SMOL, Florence, JoyCaption*
- Add `--trace` command line param that enables trace logging
- Use Diffusers version of *OmniGen*
- Control move global settings to control elements -> control settings tab
- Control add setting to run hires with or without control
- Update OpenVINO to 2025.2.0
- Simplified and unified quantization enabled for options
- Add **PixelArt** filter to processing tab
- **SDNQ Quantization**
- Add `auto` quantization mode
- Add `modules_to_not_convert` support for post mode
- Improve offload compatibility
- Fix Qwen 2.5 with int8 matmul
- Fix Dora loading
- Remove per layer GC
- Add support for XYZ grid to test quantization modes
*note*: you need to enable quantization and choose what it applies on, then xyz grid can change quantization mode
*note*: you can also enable 'add time info' to compare performance of different quantization modes
- **API**
- Add `/sdapi/v1/network?page=<page_name>&item=<item_name>` endpoint that returns full network info
- Add `/sdapi/v1/lora?lora=<lora_name>` endpoint that returns full lora info and metadata
- Add `/sdapi/v1/controlnets?model_type=<model_type|all|None>` endpoints that returns list of available controlnets for specific model type
- Set default sampler to `Default`
- **Fixes**
- IPEX with DPM2++ FlowMatch samplers
- Invalid attention processor with ControlNet
- LTXVideo default scheduler
- Balanced offload with OmniGen
- Quantization with OmniGen
- Do not save empty `params.txt` file
- Override `params.txt` using `SD_PATH_PARAMS` env variable
- Add `wheel` to requirements due to `pip` change
- Case-insensitive sampler name matching
- Fix delete file with gallery views
- Add `SD_SAVE_DEBUG` env variable to report all params and metadata save operations as they happen
- Fix TAESD model type detection
- Fix LoRA loader incorrectly reporting errors
- Fix hypertile for img2img and inpaint operations
- Fix prompt parser batch size
- Fix process batch with batch count
- Fix process batch double image save
- Fix unapply texture tiling
- Fix nunchaku batch support
- Fix LoRA change detection on pipeline type change
- Fix LoRA load order when it includes text-encoder data
- Suppress torch empty logging
- Improve TAESD live preview downscale handling
## Update for 2025-06-16
- **Feature**
- Support for Python 3.13
- TeaCache support for Lumina 2
- Custom UNet and VAE loading support for Lumina 2
- **Changes**
- Increase the medvram mode threshold from 8GB to 12GB
- Set CPU backend to use FP32 by default
- Relax Python version checks for Zluda
- Make VAE options not require model reload
- Add warning about incompatible attention processors
- **Torch**
- Set default to `torch==2.7.1`
- Force upgrade pip when installing Torch
- **ROCm**
- Support ROCm 6.4 with `--use-nightly`
- Don't override user set gfx version
- Don't override gfx version with RX 9000
- Fix flash-atten repo
- **SDNQ Quantization**
- Add group size support for convolutional layers
- Add quantized matmul support for for convolutional layers
- Add 7-bit, 5-bit and 3-bit quantization support
- Add separate quant mode option for Text Encoders
- Fix forced FP32 with tensorwise FP8 matmul
- Fix PyTorch <= 2.4 compatibility with FP8 matmul
- Fix VAE with conv quant
- Don't ignore the Quantize with GPU option with offload mode `none` and `model`
- High VRAM usage with Lumina 2
- **Fixes**
- Meissonic with multiple generators
- OmniGen with new transformers
- Invalid attention processors
- PixArt Sigma Small and Large loading
- TAESD previews with PixArt and Lumina 2
- VAE Tiling with non-default tile sizes
- Lumina 2 with IPEX
- Nunchaku updated repo
- Double loading of models with custom UNets
## Update for 2025-06-02
### Highlights for 2025-06-02
This release is all about quantization: with new SD.Next own quantization method: **SDNQ**
**SDNQ** is based on **NNCF**, but has been re-implemented, optimized and evolved enough to become its own quantization method!
It's fully cross-platform, supports all GPUs and includes tons of quantization methods:
- *8-bit, 6-bit, 4-bit, 2-bit and 1-bit int and uint*
- *8-bit e5, e4 and fnuz float*
Also unlike most traditional methods, its also applicable to nearly all model types
*Hint*: Even if you may not need quantization for your current model, it may be worth trying it out as it can significantly improve performance or capabilities of your existing workflow! For example, you may not have issues with SD15 or SDXL, but you may have been limited running at high resolutions or with multiple ControlNet due to VRAM requirements - this will significantly reduce memory requirements. And on-the-fly quantization takes just few seconds during model load, there is no need to have multiple quant models permanently saved.
On a different topic, **SD.Next Wiki & Docs** and its **UI Hints** and **UI Localization** system are community efforts and any contributions are welcome!
You dont need any coding experience, but if you learned something and you find documentation either wrong or insufficient, please do suggest edits!
Take a look at [Docs](https://github.com/vladmandic/sdnext/wiki/Docs), [Hints](https://github.com/vladmandic/sdnext/wiki/Hints) and [Localization](https://github.com/vladmandic/sdnext/wiki/Locale) contribution guides
[ReadMe](https://github.com/vladmandic/automatic/blob/master/README.md) | [ChangeLog](https://github.com/vladmandic/automatic/blob/master/CHANGELOG.md) | [Docs](https://vladmandic.github.io/sdnext-docs/) | [WiKi](https://github.com/vladmandic/automatic/wiki) | [Discord](https://discord.com/invite/sd-next-federal-batch-inspectors-1101998836328697867)
### Details for 2025-06-02
- **SDNQ Quantization**
- Renamed `NNCF` to `SDNQ`
- Renamed quantization scheme names to the underlying dtype names instead of NNCF names
- `INT8_SYM` -> `int8`
- `INT8` -> `uint8`
- `INT4_SYM` -> `int4`
- `INT4` -> `uint4`
- Add `float8_e4m3fn`, `float8_e5m2`, `float8_e4m3fnuz`, `float8_e5m2fnuz`, `int6`, `uint6`, `int2`, `uint2` and `uint1` support
- Add quantized matmul support for `float8_e4m3fn` and `float8_e5m2`
- Set the default quant mode to `pre`
- Use per token input quant with int8 and fp8 quantized matmul
- Implement better layer hijacks
- Add an option to toggle quantize with GPU
- Fix conv quant and add support for conv quant with asym modes
- Fix lora weight change
- Fix high RAM usage with pre mode
- Fix scale and zero_point not being offloaded
- **IPEX**
- Disabe Dynamic Attention by default on PyTorch 2.7
- Remove GradScaler hijack and use `torch.amp.GradScaler` instead
- **Feature**
- TeaCache support for HiDream I1
- **Changes**
- Set the default attention optimizer to Scaled-Dot-Product on all backends
- Enable Dynamic attention for Scaled-Dot-Product with ROCm, DirectML, MPS and CPU backends
- **Fixes**
- Gallery duplicate entries
- Prompt enhancement args mismatch
## Update for 2025-05-17
*Curious how your system is performing?*
Run a built-in benchmark and compare to over 15k unique results world-wide: [Benchmark data](https://vladmandic.github.io/sd-extension-system-info/pages/benchmark.html)!
From slowest 0.02 it/s running on 6th gen CPU without acceleration up to 275+ it/s running on tuned GH100 system!
Also, since quantization is becoming a necessity for almost all new models, see comparison of different quantization methods available in SD.Next: [Quantization](https://vladmandic.github.io/sdnext-docs/Quantization/)
*Hint*: Even if you may not need quantization for your current model, it may be worth trying it out as it can significantly improve performance!
For ZLUDA users, this update adds [compatibility](https://github.com/vladmandic/sdnext/issues/3918) with with latest AMD Adrenaline drivers
Btw, last few releases have been smaller, but more regular so do check posts about previous releases as features do quickly add up!
- **Wiki**
- Updates for: *Quantization, NNCF, WSL, ZLUDA, ROCm*
- **Models**
- [Index AniSora v1 5B](https://huggingface.co/IndexTeam/Index-anisora) I2V
Based on CogVideoX architecture, trained as animated video generation model: This Project presenting Bilibili's gift to the anime world!
- [Index AniSora v1 RL 5B](https://github.com/bilibili/Index-anisora?tab=readme-ov-file#anisorav10_rl) I2V
RL-optimized AniSoraV1.0 for enhanced anime-style output
- **Compute**
- ZLUDA: update to `zluda==3.9.5` with `torch==2.7.0`
*Note*: delete `.zluda` folder so that newest zluda will be installed if you are using the latest AMD Adrenaline driver
- NNCF: added experimental support for direct INT8 MatMul
- **Feature**
- Prompt Enhance: option to allow/disallow NSFW content
- **Fixes**
- OpenVINO: force cpu device
- Gradio: major cleanup and fixing defaults and ranges
- Pydantic: update to api types
- UI defaults: match correct prompt components
- NNCF with ControlNet
- NNCF with CogVideo
- IPEX with CogVideo
- JXL image format metadata handling
## Update for 2025-05-12
### Highlights for 2025-05-12
First of all NNCF quantization engine has gone through some major enhancements and its now much faster, both in quantization as well as actual inference!
And its a only truly cross-platform solution for quantization as all other methods are platform specific.
*Note* if you're a ZLUDA user, see notes on GPU driver compatibility as recent Andrenaline drivers do cause problems!
And if you're a ROCm user, this release brings much faster compile times on Linux as well as first (experimental) builds for Windows!
[ReadMe](https://github.com/vladmandic/automatic/blob/master/README.md) | [ChangeLog](https://github.com/vladmandic/automatic/blob/master/CHANGELOG.md) | [Docs](https://vladmandic.github.io/sdnext-docs/) | [WiKi](https://github.com/vladmandic/automatic/wiki) | [Discord](https://discord.com/invite/sd-next-federal-batch-inspectors-1101998836328697867)
### Details for 2025-05-12
- **Compute**
- **NNCF**
- Faster quantization
- Faster inference with support for `torch.triton`
up to 3.5x faster with INT4 and 2x faster with INT8
- New settings: *NNCF -> Group size*
default is a balance between performance (higher size) and quality (lower size)
0 is default at 64, -1 disables grouping
- **ZLUDA**:
- *warning*: AMD Adrenaline 25.5.1 drivers are NOT COMPATIBLE with ZLUDA
see [issue](https://github.com/vladmandic/sdnext/issues/3918) for details
- **ROCm**
- first working builds of **Torch with ROCm on Windows**
highly experimental
reach out on Discord if you want to test it
- **Features**
- Prompt Enhancer: support for *img2img* workflows
in img2img prompt enhancer will first analyze input image and then incorporate user prompt to create enhanced prompt
- **FramePack**
- improve LoRA compatibility
- add metadata to video
- **UI**
- ModernUI: support for History tab
- ModernUI: support for FramePack tab
- **API**
- add `/sdapi/v1/framepack` endpoint with full support for FramePack including all optional settings
see example: `sd-extension-framepack/create-video.py`
- add `/sdapi/v1/checkpoint` endpoint to get info on currently loaded model/checkpoint
see example: `cli/api-checkpoint.py`
- add `/sdapi/v1/prompt-enhance` endpoint to enhance prompt using LLM
see example: `cli/api-enhance.py`
supports text, image and video prompts with or without input image
*note*: if input image is provided, model should be left at default `gemma-3-4b-it` as most other LLMs do not support hybrid workflows
- **Fixes**
- Latent Diffusion Upscale
- Model load: support SDXL safetensors packaged without VAE
- ROCm: disable cuDNN benchmark, fixes slow MIOpen tuning with `torch==2.7`
- Extensions: use in-process installer for extensions-builtin, improves startup performance
- FramePack: monkey-patch for dynamically installed `av`
- Logging: reduce spam while progress is active
- LoRA: legacy handler enable/disable
- LoRA: force clear-cache on model unload
- ADetailer: fix enable/disable
- ZLUDA: improve compatibility with older GPUs
## Update for 2025-05-06
Minor refesh with several bugfixes and updates to core libraries
Plus new features with **FramePack** and **HiDream-E1**
- **Features**
- [FramePack](https://vladmandic.github.io/sdnext-docs/FramePack)
add **T2V** mode in addition to **I2V** and **FLF2V**
support for new **F1: forward-only** model variant in addition to regular **bi-directional**
add **prompt enhance** using VLM: it will analyze input image and then create enhanced prompt based on user prompt and image
add **prompt interpolation**, section prompts do not need to match exact video section count
and improved performance
[Docs](https://vladmandic.github.io/sdnext-docs/FramePack) rewrite!
- **Prompt-Enhhance**
add **Qwen3** *0.6B/1.7B/4B* models
add thinking mode support (for models that have it)
- [HiDream-E1](https://huggingface.co/HiDream-ai/HiDream-E1-Full) natural language image-editing model built on HiDream-I1
available via *networks -> models -> reference*
*note*: right now HiDream-E1 is limited to 768x768 images, so you must force resize image before running it
- **Other**
- CUDA: set default to `torch==2.7.0` with `cuda==12.8`
- ZLUDA: update to `zluda==3.9.4` and `flash-attn-2`
- Docker: pre-install `ffmpeg`
- Wiki: updated pages: *FramePack, Video, ROCm, ZLUDA, Quantization*
- Gallery: support JXL image format
- Scheduler: add sigmoid beta scheduler
- GitHub: updated issue template
- **Fixes**
- FramePack: correct dtype
- NNCF: check dependencies and register quant type
- API: refresh checkpoint list
- API: vlm-api endpoint
- Styles: save style with prompt
- Texture tiling: fix apply when switching models
- Diffusers: slow initial startup
- Gated access: obfuscate and log token used for access
- SDXL refiner workflow
- Control: t2i-adapter workflow
- Control: xs-controlnet workflow
- Control: lllite-workflow
- Control: refiner workflow with multiple control elements
## Highlights for 2025-04-28
Another major release with *over 120 commits*!
Highlights include new [Nunchaku Wiki](https://github.com/vladmandic/sdnext/wiki/Nunchaku) inference engine that allows running FLUX.1 with **3-5x** higher performance!
And a new [FramePack](https://github.com/vladmandic/sd-extension-framepack) extension for high-quality *I2V* and *FLF2V* video generation with unlimited duration!
What else?
- New UI **History** tab
- New models: **Flex.2, LTXVideo-0.9.6, WAN-2.1-14B-FLF2V**, schedulers: **UniPC and LCM FlowMatch**, features: **CFGZero**
- Major updates to: **NNCF, OpenVINO, ROCm, ZLUDA**
- Cumulative fixes since last release
[ReadMe](https://github.com/vladmandic/automatic/blob/master/README.md) | [ChangeLog](https://github.com/vladmandic/automatic/blob/master/CHANGELOG.md) | [Docs](https://vladmandic.github.io/sdnext-docs/) | [WiKi](https://github.com/vladmandic/automatic/wiki) | [Discord](https://discord.com/invite/sd-next-federal-batch-inspectors-1101998836328697867)
## Details for 2025-04-28
- **Features**
- [Nunchaku](https://github.com/mit-han-lab/nunchaku) inference engine with custom **SVDQuant** 4-bit execution
highly experimental and with limited support, but when it works, its magic: **Flux.1 at 6.0 it/s** *(not sec/it)*!
basically, it can speed up supported models by 2-5x by using custom quantization and execution engine
see [Nunchaku Wiki](https://github.com/vladmandic/sdnext/wiki/Nunchaku) for installation guide and list of supported models & features
- [FramePack](https://github.com/vladmandic/sd-extension-framepack) based on **HunyuanVideo-I2V**
full support and much more for **Lllyasviel** [FramePack](https://lllyasviel.github.io/frame_pack_gitpage/)
implemented as an extension for **SD.Next** (for the moment while dev is ongoing)
generate high-quality videos with pretty much unlimited duration and with limited VRAM!
install as any other extension and for details see extension [README](https://github.com/vladmandic/sd-extension-framepack/blob/main/README.md)
- I2V & FLF2V support with explicit strength controls
- complex actions: modify prompts for each section of the video
- LoRA support: use normal **HunyuanVideo** LoRAs
- decode: use local, tiny or remote VAE
- custom models: e.g. replace llama with one of your choice
- video: multiple codecs and with hw acceleration, raw export, frame export, frame interpolation
- compute: quantization support, new offloading, more configuration options, cross-platform, etc.
- [Ostris Flex.2 Preview](https://huggingface.co/ostris/Flex.2-preview)
more than a FLUX.1 finetune, FLEX.2 is created from *Flux.1 Schnell -> OpenFlux.1 -> Flex.1-alpha -> Flex.2-preview*
and it has universal control and inpainting support built in!
supported for text and control workflows
when using in control mode, simply choose preprocessor and do not load actual controlnet
supported control modes are: *line, pose and depth*
available via *networks -> models -> reference*
- [LTXVideo 0.9.6](https://github.com/Lightricks/LTX-Video?tab=readme-ov-file) **T2V** and **I2V**
in both **Standard** and **Distilled** variants
available in *video tab*
- [WAN 2.1 14B 720P](https://huggingface.co/Wan-AI/Wan2.1-FLF2V-14B-720P) **FLF2V**
new first-to-last image video model from WAN-AI
available in *video tab*
- [CFG-Zero](https://github.com/WeichenFan/CFG-Zero-star) new guidance method optimized for flow-matching models
implemented for **FLUX.1, HiDream-I1, SD3.x, CogView4, HunyuanVideo, WanAI**
enable and configure in *settings -> pipeline modifiers -> cfg zero*
experiment with CFGZero support in XYZ-grid
- **Optimizations**
- **NNCF** update to 2.16.0
major refactoring of NNCF quantization code
new quant types: `INT8_SYM` (new default), `INT4` and `INT4_SYM`
quantization support for the convolutional layers on unet models with sym methods
pre-load quantization support
LoRA support
*if you're low on VRAM, NNCF is as close as a catch-all solution*
- **OpenVINO** update to 2025.1.0 and Torch to 2.7
- **IPEX** update to Torch 2.7
- **ROCm** update to Torch 2.7
- **HiDream-I1** optimized offloading and prompt-encode caching
it now works in 12GB VRAM / 26GB RAM!
- **CogView3** and **CogView4** model loader optimizations
- **Sana** model loader optimizations
- add explicit offload after encode prompt
configure in *settings -> text encoder -> offload*
- **UI**
- new History tab where you can see all jobs since the server startup
and optionally download any of the previously generated images/videos
access via *system -> history*
- server restart from ui now replaces currently running process
instead of trying to reload python modules in-place
- add option to enable/disable clip skip
disabled by default to avoid issues with frequent incorrect recommendations
in *settings -> pipeline modifiers*
- configurable restore metadata from image to settings and to params
in *settings -> image metadata*
- **API**
- new [API Wiki](https://github.com/vladmandic/sdnext/wiki/API)
- server will now maintain job history which can be queried via API
so you can check previous jobs as well as request any previously generated images/videos
- history endpoint: `/sdapi/v1/history?id={id}`
- download endpoint: `/file={filename}`
- progress api `/sdapi/v1/progress` now also include task id in the response
- **Other**
- **OMI** support for sd15/sdxl omi-standard LoRAs
- text/image/control/video pipeline vs task compatibility check
- **HiDream-I1, FLUX.1, SD3.x** add HF gated access auth check
- **HiDream-I1** LoRA support
currently limited to diffusers-only LoRAs, CivitAI LoRA support is TBD
- **HiDream-I1** add LLM info to image metadata
- add `model_type` as option for image filename pattern
- add **UniPC FlowMatch** scheduler
- add **LCM FlowMatch** scheduler
- networks: set which networks to skip when scanning civitai
in *settings -> networks -> network scan*
comma-separate list of regex patterns to skip
- ui display reference models with subdued color
- xyz grid support bool
- do not force gc at end of processing
- add `SD_LORA_DUMP` env variable for dev/diag to dump lora/model keys
- **Wiki**
- new *Nunchaku*, *API* pages
- updated *HiDream, Quantization, NNCF, Video, Docker, WSL, ZLUDA* pages
- **Fixes**
- HunyuanVideo-I2V with latest transformers
- NNCF with TE-only quant
- ONNX init fix
- Quanto with TE/LLM quant
- HiDream live preview
- FLUX.1 controlnet i2i
- SD35 InstantX IP-adapter
- OpenVINO device selection
- xyz grid restore settings
- config save unnecessary keys
- recursive wildcards
- extension installer handling of PYTHONPATH
- trace logging
- api logging
- sd/sdxl-inpaint model loader
- settings list display only visible items
- checkpoint match when searching for model to load
- video vae selection load correct vae
## Update for 2025-04-12
### Highlights for 2025-04-12
Last release was just over a week ago and here we are again with another update as a new high-end image model, [HiDream-I1](https://github.com/vladmandic/sdnext/wiki/HiDream) jumped out and generated a lot of buzz!
There are quite a few other performance and quality-of-life improvements in this release and 40 commits, so please take a look at the full [ChangeLog](https://github.com/vladmandic/automatic/blob/master/CHANGELOG.md)
[ReadMe](https://github.com/vladmandic/automatic/blob/master/README.md) | [ChangeLog](https://github.com/vladmandic/automatic/blob/master/CHANGELOG.md) | [Docs](https://vladmandic.github.io/sdnext-docs/) | [WiKi](https://github.com/vladmandic/automatic/wiki) | [Discord](https://discord.com/invite/sd-next-federal-batch-inspectors-1101998836328697867)
### Details for 2025-04-12
- **Models**
- [HiDream-I1](https://huggingface.co/HiDream-ai/HiDream-I1-Full) in fast, dev and full variants!
new absolutely massive image generative foundation model with **17B** parameters and 4 text-encoders with additional **8.3B** parameters
simply select from *networks -> models -> reference*
due to size (over 25B params in 58GB), offloading and on-the-fly quantization are pretty much a necessity
see [HiDream Wiki page](https://github.com/vladmandic/sdnext/wiki/HiDream) for details
- **Features**
- Custom model loader
can be used to load any known diffusion model with default or custom model components
in models -> custom tab
see docs for details: <https://vladmandic.github.io/sdnext-docs/Loader/>
- Pipe: [SoftFill](https://github.com/zacheryvaughn/softfill-pipelines)
- **Caching**
- add `TeaCache` support to *Flux, CogVideoX, Mochi, LTX*
- add `FasterCache` support to *WanAI, LTX* (other video models already supported)
- add `PyramidAttentionBroadcast` support to *WanAI, LTX* (other video models already supported)
- **UI**
- client polling speeds up and slows down depending if client page is visible or not
client polling does not ask for live preview if page is not visible
significantly reduces server load if you hide or minimize the page
- progress: use batch-count for progress
- grid: add of max-rows and max-columns in settings to control grid format
- gallery: add max-columns in settings for gradio gallery components
- **Other**
- ZLUDA: add more GPUs to recognized list
select in scripts, available for sdxl in inpaint model
- LoRA: add option to force-reload LoRA on every generate
- settings: add **Model options** sections as placeholder for per-model settings
- video: update *LTXVideo-0.9.5* pipeline
- te loader: allow free-form input in which case sdnext will attempt to load it as hf repo
- diag: add get-server-status to UI generate context menu
- diag: memory monitor detect gpu swapping
- use [hf-xet](https://huggingface.co/blog/xet-on-the-hub) for huggingface downloads where possible
- quant: update & fix `optimum-quanto` for transformers
- quant: update & fix `torchao`
- model load: new setting for model load initial device map
can be used to force gpu vs cpu when loading model to avoid oom before model offloading is even activated after load
- **Changes**
- params: Reset default guidance-rescale from 0.7 to 0.0
- progress: add additional fields to progress API
- **Fixes**
- styles: resize and bring quick-ui to forward on hover
- LoRA: obey configured device when performing calculations
- ZLUDA: startup issues
- offload: balanced offload remove non-blocking move op
- logging: debug causes invalid import
- logging: cleanup
- ROCm: flash attention repo with navi rotary fix
- prompt: prompt scheduling with te caching
- ui: progress allow for longer timeouts
- internal: cleanup defined pipelines
## Update for 2025-04-03
### Highlights for 2025-04-03
Time for another major release with ~120 commits and [ChangeLog](https://github.com/vladmandic/automatic/blob/master/CHANGELOG.md) that spans several pages!
*Highlights?*
Video...Brand new Video processing module with support for all latest models: **WAN21, Hunyuan, LTX, Cog, Allegro, Mochi1, Latte1** in both *T2V* and *I2V* workflows
And combined with *on-the-fly quantization*, support for *Local/Tiny/Remote* VAE, acceleration modules such as *FasterCache or PAB*, and more!
Models...And support for new models: **CogView-4**, **SANA 1.5**,
*Plus...*
- New **Prompt Enhance** using LLM,
- New pipelines such as **InfiniteYou**
- New **CLiP** models, improvements to **remote VAE**, additional wiki/docs/guides
- More quantization options and granular control
- Pretty big performance updates to a) Any model using DiT based architecture due to new caching methods, b) ZLUDA with new attention methods, c) LoRA with much lower memory usage
[ReadMe](https://github.com/vladmandic/automatic/blob/master/README.md) | [ChangeLog](https://github.com/vladmandic/automatic/blob/master/CHANGELOG.md) | [Docs](https://vladmandic.github.io/sdnext-docs/) | [WiKi](https://github.com/vladmandic/automatic/wiki) | [Discord](https://discord.com/invite/sd-next-federal-batch-inspectors-1101998836328697867)
### Details for 2025-04-03
- **Video tab**
- see [Video Wiki](https://github.com/vladmandic/sdnext/wiki/Video) for details!
- new top-level tab, replaces previous *video* script in text/image tabs
old scripts are still present, but will be removed in the future
- support for all latest models:
- [Hunyuan](https://huggingface.co/Tencent/HunyuanVideo): *HunyuanVideo, FastHunyuan, SkyReels* | *T2V, I2V*
- [WAN21](https://huggingface.co/Wan-AI/Wan2.1-T2V-1.3B-Diffusers): *1.3B, 14B* | *T2V, I2V*
- [LTXVideo](https://huggingface.co/Lightricks/LTX-Video): *0.9.0, 0.9.1, 0.9.5* | *T2V, I2V*
- [CogVideoX](https://huggingface.co/THUDM/CogVideoX-5b): *2B, 5B* | *T2V, I2V*
- [Allegro](https://huggingface.co/rhymes-ai/Allegro): *T2V*
- [Mochi1](https://huggingface.co/genmo/mochi-1-preview): *T2V*
- [Latte1](https://huggingface.co/maxin-cn/Latte-1): *T2V
- decoding:
- **Default**: use vae from model
- **Tiny VAE**: support for *Hunyuan, WAN, Mochi*
- **Remote VAE**: support for *Hunyuan*
- **LoRA**
- support for *Hunyuan, LTX, WAN, Mochi, Cog*
- add option to apply LoRA directly on GPU or use CPU first in low-memory scenarios
- improve metadata and preview parallel fetch
- support for mp4 so first frame is extracted as used as lora preview
- additional key points:
- all models are auto-downloaded upon first use
uses *system paths -> huggingface* folder
- support for many video types
- optional video interpolation while creating video files
- optional video preview in ui
present if video output is selected
- support for balanced offloading and model offloading
uses system settings
- on-the-fly quantization: *BnB, Quanto, TorchAO*
uses system settings, granular for *transformer* and *text-encoder* separately
- different video models support different video resolutions, frame counts, etc.
and may require specific settings - see model links for details
- see *ToDo/Limitations* section for additional notes
- **Models & Pipelines**
- [THUDM CogView 4](https://huggingface.co/THUDM/CogView4-6B) **6B** variant
new foundation model for image generation based o GLM-4 text encoder and a flow-based diffusion transformer
fully supports offloading and on-the-fly quantization
simply select from *networks -> models -> reference*
*note* cogview4 is compatible with flowmatching samplers
- [NVLabs SANA 1.5](https://huggingface.co/Efficient-Large-Model/SANA1.5_4.8B_1024px_diffusers) in **1.6B**, **4.8B** and [Sprint](https://huggingface.co/Efficient-Large-Model/Sana_Sprint_1.6B_1024px_diffusers) variations
big update to previous SANA model
fully supports offloading and on-the-fly quantization
simply select from *networks -> models -> reference*
- [ByteDance InfiniteYou](https://github.com/bytedance/InfiniteYou/): Flexible Photo Recrafting While Preserving Your Identity
face-transfer model for FLUX.1
select from *Scripts -> InfiniteYou*
its large, ~12GB on top of FLUX.1 base model so make sure you have offloading and quantization setup
*note* model will be auto-downloaded on first use
- New [zer0int CLiP-L](https://huggingface.co/zer0int/CLIP-Registers-Gated_MLP-ViT-L-14) models:
download text encoders into folder set in settings -> system paths -> text encoders (default is *models/Text-encoder*)
load using *settings -> text encoder*
*tip*: add *sd_text_encoder* to your *settings -> user interface -> quicksettings* list to have it appear at the top of the ui
- **Prompt Enhance**
- see [Prompt Enhance Wiki](https://github.com/vladmandic/sdnext/wiki/Prompt-Enhance) for details!
- new built-in extension available in text/image/control tabs
- can be used to manually or automatically enhance prompts using LLM
- built-in presets for **Gemma-3, Qwen-2.5, Phi-4, Llama-3.2, SmolLM2, Dolphin-3**
- support for custom models
load any models hosted on huggingface
load either model in huggingface format or `gguf` format
*note*: any hf model in `transformers.AutoModelForCausalLM` standard should work
*note*: not all model architecture are supported for `gguf` format
- models are auto-downloaded on first use
- support quantization and offloading
- auto-detect censored output
- debug using `SD_LLM_DEBUG=true` env variable
- **Acceleration**
- Support for most DiT-based models, for example: *FLUX.1, SD35, Hunyuan, Mochi, Latte, Allegro, Cog*
- Enable and configure in *Settings -> Pipeline modifiers*
- [FasterCache](https://huggingface.co/papers/2410.19355)
- [PyramidAttentionBroadcast](https://huggingface.co/papers/2408.12588)
- **Remote VAE**
- add support for remote vae encode in addition to remote vae decode
- used by *img2img, inpaint, hires, detailer*
- remote vae encode is disabled by default, you can enable it in *settings -> variable auto-encoder*
- add remote vae info to metadata, thanks @iDeNoh
- remote vae use `scaling_factor` and `shift_factor`
- **Caption/VLM**
- [Google Gemma 3](https://huggingface.co/google/gemma-3-4b-it) 4B
simply select from list of available models in caption tab
- [ByteDance/Sa2VA](https://huggingface.co/ByteDance/Sa2VA-1B) 1B, 4B
simply select from list of available models in caption tab
- add option to set system prompt for vlm models that support it: *Gemma, Smol, Qwen*
- [NudeNet](https://github.com/vladmandic/sd-extension-nudenet/) extension updates
- add detection of prompt language and alphabet and filter based on those values
- add image policy checks using `LlavaGuard` VLM to detect policy violations (and reasons)
against top-10 standard harmful content categories
- add banned words/expressions check against prompt variations
- **LoRA**
- enable memory cache by default
- significantly reduce memory usage
- improve performance
- improve detection of lora changes
- unload lora only when changes are detected
- refactor code for modularity
- **IPEX**
- add `--upgrade` to torch_command when using `--use-nightly`
- add xpu to profiler
- fix untyped_storage, torch.eye and torch.cuda.device ops
- fix torch 2.7 compatibility
- fix performance with balanced offload
- fix triton and torch.compile
- **ROCm**
- add `--upgrade` to torch_command when using `--use-nightly`
- disable fp16 for gfx1102 (rx 7600 and rx 7500 series) gpus
- **ZLUDA**
- [triton for ZLUDA v3.9.2](https://github.com/vladmandic/sdnext/wiki/ZLUDA#how-to-enable-triton)
- `torch.compile` is now available
- Flash Attention 2 is now available
- **Other**
- **Command line** new option `--monitor PERIOD` to monitor CPU and GPU memory ever n seconds
- **Upscale** new [asymmetric vae v2](https://huggingface.co/Heasterian/AsymmetricAutoencoderKLUpscaler_v2) upscaling method
- **Upscale** new experimental support for `libvips` upscaling
- **Quantization** add support for `optimum-quanto` on-the-fly quantization during load for all models
note: previous method for quanto is still valid and is noted in settings as post-load quantization
- **Quantization** add support to **CogView-3Plus**
- **Default values** rename vae, unet and text-encoder settings *None* to *Default* to avoid confusion
- **Detailer**: add *renoise* option to increase/decrease noise during detailer pass
which can help with improving level of details
- **CLI**: add `cli/api-grid.py` which can generate grids using params-from-file for x/y axis
- **Samplers** add ability to set sigma adjustment for each sampler
- **ModernUI** updates
- **CSS** updates
- **Video** interpolate do not skip duplicate frames
- **Settings UI** full refactor
- **Settings UI** vertical/dirty indicator restores to default setting instead to previous value
- update `diffusers` and other requirements
- **Wiki/Docs**
- updated [Models](https://github.com/vladmandic/sdnext/wiki/Models) info
- new [Video](https://github.com/vladmandic/sdnext/wiki/Video) guide
- new [Caption](https://github.com/vladmandic/sdnext/wiki/Caption) guide
- new [VAE](https://github.com/vladmandic/sdnext/wiki/VAE) guide
- updated [SD3](https://github.com/vladmandic/sdnext/wiki/SD3) guide
- updated [ZLUDA](https://github.com/vladmandic/sdnext/wiki/ZLUDA) guide
- updated [OpenVINO](https://github.com/vladmandic/sdnext/wiki/OpenVINO) guide
- updated [AMD-ROCm](https://github.com/vladmandic/sdnext/wiki/AMD-ROCm) guide
- updated [Intel-ARC](https://github.com/vladmandic/sdnext/wiki/Intel-ARC) guide
- **Fixes**
- fix installer not starting when older version of `rich` is installed
- fix circular imports when debug flags are enabled
- fix cuda errors with *directml*
- fix memory stats not displaying the ram usage
- fix **RunPod** memory limit reporting
- fix flux ipadapter with start/stop values
- fix progress api `eta_relative`
- fix `insightface` loader
- fix remove vae for flux.1
- guard against git returining invalid timestamp
- fix hires with latent upscale
- fix legacy diffusion latent upscalers
- fix upscaler selection in postprocessing
- fix sd35 with batch processing
- fix extra networks cover and inline views
- fix token counter error style with modernui
- fix sampler metadata when using default sampler
- fix paste incorrect float to int cast
- fix server restart from ui
- fix style apply params
- fix `wan22-i2v`
- do not allow edit of built-in styles
- improve lora compatibility with balanced offload
## Update for 2025-02-28
Primarily a hotfix/service release plus few UI improvements and one exciting new feature: Remote-VAE!
- **Remote Decode**
- final step of image generate, VAE decode, is by far the most memory intensive operation and can easily result in out-of-memory errors
what can be done? Well, *Huggingface* is now providing *free-of-charge* **remote-VAE-decode** service!
- how to use? previous *Full quality* option in UI is replaced with VAE type selector: *Full, Tiny, Remote*
currently supports SD15, SDXL and FLUX.1 with more models expected in the near future
depending on your bandwidth select mode in *settings -> vae -> raw/png/jpg*
if remote processing fails SD.Next will fallback to using normal VAE decode process
*privacy note*: only passed item is final latent itself without any user or generate information and latent is not stored in the cloud
- **UI**
- modern ui reorg main tab
improve styling, improve scripts/extensions interface and separate ipadapters
- additional ui hints
- **Other**
- add `--extensions-dir` cli arg and `SD_EXTENSIONSDIR` env variable to specify extensions directory
- update `zluda==3.9.0`
- **Fixes**
- skip trying to register legacy/incompatibile extensions in control ui
- add additional scripts/extensions callbacks
- remove ui splash screen on auth fail
- log full config path, full log path, system name, extensions path
- zluda hotfixes
- zluda force sync
- fix torch import on compile
- infotext parser force delimiter before params
- handle pipeline class switch errors
- improve extensions options compatibility
- fix flux on ipex
- disable fp64 emulation on ipex
## Update for 2025-02-18
### Highlight for 2025-02-18
We're back with another update with nearly 100 commits!
- Starting with massive UI update with full [localization](https://vladmandic.github.io/sdnext-docs/Locale/) for 8 languages
and 100+ new [hints](https://vladmandic.github.io/sdnext-docs/Hints/)
- Big update to [Docker](https://vladmandic.github.io/sdnext-docs/Docker/) containers
with support for all major compute platforms
- A lot of [outpainting](https://vladmandic.github.io/sdnext-docs/Outpaint/) goodies
- Support for new models: [AlphaVLLM Lumina 2](https://github.com/Alpha-VLLM/Lumina-Image-2.0) and [Ostris Flex.1-Alpha](https://huggingface.co/ostris/Flex.1-alpha)
- And new **Mixture-of-Diffusers** regional prompting & tiling pipeline
- Follow-up to last weeks **interrogate/captioning** rewrite
now with redesigned captioning UI, batch support, and much more
plus **JoyTag**, **JoyCaption**, **PaliGemma**, **ToriiGate**, **Ovis2** added to list of supported models
- Some changes to **prompt parsing** to allow more control as well as
more flexibility when mouting SDNext server to custom URL
- Of course, cumulative fixes...
*...and more* - see [changelog](https://github.com/vladmandic/sdnext/blob/dev/CHANGELOG.md) for full details!
### Details for 2025-02-20
- **User Interface**
- **Hints**
- added/updated 100+ ui hints!
- [hints](https://vladmandic.github.io/sdnext-docs/Hints/) documentation and contribution guide
- **Localization**
- full ui localization!
*english, croatian, spanish, french, italian, portuguese, chinese, japanese, korean, russian*
- set in *settings -> user interface -> language*
- [localization](https://vladmandic.github.io/sdnext-docs/Locale/) documentation
- **UI**
- force browser cache-invalidate on page load
- configurable request timeout
- modernui improve gallery styling
- modernui improve networks styling
- modernui support variable card size
- **Docs**
- New [Outpaint](https://vladmandic.github.io/sdnext-docs/Outpaint/) step-by-step guide
- Updated [Docker](https://github.com/vladmandic/sdnext/wiki/Docker) guide
includes build and publish and both local and cloud examples
- **Models**
- [AlphaVLLM Lumina 2](https://github.com/Alpha-VLLM/Lumina-Image-2.0)
new foundation model for image generation based o Gemma-2-2B text encoder and a flow-based diffusion transformer
fully supports offloading and on-the-fly quantization
simply select from *networks -> models -> reference*
- [Ostris Flex.1-Alpha](https://huggingface.co/ostris/Flex.1-alpha)
originally based on *Flux.1-Schnell*, but retrained and with different architecture
result is model smaller than *Flux.1-Dev*, but with similar capabilities
fully supports offloading and on-the-fly quantization
simply select from *networks -> models -> reference*
- **Functions**
- [Mixture-of-Diffusers](https://huggingface.co/posts/elismasilva/251775641926329)
Regional tiling type of a solution for SDXL models
select from *scripts -> mixture of diffusers*
- [Automatic Color Inpaint]
Automatically creates mask based on selected color and triggers inpaint
simply select in *scripts -> automatic color inpaint* when in img2img mode
- [RAS: Region-Adaptive Sampling](https://github.com/microsoft/RAS) *experimental*
Speeds up SD3.5 models by sampling only regions of interest
Enable in *settings -> pipeline modifiers -> ras*
- **Interrogate/Captioning**
- Redesigned captioning UI
split from Process tab into separate tab
split `clip` vs `vlm` models processing
direct *send-to* buttons on all tabs: txt/img/ctrl->process/caption, process/caption->txt/img/ctrl
- Advanced params:
VLM: *max-tokens, num-beams, temperature, top-k, top-p, do-sample*
CLiP: *min-length, max-length, chunk-size, min-flavors, max-flavors, flavor-count, num-beams*
params are auto-saved in `config.json` and used when using quick interrogate
params that are set to 0 mean use model defaults
- Batch processing: VLM and CLiP
for example, can be used to caption your training dataset in one go
add option to append to captions file, can be used to run multiple captioning models in sequence
add option to run recursively on all subfolders
add progress bar
- Add additional VLM models:
[JoyTag](https://huggingface.co/fancyfeast/joytag)
[JoyCaption 2](https://huggingface.co/fancyfeast/llama-joycaption-alpha-two-hf-llava)
[Google PaliGemma 2](https://huggingface.co/google/paligemma2-3b-pt-224) 3B
[ToriiGate 0.4](https://huggingface.co/Minthy/ToriiGate-v0.4-7B) 7B
[AIDC Ovis2](https://huggingface.co/AIDC-AI/Ovis2-1B) 1B/2B/4B
- *Note* some models require `flash-attn` to be installed
due to binary/build dependencies, it should not be done automatically,
see [flash-attn](https://github.com/Dao-AILab/flash-attention) for installation instructions
- **Docker**
- updated **CUDA** receipe to `torch==2.6.0` with `cuda==12.6` and add prebuilt image
- added **ROCm** receipe and prebuilt image
- added **IPEX** receipe and add prebuilt image
- added **OpenVINO** receipe and prebuilt image
- **System**
- improve **python==3.12** compatibility
- **Torch**
- for **zluda** set default to `torch==2.6.0+cu118`
- for **openvino** set default to `torch==2.6.0+cpu`
- **OpenVINO**
- update to `openvino==2025.0.0`
- improve upscaler compatibility
- enable upscaler compile by default
- fix shape mismatch errors on too many resolution changes
- **ZLUDA**
- update to `zluda==3.8.8`
- **Other**
- **Asymmetric tiling**
allows for configurable image tiling for x/y axis separately
enable in *scripts -> asymmetric tiling*
*note*: traditional symmetric tiling is achieved by setting circular mode for both x and y
- **Styles**
ability to save and/or restore prompts before or after parsing of wildcards
set in *settings -> networks -> styles*
- **Access tokens**
persist *models -> hugginface -> token*
persist *models -> civitai -> token*
- global switch to lancosz method for all interal resize ops and bicubic for interpolation ops
- **Text encoder**
add advanced per-model options for text encoder
set in *settings -> text encoder -> Optional*
- **Subpath**
allow setting additional mount subpath over which server url will be accessible
set in *settings -> user interface*
- **Prompt parsing**
better handling of prompt parsing when using masking char `\`
- **Fixes**
- update torch nightly urls
- docs/wiki always use relative links
- ui use correct timezone for log display
- ui improve settings search behavior
- ui log scroll to bottom
- ui fix send to inpaint/sketch
- modernui add control init image toggle
- modernui fix sampler advanced options
- outpaint fixes
- validate output before hires/refine
- scheduler fix sigma index out of bounds
- force pydantic version reinstall/reload
- multi-unit when using controlnet-union
- pulid with hidiffusion
- api: stricter access control
- api: universal handle mount subpaths
## Update for 2025-02-05
- refresh dev/master branches
## Update for 2025-02-04
### Highlights for 2025-02-04
Just one week after latest release and what a week it was with over 50 commits!
*What's New?*
- Rehosted core repo to new [home](https://github.com/vladmandic/sdnext)
- Switched to using `torch==2.6.0` and added support for `nightly` builds required for **nVidia Blackwell** GPUs
- Completely new **interrogate/captioning**, now supporting 150+ **OpenCLiP** models and 20+ built-in **VLMs**
- Support for **new VLMs**, New SOTA **background removal**
- Other: *torch tunable ops, extra networks search/filter, balanced offload, prompt parser, configurable tracebacks, etc.*
- Cumulative fixes...
### Details for 2025-02-04
- **GitHub**
- rename core repo from <https://github.com/vladmandic/automatic> to <https://github.com/vladmandic/sdnext>
old repo url should automatically redirect to new one for seamless transition and in-place upgrades
all internal links have been updated
wiki content and docs site have been updated
- **Docs**:
- Updated [Debugging guide](https://github.com/vladmandic/automatic/wiki/Debug)
- **Torch**:
- for **cuda** set default to `torch==2.6.0+cu126`
for **rocm** set default to `torch==2.6.0+rocm6.2.4`
for **ipex** set default to `torch==2.6.0+xpu`
*note*: to avoid disruptions sdnext does not perform torch install during in-place upgrades
to force torch upgrade, either start with new installation or use `--reinstall` flag
- support for torch **nightly** builds and nvidia **blackwell** gpus!
use `--use-nightly` flag to install torch nightly builds
current defaults to `torch==2.7.0+cu128` prerelease
*note*: nightly builds are required for blackwell gpus
- add support for torch **tunable ops**, this can speed up operations by up to *10-30%* on some platforms
set in *settings -> backend settings -> torch options* and *settings -> system paths -> tunable ops cache*
- add support for stream-loading, this can speed up model loading when models are located on network drives
set in *settings -> models & loading -> model load using streams*
- enhanced error logging
- **Interrogate/Captioning**
- single interrogate button for every input or output image
- behavior of interrogate configurable in *settings -> interrogate*
with detailed defaults for each model type also configurable
- select between 150+ *OpenCLiP* supported models, 20+ built-in *VLMs*, *DeepDanbooru*
- **VLM**: now that we can use VLMs freely, we've also added support for few more out-of-the-box
[Alibaba Qwen VL2](https://huggingface.co/Qwen/Qwen2-VL-2B), [Huggingface Smol VL2](https://huggingface.co/HuggingFaceTB/SmolVLM-Instruct), [ToriiGate 0.4](https://huggingface.co/Minthy/ToriiGate-v0.4-2B)
- **Postprocess**
- new sota remove background model: [BEN2](https://huggingface.co/PramaLLC/BEN2)
select in *process -> remove background* or enable postprocessing for txt2img/img2img operations
- **Other**:
- **networks**: imporove search/filter and add visual indicators for types
- **balanced offload** new defaults: *lowvram/4gb min threshold: 0, medvram/8gb min threshold: 0, default min threshold 0.25*
- **prompt parser**: log stats with tokens, sections and min/avg/max weights
- **prompt parser**: add setting to ignore line breaks in prompt
set in *settings -> text encoder -> use line breaks*
- **visual query**: add list of predefined system prompts
- **onnx**: allow manually specifying `onnxruntime` package
set env variable `ONNXRUNTIME_COMMAND` to override default package installation
- **nvml cli**: run nvidia-management-lib interrogate from cli
already available in ui in generate -> right click -> nvidia
> python modules/api/nvml.py
- **Refactor**:
- unified trace handler with configurable tracebacks
- refactor interrogate/analyze/vqa code
- **Fixes**:
- photomaker with offloading
- photomaker with refine
- detailer with faceid modules
- detailer restore pipeline before run
- fix `python==3.9` compatibility
- improve `python>=3.12.3` compatibility
- handle invalid `triton` on Linux
- correct library import order
- update requirements
- calculate dyn atten bmm slice rate
- dwpose update and patch `mmengine` installer
- ipex device wrapper with adetailer
- openvino error handling
- relax python version checks for rocm
- simplify and improve file wildcard matching
- fix `rich` version
- add cn active label
## Update for 2025-01-29
### Highlights for 2025-01-29
Two weeks since last release, time for update!
*What's New?*
- New **Detailer** functionality including ability to use several new
face-restore models: *RestoreFormer, CodeFormer, GFPGan, GPEN-BFR*
- Support for new models/pipelines:
face-swapper with **Photomaker-v2** and video with **Fast-Hunyuan**
- Support for several new optimizations and accelerations:
Many **IPEX** improvements, native *torch fp8* support,
support for **PAB:Pyramid-attention-broadcast**, **ParaAttention** and **PerFlow**
- Fully built-in both model **merge weights** as well as model **merge component**
Finally replace that pesky VAE in your favorite model with a fixed one!
- Improved remote access control and reliability as well as running inside containers
- And of course, hotfixes for all reported issues...
### Details for 2025-01-29
- **Contributing**:
- if you'd like to contribute, please see updated [contributing](https://github.com/vladmandic/automatic/blob/dev/CONTRIBUTING) guidelines
- **Model Merge**
- replace model components and merge LoRAs
in addition to existing model weights merge support
now also having ability to replace model components and merge LoRAs
you can also test merges in-memory without needing to save to disk at all
and you can also use it to convert diffusers to safetensors if you want
*example*: replace vae in your favorite model with a fixed one? replace text encoder? etc.
*note*: limited to sdxl for now, additional models can be added depending on popularity
- **Detailer**:
- in addition as standard behavior of detect & run-generate, it can now also run face-restore models
- included models are: *CodeFormer, RestoreFormer, GFPGan, GPEN-BFR*
- **Face**:
- new [PhotoMaker v2](https://huggingface.co/TencentARC/PhotoMaker-V2) and reimplemented [PhotoMaker v1](https://huggingface.co/TencentARC/PhotoMaker)
compatible with sdxl models, generates pretty good results and its faster than most other methods
select under *scripts -> face -> photomaker*
- new [ReSwapper](https://github.com/somanchiu/ReSwapper)
todo: experimental-only and unfinished, only noting in changelog for future reference
- **Video**
- **hunyuan video** support for [FastHunyuan](https://huggingface.co/FastVideo/FastHunyuan)
simply select model variant and set appropriate parameters
recommended: sampler-shift=17, steps=6, resolution=720x1280, frames=125, guidance>6.0
- [PAB: Pyramid Attention Broadcast](https://oahzxl.github.io/PAB/)
- speed up generation by caching attention results between steps
- enable in *settings -> pipeline modifiers -> pab*
- adjust settings as needed: wider timestep range means more acceleration, but higher accuracy drop
- compatible with most `transformer` based models: e.g. flux.1, hunyuan-video, lyx-video, mochi, etc.
- [ParaAttention](https://github.com/chengzeyi/ParaAttention)
- first-block caching that can significantly speed up generation by dynamically reusing partial outputs between steps
- available for: flux, hunyuan-video, ltx-video, mochi
- enable in *settings -> pipeline modifiers -> para-attention*
- adjust residual diff threshold to balance the speedup and the accuracy:
higher values leads to more cache hits and speedups, but might also lead to a higher accuracy drop
- **IPEX**
- enable force attention slicing, fp64 emulation, jit cache
- use the us server by default on linux
- use pytorch test branch on windows
- extend the supported python versions
- improve sdpa dynamic attention
- **Torch FP8**
- uses torch `float8_e4m3fn` or `float8_e5m2` as data storage and performs dynamic upcasting to compute `dtype` as needed
- compatible with most `unet` and `transformer` based models: e.g. *sd15, sdxl, sd35, flux.1, hunyuan-video, ltx-video, etc.*
this is alternative to `bnb`/`quanto`/`torchao` quantization on models/platforms/gpus where those libraries are not available
- enable in *settings -> quantization -> layerwise casting*
- [PerFlow](https://github.com/magic-research/piecewise-rectified-flow)
- piecewise rectified flow as model acceleration
- use `perflow` scheduler combined with one of the available pre-trained [models](https://huggingface.co/hansyan)
- **Other**:
- **upscale**: new [asymmetric vae](https://huggingface.co/Heasterian/AsymmetricAutoencoderKLUpscaler) upscaling method
- **gallery**: add http fallback for slow/unreliable links
- **splash**: add legacy mode indicator on splash screen
- **network**: extract thumbnail from model metadata if present
- **network**: setting value to disable use of reference models
- **Refactor**:
- **upscale**: code refactor to unify latent, resize and model based upscalers
- **loader**: ability to run in-memory models
- **schedulers**: ability to create model-less schedulers
- **quantization**: code refactor into dedicated module
- **dynamic attention sdpa**: more correct implementation and new trigger rate control
- **Remote access**:
- perform auth check on ui startup
- unified standard and modern-ui authentication method & cleanup auth logging
- detect & report local/external/public ip addresses if using `listen` mode
- detect *docker* enforced limits instead of system limits if running in a container
- warn if using public interface without authentication
- **Fixes**:
- non-full vae decode
- send-to image transfer
- sana vae tiling
- increase gallery timeouts
- update ui element ids
- modernui use local font
- unique font family registration
- mochi video number of frames
- mark large models that should offload
- avoid repeated optimum-quanto installation
- avoid reinstalling bnb if not cuda
- image metadata civitai compatibility
- xyz grid handle invalid values
- omnigen pipeline handle float seeds
- correct logging of docker status on logs, thanks @kmscode
- fix omnigen
- fix docker status reporting
- vlm/vqa with moondream2
- rocm do not override triton installation
- port streaming model load to diffusers
## Update for 2025-01-15
### Highlights for 2025-01-15
Two weeks since last release, time for update!
This time a bit shorter highligh reel as this is primarily a service release, but still there is more than few updates
*(actually, there are ~60 commits, so its not that tiny)*
*What's New?"
- Large [Wiki](https://github.com/vladmandic/automatic/wiki)/[Docs](https://vladmandic.github.io/sdnext-docs/) updates
- New models: **Allegro Video**, new pipelines: **PixelSmith**, updates: **Hunyuan-Video**, **LTX-Video**, **Sana 4k**
- New version for **ZLUDA**
- New features in **Detailer**, **XYZ grid**, **Sysinfo**, **Logging**, **Schedulers**, **Video save/create**
- And a tons of hotfixes...
### Details for 2025-01-15
- [Wiki/Docs](https://vladmandic.github.io/sdnext-docs/):
- updated: Detailer, Install, Update, Debug, Control-HowTo, ZLUDA
- [Allegro Video](https://huggingface.co/rhymes-ai/Allegro)
- optimizations: full offload and quantization support
- *reference values*: width 1280 height 720 frames 88 steps 100 guidance 7.5
- *note*: allegro model is really sensitive to input width/height/frames/steps
and may result in completely corrupt output if those are not within expected range
- [PixelSmith](https://github.com/Thanos-DB/Pixelsmith/)
- available for SD-XL in txt2img and img2img workflows
- select from *scripts -> pixelsmith*
- [Hunyuan Video](https://github.com/Tencent/HunyuanVideo) LoRA support
- example: <https://huggingface.co/Cseti/HunyuanVideo-LoRA-Arcane_Jinx-v1>
- [LTX Video](https://github.com/Lightricks/LTX-Video) framewise decoding
- enabled by default, allows generating longer videos with reduced memory requirements
- [Sana 4k](https://huggingface.co/Efficient-Large-Model/Sana_1600M_4Kpx_BF16_diffusers)
- new Sana variation with support of directly generating 4k images
- simply select from *networks -> models -> reference*
- tip: enable vae tiling when generating very large images
- **Logging**:
- reverted enable debug by default
- updated [debug wiki](https://github.com/vladmandic/automatic/wiki/debug)
- sort logged timers by duration
- allow min duration env variable for timers: `SD_MIN_TIMER=0.1` (default)
- update installer messages
- **Refactor**:
- refactored progress monitoring, job updates and live preview
- improved metadata save and restore
- startup tracing and optimizations
- threading load locks on model loads
- refactor native vs legacy model loader
- video save/create
- **Schedulers**:
- [TDD](https://github.com/RedAIGC/Target-Driven-Distillation) new super-fast scheduler that can generate images in 4-8 steps
recommended to use with [TDD LoRA](https://huggingface.co/RED-AIGC/TDD/tree/main)
- **Detailer**:
- add explicit detailer prompt and negative prompt
- add explicit detailer steps setting
- move steps, strength, prompt, negative from settings into ui params
- set/restore detailer metadata
- new [detailer wiki](https://github.com/vladmandic/automatic/wiki/Detailer)
- **Preview**
- since different TAESD versions produce different results and latest is not necessarily greatest
you can choose TAESD version in settings -> live preview
also added is support for another finetuned version of TAESD [Hybrid TinyVAE](https://huggingface.co/cqyan/hybrid-sd-tinyvae-xl)
- **Video**
- all video create/save code is now unified
- add support for video formats: GIF, PNG, MP4/MP4V, MP4/AVC1, MP4/JVT3, MKV/H264, AVI/DIVX, AVI/RGBA, MJPEG/MJPG, MPG/MPG1, AVR/AVR1
- *note*: video format support is platform dependent and not all formats may be available on all platforms
- *note*: avc1 and h264 need custom opencv due to oss licensing issues
- **ZLUDA** v3.8.7
- new runtime compiler implementation: complex types, JIT are now available
- fast fourier transformation is implemented
- experimental BLASLt support via nightly build
- set `ZLUDA_NIGHTLY=1` to install nightly ZLUDA: newer torch such as 2.4.x (default) and 2.5.x are now available
- requirements: unofficial hipBLASLt
- **Other**
- **XYZ Grid**: add prompt search&replace options: *primary, refine, detailer, all*
- **SysInfo**: update to collected data and benchmarks
- **Fixes**:
- explict clear caches on model load
- lock adetailer commit: `#a89c01d`
- xyzgrid progress calculation
- xyzgrid detailer
- vae tiling use default value if not set
- sd35 img2img
- samplers test for scale noise before using
- scheduler api
- sampler create error handling
- controlnet with hires
- controlnet with batch count
- apply settings skip hidden settings
- lora diffusers method apply only once
- lora diffusers method set prompt tags and metadata
- flux support on-the-fly quantization for bnb of unet only
- control restore pipeline before running hires
- restore args after batch run
- flux controlnet
- zluda installer
- control inherit parent pipe settings
- control logging
- hf cache folder settings
- fluxfill should not require base model
## Update for 2024-12-31
NYE refresh release with quite a few optimizatios and bug fixes...
Commit hash: `master: #dcfc9f3` `dev: #935cac6`
- **LoRA**:
- LoRA load/apply/unapply methods have been changed in 12/2024 Xmass release and further tuned in this release
- for details on available methods, see <https://github.com/vladmandic/automatic/wiki/Lora#lora-loader>
- **Sana** support
- quantized models support
- add fuse support with on-demand apply/unapply (new default)
- add legacy option in *settings -> networks*
- **HunyuanVideo**:
- optimizations: full offload, quantization and tiling support
- **LTXVideo**:
- optimizations: full offload, quantization and tiling support
- [TeaCache](https://github.com/ali-vilab/TeaCache/blob/main/TeaCache4LTX-Video/README.md) integration
- **VAE**:
- tiling granular options in *settings -> Variational Auto Encoder*
- **UI**:
- live preview optimizations and error handling
- live preview high quality output, thanks @Disty0
- CSS optimizations when log view is disabled
- **Samplers**:
- add flow shift options and separate dynamic thresholding from dynamic shifting
- autodetect matching sigma capabilities
- **API**:
- better default values for generate
- **Refactor**:
- remove all LDM imports if running in native mode
- startup optimizatios
- **Torch**:
- support for `torch==2.6.0`
- **OpenVINO**:
- disable re-compile on resolution change
- fix shape mismatch on resolution change
- **Fixes**:
- flux pipeline switches: txt/img/inpaint
- flux custom unet loader for bnb
- flux do not requantize already quantized model
- interrogate caption with T5
- on-the-fly quantization using TorchAO
- remove concurrent preview requests
- xyz grid recover on error
- hires batch
- sdxl refiner
- increase progress timeout
- kandinsky matmul
- do not show disabled networks
- enable debug logging by default
- image width/height calculation when doing img2img
- corrections with batch processing
- hires with refiner prompt and batch processing
- processing with nested calls
- ui networks initial sort
- esrgan on cpu devices
## Update for 2024-12-24
### Highlights for 2024-12-24
### SD.Next Xmass edition: *What's new?*
While we have several new supported models, workflows and tools, this release is primarily about *quality-of-life improvements*:
- New memory management engine
list of changes that went into this one is long: changes to GPU offloading, brand new LoRA loader, system memory management, on-the-fly quantization, improved gguf loader, etc.
but main goal is enabling modern large models to run on standard consumer GPUs
without performance hits typically associated with aggressive memory swapping and needs for constant manual tweaks
- New [documentation website](https://vladmandic.github.io/sdnext-docs/)
with full search and tons of new documentation
- New settings panel with simplified and streamlined configuration
We've also added support for several new models such as highly anticipated [NVLabs Sana](https://huggingface.co/Efficient-Large-Model/Sana_1600M_1024px) (see [supported models](https://vladmandic.github.io/sdnext-docs/Model-Support/) for full list)
And several new SOTA video models: [Lightricks LTX-Video](https://huggingface.co/Lightricks/LTX-Video), [Hunyuan Video](https://huggingface.co/tencent/HunyuanVideo) and [Genmo Mochi.1 Preview](https://huggingface.co/genmo/mochi-1-preview)
And a lot of **Control** and **IPAdapter** goodies
- for **SDXL** there is new [ProMax](https://huggingface.co/xinsir/controlnet-union-sdxl-1.0), improved *Union* and *Tiling* models
- for **FLUX.1** there are [Flux Tools](https://blackforestlabs.ai/flux-1-tools/) as well as official *Canny* and *Depth* models,
a cool [Redux](https://huggingface.co/black-forest-labs/FLUX.1-Redux-dev) model as well as [XLabs](https://huggingface.co/XLabs-AI/flux-ip-adapter-v2) IP-adapter
- for **SD3.5** there are official *Canny*, *Blur* and *Depth* models in addition to existing 3rd party models
as well as [InstantX](https://huggingface.co/InstantX/SD3.5-Large-IP-Adapter) IP-adapter
Plus couple of new integrated workflows such as [FreeScale](https://github.com/ali-vilab/FreeScale) and [Style Aligned Image Generation](https://style-aligned-gen.github.io/)
And it wouldn't be a *Xmass edition* without couple of custom themes: *Snowflake* and *Elf-Green*!
All-in-all, we're around ~180 commits worth of updates, check the changelog for full list
[ReadMe](https://github.com/vladmandic/automatic/blob/master/README.md) | [ChangeLog](https://github.com/vladmandic/automatic/blob/master/CHANGELOG.md) | [Docs](https://vladmandic.github.io/sdnext-docs/) | [WiKi](https://github.com/vladmandic/automatic/wiki) | [Discord](https://discord.com/invite/sd-next-federal-batch-inspectors-1101998836328697867)
## Details for 2024-12-24
### New models and integrations
- [NVLabs Sana](https://huggingface.co/Efficient-Large-Model/Sana_1600M_1024px)
support for 1.6B 2048px, 1.6B 1024px and 0.6B 512px models
**Sana** can synthesize high-resolution images with strong text-image alignment by using **Gemma2** as text-encoder
and its *fast* - typically at least **2x** faster than sd-xl even for 1.6B variant and maintains performance regardless of resolution
e.g., rendering at 4k is possible in less than 8GB vram
to use, select from *networks -> models -> reference* and models will be auto-downloaded on first use
*reference values*: sampler: default (or any flow-match variant), steps: 20, width/height: 1024, guidance scale: 4.5
*note* like other LLM-based text-encoders, sana prefers long and descriptive prompts
any short prompt below 300 characters will be auto-expanded using built in Gemma LLM before encoding while long prompts will be passed as-is
- **ControlNet**
- improved support for **Union** controlnets with granular control mode type
- added support for latest [Xinsir ProMax](https://huggingface.co/xinsir/controlnet-union-sdxl-1.0) all-in-one controlnet
- added support for multiple **Tiling** controlnets, for example [Xinsir Tile](https://huggingface.co/xinsir/controlnet-tile-sdxl-1.0)
*note*: when selecting tiles in control settings, you can also specify non-square ratios
in which case it will use context-aware image resize to maintain overall composition
*note*: available tiling options can be set in settings -> control
- **IP-Adapter**
- FLUX.1 [XLabs](https://huggingface.co/XLabs-AI/flux-ip-adapter-v2) v1 and v2 IP-adapter
- FLUX.1 secondary guidance, enabled using *Attention guidance* in advanced menu
- SD 3.5 [InstantX](https://huggingface.co/InstantX/SD3.5-Large-IP-Adapter) IP-adapter
- [Flux Tools](https://blackforestlabs.ai/flux-1-tools/)
**Redux** is actually a tool, **Fill** is inpaint/outpaint optimized version of *Flux-dev*
**Canny** & **Depth** are optimized versions of *Flux-dev* for their respective tasks: they are *not* ControlNets that work on top of a model
to use, go to image or control interface and select *Flux Tools* in scripts
all models are auto-downloaded on first use
*note*: All models are [gated](https://github.com/vladmandic/automatic/wiki/Gated) and require acceptance of terms and conditions via web page
*recommended*: Enable on-the-fly [quantization](https://github.com/vladmandic/automatic/wiki/Quantization) or [compression](https://github.com/vladmandic/automatic/wiki/NNCF-Compression) to reduce resource usage
*todo*: support for Canny/Depth LoRAs
- [Redux](https://huggingface.co/black-forest-labs/FLUX.1-Redux-dev): ~0.1GB
works together with existing model and basically uses input image to analyze it and use that instead of prompt
*optional* can use prompt to combine guidance with input image
*recommended*: low denoise strength levels result in more variety
- [Fill](https://huggingface.co/black-forest-labs/FLUX.1-Fill-dev): ~23.8GB, replaces currently loaded model
*note*: can be used in inpaint/outpaint mode only
- [Canny](https://huggingface.co/black-forest-labs/FLUX.1-Canny-dev): ~23.8GB, replaces currently loaded model
*recommended*: guidance scale 30
- [Depth](https://huggingface.co/black-forest-labs/FLUX.1-Depth-dev): ~23.8GB, replaces currently loaded model
*recommended*: guidance scale 10
- [Flux ControlNet LoRA](https://huggingface.co/black-forest-labs/FLUX.1-Canny-dev-lora)
alternative to standard ControlNets, FLUX.1 also allows LoRA to help guide the generation process
both **Depth** and **Canny** LoRAs are available in standard control menus
- [StabilityAI SD35 ControlNets](https://huggingface.co/stabilityai/stable-diffusion-3.5-controlnets)
- In addition to previously released `InstantX` and `Alimama`, we now have *official* ones from StabilityAI
- [Style Aligned Image Generation](https://style-aligned-gen.github.io/)
enable in scripts, compatible with sd-xl
enter multiple prompts in prompt field separated by new line
style-aligned applies selected attention layers uniformly to all images to achive consistency
can be used with or without input image in which case first prompt is used to establish baseline
*note:* all prompts are processes as a single batch, so vram is limiting factor
- [FreeScale](https://github.com/ali-vilab/FreeScale)
enable in scripts, compatible with sd-xl for text and img2img
run iterative generation of images at different scales to achieve better results
can render 4k sdxl images
*note*: disable live preview to avoid memory issues when generating large images
### Video models
- [Lightricks LTX-Video](https://huggingface.co/Lightricks/LTX-Video)
model size: 27.75gb
support for 0.9.0, 0.9.1 and custom safetensor-based models with full quantization and offloading support
support for text-to-video and image-to-video, to use, select in *scripts -> ltx-video*
*refrence values*: steps 50, width 704, height 512, frames 161, guidance scale 3.0
- [Hunyuan Video](https://huggingface.co/tencent/HunyuanVideo)
model size: 40.92gb
support for text-to-video, to use, select in *scripts -> hunyuan video*
basic support only
*refrence values*: steps 50, width 1280, height 720, frames 129, guidance scale 6.0
- [Genmo Mochi.1 Preview](https://huggingface.co/genmo/mochi-1-preview)
support for text-to-video, to use, select in *scripts -> mochi.1 video*
basic support only
*refrence values*: steps 64, width 848, height 480, frames 19, guidance scale 4.5
*Notes*:
- all video models are very large and resource intensive!
any use on gpus below 16gb and systems below 48gb ram is experimental at best
- sdnext support for video models is relatively basic with further optimizations pending community interest
any future optimizations would likely have to go into partial loading and excecution instead of offloading inactive parts of the model
- new video models use generic llms for prompting and due to that requires very long and descriptive prompt
- you may need to enable sequential offload for maximum gpu memory savings
- optionally enable pre-quantization using bnb for additional memory savings
- reduce number of frames and/or resolution to reduce memory usage
### UI and workflow improvements
- **Docs**:
- New documentation site! <https://vladmandic.github.io/sdnext-docs/>
- Additional Wiki content: Styles, Wildcards, etc.
- **LoRA** handler rewrite:
- LoRA weights are no longer calculated on-the-fly during model execution, but are pre-calculated at the start
this results in perceived overhead on generate startup, but results in overall faster execution as LoRA does not need to be processed on each step
thanks @AI-Casanova
- LoRA weights can be applied/unapplied as on each generate or they can store weights backups for later use
this setting has large performance and resource implications, see [Offload](https://github.com/vladmandic/automatic/wiki/Offload) wiki for details
- LoRA name in prompt can now also be an absolute path to a LoRA file, even if LoRA is not indexed
example: `<lora:/test/folder/my-lora.safetensors:1.0>`
- LoRA name in prompt can now also be path to a LoRA file op `huggingface`
example: `<lora:/huggingface.co/vendor/repo/my-lora.safetensors:1.0>`
- **Model loader** improvements:
- detect model components on model load fail
- allow passing absolute path to model loader
- Flux, SD35: force unload model
- Flux: apply `bnb` quant when loading *unet/transformer*
- Flux: all-in-one safetensors
example: <https://civitai.com/models/646328?modelVersionId=1040235>
- Flux: do not recast quants
- **Memory** improvements:
- faster and more compatible *balanced offload* mode
- balanced offload: units are now in percentage instead of bytes
- balanced offload: add both high and low watermark, defaults as below
`0.25` for low-watermark: skip offload if memory usage is below 25%
`0.70` high-watermark: must offload if memory usage is above 70%
- balanced offload will attempt to run offload as non-blocking and force gc at the end
- change-in-behavior:
low-end systems, triggered by either `lowvrwam` or by detection of <=4GB will use *sequential offload*
all other systems use *balanced offload* by default (can be changed in settings)
previous behavior was to use *model offload* on systems with <=8GB and `medvram` and no offload by default
- VAE upcase is now disabled by default on all systems
if you have issues with image decode, you'll need to enable it manually
- **UI**:
- improved stats on generate completion
- improved live preview display and performance
- improved accordion behavior
- auto-size networks height for sidebar
- control: hide preview column by default
- control: optionn to hide input column
- control: add stats
- settings: reorganized and simplified
- browser -> server logging framework
- add addtional themes: `black-reimagined`, thanks @Artheriax
- **Batch**
- image batch processing will use caption files if they exist instead of default prompt
### Updates
- **Quantization**
- Add `TorchAO` *pre* (during load) and *post* (during execution) quantization
**torchao** supports 4 different int-based and 3 float-based quantization schemes
This is in addition to existing support for:
- `BitsAndBytes` with 3 float-based quantization schemes
- `Optimium.Quanto` with 3 int-based and 2 float-based quantizations schemes
- `GGUF` with pre-quantized weights
- Switch `GGUF` loader from custom to diffuser native
- **IPEX**: update to IPEX 2.5.10+xpu
- **OpenVINO**:
- update to 2024.6.0
- disable model caching by default
- **Sampler** improvements
- UniPC, DEIS, SA, DPM-Multistep: allow FlowMatch sigma method and prediction type
- Euler FlowMatch: add sigma methods (*karras/exponential/betas*)
- Euler FlowMatch: allow using timestep presets to set sigmas
- DPM FlowMatch: update all and add sigma methods
- BDIA-DDIM: *experimental* new scheduler
- UFOGen: *experimental* new scheduler
### Fixes
- add `SD_NO_CACHE=true` env variable to disable file/folder caching
- add settings -> networks -> embeddings -> enable/disable
- update `diffusers`
- fix README links
- fix sdxl controlnet single-file loader
- relax settings validator
- improve js progress calls resiliency
- fix text-to-video pipeline
- avoid live-preview if vae-decode is running
- allow xyz-grid with multi-axis s&r
- fix xyz-grid with lora
- fix api script callbacks
- fix gpu memory monitoring
- simplify img2img/inpaint/sketch canvas handling
- fix prompt caching
- fix xyz grid skip final pass
- fix sd upscale script
- fix cogvideox-i2v
- lora auto-apply tags remove duplicates
- control load model on-demand if not already loaded
- taesd limit render to 2024px
- taesd downscale preview to 1024px max: configurable in settings -> live preview
- uninstall conflicting `wandb` package
- dont skip diffusers version check if quick is specified
- notify on torch install
- detect pipeline fro diffusers folder-style model
- do not recast flux quants
- fix xyz-grid with lora none
- fix svd image2video
- fix gallery display during generate
- fix wildcards replacement to be unique
- fix animatediff-xl
- fix pag with batch count
## Update for 2024-11-21
### Highlights for 2024-11-21
Three weeks is a long time in Generative AI world - and we're back with ~140 commits worth of updates!
*What's New?*
First, a massive update to docs including new UI top-level **info** tab with access to [changelog](https://github.com/vladmandic/automatic/blob/master/CHANGELOG.md) and [wiki](https://github.com/vladmandic/automatic/wiki), many updates and new articles AND full **built-in documentation search** capabilities
#### New integrations
- [PuLID](https://github.com/ToTheBeginning/PuLID): Pure and Lightning ID Customization via Contrastive Alignment
- [InstantX InstantIR](https://github.com/instantX-research/InstantIR): Blind Image Restoration with Instant Generative Reference
- [nVidia Labs ConsiStory](https://github.com/NVlabs/consistory): Consistent Image Generation
- [MiaoshouAI PromptGen v2.0](https://huggingface.co/MiaoshouAI/Florence-2-base-PromptGen-v2.0) VQA captioning
#### Workflow Improvements
- Native **Docker** support
- **SD3x & Flux.1**: more ControlNets, all-in-one-safetensors, DPM samplers, skip-layer-guidance, etc.
- **XYZ grid**: benchmarking, video creation, etc.
- Enhanced **prompt** parsing
- **UI** improvements
- **Installer** self-healing `venv`
And quite a few more improvements and fixes since the last update!
For full list and details see changelog...
[README](https://github.com/vladmandic/automatic/blob/master/README.md) | [CHANGELOG](https://github.com/vladmandic/automatic/blob/master/CHANGELOG.md) | [WiKi](https://github.com/vladmandic/automatic/wiki) | [Discord](https://discord.com/invite/sd-next-federal-batch-inspectors-1101998836328697867)
### Details for 2024-11-21
- Docs:
- new top-level **info** tab with access to [changelog](https://github.com/vladmandic/automatic/blob/master/CHANGELOG.md) and [wiki](https://github.com/vladmandic/automatic/wiki)
- UI built-in [changelog](https://github.com/vladmandic/automatic/blob/master/CHANGELOG.md) search
since changelog is the best up-to-date source of info
go to info -> changelog and search/highligh/navigate directly in UI!
- UI built-in [wiki](https://github.com/vladmandic/automatic/wiki)
go to info -> wiki and search wiki pages directly in UI!
- major [Wiki](https://github.com/vladmandic/automatic/wiki) and [Home](https://github.com/vladmandic/automatic) updates
- updated API swagger docs for at `/docs`
- Integrations:
- [PuLID](https://github.com/ToTheBeginning/PuLID): Pure and Lightning ID Customization via Contrastive Alignment
- advanced method of face id transfer with better quality as well as control over identity and appearance
try it out, likely the best quality available for sdxl models
- select in *scripts -> pulid*
- compatible with *sdxl* for text-to-image, image-to-image, inpaint, refine, detailer workflows
- can be used in xyz grid
- *note*: this module contains several advanced features on top of original implementation
- [InstantIR](https://github.com/instantX-research/InstantIR): Blind Image Restoration with Instant Generative Reference
- alternative to traditional `img2img` with more control over restoration process
- select in *image -> scripts -> instantir*
- compatible with *sdxl*
- *note*: after used once it cannot be unloaded without reloading base model
- [ConsiStory](https://github.com/NVlabs/consistory): Consistent Image Generation
- create consistent anchor image and then generate images that are consistent with anchor
- select in *scripts -> consistory*
- compatible with *sdxl*
- *note*: very resource intensive and not compatible with model offloading
- *note*: changing default parameters can lead to unexpected results and/or failures
- *note*: after used once it cannot be unloaded without reloading base model
- [MiaoshouAI PromptGen v2.0](https://huggingface.co/MiaoshouAI/Florence-2-base-PromptGen-v2.0) base and large:
- *in process -> visual query*
- caption modes:
`<GENERATE_TAGS>` generate tags
`<CAPTION>`, `<DETAILED_CAPTION>`, `<MORE_DETAILED_CAPTION>` caption image
`<ANALYZE>` image composition
`<MIXED_CAPTION>`, `<MIXED_CAPTION_PLUS>` detailed caption and tags with optional analyze
- Model improvements:
- SD35: **ControlNets**:
- *InstantX Canny, Pose, Depth, Tile*
- *Alimama Inpainting, SoftEdge*
- *note*: that just like with FLUX.1 or any large model, ControlNet are also large and can push your system over the limit
e.g. SD3 controlnets vary from 1GB to over 4GB in size
- SD35: **All-in-one** safetensors
- *examples*: [large](https://civitai.com/models/882666/sd35-large-google-flan?modelVersionId=1003031), [medium](https://civitai.com/models/900327)
- *note*: enable *bnb* on-the-fly quantization for even bigger gains
- SD35: **skip-layer-guidance**
- enable in *scripts -> slg*
- allows for granular strength/start/stop control of guidance for each layer of the model
- [NoobAI XL ControlNets](https://huggingface.co/collections/Eugeoter/controlnext-673161eae023f413e0432799), thanks @lbeltrame
- Workflow improvements:
- Native Docker support with pre-defined [Dockerfile](https://github.com/vladmandic/automatic/blob/dev/Dockerfile)
- Samplers:
- **FlowMatch samplers**:
- Applicable to SD 3.x and Flux.1 models
- Complete family: *DPM2, DPM2a, DPM2++, DPM2++ 2M, DPM2++ 2S, DPM2++ SDE, DPM2++ 2M SDE, DPM2++ 3M SDE*
- **Beta and Exponential** sigma method enabled for all samplers
- **XYZ grid**:
- optional time benchmark info to individual images
- optional add params to individual images
- create video from generated grid images
supports all standard video types and interpolation
- **Prompt parser**:
- support for prompt scheduling
- renamed parser options: `native`, `xhinker`, `compel`, `a1111`, `fixed`
- parser options are available in xyz grid
- improved caching
- **UI**:
- better gallery and networks sidebar sizing
- add additional [hotkeys](https://github.com/vladmandic/automatic/wiki/Hotkeys)
- add show networks on startup setting
- better mapping of networks previews
- optimize networks display load
- Image2image:
- integrated refine/upscale/hires workflow
- Other:
- **Installer**:
- Log `venv` and package search paths
- Auto-remove invalid packages from `venv/site-packages`
e.g. packages starting with `~` which are left-over due to windows access violation
- Requirements: update
- Scripts:
- More verbose descriptions for all scripts
- Model loader:
- Report modules included in safetensors when attempting to load a model
- CLI:
- refactor command line params
run `webui.sh`/`webui.bat` with `--help` to see all options
- added `cli/model-metadata.py` to display metadata in any safetensors file
- added `cli/model-keys.py` to quicky display content of any safetensors file
- Internal:
- Auto pipeline switching coveres wrapper classes and nested pipelines
- Full settings validation on load of `config.json`
- Refactor of all params in main processing classes
- Improve API scripts usage resiliency
- Fixes:
- custom watermark add alphablending
- fix xyz grid include images
- fix xyz skip on interrupted
- fix vqa models ignoring hfcache folder setting
- fix network height in standard vs modern ui
- fix k-diff enum on startup
- fix text2video scripts
- multiple xyz-grid fixes
- dont uninstall flash-attn
- ui css fixes
## Update for 2024-11-01
Smaller release just 3 days after the last one, but with some important fixes and improvements.
This release can be considered an LTS release before we kick off the next round of major updates.
- Other:
- Repo: move screenshots to GH pages
- Update requirements
- Fixes:
- detailer min/max size as fractions of image size
- ipadapter load on-demand
- ipadapter face use correct yolo model
- list diffusers remove duplicates
- fix legacy extensions access to shared objects
- fix diffusers load from folder
- fix lora enum logging on windows
- fix xyz grid with batch count
- move dowwloads of some auxillary models to hfcache instead of models folder
## Update for 2024-10-29
### Highlights for 2024-10-29
- Support for **all SD3.x variants**
*SD3.0-Medium, SD3.5-Medium, SD3.5-Large, SD3.0-Large-Turbo*
- Allow quantization using `bitsandbytes` on-the-fly during models load
Load any variant of SD3.x or FLUX.1 and apply quantization during load without the need for pre-quantized models
- Allow for custom model URL in standard model selector
Can be used to specify any model from *HuggingFace* or *CivitAI*
- Full support for `torch==2.5.1`
- New wiki articles: [Gated Access](https://github.com/vladmandic/automatic/wiki/Gated), [Quantization](https://github.com/vladmandic/automatic/wiki/Quantization), [Offloading](https://github.com/vladmandic/automatic/wiki/Offload)
Plus tons of smaller improvements and cumulative fixes reported since last release
[README](https://github.com/vladmandic/automatic/blob/master/README.md) | [CHANGELOG](https://github.com/vladmandic/automatic/blob/master/CHANGELOG.md) | [WiKi](https://github.com/vladmandic/automatic/wiki) | [Discord](https://discord.com/invite/sd-next-federal-batch-inspectors-1101998836328697867)
### Details for 2024-10-29
- model selector:
- change-in-behavior
- when typing, it will auto-load model as soon as exactly one match is found
- allows entering model that are not on the list which triggers huggingface search
e.g. `stabilityai/stable-diffusion-xl-base-1.0`
partial search hits are displayed in the log
if exact model is found, it will be auto-downloaded and loaded
- allows entering civitai direct download link which triggers model download
e.g. `https://civitai.com/api/download/models/72396?type=Model&format=SafeTensor&size=full&fp=fp16`
- auto-search-and-download can be disabled in settings -> models -> auto-download
this also disables reference models as they are auto-downloaded on first use as well
- sd3 enhancements:
- allow on-the-fly bnb quantization during load
- report when loading incomplete model
- handle missing model components during load
- handle component preloading
- native lora handler
- support for all sd35 variants: *medium/large/large-turbo*
- gguf transformer loader (prototype)
- flux.1 enhancements:
- allow on-the-fly bnb quantization during load
- samplers:
- support for original k-diffusion samplers
select via *scripts -> k-diffusion -> sampler*
- ipadapter:
- list available adapters based on loaded model type
- add adapter `ostris consistency` for sd15/sdxl
- detailer:
- add `[prompt]` to refine/defailer prompts as placeholder referencing original prompt
- torch
- use `torch==2.5.1` by default on supported platforms
- CUDA set device memory limit
in *settings -> compute settings -> torch memory limit*
default=0 meaning no limit, if set torch will limit memory usage to specified fraction
*note*: this is not a hard limit, torch will try to stay under this value
- compute backends:
- OpenVINO: add accuracy option
- ZLUDA: guess GPU arch
- major model load refactor
- wiki: new articles
- [Gated Access Wiki](https://github.com/vladmandic/automatic/wiki/Gated)
- [Quantization Wiki](https://github.com/vladmandic/automatic/wiki/Quantization)
- [Offloading Wiki](https://github.com/vladmandic/automatic/wiki/Offload)
fixes:
- fix send-to-control
- fix k-diffusion
- fix sd3 img2img and hires
- fix ipadapter supported model detection
- fix t2iadapter auto-download
- fix omnigen dynamic attention
- handle a1111 prompt scheduling
- handle omnigen image placeholder in prompt
## Update for 2024-10-23
### Highlights for 2024-10-23
A month later and with nearly 300 commits, here is the latest [SD.Next](https://github.com/vladmandic/automatic) update!
#### Workflow highlights for 2024-10-23
- **Reprocess**: New workflow options that allow you to generate at lower quality and then
reprocess at higher quality for select images only or generate without hires/refine and then reprocess with hires/refine
and you can pick any previous latent from auto-captured history!
- **Detailer** Fully built-in detailer workflow with support for all standard models
- Built-in **model analyzer**
See all details of your currently loaded model, including components, parameter count, layer count, etc.
- **Extract LoRA**: load any LoRA(s) and play with generate as usual
and once you like the results simply extract combined LoRA for future use!
#### New models for 2024-10-23
- New fine-tuned [CLiP-ViT-L](https://huggingface.co/zer0int/CLIP-GmP-ViT-L-14) 1st stage **text-encoders** used by most models (SD15/SDXL/SD3/Flux/etc.) brings additional details to your images
- New models:
[Stable Diffusion 3.5 Large](https://huggingface.co/stabilityai/stable-diffusion-3.5-large)
[OmniGen](https://arxiv.org/pdf/2409.11340)
[CogView 3 Plus](https://huggingface.co/THUDM/CogView3-Plus-3B)
[Meissonic](https://github.com/viiika/Meissonic)
- Additional integration:
[Ctrl+X](https://github.com/genforce/ctrl-x) which allows for control of **structure and appearance** without the need for extra models,
[APG: Adaptive Projected Guidance](https://arxiv.org/pdf/2410.02416) for optimal **guidance** control,
[LinFusion](https://github.com/Huage001/LinFusion) for on-the-fly **distillation** of any sd15/sdxl model
#### What else for 2024-10-23
- Tons of work on **dynamic quantization** that can be applied *on-the-fly* during model load to any model type (*you do not need to use pre-quantized models*)
Supported quantization engines include `BitsAndBytes`, `TorchAO`, `Optimum.quanto`, `NNCF` compression, and more...
- Auto-detection of best available **device/dtype** settings for your platform and GPU reduces neeed for manual configuration
*Note*: This is a breaking change to default settings and its recommended to check your preferred settings after upgrade
- Full rewrite of **sampler options**, not far more streamlined with tons of new options to tweak scheduler behavior
- Improved **LoRA** detection and handling for all supported models
- Several of [Flux.1](https://huggingface.co/black-forest-labs/FLUX.1-dev) optimizations and new quantization types
Oh, and we've compiled a full table with list of top-30 (*how many have you tried?*) popular text-to-image generative models,
their respective parameters and architecture overview: [Models Overview](https://github.com/vladmandic/automatic/wiki/Models)
And there are also other goodies like multiple *XYZ grid* improvements, additional *Flux ControlNets*, additional *Interrogate models*, better *LoRA tags* support, and more...
[README](https://github.com/vladmandic/automatic/blob/master/README.md) | [CHANGELOG](https://github.com/vladmandic/automatic/blob/master/CHANGELOG.md) | [WiKi](https://github.com/vladmandic/automatic/wiki) | [Discord](https://discord.com/invite/sd-next-federal-batch-inspectors-1101998836328697867)
### Details for 2024-10-23
- **reprocess**
- new top-level button: reprocess latent from your history of generated image(s)
- generate using full-quality:off and then reprocess using *full quality decode*
- generate without hires/refine and then *reprocess with hires/refine*
*note*: you can change hires/refine settings and run-reprocess again!
- reprocess using *detailer*
- **history**
- by default, **reprocess** will pick last latent, but you can select any latent from history!
- history is under *networks -> history*
each history item includes info on operations that were used, t
gitextract_kfv17jig/ ├── .dockerignore ├── .gitignore ├── .gitmodules ├── .pylintrc ├── .ruff.toml ├── CHANGELOG.md ├── CITATION.cff ├── CODE_OF_CONDUCT ├── CONTRIBUTING ├── README.md ├── SECURITY.md ├── TODO.md ├── cli/ │ ├── api-checkpoint.py │ ├── api-control.py │ ├── api-detect.py │ ├── api-enhance.py │ ├── api-faceid.py │ ├── api-grid.py │ ├── api-history.py │ ├── api-img2img.py │ ├── api-info.py │ ├── api-interrogate.py │ ├── api-json.py │ ├── api-mask.py │ ├── api-model.js │ ├── api-preprocess.py │ ├── api-progress.py │ ├── api-pulid.js │ ├── api-samplers.py │ ├── api-txt2img.js │ ├── api-txt2img.py │ ├── api-upscale.py │ ├── api-vqa.py │ ├── api-xyz.py │ ├── api-xyzenum.py │ ├── civitai-search.py │ ├── download-file.py │ ├── full-test.sh │ ├── gen-styles.py │ ├── generate-random.json │ ├── generate.json │ ├── generate.py │ ├── git-clone.py │ ├── hf-search.py │ ├── image-encode.py │ ├── image-exif.py │ ├── image-grid.py │ ├── image-palette.py │ ├── image-search.py │ ├── image-watermark.py │ ├── install-stablefast.py │ ├── lcm-convert.py │ ├── load-unet.py │ ├── locale-sanitize-override.py │ ├── localize.js │ ├── model-keys.py │ ├── model-metadata.py │ ├── nvidia-smi.py │ ├── process.py │ ├── process_options.py │ ├── requirements.txt │ ├── run-benchmark.py │ ├── sdapi.py │ ├── search-docs.py │ ├── test-schedulers.py │ ├── test-tagger.py │ ├── test-weighted-lists.py │ ├── util.py │ ├── validate-locale.py │ ├── video-extract.py │ └── zluda-python.py ├── configs/ │ ├── Dockerfile.cuda │ ├── Dockerfile.ipex │ ├── Dockerfile.openvino │ ├── Dockerfile.rocm │ ├── chroma/ │ │ ├── model_index.json │ │ ├── scheduler/ │ │ │ └── scheduler_config.json │ │ ├── text_encoder/ │ │ │ └── config.json │ │ ├── tokenizer/ │ │ │ ├── added_tokens.json │ │ │ ├── special_tokens_map.json │ │ │ ├── spiece.model │ │ │ └── tokenizer_config.json │ │ ├── transformer/ │ │ │ ├── config.json │ │ │ └── diffusion_pytorch_model.safetensors.index.json │ │ └── vae/ │ │ └── config.json │ ├── flux/ │ │ ├── model_index.json │ │ ├── scheduler/ │ │ │ └── scheduler_config.json │ │ ├── text_encoder/ │ │ │ └── config.json │ │ ├── text_encoder_2/ │ │ │ ├── config.json │ │ │ └── model.safetensors.index.json │ │ ├── tokenizer/ │ │ │ ├── merges.txt │ │ │ ├── special_tokens_map.json │ │ │ ├── tokenizer_config.json │ │ │ └── vocab.json │ │ ├── tokenizer_2/ │ │ │ ├── special_tokens_map.json │ │ │ ├── spiece.model │ │ │ ├── tokenizer.json │ │ │ └── tokenizer_config.json │ │ ├── transformer/ │ │ │ ├── config.json │ │ │ └── diffusion_pytorch_model.safetensors.index.json │ │ └── vae/ │ │ └── config.json │ ├── olive/ │ │ ├── sd/ │ │ │ ├── text_encoder.json │ │ │ ├── unet.json │ │ │ ├── vae_decoder.json │ │ │ └── vae_encoder.json │ │ └── sdxl/ │ │ ├── text_encoder.json │ │ ├── text_encoder_2.json │ │ ├── unet.json │ │ ├── vae_decoder.json │ │ └── vae_encoder.json │ ├── playground-v2.5-1024px-aesthetic.fp16_vae.json │ ├── sd15/ │ │ ├── feature_extractor/ │ │ │ └── preprocessor_config.json │ │ ├── model_index.json │ │ ├── safety_checker/ │ │ │ └── config.json │ │ ├── scheduler/ │ │ │ └── scheduler_config.json │ │ ├── text_encoder/ │ │ │ └── config.json │ │ ├── tokenizer/ │ │ │ ├── merges.txt │ │ │ ├── special_tokens_map.json │ │ │ ├── tokenizer_config.json │ │ │ └── vocab.json │ │ ├── unet/ │ │ │ └── config.json │ │ └── vae/ │ │ └── config.json │ ├── sd3/ │ │ ├── model_index.json │ │ ├── scheduler/ │ │ │ └── scheduler_config.json │ │ ├── text_encoder/ │ │ │ └── config.json │ │ ├── text_encoder_2/ │ │ │ └── config.json │ │ ├── text_encoder_3/ │ │ │ └── config.json │ │ ├── tokenizer/ │ │ │ ├── merges.txt │ │ │ ├── special_tokens_map.json │ │ │ ├── tokenizer_config.json │ │ │ └── vocab.json │ │ ├── tokenizer_2/ │ │ │ ├── merges.txt │ │ │ ├── special_tokens_map.json │ │ │ ├── tokenizer_config.json │ │ │ └── vocab.json │ │ ├── tokenizer_3/ │ │ │ ├── special_tokens_map.json │ │ │ ├── spiece.model │ │ │ ├── tokenizer.json │ │ │ └── tokenizer_config.json │ │ ├── transformer/ │ │ │ └── config.json │ │ └── vae/ │ │ └── config.json │ ├── sdxl/ │ │ ├── model_index.json │ │ ├── scheduler/ │ │ │ └── scheduler_config.json │ │ ├── text_encoder/ │ │ │ └── config.json │ │ ├── text_encoder_2/ │ │ │ └── config.json │ │ ├── tokenizer/ │ │ │ ├── merges.txt │ │ │ ├── special_tokens_map.json │ │ │ ├── tokenizer_config.json │ │ │ └── vocab.json │ │ ├── tokenizer_2/ │ │ │ ├── merges.txt │ │ │ ├── special_tokens_map.json │ │ │ ├── tokenizer_config.json │ │ │ └── vocab.json │ │ ├── unet/ │ │ │ └── config.json │ │ └── vae/ │ │ └── config.json │ ├── sdxl-refiner/ │ │ ├── model_index.json │ │ ├── scheduler/ │ │ │ └── scheduler_config.json │ │ ├── text_encoder_2/ │ │ │ └── config.json │ │ ├── tokenizer_2/ │ │ │ ├── merges.txt │ │ │ ├── special_tokens_map.json │ │ │ ├── tokenizer_config.json │ │ │ └── vocab.json │ │ ├── unet/ │ │ │ └── config.json │ │ └── vae/ │ │ └── config.json │ └── stable-cascade/ │ ├── prior/ │ │ └── config.json │ └── prior_lite/ │ └── config.json ├── data/ │ ├── previews.json │ ├── reference-cloud.json │ ├── reference-community.json │ ├── reference-distilled.json │ ├── reference-quant.json │ ├── reference.json │ └── upscalers.json ├── eslint.config.mjs ├── html/ │ ├── art-styles.json │ ├── licenses.html │ ├── locale_de.json │ ├── locale_en.json │ ├── locale_es.json │ ├── locale_fr.json │ ├── locale_hr.json │ ├── locale_it.json │ ├── locale_ja.json │ ├── locale_ko.json │ ├── locale_pt.json │ ├── locale_ru.json │ ├── locale_zh.json │ ├── manifest.json │ ├── override_en.json │ ├── override_hr.json │ ├── override_ko.json │ └── swagger.css ├── installer.py ├── javascript/ │ ├── amethyst-nightfall.css │ ├── aspectRatioOverlay.js │ ├── authWrap.js │ ├── base.css │ ├── black-gray.css │ ├── black-orange.css │ ├── black-teal-reimagined.css │ ├── black-teal.css │ ├── changelog.js │ ├── civitai.js │ ├── contextMenus.js │ ├── control.js │ ├── docs.js │ ├── dragDrop.js │ ├── editAttention.js │ ├── emerald-paradise.css │ ├── exifr.js │ ├── extensions.js │ ├── extraNetworks.js │ ├── gallery.js │ ├── generationParams.js │ ├── gpu.js │ ├── guidance.js │ ├── hires.js │ ├── history.js │ ├── imageParams.js │ ├── imageViewer.js │ ├── indexdb.js │ ├── inputAccordion.js │ ├── invoked.css │ ├── light-teal.css │ ├── loader.js │ ├── logMonitor.js │ ├── logger.js │ ├── login.js │ ├── midnight-barbie.css │ ├── monitor.js │ ├── notification.js │ ├── orchid-dreams.css │ ├── panZoom.js │ ├── progressBar.js │ ├── promptChecker.js │ ├── script.js │ ├── sdnext.css │ ├── setHints.js │ ├── settings.js │ ├── simple-dark.css │ ├── simple-light.css │ ├── startup.js │ ├── timeless-beige.css │ ├── timesheet.css │ ├── timesheet.js │ ├── trainMonitor.js │ ├── ui.js │ └── uiConfig.js ├── launch.py ├── models/ │ └── VAE-approx/ │ └── model.pt ├── modules/ │ ├── apg/ │ │ ├── __init__.py │ │ ├── pipeline_stable_cascade_prior_apg.py │ │ ├── pipeline_stable_diffision_xl_apg.py │ │ └── pipeline_stable_diffusion_apg.py │ ├── api/ │ │ ├── api.py │ │ ├── control.py │ │ ├── docs.py │ │ ├── endpoints.py │ │ ├── gallery.py │ │ ├── generate.py │ │ ├── gpu.py │ │ ├── helpers.py │ │ ├── loras.py │ │ ├── middleware.py │ │ ├── mime.py │ │ ├── models.py │ │ ├── nudenet.py │ │ ├── nvml.py │ │ ├── process.py │ │ ├── rocm_smi.py │ │ ├── script.py │ │ ├── server.py │ │ ├── xpu_smi.py │ │ └── xyz_grid.py │ ├── attention.py │ ├── ben2/ │ │ ├── __init__.py │ │ └── ben2_model.py │ ├── cachedit.py │ ├── call_queue.py │ ├── cfgzero/ │ │ ├── __init__.py │ │ ├── cogview4_pipeline.py │ │ ├── flux_pipeline.py │ │ ├── hidream_pipeline.py │ │ ├── hunyuan_t2v_pipeline.py │ │ ├── sd3_pipeline.py │ │ └── wan_t2v_pipeline.py │ ├── civitai/ │ │ ├── api_civitai.py │ │ ├── download_civitai.py │ │ ├── metadata_civitai.py │ │ └── search_civitai.py │ ├── cmd_args.py │ ├── control/ │ │ ├── proc/ │ │ │ ├── __init__.py │ │ │ ├── canny.py │ │ │ ├── depth_anything/ │ │ │ │ ├── __init__.py │ │ │ │ ├── blocks.py │ │ │ │ ├── dpt.py │ │ │ │ └── util/ │ │ │ │ └── transform.py │ │ │ ├── depth_pro/ │ │ │ │ └── __init__.py │ │ │ ├── dpt.py │ │ │ ├── dwpose/ │ │ │ │ ├── __init__.py │ │ │ │ ├── config/ │ │ │ │ │ ├── dwpose-l_384x288.py │ │ │ │ │ ├── rtmpose-l_8xb32-270e_coco-ubody-wholebody-384x288.py │ │ │ │ │ ├── rtmpose-m_8xb64-270e_coco-ubody-wholebody-256x192.py │ │ │ │ │ ├── rtmpose-t_8xb64-270e_coco-ubody-wholebody-256x192.py │ │ │ │ │ └── yolox_l_8xb8-300e_coco.py │ │ │ │ ├── draw.py │ │ │ │ └── wholebody.py │ │ │ ├── edge.py │ │ │ ├── glpn.py │ │ │ ├── hed.py │ │ │ ├── leres/ │ │ │ │ ├── __init__.py │ │ │ │ ├── leres/ │ │ │ │ │ ├── LICENSE │ │ │ │ │ ├── Resnet.py │ │ │ │ │ ├── Resnext_torch.py │ │ │ │ │ ├── __init__.py │ │ │ │ │ ├── depthmap.py │ │ │ │ │ ├── multi_depth_model_woauxi.py │ │ │ │ │ ├── net_tools.py │ │ │ │ │ └── network_auxi.py │ │ │ │ └── pix2pix/ │ │ │ │ ├── LICENSE │ │ │ │ ├── __init__.py │ │ │ │ ├── models/ │ │ │ │ │ ├── __init__.py │ │ │ │ │ ├── base_model.py │ │ │ │ │ ├── base_model_hg.py │ │ │ │ │ ├── networks.py │ │ │ │ │ └── pix2pix4depth_model.py │ │ │ │ ├── options/ │ │ │ │ │ ├── __init__.py │ │ │ │ │ ├── base_options.py │ │ │ │ │ └── test_options.py │ │ │ │ └── util/ │ │ │ │ ├── __init__.py │ │ │ │ └── util.py │ │ │ ├── lineart.py │ │ │ ├── lineart_anime.py │ │ │ ├── marigold/ │ │ │ │ ├── __init__.py │ │ │ │ ├── marigold_pipeline.py │ │ │ │ └── util/ │ │ │ │ ├── batchsize.py │ │ │ │ ├── ensemble.py │ │ │ │ ├── image_util.py │ │ │ │ └── seed_all.py │ │ │ ├── mediapipe_face.py │ │ │ ├── mediapipe_face_util.py │ │ │ ├── midas/ │ │ │ │ ├── LICENSE │ │ │ │ ├── __init__.py │ │ │ │ ├── api.py │ │ │ │ ├── midas/ │ │ │ │ │ ├── __init__.py │ │ │ │ │ ├── base_model.py │ │ │ │ │ ├── blocks.py │ │ │ │ │ ├── dpt_depth.py │ │ │ │ │ ├── midas_net.py │ │ │ │ │ ├── midas_net_custom.py │ │ │ │ │ ├── transforms.py │ │ │ │ │ └── vit.py │ │ │ │ └── utils.py │ │ │ ├── mlsd/ │ │ │ │ ├── LICENSE │ │ │ │ ├── __init__.py │ │ │ │ ├── models/ │ │ │ │ │ ├── __init__.py │ │ │ │ │ ├── mbv2_mlsd_large.py │ │ │ │ │ └── mbv2_mlsd_tiny.py │ │ │ │ └── utils.py │ │ │ ├── normalbae/ │ │ │ │ ├── LICENSE │ │ │ │ ├── __init__.py │ │ │ │ └── nets/ │ │ │ │ ├── NNET.py │ │ │ │ ├── __init__.py │ │ │ │ ├── baseline.py │ │ │ │ └── submodules/ │ │ │ │ ├── __init__.py │ │ │ │ ├── decoder.py │ │ │ │ ├── efficientnet_repo/ │ │ │ │ │ ├── BENCHMARK.md │ │ │ │ │ ├── LICENSE │ │ │ │ │ ├── README.md │ │ │ │ │ ├── __init__.py │ │ │ │ │ ├── geffnet/ │ │ │ │ │ │ ├── __init__.py │ │ │ │ │ │ ├── activations/ │ │ │ │ │ │ │ ├── __init__.py │ │ │ │ │ │ │ ├── activations.py │ │ │ │ │ │ │ ├── activations_jit.py │ │ │ │ │ │ │ └── activations_me.py │ │ │ │ │ │ ├── config.py │ │ │ │ │ │ ├── conv2d_layers.py │ │ │ │ │ │ ├── efficientnet_builder.py │ │ │ │ │ │ ├── gen_efficientnet.py │ │ │ │ │ │ ├── helpers.py │ │ │ │ │ │ ├── mobilenetv3.py │ │ │ │ │ │ ├── model_factory.py │ │ │ │ │ │ └── version.py │ │ │ │ │ ├── hubconf.py │ │ │ │ │ ├── requirements.txt │ │ │ │ │ ├── setup.py │ │ │ │ │ ├── utils.py │ │ │ │ │ └── validate.py │ │ │ │ ├── encoder.py │ │ │ │ └── submodules.py │ │ │ ├── openpose/ │ │ │ │ ├── LICENSE │ │ │ │ ├── __init__.py │ │ │ │ ├── body.py │ │ │ │ ├── face.py │ │ │ │ ├── hand.py │ │ │ │ ├── model.py │ │ │ │ └── util.py │ │ │ ├── pidi.py │ │ │ ├── pidi_model.py │ │ │ ├── segment_anything/ │ │ │ │ ├── __init__.py │ │ │ │ ├── automatic_mask_generator.py │ │ │ │ ├── build_sam.py │ │ │ │ ├── modeling/ │ │ │ │ │ ├── __init__.py │ │ │ │ │ ├── common.py │ │ │ │ │ ├── image_encoder.py │ │ │ │ │ ├── mask_decoder.py │ │ │ │ │ ├── prompt_encoder.py │ │ │ │ │ ├── sam.py │ │ │ │ │ ├── tiny_vit_sam.py │ │ │ │ │ └── transformer.py │ │ │ │ ├── predictor.py │ │ │ │ └── utils/ │ │ │ │ ├── __init__.py │ │ │ │ ├── amg.py │ │ │ │ ├── onnx.py │ │ │ │ └── transforms.py │ │ │ ├── shuffle.py │ │ │ └── zoe/ │ │ │ ├── LICENSE │ │ │ ├── __init__.py │ │ │ └── zoedepth/ │ │ │ ├── __init__.py │ │ │ ├── models/ │ │ │ │ ├── __init__.py │ │ │ │ ├── base_models/ │ │ │ │ │ ├── __init__.py │ │ │ │ │ ├── midas.py │ │ │ │ │ └── midas_repo/ │ │ │ │ │ ├── LICENSE │ │ │ │ │ ├── README.md │ │ │ │ │ ├── __init__.py │ │ │ │ │ ├── hubconf.py │ │ │ │ │ └── midas/ │ │ │ │ │ ├── __init__.py │ │ │ │ │ ├── backbones/ │ │ │ │ │ │ ├── __init__.py │ │ │ │ │ │ ├── beit.py │ │ │ │ │ │ ├── levit.py │ │ │ │ │ │ ├── next_vit.py │ │ │ │ │ │ ├── swin.py │ │ │ │ │ │ ├── swin2.py │ │ │ │ │ │ ├── swin_common.py │ │ │ │ │ │ ├── utils.py │ │ │ │ │ │ └── vit.py │ │ │ │ │ ├── base_model.py │ │ │ │ │ ├── blocks.py │ │ │ │ │ ├── dpt_depth.py │ │ │ │ │ ├── midas_net.py │ │ │ │ │ ├── midas_net_custom.py │ │ │ │ │ ├── model_loader.py │ │ │ │ │ └── transforms.py │ │ │ │ ├── builder.py │ │ │ │ ├── depth_model.py │ │ │ │ ├── layers/ │ │ │ │ │ ├── __init__.py │ │ │ │ │ ├── attractor.py │ │ │ │ │ ├── dist_layers.py │ │ │ │ │ ├── localbins_layers.py │ │ │ │ │ └── patch_transformer.py │ │ │ │ ├── model_io.py │ │ │ │ ├── zoedepth/ │ │ │ │ │ ├── __init__.py │ │ │ │ │ ├── config_zoedepth.json │ │ │ │ │ ├── config_zoedepth_kitti.json │ │ │ │ │ └── zoedepth_v1.py │ │ │ │ └── zoedepth_nk/ │ │ │ │ ├── __init__.py │ │ │ │ ├── config_zoedepth_nk.json │ │ │ │ └── zoedepth_nk_v1.py │ │ │ └── utils/ │ │ │ ├── __init__.py │ │ │ ├── arg_utils.py │ │ │ ├── config.py │ │ │ └── easydict/ │ │ │ └── __init__.py │ │ ├── processor.py │ │ ├── processors.py │ │ ├── run.py │ │ ├── test.py │ │ ├── tile.py │ │ ├── unit.py │ │ ├── units/ │ │ │ ├── controlnet.py │ │ │ ├── detect.py │ │ │ ├── lite.py │ │ │ ├── lite_model.py │ │ │ ├── reference.py │ │ │ ├── t2iadapter.py │ │ │ ├── xs.py │ │ │ ├── xs_model.py │ │ │ └── xs_pipe.py │ │ └── util.py │ ├── detailer.py │ ├── devices.py │ ├── devices_mac.py │ ├── dml/ │ │ ├── Generator.py │ │ ├── __init__.py │ │ ├── amp/ │ │ │ ├── __init__.py │ │ │ └── autocast_mode.py │ │ ├── backend.py │ │ ├── device.py │ │ ├── device_properties.py │ │ ├── hijack/ │ │ │ ├── __init__.py │ │ │ ├── realesrgan_model.py │ │ │ ├── tomesd.py │ │ │ ├── torch.py │ │ │ ├── transformers.py │ │ │ └── utils.py │ │ ├── memory.py │ │ ├── memory_amd/ │ │ │ ├── __init__.py │ │ │ └── driver/ │ │ │ ├── atiadlxx.py │ │ │ ├── atiadlxx_apis.py │ │ │ ├── atiadlxx_defines.py │ │ │ └── atiadlxx_structures.py │ │ ├── pdh/ │ │ │ ├── __init__.py │ │ │ ├── apis.py │ │ │ ├── defines.py │ │ │ ├── errors.py │ │ │ ├── msvcrt.py │ │ │ └── structures.py │ │ └── utils.py │ ├── errorlimiter.py │ ├── errors.py │ ├── extensions.py │ ├── extra_networks.py │ ├── extras.py │ ├── face/ │ │ ├── __init__.py │ │ ├── faceid.py │ │ ├── faceswap.py │ │ ├── insightface.py │ │ ├── instantid.py │ │ ├── instantid_model.py │ │ ├── photomaker.py │ │ ├── photomaker_model_v1.py │ │ ├── photomaker_model_v2.py │ │ ├── photomaker_pipeline.py │ │ ├── reswapper.py │ │ ├── reswapper_model.py │ │ └── reswapper_utils.py │ ├── face_restoration.py │ ├── facelib/ │ │ ├── __init__.py │ │ ├── detection/ │ │ │ ├── __init__.py │ │ │ ├── align_trans.py │ │ │ ├── matlab_cp2tform.py │ │ │ ├── retinaface/ │ │ │ │ ├── retinaface.py │ │ │ │ ├── retinaface_net.py │ │ │ │ └── retinaface_utils.py │ │ │ └── yolov5face/ │ │ │ ├── __init__.py │ │ │ ├── face_detector.py │ │ │ ├── models/ │ │ │ │ ├── __init__.py │ │ │ │ ├── common.py │ │ │ │ ├── experimental.py │ │ │ │ ├── yolo.py │ │ │ │ ├── yolov5l.yaml │ │ │ │ └── yolov5n.yaml │ │ │ └── utils/ │ │ │ ├── __init__.py │ │ │ ├── autoanchor.py │ │ │ ├── datasets.py │ │ │ ├── extract_ckpt.py │ │ │ ├── general.py │ │ │ └── torch_utils.py │ │ ├── parsing/ │ │ │ ├── __init__.py │ │ │ ├── bisenet.py │ │ │ ├── parsenet.py │ │ │ └── resnet.py │ │ └── utils/ │ │ ├── __init__.py │ │ ├── face_restoration_helper.py │ │ ├── face_utils.py │ │ └── misc.py │ ├── files_cache.py │ ├── flash_attn_triton_amd/ │ │ ├── __init__.py │ │ ├── fwd_prefill.py │ │ ├── interface_fa.py │ │ └── utils.py │ ├── framepack/ │ │ ├── create-video.py │ │ ├── encode-video.py │ │ ├── framepack_api.py │ │ ├── framepack_hijack.py │ │ ├── framepack_install.py │ │ ├── framepack_load.py │ │ ├── framepack_ui.py │ │ ├── framepack_vae.py │ │ ├── framepack_worker.py │ │ ├── framepack_wrappers.py │ │ └── pipeline/ │ │ ├── bucket_tools.py │ │ ├── clip_vision.py │ │ ├── dit_common.py │ │ ├── hunyuan.py │ │ ├── hunyuan_video_packed.py │ │ ├── k_diffusion_hunyuan.py │ │ ├── thread_utils.py │ │ ├── uni_pc_fm.py │ │ ├── utils.py │ │ └── wrapper.py │ ├── generation_parameters_copypaste.py │ ├── ggml/ │ │ ├── __init__.py │ │ ├── gguf_tensor.py │ │ └── gguf_utils.py │ ├── gr_hijack.py │ ├── gr_tempdir.py │ ├── hashes.py │ ├── hidiffusion/ │ │ ├── __init__.py │ │ ├── hidiffusion.py │ │ ├── hidiffusion_controlnet.py │ │ └── utils.py │ ├── history.py │ ├── images.py │ ├── images_grid.py │ ├── images_namegen.py │ ├── images_resize.py │ ├── img2img.py │ ├── infotext.py │ ├── infotext_utils.py │ ├── intel/ │ │ ├── ipex/ │ │ │ ├── __init__.py │ │ │ ├── attention.py │ │ │ ├── device_prop.py │ │ │ ├── diffusers.py │ │ │ └── hijacks.py │ │ └── openvino/ │ │ └── __init__.py │ ├── interrogate/ │ │ ├── deepbooru.py │ │ ├── deepbooru_model.py │ │ ├── deepseek.py │ │ ├── interrogate.py │ │ ├── joycaption.py │ │ ├── joytag.py │ │ ├── moondream3.py │ │ ├── openclip.py │ │ ├── tagger.py │ │ ├── vqa.py │ │ ├── vqa_detection.py │ │ └── waifudiffusion.py │ ├── ipadapter.py │ ├── json_helpers.py │ ├── lama.py │ ├── linfusion/ │ │ ├── __init__.py │ │ ├── attention.py │ │ └── linfusion.py │ ├── loader.py │ ├── localization.py │ ├── lora/ │ │ ├── extra_networks_lora.py │ │ ├── lora_apply.py │ │ ├── lora_common.py │ │ ├── lora_convert.py │ │ ├── lora_diffusers.py │ │ ├── lora_extract.py │ │ ├── lora_load.py │ │ ├── lora_nunchaku.py │ │ ├── lora_overrides.py │ │ ├── lora_timers.py │ │ ├── lyco_helpers.py │ │ ├── network.py │ │ ├── network_full.py │ │ ├── network_glora.py │ │ ├── network_hada.py │ │ ├── network_ia3.py │ │ ├── network_lokr.py │ │ ├── network_lora.py │ │ ├── network_norm.py │ │ ├── network_oft.py │ │ └── networks.py │ ├── ltx/ │ │ ├── ltx_process.py │ │ ├── ltx_ui.py │ │ └── ltx_util.py │ ├── masking.py │ ├── memmon.py │ ├── memstats.py │ ├── merging/ │ │ ├── convert_sdxl.py │ │ ├── merge.py │ │ ├── merge_PermSpec.py │ │ ├── merge_PermSpec_SDXL.py │ │ ├── merge_methods.py │ │ ├── merge_presets.py │ │ ├── merge_rebasin.py │ │ ├── merge_utils.py │ │ └── modules_sdxl.py │ ├── migrate.py │ ├── mit_nunchaku.py │ ├── model_quant.py │ ├── model_te.py │ ├── model_tools.py │ ├── modeldata.py │ ├── modelloader.py │ ├── models_hf.py │ ├── modelstats.py │ ├── modular.py │ ├── modular_guiders.py │ ├── olive_script.py │ ├── onnx_impl/ │ │ ├── __init__.py │ │ ├── execution_providers.py │ │ ├── pipelines/ │ │ │ ├── __init__.py │ │ │ ├── onnx_stable_diffusion_img2img_pipeline.py │ │ │ ├── onnx_stable_diffusion_inpaint_pipeline.py │ │ │ ├── onnx_stable_diffusion_pipeline.py │ │ │ ├── onnx_stable_diffusion_upscale_pipeline.py │ │ │ ├── onnx_stable_diffusion_xl_img2img_pipeline.py │ │ │ ├── onnx_stable_diffusion_xl_pipeline.py │ │ │ └── utils.py │ │ ├── ui.py │ │ └── utils.py │ ├── options.py │ ├── options_handler.py │ ├── pag/ │ │ ├── __init__.py │ │ ├── pipe_sd.py │ │ └── pipe_sdxl.py │ ├── para_attention.py │ ├── patches.py │ ├── paths.py │ ├── paths_internal.py │ ├── postprocess/ │ │ ├── aurasr_arch.py │ │ ├── aurasr_model.py │ │ ├── codeformer_arch.py │ │ ├── codeformer_model.py │ │ ├── dcc.py │ │ ├── esrgan_model.py │ │ ├── esrgan_model_arch.py │ │ ├── gfpgan_model.py │ │ ├── hqx.py │ │ ├── icbi.py │ │ ├── pixelart.py │ │ ├── realesrgan_model.py │ │ ├── realesrgan_model_arch.py │ │ ├── restorer.py │ │ ├── scunet_model.py │ │ ├── scunet_model_arch.py │ │ ├── sdupscaler_model.py │ │ ├── seedvr_model.py │ │ ├── swinir_model.py │ │ ├── swinir_model_arch.py │ │ ├── swinir_model_arch_v2.py │ │ ├── vqgan_arch.py │ │ └── yolo.py │ ├── postprocessing.py │ ├── processing.py │ ├── processing_args.py │ ├── processing_callbacks.py │ ├── processing_class.py │ ├── processing_correction.py │ ├── processing_diffusers.py │ ├── processing_helpers.py │ ├── processing_info.py │ ├── processing_prompt.py │ ├── processing_vae.py │ ├── progress.py │ ├── prompt_parser.py │ ├── prompt_parser_diffusers.py │ ├── prompt_parser_xhinker.py │ ├── ras/ │ │ ├── __init__.py │ │ ├── ras_attention.py │ │ ├── ras_forward.py │ │ ├── ras_manager.py │ │ └── ras_scheduler.py │ ├── res4lyf/ │ │ ├── __init__.py │ │ ├── abnorsett_scheduler.py │ │ ├── bong_tangent_scheduler.py │ │ ├── common_sigma_scheduler.py │ │ ├── deis_scheduler_alt.py │ │ ├── etdrk_scheduler.py │ │ ├── gauss_legendre_scheduler.py │ │ ├── langevin_dynamics_scheduler.py │ │ ├── lawson_scheduler.py │ │ ├── linear_rk_scheduler.py │ │ ├── lobatto_scheduler.py │ │ ├── pec_scheduler.py │ │ ├── phi_functions.py │ │ ├── radau_iia_scheduler.py │ │ ├── res_multistep_scheduler.py │ │ ├── res_multistep_sde_scheduler.py │ │ ├── res_singlestep_scheduler.py │ │ ├── res_singlestep_sde_scheduler.py │ │ ├── res_unified_scheduler.py │ │ ├── riemannian_flow_scheduler.py │ │ ├── rungekutta_44s_scheduler.py │ │ ├── rungekutta_57s_scheduler.py │ │ ├── rungekutta_67s_scheduler.py │ │ ├── scheduler_utils.py │ │ ├── simple_exponential_scheduler.py │ │ ├── specialized_rk_scheduler.py │ │ └── variants.py │ ├── rife/ │ │ ├── __init__.py │ │ ├── loss.py │ │ ├── model_ifnet.py │ │ ├── model_rife.py │ │ ├── refine.py │ │ ├── ssim.py │ │ └── warplayer.py │ ├── rocm.py │ ├── rocm_triton_windows.py │ ├── safe.py │ ├── schedulers/ │ │ ├── perflow/ │ │ │ ├── __init__.py │ │ │ ├── pfode_solver.py │ │ │ ├── scheduler_perflow.py │ │ │ └── utils_perflow.py │ │ ├── scheduler_bdia.py │ │ ├── scheduler_dc.py │ │ ├── scheduler_dpm_flowmatch.py │ │ ├── scheduler_flashflow.py │ │ ├── scheduler_tcd.py │ │ ├── scheduler_tdd.py │ │ ├── scheduler_ufogen.py │ │ ├── scheduler_unipc_flowmatch.py │ │ └── scheduler_vdm.py │ ├── script_callbacks.py │ ├── script_loading.py │ ├── scripts.py │ ├── scripts_auto_postprocessing.py │ ├── scripts_manager.py │ ├── scripts_postprocessing.py │ ├── sd_checkpoint.py │ ├── sd_detect.py │ ├── sd_hijack.py │ ├── sd_hijack_accelerate.py │ ├── sd_hijack_dynamic_atten.py │ ├── sd_hijack_freeu.py │ ├── sd_hijack_hypertile.py │ ├── sd_hijack_safetensors.py │ ├── sd_hijack_te.py │ ├── sd_hijack_utils.py │ ├── sd_hijack_vae.py │ ├── sd_models.py │ ├── sd_models_compile.py │ ├── sd_models_utils.py │ ├── sd_modules.py │ ├── sd_offload.py │ ├── sd_samplers.py │ ├── sd_samplers_common.py │ ├── sd_samplers_diffusers.py │ ├── sd_te_remote.py │ ├── sd_unet.py │ ├── sd_vae.py │ ├── sdnq/ │ │ ├── __init__.py │ │ ├── common.py │ │ ├── dequantizer.py │ │ ├── file_loader.py │ │ ├── forward.py │ │ ├── layers/ │ │ │ ├── __init__.py │ │ │ ├── conv/ │ │ │ │ ├── conv_fp16.py │ │ │ │ ├── conv_fp8.py │ │ │ │ ├── conv_fp8_tensorwise.py │ │ │ │ ├── conv_int8.py │ │ │ │ └── forward.py │ │ │ └── linear/ │ │ │ ├── forward.py │ │ │ ├── linear_fp16.py │ │ │ ├── linear_fp8.py │ │ │ ├── linear_fp8_tensorwise.py │ │ │ └── linear_int8.py │ │ ├── loader.py │ │ ├── packed_float.py │ │ ├── packed_int.py │ │ ├── quantizer.py │ │ └── triton_mm.py │ ├── seedvr/ │ │ ├── __init__.py │ │ ├── config_3b.yaml │ │ ├── config_7b.yaml │ │ ├── rotary_embedding.py │ │ ├── src/ │ │ │ ├── __init__.py │ │ │ ├── common/ │ │ │ │ ├── __init__.py │ │ │ │ ├── cache.py │ │ │ │ ├── config.py │ │ │ │ ├── decorators.py │ │ │ │ ├── diffusion/ │ │ │ │ │ ├── __init__.py │ │ │ │ │ ├── config.py │ │ │ │ │ ├── samplers/ │ │ │ │ │ │ ├── base.py │ │ │ │ │ │ └── euler.py │ │ │ │ │ ├── schedules/ │ │ │ │ │ │ ├── base.py │ │ │ │ │ │ └── lerp.py │ │ │ │ │ ├── timesteps/ │ │ │ │ │ │ ├── base.py │ │ │ │ │ │ └── sampling/ │ │ │ │ │ │ └── trailing.py │ │ │ │ │ ├── types.py │ │ │ │ │ └── utils.py │ │ │ │ ├── distributed/ │ │ │ │ │ ├── __init__.py │ │ │ │ │ ├── advanced.py │ │ │ │ │ ├── basic.py │ │ │ │ │ ├── meta_init_utils.py │ │ │ │ │ └── ops.py │ │ │ │ ├── half_precision_fixes.py │ │ │ │ ├── logger.py │ │ │ │ ├── partition.py │ │ │ │ └── seed.py │ │ │ ├── core/ │ │ │ │ ├── __init__.py │ │ │ │ ├── generation.py │ │ │ │ ├── infer.py │ │ │ │ └── model_manager.py │ │ │ ├── data/ │ │ │ │ └── image/ │ │ │ │ └── transforms/ │ │ │ │ ├── area_resize.py │ │ │ │ ├── divisible_crop.py │ │ │ │ ├── na_resize.py │ │ │ │ └── side_resize.py │ │ │ ├── models/ │ │ │ │ ├── dit/ │ │ │ │ │ ├── attention.py │ │ │ │ │ ├── blocks/ │ │ │ │ │ │ ├── __init__.py │ │ │ │ │ │ └── mmdit_window_block.py │ │ │ │ │ ├── embedding.py │ │ │ │ │ ├── mlp.py │ │ │ │ │ ├── mm.py │ │ │ │ │ ├── modulation.py │ │ │ │ │ ├── na.py │ │ │ │ │ ├── nablocks/ │ │ │ │ │ │ ├── __init__.py │ │ │ │ │ │ └── mmsr_block.py │ │ │ │ │ ├── nadit.py │ │ │ │ │ ├── normalization.py │ │ │ │ │ ├── patch.py │ │ │ │ │ ├── rope.py │ │ │ │ │ └── window.py │ │ │ │ ├── dit_v2/ │ │ │ │ │ ├── attention.py │ │ │ │ │ ├── embedding.py │ │ │ │ │ ├── mlp.py │ │ │ │ │ ├── mm.py │ │ │ │ │ ├── modulation.py │ │ │ │ │ ├── na.py │ │ │ │ │ ├── nablocks/ │ │ │ │ │ │ ├── __init__.py │ │ │ │ │ │ ├── attention/ │ │ │ │ │ │ │ ├── __init__.py │ │ │ │ │ │ │ └── mmattn.py │ │ │ │ │ │ └── mmsr_block.py │ │ │ │ │ ├── nadit.py │ │ │ │ │ ├── normalization.py │ │ │ │ │ ├── patch/ │ │ │ │ │ │ ├── __init__.py │ │ │ │ │ │ └── patch_v1.py │ │ │ │ │ ├── rope.py │ │ │ │ │ └── window.py │ │ │ │ └── video_vae_v3/ │ │ │ │ ├── modules/ │ │ │ │ │ ├── attn_video_vae.py │ │ │ │ │ ├── causal_inflation_lib.py │ │ │ │ │ ├── context_parallel_lib.py │ │ │ │ │ ├── global_config.py │ │ │ │ │ ├── inflated_layers.py │ │ │ │ │ ├── inflated_lib.py │ │ │ │ │ ├── types.py │ │ │ │ │ └── video_vae.py.old │ │ │ │ └── s8_c16_t4_inflation_sd3.yaml │ │ │ ├── optimization/ │ │ │ │ ├── __init__.py │ │ │ │ ├── memory_manager.py │ │ │ │ └── performance.py │ │ │ └── utils/ │ │ │ ├── __init__.py │ │ │ └── color_fix.py │ │ └── test.py │ ├── server.py │ ├── shared.py │ ├── shared_defaults.py │ ├── shared_helpers.py │ ├── shared_items.py │ ├── shared_legacy.py │ ├── shared_state.py │ ├── styles.py │ ├── sub_quadratic_attention.py │ ├── taesd/ │ │ ├── hybrid_small.py │ │ ├── taehv.py │ │ ├── taem1.py │ │ └── taesd.py │ ├── teacache/ │ │ ├── __init__.py │ │ ├── teacache_chroma.py │ │ ├── teacache_cogvideox.py │ │ ├── teacache_flux.py │ │ ├── teacache_hidream.py │ │ ├── teacache_ltx.py │ │ ├── teacache_lumina2.py │ │ └── teacache_mochi.py │ ├── textual_inversion.py │ ├── theme.py │ ├── timer.py │ ├── todo/ │ │ ├── __init__.py │ │ ├── todo_merge.py │ │ └── todo_utils.py │ ├── token_merge.py │ ├── transformer_cache.py │ ├── txt2img.py │ ├── ui.py │ ├── ui_caption.py │ ├── ui_common.py │ ├── ui_components.py │ ├── ui_control.py │ ├── ui_control_elements.py │ ├── ui_control_helpers.py │ ├── ui_docs.py │ ├── ui_extensions.py │ ├── ui_extra_networks.py │ ├── ui_extra_networks_checkpoints.py │ ├── ui_extra_networks_history.py │ ├── ui_extra_networks_lora.py │ ├── ui_extra_networks_styles.py │ ├── ui_extra_networks_textual_inversion.py │ ├── ui_extra_networks_vae.py │ ├── ui_extra_networks_wildcards.py │ ├── ui_gallery.py │ ├── ui_guidance.py │ ├── ui_history.py │ ├── ui_img2img.py │ ├── ui_javascript.py │ ├── ui_loadsave.py │ ├── ui_models.py │ ├── ui_models_load.py │ ├── ui_postprocessing.py │ ├── ui_prompt_styles.py │ ├── ui_sections.py │ ├── ui_settings.py │ ├── ui_symbols.py │ ├── ui_txt2img.py │ ├── ui_video.py │ ├── ui_video_vlm.py │ ├── update.py │ ├── upscaler.py │ ├── upscaler_algo.py │ ├── upscaler_simple.py │ ├── upscaler_spandrel.py │ ├── upscaler_vae.py │ ├── vae/ │ │ ├── sd_vae_approx.py │ │ ├── sd_vae_fal.py │ │ ├── sd_vae_natten.py │ │ ├── sd_vae_ostris.py │ │ ├── sd_vae_remote.py │ │ ├── sd_vae_repa.py │ │ ├── sd_vae_stablecascade.py │ │ └── sd_vae_taesd.py │ ├── video.py │ ├── video_models/ │ │ ├── google_veo.py │ │ ├── models_def.py │ │ ├── video_cache.py │ │ ├── video_load.py │ │ ├── video_overrides.py │ │ ├── video_prompt.py │ │ ├── video_run.py │ │ ├── video_save.py │ │ ├── video_ui.py │ │ ├── video_utils.py │ │ └── video_vae.py │ ├── zluda.py │ └── zluda_installer.py ├── motd ├── package.json ├── pipelines/ │ ├── bria/ │ │ ├── __init__.py │ │ ├── bria_pipeline.py │ │ ├── bria_utils.py │ │ ├── transformer_block.py │ │ └── transformer_bria.py │ ├── f_lite/ │ │ ├── __init__.py │ │ ├── f_lite.model.py │ │ ├── model.py │ │ └── pipeline.py │ ├── flex2/ │ │ └── __init__.py │ ├── flux/ │ │ ├── flux_bnb.py │ │ ├── flux_legacy_loader.py │ │ ├── flux_lora.py │ │ ├── flux_nf4.py │ │ ├── flux_nunchaku.py │ │ └── flux_quanto.py │ ├── generic.py │ ├── hdm/ │ │ ├── __init__.py │ │ ├── hdm/ │ │ │ ├── __init__.py │ │ │ ├── data/ │ │ │ │ ├── __init__.py │ │ │ │ ├── base.py │ │ │ │ └── kohya.py │ │ │ ├── loader.py │ │ │ ├── modules/ │ │ │ │ ├── base.py │ │ │ │ ├── rope.py │ │ │ │ ├── text_encoders.py │ │ │ │ ├── unet_patch.py │ │ │ │ └── xut.py │ │ │ ├── pipeline.py │ │ │ ├── trainer/ │ │ │ │ ├── __init__.py │ │ │ │ ├── callbacks.py │ │ │ │ ├── diffusion.py │ │ │ │ └── trainer.py │ │ │ └── utils/ │ │ │ ├── __init__.py │ │ │ └── config.py │ │ └── xut/ │ │ ├── __init__.py │ │ ├── env.py │ │ ├── modules/ │ │ │ ├── __init__.py │ │ │ ├── adaln.py │ │ │ ├── attention.py │ │ │ ├── axial_rope.py │ │ │ ├── layers.py │ │ │ ├── norm.py │ │ │ ├── patch.py │ │ │ ├── time_emb.py │ │ │ └── transformer.py │ │ ├── utils/ │ │ │ └── __init__.py │ │ └── xut.py │ ├── hidream/ │ │ └── pipeline_hidream_image_editing.py │ ├── meissonic/ │ │ ├── __init__.py │ │ ├── pipeline.py │ │ ├── pipeline_img2img.py │ │ ├── pipeline_inpaint.py │ │ ├── scheduler.py │ │ ├── test.py │ │ └── transformer.py │ ├── model_anima.py │ ├── model_auraflow.py │ ├── model_bria.py │ ├── model_chroma.py │ ├── model_chrono.py │ ├── model_cogview.py │ ├── model_cosmos.py │ ├── model_flex.py │ ├── model_flite.py │ ├── model_flux.py │ ├── model_flux2.py │ ├── model_flux2_klein.py │ ├── model_glm.py │ ├── model_google.py │ ├── model_hdm.py │ ├── model_hidream.py │ ├── model_hunyuandit.py │ ├── model_hyimage.py │ ├── model_kandinsky.py │ ├── model_kolors.py │ ├── model_longcat.py │ ├── model_lumina.py │ ├── model_meissonic.py │ ├── model_nextstep.py │ ├── model_omnigen.py │ ├── model_ovis.py │ ├── model_pixart.py │ ├── model_prx.py │ ├── model_qwen.py │ ├── model_sana.py │ ├── model_sd3.py │ ├── model_stablecascade.py │ ├── model_wanai.py │ ├── model_xomni.py │ ├── model_z_image.py │ ├── omnigen2/ │ │ ├── __init__.py │ │ ├── image_processor.py │ │ ├── models/ │ │ │ ├── attention_processor.py │ │ │ ├── embeddings.py │ │ │ └── transformers/ │ │ │ ├── __init__.py │ │ │ ├── block_lumina2.py │ │ │ ├── repo.py │ │ │ └── transformer_omnigen2.py │ │ └── pipeline_omnigen2.py │ ├── qwen/ │ │ ├── __init__.py │ │ ├── qwen_nunchaku.py │ │ └── qwen_pruning.py │ ├── segmoe/ │ │ └── segmoe_model.py │ ├── wan/ │ │ └── wan_image.py │ └── xomni/ │ ├── __init__.py │ ├── configuration_xomni.py │ ├── modeling_siglip_flux.py │ ├── modeling_siglip_tokenizer.py │ ├── modeling_vit.py │ └── modeling_xomni.py ├── requirements.txt ├── scripts/ │ ├── animatediff.py │ ├── apg.py │ ├── automatic_color_inpaint.py │ ├── blipdiffusion.py │ ├── consistory/ │ │ ├── __init__.py │ │ ├── attention_processor.py │ │ ├── consistory_pipeline.py │ │ ├── consistory_run.py │ │ ├── consistory_unet_sdxl.py │ │ ├── consistory_utils.py │ │ └── utils/ │ │ ├── general_utils.py │ │ └── ptp_utils.py │ ├── consistory_ext.py │ ├── ctrlx/ │ │ ├── __init__.py │ │ ├── features.py │ │ ├── media.py │ │ ├── sdxl.py │ │ └── utils.py │ ├── ctrlx_ext.py │ ├── custom_code.py │ ├── daam/ │ │ ├── __init__.py │ │ ├── evaluate.py │ │ ├── experiment.py │ │ ├── heatmap.py │ │ ├── hook.py │ │ ├── trace.py │ │ └── utils.py │ ├── daam_ext.py │ ├── demofusion.py │ ├── differential_diffusion.py │ ├── example.py │ ├── flux_enhance.py │ ├── flux_tools.py │ ├── freescale/ │ │ ├── __init__.py │ │ ├── free_lunch_utils.py │ │ ├── freescale_pipeline.py │ │ ├── freescale_pipeline_img2img.py │ │ └── scale_attention.py │ ├── freescale_ext.py │ ├── hdr.py │ ├── image2video.py │ ├── infiniteyou/ │ │ ├── __init__.py │ │ ├── pipeline_flux_infusenet.py │ │ ├── pipeline_infu_flux.py │ │ └── resampler.py │ ├── infiniteyou_ext.py │ ├── init_latents.py │ ├── instantir/ │ │ ├── __init__.py │ │ ├── aggregator.py │ │ ├── ip_adapter/ │ │ │ ├── __init__.py │ │ │ ├── attention_processor.py │ │ │ ├── ip_adapter.py │ │ │ ├── resampler.py │ │ │ └── utils.py │ │ ├── lcm_single_step_scheduler.py │ │ └── sdxl_instantir.py │ ├── instantir_ext.py │ ├── ipadapter.py │ ├── ipinstruct.py │ ├── kohya_hires_fix.py │ ├── layerdiffuse/ │ │ ├── __init__.py │ │ ├── layerdiffuse_loader.py │ │ └── layerdiffuse_model.py │ ├── layerdiffuse_ext.py │ ├── lbm/ │ │ ├── __init__.py │ │ ├── base/ │ │ │ ├── __init__.py │ │ │ ├── base_model.py │ │ │ └── model_config.py │ │ ├── config.py │ │ ├── embedders/ │ │ │ ├── __init__.py │ │ │ ├── base/ │ │ │ │ ├── __init__.py │ │ │ │ ├── base_conditioner.py │ │ │ │ └── base_conditioner_config.py │ │ │ ├── conditioners_wrapper.py │ │ │ └── latents_concat/ │ │ │ ├── __init__.py │ │ │ ├── latents_concat_embedder_config.py │ │ │ └── latents_concat_embedder_model.py │ │ ├── extract.py │ │ ├── inference.py │ │ ├── lbm/ │ │ │ ├── __init__.py │ │ │ ├── lbm_config.py │ │ │ └── lbm_model.py │ │ ├── tiler.py │ │ ├── unets/ │ │ │ ├── __init__.py │ │ │ └── unet.py │ │ ├── utils.py │ │ └── vae/ │ │ ├── __init__.py │ │ ├── autoencoderKL.py │ │ └── autoencoderKL_config.py │ ├── lbm_ext.py │ ├── ledits.py │ ├── loopback.py │ ├── lut.py │ ├── mixture_of_diffusers.py │ ├── mixture_tiling.py │ ├── mod/ │ │ └── __init__.py │ ├── mulan.py │ ├── nudenet/ │ │ ├── bannedwords.py │ │ ├── imageguard.py │ │ ├── langdetect.py │ │ └── nudenet.py │ ├── nudenet_ext.py │ ├── outpainting_mk_2.py │ ├── pixelsmith/ │ │ ├── __init__.py │ │ ├── autoencoder_kl.py │ │ ├── pixelsmith_pipeline.py │ │ └── vae.py │ ├── pixelsmith_ext.py │ ├── poor_mans_outpainting.py │ ├── postprocessing_codeformer.py │ ├── postprocessing_gfpgan.py │ ├── postprocessing_pixelart.py │ ├── postprocessing_upscale.py │ ├── postprocessing_video.py │ ├── prompt_enhance.py │ ├── prompt_matrix.py │ ├── prompts_from_file.py │ ├── pulid/ │ │ ├── __init__.py │ │ ├── attention_processor.py │ │ ├── encoders_transformer.py │ │ ├── eva_clip/ │ │ │ ├── __init__.py │ │ │ ├── constants.py │ │ │ ├── eva_vit_model.py │ │ │ ├── factory.py │ │ │ ├── hf_configs.py │ │ │ ├── hf_model.py │ │ │ ├── loss.py │ │ │ ├── model.py │ │ │ ├── model_configs/ │ │ │ │ ├── EVA01-CLIP-B-16.json │ │ │ │ ├── EVA01-CLIP-g-14-plus.json │ │ │ │ ├── EVA01-CLIP-g-14.json │ │ │ │ ├── EVA02-CLIP-B-16.json │ │ │ │ ├── EVA02-CLIP-L-14-336.json │ │ │ │ ├── EVA02-CLIP-L-14.json │ │ │ │ ├── EVA02-CLIP-bigE-14-plus.json │ │ │ │ └── EVA02-CLIP-bigE-14.json │ │ │ ├── modified_resnet.py │ │ │ ├── openai.py │ │ │ ├── pretrained.py │ │ │ ├── rope.py │ │ │ ├── timm_model.py │ │ │ ├── tokenizer.py │ │ │ ├── transform.py │ │ │ ├── transformer.py │ │ │ └── utils.py │ │ ├── pulid_flux.py │ │ ├── pulid_sampling.py │ │ ├── pulid_sdxl.py │ │ └── pulid_utils.py │ ├── pulid_ext.py │ ├── regional_prompting.py │ ├── resadapter.py │ ├── sd_upscale.py │ ├── skip_layer_guidance.py │ ├── softfill.py │ ├── stablevideodiffusion.py │ ├── style_aligned/ │ │ ├── inversion.py │ │ └── sa_handler.py │ ├── style_aligned_ext.py │ ├── t_gate.py │ ├── text2video.py │ ├── tiling.py │ ├── xadapter/ │ │ ├── adapter.py │ │ ├── pipeline_sd_xl_adapter.py │ │ ├── pipeline_sd_xl_adapter_controlnet.py │ │ ├── pipeline_sd_xl_adapter_controlnet_img2img.py │ │ ├── unet_adapter.py │ │ ├── utils.py │ │ └── xadapter_hijacks.py │ ├── xadapter_ext.py │ ├── xyz/ │ │ ├── xyz_grid_classes.py │ │ ├── xyz_grid_draw.py │ │ └── xyz_grid_shared.py │ ├── xyz_grid.py │ └── xyz_grid_on.py ├── webui.bat ├── webui.ps1 ├── webui.py └── webui.sh
Showing preview only (812K chars total). Download the full file or copy to clipboard to get everything.
SYMBOL INDEX (9937 symbols across 1009 files)
FILE: cli/api-checkpoint.py
function auth (line 21) | def auth():
function get (line 27) | def get(endpoint: str, dct: dict = None):
FILE: cli/api-control.py
function auth (line 27) | def auth():
function post (line 33) | def post(endpoint: str, dct: dict = None):
function encode (line 41) | def encode(f):
function generate (line 53) | def generate(args): # pylint: disable=redefined-outer-name
FILE: cli/api-detect.py
function auth (line 20) | def auth():
function post (line 26) | def post(endpoint: str, dct: dict = None):
function encode (line 34) | def encode(f):
function detect (line 46) | def detect(args): # pylint: disable=redefined-outer-name
FILE: cli/api-enhance.py
function auth (line 21) | def auth():
function post (line 27) | def post(endpoint: str, dct: dict = None):
function encode (line 35) | def encode(f):
function enhance (line 51) | def enhance(args): # pylint: disable=redefined-outer-name
FILE: cli/api-faceid.py
function auth (line 26) | def auth():
function post (line 32) | def post(endpoint: str, dct: dict = None):
function encode (line 40) | def encode(f):
function generate (line 52) | def generate(args): # pylint: disable=redefined-outer-name
FILE: cli/api-grid.py
class Options (line 16) | class Options: # set default parameters here
class Server (line 30) | class Server: # set server and save options here or use command line arg...
function post (line 49) | def post():
function generate (line 61) | def generate(x: int, y: int): # pylint: disable=redefined-outer-name
function merge (line 82) | def merge(images: list[Image.Image], horizontal: bool, labels: list[str]...
function grid (line 102) | def grid(x_file: str, y_file: str):
FILE: cli/api-img2img.py
function auth (line 26) | def auth():
function post (line 32) | def post(endpoint: str, dct: dict = None):
function encode (line 40) | def encode(f):
function generate (line 52) | def generate(args): # pylint: disable=redefined-outer-name
FILE: cli/api-info.py
function auth (line 21) | def auth():
function get (line 27) | def get(endpoint: str, dct: dict = None):
function post (line 35) | def post(endpoint: str, dct: dict = None):
function info (line 43) | def info(args): # pylint: disable=redefined-outer-name
FILE: cli/api-interrogate.py
function decode (line 21) | def decode(encoding):
function encode (line 27) | def encode(f):
function print_summary (line 39) | def print_summary():
function interrogate (line 46) | async def interrogate(f):
function main (line 87) | async def main():
FILE: cli/api-json.py
function auth (line 25) | def auth():
function post (line 31) | def post(endpoint: str, payload: dict = None):
FILE: cli/api-mask.py
function auth (line 23) | def auth():
function get (line 29) | def get(endpoint: str, dct: dict = None):
function post (line 37) | def post(endpoint: str, dct: dict = None):
function info (line 45) | def info(args): # pylint: disable=redefined-outer-name
FILE: cli/api-model.js
function options (line 12) | async function options(data) {
function main (line 22) | async function main() {
FILE: cli/api-preprocess.py
function auth (line 23) | def auth():
function get (line 29) | def get(endpoint: str, dct: dict = None):
function post (line 37) | def post(endpoint: str, dct: dict = None):
function info (line 45) | def info(args): # pylint: disable=redefined-outer-name
FILE: cli/api-progress.py
class Dot (line 14) | class Dot(dict):
function progress (line 34) | def progress():
FILE: cli/api-pulid.js
function b64 (line 15) | function b64(file) {
function options (line 24) | function options() {
function init (line 58) | function init() {
function main (line 70) | async function main() {
FILE: cli/api-txt2img.js
function main (line 27) | async function main() {
FILE: cli/api-txt2img.py
function auth (line 25) | def auth():
function post (line 31) | def post(endpoint: str, dct: dict = None):
function generate (line 39) | def generate(args): # pylint: disable=redefined-outer-name
FILE: cli/api-upscale.py
function auth (line 21) | def auth():
function get (line 27) | def get(endpoint: str, dct: dict = None):
function post (line 35) | def post(endpoint: str, dct: dict = None):
function encode (line 43) | def encode(f):
function upscale (line 56) | def upscale(args): # pylint: disable=redefined-outer-name
FILE: cli/api-vqa.py
function auth (line 21) | def auth():
function get (line 27) | def get(endpoint: str, dct: dict = None):
function post (line 35) | def post(endpoint: str, dct: dict = None):
function info (line 43) | def info(args): # pylint: disable=redefined-outer-name
FILE: cli/api-xyz.py
function auth (line 27) | def auth():
function post (line 33) | def post(endpoint: str, dct: dict = None):
function generate (line 41) | def generate(args): # pylint: disable=redefined-outer-name
FILE: cli/api-xyzenum.py
function auth (line 21) | def auth():
function get (line 27) | def get(endpoint: str, dct: dict = None):
FILE: cli/civitai-search.py
class ModelImage (line 18) | class ModelImage():
method __init__ (line 19) | def __init__(self, dct: dict):
method __str__ (line 29) | def __str__(self):
class ModelFile (line 33) | class ModelFile():
method __init__ (line 34) | def __init__(self, dct: dict):
method __str__ (line 45) | def __str__(self):
class ModelVersion (line 50) | class ModelVersion():
method __init__ (line 51) | def __init__(self, dct: dict):
method __str__ (line 67) | def __str__(self):
class Model (line 72) | class Model():
method __init__ (line 73) | def __init__(self, dct: dict):
method __str__ (line 92) | def __str__(self):
function search_civitai (line 96) | def search_civitai(
function models_to_dct (line 167) | def models_to_dct(all_models:list, model_id:int=None):
function print_models (line 184) | def print_models(models: list[Model]):
FILE: cli/download-file.py
function get_filename (line 20) | def get_filename(args, res):
function download_requests (line 25) | def download_requests(args):
function download_urllib (line 39) | def download_urllib(args):
function download_urllib3 (line 58) | def download_urllib3(args):
function download_httpx (line 76) | def download_httpx(args):
FILE: cli/gen-styles.py
function pil_to_b64 (line 27) | def pil_to_b64(img: Image, size: int, quality: int):
function post (line 36) | def post(endpoint: str, dct: dict = None):
FILE: cli/generate.py
function grid (line 45) | def grid(data):
function exif (line 63) | def exif(info, i = None, op = 'generate'):
function randomize (line 83) | def randomize(lst):
function prompt (line 90) | def prompt(params): # generate dynamic prompt or use one if provided
function sampler (line 110) | def sampler(params, options): # find sampler
function generate (line 123) | async def generate(prompt = None, options = None, quiet = False): # pyli...
function upscale (line 158) | async def upscale(data):
function init (line 175) | async def init():
function args (line 219) | def args(): # parse cmd arguments
function main (line 321) | async def main():
FILE: cli/git-clone.py
class GitRemoteProgress (line 8) | class GitRemoteProgress(git.RemoteProgress):
method __init__ (line 12) | def __init__(self, url, folder) -> None:
method __del__ (line 30) | def __del__(self) -> None:
method get_curr_op (line 34) | def get_curr_op(cls, op_code: int) -> str:
method update (line 38) | def update(self, op_code: int, cur_count: str | float, max_count: str ...
function clone (line 47) | def clone(url: str, folder: str):
FILE: cli/image-encode.py
function encode (line 10) | def encode(file: str):
FILE: cli/image-exif.py
class Exif (line 21) | class Exif: # pylint: disable=single-string-used-for-slots
method __init__ (line 23) | def __init__(self, image = None):
method __getattr__ (line 31) | def __getattr__(self, attr):
method load (line 36) | def load(self, img: Image):
method decode (line 65) | def decode(self, s: bytes):
method parse (line 84) | def parse(self):
method get_bytes (line 89) | def get_bytes(self):
function print_json (line 102) | def print_json(data):
function read_exif (line 110) | def read_exif(filename: str):
FILE: cli/image-grid.py
function wrap (line 19) | def wrap(text: str, font: ImageFont.ImageFont, length: int):
function grid (line 30) | def grid(images, labels = None, width = 0, height = 0, border = 0, squar...
FILE: cli/image-palette.py
function color_to_df (line 22) | def color_to_df(param):
function palette (line 34) | def palette(img, params, output):
FILE: cli/image-search.py
class ImageDB (line 16) | class ImageDB:
method __init__ (line 19) | def __init__(self,
method __str__ (line 49) | def __str__(self):
method init (line 52) | def init(self): # initialize models
method load (line 65) | def load(self): # load db to disk
method save (line 80) | def save(self): # save db to disk
method normalize (line 90) | def normalize(self, embed) -> np.ndarray: # normalize embed before usi...
method embedding (line 95) | def embedding(self, query: Union[PIL.Image.Image | str]) -> np.ndarray...
method add (line 118) | def add(self, embed, filename=None, metadata=None): # add embed to db
method search (line 126) | def search(self, filename: str = None, metadata: str = None, embed: np...
method decode (line 151) | def decode(self, s: bytes): # decode byte-encoded exif metadata
method metadata (line 167) | def metadata(self, image: PIL.Image.Image): # get exif metadata from i...
method image (line 176) | def image(self, filename: str, image=None): # add file/image to db
method folder (line 189) | def folder(self, folder: str): # add all files from folder to db
method offload (line 201) | def offload(self): # offload model to cpu
FILE: cli/image-watermark.py
function get_exif (line 20) | def get_exif(image):
function set_exif (line 40) | def set_exif(d: dict):
function get_watermark (line 51) | def get_watermark(image, params):
function set_watermark (line 59) | def set_watermark(image, params):
function watermark (line 71) | def watermark(params, file):
FILE: cli/install-stablefast.py
function install_pip (line 14) | def install_pip(arg: str):
function get_nightly (line 22) | def get_nightly():
function install_stable_fast (line 45) | def install_stable_fast():
FILE: cli/load-unet.py
class StateDictStats (line 7) | class StateDictStats():
method __repr__ (line 15) | def __repr__(self):
function set_module_tensor (line 19) | def set_module_tensor(
function load_unet (line 50) | def load_unet(config_file: str, state_dict: dict, device: torch.device =...
function load_safetensors (line 73) | def load_safetensors(fn: str):
FILE: cli/localize.js
function localize (line 28) | async function localize() {
FILE: cli/model-keys.py
function has (line 7) | def has(obj, attr, *args):
function remove_entries_after_depth (line 16) | def remove_entries_after_depth(d, depth, current_depth=0):
function list_to_dict (line 27) | def list_to_dict(flat_list):
function list_compact (line 41) | def list_compact(flat_list):
function guess_dct (line 51) | def guess_dct(dct: dict):
function read_keys (line 69) | def read_keys(fn):
function main (line 90) | def main():
FILE: cli/model-metadata.py
function read_metadata (line 8) | def read_metadata(fn):
function main (line 33) | def main():
FILE: cli/nvidia-smi.py
function get_nvidia_smi (line 11) | def get_nvidia_smi(output='dict'):
FILE: cli/process.py
class Result (line 24) | class Result():
method __init__ (line 25) | def __init__(self, typ: str, fn: str, tag: str = None, requested: list...
function detect_blur (line 39) | def detect_blur(image: Image):
function detect_dynamicrange (line 53) | def detect_dynamicrange(image: Image):
function detect_simmilar (line 72) | def detect_simmilar(image: Image):
function segmentation (line 85) | def segmentation(res: Result):
function unload (line 101) | def unload():
function encode (line 113) | def encode(img):
function reset (line 121) | def reset():
function upscale_restore_image (line 129) | def upscale_restore_image(res: Result, upscale: bool = False, restore: b...
function interrogate_image (line 154) | def interrogate_image(res: Result, tag: str = None):
function resize_image (line 183) | def resize_image(res: Result):
function square_image (line 191) | def square_image(res: Result):
function process_face (line 200) | def process_face(res: Result):
function process_body (line 224) | def process_body(res: Result):
function process_original (line 246) | def process_original(res: Result):
function save_image (line 251) | def save_image(res: Result, folder: str):
function file (line 265) | def file(filename: str, folder: str, tag = None, requested = []):
FILE: cli/run-benchmark.py
function txt2img (line 22) | async def txt2img():
function memstats (line 50) | def memstats():
function gb (line 67) | def gb(val: float):
function main (line 71) | async def main():
FILE: cli/sdapi.py
class AnyThreadEventLoopPolicy (line 36) | class AnyThreadEventLoopPolicy(BaseThreadPolicy):
method get_event_loop (line 37) | def get_event_loop(self) -> asyncio.AbstractEventLoop:
function authsync (line 48) | def authsync():
function auth (line 54) | def auth():
function result (line 60) | async def result(req):
function resultsync (line 79) | def resultsync(req: requests.Response):
function get (line 96) | async def get(endpoint: str, json: dict = None):
function getsync (line 108) | def getsync(endpoint: str, json: dict = None):
function post (line 118) | async def post(endpoint: str, json: dict = None):
function postsync (line 133) | def postsync(endpoint: str, json: dict = None):
function interrupt (line 139) | async def interrupt():
function interruptsync (line 151) | def interruptsync():
function progress (line 162) | async def progress():
function progresssync (line 173) | def progresssync():
function get_log (line 179) | def get_log():
function get_info (line 186) | def get_info():
function options (line 195) | def options():
function shutdown (line 201) | def shutdown():
function session (line 208) | async def session():
function close (line 228) | async def close():
FILE: cli/search-docs.py
class Page (line 12) | class Page():
method __init__ (line 13) | def __init__(self, fn, full: bool = True):
method read (line 24) | def read(self, full: bool = True):
method search (line 40) | def search(self, text):
method get (line 82) | def get(self):
method __str__ (line 91) | def __str__(self):
class Pages (line 95) | class Pages():
method __init__ (line 96) | def __init__(self):
method build (line 102) | def build(self, full: bool = True):
method search (line 112) | def search(self, text: str, topk: int = 10, full: bool = True) -> list...
FILE: cli/test-schedulers.py
function test_scheduler (line 32) | def test_scheduler(name, scheduler_class, config):
function run_tests (line 151) | def run_tests():
FILE: cli/test-tagger.py
function find_test_image (line 49) | def find_test_image():
function create_test_image (line 58) | def create_test_image():
class TaggerTest (line 68) | class TaggerTest:
method __init__ (line 71) | def __init__(self):
method log_pass (line 77) | def log_pass(self, msg):
method log_fail (line 81) | def log_fail(self, msg):
method log_skip (line 85) | def log_skip(self, msg):
method log_warn (line 89) | def log_warn(self, msg):
method setup (line 93) | def setup(self):
method cleanup (line 129) | def cleanup(self):
method print_summary (line 143) | def print_summary(self):
method test_onnx_providers (line 171) | def test_onnx_providers(self):
method get_memory_stats (line 220) | def get_memory_stats(self):
method test_memory_management (line 245) | def test_memory_management(self):
method test_settings_exist (line 457) | def test_settings_exist(self):
method test_parameter (line 489) | def test_parameter(self, param_name, test_func, waifudiffusion_support...
method tag (line 521) | def tag(self, tagger, **kwargs):
method test_threshold (line 533) | def test_threshold(self):
method test_max_tags (line 560) | def test_max_tags(self):
method test_use_spaces (line 582) | def test_use_spaces(self):
method test_escape_brackets (line 613) | def test_escape_brackets(self):
method test_sort_alpha (line 643) | def test_sort_alpha(self):
method test_exclude_tags (line 667) | def test_exclude_tags(self):
method test_show_scores (line 699) | def test_show_scores(self):
method test_include_rating (line 731) | def test_include_rating(self):
method test_character_threshold (line 764) | def test_character_threshold(self):
method test_unified_interface (line 791) | def test_unified_interface(self):
method run_all_tests (line 820) | def run_all_tests(self):
FILE: cli/util.py
function set_logfile (line 19) | def set_logfile(logfile):
function safestring (line 28) | def safestring(text: str):
function get_memory (line 36) | def get_memory():
class Map (line 73) | class Map(dict): # pylint: disable=C0205
method __init__ (line 75) | def __init__(self, *args, **kwargs):
method __convert (line 92) | def __convert(self, v):
method __getattr__ (line 98) | def __getattr__(self, attr):
method __setattr__ (line 100) | def __setattr__(self, key, value):
method __setitem__ (line 102) | def __setitem__(self, key, value):
method __delattr__ (line 105) | def __delattr__(self, item):
method __delitem__ (line 107) | def __delitem__(self, key):
FILE: cli/video-extract.py
function probe (line 14) | def probe(src: str):
function extract (line 31) | def extract(src: str, dst: str, rate: float = 0.015, fps: float = 0, sta...
FILE: cli/zluda-python.py
class Interpreter (line 6) | class Interpreter:
method __init__ (line 10) | def __init__(self, env_globals, env_locals):
method execute (line 14) | def execute(self, s: str):
method from_file (line 20) | def from_file(self, path):
FILE: installer.py
class Dot (line 17) | class Dot(dict): # dot notation access to dictionary attributes
function get_console (line 88) | def get_console():
function get_log (line 92) | def get_log():
function str_to_bool (line 97) | def str_to_bool(val: str | bool) -> bool: ...
function str_to_bool (line 99) | def str_to_bool(val: None) -> None: ...
function str_to_bool (line 100) | def str_to_bool(val: str | bool | None) -> bool | None:
function install_traceback (line 108) | def install_traceback(suppress: list = []):
function setup_logging (line 131) | def setup_logging():
function get_logfile (line 312) | def get_logfile():
function custom_excepthook (line 318) | def custom_excepthook(exc_type, exc_value, exc_traceback):
function print_dict (line 330) | def print_dict(d):
function print_profile (line 336) | def print_profile(profiler: cProfile.Profile, msg: str):
function package_version (line 342) | def package_version(package):
function package_spec (line 352) | def package_spec(package):
function installed (line 365) | def installed(package, friendly: str = None, reload = False, quiet = Fal...
function uninstall (line 411) | def uninstall(package, quiet = False):
function run (line 424) | def run(cmd: str, arg: str):
function pip (line 434) | def pip(arg: str, ignore: bool = False, quiet: bool = True, uv = True):
function install (line 471) | def install(package, friendly: str = None, ignore: bool = False, reinsta...
function git (line 490) | def git(arg: str, folder: str = None, ignore: bool = False, optional: bo...
function branch (line 521) | def branch(folder=None):
function restart (line 552) | def restart():
function update (line 558) | def update(folder, keep_branch = False, rebase = True):
function clone (line 586) | def clone(url, folder, commithash=None):
function get_platform (line 606) | def get_platform():
function check_python (line 628) | def check_python(supported_minors=[], experimental_minors=[], reason=None):
function check_diffusers (line 664) | def check_diffusers():
function check_transformers (line 689) | def check_transformers():
function check_onnx (line 716) | def check_onnx():
function install_cuda (line 727) | def install_cuda():
function install_rocm_zluda (line 738) | def install_rocm_zluda():
function install_ipex (line 856) | def install_ipex():
function install_openvino (line 871) | def install_openvino():
function install_torch_addons (line 889) | def install_torch_addons():
function check_cudnn (line 923) | def check_cudnn():
function check_torch (line 938) | def check_torch():
function check_modified_files (line 1074) | def check_modified_files():
function install_packages (line 1096) | def install_packages():
function run_extension_installer (line 1116) | def run_extension_installer(folder):
function list_extensions_folder (line 1147) | def list_extensions_folder(folder, quiet=False):
function install_extensions (line 1159) | def install_extensions(force=False):
function install_submodules (line 1218) | def install_submodules(force=True):
function reload (line 1251) | def reload(package, desired=None):
function ensure_base_requirements (line 1265) | def ensure_base_requirements():
function install_gradio (line 1316) | def install_gradio():
function install_pydantic (line 1328) | def install_pydantic():
function install_opencv (line 1337) | def install_opencv():
function install_insightface (line 1344) | def install_insightface():
function install_optional (line 1355) | def install_optional():
function install_requirements (line 1385) | def install_requirements():
function set_environment (line 1420) | def set_environment():
function check_extensions (line 1468) | def check_extensions():
function get_version (line 1497) | def get_version(force=False):
function check_ui (line 1557) | def check_ui(ver):
function check_venv (line 1580) | def check_venv():
function check_version (line 1611) | def check_version(reset=True): # pylint: disable=unused-argument
function update_wiki (line 1688) | def update_wiki():
function check_timestamp (line 1700) | def check_timestamp():
function add_args (line 1737) | def add_args(parser):
function parse_args (line 1815) | def parse_args(parser):
function extensions_preload (line 1828) | def extensions_preload(parser):
function git_reset (line 1854) | def git_reset(folder='.'):
function read_options (line 1874) | def read_options():
FILE: javascript/aspectRatioOverlay.js
function dimensionChange (line 5) | function dimensionChange(e, is_width, is_height) {
FILE: javascript/authWrap.js
function getToken (line 4) | async function getToken() {
function authFetch (line 17) | async function authFetch(url, options = {}) {
FILE: javascript/changelog.js
function getText (line 12) | function getText(el) {
function changelogNavigate (line 22) | function changelogNavigate(found) {
function initChangelog (line 60) | async function initChangelog() {
FILE: javascript/civitai.js
function clearModelDetails (line 15) | function clearModelDetails() {
function modelCardClick (line 72) | async function modelCardClick(id) {
function startCivitDownload (line 116) | function startCivitDownload(url, name, type) {
function startCivitAllDownload (line 125) | function startCivitAllDownload(evt) {
function downloadCivitModel (line 142) | function downloadCivitModel(modelUrl, modelName, modelType, modelPath, c...
FILE: javascript/contextMenus.js
function showContextMenu (line 7) | function showContextMenu(event, element, menuEntries) {
function appendContextMenuOption (line 34) | function appendContextMenuOption(targetElementSelector, entryName, entry...
function removeContextMenuOption (line 51) | function removeContextMenuOption(id) {
function addContextMenuEventListener (line 61) | async function addContextMenuEventListener() {
function initContextMenu (line 150) | async function initContextMenu() {
FILE: javascript/control.js
function controlInputMode (line 1) | function controlInputMode(inputMode, ...args) {
function setupControlUI (line 19) | async function setupControlUI() {
FILE: javascript/docs.js
function clickGitHubWikiPage (line 4) | async function clickGitHubWikiPage(page) {
function getGitHubWikiPage (line 11) | function getGitHubWikiPage() {
function clickDocsPage (line 15) | async function clickDocsPage(page) {
function getDocsPage (line 22) | function getDocsPage() {
FILE: javascript/dragDrop.js
function isValidImageList (line 1) | function isValidImageList(files) {
function dropReplaceImage (line 5) | function dropReplaceImage(imgWrap, files) {
FILE: javascript/editAttention.js
function keyupEditAttention (line 1) | function keyupEditAttention(event) {
FILE: javascript/exifr.js
function h (line 1) | function h(e,t=l){if(s)try{return"function"==typeof require?Promise.reso...
function f (line 1) | function f(e,t,i){return t in e?Object.defineProperty(e,t,{value:i,enume...
function g (line 1) | function g(e){return void 0===e||(e instanceof Map?0===e.size:0===Object...
function m (line 1) | function m(e){let t=new Error(e);throw delete t.stack,t}
function S (line 1) | function S(e){return""===(e=function(e){for(;e.endsWith("\0");)e=e.slice...
function C (line 1) | function C(e){let t=function(e){let t=0;return e.ifd0.enabled&&(t+=1024)...
function P (line 1) | function P(e){return b?b.decode(e):o?Buffer.from(e).toString("utf8"):dec...
class I (line 1) | class I{static from(e,t){return e instanceof this&&e.le===t?e:new I(e,vo...
method from (line 1) | static from(e,t){return e instanceof this&&e.le===t?e:new I(e,void 0,v...
method constructor (line 1) | constructor(e,t=0,i,n){if("boolean"==typeof n&&(this.le=n),Array.isArr...
method _swapArrayBuffer (line 1) | _swapArrayBuffer(e){this._swapDataView(new DataView(e))}
method _swapBuffer (line 1) | _swapBuffer(e){this._swapDataView(new DataView(e.buffer,e.byteOffset,e...
method _swapDataView (line 1) | _swapDataView(e){this.dataView=e,this.buffer=e.buffer,this.byteOffset=...
method _lengthToEnd (line 1) | _lengthToEnd(e){return this.byteLength-e}
method set (line 1) | set(e,t,i=I){return e instanceof DataView||e instanceof I?e=new Uint8A...
method subarray (line 1) | subarray(e,t){return t=t||this._lengthToEnd(e),new I(this,e,t)}
method toUint8 (line 1) | toUint8(){return new Uint8Array(this.buffer,this.byteOffset,this.byteL...
method getUint8Array (line 1) | getUint8Array(e,t){return new Uint8Array(this.buffer,this.byteOffset+e...
method getString (line 1) | getString(e=0,t=this.byteLength){return P(this.getUint8Array(e,t))}
method getLatin1String (line 1) | getLatin1String(e=0,t=this.byteLength){let i=this.getUint8Array(e,t);r...
method getUnicodeString (line 1) | getUnicodeString(e=0,t=this.byteLength){const i=[];for(let n=0;n<t&&e+...
method getInt8 (line 1) | getInt8(e){return this.dataView.getInt8(e)}
method getUint8 (line 1) | getUint8(e){return this.dataView.getUint8(e)}
method getInt16 (line 1) | getInt16(e,t=this.le){return this.dataView.getInt16(e,t)}
method getInt32 (line 1) | getInt32(e,t=this.le){return this.dataView.getInt32(e,t)}
method getUint16 (line 1) | getUint16(e,t=this.le){return this.dataView.getUint16(e,t)}
method getUint32 (line 1) | getUint32(e,t=this.le){return this.dataView.getUint32(e,t)}
method getFloat32 (line 1) | getFloat32(e,t=this.le){return this.dataView.getFloat32(e,t)}
method getFloat64 (line 1) | getFloat64(e,t=this.le){return this.dataView.getFloat64(e,t)}
method getFloat (line 1) | getFloat(e,t=this.le){return this.dataView.getFloat32(e,t)}
method getDouble (line 1) | getDouble(e,t=this.le){return this.dataView.getFloat64(e,t)}
method getUintBytes (line 1) | getUintBytes(e,t,i){switch(t){case 1:return this.getUint8(e,i);case 2:...
method getUint (line 1) | getUint(e,t,i){switch(t){case 8:return this.getUint8(e,i);case 16:retu...
method toString (line 1) | toString(e){return this.dataView.toString(e,this.constructor.name)}
method ensureChunk (line 1) | ensureChunk(){}
function k (line 1) | function k(e,t){m(`${e} '${t}' was not loaded, try using full build of e...
class w (line 1) | class w extends Map{constructor(e){super(),this.kind=e}get(e,t){return t...
method constructor (line 1) | constructor(e){super(),this.kind=e}
method get (line 1) | get(e,t){return this.has(e)||k(this.kind,e),t&&(e in t||function(e,t){...
method keyList (line 1) | keyList(){return Array.from(this.keys())}
function x (line 1) | function x(e,t){return"string"==typeof e?v(e,t):i&&!n&&e instanceof HTML...
function v (line 1) | function v(e,t){return(n=e).startsWith("data:")||n.length>1e4?R(e,t,"bas...
function M (line 1) | async function M(e,t,i,n){return D.has(i)?R(e,t,i):n?async function(e,t)...
function R (line 1) | async function R(e,t,i){let n=new(D.get(i))(e,t);return await n.read(),n}
class F (line 1) | class F extends Map{get tagKeys(){return this.allKeys||(this.allKeys=Arr...
method tagKeys (line 1) | get tagKeys(){return this.allKeys||(this.allKeys=Array.from(this.keys(...
method tagValues (line 1) | get tagValues(){return this.allValues||(this.allValues=Array.from(this...
function B (line 1) | function B(e,t,i){let n=new F;for(let[e,t]of i)n.set(e,t);if(Array.isArr...
function E (line 1) | function E(e,t,i){let n,s=e.get(t);for(n of i)s.set(n[0],n[1])}
class ne (line 1) | class ne{get translate(){return this.translateKeys||this.translateValues...
method translate (line 1) | get translate(){return this.translateKeys||this.translateValues||this....
class se (line 1) | class se extends ne{get needed(){return this.enabled||this.deps.size>0}c...
method needed (line 1) | get needed(){return this.enabled||this.deps.size>0}
method constructor (line 1) | constructor(e,t,i,n){if(super(),f(this,"enabled",!1),f(this,"skip",new...
method applyInheritables (line 1) | applyInheritables(e){let t,i;for(t of te)i=e[t],void 0!==i&&(this[t]=i)}
method translateTagSet (line 1) | translateTagSet(e,t){if(this.dict){let i,n,{tagKeys:s,tagValues:r}=thi...
method finalizeFilters (line 1) | finalizeFilters(){!this.enabled&&this.deps.size>0?(this.enabled=!0,ue(...
class oe (line 1) | class oe extends ne{static useCached(e){let t=ae.get(e);return void 0!==...
method useCached (line 1) | static useCached(e){let t=ae.get(e);return void 0!==t||(t=new this(e),...
method constructor (line 1) | constructor(e){super(),!0===e?this.setupFromTrue():void 0===e?this.set...
method setupFromUndefined (line 1) | setupFromUndefined(){let e;for(e of $)this[e]=re[e];for(e of ie)this[e...
method setupFromTrue (line 1) | setupFromTrue(){let e;for(e of $)this[e]=re[e];for(e of ie)this[e]=re[...
method setupFromArray (line 1) | setupFromArray(e){let t;for(t of $)this[t]=re[t];for(t of ie)this[t]=r...
method setupFromObject (line 1) | setupFromObject(e){let t;for(t of(Q.ifd0=Q.ifd0||Q.image,Q.ifd1=Q.ifd1...
method batchEnableWithBool (line 1) | batchEnableWithBool(e,t){for(let i of e)this[i].enabled=t}
method batchEnableWithUserValue (line 1) | batchEnableWithUserValue(e,t){for(let i of e){let e=t[i];this[i].enabl...
method setupGlobalFilters (line 1) | setupGlobalFilters(e,t,i,n=i){if(e&&e.length){for(let e of n)this[e].e...
method filterNestedSegmentTags (line 1) | filterNestedSegmentTags(){let{ifd0:e,exif:t,xmp:i,iptc:n,icc:s}=this;t...
method traverseTiffDependencyTree (line 1) | traverseTiffDependencyTree(){let{ifd0:e,exif:t,gps:i,interop:n}=this;n...
method onlyTiff (line 1) | get onlyTiff(){return!J.map((e=>this[e].enabled)).some((e=>!0===e))&&t...
method checkLoadedPlugins (line 1) | checkLoadedPlugins(){for(let e of q)this[e].enabled&&!A.has(e)&&k("seg...
function le (line 1) | function le(e,t){let i,n,s,r,a=[];for(s of t){for(r of(i=N.get(s),n=[],i...
function he (line 1) | function he(e,t){return void 0!==e?e:void 0!==t?t:void 0}
function ue (line 1) | function ue(e,t){for(let i of t)e.add(i)}
class ce (line 1) | class ce{constructor(e){f(this,"parsers",{}),f(this,"output",{}),f(this,...
method constructor (line 1) | constructor(e){f(this,"parsers",{}),f(this,"output",{}),f(this,"errors...
method read (line 1) | async read(e){this.file=await x(e,this.options)}
method setup (line 1) | setup(){if(this.fileParser)return;let{file:e}=this,t=e.getUint16(0);fo...
method parse (line 1) | async parse(){let{output:e,errors:t}=this;return this.setup(),this.opt...
method executeParsers (line 1) | async executeParsers(){let{output:e}=this;await this.fileParser.parse(...
method extractThumbnail (line 1) | async extractThumbnail(){this.setup();let{options:e,file:t}=this,i=A.g...
function fe (line 1) | async function fe(e,t){let i=new ce(t);return await i.read(e),i.parse()}
class pe (line 1) | class pe{constructor(e,t,i){f(this,"errors",[]),f(this,"ensureSegmentChu...
method constructor (line 1) | constructor(e,t,i){f(this,"errors",[]),f(this,"ensureSegmentChunk",(as...
method injectSegment (line 1) | injectSegment(e,t){this.options[e].enabled&&this.createParser(e,t)}
method createParser (line 1) | createParser(e,t){let i=new(A.get(e))(t,this.options,this.file);return...
method createParsers (line 1) | createParsers(e){for(let t of e){let{type:e,chunk:i}=t,n=this.options[...
method readSegments (line 1) | async readSegments(e){let t=e.map(this.ensureSegmentChunk);await Promi...
class ge (line 1) | class ge{static findPosition(e,t){let i=e.getUint16(t+2)+2,n="function"=...
method findPosition (line 1) | static findPosition(e,t){let i=e.getUint16(t+2)+2,n="function"==typeof...
method parse (line 1) | static parse(e,t={}){return new this(e,new oe({[this.type]:t}),e).pars...
method normalizeInput (line 1) | normalizeInput(e){return e instanceof I?e:new I(e)}
method constructor (line 1) | constructor(e,t={},i){f(this,"errors",[]),f(this,"raw",new Map),f(this...
method translate (line 1) | translate(){this.canTranslate&&(this.translated=this.translateBlock(th...
method output (line 1) | get output(){return this.translated?this.translated:this.raw?Object.fr...
method translateBlock (line 1) | translateBlock(e,t){let i=V.get(t),n=G.get(t),s=N.get(t),r=this.option...
method translateValue (line 1) | translateValue(e,t){return t[e]||t.DEFAULT||e}
method assignToOutput (line 1) | assignToOutput(e,t){this.assignObjectToOutput(e,this.constructor.type,t)}
method assignObjectToOutput (line 1) | assignObjectToOutput(e,t,i){if(this.globalOptions.mergeOutput)return O...
function me (line 1) | function me(e){return 192===e||194===e||196===e||219===e||221===e||218==...
function Se (line 1) | function Se(e){return e>=224&&e<=239}
function Ce (line 1) | function Ce(e,t,i){for(let[n,s]of A)if(s.canHandle(e,t,i))return n}
class ye (line 1) | class ye extends pe{constructor(...e){super(...e),f(this,"appSegments",[...
method constructor (line 1) | constructor(...e){super(...e),f(this,"appSegments",[]),f(this,"jpegSeg...
method canHandle (line 1) | static canHandle(e,t){return 65496===t}
method parse (line 1) | async parse(){await this.findAppSegments(),await this.readSegments(thi...
method setupSegmentFinderArgs (line 1) | setupSegmentFinderArgs(e){!0===e?(this.findAll=!0,this.wanted=new Set(...
method findAppSegments (line 1) | async findAppSegments(e=0,t){this.setupSegmentFinderArgs(t);let{file:i...
method findAppSegmentsInRange (line 1) | findAppSegmentsInRange(e,t){t-=2;let i,n,s,r,a,o,{file:l,findAll:h,wan...
method mergeMultiSegments (line 1) | mergeMultiSegments(){if(!this.appSegments.some((e=>e.multiSegment)))re...
method getSegment (line 1) | getSegment(e){return this.appSegments.find((t=>t.type===e))}
method getOrFindSegment (line 1) | async getOrFindSegment(e){let t=this.getSegment(e);return void 0===t&&...
class Pe (line 1) | class Pe extends ge{parseHeader(){var e=this.chunk.getUint16();18761===e...
method parseHeader (line 1) | parseHeader(){var e=this.chunk.getUint16();18761===e?this.le=!0:19789=...
method parseTags (line 1) | parseTags(e,t,i=new Map){let{pick:n,skip:s}=this.options[t];n=new Set(...
method parseTag (line 1) | parseTag(e,t,i){let{chunk:n}=this,s=n.getUint16(e+2),r=n.getUint32(e+4...
method parseTagValue (line 1) | parseTagValue(e,t){let{chunk:i}=this;switch(e){case 1:return i.getUint...
class Ie (line 1) | class Ie extends Pe{static canHandle(e,t){return 225===e.getUint8(t+1)&&...
method canHandle (line 1) | static canHandle(e,t){return 225===e.getUint8(t+1)&&1165519206===e.get...
method parse (line 1) | async parse(){this.parseHeader();let{options:e}=this;return e.ifd0.ena...
method safeParse (line 1) | safeParse(e){let t=this[e]();return void 0!==t.catch&&(t=t.catch(this....
method findIfd0Offset (line 1) | findIfd0Offset(){void 0===this.ifd0Offset&&(this.ifd0Offset=this.chunk...
method findIfd1Offset (line 1) | findIfd1Offset(){if(void 0===this.ifd1Offset){this.findIfd0Offset();le...
method parseBlock (line 1) | parseBlock(e,t){let i=new Map;return this[t]=i,this.parseTags(e,t,i),i}
method parseIfd0Block (line 1) | async parseIfd0Block(){if(this.ifd0)return;let{file:e}=this;this.findI...
method parseExifBlock (line 1) | async parseExifBlock(){if(this.exif)return;if(this.ifd0||await this.pa...
method unpack (line 1) | unpack(e,t){let i=e.get(t);i&&1===i.length&&e.set(t,i[0])}
method parseGpsBlock (line 1) | async parseGpsBlock(){if(this.gps)return;if(this.ifd0||await this.pars...
method parseInteropBlock (line 1) | async parseInteropBlock(){if(!this.interop&&(this.ifd0||await this.par...
method parseThumbnailBlock (line 1) | async parseThumbnailBlock(e=!1){if(!this.ifd1&&!this.ifd1Parsed&&(!thi...
method extractThumbnail (line 1) | async extractThumbnail(){if(this.headerParsed||this.parseHeader(),this...
method image (line 1) | get image(){return this.ifd0}
method thumbnail (line 1) | get thumbnail(){return this.ifd1}
method createOutput (line 1) | createOutput(){let e,t,i,n={};for(t of Q)if(e=this[t],!g(e))if(i=this....
method assignToOutput (line 1) | assignToOutput(e,t){if(this.globalOptions.mergeOutput)Object.assign(e,...
function ke (line 1) | function ke(e,t,i,n){var s=e+t/60+i/3600;return"S"!==n&&"W"!==n||(s*=-1),s}
function De (line 1) | async function De(e){let t=new ce(Ae);await t.read(e);let i=await t.pars...
function xe (line 1) | async function xe(e){let t=new ce(Oe);await t.read(e);let i=await t.extr...
function ve (line 1) | async function ve(e){let t=await this.thumbnail(e);if(void 0!==t){let e=...
function Re (line 1) | async function Re(e){let t=new ce(Me);await t.read(e);let i=await t.pars...
function Ue (line 1) | async function Ue(t){let i=await Re(t);return Object.assign({canvas:e.ro...
class Fe (line 1) | class Fe extends I{constructor(...e){super(...e),f(this,"ranges",new Be)...
method constructor (line 1) | constructor(...e){super(...e),f(this,"ranges",new Be),0!==this.byteLen...
method _tryExtend (line 1) | _tryExtend(e,t,i){if(0===e&&0===this.byteLength&&i){let e=new DataView...
method _extend (line 1) | _extend(e){let t;t=o?r.allocUnsafe(e):new Uint8Array(e);let i=new Data...
method subarray (line 1) | subarray(e,t,i=!1){return t=t||this._lengthToEnd(e),i&&this._tryExtend...
method set (line 1) | set(e,t,i=!1){i&&this._tryExtend(t,e.byteLength,e);let n=super.set(e,t...
method ensureChunk (line 1) | async ensureChunk(e,t){this.chunked&&(this.ranges.available(e,t)||awai...
method available (line 1) | available(e,t){return this.ranges.available(e,t)}
class Be (line 1) | class Be{constructor(){f(this,"list",[])}get length(){return this.list.l...
method constructor (line 1) | constructor(){f(this,"list",[])}
method length (line 1) | get length(){return this.list.length}
method add (line 1) | add(e,t,i=0){let n=e+t,s=this.list.filter((t=>Ee(e,t.offset,n)||Ee(e,t...
method available (line 1) | available(e,t){let i=e+t;return this.list.some((t=>t.offset<=e&&i<=t.e...
function Ee (line 1) | function Ee(e,t,i){return e<=t&&t<=i}
class Ne (line 1) | class Ne extends Fe{constructor(e,t){super(0),f(this,"chunksRead",0),thi...
method constructor (line 1) | constructor(e,t){super(0),f(this,"chunksRead",0),this.input=e,this.opt...
method readWhole (line 1) | async readWhole(){this.chunked=!1,await this.readChunk(this.nextChunkO...
method readChunked (line 1) | async readChunked(){this.chunked=!0,await this.readChunk(0,this.option...
method readNextChunk (line 1) | async readNextChunk(e=this.nextChunkOffset){if(this.fullyRead)return t...
method readChunk (line 1) | async readChunk(e,t){if(this.chunksRead++,0!==(t=this.safeWrapAddress(...
method safeWrapAddress (line 1) | safeWrapAddress(e,t){return void 0!==this.size&&e+t>this.size?Math.max...
method nextChunkOffset (line 1) | get nextChunkOffset(){if(0!==this.ranges.list.length)return this.range...
method canReadNextChunk (line 1) | get canReadNextChunk(){return this.chunksRead<this.options.chunkLimit}
method fullyRead (line 1) | get fullyRead(){return void 0!==this.size&&this.nextChunkOffset===this...
method read (line 1) | read(){return this.options.chunked?this.readChunked():this.readWhole()}
method close (line 1) | close(){}
method readWhole (line 1) | async readWhole(){this.chunked=!1;let e=await U(this.input);this._swapAr...
method readChunked (line 1) | readChunked(){return this.chunked=!0,this.size=this.input.size,super.rea...
method _readChunk (line 1) | async _readChunk(e,t){let i=t?e+t:void 0,n=this.input.slice(e,i),s=await...
method rotateCanvas (line 1) | get rotateCanvas(){return e.rotateCanvas}
method rotateCss (line 1) | get rotateCss(){return e.rotateCss}
method readWhole (line 1) | async readWhole(){this.chunked=!1;let e=await L(this.input);e instanceof...
method _readChunk (line 1) | async _readChunk(e,t){let i=t?e+t-1:void 0,n=this.options.httpHeaders||{...
class Ve (line 1) | class Ve extends pe{parseBoxes(e=0){let t=[];for(;e<this.file.byteLength...
method parseBoxes (line 1) | parseBoxes(e=0){let t=[];for(;e<this.file.byteLength-4;){let i=this.pa...
method parseSubBoxes (line 1) | parseSubBoxes(e){e.boxes=this.parseBoxes(e.start)}
method findBox (line 1) | findBox(e,t){return void 0===e.boxes&&this.parseSubBoxes(e),e.boxes.fi...
method parseBoxHead (line 1) | parseBoxHead(e){let t=this.file.getUint32(e),i=this.file.getString(e+4...
method parseBoxFullHead (line 1) | parseBoxFullHead(e){if(void 0!==e.version)return;let t=this.file.getUi...
class ze (line 1) | class ze extends Ve{static canHandle(e,t){if(0!==t)return!1;let i=e.getU...
method canHandle (line 1) | static canHandle(e,t){if(0!==t)return!1;let i=e.getUint16(2);if(i>50)r...
method parse (line 1) | async parse(){let e=this.file.getUint32(0),t=this.parseBoxHead(e);for(...
method registerSegment (line 1) | async registerSegment(e,t,i){await this.file.ensureChunk(t,i);let n=th...
method findIcc (line 1) | async findIcc(e){let t=this.findBox(e,"iprp");if(void 0===t)return;let...
method findExif (line 1) | async findExif(e){let t=this.findBox(e,"iinf");if(void 0===t)return;le...
method findExifLocIdInIinf (line 1) | findExifLocIdInIinf(e){this.parseBoxFullHead(e);let t,i,n,s,r=e.start,...
method get8bits (line 1) | get8bits(e){let t=this.file.getUint8(e);return[t>>4,15&t]}
method findExtentInIloc (line 1) | findExtentInIloc(e,t){this.parseBoxFullHead(e);let i=e.start,[n,s]=thi...
class He (line 1) | class He extends ze{}
class je (line 1) | class je extends ze{}
function _e (line 1) | function _e(e){return"object"==typeof e&&void 0!==e.length?e[0]:e}
function Ye (line 1) | function Ye(e){let t=Array.from(e).slice(1);return t[1]>15&&(t=t.map((e=...
function $e (line 1) | function $e(e){if("string"==typeof e){var[t,i,n,s,r,a]=e.trim().split(/[...
function Je (line 1) | function Je(e){if("string"==typeof e)return e;let t=[];if(0===e[1]&&0===...
function qe (line 1) | function qe(e,t){return e<<8|t}
class et (line 1) | class et extends ge{static canHandle(e,t){return 225===e.getUint8(t+1)&&...
method canHandle (line 1) | static canHandle(e,t){return 225===e.getUint8(t+1)&&1752462448===e.get...
method headerLength (line 1) | static headerLength(e,t){return e.getString(t+4,Ze.length)===Ze?79:4+"...
method findPosition (line 1) | static findPosition(e,t){let i=super.findPosition(e,t);return i.multiS...
method handleMultiSegments (line 1) | static handleMultiSegments(e){return e.map((e=>e.chunk.getString())).j...
method normalizeInput (line 1) | normalizeInput(e){return"string"==typeof e?e:I.from(e).getString()}
method parse (line 1) | parse(e=this.chunk){if(!this.localOptions.parse)return e;e=function(e)...
method assignToOutput (line 1) | assignToOutput(e,t){if(this.localOptions.parse)for(let[i,n]of Object.e...
class tt (line 1) | class tt{static findAll(e){return lt(e,/([a-zA-Z0-9-]+):([a-zA-Z0-9-]+)=...
method findAll (line 1) | static findAll(e){return lt(e,/([a-zA-Z0-9-]+):([a-zA-Z0-9-]+)=("[^"]*...
method unpackMatch (line 1) | static unpackMatch(e){let t=e[1],i=e[2],n=e[3].slice(1,-1);return n=ht...
method constructor (line 1) | constructor(e,t,i){this.ns=e,this.name=t,this.value=i}
method serialize (line 1) | serialize(){return this.value}
class nt (line 1) | class nt{static findAll(e,t,i){if(void 0!==t||void 0!==i){t=t||it,i=i||i...
method findAll (line 1) | static findAll(e,t,i){if(void 0!==t||void 0!==i){t=t||it,i=i||it;var n...
method unpackMatch (line 1) | static unpackMatch(e){let t=e[1],i=e[2],n=e[4],s=e[8];return new nt(t,...
method constructor (line 1) | constructor(e,t,i,n){this.ns=e,this.name=t,this.attrString=i,this.inne...
method isPrimitive (line 1) | get isPrimitive(){return void 0!==this.value&&0===this.attrs.length&&0...
method isListContainer (line 1) | get isListContainer(){return 1===this.children.length&&this.children[0...
method isList (line 1) | get isList(){let{ns:e,name:t}=this;return"rdf"===e&&("Seq"===t||"Bag"=...
method isListItem (line 1) | get isListItem(){return"rdf"===this.ns&&"li"===this.name}
method serialize (line 1) | serialize(){if(0===this.properties.length&&void 0===this.value)return;...
function st (line 1) | function st(e,t){let i=e.serialize();void 0!==i&&(t[e.name]=i)}
function lt (line 1) | function lt(e,t){let i,n=[];if(!e)return n;for(;null!==(i=t.exec(e));)n....
function ht (line 1) | function ht(e){if(function(e){return null==e||"null"===e||"undefined"===...
method rotateCanvas (line 1) | get rotateCanvas(){return e.rotateCanvas}
method rotateCss (line 1) | get rotateCss(){return e.rotateCss}
function gt (line 1) | async function gt(e,t,i){let n=i[e];return n.enabled=!0,n.parse=!0,A.get...
method readWhole (line 1) | async readWhole(){this.chunked=!1,this.fs=await mt;let e=await this.fs.r...
method readChunked (line 1) | async readChunked(){this.chunked=!0,this.fs=await mt,await this.open(),a...
method open (line 1) | async open(){void 0===this.fh&&(this.fh=await this.fs.open(this.input,"r...
method _readChunk (line 1) | async _readChunk(e,t){void 0===this.fh&&await this.open(),e+t>this.size&...
method close (line 1) | async close(){if(this.fh){let e=this.fh;this.fh=void 0,await e.close()}}
method constructor (line 1) | constructor(...e){super(...e),this.input=this.input.replace(/^data:([^;]...
method _readChunk (line 1) | async _readChunk(e,t){let i,n,s=this.input;void 0===e?(e=0,i=0,n=0):(i=4...
class St (line 1) | class St extends pe{static canHandle(e,t){return 18761===t||19789===t}ex...
method canHandle (line 1) | static canHandle(e,t){return 18761===t||19789===t}
method extendOptions (line 1) | extendOptions(e){let{ifd0:t,xmp:i,iptc:n,icc:s}=e;i.enabled&&t.deps.ad...
method parse (line 1) | async parse(){let{tiff:e,xmp:t,iptc:i,icc:n}=this.options;if(e.enabled...
method adaptTiffPropAsSegment (line 1) | adaptTiffPropAsSegment(e){if(this.parsers.tiff[e]){let t=this.parsers....
class Tt (line 1) | class Tt extends pe{constructor(...e){super(...e),f(this,"catchError",(e...
method constructor (line 1) | constructor(...e){super(...e),f(this,"catchError",(e=>this.errors.push...
method canHandle (line 1) | static canHandle(e,t){return 35152===t&&2303741511===e.getUint32(0)&&2...
method parse (line 1) | async parse(){let{file:e}=this;await this.findPngChunksInRange("PNG\r...
method findPngChunksInRange (line 1) | async findPngChunksInRange(e,t){let{file:i}=this;for(;e<t;){let t=i.ge...
method parseTextChunks (line 1) | parseTextChunks(){let e=this.metaChunks.filter((e=>e.type===It));for(l...
method injectKeyValToIhdr (line 1) | injectKeyValToIhdr(e,t){let i=this.parsers.ihdr;i&&i.raw.set(e,t)}
method findIhdr (line 1) | findIhdr(){let e=this.metaChunks.find((e=>e.type===bt));e&&!1!==this.o...
method findExif (line 1) | async findExif(){let e=this.metaChunks.find((e=>"exif"===e.type));e&&t...
method findXmp (line 1) | async findXmp(){let e=this.metaChunks.filter((e=>e.type===kt));for(let...
method findIcc (line 1) | async findIcc(){let e=this.metaChunks.find((e=>e.type===Pt));if(!e)ret...
class Dt (line 1) | class Dt extends ge{static canHandle(e,t){return 224===e.getUint8(t+1)&&...
method canHandle (line 1) | static canHandle(e,t){return 224===e.getUint8(t+1)&&1246120262===e.get...
method parse (line 1) | parse(){return this.parseTags(),this.translate(),this.output}
method parseTags (line 1) | parseTags(){this.raw=new Map([[0,this.chunk.getUint16(0)],[2,this.chun...
class Ot (line 1) | class Ot extends ge{parse(){return this.parseTags(),this.translate(),thi...
method parse (line 1) | parse(){return this.parseTags(),this.translate(),this.output}
method parseTags (line 1) | parseTags(){this.raw=new Map([[0,this.chunk.getUint32(0)],[4,this.chun...
class vt (line 1) | class vt extends ge{static canHandle(e,t){return 226===e.getUint8(t+1)&&...
method canHandle (line 1) | static canHandle(e,t){return 226===e.getUint8(t+1)&&1229144927===e.get...
method findPosition (line 1) | static findPosition(e,t){let i=super.findPosition(e,t);return i.chunkN...
method handleMultiSegments (line 1) | static handleMultiSegments(e){return function(e){let t=function(e){let...
method parse (line 1) | parse(){return this.raw=new Map,this.parseHeader(),this.parseTags(),th...
method parseHeader (line 1) | parseHeader(){let{raw:e}=this;this.chunk.byteLength<84&&m("ICC header ...
method parseTags (line 1) | parseTags(){let e,t,i,n,s,{raw:r}=this,a=this.chunk.getUint32(128),o=1...
method parseTag (line 1) | parseTag(e,t,i){switch(e){case"desc":return this.parseDesc(t);case"mlu...
method parseDesc (line 1) | parseDesc(e){let t=this.chunk.getUint32(e+8)-1;return S(this.chunk.get...
method parseText (line 1) | parseText(e,t){return S(this.chunk.getString(e+8,t-8))}
method parseSig (line 1) | parseSig(e){return S(this.chunk.getString(e+8,4))}
method parseMluc (line 1) | parseMluc(e){let{chunk:t}=this,i=t.getUint32(e+8),n=t.getUint32(e+12),...
method translateValue (line 1) | translateValue(e,t){return"string"==typeof e?t[e]||t[e.toLowerCase()]|...
function Rt (line 1) | function Rt(e,t){return S(e.getString(t,4))}
class Ft (line 1) | class Ft extends ge{static canHandle(e,t,i){return 237===e.getUint8(t+1)...
method canHandle (line 1) | static canHandle(e,t,i){return 237===e.getUint8(t+1)&&"Photoshop"===e....
method headerLength (line 1) | static headerLength(e,t,i){let n,s=this.containsIptc8bim(e,t,i);if(voi...
method containsIptc8bim (line 1) | static containsIptc8bim(e,t,i){for(let n=0;n<i;n++)if(this.isIptcSegme...
method isIptcSegmentHead (line 1) | static isIptcSegmentHead(e,t){return 56===e.getUint8(t)&&943868237===e...
method parse (line 1) | parse(){let{raw:e}=this,t=this.chunk.byteLength-1,i=!1;for(let n=0;n<t...
method pluralizeValue (line 1) | pluralizeValue(e,t){return void 0!==e?e instanceof Array?(e.push(t),e)...
FILE: javascript/extensions.js
function extensions_apply (line 1) | function extensions_apply(extensions_disabled_list, extensions_update_li...
function extensions_check (line 13) | function extensions_check(info, extensions_disabled_list, search_text, s...
function install_extension (line 23) | function install_extension(button, url) {
function uninstall_extension (line 34) | function uninstall_extension(button, url) {
function update_extension (line 45) | function update_extension(button, url) {
FILE: javascript/extraNetworks.js
function showCardDetails (line 60) | function showCardDetails(event) {
function getCardDetails (line 69) | function getCardDetails(...args) {
function readCardTags (line 77) | function readCardTags(el, tags) {
function readCardDescription (line 109) | function readCardDescription(page, item) {
function getCardsForActivePage (line 121) | function getCardsForActivePage() {
function filterExtraNetworksForTab (line 130) | async function filterExtraNetworksForTab(searchTerm) {
function tryToRemoveExtraNetworkFromPrompt (line 216) | function tryToRemoveExtraNetworkFromPrompt(textarea, text) {
function sortExtraNetworks (line 248) | function sortExtraNetworks(fixed = 'no') {
function refreshENInput (line 282) | function refreshENInput(tabName) {
function markSelectedCards (line 287) | async function markSelectedCards(selected, page = '') {
function extractLoraNames (line 296) | function extractLoraNames(prompt) {
function cardClicked (line 304) | function cardClicked(textToAdd) {
function extraNetworksSearchButton (line 314) | function extraNetworksSearchButton(event) {
function extraNetworksFilterVersion (line 327) | function extraNetworksFilterVersion(event) {
function selectStyle (line 348) | function selectStyle(name) {
function applyStyles (line 355) | function applyStyles(styles) {
function quickApplyStyle (line 371) | function quickApplyStyle() {
function quickSaveStyle (line 377) | function quickSaveStyle() {
function selectHistory (line 388) | function selectHistory(id) {
function closeDetailsEN (line 396) | function closeDetailsEN(...args) {
function refeshDetailsEN (line 407) | function refeshDetailsEN(args) {
function refreshENpage (line 417) | function refreshENpage() {
function setupExtraNetworksForTab (line 427) | function setupExtraNetworksForTab(tabName) {
function showNetworks (line 599) | async function showNetworks() {
function setupExtraNetworks (line 607) | async function setupExtraNetworks() {
FILE: javascript/gallery.js
constant SUPPORTED_EXTENSIONS (line 27) | const SUPPORTED_EXTENSIONS = ['jpg', 'jpeg', 'png', 'webp', 'tiff', 'jp2...
function getVisibleGalleryFiles (line 29) | function getVisibleGalleryFiles() {
function updateGallerySelectionClasses (line 34) | function updateGallerySelectionClasses(files = gallerySelection.files, i...
function refreshGallerySelection (line 40) | function refreshGallerySelection() {
function resetGallerySelection (line 48) | function resetGallerySelection() {
function applyGallerySelection (line 54) | function applyGallerySelection(index, { send = true } = {}) {
function setGallerySelectionByElement (line 69) | function setGallerySelectionByElement(element, options) {
function buildGalleryFileUrl (line 79) | function buildGalleryFileUrl(path) {
function awaitForOutstanding (line 92) | async function awaitForOutstanding(num, signal) {
function awaitForGallery (line 102) | async function awaitForGallery(expectedSize, signal) {
function updateGalleryStyles (line 107) | function updateGalleryStyles() {
class SimpleProgressBar (line 177) | class SimpleProgressBar {
method constructor (line 189) | constructor(monitoredSet) {
method start (line 201) | start(total) {
method attachTo (line 209) | attachTo(element) {
method clear (line 216) | clear() {
method #update (line 226) | #update(loaded, max) {
method #stop (line 246) | #stop() {
class SimpleFunctionQueue (line 255) | class SimpleFunctionQueue {
method constructor (line 260) | constructor(id) {
method abortLogger (line 266) | static abortLogger(identifier, result) {
method enqueue (line 280) | enqueue(config) {
method #tryRunNext (line 292) | async #tryRunNext() {
class GalleryFolder (line 316) | class GalleryFolder extends HTMLElement {
method constructor (line 321) | constructor(folder) {
method connectedCallback (line 338) | connectedCallback() {
method disconnectedCallback (line 353) | async disconnectedCallback() {
method getActive (line 362) | static getActive() {
method updateSelected (line 366) | updateSelected() {
function delayFetchThumb (line 377) | async function delayFetchThumb(fn, signal) {
class GalleryFile (line 398) | class GalleryFile extends HTMLElement {
method constructor (line 402) | constructor(folder, file, signal) {
method connectedCallback (line 421) | async connectedCallback() {
function createThumb (line 514) | async function createThumb(img) {
function handleSeparator (line 531) | async function handleSeparator(separator) {
function addSeparators (line 558) | async function addSeparators() {
function getHash (line 645) | async function getHash(str, algo = 'SHA-256') {
function updateStatusWithSort (line 663) | function updateStatusWithSort(...messages) {
function injectGalleryStatusCSS (line 688) | async function injectGalleryStatusCSS() {
function wsConnect (line 722) | async function wsConnect(socket, timeout = 5000) {
function gallerySearch (line 736) | async function gallerySearch() {
function gallerySort (line 840) | async function gallerySort(btn) {
function showCleaningMsg (line 962) | function showCleaningMsg(count, all = false) {
function thumbCacheCleanup (line 995) | async function thumbCacheCleanup(folder, imgCount, controller, force = f...
function resetGalleryState (line 1051) | function resetGalleryState(reason) {
function clearCacheIfDisabled (line 1062) | function clearCacheIfDisabled(browser_cache) {
function addCacheClearLabel (line 1090) | function addCacheClearLabel() { // Don't use async
function fetchFilesHT (line 1121) | async function fetchFilesHT(evt, controller) {
function fetchFilesWS (line 1156) | async function fetchFilesWS(evt) { // fetch file-by-file list over webso...
function updateFolders (line 1224) | async function updateFolders() {
function monitorGalleries (line 1237) | async function monitorGalleries() {
function setOverlayAnimation (line 1258) | async function setOverlayAnimation() {
function galleryClearInit (line 1265) | async function galleryClearInit() {
function initGalleryAutoRefresh (line 1275) | async function initGalleryAutoRefresh() {
function blockQueueUntilReady (line 1312) | async function blockQueueUntilReady() {
function initGallery (line 1328) | async function initGallery() { // triggered on gradio change to monitor ...
FILE: javascript/generationParams.js
function attachGalleryListeners (line 3) | function attachGalleryListeners(tabName) {
function initiGenerationParams (line 22) | async function initiGenerationParams() {
FILE: javascript/gpu.js
function updateGPUChart (line 4) | async function updateGPUChart(mem, load) {
function updateGPU (line 29) | async function updateGPU() {
function startGPU (line 60) | async function startGPU() {
function disableGPU (line 70) | async function disableGPU() {
FILE: javascript/guidance.js
function getGuidanceDocs (line 15) | function getGuidanceDocs(guider) {
FILE: javascript/hires.js
function onCalcResolutionHires (line 1) | function onCalcResolutionHires(width, height, hr_scale, hr_resize_x, hr_...
FILE: javascript/history.js
function refreshHistory (line 4) | function refreshHistory() {
FILE: javascript/imageParams.js
function initDragDrop (line 1) | async function initDragDrop() {
FILE: javascript/imageViewer.js
function cycleImageFit (line 6) | function cycleImageFit() {
function isInViewport (line 18) | function isInViewport(element) {
function closeModal (line 23) | function closeModal(evt, force = false) {
function modalImageSwitch (line 34) | function modalImageSwitch(offset) {
function modalSaveImage (line 70) | function modalSaveImage(event) {
function modalKeyHandler (line 78) | function modalKeyHandler(event) {
function getExif (line 97) | async function getExif(el) {
function displayExif (line 128) | async function displayExif(el) {
function showModal (line 134) | function showModal(event) {
function modalDownloadImage (line 151) | function modalDownloadImage() {
function modalZoomSet (line 164) | function modalZoomSet(modalImage, enable) {
function setupImageForLightbox (line 169) | function setupImageForLightbox(image) {
function modalZoomToggle (line 176) | function modalZoomToggle(event) {
function modalTileToggle (line 183) | function modalTileToggle(event) {
function modalResetInstance (line 198) | function modalResetInstance(event) {
function modalToggleParams (line 206) | function modalToggleParams(event) {
function galleryClickEventHandler (line 217) | function galleryClickEventHandler(event) {
function bindImageViewer (line 227) | async function bindImageViewer() {
function initImageViewer (line 237) | async function initImageViewer() {
FILE: javascript/indexdb.js
function initIndexDB (line 6) | async function initIndexDB() {
function idbIsReady (line 39) | function idbIsReady() {
function configureTransactionAbort (line 53) | function configureTransactionAbort({ transaction, signal, resolve, rejec...
function add (line 74) | async function add(record) {
function del (line 86) | async function del(hash) {
function get (line 98) | async function get(hash) {
function put (line 110) | async function put(record) {
function idbGetAllKeys (line 122) | async function idbGetAllKeys(index = null, query = null) {
function idbCount (line 150) | async function idbCount(folder) {
function idbFolderCleanup (line 179) | async function idbFolderCleanup(keepSet, folder, signal) {
function idbClearAll (line 196) | async function idbClearAll(signal) {
FILE: javascript/inputAccordion.js
function inputAccordionChecked (line 1) | function inputAccordionChecked(id, checked) {
function setupAccordion (line 7) | function setupAccordion(accordion) {
function initAccordions (line 53) | function initAccordions() {
FILE: javascript/loader.js
function preloadImages (line 3) | async function preloadImages() {
function removeSplash (line 29) | async function removeSplash() {
function createSplash (line 38) | async function createSplash() {
FILE: javascript/logMonitor.js
function dateToStr (line 7) | function dateToStr(ts) {
function htmlEscape (line 20) | function htmlEscape(text) {
function logMonitor (line 24) | async function logMonitor() {
function initLogMonitor (line 102) | async function initLogMonitor() {
FILE: javascript/logger.js
function xhrPost (line 82) | function xhrPost(url, data, handler = undefined, errorHandler = undefine...
FILE: javascript/login.js
function forceLogin (line 25) | function forceLogin() {
function loginCheck (line 63) | function loginCheck() {
FILE: javascript/monitor.js
class ConnectionMonitorState (line 1) | class ConnectionMonitorState {
method getModel (line 8) | static getModel() {
method trimModelName (line 13) | static trimModelName(name) {
method setData (line 18) | static setData({ online, updated, commit, branch }) {
method setElement (line 25) | static setElement(el) {
method toHTML (line 29) | static toHTML(modelOverride) {
method updateState (line 40) | static updateState(incomingModel) {
function updateIndicator (line 48) | async function updateIndicator(online, data, msg) {
function monitorConnection (line 65) | async function monitorConnection() {
FILE: javascript/notification.js
function sendNotification (line 6) | async function sendNotification() {
FILE: javascript/panZoom.js
function r (line 1) | function r(e,n,t){function o(i,f){if(!n[i]){if(!e[i]){var c="function"==...
function createPanZoom (line 28) | function createPanZoom(domElement, options) {
function parseTransformOrigin (line 893) | function parseTransformOrigin(options) {
function failTransformOrigin (line 904) | function failTransformOrigin(options) {
function noop (line 917) | function noop() { }
function validateBounds (line 919) | function validateBounds(bounds) {
function isNumber (line 936) | function isNumber(x) {
function isNaN (line 941) | function isNaN(value) {
function rigidScroll (line 949) | function rigidScroll() {
function autoRun (line 957) | function autoRun() {
function createTextSelectionInterceptor (line 1036) | function createTextSelectionInterceptor(useFake) {
function disabled (line 1074) | function disabled(e) {
function noop (line 1079) | function noop() {}
function makeDomController (line 1086) | function makeDomController(domElement, options) {
function isDomElement (line 1131) | function isDomElement(element) {
function kinetic (line 1141) | function kinetic(getPoint, scroll, settings) {
function getCancelAnimationFrame (line 1260) | function getCancelAnimationFrame() {
function getRequestAnimationFrame (line 1265) | function getRequestAnimationFrame() {
function makeSvgController (line 1276) | function makeSvgController(svgElement, options) {
function isSVGElement (line 1349) | function isSVGElement(element) {
function Transform (line 1355) | function Transform() {
function animate (line 1379) | function animate(source, target, options) {
function noop (line 1441) | function noop() { }
function getScheduler (line 1443) | function getScheduler(scheduler) {
function rafScheduler (line 1454) | function rafScheduler() {
function timeoutScheduler (line 1461) | function timeoutScheduler() {
function makeAggregateRaf (line 1472) | function makeAggregateRaf() {
function A (line 1535) | function A (aA1, aA2) { return 1.0 - 3.0 * aA2 + 3.0 * aA1; }
function B (line 1536) | function B (aA1, aA2) { return 3.0 * aA2 - 6.0 * aA1; }
function C (line 1537) | function C (aA1) { return 3.0 * aA1; }
function calcBezier (line 1540) | function calcBezier (aT, aA1, aA2) { return ((A(aA1, aA2) * aT + B(aA1, ...
function getSlope (line 1543) | function getSlope (aT, aA1, aA2) { return 3.0 * A(aA1, aA2) * aT * aT + ...
function binarySubdivide (line 1545) | function binarySubdivide (aX, aA, aB, mX1, mX2) {
function newtonRaphsonIterate (line 1559) | function newtonRaphsonIterate (aX, aGuessT, mX1, mX2) {
function LinearEasing (line 1571) | function LinearEasing (x) {
function getTForX (line 1590) | function getTForX (aX) {
function createEventsStorage (line 1637) | function createEventsStorage(subject) {
function validateSubject (line 1704) | function validateSubject(subject) {
function addWheelListener (line 1736) | function addWheelListener(element, listener, useCapture) {
function removeWheelListener (line 1740) | function removeWheelListener( element, listener, useCapture ) {
FILE: javascript/progressBar.js
function setRefreshInterval (line 4) | function setRefreshInterval() {
function pad2 (line 14) | function pad2(x) {
function formatTime (line 18) | function formatTime(secs) {
function checkPaused (line 24) | function checkPaused(state) {
function setProgress (line 36) | function setProgress(res) {
function requestInterrupt (line 73) | function requestInterrupt() {
function randomId (line 77) | function randomId() {
function requestProgress (line 83) | function requestProgress(id_task, progressEl, galleryEl, atEnd = null, o...
FILE: javascript/promptChecker.js
function checkBrackets (line 6) | function checkBrackets(textArea, counterElt) {
function setupBracketChecking (line 22) | function setupBracketChecking(idPrompt, idCounter) {
function initPromptChecker (line 29) | async function initPromptChecker() {
FILE: javascript/script.js
function sleep (line 1) | async function sleep(ms) {
function gradioApp (line 5) | function gradioApp() {
function logFn (line 12) | function logFn(func) {
function getUICurrentTab (line 22) | function getUICurrentTab() {
function getUICurrentTabContent (line 26) | function getUICurrentTabContent() {
function onAfterUiUpdate (line 41) | function onAfterUiUpdate(callback) {
function onUiUpdate (line 45) | function onUiUpdate(callback) {
function onUiLoaded (line 49) | function onUiLoaded(callback) {
function onUiReady (line 53) | function onUiReady(callback) {
function onUiTabChange (line 57) | function onUiTabChange(callback) {
function onOptionsChanged (line 61) | function onOptionsChanged(callback) {
function executeCallbacks (line 65) | function executeCallbacks(queue, arg) {
function scheduleAfterUiUpdateCallbacks (line 79) | function scheduleAfterUiUpdateCallbacks() {
function mutationCallback (line 90) | async function mutationCallback(mutations) {
function uiElementIsVisible (line 149) | function uiElementIsVisible(el) {
function uiElementInSight (line 157) | function uiElementInSight(el) {
FILE: javascript/setHints.js
function cycleLocale (line 19) | async function cycleLocale() {
function resetLocale (line 35) | async function resetLocale() {
function tooltipCreate (line 48) | async function tooltipCreate() {
function expandTooltip (line 79) | async function expandTooltip(element, longHint) {
function tooltipShowDelegated (line 91) | async function tooltipShowDelegated(e) { // use event delegation to hand...
function tooltipHideDelegated (line 95) | async function tooltipHideDelegated(e) {
function tooltipShow (line 99) | async function tooltipShow(e) {
function tooltipHide (line 162) | async function tooltipHide(e) {
function validateHints (line 171) | async function validateHints(json, elements, tab) {
function addMissingHints (line 195) | async function addMissingHints(json, missingHints) {
function removeOrphanedHints (line 206) | async function removeOrphanedHints(json, orphanedHints) {
function replaceButtonText (line 213) | async function replaceButtonText(el) {
function getLocaleData (line 232) | async function getLocaleData(desiredLocale = null) {
function replaceTextContent (line 267) | async function replaceTextContent(el, text) {
function setHint (line 280) | async function setHint(el, entry) {
function setHints (line 292) | async function setHints(analyze = false) {
function applyHintToElement (line 354) | async function applyHintToElement(el) {
function initializeDOMObserver (line 377) | function initializeDOMObserver() {
FILE: javascript/settings.js
function getSettingsTabs (line 5) | function getSettingsTabs() {
function monitorOption (line 14) | function monitorOption(option, callback) {
function updateOpts (line 24) | async function updateOpts(json_string) {
function showAllSettings (line 56) | function showAllSettings() {
function markIfModified (line 66) | function markIfModified(setting_name, value) {
function updateAllOpts (line 100) | function updateAllOpts() {
method set (line 120) | set(newValue) {
method get (line 127) | get() {
function initModels (line 159) | async function initModels() {
function initSettings (line 193) | async function initSettings() {
FILE: javascript/startup.js
function waitForOpts (line 5) | async function waitForOpts() {
function initStartup (line 26) | async function initStartup() {
FILE: javascript/timesheet.js
class Bubble (line 3) | class Bubble {
method constructor (line 4) | constructor(min, start, end, label, scale, type) {
method getDateLabel (line 17) | getDateLabel() {
class Timesheet (line 22) | class Timesheet {
method constructor (line 23) | constructor(container, data) {
FILE: javascript/trainMonitor.js
function startTrainMonitor (line 1) | function startTrainMonitor() {
FILE: javascript/ui.js
function rememberGallerySelection (line 13) | function rememberGallerySelection(name) {
function set_theme (line 17) | function set_theme(theme) {
function update_token_counter (line 22) | function update_token_counter(button_id) {
function clip_gallery_urls (line 27) | function clip_gallery_urls(gallery) {
function isVisible (line 35) | function isVisible(el) {
function all_gallery_buttons (line 42) | function all_gallery_buttons() {
function selected_gallery_button (line 52) | function selected_gallery_button() {
function selected_gallery_index (line 62) | function selected_gallery_index() {
function selected_gallery_files (line 74) | function selected_gallery_files(tabname) {
function extract_image_from_gallery (line 95) | function extract_image_from_gallery(gallery) {
function send_to_kanvas (line 103) | function send_to_kanvas(gallery) {
function setTheme (line 113) | async function setTheme(val, old) {
function setFontSize (line 134) | function setFontSize(val, old) {
function switchToTab (line 149) | function switchToTab(tab) {
function switch_to_txt2img (line 156) | function switch_to_txt2img(...args) {
function switch_to_img2img_tab (line 161) | function switch_to_img2img_tab(no) {
function switch_to_img2img (line 166) | function switch_to_img2img(...args) {
function switch_to_inpaint (line 172) | function switch_to_inpaint(...args) {
function switch_to_sketch (line 178) | function switch_to_sketch(...args) {
function switch_to_composite (line 184) | function switch_to_composite(...args) {
function switch_to_extras (line 190) | function switch_to_extras(...args) {
function switch_to_control (line 195) | function switch_to_control(...args) {
function switch_to_video (line 200) | function switch_to_video(...args) {
function switch_to_caption (line 205) | function switch_to_caption(...args) {
function get_tab_index (line 210) | function get_tab_index(tabId) {
function create_tab_index_args (line 219) | function create_tab_index_args(tabId, args) {
function get_img2img_tab_index (line 225) | function get_img2img_tab_index(...args) {
function create_submit_args (line 232) | function create_submit_args(args) {
function showSubmitButtons (line 238) | function showSubmitButtons(tabname, show) {}
function clearGallery (line 240) | function clearGallery(tabname) {
function submit_txt2img (line 248) | function submit_txt2img(...args) {
function submit_img2img (line 260) | function submit_img2img(...args) {
function submit_control (line 273) | function submit_control(...args) {
function submit_video (line 291) | function submit_video(...args) {
function submit_framepack (line 303) | function submit_framepack(...args) {
function submit_ltx (line 312) | function submit_ltx(...args) {
function submit_video_wrapper (line 321) | function submit_video_wrapper(...args) {
function submit_postprocessing (line 330) | function submit_postprocessing(...args) {
function modelmerger (line 339) | function modelmerger(...args) {
function clearPrompts (line 346) | function clearPrompts(prompt, negative_prompt) {
function recalculatePromptTokens (line 354) | function recalculatePromptTokens(name) {
function recalculate_prompts_txt2img (line 360) | function recalculate_prompts_txt2img(...args) {
function recalculate_prompts_img2img (line 366) | function recalculate_prompts_img2img(...args) {
function recalculate_prompts_inpaint (line 372) | function recalculate_prompts_inpaint(...args) {
function recalculate_prompts_control (line 378) | function recalculate_prompts_control(...args) {
function registerDragDrop (line 384) | function registerDragDrop() {
function sortUIElements (line 400) | function sortUIElements() {
function registerTextarea (line 431) | async function registerTextarea(id, id_counter, id_button) {
function update_txt2img_tokens (line 455) | function update_txt2img_tokens(...args) {
function update_img2img_tokens (line 461) | function update_img2img_tokens(...args) {
function getTranslation (line 467) | function getTranslation(...args) {
function monitorServerStatus (line 471) | function monitorServerStatus() {
function restartReload (line 492) | function restartReload() {
function updateInput (line 501) | function updateInput(target) {
function selectCheckpoint (line 508) | function selectCheckpoint(name) {
function selectVAE (line 520) | function selectVAE(name) {
function selectReference (line 527) | function selectReference(name) {
function currentImageResolutionimg2img (line 534) | function currentImageResolutionimg2img(_a, _b, scaleBy) {
function currentImageResolutioncontrol (line 539) | function currentImageResolutioncontrol(_a, _b, scaleBy) {
function updateImg2imgResizeToTextAfterChangingImage (line 544) | function updateImg2imgResizeToTextAfterChangingImage() {
function createThemeElement (line 550) | function createThemeElement() {
function toggleCompact (line 559) | function toggleCompact(val, old) {
function previewTheme (line 575) | function previewTheme() {
function browseFolder (line 596) | async function browseFolder() {
function reconnectUI (line 602) | async function reconnectUI() {
FILE: javascript/uiConfig.js
function uiOpenSubmenus (line 1) | function uiOpenSubmenus() {
function getUIDefaults (line 13) | async function getUIDefaults() {
FILE: launch.py
function init_args (line 36) | def init_args():
function init_paths (line 45) | def init_paths():
function get_custom_args (line 54) | def get_custom_args():
function commit_hash (line 76) | def commit_hash(): # compatbility function
function run (line 89) | def run(command, desc=None, errdesc=None, custom_env=None, live=False): ...
function check_run (line 106) | def check_run(command): # compatbility function
function is_installed (line 112) | def is_installed(pkg): # compatbility function
function repo_dir (line 117) | def repo_dir(name): # compatbility function
function run_python (line 122) | def run_python(code, desc=None, errdesc=None): # compatbility function
function run_pip (line 127) | def run_pip(pkg, desc=None): # compatbility function
function check_run_python (line 140) | def check_run_python(code): # compatbility function
function git_clone (line 144) | def git_clone(url, tgt, _name, commithash=None): # compatbility function
function run_extension_installer (line 148) | def run_extension_installer(ext_dir): # compatbility function
function get_memory_stats (line 152) | def get_memory_stats(detailed:bool=False):
function clean_server (line 162) | def clean_server():
function start_server (line 191) | def start_server(immediate=True, server=None):
function main (line 229) | def main():
FILE: modules/apg/__init__.py
class MomentumBuffer (line 10) | class MomentumBuffer:
method __init__ (line 11) | def __init__(self, momentum_val: float):
method update (line 14) | def update(self, update_value: torch.Tensor):
function project (line 26) | def project(
function normalized_guidance (line 41) | def normalized_guidance(
FILE: modules/apg/pipeline_stable_cascade_prior_apg.py
class StableCascadePriorPipelineOutput (line 53) | class StableCascadePriorPipelineOutput(BaseOutput):
class StableCascadePriorPipelineAPG (line 73) | class StableCascadePriorPipelineAPG(DiffusionPipeline):
method __init__ (line 105) | def __init__(
method prepare_latents (line 126) | def prepare_latents(
method encode_prompt (line 146) | def encode_prompt(
method encode_image (line 253) | def encode_image(self, images, device, dtype, batch_size, num_images_p...
method check_inputs (line 267) | def check_inputs(
method guidance_scale (line 345) | def guidance_scale(self):
method do_classifier_free_guidance (line 349) | def do_classifier_free_guidance(self):
method num_timesteps (line 353) | def num_timesteps(self):
method get_timestep_ratio_conditioning (line 356) | def get_timestep_ratio_conditioning(self, t, alphas_cumprod):
method __call__ (line 368) | def __call__(
FILE: modules/apg/pipeline_stable_diffision_xl_apg.py
function rescale_noise_cfg (line 62) | def rescale_noise_cfg(noise_cfg, noise_pred_text, guidance_rescale=0.0):
function retrieve_timesteps (line 77) | def retrieve_timesteps(
class StableDiffusionXLPipelineAPG (line 136) | class StableDiffusionXLPipelineAPG(
method __init__ (line 208) | def __init__(
method encode_prompt (line 248) | def encode_prompt(
method encode_image (line 483) | def encode_image(self, image, device, num_images_per_prompt, output_hi...
method prepare_ip_adapter_image_embeds (line 508) | def prepare_ip_adapter_image_embeds(
method prepare_extra_step_kwargs (line 554) | def prepare_extra_step_kwargs(self, generator, eta):
method check_inputs (line 571) | def check_inputs(
method prepare_latents (line 668) | def prepare_latents(self, batch_size, num_channels_latents, height, wi...
method _get_add_time_ids (line 690) | def _get_add_time_ids(
method upcast_vae (line 708) | def upcast_vae(self):
method get_guidance_scale_embedding (line 727) | def get_guidance_scale_embedding(
method guidance_scale (line 758) | def guidance_scale(self):
method guidance_rescale (line 762) | def guidance_rescale(self):
method clip_skip (line 766) | def clip_skip(self):
method do_classifier_free_guidance (line 773) | def do_classifier_free_guidance(self):
method cross_attention_kwargs (line 777) | def cross_attention_kwargs(self):
method denoising_end (line 781) | def denoising_end(self):
method num_timesteps (line 785) | def num_timesteps(self):
method interrupt (line 789) | def interrupt(self):
method __call__ (line 794) | def __call__(
FILE: modules/apg/pipeline_stable_diffusion_apg.py
function rescale_noise_cfg (line 58) | def rescale_noise_cfg(noise_cfg, noise_pred_text, guidance_rescale=0.0):
function retrieve_timesteps (line 72) | def retrieve_timesteps(
class StableDiffusionPipelineAPG (line 131) | class StableDiffusionPipelineAPG(
method __init__ (line 177) | def __init__(
method _encode_prompt (line 269) | def _encode_prompt(
method encode_prompt (line 301) | def encode_prompt(
method encode_image (line 483) | def encode_image(self, image, device, num_images_per_prompt, output_hi...
method prepare_ip_adapter_image_embeds (line 507) | def prepare_ip_adapter_image_embeds(
method run_safety_checker (line 552) | def run_safety_checker(self, image, device, dtype):
method decode_latents (line 566) | def decode_latents(self, latents):
method prepare_extra_step_kwargs (line 577) | def prepare_extra_step_kwargs(self, generator, eta):
method check_inputs (line 594) | def check_inputs(
method prepare_latents (line 663) | def prepare_latents(self, batch_size, num_channels_latents, height, wi...
method get_guidance_scale_embedding (line 686) | def get_guidance_scale_embedding(
method guidance_scale (line 717) | def guidance_scale(self):
method guidance_rescale (line 721) | def guidance_rescale(self):
method clip_skip (line 725) | def clip_skip(self):
method do_classifier_free_guidance (line 732) | def do_classifier_free_guidance(self):
method cross_attention_kwargs (line 736) | def cross_attention_kwargs(self):
method num_timesteps (line 740) | def num_timesteps(self):
method interrupt (line 744) | def interrupt(self):
method __call__ (line 749) | def __call__(
FILE: modules/api/api.py
class Api (line 14) | class Api:
method __init__ (line 15) | def __init__(self, app: FastAPI, queue_lock: Lock):
method register (line 39) | def register(self):
method add_api_route (line 128) | def add_api_route(self, path: str, fn, auth: bool = True, **kwargs):
method auth (line 137) | def auth(self, credentials: HTTPBasicCredentials = Depends(HTTPBasic())):
method get_session_start (line 149) | def get_session_start(self, req: Request, agent: Optional[str] = None):
method launch (line 155) | def launch(self):
FILE: modules/api/control.py
class ItemControl (line 12) | class ItemControl(BaseModel):
class ItemXYZ (line 21) | class ItemXYZ(BaseModel):
class ResControl (line 57) | class ResControl(BaseModel):
class APIControl (line 64) | class APIControl():
method __init__ (line 65) | def __init__(self, queue_lock: Lock):
method sanitize_args (line 70) | def sanitize_args(self, args: dict):
method sanitize_b64 (line 82) | def sanitize_b64(self, request):
method prepare_face_module (line 97) | def prepare_face_module(self, req):
method prepare_xyz_grid (line 118) | def prepare_xyz_grid(self, req):
method prepare_ip_adapter (line 133) | def prepare_ip_adapter(self, request):
method prepare_control (line 153) | def prepare_control(self, req):
method post_control (line 185) | def post_control(self, req: ReqControl):
FILE: modules/api/docs.py
function get_swagger_ui_html (line 8) | def get_swagger_ui_html(*,
function create_docs (line 59) | def create_docs(app: FastAPI):
function create_redocs (line 83) | def create_redocs(app: FastAPI):
FILE: modules/api/endpoints.py
function get_samplers (line 8) | def get_samplers():
function get_sampler (line 20) | def get_sampler():
function get_sd_vaes (line 32) | def get_sd_vaes():
function get_upscalers (line 36) | def get_upscalers():
function get_sd_models (line 39) | def get_sd_models():
function get_controlnets (line 47) | def get_controlnets(model_type: Optional[str] = None):
function get_restorers (line 51) | def get_restorers():
function get_detailers (line 54) | def get_detailers():
function get_prompt_styles (line 58) | def get_prompt_styles():
function get_embeddings (line 61) | def get_embeddings():
function get_extra_networks (line 67) | def get_extra_networks(page: Optional[str] = None, name: Optional[str] =...
function get_interrogate (line 94) | def get_interrogate():
function get_schedulers (line 98) | def get_schedulers():
function post_interrogate (line 105) | def post_interrogate(req: models.ReqInterrogate):
function post_vqa (line 128) | def post_vqa(req: models.ReqVQA):
function post_unload_checkpoint (line 137) | def post_unload_checkpoint():
function post_reload_checkpoint (line 143) | def post_reload_checkpoint(force:bool=False):
function post_lock_checkpoint (line 150) | def post_lock_checkpoint(lock:bool=False):
function get_checkpoint (line 155) | def get_checkpoint():
function set_checkpoint (line 175) | def set_checkpoint(sd_model_checkpoint: str, dtype:str=None, force:bool=...
function post_refresh_checkpoints (line 186) | def post_refresh_checkpoints():
function post_refresh_vae (line 190) | def post_refresh_vae():
function get_modules (line 194) | def get_modules():
function get_extensions_list (line 218) | def get_extensions_list():
function post_pnginfo (line 237) | def post_pnginfo(req: models.ReqImageInfo):
function get_latent_history (line 251) | def get_latent_history():
function post_latent_history (line 254) | def post_latent_history(req: models.ReqLatentHistory):
FILE: modules/api/gallery.py
class ReqFiles (line 36) | class ReqFiles(BaseModel):
class ConnectionManager (line 41) | class ConnectionManager:
method __init__ (line 42) | def __init__(self):
method connect (line 45) | async def connect(self, ws: WebSocket):
method disconnect (line 51) | def disconnect(self, ws: WebSocket):
method send (line 55) | async def send(self, ws: WebSocket, data: Union[str, dict, bytes]):
method broadcast (line 68) | async def broadcast(self, data: Union[str, dict, bytes]):
function register_api (line 74) | def register_api(app: FastAPI): # register api
FILE: modules/api/generate.py
class APIGenerate (line 12) | class APIGenerate():
method __init__ (line 13) | def __init__(self, queue_lock: Lock):
method sanitize_args (line 19) | def sanitize_args(self, args: dict):
method sanitize_b64 (line 30) | def sanitize_b64(self, request):
method prepare_face_module (line 44) | def prepare_face_module(self, request):
method prepare_ip_adapter (line 65) | def prepare_ip_adapter(self, request, p):
method post_text2img (line 87) | def post_text2img(self, txt2imgreq: models.ReqTxt2Img):
method post_img2img (line 131) | def post_img2img(self, img2imgreq: models.ReqImg2Img):
FILE: modules/api/gpu.py
function get_gpu_status (line 8) | def get_gpu_status():
FILE: modules/api/helpers.py
function validate_sampler_name (line 10) | def validate_sampler_name(name):
function decode_base64_to_image (line 17) | def decode_base64_to_image(encoding, quiet=False):
function encode_pil_to_base64 (line 36) | def encode_pil_to_base64(image):
function upscaler_to_index (line 52) | def upscaler_to_index(name: str):
function save_image (line 58) | def save_image(image, fn, ext):
FILE: modules/api/loras.py
function get_lora (line 5) | def get_lora(lora: str) -> dict:
function get_loras (line 13) | def get_loras():
function post_refresh_loras (line 20) | def post_refresh_loras():
function register_api (line 25) | def register_api():
FILE: modules/api/middleware.py
function setup_middleware (line 27) | def setup_middleware(app: FastAPI, cmd_opts):
FILE: modules/api/mime.py
function register (line 4) | def register():
FILE: modules/api/models.py
class ModelDef (line 16) | class ModelDef(BaseModel):
class DummyConfig (line 24) | class DummyConfig:
class PydanticModelGenerator (line 32) | class PydanticModelGenerator:
method __init__ (line 33) | def __init__(
method generate_model (line 75) | def generate_model(self):
class ItemSampler (line 87) | class ItemSampler(BaseModel):
class ItemVae (line 91) | class ItemVae(BaseModel):
class ItemUpscaler (line 95) | class ItemUpscaler(BaseModel):
class ItemModel (line 102) | class ItemModel(BaseModel):
class ItemHypernetwork (line 111) | class ItemHypernetwork(BaseModel):
class ItemDetailer (line 115) | class ItemDetailer(BaseModel):
class ItemGAN (line 119) | class ItemGAN(BaseModel):
class ItemStyle (line 124) | class ItemStyle(BaseModel):
class ItemExtraNetwork (line 132) | class ItemExtraNetwork(BaseModel):
class ItemArtist (line 141) | class ItemArtist(BaseModel):
class ItemEmbedding (line 146) | class ItemEmbedding(BaseModel):
class ItemIPAdapter (line 153) | class ItemIPAdapter(BaseModel):
class ItemFace (line 162) | class ItemFace(BaseModel):
class ScriptArg (line 178) | class ScriptArg(BaseModel):
class ItemScript (line 186) | class ItemScript(BaseModel):
class ItemExtension (line 192) | class ItemExtension(BaseModel):
class ItemScheduler (line 201) | class ItemScheduler(BaseModel):
class ResTxt2Img (line 229) | class ResTxt2Img(BaseModel):
class ResImg2Img (line 259) | class ResImg2Img(BaseModel):
class FileData (line 264) | class FileData(BaseModel):
class ReqProcess (line 268) | class ReqProcess(BaseModel):
class ResProcess (line 282) | class ResProcess(BaseModel):
class ReqPromptEnhance (line 286) | class ReqPromptEnhance(BaseModel):
class ResPromptEnhance (line 295) | class ResPromptEnhance(BaseModel):
class ReqProcessImage (line 299) | class ReqProcessImage(ReqProcess):
class ResProcessImage (line 302) | class ResProcessImage(ResProcess):
class ReqProcessBatch (line 305) | class ReqProcessBatch(ReqProcess):
class ResProcessBatch (line 308) | class ResProcessBatch(ResProcess):
class ReqImageInfo (line 311) | class ReqImageInfo(BaseModel):
class ResImageInfo (line 314) | class ResImageInfo(BaseModel):
class ReqGetLog (line 319) | class ReqGetLog(BaseModel):
class ReqPostLog (line 324) | class ReqPostLog(BaseModel):
class ReqHistory (line 329) | class ReqHistory(BaseModel):
class ReqProgress (line 332) | class ReqProgress(BaseModel):
class ResProgress (line 335) | class ResProgress(BaseModel):
class ResHistory (line 343) | class ResHistory(BaseModel):
class ResStatus (line 351) | class ResStatus(BaseModel):
class ReqInterrogate (line 368) | class ReqInterrogate(BaseModel):
class ResInterrogate (line 375) | class ResInterrogate(BaseModel):
class ReqVQA (line 383) | class ReqVQA(BaseModel):
class ReqLatentHistory (line 389) | class ReqLatentHistory(BaseModel):
class ResVQA (line 392) | class ResVQA(BaseModel):
class ResTrain (line 395) | class ResTrain(BaseModel):
class ResCreate (line 398) | class ResCreate(BaseModel):
class ResPreprocess (line 401) | class ResPreprocess(BaseModel):
class ResEmbeddings (line 429) | class ResEmbeddings(BaseModel):
class ResMemory (line 433) | class ResMemory(BaseModel):
class ResScripts (line 437) | class ResScripts(BaseModel):
class ResGPU (line 442) | class ResGPU(BaseModel): # definition of http response
function create_model_from_signature (line 449) | def create_model_from_signature(func: Callable, model_name: str, base_mo...
FILE: modules/api/nudenet.py
function nudenet_censor (line 5) | def nudenet_censor(
function prompt_check (line 25) | def prompt_check(
function image_guard (line 40) | def image_guard(
function banned_words (line 50) | def banned_words(
function register_api (line 59) | def register_api():
FILE: modules/api/nvml.py
function install (line 4) | def install(*args, **kwargs): # pylint: disable=unused-argument
function warn_once (line 14) | def warn_once(msg):
function get_reason (line 20) | def get_reason(val):
function get_nvml (line 36) | def get_nvml():
FILE: modules/api/process.py
class ReqPreprocess (line 15) | class ReqPreprocess(BaseModel):
class ResPreprocess (line 20) | class ResPreprocess(BaseModel):
class ReqMask (line 24) | class ReqMask(BaseModel):
class ReqFace (line 31) | class ReqFace(BaseModel):
class ResFace (line 35) | class ResFace(BaseModel):
class ResMask (line 42) | class ResMask(BaseModel):
class ItemPreprocess (line 45) | class ItemPreprocess(BaseModel):
class ItemMask (line 49) | class ItemMask(BaseModel):
class APIProcess (line 56) | class APIProcess():
method __init__ (line 57) | def __init__(self, queue_lock: Lock):
method get_preprocess (line 60) | def get_preprocess(self):
method post_preprocess (line 67) | def post_preprocess(self, req: ReqPreprocess):
method get_mask (line 86) | def get_mask(self):
method post_mask (line 90) | def post_mask(self, req: ReqMask):
method post_detect (line 115) | def post_detect(self, req: ReqFace):
method post_prompt_enhance (line 135) | def post_prompt_enhance(self, req: models.ReqPromptEnhance):
method set_upscalers (line 179) | def set_upscalers(self, req: dict):
method extras_single_image_api (line 185) | def extras_single_image_api(self, req: models.ReqProcessImage):
method extras_batch_images_api (line 192) | def extras_batch_images_api(self, req: models.ReqProcessBatch):
FILE: modules/api/rocm_smi.py
class ThrottleStatus (line 21) | class ThrottleStatus(IntFlag):
method active (line 58) | def active(self):
method __iter__ (line 62) | def __iter__(self):
method __str__ (line 65) | def __str__(self):
function get_rocm_smi (line 69) | def get_rocm_smi():
FILE: modules/api/script.py
function script_name_to_index (line 9) | def script_name_to_index(name, scripts_list):
function get_selectable_script (line 22) | def get_selectable_script(script_name, script_runner):
function get_scripts_list (line 32) | def get_scripts_list():
function get_script_info (line 39) | def get_script_info(script_name: Optional[str] = None):
function get_script (line 48) | def get_script(script_name, script_runner):
function init_default_script_args (line 57) | def init_default_script_args(script_runner):
function init_script_args (line 80) | def init_script_args(p, request, default_script_args, selectable_scripts...
FILE: modules/api/server.py
function post_shutdown (line 11) | def post_shutdown():
function get_js (line 16) | def get_js(request: Request):
function get_motd (line 42) | def get_motd():
function get_version (line 61) | def get_version():
function get_platform (line 64) | def get_platform():
function get_log (line 69) | def get_log(req: models.ReqGetLog = Depends()):
function post_log (line 75) | def post_log(req: models.ReqPostLog):
function get_config (line 85) | def get_config():
function set_config (line 98) | def set_config(req: dict[str, Any]):
function get_cmd_flags (line 105) | def get_cmd_flags():
function get_history (line 108) | def get_history(req: models.ReqHistory = Depends()):
function get_progress (line 116) | def get_progress(req: models.ReqProgress = Depends()):
function get_status (line 140) | def get_status():
function post_interrupt (line 143) | def post_interrupt():
function post_skip (line 147) | def post_skip():
function get_memory (line 150) | def get_memory():
FILE: modules/api/xpu_smi.py
function get_xpu_smi (line 8) | def get_xpu_smi():
FILE: modules/api/xyz_grid.py
function xyz_grid_enum (line 4) | def xyz_grid_enum(option: str = "") -> List[dict]:
function register_api (line 24) | def register_api():
FILE: modules/attention.py
function set_dynamic_attention (line 9) | def set_dynamic_attention():
function set_triton_flash_attention (line 20) | def set_triton_flash_attention(backend: str):
function set_flex_attention (line 51) | def set_flex_attention():
function set_ck_flash_attention (line 87) | def set_ck_flash_attention(backend: str, device: torch.device):
function set_sage_attention (line 129) | def set_sage_attention(backend: str, device: torch.device):
function set_diffusers_attention (line 183) | def set_diffusers_attention(pipe, quiet:bool=False):
FILE: modules/ben2/__init__.py
function remove (line 4) | def remove(image, refine: bool = True):
FILE: modules/ben2/ben2_model.py
class Mlp (line 17) | class Mlp(nn.Module):
method __init__ (line 20) | def __init__(self, in_features, hidden_features=None, out_features=Non...
method forward (line 29) | def forward(self, x):
function window_partition (line 38) | def window_partition(x, window_size):
function window_reverse (line 52) | def window_reverse(windows, window_size, H, W):
class WindowAttention (line 68) | class WindowAttention(nn.Module):
method __init__ (line 81) | def __init__(self, dim, window_size, num_heads, qkv_bias=True, qk_scal...
method forward (line 115) | def forward(self, x, mask=None):
class SwinTransformerBlock (line 149) | class SwinTransformerBlock(nn.Module):
method __init__ (line 166) | def __init__(self, dim, num_heads, window_size=7, shift_size=0,
method forward (line 190) | def forward(self, x, mask_matrix):
class PatchMerging (line 249) | class PatchMerging(nn.Module):
method __init__ (line 255) | def __init__(self, dim, norm_layer=nn.LayerNorm):
method forward (line 261) | def forward(self, x, H, W):
class BasicLayer (line 290) | class BasicLayer(nn.Module):
method __init__ (line 308) | def __init__(self,
method forward (line 350) | def forward(self, x, H, W):
class PatchEmbed (line 392) | class PatchEmbed(nn.Module):
method __init__ (line 401) | def __init__(self, patch_size=4, in_chans=3, embed_dim=96, norm_layer=...
method forward (line 415) | def forward(self, x):
class SwinTransformer (line 434) | class SwinTransformer(nn.Module):
method __init__ (line 462) | def __init__(self,
method _freeze_stages (line 541) | def _freeze_stages(self):
method forward (line 559) | def forward(self, x):
function get_activation_fn (line 597) | def get_activation_fn(activation):
function make_cbr (line 605) | def make_cbr(in_dim, out_dim):
function make_cbg (line 609) | def make_cbg(in_dim, out_dim):
function rescale_to (line 613) | def rescale_to(x, scale_factor: float = 2, interpolation='nearest'):
function resize_as (line 617) | def resize_as(x, y, interpolation='bilinear'):
function image2patches (line 621) | def image2patches(x):
function patches2image (line 627) | def patches2image(x):
class PositionEmbeddingSine (line 634) | class PositionEmbeddingSine:
method __init__ (line 635) | def __init__(self, num_pos_feats=64, temperature=10000, normalize=Fals...
method __call__ (line 647) | def __call__(self, b, h, w):
class MCLM (line 670) | class MCLM(nn.Module):
method __init__ (line 671) | def __init__(self, d_model, num_heads, pool_ratios=[1, 4, 8]):
method forward (line 696) | def forward(self, l, g):
class MCRM (line 762) | class MCRM(nn.Module):
method __init__ (line 763) | def __init__(self, d_model, num_heads, pool_ratios=[4, 8, 16], h=None)...
method forward (line 783) | def forward(self, x):
class BEN_Base (line 821) | class BEN_Base(nn.Module):
method __init__ (line 822) | def __init__(self):
method forward (line 871) | def forward(self, x):
method loadcheckpoints (line 940) | def loadcheckpoints(self,model_path):
method inference (line 945) | def inference(self,image,refine_foreground=False):
method segment_video (line 1009) | def segment_video(self, video_path, output_path="./", fps=0, refine_fo...
function rgb_loader_refiner (line 1118) | def rgb_loader_refiner( original_image):
function pil_images_to_mp4 (line 1143) | def pil_images_to_mp4(images, output_path, fps=24, rgb_value=(0, 255, 0)):
function pil_images_to_webm_alpha (line 1177) | def pil_images_to_webm_alpha(images, output_path, fps=30):
function add_audio_to_video (line 1216) | def add_audio_to_video(video_without_audio_path, original_video_path, ou...
function refine_foreground_process (line 1250) | def refine_foreground_process(image, mask, r=90):
function FB_blur_fusion_foreground_estimator_2 (line 1260) | def FB_blur_fusion_foreground_estimator_2(image, alpha, r=90):
function FB_blur_fusion_foreground_estimator (line 1267) | def FB_blur_fusion_foreground_estimator(image, F, B, alpha, r=90):
function postprocess_image (line 1283) | def postprocess_image(result: torch.Tensor, im_size: list) -> np.ndarray:
FILE: modules/cachedit.py
function apply_cache_dit (line 6) | def apply_cache_dit(pipe):
function unapply_cache_dir (line 54) | def unapply_cache_dir(pipe):
FILE: modules/call_queue.py
function get_lock (line 14) | def get_lock():
function wrap_queued_call (line 21) | def wrap_queued_call(func):
function wrap_gradio_gpu_call (line 29) | def wrap_gradio_gpu_call(func, extra_outputs=None, name=None):
function wrap_gradio_call (line 55) | def wrap_gradio_call(func, extra_outputs=None, add_stats=False, name=None):
FILE: modules/cfgzero/__init__.py
function apply (line 17) | def apply(p: processing.StableDiffusionProcessing):
function unapply (line 58) | def unapply():
FILE: modules/cfgzero/cogview4_pipeline.py
function optimized_scale (line 34) | def optimized_scale(positive_flat, negative_flat):
function calculate_shift (line 73) | def calculate_shift(
function retrieve_timesteps (line 84) | def retrieve_timesteps(
class CogView4CFGZeroPipeline (line 151) | class CogView4CFGZeroPipeline(DiffusionPipeline, CogView4LoraLoaderMixin):
method __init__ (line 176) | def __init__(
method _get_glm_embeds (line 192) | def _get_glm_embeds(
method encode_prompt (line 237) | def encode_prompt(
method prepare_latents (line 316) | def prepare_latents(self, batch_size, num_channels_latents, height, wi...
method check_inputs (line 334) | def check_inputs(
method guidance_scale (line 392) | def guidance_scale(self):
method do_classifier_free_guidance (line 399) | def do_classifier_free_guidance(self):
method num_timesteps (line 403) | def num_timesteps(self):
method attention_kwargs (line 407) | def attention_kwargs(self):
method current_timestep (line 411) | def current_timestep(self):
method interrupt (line 415) | def interrupt(self):
method __call__ (line 420) | def __call__(
FILE: modules/cfgzero/flux_pipeline.py
function optimized_scale (line 60) | def optimized_scale(positive_flat, negative_flat):
function calculate_shift (line 74) | def calculate_shift(
function retrieve_timesteps (line 88) | def retrieve_timesteps(
class FluxCFGZeroPipeline (line 147) | class FluxCFGZeroPipeline(
method __init__ (line 184) | def __init__(
method _get_t5_prompt_embeds (line 218) | def _get_t5_prompt_embeds(
method _get_clip_prompt_embeds (line 267) | def _get_clip_prompt_embeds(
method encode_prompt (line 311) | def encode_prompt(
method encode_image (line 390) | def encode_image(self, image, device, num_images_per_prompt):
method prepare_ip_adapter_image_embeds (line 401) | def prepare_ip_adapter_image_embeds(
method check_inputs (line 437) | def check_inputs(
method _prepare_latent_image_ids (line 515) | def _prepare_latent_image_ids(batch_size, height, width, device, dtype):
method _pack_latents (line 529) | def _pack_latents(latents, batch_size, num_channels_latents, height, w...
method _unpack_latents (line 537) | def _unpack_latents(latents, height, width, vae_scale_factor):
method enable_vae_slicing (line 552) | def enable_vae_slicing(self):
method disable_vae_slicing (line 559) | def disable_vae_slicing(self):
method enable_vae_tiling (line 566) | def enable_vae_tiling(self):
method disable_vae_tiling (line 574) | def disable_vae_tiling(self):
method prepare_latents (line 581) | def prepare_latents(
method guidance_scale (line 617) | def guidance_scale(self):
method joint_attention_kwargs (line 621) | def joint_attention_kwargs(self):
method num_timesteps (line 625) | def num_timesteps(self):
method current_timestep (line 629) | def current_timestep(self):
method interrupt (line 633) | def interrupt(self):
method __call__ (line 638) | def __call__(
FILE: modules/cfgzero/hidream_pipeline.py
function optimized_scale (line 82) | def optimized_scale(positive_flat, negative_flat):
function calculate_shift (line 96) | def calculate_shift(
function retrieve_timesteps (line 110) | def retrieve_timesteps(
class HiDreamImageCFGZeroPipeline (line 169) | class HiDreamImageCFGZeroPipeline(DiffusionPipeline, HiDreamImageLoraLoa...
method __init__ (line 173) | def __init__(
method _get_t5_prompt_embeds (line 212) | def _get_t5_prompt_embeds(
method _get_clip_prompt_embeds (line 249) | def _get_clip_prompt_embeds(
method _get_llama3_prompt_embeds (line 286) | def _get_llama3_prompt_embeds(
method encode_prompt (line 330) | def encode_prompt(
method _encode_prompt (line 414) | def _encode_prompt(
method enable_vae_slicing (line 470) | def enable_vae_slicing(self):
method disable_vae_slicing (line 477) | def disable_vae_slicing(self):
method enable_vae_tiling (line 484) | def enable_vae_tiling(self):
method disable_vae_tiling (line 492) | def disable_vae_tiling(self):
method prepare_latents (line 499) | def prepare_latents(
method guidance_scale (line 526) | def guidance_scale(self):
method do_classifier_free_guidance (line 530) | def do_classifier_free_guidance(self):
method attention_kwargs (line 534) | def attention_kwargs(self):
method num_timesteps (line 538) | def num_timesteps(self):
method interrupt (line 542) | def interrupt(self):
method __call__ (line 546) | def __call__(
FILE: modules/cfgzero/hunyuan_t2v_pipeline.py
function optimized_scale (line 70) | def optimized_scale(positive_flat, negative_flat):
function retrieve_timesteps (line 98) | def retrieve_timesteps(
class HunyuanVideoCFGZeroPipeline (line 157) | class HunyuanVideoCFGZeroPipeline(DiffusionPipeline, HunyuanVideoLoraLoa...
method __init__ (line 186) | def __init__(
method _get_llama_prompt_embeds (line 212) | def _get_llama_prompt_embeds(
method _get_clip_prompt_embeds (line 278) | def _get_clip_prompt_embeds(
method encode_prompt (line 317) | def encode_prompt(
method check_inputs (line 353) | def check_inputs(
method prepare_latents (line 400) | def prepare_latents(
method enable_vae_slicing (line 431) | def enable_vae_slicing(self):
method disable_vae_slicing (line 438) | def disable_vae_slicing(self):
method enable_vae_tiling (line 445) | def enable_vae_tiling(self):
method disable_vae_tiling (line 453) | def disable_vae_tiling(self):
method guidance_scale (line 461) | def guidance_scale(self):
method num_timesteps (line 465) | def num_timesteps(self):
method attention_kwargs (line 469) | def attention_kwargs(self):
method current_timestep (line 473) | def current_timestep(self):
method interrupt (line 477) | def interrupt(self):
method __call__ (line 482) | def __call__(
FILE: modules/cfgzero/sd3_pipeline.py
function optimized_scale (line 73) | def optimized_scale(positive_flat, negative_flat):
function calculate_shift (line 87) | def calculate_shift(
function retrieve_timesteps (line 101) | def retrieve_timesteps(
class StableDiffusion3CFGZeroPipeline (line 160) | class StableDiffusion3CFGZeroPipeline(DiffusionPipeline, SD3LoraLoaderMi...
method __init__ (line 202) | def __init__(
method _get_t5_prompt_embeds (line 247) | def _get_t5_prompt_embeds(
method _get_clip_prompt_embeds (line 303) | def _get_clip_prompt_embeds(
method encode_prompt (line 358) | def encode_prompt(
method check_inputs (line 550) | def check_inputs(
method prepare_latents (line 646) | def prepare_latents(
method guidance_scale (line 678) | def guidance_scale(self):
method skip_guidance_layers (line 682) | def skip_guidance_layers(self):
method clip_skip (line 686) | def clip_skip(self):
method do_classifier_free_guidance (line 693) | def do_classifier_free_guidance(self):
method joint_attention_kwargs (line 697) | def joint_attention_kwargs(self):
method num_timesteps (line 701) | def num_timesteps(self):
method interrupt (line 705) | def interrupt(self):
method encode_image (line 709) | def encode_image(self, image: PipelineImageInput, device: torch.device...
method prepare_ip_adapter_image_embeds (line 729) | def prepare_ip_adapter_image_embeds(
method enable_sequential_cpu_offload (line 775) | def enable_sequential_cpu_offload(self, *args, **kwargs):
method __call__ (line 787) | def __call__(
FILE: modules/cfgzero/wan_t2v_pipeline.py
function optimized_scale (line 75) | def optimized_scale(positive_flat, negative_flat):
function basic_clean (line 88) | def basic_clean(text):
function whitespace_clean (line 94) | def whitespace_clean(text):
function prompt_clean (line 100) | def prompt_clean(text):
class WanCFGZeroPipeline (line 105) | class WanCFGZeroPipeline(DiffusionPipeline, WanLoraLoaderMixin):
method __init__ (line 130) | def __init__(
method _get_t5_prompt_embeds (line 152) | def _get_t5_prompt_embeds(
method encode_prompt (line 193) | def encode_prompt(
method check_inputs (line 274) | def check_inputs(
method prepare_latents (line 315) | def prepare_latents(
method guidance_scale (line 348) | def guidance_scale(self):
method do_classifier_free_guidance (line 352) | def do_classifier_free_guidance(self):
method num_timesteps (line 356) | def num_timesteps(self):
method current_timestep (line 360) | def current_timestep(self):
method interrupt (line 364) | def interrupt(self):
method attention_kwargs (line 368) | def attention_kwargs(self):
method __call__ (line 373) | def __call__(
FILE: modules/civitai/api_civitai.py
function models_to_json (line 4) | def models_to_json(all_models:list, model_id:int=None):
function get_civitai (line 22) | def get_civitai(
function post_civitai (line 57) | def post_civitai(page:str=None):
function register_api (line 65) | def register_api():
FILE: modules/civitai/download_civitai.py
function save_video_frame (line 11) | def save_video_frame(filepath: str):
function download_civit_meta (line 28) | def download_civit_meta(model_path: str, model_id):
function download_civit_preview (line 45) | def download_civit_preview(model_path: str, preview_url: str):
function download_civit_model_thread (line 95) | def download_civit_model_thread(model_name: str, model_url: str, model_p...
function download_civit_model (line 183) | def download_civit_model(model_url: str, model_name: str = '', model_pat...
FILE: modules/civitai/metadata_civitai.py
class CivitModel (line 12) | class CivitModel:
method __init__ (line 13) | def __init__(self, name, fn, sha = None, meta = {}):
function civit_update_metadata (line 29) | def civit_update_metadata(raw:bool=False):
function civit_search_model (line 109) | def civit_search_model(name, tag, model_type):
function atomic_civit_search_metadata (line 161) | def atomic_civit_search_metadata(item, results):
function civit_search_metadata (line 227) | def civit_search_metadata(title: str = None, raw: bool = False):
FILE: modules/civitai/search_civitai.py
class ModelImage (line 13) | class ModelImage():
method __init__ (line 14) | def __init__(self, dct: dict):
method __str__ (line 24) | def __str__(self):
class ModelFile (line 29) | class ModelFile():
method __init__ (line 30) | def __init__(self, dct: dict):
method __str__ (line 41) | def __str__(self):
class ModelVersion (line 46) | class ModelVersion():
method __init__ (line 47) | def __init__(self, dct: dict):
method __str__ (line 63) | def __str__(self):
class Model (line 68) | class Model():
method __init__ (line 69) | def __init__(self, dct: dict):
method __str__ (line 88) | def __str__(self):
function search_civitai (line 95) | def search_civitai(
function create_model_cards (line 177) | def create_model_cards(all_models: list[Model]) -> str:
function print_models (line 208) | def print_models(all_models: list[Model]):
FILE: modules/cmd_args.py
function parse_args (line 12) | def parse_args():
function main_args (line 19) | def main_args():
function compatibility_args (line 30) | def compatibility_args():
function settings_args (line 55) | def settings_args(opts, args):
FILE: modules/control/proc/canny.py
class CannyDetector (line 7) | class CannyDetector:
method __call__ (line 8) | def __call__(self, input_image=None, low_threshold=100, high_threshold...
FILE: modules/control/proc/depth_anything/__init__.py
class DepthAnythingDetector (line 10) | class DepthAnythingDetector:
method __init__ (line 12) | def __init__(self, model):
method from_pretrained (line 30) | def from_pretrained(cls, pretrained_model_or_path: str, cache_dir: str...
method __call__ (line 48) | def __call__(self, image, color_map: str = "none", output_type: str = ...
FILE: modules/control/proc/depth_anything/blocks.py
function _make_scratch (line 4) | def _make_scratch(in_shape, out_shape, groups=1, expand=False):
class ResidualConvUnit (line 37) | class ResidualConvUnit(nn.Module):
method __init__ (line 41) | def __init__(self, features, activation, bn):
method forward (line 69) | def forward(self, x):
class FeatureFusionBlock (line 95) | class FeatureFusionBlock(nn.Module):
method __init__ (line 99) | def __init__(self, features, activation, deconv=False, bn=False, expan...
method forward (line 126) | def forward(self, *xs, size=None):
FILE: modules/control/proc/depth_anything/dpt.py
function _make_fusion_block (line 8) | def _make_fusion_block(features, use_bn, size = None):
class DPTHead (line 20) | class DPTHead(nn.Module):
method __init__ (line 21) | def __init__(self, nclass, in_channels, features=256, use_bn=False, ou...
method forward (line 103) | def forward(self, out_features, patch_h, patch_w):
class DPT_DINOv2 (line 139) | class DPT_DINOv2(nn.Module):
method __init__ (line 140) | def __init__(self, encoder='vitl', features=256, out_channels=None, us...
method forward (line 157) | def forward(self, x):
class DepthAnything (line 171) | class DepthAnything(DPT_DINOv2, PyTorchModelHubMixin):
method __init__ (line 172) | def __init__(self, config):
FILE: modules/control/proc/depth_anything/util/transform.py
function apply_min_size (line 12) | def apply_min_size(sample, size, image_interpolation_method=cv2.INTER_AR...
class Resize (line 54) | class Resize(object):
method __init__ (line 58) | def __init__(
method constrain_to_multiple_of (line 100) | def constrain_to_multiple_of(self, x, min_val=0, max_val=None):
method get_size (line 111) | def get_size(self, width, height):
method __call__ (line 168) | def __call__(self, sample):
class NormalizeImage (line 211) | class NormalizeImage(object):
method __init__ (line 215) | def __init__(self, mean, std):
method __call__ (line 219) | def __call__(self, sample):
class PrepareForNet (line 225) | class PrepareForNet(object):
method __init__ (line 229) | def __init__(self):
method __call__ (line 232) | def __call__(self, sample):
FILE: modules/control/proc/depth_pro/__init__.py
class DepthProDetector (line 11) | class DepthProDetector:
method __init__ (line 14) | def __init__(self, model, processor):
method from_pretrained (line 19) | def from_pretrained(cls, pretrained_model_or_path: str = "apple/DepthP...
method __call__ (line 30) | def __call__(self, image, color_map: str = "none", output_type: str = ...
FILE: modules/control/proc/dpt.py
class DPTDetector (line 12) | class DPTDetector:
method __init__ (line 13) | def __init__(self, model=None, processor=None, model_path=None):
method __call__ (line 18) | def __call__(self, input_image=None, model_path=None):
FILE: modules/control/proc/dwpose/__init__.py
function _register_module (line 20) | def _register_module(self, module: Type, module_name: Optional[Union[str...
function check_dependencies (line 33) | def check_dependencies():
function draw_pose (line 78) | def draw_pose(pose, H, W):
class DWposeDetector (line 92) | class DWposeDetector:
method __init__ (line 93) | def __init__(self, det_config=None, det_ckpt=None, pose_config=None, p...
method to (line 106) | def to(self, device):
method __call__ (line 110) | def __call__(self, input_image, detect_resolution=512, image_resolutio...
FILE: modules/control/proc/dwpose/draw.py
function smart_resize (line 9) | def smart_resize(x, s):
function smart_resize_k (line 23) | def smart_resize_k(x, fx, fy):
function padRightDownCorner (line 37) | def padRightDownCorner(img, stride, padValue):
function transfer (line 60) | def transfer(model, model_weights):
function draw_bodypose (line 67) | def draw_bodypose(canvas, candidate, subset):
function draw_handpose (line 111) | def draw_handpose(canvas, all_hand_peaks):
function draw_facepose (line 146) | def draw_facepose(canvas, all_lmks):
function handDetect (line 161) | def handDetect(candidate, subset, oriImg):
function faceDetect (line 231) | def faceDetect(candidate, subset, oriImg):
function npmax (line 302) | def npmax(array):
FILE: modules/control/proc/dwpose/wholebody.py
function inference_detector (line 29) | def inference_detector(*args, **kwargs):
class Wholebody (line 36) | class Wholebody:
method __init__ (line 37) | def __init__(self, det_config=None, det_ckpt=None, pose_config=None, p...
method to (line 63) | def to(self, device):
method __call__ (line 68) | def __call__(self, oriImg):
FILE: modules/control/proc/edge.py
class EdgeDetector (line 24) | class EdgeDetector:
method __call__ (line 25) | def __call__(self, input_image=None, pf=True, mode='edge', detect_reso...
FILE: modules/control/proc/glpn.py
class GLPNDetector (line 9) | class GLPNDetector:
method __init__ (line 10) | def __init__(self, model=None, processor=None):
method __call__ (line 14) | def __call__(self, input_image=None):
FILE: modules/control/proc/hed.py
class DoubleConvBlock (line 20) | class DoubleConvBlock(torch.nn.Module): # pylint: disable=abstract-method
method __init__ (line 21) | def __init__(self, input_channel, output_channel, layer_number):
method __call__ (line 29) | def __call__(self, x, down_sampling=False):
class ControlNetHED_Apache2 (line 39) | class ControlNetHED_Apache2(torch.nn.Module): # pylint: disable=abstract...
method __init__ (line 40) | def __init__(self):
method __call__ (line 49) | def __call__(self, x):
class HEDdetector (line 58) | class HEDdetector:
method __init__ (line 59) | def __init__(self, model):
method from_pretrained (line 63) | def from_pretrained(cls, pretrained_model_or_path, filename=None, cach...
method to (line 74) | def to(self, device):
method __call__ (line 78) | def __call__(self, input_image, detect_resolution=512, image_resolutio...
FILE: modules/control/proc/leres/__init__.py
class LeresDetector (line 17) | class LeresDetector:
method __init__ (line 18) | def __init__(self, model, pix2pixmodel):
method from_pretrained (line 23) | def from_pretrained(cls, pretrained_model_or_path, filename=None, pix2...
method to (line 47) | def to(self, device):
method __call__ (line 51) | def __call__(self, input_image, thr_a=0, thr_b=0, boost=False, detect_...
FILE: modules/control/proc/leres/leres/Resnet.py
function conv3x3 (line 17) | def conv3x3(in_planes, out_planes, stride=1):
class BasicBlock (line 23) | class BasicBlock(nn.Module):
method __init__ (line 26) | def __init__(self, inplanes, planes, stride=1, downsample=None):
method forward (line 36) | def forward(self, x):
class Bottleneck (line 55) | class Bottleneck(nn.Module):
method __init__ (line 58) | def __init__(self, inplanes, planes, stride=1, downsample=None):
method forward (line 71) | def forward(self, x):
class ResNet (line 94) | class ResNet(nn.Module):
method __init__ (line 96) | def __init__(self, block, layers, num_classes=1000):
method _make_layer (line 118) | def _make_layer(self, block, planes, blocks, stride=1):
method forward (line 135) | def forward(self, x):
function resnet18 (line 155) | def resnet18(pretrained=True, **kwargs):
function resnet34 (line 164) | def resnet34(pretrained=True, **kwargs):
function resnet50 (line 173) | def resnet50(pretrained=True, **kwargs):
function resnet101 (line 183) | def resnet101(pretrained=True, **kwargs):
function resnet152 (line 193) | def resnet152(pretrained=True, **kwargs):
FILE: modules/control/proc/leres/leres/Resnext_torch.py
function conv3x3 (line 19) | def conv3x3(in_planes, out_planes, stride=1, groups=1, dilation=1):
function conv1x1 (line 25) | def conv1x1(in_planes, out_planes, stride=1):
class BasicBlock (line 30) | class BasicBlock(nn.Module):
method __init__ (line 33) | def __init__(self, inplanes, planes, stride=1, downsample=None, groups=1,
method forward (line 51) | def forward(self, x):
class Bottleneck (line 70) | class Bottleneck(nn.Module):
method __init__ (line 79) | def __init__(self, inplanes, planes, stride=1, downsample=None, groups=1,
method forward (line 96) | def forward(self, x):
class ResNet (line 119) | class ResNet(nn.Module):
method __init__ (line 121) | def __init__(self, block, layers, num_classes=1000, zero_init_residual...
method _make_layer (line 172) | def _make_layer(self, block, planes, blocks, stride=1, dilate=False):
method _forward_impl (line 196) | def _forward_impl(self, x):
method forward (line 222) | def forward(self, x):
function resnext101_32x8d (line 227) | def resnext101_32x8d(pretrained=True, **kwargs):
FILE: modules/control/proc/leres/leres/depthmap.py
function scale_torch (line 18) | def scale_torch(img):
function estimateleres (line 35) | def estimateleres(img, model, w, h):
function generatemask (line 51) | def generatemask(size):
function resizewithpool (line 62) | def resizewithpool(img, size):
function rgb2gray (line 69) | def rgb2gray(rgb):
function calculateprocessingres (line 73) | def calculateprocessingres(img, basesize, confidence=0.1, scale_threshol...
function doubleestimate (line 131) | def doubleestimate(img, size1, size2, pix2pixsize, model, net_type, pix2...
function singleestimate (line 155) | def singleestimate(img, msize, model, net_type):
function applyGridpatch (line 161) | def applyGridpatch(blsize, stride, img, box):
function generatepatchs (line 177) | def generatepatchs(img, base_size):
function getGF_fromintegral (line 208) | def getGF_fromintegral(integralimage, rect):
function adaptiveselection (line 218) | def adaptiveselection(integral_grad, patch_bound_list, gf):
function impatch (line 268) | def impatch(image, rect):
class ImageandPatchs (line 277) | class ImageandPatchs:
method __init__ (line 278) | def __init__(self, root_dir, name, patchsinfo, rgb_image, scale=1):
method __len__ (line 292) | def __len__(self):
method set_base_estimate (line 295) | def set_base_estimate(self, est):
method set_updated_estimate (line 300) | def set_updated_estimate(self, est):
method __getitem__ (line 305) | def __getitem__(self, index):
method print_options (line 325) | def print_options(self, opt):
method parse (line 352) | def parse(self):
function estimateboost (line 378) | def estimateboost(img, model, model_type, pix2pixmodel, max_res=512, dep...
FILE: modules/control/proc/leres/leres/multi_depth_model_woauxi.py
class RelDepthModel (line 8) | class RelDepthModel(nn.Module):
method __init__ (line 9) | def __init__(self, backbone='resnet50'):
method inference (line 17) | def inference(self, rgb):
class DepthModel (line 24) | class DepthModel(nn.Module):
method __init__ (line 25) | def __init__(self, encoder):
method forward (line 31) | def forward(self, x):
FILE: modules/control/proc/leres/leres/net_tools.py
function get_func (line 7) | def get_func(func_name):
function load_ckpt (line 27) | def load_ckpt(args, depth_model, shift_model, focal_model):
function strip_prefix_if_present (line 47) | def strip_prefix_if_present(state_dict, prefix):
FILE: modules/control/proc/leres/leres/network_auxi.py
function resnet50_stride32 (line 8) | def resnet50_stride32():
function resnext101_stride32x8d (line 11) | def resnext101_stride32x8d():
class Decoder (line 15) | class Decoder(nn.Module):
method __init__ (line 16) | def __init__(self):
method _init_params (line 34) | def _init_params(self):
method forward (line 52) | def forward(self, features):
class DepthNet (line 64) | class DepthNet(nn.Module):
method __init__ (line 72) | def __init__(self,
method forward (line 97) | def forward(self, x):
class FTB (line 102) | class FTB(nn.Module):
method __init__ (line 103) | def __init__(self, inchannels, midchannels=512):
method forward (line 121) | def forward(self, x):
method init_params (line 128) | def init_params(self):
class ATA (line 149) | class ATA(nn.Module):
method __init__ (line 150) | def __init__(self, inchannels, reduction=8):
method forward (line 160) | def forward(self, low_x, high_x):
method init_params (line 170) | def init_params(self):
class FFM (line 193) | class FFM(nn.Module):
method __init__ (line 194) | def __init__(self, inchannels, midchannels, outchannels, upfactor=2):
method forward (line 209) | def forward(self, low_x, high_x):
method init_params (line 217) | def init_params(self):
class AO (line 240) | class AO(nn.Module):
method __init__ (line 242) | def __init__(self, inchannels, outchannels, upfactor=2):
method forward (line 259) | def forward(self, x):
method init_params (line 263) | def init_params(self):
class ResidualConv (line 290) | class ResidualConv(nn.Module):
method __init__ (line 291) | def __init__(self, inchannels):
method forward (line 308) | def forward(self, x):
method init_params (line 312) | def init_params(self):
class FeatureFusion (line 335) | class FeatureFusion(nn.Module):
method __init__ (line 336) | def __init__(self, inchannels, outchannels):
method forward (line 346) | def forward(self, lowfeat, highfeat):
method init_params (line 349) | def init_params(self):
class SenceUnderstand (line 372) | class SenceUnderstand(nn.Module):
method __init__ (line 373) | def __init__(self, channels):
method forward (line 386) | def forward(self, x):
method initial_params (line 397) | def initial_params(self, dev=0.01):
FILE: modules/control/proc/leres/pix2pix/models/__init__.py
function find_model_using_name (line 25) | def find_model_using_name(model_name):
function get_option_setter (line 48) | def get_option_setter(model_name):
function create_model (line 54) | def create_model(opt):
FILE: modules/control/proc/leres/pix2pix/models/base_model.py
class BaseModel (line 12) | class BaseModel(ABC):
method __init__ (line 22) | def __init__(self, opt):
method modify_commandline_options (line 51) | def modify_commandline_options(parser, is_train):
method set_input (line 64) | def set_input(self, input):
method forward (line 73) | def forward(self):
method optimize_parameters (line 78) | def optimize_parameters(self):
method setup (line 82) | def setup(self, opt):
method eval (line 95) | def eval(self):
method test (line 102) | def test(self):
method compute_visuals (line 110) | def compute_visuals(self): # noqa
method get_image_paths (line 114) | def get_image_paths(self):
method update_learning_rate (line 118) | def update_learning_rate(self):
method get_current_visuals (line 130) | def get_current_visuals(self):
method get_current_losses (line 138) | def get_current_losses(self):
method save_networks (line 146) | def save_networks(self, epoch):
method unload_network (line 164) | def unload_network(self, name):
method __patch_instance_norm_state_dict (line 174) | def __patch_instance_norm_state_dict(self, state_dict, module, keys, i...
method load_networks (line 188) | def load_networks(self, epoch):
method print_networks (line 213) | def print_networks(self, verbose):
method set_requires_grad (line 231) | def set_requires_grad(self, nets, requires_grad=False):
FILE: modules/control/proc/leres/pix2pix/models/base_model_hg.py
class BaseModelHG (line 4) | class BaseModelHG():
method name (line 5) | def name(self):
method initialize (line 8) | def initialize(self, opt):
method set_input (line 15) | def set_input(self, input):
method forward (line 18) | def forward(self):
method test (line 22) | def test(self):
method get_image_paths (line 25) | def get_image_paths(self):
method optimize_parameters (line 28) | def optimize_parameters(self):
method get_current_visuals (line 31) | def get_current_visuals(self):
method get_current_errors (line 34) | def get_current_errors(self):
method save (line 37) | def save(self, label):
method save_network (line 41) | def save_network(self, network, network_label, epoch_label, gpu_ids):
method load_network (line 49) | def load_network(self, network, network_label, epoch_label):
method update_learning_rate (line 57) | def update_learning_rate():
FILE: modules/control/proc/leres/pix2pix/models/networks.py
class Identity (line 13) | class Identity(nn.Module):
method forward (line 14) | def forward(self, x):
function get_norm_layer (line 18) | def get_norm_layer(norm_type='instance'):
function get_scheduler (line 38) | def get_scheduler(optimizer, opt):
function init_weights (line 67) | def init_weights(net, init_type='normal', init_gain=0.02):
function init_net (line 101) | def init_net(net, init_type='normal', init_gain=0.02, gpu_ids=None):
function define_G (line 121) | def define_G(input_nc, output_nc, ngf, netG, norm='batch', use_dropout=F...
function define_D (line 174) | def define_D(input_nc, ndf, netD, n_layers_D=3, norm='batch', init_type=...
class GANLoss (line 223) | class GANLoss(nn.Module):
method __init__ (line 230) | def __init__(self, gan_mode, target_real_label=1.0, target_fake_label=...
method get_target_tensor (line 254) | def get_target_tensor(self, prediction, target_is_real):
method __call__ (line 271) | def __call__(self, prediction, target_is_real):
function cal_gradient_penalty (line 292) | def cal_gradient_penalty(netD, real_data, fake_data, device, type='mixed...
class ResnetGenerator (line 329) | class ResnetGenerator(nn.Module):
method __init__ (line 335) | def __init__(self, input_nc, output_nc, ngf=64, norm_layer=nn.BatchNor...
method forward (line 384) | def forward(self, input):
class ResnetBlock (line 389) | class ResnetBlock(nn.Module):
method __init__ (line 392) | def __init__(self, dim, padding_type, norm_layer, use_dropout, use_bias):
method build_conv_block (line 403) | def build_conv_block(self, dim, padding_type, norm_layer, use_dropout,...
method forward (line 443) | def forward(self, x):
class UnetGenerator (line 449) | class UnetGenerator(nn.Module):
method __init__ (line 452) | def __init__(self, input_nc, output_nc, num_downs, ngf=64, norm_layer=...
method forward (line 476) | def forward(self, input):
class UnetSkipConnectionBlock (line 481) | class UnetSkipConnectionBlock(nn.Module):
method __init__ (line 487) | def __init__(self, outer_nc, inner_nc, input_nc=None,
method forward (line 544) | def forward(self, x):
class NLayerDiscriminator (line 551) | class NLayerDiscriminator(nn.Module):
method __init__ (line 554) | def __init__(self, input_nc, ndf=64, n_layers=3, norm_layer=nn.BatchNo...
method forward (line 594) | def forward(self, input):
class PixelDiscriminator (line 599) | class PixelDiscriminator(nn.Module):
method __init__ (line 602) | def __init__(self, input_nc, ndf=64, norm_layer=nn.BatchNorm2d):
method forward (line 626) | def forward(self, input):
FILE: modules/control/proc/leres/pix2pix/models/pix2pix4depth_model.py
class Pix2Pix4DepthModel (line 6) | class Pix2Pix4DepthModel(BaseModel):
method modify_commandline_options (line 17) | def modify_commandline_options(parser, is_train=True):
method __init__ (line 38) | def __init__(self, opt):
method set_input_train (line 80) | def set_input_train(self, input):
method set_input (line 96) | def set_input(self, outer, inner):
method normalize (line 109) | def normalize(self, input):
method forward (line 114) | def forward(self):
method backward_D (line 118) | def backward_D(self):
method backward_G (line 132) | def backward_G(self):
method optimize_parameters (line 144) | def optimize_parameters(self):
FILE: modules/control/proc/leres/pix2pix/options/base_options.py
class BaseOptions (line 9) | class BaseOptions():
method __init__ (line 16) | def __init__(self):
method initialize (line 20) | def initialize(self, parser):
method gather_options (line 79) | def gather_options(self):
method print_options (line 108) | def print_options(self, opt):
method parse (line 133) | def parse(self):
FILE: modules/control/proc/leres/pix2pix/options/test_options.py
class TestOptions (line 4) | class TestOptions(BaseOptions):
method initialize (line 10) | def initialize(self, parser):
FILE: modules/control/proc/leres/pix2pix/util/util.py
function tensor2im (line 9) | def tensor2im(input_image, imtype=np.uint16):
function diagnose_network (line 28) | def diagnose_network(net, name='network'):
function save_image (line 47) | def save_image(image_numpy, image_path, aspect_ratio=1.0):
function print_numpy (line 69) | def print_numpy(x, val=True, shp=False):
function mkdirs (line 85) | def mkdirs(paths):
function mkdir (line 98) | def mkdir(path):
FILE: modules/control/proc/lineart.py
class ResidualBlock (line 15) | class ResidualBlock(nn.Module):
method __init__ (line 16) | def __init__(self, in_features):
method forward (line 30) | def forward(self, x):
class Generator (line 34) | class Generator(nn.Module):
method __init__ (line 35) | def __init__(self, input_nc, output_nc, n_residual_blocks=9, sigmoid=T...
method forward (line 82) | def forward(self, x, cond=None): # pylint: disable=unused-argument
class LineartDetector (line 92) | class LineartDetector:
method __init__ (line 93) | def __init__(self, model, coarse_model):
method from_pretrained (line 98) | def from_pretrained(cls, pretrained_model_or_path, filename=None, coar...
method to (line 119) | def to(self, device):
method __call__ (line 124) | def __call__(self, input_image, coarse=False, detect_resolution=512, i...
FILE: modules/control/proc/lineart_anime.py
class UnetGenerator (line 15) | class UnetGenerator(nn.Module):
method __init__ (line 18) | def __init__(self, input_nc, output_nc, num_downs, ngf=64, norm_layer=...
method forward (line 41) | def forward(self, input): # pylint: disable=redefined-builtin
class UnetSkipConnectionBlock (line 46) | class UnetSkipConnectionBlock(nn.Module):
method __init__ (line 52) | def __init__(self, outer_nc, inner_nc, input_nc=None,
method forward (line 108) | def forward(self, x):
class LineartAnimeDetector (line 115) | class LineartAnimeDetector:
method __init__ (line 116) | def __init__(self, model):
method from_pretrained (line 120) | def from_pretrained(cls, pretrained_model_or_path, filename=None, cach...
method to (line 137) | def to(self, device):
method __call__ (line 141) | def __call__(self, input_image, detect_resolution=512, image_resolutio...
FILE: modules/control/proc/marigold/__init__.py
class MarigoldDetector (line 9) | class MarigoldDetector:
method __init__ (line 10) | def __init__(self, model):
method from_pretrained (line 14) | def from_pretrained(cls, pretrained_model_or_path, cache_dir=None, **l...
method to (line 18) | def to(self, device):
method __call__ (line 22) | def __call__(
FILE: modules/control/proc/marigold/marigold_pipeline.py
class MarigoldDepthOutput (line 43) | class MarigoldDepthOutput(BaseOutput):
class MarigoldPipeline (line 61) | class MarigoldPipeline(DiffusionPipeline):
method __init__ (line 85) | def __init__(
method __call__ (line 106) | def __call__(
method __encode_empty_text (line 255) | def __encode_empty_text(self):
method single_infer (line 271) | def single_infer(
method encode_rgb (line 341) | def encode_rgb(self, rgb_in: torch.Tensor) -> torch.Tensor:
method decode_depth (line 360) | def decode_depth(self, depth_latent: torch.Tensor) -> torch.Tensor:
FILE: modules/control/proc/marigold/util/batchsize.py
function find_batch_size (line 51) | def find_batch_size(ensemble_size: int, input_res: int, dtype: torch.dty...
FILE: modules/control/proc/marigold/util/ensemble.py
function inter_distances (line 27) | def inter_distances(tensors: torch.Tensor):
function ensemble_depths (line 40) | def ensemble_depths(
FILE: modules/control/proc/marigold/util/image_util.py
function colorize_depth_maps (line 27) | def colorize_depth_maps(
function chw2hwc (line 68) | def chw2hwc(chw):
function resize_max_res (line 77) | def resize_max_res(img: Image.Image, max_edge_resolution: int) -> Image....
FILE: modules/control/proc/marigold/util/seed_all.py
function seed_all (line 26) | def seed_all(seed: int = 0):
FILE: modules/control/proc/mediapipe_face.py
function check_dependencies (line 10) | def check_dependencies():
class MediapipeFaceDetector (line 26) | class MediapipeFaceDetector:
method __call__ (line 27) | def __call__(self,
FILE: modules/control/proc/mediapipe_face_util.py
function draw_pupils (line 56) | def draw_pupils(image, landmark_list, drawing_spec, halfwidth: int = 2):
function reverse_channels (line 85) | def reverse_channels(image):
function generate_annotation (line 92) | def generate_annotation(
FILE: modules/control/proc/midas/__init__.py
class MidasDetector (line 15) | class MidasDetector:
method __init__ (line 16) | def __init__(self, model):
method from_pretrained (line 20) | def from_pretrained(cls, pretrained_model_or_path, model_type="dpt_hyb...
method to (line 33) | def to(self, device):
method __call__ (line 37) | def __call__(self, input_image, a=np.pi * 2.0, bg_th=0.1, depth_and_no...
FILE: modules/control/proc/midas/api.py
function disabled_train (line 26) | def disabled_train(self, mode=True):
function load_midas_transform (line 32) | def load_midas_transform(model_type):
function load_model (line 77) | def load_model(model_type, model_path=None):
class MiDaSInference (line 145) | class MiDaSInference(nn.Module):
method __init__ (line 158) | def __init__(self, model_type, model_path):
method forward (line 165) | def forward(self, x):
FILE: modules/control/proc/midas/midas/base_model.py
class BaseModel (line 4) | class BaseModel(torch.nn.Module):
method load (line 5) | def load(self, path):
FILE: modules/control/proc/midas/midas/blocks.py
function _make_encoder (line 11) | def _make_encoder(backbone, features, use_pretrained, groups=1, expand=F...
function _make_scratch (line 49) | def _make_scratch(in_shape, out_shape, groups=1, expand=False):
function _make_pretrained_efficientnet_lite3 (line 78) | def _make_pretrained_efficientnet_lite3(use_pretrained, exportable=False):
function _make_efficientnet_backbone (line 88) | def _make_efficientnet_backbone(effnet):
function _make_resnet_backbone (line 101) | def _make_resnet_backbone(resnet):
function _make_pretrained_resnext101_wsl (line 114) | def _make_pretrained_resnext101_wsl(use_pretrained):
class Interpolate (line 120) | class Interpolate(nn.Module):
method __init__ (line 124) | def __init__(self, scale_factor, mode, align_corners=False):
method forward (line 138) | def forward(self, x):
class ResidualConvUnit (line 155) | class ResidualConvUnit(nn.Module):
method __init__ (line 159) | def __init__(self, features):
method forward (line 177) | def forward(self, x):
class FeatureFusionBlock (line 194) | class FeatureFusionBlock(nn.Module):
method __init__ (line 198) | def __init__(self, features):
method forward (line 209) | def forward(self, *xs):
class ResidualConvUnit_custom (line 231) | class ResidualConvUnit_custom(nn.Module):
method __init__ (line 235) | def __init__(self, features, activation, bn):
method forward (line 263) | def forward(self, x):
class FeatureFusionBlock_custom (line 291) | class FeatureFusionBlock_custom(nn.Module):
method __init__ (line 295) | def __init__(self, features, activation, deconv=False, bn=False, expan...
method forward (line 320) | def forward(self, *xs):
FILE: modules/control/proc/midas/midas/dpt_depth.py
function _make_fusion_block (line 15) | def _make_fusion_block(features, use_bn):
class DPT (line 26) | class DPT(BaseModel):
method __init__ (line 27) | def __init__(
method forward (line 67) | def forward(self, x):
class DPTDepthModel (line 88) | class DPTDepthModel(DPT):
method __init__ (line 89) | def __init__(self, path=None, non_negative=True, **kwargs):
method forward (line 107) | def forward(self, x):
FILE: modules/control/proc/midas/midas/midas_net.py
class MidasNet (line 12) | class MidasNet(BaseModel):
method __init__ (line 16) | def __init__(self, path=None, features=256, non_negative=True):
method forward (line 49) | def forward(self, x):
FILE: modules/control/proc/midas/midas/midas_net_custom.py
class MidasNet_small (line 12) | class MidasNet_small(BaseModel):
method __init__ (line 16) | def __init__(self, path=None, features=64, backbone="efficientnet_lite...
method forward (line 75) | def forward(self, x):
function fuse_model (line 111) | def fuse_model(m):
FILE: modules/control/proc/midas/midas/transforms.py
function apply_min_size (line 6) | def apply_min_size(sample, size, image_interpolation_method=cv2.INTER_AR...
class Resize (line 48) | class Resize(object):
method __init__ (line 52) | def __init__(
method constrain_to_multiple_of (line 94) | def constrain_to_multiple_of(self, x, min_val=0, max_val=None):
method get_size (line 105) | def get_size(self, width, height):
method __call__ (line 162) | def __call__(self, sample):
class NormalizeImage (line 197) | class NormalizeImage(object):
method __init__ (line 201) | def __init__(self, mean, std):
method __call__ (line 205) | def __call__(self, sample):
class PrepareForNet (line 211) | class PrepareForNet(object):
method __init__ (line 215) | def __init__(self):
method __call__ (line 218) | def __call__(self, sample):
FILE: modules/control/proc/midas/midas/vit.py
class Slice (line 9) | class Slice(nn.Module):
method __init__ (line 10) | def __init__(self, start_index=1):
method forward (line 14) | def forward(self, x):
class AddReadout (line 18) | class AddReadout(nn.Module):
method __init__ (line 19) | def __init__(self, start_index=1):
method forward (line 23) | def forward(self, x):
class ProjectReadout (line 31) | class ProjectReadout(nn.Module):
method __init__ (line 32) | def __init__(self, in_features, start_index=1):
method forward (line 38) | def forward(self, x):
class Transpose (line 45) | class Transpose(nn.Module):
method __init__ (line 46) | def __init__(self, dim0, dim1):
method forward (line 51) | def forward(self, x):
function forward_vit (line 56) | def forward_vit(pretrained, x):
function _resize_pos_embed (line 100) | def _resize_pos_embed(self, posemb, gs_h, gs_w):
function forward_flex (line 117) | def forward_flex(self, x):
function get_activation (line 159) | def get_activation(name):
function get_readout_oper (line 166) | def get_readout_oper(vit_features, features, use_readout, start_index=1):
function _make_vit_b16_backbone (line 181) | def _make_vit_b16_backbone(
function _make_pretrained_vitl16_384 (line 301) | def _make_pretrained_vitl16_384(pretrained, use_readout="ignore", hooks=...
function _make_pretrained_vitb16_384 (line 314) | def _make_pretrained_vitb16_384(pretrained, use_readout="ignore", hooks=...
function _make_pretrained_deitb16_384 (line 323) | def _make_pretrained_deitb16_384(pretrained, use_readout="ignore", hooks...
function _make_pretrained_deitb16_distil_384 (line 332) | def _make_pretrained_deitb16_distil_384(pretrained, use_readout="ignore"...
function _make_vit_b_rn50_backbone (line 347) | def _make_vit_b_rn50_backbone(
function _make_pretrained_vitb_rn50_384 (line 488) | def _make_pretrained_vitb_rn50_384(
FILE: modules/control/proc/midas/utils.py
function read_pfm (line 9) | def read_pfm(path):
function write_pfm (line 58) | def write_pfm(path, image, scale=1):
function read_image (line 97) | def read_image(path):
function resize_image (line 116) | def resize_image(img):
function resize_depth (line 146) | def resize_depth(depth, width, height):
function write_depth (line 165) | def write_depth(path, depth, bits=1):
FILE: modules/control/proc/mlsd/__init__.py
class MLSDdetector (line 14) | class MLSDdetector:
method __init__ (line 15) | def __init__(self, model):
method from_pretrained (line 19) | def from_pretrained(cls, pretrained_model_or_path, filename=None, cach...
method to (line 33) | def to(self, device):
method __call__ (line 37) | def __call__(self, input_image, thr_v=0.1, thr_d=0.1, detect_resolutio...
FILE: modules/control/proc/mlsd/models/mbv2_mlsd_large.py
class BlockTypeA (line 9) | class BlockTypeA(nn.Module):
method __init__ (line 10) | def __init__(self, in_c1, in_c2, out_c1, out_c2, upscale = True):
method forward (line 24) | def forward(self, a, b):
class BlockTypeB (line 32) | class BlockTypeB(nn.Module):
method __init__ (line 33) | def __init__(self, in_c, out_c):
method forward (line 46) | def forward(self, x):
class BlockTypeC (line 51) | class BlockTypeC(nn.Module):
method __init__ (line 52) | def __init__(self, in_c, out_c):
method forward (line 66) | def forward(self, x):
function _make_divisible (line 72) | def _make_divisible(v, divisor, min_value=None):
class ConvBNReLU (line 92) | class ConvBNReLU(nn.Sequential):
method __init__ (line 93) | def __init__(self, in_planes, out_planes, kernel_size=3, stride=1, gro...
method forward (line 112) | def forward(self, x):
class InvertedResidual (line 124) | class InvertedResidual(nn.Module):
method __init__ (line 125) | def __init__(self, inp, oup, stride, expand_ratio):
method forward (line 146) | def forward(self, x):
class MobileNetV2 (line 153) | class MobileNetV2(nn.Module):
method __init__ (line 154) | def __init__(self, pretrained=True):
method _forward_impl (line 218) | def _forward_impl(self, x):
method forward (line 233) | def forward(self, x):
method _load_pretrained_model (line 236) | def _load_pretrained_model(self):
class MobileV2_MLSD_Large (line 247) | class MobileV2_MLSD_Large(nn.Module):
method __init__ (line 248) | def __init__(self):
method forward (line 275) | def forward(self, x):
FILE: modules/control/proc/mlsd/models/mbv2_mlsd_tiny.py
class BlockTypeA (line 9) | class BlockTypeA(nn.Module):
method __init__ (line 10) | def __init__(self, in_c1, in_c2, out_c1, out_c2, upscale = True):
method forward (line 24) | def forward(self, a, b):
class BlockTypeB (line 31) | class BlockTypeB(nn.Module):
method __init__ (line 32) | def __init__(self, in_c, out_c):
method forward (line 45) | def forward(self, x):
class BlockTypeC (line 50) | class BlockTypeC(nn.Module):
method __init__ (line 51) | def __init__(self, in_c, out_c):
method forward (line 65) | def forward(self, x):
function _make_divisible (line 71) | def _make_divisible(v, divisor, min_value=None):
class ConvBNReLU (line 91) | class ConvBNReLU(nn.Sequential):
method __init__ (line 92) | def __init__(self, in_planes, out_planes, kernel_size=3, stride=1, gro...
method forward (line 111) | def forward(self, x):
class InvertedResidual (line 123) | class InvertedResidual(nn.Module):
method __init__ (line 124) | def __init__(self, inp, oup, stride, expand_ratio):
method forward (line 145) | def forward(self, x):
class MobileNetV2 (line 152) | class MobileNetV2(nn.Module):
method __init__ (line 153) | def __init__(self, pretrained=True):
method _forward_impl (line 218) | def _forward_impl(self, x):
method forward (line 233) | def forward(self, x):
method _load_pretrained_model (line 236) | def _load_pretrained_model(self):
class MobileV2_MLSD_Tiny (line 247) | class MobileV2_MLSD_Tiny(nn.Module):
method __init__ (line 248) | def __init__(self):
method forward (line 263) | def forward(self, x):
FILE: modules/control/proc/mlsd/utils.py
function deccode_output_score_and_ptss (line 19) | def deccode_output_score_and_ptss(tpMap, topk_n = 200, ksize = 5):
function pred_lines (line 47) | def pred_lines(image, model,
function pred_squares (line 94) | def pred_squares(image,
FILE: modules/control/proc/normalbae/__init__.py
function load_checkpoint (line 17) | def load_checkpoint(fpath, model):
class NormalBaeDetector (line 30) | class NormalBaeDetector:
method __init__ (line 31) | def __init__(self, model):
method from_pretrained (line 36) | def from_pretrained(cls, pretrained_model_or_path, filename=None, cach...
method to (line 53) | def to(self, device):
method __call__ (line 58) | def __call__(self, input_image, detect_resolution=512, image_resolutio...
FILE: modules/control/proc/normalbae/nets/NNET.py
class NNET (line 6) | class NNET(nn.Module):
method __init__ (line 7) | def __init__(self, args):
method get_1x_lr_params (line 12) | def get_1x_lr_params(self): # lr/10 learning rate
method get_10x_lr_params (line 15) | def get_10x_lr_params(self): # lr learning rate
method forward (line 18) | def forward(self, img, **kwargs):
FILE: modules/control/proc/normalbae/nets/baseline.py
class NNET (line 9) | class NNET(nn.Module):
method __init__ (line 10) | def __init__(self, args=None):
method forward (line 15) | def forward(self, x, **kwargs):
method get_1x_lr_params (line 25) | def get_1x_lr_params(self): # lr/10 learning rate
method get_10x_lr_params (line 28) | def get_10x_lr_params(self): # lr learning rate
class Encoder (line 35) | class Encoder(nn.Module):
method __init__ (line 36) | def __init__(self):
method forward (line 48) | def forward(self, x):
class Decoder (line 60) | class Decoder(nn.Module):
method __init__ (line 61) | def __init__(self, num_classes=4):
method forward (line 70) | def forward(self, features):
FILE: modules/control/proc/normalbae/nets/submodules/decoder.py
class Decoder (line 7) | class Decoder(nn.Module):
method __init__ (line 8) | def __init__(self, args):
method forward (line 59) | def forward(self, features, gt_norm_mask=None, mode='test'):
FILE: modules/control/proc/normalbae/nets/submodules/efficientnet_repo/geffnet/activations/__init__.py
function add_override_act_fn (line 65) | def add_override_act_fn(name, fn):
function update_override_act_fn (line 70) | def update_override_act_fn(overrides):
function clear_override_act_fn (line 76) | def clear_override_act_fn():
function add_override_act_layer (line 81) | def add_override_act_layer(name, fn):
function update_override_act_layer (line 85) | def update_override_act_layer(overrides):
function clear_override_act_layer (line 91) | def clear_override_act_layer():
function get_act_fn (line 96) | def get_act_fn(name='relu'):
function get_act_layer (line 118) | def get_act_layer(name='relu'):
FILE: modules/control/proc/normalbae/nets/submodules/efficientnet_repo/geffnet/activations/activations.py
function swish (line 12) | def swish(x, inplace: bool = False):
class Swish (line 19) | class Swish(nn.Module):
method __init__ (line 20) | def __init__(self, inplace: bool = False):
method forward (line 24) | def forward(self, x):
function mish (line 28) | def mish(x, inplace: bool = False):
class Mish (line 34) | class Mish(nn.Module):
method __init__ (line 35) | def __init__(self, inplace: bool = False):
method forward (line 39) | def forward(self, x):
function sigmoid (line 43) | def sigmoid(x, inplace: bool = False):
class Sigmoid (line 48) | class Sigmoid(nn.Module):
method __init__ (line 49) | def __init__(self, inplace: bool = False):
method forward (line 53) | def forward(self, x):
function tanh (line 57) | def tanh(x, inplace: bool = False):
class Tanh (line 62) | class Tanh(nn.Module):
method __init__ (line 63) | def __init__(self, inplace: bool = False):
method forward (line 67) | def forward(self, x):
function hard_swish (line 71) | def hard_swish(x, inplace: bool = False):
class HardSwish (line 76) | class HardSwish(nn.Module):
method __init__ (line 77) | def __init__(self, inplace: bool = False):
method forward (line 81) | def forward(self, x):
function hard_sigmoid (line 85) | def hard_sigmoid(x, inplace: bool = False):
class HardSigmoid (line 92) | class HardSigmoid(nn.Module):
method __init__ (line 93) | def __init__(self, inplace: bool = False):
method forward (line 97) | def forward(self, x):
FILE: modules/control/proc/normalbae/nets/submodules/efficientnet_repo/geffnet/activations/activations_jit.py
function swish_jit (line 22) | def swish_jit(x, inplace: bool = False):
function mish_jit (line 30) | def mish_jit(x, _inplace: bool = False):
class SwishJit (line 36) | class SwishJit(nn.Module):
method __init__ (line 37) | def __init__(self, inplace: bool = False):
method forward (line 40) | def forward(self, x):
class MishJit (line 44) | class MishJit(nn.Module):
method __init__ (line 45) | def __init__(self, inplace: bool = False):
method forward (line 48) | def forward(self, x):
function hard_sigmoid_jit (line 53) | def hard_sigmoid_jit(x, inplace: bool = False):
class HardSigmoidJit (line 58) | class HardSigmoidJit(nn.Module):
method __init__ (line 59) | def __init__(self, inplace: bool = False):
method forward (line 62) | def forward(self, x):
function hard_swish_jit (line 67) | def hard_swish_jit(x, inplace: bool = False):
class HardSwishJit (line 72) | class HardSwishJit(nn.Module):
method __init__ (line 73) | def __init__(self, inplace: bool = False):
method forward (line 76) | def forward(self, x):
FILE: modules/control/proc/normalbae/nets/submodules/efficientnet_repo/geffnet/activations/activations_me.py
function swish_jit_fwd (line 22) | def swish_jit_fwd(x):
function swish_jit_bwd (line 27) | def swish_jit_bwd(x, grad_output):
class SwishJitAutoFn (line 32) | class SwishJitAutoFn(torch.autograd.Function):
method forward (line 42) | def forward(ctx, x):
method backward (line 47) | def backward(ctx, grad_output):
function swish_me (line 52) | def swish_me(x, inplace=False):
class SwishMe (line 56) | class SwishMe(nn.Module):
method __init__ (line 57) | def __init__(self, inplace: bool = False):
method forward (line 60) | def forward(self, x):
function mish_jit_fwd (line 65) | def mish_jit_fwd(x):
function mish_jit_bwd (line 70) | def mish_jit_bwd(x, grad_output):
class MishJitAutoFn (line 76) | class MishJitAutoFn(torch.autograd.Function):
method forward (line 81) | def forward(ctx, x):
method backward (line 86) | def backward(ctx, grad_output):
function mish_me (line 91) | def mish_me(x, inplace=False):
class MishMe (line 95) | class MishMe(nn.Module):
method __init__ (line 96) | def __init__(self, inplace: bool = False):
method forward (line 99) | def forward(self, x):
function hard_sigmoid_jit_fwd (line 104) | def hard_sigmoid_jit_fwd(x, inplace: bool = False):
function hard_sigmoid_jit_bwd (line 109) | def hard_sigmoid_jit_bwd(x, grad_output):
class HardSigmoidJitAutoFn (line 114) | class HardSigmoidJitAutoFn(torch.autograd.Function):
method forward (line 116) | def forward(ctx, x):
method backward (line 121) | def backward(ctx, grad_output):
function hard_sigmoid_me (line 126) | def hard_sigmoid_me(x, inplace: bool = False):
class HardSigmoidMe (line 130) | class HardSigmoidMe(nn.Module):
method __init__ (line 131) | def __init__(self, inplace: bool = False):
method forward (line 134) | def forward(self, x):
function hard_swish_jit_fwd (line 139) | def hard_swish_jit_fwd(x):
function hard_swish_jit_bwd (line 144) | def hard_swish_jit_bwd(x, grad_output):
class HardSwishJitAutoFn (line 150) | class HardSwishJitAutoFn(torch.autograd.Function):
method forward (line 153) | def forward(ctx, x):
method backward (line 158) | def backward(ctx, grad_output):
function hard_swish_me (line 163) | def hard_swish_me(x, inplace=False):
class HardSwishMe (line 167) | class HardSwishMe(nn.Module):
method __init__ (line 168) | def __init__(self, inplace: bool = False):
method forward (line 171) | def forward(self, x):
FILE: modules/control/proc/normalbae/nets/submodules/efficientnet_repo/geffnet/config.py
function is_no_jit (line 25) | def is_no_jit():
class set_no_jit (line 29) | class set_no_jit:
method __init__ (line 30) | def __init__(self, mode: bool) -> None:
method __enter__ (line 35) | def __enter__(self) -> None:
method __exit__ (line 38) | def __exit__(self, *args: Any) -> bool:
function is_exportable (line 44) | def is_exportable():
class set_exportable (line 48) | class set_exportable:
method __init__ (line 49) | def __init__(self, mode: bool) -> None:
method __enter__ (line 54) | def __enter__(self) -> None:
method __exit__ (line 57) | def __exit__(self, *args: Any) -> bool:
function is_scriptable (line 63) | def is_scriptable():
class set_scriptable (line 67) | class set_scriptable:
method __init__ (line 68) | def __init__(self, mode: bool) -> None:
method __enter__ (line 73) | def __enter__(self) -> None:
method __exit__ (line 76) | def __exit__(self, *args: Any) -> bool:
class set_layer_config (line 82) | class set_layer_config:
method __init__ (line 86) | def __init__(
method __enter__ (line 106) | def __enter__(self) -> None:
method __exit__ (line 109) | def __exit__(self, *args: Any) -> bool:
function layer_config_kwargs (line 118) | def layer_config_kwargs(kwargs):
FILE: modules/control/proc/normalbae/nets/submodules/efficientnet_repo/geffnet/conv2d_layers.py
function _ntuple (line 23) | def _ntuple(n):
function _is_static_pad (line 37) | def _is_static_pad(kernel_size, stride=1, dilation=1, **_):
function _get_padding (line 41) | def _get_padding(kernel_size, stride=1, dilation=1, **_):
function _calc_same_pad (line 46) | def _calc_same_pad(i: int, k: int, s: int, d: int):
function _same_pad_arg (line 50) | def _same_pad_arg(input_size, kernel_size, stride, dilation):
function _split_channels (line 58) | def _split_channels(num_chan, num_groups):
function conv2d_same (line 64) | def conv2d_same(
class Conv2dSame (line 75) | class Conv2dSame(nn.Conv2d):
method __init__ (line 80) | def __init__(self, in_channels, out_channels, kernel_size, stride=1,
method forward (line 85) | def forward(self, x):
class Conv2dSameExport (line 89) | class Conv2dSameExport(nn.Conv2d):
method __init__ (line 96) | def __init__(self, in_channels, out_channels, kernel_size, stride=1,
method forward (line 103) | def forward(self, x):
function get_padding_value (line 116) | def get_padding_value(padding, kernel_size, **kwargs):
function create_conv2d_pad (line 139) | def create_conv2d_pad(in_chs, out_chs, kernel_size, **kwargs):
class MixedConv2d (line 153) | class MixedConv2d(nn.ModuleDict):
method __init__ (line 159) | def __init__(self, in_channels, out_channels, kernel_size=3,
method forward (line 179) | def forward(self, x):
function get_condconv_initializer (line 186) | def get_condconv_initializer(initializer, num_experts, expert_shape):
class CondConv2d (line 199) | class CondConv2d(nn.Module):
method __init__ (line 208) | def __init__(self, in_channels, out_channels, kernel_size=3,
method reset_parameters (line 238) | def reset_parameters(self):
method forward (line 249) | def forward(self, x, routing_weights):
function select_conv2d (line 290) | def select_conv2d(in_chs, out_chs, kernel_size, **kwargs):
FILE: modules/control/proc/normalbae/nets/submodules/efficientnet_repo/geffnet/efficientnet_builder.py
function get_bn_args_tf (line 30) | def get_bn_args_tf():
function resolve_bn_args (line 34) | def resolve_bn_args(kwargs):
function resolve_se_args (line 52) | def resolve_se_args(kwargs, in_chs, act_layer=None):
function resolve_act_layer (line 67) | def resolve_act_layer(kwargs, default='relu'):
function make_divisible (line 74) | def make_divisible(v: int, divisor: int = 8, min_value: int = None):
function round_channels (line 82) | def round_channels(channels, multiplier=1.0, divisor=8, channel_min=None):
function drop_connect (line 90) | def drop_connect(inputs, training: bool = False, drop_connect_rate: floa...
class SqueezeExcite (line 103) | class SqueezeExcite(nn.Module):
method __init__ (line 105) | def __init__(self, in_chs, se_ratio=0.25, reduced_base_chs=None, act_l...
method forward (line 113) | def forward(self, x):
class ConvBnAct (line 122) | class ConvBnAct(nn.Module):
method __init__ (line 123) | def __init__(self, in_chs, out_chs, kernel_size,
method forward (line 132) | def forward(self, x):
class DepthwiseSeparableConv (line 139) | class DepthwiseSeparableConv(nn.Module):
method __init__ (line 144) | def __init__(self, in_chs, out_chs, dw_kernel_size=3,
method forward (line 170) | def forward(self, x):
class InvertedResidual (line 190) | class InvertedResidual(nn.Module):
method __init__ (line 193) | def __init__(self, in_chs, out_chs, dw_kernel_size=3,
method forward (line 227) | def forward(self, x):
class CondConvResidual (line 254) | class CondConvResidual(InvertedResidual):
method __init__ (line 257) | def __init__(self, in_chs, out_chs, dw_kernel_size=3,
method forward (line 275) | def forward(self, x):
class EdgeResidual (line 306) | class EdgeResidual(nn.Module):
method __init__ (line 309) | def __init__(self, in_chs, out_chs, exp_kernel_size=3, exp_ratio=1.0, ...
method forward (line 334) | def forward(self, x):
class EfficientNetBuilder (line 357) | class EfficientNetBuilder:
method __init__ (line 367) | def __init__(self, channel_multiplier=1.0, channel_divisor=8, channel_...
method _round_channels (line 385) | def _round_channels(self, chs):
method _make_block (line 388) | def _make_block(self, ba):
method _make_stack (line 423) | def _make_stack(self, stack_args):
method __call__ (line 435) | def __call__(self, in_chs, block_args):
function _parse_ksize (line 456) | def _parse_ksize(ss):
function _decode_block_str (line 463) | def _decode_block_str(block_str):
function _scale_stage_depth (line 582) | def _scale_stage_depth(stack_args, repeats, depth_multiplier=1.0, depth_...
function decode_arch_def (line 620) | def decode_arch_def(arch_def, depth_multiplier=1.0, depth_trunc='ceil', ...
function initialize_weight_goog (line 640) | def initialize_weight_goog(m, n='', fix_group_fanout=True):
function initialize_weight_default (line 672) | def initialize_weight_default(m, n=''):
FILE: modules/control/proc/normalbae/nets/submodules/efficientnet_repo/geffnet/gen_efficientnet.py
class GenEfficientNet (line 215) | class GenEfficientNet(nn.Module):
method __init__ (line 226) | def __init__(self, block_args, num_classes=1000, in_chans=3, num_featu...
method features (line 259) | def features(self, x):
method as_sequential (line 269) | def as_sequential(self):
method forward (line 277) | def forward(self, x):
function _create_model (line 286) | def _create_model(model_kwargs, variant, pretrained=False):
function _gen_mnasnet_a1 (line 296) | def _gen_mnasnet_a1(variant, channel_multiplier=1.0, pretrained=False, *...
function _gen_mnasnet_b1 (line 334) | def _gen_mnasnet_b1(variant, channel_multiplier=1.0, pretrained=False, *...
function _gen_mnasnet_small (line 372) | def _gen_mnasnet_small(variant, channel_multiplier=1.0, pretrained=False...
function _gen_mobilenet_v2 (line 403) | def _gen_mobilenet_v2(
function _gen_fbnetc (line 433) | def _gen_fbnetc(variant, channel_multiplier=1.0, pretrained=False, **kwa...
function _gen_spnasnet (line 465) | def _gen_spnasnet(variant, channel_multiplier=1.0, pretrained=False, **k...
function _gen_efficientnet (line 502) | def _gen_efficientnet(variant, channel_multiplier=1.0, depth_multiplier=...
function _gen_efficientnet_edge (line 548) | def _gen_efficientnet_edge(variant, channel_multiplier=1.0, depth_multip...
function _gen_efficientnet_condconv (line 573) | def _gen_efficientnet_condconv(
function _gen_efficientnet_lite (line 599) | def _gen_efficientnet_lite(variant, channel_multiplier=1.0, depth_multip...
function _gen_mixnet_s (line 641) | def _gen_mixnet_s(variant, channel_multiplier=1.0, pretrained=False, **k...
function _gen_mixnet_m (line 676) | def _gen_mixnet_m(variant, channel_multiplier=1.0, depth_multiplier=1.0,...
function mnasnet_050 (line 711) | def mnasnet_050(pretrained=False, **kwargs):
function mnasnet_075 (line 717) | def mnasnet_075(pretrained=False, **kwargs):
function mnasnet_100 (line 723) | def mnasnet_100(pretrained=False, **kwargs):
function mnasnet_b1 (line 729) | def mnasnet_b1(pretrained=False, **kwargs):
function mnasnet_140 (line 734) | def mnasnet_140(pretrained=False, **kwargs):
function semnasnet_050 (line 740) | def semnasnet_050(pretrained=False, **kwargs):
function semnasnet_075 (line 746) | def semnasnet_075(pretrained=False, **kwargs):
function semnasnet_100 (line 752) | def semnasnet_100(pretrained=False, **kwargs):
function mnasnet_a1 (line 758) | def mnasnet_a1(pretrained=False, **kwargs):
function semnasnet_140 (line 763) | def semnasnet_140(pretrained=False, **kwargs):
function mnasnet_small (line 769) | def mnasnet_small(pretrained=False, **kwargs):
function mobilenetv2_100 (line 775) | def mobilenetv2_100(pretrained=False, **kwargs):
function mobilenetv2_140 (line 781) | def mobilenetv2_140(pretrained=False, **kwargs):
function mobilenetv2_110d (line 787) | def mobilenetv2_110d(pretrained=False, **kwargs):
function mobilenetv2_120d (line 794) | def mobilenetv2_120d(pretrained=False, **kwargs):
function fbnetc_100 (line 801) | def fbnetc_100(pretrained=False, **kwargs):
function spnasnet_100 (line 810) | def spnasnet_100(pretrained=False, **kwargs):
function efficientnet_b0 (line 816) | def efficientnet_b0(pretrained=False, **kwargs):
function efficientnet_b1 (line 824) | def efficientnet_b1(pretrained=False, **kwargs):
function efficientnet_b2 (line 832) | def efficientnet_b2(pretrained=False, **kwargs):
function efficientnet_b3 (line 840) | def efficientnet_b3(pretrained=False, **kwargs):
function efficientnet_b4 (line 848) | def efficientnet_b4(pretrained=False, **kwargs):
function efficientnet_b5 (line 856) | def efficientnet_b5(pretrained=False, **kwargs):
function efficientnet_b6 (line 864) | def efficientnet_b6(pretrained=False, **kwargs):
function efficientnet_b7 (line 872) | def efficientnet_b7(pretrained=False, **kwargs):
function efficientnet_b8 (line 880) | def efficientnet_b8(pretrained=False, **kwargs):
function efficientnet_l2 (line 888) | def efficientnet_l2(pretrained=False, **kwargs):
function efficientnet_es (line 896) | def efficientnet_es(pretrained=False, **kwargs):
function efficientnet_em (line 903) | def efficientnet_em(pretrained=False, **kwargs):
function efficientnet_el (line 910) | def efficientnet_el(pretrained=False, **kwargs):
function efficientnet_cc_b0_4e (line 917) | def efficientnet_cc_b0_4e(pretrained=False, **kwargs):
function efficientnet_cc_b0_8e (line 925) | def efficientnet_cc_b0_8e(pretrained=False, **kwargs):
function efficientnet_cc_b1_8e (line 934) | def efficientnet_cc_b1_8e(pretrained=False, **kwargs):
function efficientnet_lite0 (line 943) | def efficientnet_lite0(pretrained=False, **kwargs):
function efficientnet_lite1 (line 950) | def efficientnet_lite1(pretrained=False, **kwargs):
function efficientnet_lite2 (line 957) | def efficientnet_lite2(pretrained=False, **kwargs):
function efficientnet_lite3 (line 964) | def efficientnet_lite3(pretrained=False, **kwargs):
function efficientnet_lite4 (line 971) | def efficientnet_lite4(pretrained=False, **kwargs):
function tf_efficientnet_b0 (line 978) | def tf_efficientnet_b0(pretrained=False, **kwargs):
function tf_efficientnet_b1 (line 987) | def tf_efficientnet_b1(pretrained=False, **kwargs):
function tf_efficientnet_b2 (line 996) | def tf_efficientnet_b2(pretrained=False, **kwargs):
function tf_efficientnet_b3 (line 1005) | def tf_efficientnet_b3(pretrained=False, **kwargs):
function tf_efficientnet_b4 (line 1014) | def tf_efficientnet_b4(pretrained=False, **kwargs):
function tf_efficientnet_b5 (line 1023) | def tf_efficientnet_b5(pretrained=False, **kwargs):
function tf_efficientnet_b6 (line 1032) | def tf_efficientnet_b6(pretrained=False, **kwargs):
function tf_efficientnet_b7 (line 1041) | def tf_efficientnet_b7(pretrained=False, **kwargs):
function tf_efficientnet_b8 (line 1050) | def tf_efficientnet_b8(pretrained=False, **kwargs):
function tf_efficientnet_b0_ap (line 1059) | def tf_efficientnet_b0_ap(pretrained=False, **kwargs):
function tf_efficientnet_b1_ap (line 1070) | def tf_efficientnet_b1_ap(pretrained=False, **kwargs):
function tf_efficientnet_b2_ap (line 1081) | def tf_efficientnet_b2_ap(pretrained=False, **kwargs):
function tf_efficientnet_b3_ap (line 1092) | def tf_efficientnet_b3_ap(pretrained=False, **kwargs):
function tf_efficientnet_b4_ap (line 1103) | def tf_efficientnet_b4_ap(pretrained=False, **kwargs):
function tf_efficientnet_b5_ap (line 1114) | def tf_efficientnet_b5_ap(pretrained=False, **kwargs):
function tf_efficientnet_b6_ap (line 1125) | def tf_efficientnet_b6_ap(pretrained=False, **kwargs):
function tf_efficientnet_b7_ap (line 1137) | def tf_efficientnet_b7_ap(pretrained=False, **kwargs):
function tf_efficientnet_b8_ap (line 1149) | def tf_efficientnet_b8_ap(pretrained=False, **kwargs):
function tf_efficientnet_b0_ns (line 1161) | def tf_efficientnet_b0_ns(pretrained=False, **kwargs):
function tf_efficientnet_b1_ns (line 1172) | def tf_efficientnet_b1_ns(pretrained=False, **kwargs):
function tf_efficientnet_b2_ns (line 1183) | def tf_efficientnet_b2_ns(pretrained=False, **kwargs):
function tf_efficientnet_b3_ns (line 1194) | def tf_efficientnet_b3_ns(pretrained=False, **kwargs):
function tf_efficientnet_b4_ns (line 1205) | def tf_efficientnet_b4_ns(pretrained=False, **kwargs):
function tf_efficientnet_b5_ns (line 1216) | def tf_efficientnet_b5_ns(pretrained=False, **kwargs):
function tf_efficientnet_b6_ns (line 1227) | def tf_efficientnet_b6_ns(pretrained=False, **kwargs):
function tf_efficientnet_b7_ns (line 1239) | def tf_efficientnet_b7_ns(pretrained=False, **kwargs):
function tf_efficientnet_l2_ns_475 (line 1251) | def tf_efficientnet_l2_ns_475(pretrained=False, **kwargs):
function tf_efficientnet_l2_ns (line 1263) | def tf_efficientnet_l2_ns(pretrained=False, **kwargs):
function tf_efficientnet_es (line 1275) | def tf_efficientnet_es(pretrained=False, **kwargs):
function tf_efficientnet_em (line 1284) | def tf_efficientnet_em(pretrained=False, **kwargs):
function tf_efficientnet_el (line 1293) | def tf_efficientnet_el(pretrained=False, **kwargs):
function tf_efficientnet_cc_b0_4e (line 1302) | def tf_efficientnet_cc_b0_4e(pretrained=False, **kwargs):
function tf_efficientnet_cc_b0_8e (line 1311) | def tf_efficientnet_cc_b0_8e(pretrained=False, **kwargs):
function tf_efficientnet_cc_b1_8e (line 1321) | def tf_efficientnet_cc_b1_8e(pretrained=False, **kwargs):
function tf_efficientnet_lite0 (line 1331) | def tf_efficientnet_lite0(pretrained=False, **kwargs):
function tf_efficientnet_lite1 (line 1340) | def tf_efficientnet_lite1(pretrained=False, **kwargs):
function tf_efficientnet_lite2 (line 1349) | def tf_efficientnet_lite2(pretrained=False, **kwargs):
function tf_efficientnet_lite3 (line 1358) | def tf_efficientnet_lite3(pretrained=False, **kwargs):
function tf_efficientnet_lite4 (line 1367) | def tf_efficientnet_lite4(pretrained=False, **kwargs):
function mixnet_s (line 1376) | def mixnet_s(pretrained=False, **kwargs):
function mixnet_m (line 1385) | def mixnet_m(pretrained=False, **kwargs):
function mixnet_l (line 1394) | def mixnet_l(pretrained=False, **kwargs):
function mixnet_xl (line 1403) | def mixnet_xl(pretrained=False, **kwargs):
function mixnet_xxl (line 1413) | def mixnet_xxl(pretrained=False, **kwargs):
function tf_mixnet_s (line 1423) | def tf_mixnet_s(pretrained=False, **kwargs):
function tf_mixnet_m (line 1433) | def tf_mixnet_m(pretrained=False, **kwargs):
function tf_mixnet_l (line 1443) | def tf_mixnet_l(pretrained=False, **kwargs):
FILE: modules/control/proc/normalbae/nets/submodules/efficientnet_repo/geffnet/helpers.py
function load_checkpoint (line 13) | def load_checkpoint(model, checkpoint_path):
function load_pretrained (line 34) | def load_pretrained(model, url, filter_fn=None, strict=True):
FILE: modules/control/proc/normalbae/nets/submodules/efficientnet_repo/geffnet/mobilenetv3.py
class MobileNetV3 (line 48) | class MobileNetV3(nn.Module):
method __init__ (line 57) | def __init__(self, block_args, num_classes=1000, in_chans=3, stem_size...
method as_sequential (line 86) | def as_sequential(self):
method features (line 94) | def features(self, x):
method forward (line 104) | def forward(self, x):
function _create_model (line 112) | def _create_model(model_kwargs, variant, pretrained=False):
function _gen_mobilenet_v3_rw (line 122) | def _gen_mobilenet_v3_rw(variant, channel_multiplier=1.0, pretrained=Fal...
function _gen_mobilenet_v3 (line 171) | def _gen_mobilenet_v3(variant, channel_multiplier=1.0, pretrained=False,...
function mobilenetv3_rw (line 268) | def mobilenetv3_rw(pretrained=False, **kwargs):
function mobilenetv3_large_075 (line 280) | def mobilenetv3_large_075(pretrained=False, **kwargs):
function mobilenetv3_large_100 (line 287) | def mobilenetv3_large_100(pretrained=False, **kwargs):
function mobilenetv3_large_minimal_100 (line 294) | def mobilenetv3_large_minimal_100(pretrained=False, **kwargs):
function mobilenetv3_small_075 (line 301) | def mobilenetv3_small_075(pretrained=False, **kwargs):
function mobilenetv3_small_100 (line 307) | def mobilenetv3_small_100(pretrained=False, **kwargs):
function mobilenetv3_small_minimal_100 (line 313) | def mobilenetv3_small_minimal_100(pretrained=False, **kwargs):
function tf_mobilenetv3_large_075 (line 319) | def tf_mobilenetv3_large_075(pretrained=False, **kwargs):
function tf_mobilenetv3_large_100 (line 327) | def tf_mobilenetv3_large_100(pretrained=False, **kwargs):
function tf_mobilenetv3_large_minimal_100 (line 335) | def tf_mobilenetv3_large_minimal_100(pretrained=False, **kwargs):
function tf_mobilenetv3_small_075 (line 343) | def tf_mobilenetv3_small_075(pretrained=False, **kwargs):
function tf_mobilenetv3_small_100 (line 351) | def tf_mobilenetv3_small_100(pretrained=False, **kwargs):
function tf_mobilenetv3_small_minimal_100 (line 359) | def tf_mobilenetv3_small_minimal_100(pretrained=False, **kwargs):
FILE: modules/control/proc/normalbae/nets/submodules/efficientnet_repo/geffnet/model_factory.py
function create_model (line 8) | def create_model(
FILE: modules/control/proc/normalbae/nets/submodules/efficientnet_repo/utils.py
class AverageMeter (line 4) | class AverageMeter:
method __init__ (line 6) | def __init__(self):
method reset (line 9) | def reset(self):
method update (line 15) | def update(self, val, n=1):
function accuracy (line 22) | def accuracy(output, target, topk=(1,)):
function get_outdir (line 38) | def get_outdir(path, *paths, inc=False):
FILE: modules/control/proc/normalbae/nets/submodules/efficientnet_repo/validate.py
function main (line 66) | def main():
FILE: modules/control/proc/normalbae/nets/submodules/encoder.py
class Encoder (line 6) | class Encoder(nn.Module):
method __init__ (line 7) | def __init__(self):
method forward (line 20) | def forward(self, x):
FILE: modules/control/proc/normalbae/nets/submodules/submodules.py
class UpSampleBN (line 10) | class UpSampleBN(nn.Module):
method __init__ (line 11) | def __init__(self, skip_input, output_features):
method forward (line 21) | def forward(self, x, concat_with):
class UpSampleGN (line 28) | class UpSampleGN(nn.Module):
method __init__ (line 29) | def __init__(self, skip_input, output_features):
method forward (line 39) | def forward(self, x, concat_with):
class Conv2d (line 46) | class Conv2d(nn.Conv2d):
method __init__ (line 47) | def __init__(self, in_channels, out_channels, kernel_size, stride=1,
method forward (line 52) | def forward(self, x):
function norm_normalize (line 64) | def norm_normalize(norm_out):
function sample_points (line 74) | def sample_points(init_normal, gt_norm_mask, sampling_ratio, beta):
FILE: modules/control/proc/openpose/__init__.py
class PoseResult (line 29) | class PoseResult(NamedTuple):
function draw_poses (line 35) | def draw_poses(poses: List[PoseResult], H, W, draw_body=True, draw_hand=...
class OpenposeDetector (line 66) | class OpenposeDetector:
method __init__ (line 73) | def __init__(self, body_estimation, hand_estimation=None, face_estimat...
method from_pretrained (line 79) | def from_pretrained(cls, pretrained_model_or_path, filename=None, hand...
method to (line 109) | def to(self, device):
method detect_hands (line 115) | def detect_hands(self, body: BodyResult, oriImg) -> Tuple[Union[HandRe...
method detect_face (line 137) | def detect_face(self, body: BodyResult, oriImg) -> Union[FaceResult, N...
method detect_poses (line 156) | def detect_poses(self, oriImg, include_hand=False, include_face=False)...
method __call__ (line 194) | def __call__(self, input_image, detect_resolution=512, image_resolutio...
FILE: modules/control/proc/openpose/body.py
class Keypoint (line 10) | class Keypoint(NamedTuple):
class BodyResult (line 17) | class BodyResult(NamedTuple):
class Body (line 28) | class Body(object):
method __init__ (line 29) | def __init__(self, model_path):
method to (line 35) | def to(self, device):
method __call__ (line 39) | def __call__(self, oriImg):
method format_body_result (line 224) | def format_body_result(candidate: np.ndarray, subset: np.ndarray) -> L...
FILE: modules/control/proc/openpose/face.py
class FaceNet (line 10) | class FaceNet(Module):
method __init__ (line 12) | def __init__(self):
method forward (line 189) | def forward(self, x):
class Face (line 303) | class Face(object):
method __init__ (line 314) | def __init__(self, face_model_path,
method to (line 325) | def to(self, device):
method __call__ (line 329) | def __call__(self, face_img):
method compute_peaks_from_heatmaps (line 345) | def compute_peaks_from_heatmaps(self, heatmaps):
FILE: modules/control/proc/openpose/hand.py
class Hand (line 11) | class Hand(object):
method __init__ (line 12) | def __init__(self, model_path):
method to (line 18) | def to(self, device):
method __call__ (line 22) | def __call__(self, oriImgRaw):
FILE: modules/control/proc/openpose/model.py
function make_layers (line 5) | def make_layers(block, no_relu_layers):
class bodypose_model (line 22) | class bodypose_model(nn.Module):
method __init__ (line 23) | def __init__(self):
method forward (line 112) | def forward(self, x):
class handpose_model (line 141) | class handpose_model(nn.Module):
method __init__ (line 142) | def __init__(self):
method forward (line 202) | def forward(self, x):
FILE: modules/control/proc/openpose/util.py
function smart_resize (line 10) | def smart_resize(x, s):
function smart_resize_k (line 24) | def smart_resize_k(x, fx, fy):
function padRightDownCorner (line 38) | def padRightDownCorner(img, stride, padValue):
function transfer (line 61) | def transfer(model, model_weights):
function draw_bodypose (line 68) | def draw_bodypose(canvas: np.ndarray, keypoints: List[Keypoint]) -> np.n...
function draw_handpose (line 125) | def draw_handpose(canvas: np.ndarray, keypoints: Union[List[Keypoint], N...
function draw_facepose (line 171) | def draw_facepose(canvas: np.ndarray, keypoints: Union[List[Keypoint], N...
function handDetect (line 201) | def handDetect(body: BodyResult, oriImg) -> List[Tuple[int, int, int, bo...
function faceDetect (line 299) | def faceDetect(body: BodyResult, oriImg) -> Union[Tuple[int, int, int], ...
function npmax (line 381) | def npmax(array):
FILE: modules/control/proc/pidi.py
class PidiNetDetector (line 14) | class PidiNetDetector:
method __init__ (line 15) | def __init__(self, model):
method from_pretrained (line 19) | def from_pretrained(cls, pretrained_model_or_path, filename=None, cach...
method to (line 30) | def to(self, device):
method __call__ (line 34) | def __call__(self, input_image, detect_resolution=512, image_resolutio...
FILE: modules/control/proc/pidi_model.py
function img2tensor (line 15) | def img2tensor(imgs, bgr2rgb=True, float32=True):
function createConvFunc (line 298) | def createConvFunc(op_type):
class Conv2d (line 349) | class Conv2d(nn.Module):
method __init__ (line 350) | def __init__(self, pdc, in_channels, out_channels, kernel_size, stride...
method reset_parameters (line 371) | def reset_parameters(self):
method forward (line 378) | def forward(self, input):
class CSAM (line 382) | class CSAM(nn.Module):
method __init__ (line 386) | def __init__(self, channels):
method forward (line 396) | def forward(self, x):
class CDCM (line 404) | class CDCM(nn.Module):
method __init__ (line 408) | def __init__(self, in_channels, out_channels):
method forward (line 419) | def forward(self, x):
class MapReduce (line 429) | class MapReduce(nn.Module):
method __init__ (line 433) | def __init__(self, channels):
method forward (line 438) | def forward(self, x):
class PDCBlock (line 442) | class PDCBlock(nn.Module):
method __init__ (line 443) | def __init__(self, pdc, inplane, ouplane, stride=1):
method forward (line 455) | def forward(self, x):
class PDCBlock_converted (line 466) | class PDCBlock_converted(nn.Module):
method __init__ (line 471) | def __init__(self, pdc, inplane, ouplane, stride=1):
method forward (line 485) | def forward(self, x):
class PiDiNet (line 496) | class PiDiNet(nn.Module):
method __init__ (line 497) | def __init__(self, inplane, pdcs, dil=None, sa=False, convert=False):
method get_weights (line 576) | def get_weights(self):
method forward (line 590) | def forward(self, x):
function config_model (line 649) | def config_model(model):
function pidinet (line 664) | def pidinet():
FILE: modules/control/proc/segment_anything/__init__.py
class SamDetector (line 21) | class SamDetector:
method __init__ (line 22) | def __init__(self, mask_generator: SamAutomaticMaskGenerator = None):
method from_pretrained (line 26) | def from_pretrained(cls, model_path, filename, model_type, cache_dir=N...
method show_anns (line 38) | def show_anns(self, anns):
method __call__ (line 54) | def __call__(self, input_image: Union[np.ndarray, Image.Image]=None, d...
FILE: modules/control/proc/segment_anything/automatic_mask_generator.py
class SamAutomaticMaskGenerator (line 33) | class SamAutomaticMaskGenerator:
method __init__ (line 34) | def __init__(
method generate (line 128) | def generate(self, image: np.ndarray) -> List[Dict[str, Any]]:
method _generate_masks (line 188) | def _generate_masks(self, image: np.ndarray) -> MaskData:
method _process_crop (line 216) | def _process_crop(
method _process_batch (line 257) | def _process_batch(
method postprocess_small_regions (line 315) | def postprocess_small_regions(
FILE: modules/control/proc/segment_anything/build_sam.py
function build_sam_vit_h (line 14) | def build_sam_vit_h(checkpoint=None):
function build_sam_vit_l (line 27) | def build_sam_vit_l(checkpoint=None):
function build_sam_vit_b (line 37) | def build_sam_vit_b(checkpoint=None):
function build_sam_vit_t (line 47) | def build_sam_vit_t(checkpoint=None):
function _build_sam (line 105) | def _build_sam(
FILE: modules/control/proc/segment_anything/modeling/common.py
class MLPBlock (line 13) | class MLPBlock(nn.Module):
method __init__ (line 14) | def __init__(
method forward (line 25) | def forward(self, x: torch.Tensor) -> torch.Tensor:
class LayerNorm2d (line 31) | class LayerNorm2d(nn.Module):
method __init__ (line 32) | def __init__(self, num_channels: int, eps: float = 1e-6) -> None:
method forward (line 38) | def forward(self, x: torch.Tensor) -> torch.Tensor:
FILE: modules/control/proc/segment_anything/modeling/image_encoder.py
class ImageEncoderViT (line 17) | class ImageEncoderViT(nn.Module):
method __init__ (line 18) | def __init__(
method forward (line 106) | def forward(self, x: torch.Tensor) -> torch.Tensor:
class Block (line 119) | class Block(nn.Module):
method __init__ (line 122) | def __init__(
method forward (line 166) | def forward(self, x: torch.Tensor) -> torch.Tensor:
class Attention (line 185) | class Attention(nn.Module):
method __init__ (line 188) | def __init__(
method forward (line 224) | def forward(self, x: torch.Tensor) -> torch.Tensor:
function window_partition (line 243) | def window_partition(x: torch.Tensor, window_size: int) -> Tuple[torch.T...
function window_unpartition (line 267) | def window_unpartition(
function get_rel_pos (line 292) | def get_rel_pos(q_size: int, k_size: int, rel_pos: torch.Tensor) -> torc...
function add_decomposed_rel_pos (line 325) | def add_decomposed_rel_pos(
class PatchEmbed (line 364) | class PatchEmbed(nn.Module):
method __init__ (line 369) | def __init__(
method forward (line 391) | def forward(self, x: torch.Tensor) -> torch.Tensor:
FILE: modules/control/proc/segment_anything/modeling/mask_decoder.py
class MaskDecoder (line 16) | class MaskDecoder(nn.Module):
method __init__ (line 17) | def __init__(
method forward (line 71) | def forward(
method predict_masks (line 112) | def predict_masks(
class MLP (line 154) | class MLP(nn.Module):
method __init__ (line 155) | def __init__(
method forward (line 171) | def forward(self, x):
FILE: modules/control/proc/segment_anything/modeling/prompt_encoder.py
class PromptEncoder (line 16) | class PromptEncoder(nn.Module):
method __init__ (line 17) | def __init__(
method get_dense_pe (line 62) | def get_dense_pe(self) -> torch.Tensor:
method _embed_points (line 73) | def _embed_points(
method _embed_boxes (line 93) | def _embed_boxes(self, boxes: torch.Tensor) -> torch.Tensor:
method _embed_masks (line 102) | def _embed_masks(self, masks: torch.Tensor) -> torch.Tensor:
method _get_batch_size (line 107) | def _get_batch_size(
method _get_device (line 125) | def _get_device(self) -> torch.device:
method forward (line 128) | def forward(
class PositionEmbeddingRandom (line 171) | class PositionEmbeddingRandom(nn.Module):
method __init__ (line 176) | def __init__(self, num_pos_feats: int = 64, scale: Optional[float] = N...
method _pe_encoding (line 185) | def _pe_encoding(self, coords: torch.Tensor) -> torch.Tensor:
method forward (line 194) | def forward(self, size: Tuple[int, int]) -> torch.Tensor:
method forward_with_coords (line 207) | def forward_with_coords(
FILE: modules/control/proc/segment_anything/modeling/sam.py
class Sam (line 19) | class Sam(nn.Module):
method __init__ (line 23) | def __init__(
method device (line 55) | def device(self) -> Any:
method forward (line 58) | def forward(
method postprocess_masks (line 137) | def postprocess_masks(
method preprocess (line 168) | def preprocess(self, x: torch.Tensor) -> torch.Tensor:
FILE: modules/control/proc/segment_anything/modeling/tiny_vit_sam.py
class Conv2d_BN (line 21) | class Conv2d_BN(torch.nn.Sequential):
method __init__ (line 22) | def __init__(self, a, b, ks=1, stride=1, pad=0, dilation=1,
method fuse (line 32) | def fuse(self):
class DropPath (line 45) | class DropPath(TimmDropPath):
method __init__ (line 46) | def __init__(self, drop_prob=None):
method __repr__ (line 50) | def __repr__(self):
class PatchEmbed (line 56) | class PatchEmbed(nn.Module):
method __init__ (line 57) | def __init__(self, in_chans, embed_dim, resolution, activation):
method forward (line 72) | def forward(self, x):
class MBConv (line 76) | class MBConv(nn.Module):
method __init__ (line 77) | def __init__(self, in_chans, out_chans, expand_ratio,
method forward (line 98) | def forward(self, x):
class PatchMerging (line 117) | class PatchMerging(nn.Module):
method __init__ (line 118) | def __init__(self, input_resolution, dim, out_dim, activation):
method forward (line 132) | def forward(self, x):
class ConvLayer (line 149) | class ConvLayer(nn.Module):
method __init__ (line 150) | def __init__(self, dim, input_resolution, depth,
method forward (line 177) | def forward(self, x):
class Mlp (line 188) | class Mlp(nn.Module):
method __init__ (line 189) | def __init__(self, in_features, hidden_features=None,
method forward (line 200) | def forward(self, x):
class Attention (line 211) | class Attention(torch.nn.Module):
method __init__ (line 212) | def __init__(self, dim, key_dim, num_heads=8,
method train (line 249) | def train(self, mode=True):
method forward (line 256) | def forward(self, x): # x (B,N,C)
class TinyViTBlock (line 283) | class TinyViTBlock(nn.Module):
method __init__ (line 299) | def __init__(self, dim, input_resolution, num_heads, window_size=7,
method forward (line 331) | def forward(self, x):
method extra_repr (line 374) | def extra_repr(self) -> str:
class BasicLayer (line 378) | class BasicLayer(nn.Module):
method __init__ (line 397) | def __init__(self, dim, input_resolution, depth, num_heads, window_size,
method forward (line 431) | def forward(self, x):
method extra_repr (line 441) | def extra_repr(self) -> str:
class LayerNorm2d (line 444) | class LayerNorm2d(nn.Module):
method __init__ (line 445) | def __init__(self, num_channels: int, eps: float = 1e-6) -> None:
method forward (line 451) | def forward(self, x: torch.Tensor) -> torch.Tensor:
class TinyViT (line 457) | class TinyViT(nn.Module):
method __init__ (line 458) | def __init__(self, img_size=224, in_chans=3, num_classes=1000,
method set_layer_lr_decay (line 556) | def set_layer_lr_decay(self, layer_lr_decay):
method _init_weights (line 590) | def _init_weights(self, m):
method no_weight_decay_keywords (line 600) | def no_weight_decay_keywords(self):
method forward_features (line 603) | def forward_features(self, x):
method forward (line 619) | def forward(self, x):
function register_tiny_vit_model (line 637) | def register_tiny_vit_model(fn):
function tiny_vit_5m_224 (line 663) | def tiny_vit_5m_224(pretrained=False, num_classes=1000, drop_path_rate=0...
function tiny_vit_11m_224 (line 675) | def tiny_vit_11m_224(pretrained=False, num_classes=1000, drop_path_rate=...
function tiny_vit_21m_224 (line 687) | def tiny_vit_21m_224(pretrained=False, num_classes=1000, drop_path_rate=...
function tiny_vit_21m_384 (line 699) | def tiny_vit_21m_384(pretrained=False, num_classes=1000, drop_path_rate=...
function tiny_vit_21m_512 (line 712) | def tiny_vit_21m_512(pretrained=False, num_classes=1000, drop_path_rate=...
FILE: modules/control/proc/segment_anything/modeling/transformer.py
class TwoWayTransformer (line 16) | class TwoWayTransformer(nn.Module):
method __init__ (line 17) | def __init__(
method forward (line 62) | def forward(
class TwoWayAttentionBlock (line 109) | class TwoWayAttentionBlock(nn.Module):
method __init__ (line 110) | def __init__(
method forward (line 151) | def forward(
class Attention (line 185) | class Attention(nn.Module):
method __init__ (line 191) | def __init__(
method _separate_heads (line 208) | def _separate_heads(self, x: Tensor, num_heads: int) -> Tensor:
method _recombine_heads (line 213) | def _recombine_heads(self, x: Tensor) -> Tensor:
method forward (line 218) | def forward(self, q: Tensor, k: Tensor, v: Tensor) -> Tensor:
FILE: modules/control/proc/segment_anything/predictor.py
class SamPredictor (line 14) | class SamPredictor:
method __init__ (line 15) | def __init__(
method set_image (line 31) | def set_image(
method set_torch_image (line 59) | def set_torch_image(
method predict (line 88) | def predict(
method predict_torch (line 164) | def predict_torch(
method get_image_embedding (line 240) | def get_image_embedding(self) -> torch.Tensor:
method device (line 254) | def device(self) -> torch.device:
method reset_image (line 257) | def reset_image(self) -> None:
FILE: modules/control/proc/segment_anything/utils/amg.py
class MaskData (line 16) | class MaskData:
method __init__ (line 22) | def __init__(self, **kwargs) -> None:
method __setitem__ (line 29) | def __setitem__(self, key: str, item: Any) -> None:
method __delitem__ (line 35) | def __delitem__(self, key: str) -> None:
method __getitem__ (line 38) | def __getitem__(self, key: str) -> Any:
method items (line 41) | def items(self) -> ItemsView[str, Any]:
method filter (line 44) | def filter(self, keep: torch.Tensor) -> None:
method cat (line 59) | def cat(self, new_stats: "MaskData") -> None:
method to_numpy (line 72) | def to_numpy(self) -> None:
function is_box_near_crop_edge (line 78) | def is_box_near_crop_edge(
function box_xyxy_to_xywh (line 91) | def box_xyxy_to_xywh(box_xyxy: torch.Tensor) -> torch.Tensor:
function batch_iterator (line 98) | def batch_iterator(batch_size: int, *args) -> Generator[List[Any], None,...
function mask_to_rle_pytorch (line 107) | def mask_to_rle_pytorch(tensor: torch.Tensor) -> List[Dict[str, Any]]:
function rle_to_mask (line 138) | def rle_to_mask(rle: Dict[str, Any]) -> np.ndarray:
function area_from_rle (line 152) | def area_from_rle(rle: Dict[str, Any]) -> int:
function calculate_stability_score (line 156) | def calculate_stability_score(
function build_point_grid (line 179) | def build_point_grid(n_per_side: int) -> np.ndarray:
function build_all_layer_point_grids (line 189) | def build_all_layer_point_grids(
function generate_crop_boxes (line 200) | def generate_crop_boxes(
function uncrop_boxes_xyxy (line 237) | def uncrop_boxes_xyxy(boxes: torch.Tensor, crop_box: List[int]) -> torch...
function uncrop_points (line 246) | def uncrop_points(points: torch.Tensor, crop_box: List[int]) -> torch.Te...
function uncrop_masks (line 255) | def uncrop_masks(
function remove_small_regions (line 267) | def remove_small_regions(
function coco_encode_rle (line 294) | def coco_encode_rle(uncompressed_rle: Dict[str, Any]) -> Dict[str, Any]:
function batched_mask_to_box (line 303) | def batched_mask_to_box(masks: torch.Tensor) -> torch.Tensor:
FILE: modules/control/proc/segment_anything/utils/onnx.py
class SamOnnxModel (line 17) | class SamOnnxModel(nn.Module):
method __init__ (line 25) | def __init__(
method resize_longest_image_size (line 42) | def resize_longest_image_size(
method _embed_points (line 51) | def _embed_points(self, point_coords: torch.Tensor, point_labels: torc...
method _embed_masks (line 69) | def _embed_masks(self, input_mask: torch.Tensor, has_mask_input: torch...
method mask_postprocessing (line 76) | def mask_postprocessing(self, masks: torch.Tensor, orig_im_size: torch...
method select_masks (line 92) | def select_masks(
method forward (line 107) | def forward(
FILE: modules/control/proc/segment_anything/utils/transforms.py
class ResizeLongestSide (line 16) | class ResizeLongestSide:
method __init__ (line 23) | def __init__(self, target_length: int) -> None:
method apply_image (line 26) | def apply_image(self, image: np.ndarray) -> np.ndarray:
method apply_coords (line 33) | def apply_coords(self, coords: np.ndarray, original_size: Tuple[int, ....
method apply_boxes (line 47) | def apply_boxes(self,
Copy disabled (too large)
Download .json
Condensed preview — 1302 files, each showing path, character count, and a content snippet. Download the .json file for the full structured content (34,864K chars).
[
{
"path": ".dockerignore",
"chars": 324,
"preview": "# defaults\n.history\n.vscode/\n/__pycache__\n/.ruff_cache\n/cache\n/cache.json\n/config.json\n/extensions/*\n/html/extensions.js"
},
{
"path": ".gitignore",
"chars": 857,
"preview": "# defaults\nvenv/\n__pycache__\n.ruff_cache\n/*.json\n/*.yaml\n/params.txt\n/styles.csv\n/user.css\n/webui-user.bat\n/webui-user.s"
},
{
"path": ".gitmodules",
"chars": 959,
"preview": "[submodule \"wiki\"]\n path = wiki\n url = https://github.com/vladmandic/sdnext.wiki\n ignore = dirty\n[submodule \"extensio"
},
{
"path": ".pylintrc",
"chars": 7794,
"preview": "[MAIN]\nanalyse-fallback-blocks=no\nclear-cache-post-run=no\nextension-pkg-allow-list=\nprefer-stubs=yes\nextension-pkg-white"
},
{
"path": ".ruff.toml",
"chars": 2654,
"preview": "line-length = 250\nindent-width = 4\ntarget-version = \"py310\"\nexclude = [\n \"venv\",\n \".git\",\n \".ruff_cache\",\n \""
},
{
"path": "CHANGELOG.md",
"chars": 370037,
"preview": "# Change Log for SD.Next\n\n## Update for 2026-02-07\n\n- **Upscalers**\n - add support for [spandrel](https://github.com/ch"
},
{
"path": "CITATION.cff",
"chars": 789,
"preview": "cff-version: 1.2.0\ntitle: SD.Next\nurl: 'https://github.com/vladmandic/sdnext'\nmessage: >-\n If you use this software, pl"
},
{
"path": "CODE_OF_CONDUCT",
"chars": 924,
"preview": "# Code of Conduct\n\nUse your best judgement\nIf it will possibly make others uncomfortable, do not post it\n\n- Be respectfu"
},
{
"path": "CONTRIBUTING",
"chars": 1138,
"preview": "# Contributing Guidelines\n\nPull requests from everyone are welcome\n\nProcedure for contributing:\n\n- Select SD.Next `dev` "
},
{
"path": "README.md",
"chars": 6522,
"preview": "<div align=\"center\">\n<img src=\"https://github.com/vladmandic/sdnext/raw/master/html/logo-transparent.png\" width=200 alt="
},
{
"path": "SECURITY.md",
"chars": 1231,
"preview": "# Security & Privacy Policy\n\n<br>\n\n## Issues\n\nAll issues are tracked publicly on GitHub: <https://github.com/vladmandic/"
},
{
"path": "TODO.md",
"chars": 11404,
"preview": "# TODO\n\n## Internal\n\n- Update: `transformers==5.0.0`, owner @CalamitousFelicitousness\n- Deploy: Create executable for SD"
},
{
"path": "cli/api-checkpoint.py",
"chars": 1133,
"preview": "#!/usr/bin/env python\nimport os\nimport logging\nimport requests\nimport urllib3\n\n\nsd_url = os.environ.get('SDAPI_URL', \"ht"
},
{
"path": "cli/api-control.py",
"chars": 7028,
"preview": "#!/usr/bin/env python\n# example: api-control.py --prompt \"anime girl\" --control \"Canny:Canny:1.0:0.1:0.9:/home/vlado/gen"
},
{
"path": "cli/api-detect.py",
"chars": 1901,
"preview": "#!/usr/bin/env python\nimport os\nimport io\nimport base64\nimport logging\nimport argparse\nimport requests\nimport urllib3\nfr"
},
{
"path": "cli/api-enhance.py",
"chars": 2668,
"preview": "#!/usr/bin/env python\nimport os\nimport io\nimport base64\nimport logging\nimport argparse\nimport requests\nimport urllib3\nfr"
},
{
"path": "cli/api-faceid.py",
"chars": 3641,
"preview": "#!/usr/bin/env python\nimport os\nimport io\nimport time\nimport base64\nimport logging\nimport argparse\nimport requests\nimpor"
},
{
"path": "cli/api-grid.py",
"chars": 8253,
"preview": "#!/usr/bin/env python\nfrom dataclasses import dataclass\nimport io\nimport os\nimport time\nimport math\nimport base64\nimport"
},
{
"path": "cli/api-history.py",
"chars": 876,
"preview": "#!/usr/bin/env python\n\n\"\"\"\nget list of all history jobs or a specific job\n\"\"\"\n\nimport sys\nimport logging\nimport urllib3\n"
},
{
"path": "cli/api-img2img.py",
"chars": 3584,
"preview": "#!/usr/bin/env python\nimport os\nimport io\nimport time\nimport base64\nimport logging\nimport argparse\nimport requests\nimpor"
},
{
"path": "cli/api-info.py",
"chars": 1762,
"preview": "#!/usr/bin/env python\nimport os\nimport time\nimport base64\nimport logging\nimport argparse\nimport requests\nimport urllib3\n"
},
{
"path": "cli/api-interrogate.py",
"chars": 3496,
"preview": "#!/usr/bin/env python\n\"\"\"\nuse clip to interrogate image(s)\n\"\"\"\n\nimport io\nimport base64\nimport sys\nimport os\nimport asyn"
},
{
"path": "cli/api-json.py",
"chars": 1737,
"preview": "#!/usr/bin/env python\n\n# curl -vX POST http://localhost:7860/sdapi/v1/txt2img --header \"Content-Type: application/json\" "
},
{
"path": "cli/api-mask.py",
"chars": 2716,
"preview": "#!/usr/bin/env python\nimport io\nimport os\nimport time\nimport base64\nimport logging\nimport argparse\nimport requests\nimpor"
},
{
"path": "cli/api-model.js",
"chars": 991,
"preview": "#!/usr/bin/env node\n\nconst sd_url = process.env.SDAPI_URL || 'http://127.0.0.1:7860';\nconst sd_username = process.env.SD"
},
{
"path": "cli/api-preprocess.py",
"chars": 2478,
"preview": "#!/usr/bin/env python\nimport io\nimport os\nimport time\nimport base64\nimport logging\nimport argparse\nimport requests\nimpor"
},
{
"path": "cli/api-progress.py",
"chars": 2959,
"preview": "#!/usr/bin/env python\n\n\"\"\"\ncheck progress of last job and shutdown system if timeout reached\n\"\"\"\n\nimport os\nimport time\n"
},
{
"path": "cli/api-pulid.js",
"chars": 2914,
"preview": "#!/usr/bin/env node\n\n// simple nodejs script to test sdnext api\n\nconst fs = require('node:fs');\nconst path = require('no"
},
{
"path": "cli/api-samplers.py",
"chars": 952,
"preview": "#!/usr/bin/env python\n\n\"\"\"\nget list of all samplers and details of current sampler\n\"\"\"\n\nimport sys\nimport logging\nimport"
},
{
"path": "cli/api-txt2img.js",
"chars": 1490,
"preview": "#!/usr/bin/env node\n\n// simple nodejs script to test sdnext api\n\nconst fs = require('node:fs');\n\nconst sd_url = process."
},
{
"path": "cli/api-txt2img.py",
"chars": 3468,
"preview": "#!/usr/bin/env python\nimport io\nimport os\nimport time\nimport base64\nimport logging\nimport argparse\nimport requests\nimpor"
},
{
"path": "cli/api-upscale.py",
"chars": 3000,
"preview": "#!/usr/bin/env python\nimport os\nimport io\nimport time\nimport base64\nimport logging\nimport argparse\nimport requests\nimpor"
},
{
"path": "cli/api-vqa.py",
"chars": 2046,
"preview": "#!/usr/bin/env python\nimport os\nimport time\nimport base64\nimport logging\nimport argparse\nimport requests\nimport urllib3\n"
},
{
"path": "cli/api-xyz.py",
"chars": 4301,
"preview": "#!/usr/bin/env python\n# example: api-control.py --prompt \"anime girl\" --control \"Canny:Canny:1.0:0.1:0.9:/home/vlado/gen"
},
{
"path": "cli/api-xyzenum.py",
"chars": 1258,
"preview": "#!/usr/bin/env python\nimport os\nimport logging\nimport requests\nimport urllib3\n\n\nsd_url = os.environ.get('SDAPI_URL', \"ht"
},
{
"path": "cli/civitai-search.py",
"chars": 7943,
"preview": "#!/usr/bin/env python\nfrom dataclasses import dataclass\nimport os\nimport sys\nimport json\nimport time\nimport logging\n\n\nfu"
},
{
"path": "cli/download-file.py",
"chars": 5430,
"preview": "#!/usr/bin/env python\nimport os\nimport time\nimport argparse\nimport tempfile\nimport urllib\nimport requests\nimport urllib3"
},
{
"path": "cli/full-test.sh",
"chars": 1314,
"preview": "#!/usr/bin/env bash\n\nnode cli/api-txt2img.js\nnode cli/api-pulid.js\n\nsource venv/bin/activate\necho image-exif\npython cli/"
},
{
"path": "cli/gen-styles.py",
"chars": 2843,
"preview": "#!/bin/env python\n\nimport io\nimport json\nimport base64\nimport argparse\nimport requests\nfrom PIL import Image\n\n\noptions ="
},
{
"path": "cli/generate-random.json",
"chars": 1860,
"preview": "{\n \"prompts\": [\n \"<style> of <embedding> <place>, high detailed, by <artist>, <suffix>\"\n ],\n \"negative\": [\n \"wa"
},
{
"path": "cli/generate.json",
"chars": 958,
"preview": "{\n \"paths\":\n {\n \"root\": \"/mnt/c/Users/mandi/OneDrive/Generative/Generate\",\n \"generate\": \"image\",\n \"upsc"
},
{
"path": "cli/generate.py",
"chars": 19077,
"preview": "#!/usr/bin/env python\n# pylint: disable=no-member\n\"\"\"generate batches of images from prompts and upscale them\n\nparams: r"
},
{
"path": "cli/git-clone.py",
"chars": 3368,
"preview": "#!/usr/bin/env python\nimport os\nimport logging\nimport git\nfrom rich import console, progress\n\n\nclass GitRemoteProgress(g"
},
{
"path": "cli/hf-search.py",
"chars": 1075,
"preview": "#!/usr/bin/env python\n\nimport sys\nimport huggingface_hub as hf\nfrom rich import print # pylint: disable=redefined-builti"
},
{
"path": "cli/image-encode.py",
"chars": 782,
"preview": "#!/usr/bin/env python\nimport io\nimport os\nimport sys\nimport base64\nfrom PIL import Image\nfrom rich import print # pylint"
},
{
"path": "cli/image-exif.py",
"chars": 5133,
"preview": "#!/bin/env python\n\nimport os\nimport io\nimport re\nimport sys\nimport json\nimport importlib.util\nfrom PIL import Image, Exi"
},
{
"path": "cli/image-grid.py",
"chars": 5198,
"preview": "#!/usr/bin/env python\n\"\"\"\nCreate image grid\n\"\"\"\n\nimport os\nimport argparse\nimport math\nimport logging\nfrom pathlib impor"
},
{
"path": "cli/image-palette.py",
"chars": 5280,
"preview": "#!/usr/bin/env python\n# based on <https://towardsdatascience.com/image-color-extraction-with-python-in-4-steps-8d9370d92"
},
{
"path": "cli/image-search.py",
"chars": 11330,
"preview": "#!/usr/bin/env python\n\nfrom typing import Union\nimport os\nimport re\nimport logging\nfrom tqdm.rich import tqdm\nimport tor"
},
{
"path": "cli/image-watermark.py",
"chars": 4427,
"preview": "#!/usr/bin/env python\nimport os\nimport io\nimport pathlib\nimport argparse\nimport filetype\nimport numpy as np\nfrom imwater"
},
{
"path": "cli/install-stablefast.py",
"chars": 3030,
"preview": "#!/usr/bin/env python\nimport os\nimport re\nimport sys\n\ntorch_supported = ['211', '212','220','221','222','230']\ncuda_supp"
},
{
"path": "cli/lcm-convert.py",
"chars": 2422,
"preview": "#!/usr/bin/env python\nimport os\nimport argparse\nimport torch\nfrom diffusers import StableDiffusionPipeline, StableDiffus"
},
{
"path": "cli/load-unet.py",
"chars": 4038,
"preview": "# test for manually loading unet state_dict\n\nimport torch\nimport diffusers\n\n\nclass StateDictStats():\n cls: str = None"
},
{
"path": "cli/locale-sanitize-override.py",
"chars": 910,
"preview": "#!/usr/bin/env python\n\n# Remove the entries that no longer exist in locale from override.\n\nimport sys\nimport json\nfrom r"
},
{
"path": "cli/localize.js",
"chars": 2698,
"preview": "#!/usr/bin/env node\n// script used to localize sdnext ui and hints to multiple languages using google gemini ai\n\nconst f"
},
{
"path": "cli/model-keys.py",
"chars": 3258,
"preview": "#!/usr/bin/env python\nimport os\nimport sys\nfrom rich import print as pprint\n\n\ndef has(obj, attr, *args):\n import func"
},
{
"path": "cli/model-metadata.py",
"chars": 1469,
"preview": "#!/usr/bin/env python\nimport os\nimport sys\nimport json\nfrom rich import print # pylint: disable=redefined-builtin\n\n\ndef "
},
{
"path": "cli/nvidia-smi.py",
"chars": 1022,
"preview": "#!/usr/bin/env python\nimport os\nimport json\nimport shutil\nimport subprocess\nimport xmltodict\nfrom rich import print # py"
},
{
"path": "cli/process.py",
"chars": 12292,
"preview": " # pylint: disable=global-statement\nimport os\nimport io\nimport math\nimport base64\nimport numpy as np\nimport mediapipe as"
},
{
"path": "cli/process_options.py",
"chars": 4643,
"preview": "from util import Map\n\nembedding = Map({\n \"id_task\": 0,\n \"embedding_name\": \"\",\n \"learn_rate\": -1,\n \"batch_siz"
},
{
"path": "cli/requirements.txt",
"chars": 72,
"preview": "aiohttp\nmediapipe\nextcolors\ncolormap\nfiletype\nalbumentations\nmatplotlib\n"
},
{
"path": "cli/run-benchmark.py",
"chars": 5245,
"preview": "#!/usr/bin/env python\n\"\"\"\nsd api txt2img benchmark\n\"\"\"\nimport os\nimport asyncio\nimport base64\nimport io\nimport json\nimpo"
},
{
"path": "cli/sdapi.py",
"chars": 8051,
"preview": "#!/usr/bin/env python\n#pylint: disable=redefined-outer-name\n\"\"\"\nhelper methods that creates HTTP session with managed co"
},
{
"path": "cli/search-docs.py",
"chars": 4732,
"preview": "#!/usr/bin/env python\nimport os\nimport sys\nimport time\nimport logging\n\n\nlogging.basicConfig(level = logging.INFO, format"
},
{
"path": "cli/test-schedulers.py",
"chars": 11885,
"preview": "import os\nimport sys\nimport time\nimport numpy as np\nimport torch\n\n# Ensure we can import modules\nsys.path.append(os.path"
},
{
"path": "cli/test-tagger.py",
"chars": 35855,
"preview": "#!/usr/bin/env python\n\"\"\"\nTagger Settings Test Suite\n\nTests all WaifuDiffusion and DeepBooru tagger settings to verify t"
},
{
"path": "cli/test-weighted-lists.py",
"chars": 3719,
"preview": "#!/usr/bin/env python\n\nimport sys, os\nfrom collections import Counter\n\nscript_dir = os.path.dirname(os.path.dirname(os.p"
},
{
"path": "cli/util.py",
"chars": 4119,
"preview": "#!/usr/bin/env python\n\"\"\"\ngeneric helper methods\n\"\"\"\n\nimport os\nimport string\nimport logging\nimport warnings\n\nlog_format"
},
{
"path": "cli/validate-locale.py",
"chars": 1606,
"preview": "#!/usr/bin/env python\n\nimport os\nimport sys\nimport json\nfrom rich import print # pylint: disable=redefined-builtin\n\nif _"
},
{
"path": "cli/video-extract.py",
"chars": 3391,
"preview": "#!/usr/bin/env python\n\"\"\"\nuse ffmpeg for animation processing\n\"\"\"\nimport os\nimport json\nimport subprocess\nimport pathlib"
},
{
"path": "cli/zluda-python.py",
"chars": 1176,
"preview": "import os\nimport sys\nfrom typing import Dict, Mapping\n\n\nclass Interpreter:\n env_globals: Dict\n env_locals: Mapping"
},
{
"path": "configs/Dockerfile.cuda",
"chars": 2159,
"preview": "# SD.Next Dockerfile\n# docs: <https://github.com/vladmandic/sdnext/wiki/Docker>\n\n# base image\nFROM pytorch/pytorch:2.8.0"
},
{
"path": "configs/Dockerfile.ipex",
"chars": 3254,
"preview": "# SD.Next IPEX Dockerfile\n# docs: <https://github.com/vladmandic/sdnext/wiki/Docker>\n\n# base image\nFROM ubuntu:noble\n\n# "
},
{
"path": "configs/Dockerfile.openvino",
"chars": 2901,
"preview": "# SD.Next OpenVINO Dockerfile\n# docs: <https://github.com/vladmandic/sdnext/wiki/Docker>\n\n# base image\nFROM ubuntu:noble"
},
{
"path": "configs/Dockerfile.rocm",
"chars": 2662,
"preview": "# SD.Next ROCm Dockerfile\n# docs: <https://github.com/vladmandic/sdnext/wiki/Docker>\n\n# base image\n\n# rocm runtime (3gb)"
},
{
"path": "configs/chroma/model_index.json",
"chars": 405,
"preview": "{\n \"_class_name\": \"ChromaPipeline\",\n \"_diffusers_version\": \"0.34.0.dev0\",\n \"scheduler\": [\n \"diffusers\",\n \"FlowM"
},
{
"path": "configs/chroma/scheduler/scheduler_config.json",
"chars": 486,
"preview": "{\n \"_class_name\": \"FlowMatchEulerDiscreteScheduler\",\n \"_diffusers_version\": \"0.34.0.dev0\",\n \"base_image_seq_len\": 256"
},
{
"path": "configs/chroma/text_encoder/config.json",
"chars": 784,
"preview": "{\n \"_name_or_path\": \"google/t5-v1_1-xxl\",\n \"architectures\": [\n \"T5EncoderModel\"\n ],\n \"classifier_dropout\": 0.0,"
},
{
"path": "configs/chroma/tokenizer/added_tokens.json",
"chars": 2593,
"preview": "{\n \"<extra_id_0>\": 32099,\n \"<extra_id_10>\": 32089,\n \"<extra_id_11>\": 32088,\n \"<extra_id_12>\": 32087,\n \"<extra_id_13"
},
{
"path": "configs/chroma/tokenizer/special_tokens_map.json",
"chars": 2543,
"preview": "{\n \"additional_special_tokens\": [\n \"<extra_id_0>\",\n \"<extra_id_1>\",\n \"<extra_id_2>\",\n \"<extra_id_3>\",\n \""
},
{
"path": "configs/chroma/tokenizer/tokenizer_config.json",
"chars": 20817,
"preview": "{\n \"add_prefix_space\": true,\n \"added_tokens_decoder\": {\n \"0\": {\n \"content\": \"<pad>\",\n \"lstrip\": false,\n "
},
{
"path": "configs/chroma/transformer/config.json",
"chars": 432,
"preview": "{\n \"_class_name\": \"ChromaTransformer2DModel\",\n \"_diffusers_version\": \"0.34.0.dev0\",\n \"approximator_hidden_dim\": 5120,"
},
{
"path": "configs/chroma/transformer/diffusion_pytorch_model.safetensors.index.json",
"chars": 106695,
"preview": "{\n \"metadata\": {\n \"total_size\": 17799966848\n },\n \"weight_map\": {\n \"context_embedder.bias\": \"diffusion_pytorch_m"
},
{
"path": "configs/chroma/vae/config.json",
"chars": 774,
"preview": "{\n \"_class_name\": \"AutoencoderKL\",\n \"_diffusers_version\": \"0.34.0.dev0\",\n \"act_fn\": \"silu\",\n \"block_out_channels\": ["
},
{
"path": "configs/flux/model_index.json",
"chars": 536,
"preview": "{\n \"_class_name\": \"FluxPipeline\",\n \"_diffusers_version\": \"0.30.0.dev0\",\n \"scheduler\": [\n \"diffusers\",\n \"FlowMat"
},
{
"path": "configs/flux/scheduler/scheduler_config.json",
"chars": 274,
"preview": "{\n \"_class_name\": \"FlowMatchEulerDiscreteScheduler\",\n \"_diffusers_version\": \"0.30.0.dev0\",\n \"base_image_seq_len\": 256"
},
{
"path": "configs/flux/text_encoder/config.json",
"chars": 613,
"preview": "{\n \"_name_or_path\": \"openai/clip-vit-large-patch14\",\n \"architectures\": [\n \"CLIPTextModel\"\n ],\n \"attention_dropout"
},
{
"path": "configs/flux/text_encoder_2/config.json",
"chars": 782,
"preview": "{\n \"_name_or_path\": \"google/t5-v1_1-xxl\",\n \"architectures\": [\n \"T5EncoderModel\"\n ],\n \"classifier_dropout\": 0.0,\n "
},
{
"path": "configs/flux/text_encoder_2/model.safetensors.index.json",
"chars": 19885,
"preview": "{\n \"metadata\": {\n \"total_size\": 9524621312\n },\n \"weight_map\": {\n \"encoder.block.0.layer.0.SelfAttention.k.weigh"
},
{
"path": "configs/flux/tokenizer/merges.txt",
"chars": 515308,
"preview": "#version: 0.2\ni n\nt h\na n\nr e\na r\ne r\nth e</w>\nin g</w>\no u\no n\ns t\no r\ne n\no n</w>\na l\na t\ne r</w>\ni t\ni n</w>\nt o</w>\n"
},
{
"path": "configs/flux/tokenizer/special_tokens_map.json",
"chars": 588,
"preview": "{\n \"bos_token\": {\n \"content\": \"<|startoftext|>\",\n \"lstrip\": false,\n \"normalized\": true,\n \"rstrip\": false,\n "
},
{
"path": "configs/flux/tokenizer/tokenizer_config.json",
"chars": 705,
"preview": "{\n \"add_prefix_space\": false,\n \"added_tokens_decoder\": {\n \"49406\": {\n \"content\": \"<|startoftext|>\",\n \"lst"
},
{
"path": "configs/flux/tokenizer/vocab.json",
"chars": 1050327,
"preview": "{\n \"!\": 0,\n \"!!\": 1443,\n \"!!!\": 11194,\n \"!!!!\": 4003,\n \"!!!!!!!!\": 11281,\n \"!!!!!!!!!!!!!!!!\": 30146,\n \"!!!!!!!!!"
},
{
"path": "configs/flux/tokenizer_2/special_tokens_map.json",
"chars": 2543,
"preview": "{\n \"additional_special_tokens\": [\n \"<extra_id_0>\",\n \"<extra_id_1>\",\n \"<extra_id_2>\",\n \"<extra_id_3>\",\n \""
},
{
"path": "configs/flux/tokenizer_2/tokenizer.json",
"chars": 2377467,
"preview": "{\n \"version\": \"1.0\",\n \"truncation\": null,\n \"padding\": null,\n \"added_tokens\": [\n {\n \"id\": 0,\n \"content\":"
},
{
"path": "configs/flux/tokenizer_2/tokenizer_config.json",
"chars": 20817,
"preview": "{\n \"add_prefix_space\": true,\n \"added_tokens_decoder\": {\n \"0\": {\n \"content\": \"<pad>\",\n \"lstrip\": false,\n "
},
{
"path": "configs/flux/transformer/config.json",
"chars": 321,
"preview": "{\n \"_class_name\": \"FluxTransformer2DModel\",\n \"_diffusers_version\": \"0.30.0.dev0\",\n \"attention_head_dim\": 128,\n \"guid"
},
{
"path": "configs/flux/transformer/diffusion_pytorch_model.safetensors.index.json",
"chars": 120822,
"preview": "{\n \"metadata\": {\n \"total_size\": 23782357120\n },\n \"weight_map\": {\n \"context_embedder.bias\": \"diffusion_pytorch_m"
},
{
"path": "configs/flux/vae/config.json",
"chars": 775,
"preview": "{\n \"_class_name\": \"AutoencoderKL\",\n \"_diffusers_version\": \"0.30.0.dev0\",\n \"act_fn\": \"silu\",\n \"block_out_channels\": ["
},
{
"path": "configs/olive/sd/text_encoder.json",
"chars": 3679,
"preview": "{\n \"input_model\": {\n \"type\": \"PyTorchModel\",\n \"config\": {\n \"model_path\": \"\",\n \"model_loader\": \"text_enc"
},
{
"path": "configs/olive/sd/unet.json",
"chars": 4050,
"preview": "{\n \"input_model\": {\n \"type\": \"PyTorchModel\",\n \"config\": {\n \"model_path\": \"\",\n \"model_loader\": \"unet_loa"
},
{
"path": "configs/olive/sd/vae_decoder.json",
"chars": 3772,
"preview": "{\n \"input_model\": {\n \"type\": \"PyTorchModel\",\n \"config\": {\n \"model_path\": \"\",\n \"model_loader\": \"vae_deco"
},
{
"path": "configs/olive/sd/vae_encoder.json",
"chars": 3765,
"preview": "{\n \"input_model\": {\n \"type\": \"PyTorchModel\",\n \"config\": {\n \"model_path\": \"\",\n \"model_loader\": \"vae_enco"
},
{
"path": "configs/olive/sdxl/text_encoder.json",
"chars": 4675,
"preview": "{\n \"input_model\": {\n \"type\": \"PyTorchModel\",\n \"config\": {\n \"model_path\": \"\",\n \"model_loader\": \"text_enc"
},
{
"path": "configs/olive/sdxl/text_encoder_2.json",
"chars": 6819,
"preview": "{\n \"input_model\": {\n \"type\": \"PyTorchModel\",\n \"config\": {\n \"model_path\": \"\",\n \"model_loader\": \"text_enc"
},
{
"path": "configs/olive/sdxl/unet.json",
"chars": 3690,
"preview": "{\n \"input_model\": {\n \"type\": \"PyTorchModel\",\n \"config\": {\n \"model_path\": \"\",\n \"model_loader\": \"unet_loa"
},
{
"path": "configs/olive/sdxl/vae_decoder.json",
"chars": 4190,
"preview": "{\n \"input_model\": {\n \"type\": \"PyTorchModel\",\n \"config\": {\n \"model_path\": \"\",\n \"model_loader\": \"vae_deco"
},
{
"path": "configs/olive/sdxl/vae_encoder.json",
"chars": 3366,
"preview": "{\n \"input_model\": {\n \"type\": \"PyTorchModel\",\n \"config\": {\n \"model_path\": \"\",\n \"model_loader\": \"vae_enco"
},
{
"path": "configs/playground-v2.5-1024px-aesthetic.fp16_vae.json",
"chars": 746,
"preview": "{\n \"_class_name\": \"AutoencoderKL\",\n \"_diffusers_version\": \"0.27.0.dev0\",\n \"act_fn\": \"silu\",\n \"block_out_channels\": ["
},
{
"path": "configs/sd15/feature_extractor/preprocessor_config.json",
"chars": 342,
"preview": "{\n \"crop_size\": 224,\n \"do_center_crop\": true,\n \"do_convert_rgb\": true,\n \"do_normalize\": true,\n \"do_resize\": true,\n "
},
{
"path": "configs/sd15/model_index.json",
"chars": 541,
"preview": "{\n \"_class_name\": \"StableDiffusionPipeline\",\n \"_diffusers_version\": \"0.6.0\",\n \"feature_extractor\": [\n \"transformer"
},
{
"path": "configs/sd15/safety_checker/config.json",
"chars": 4723,
"preview": "{\n \"_commit_hash\": \"4bb648a606ef040e7685bde262611766a5fdd67b\",\n \"_name_or_path\": \"CompVis/stable-diffusion-safety-chec"
},
{
"path": "configs/sd15/scheduler/scheduler_config.json",
"chars": 308,
"preview": "{\n \"_class_name\": \"PNDMScheduler\",\n \"_diffusers_version\": \"0.6.0\",\n \"beta_end\": 0.012,\n \"beta_schedule\": \"scaled_lin"
},
{
"path": "configs/sd15/text_encoder/config.json",
"chars": 617,
"preview": "{\n \"_name_or_path\": \"openai/clip-vit-large-patch14\",\n \"architectures\": [\n \"CLIPTextModel\"\n ],\n \"attention_dropout"
},
{
"path": "configs/sd15/tokenizer/merges.txt",
"chars": 515308,
"preview": "#version: 0.2\ni n\nt h\na n\nr e\na r\ne r\nth e</w>\nin g</w>\no u\no n\ns t\no r\ne n\no n</w>\na l\na t\ne r</w>\ni t\ni n</w>\nt o</w>\n"
},
{
"path": "configs/sd15/tokenizer/special_tokens_map.json",
"chars": 472,
"preview": "{\n \"bos_token\": {\n \"content\": \"<|startoftext|>\",\n \"lstrip\": false,\n \"normalized\": true,\n \"rstrip\": false,\n "
},
{
"path": "configs/sd15/tokenizer/tokenizer_config.json",
"chars": 806,
"preview": "{\n \"add_prefix_space\": false,\n \"bos_token\": {\n \"__type\": \"AddedToken\",\n \"content\": \"<|startoftext|>\",\n \"lstri"
},
{
"path": "configs/sd15/tokenizer/vocab.json",
"chars": 1050327,
"preview": "{\n \"!\": 0,\n \"!!\": 1443,\n \"!!!\": 11194,\n \"!!!!\": 4003,\n \"!!!!!!!!\": 11281,\n \"!!!!!!!!!!!!!!!!\": 30146,\n \"!!!!!!!!!"
},
{
"path": "configs/sd15/unet/config.json",
"chars": 743,
"preview": "{\n \"_class_name\": \"UNet2DConditionModel\",\n \"_diffusers_version\": \"0.6.0\",\n \"act_fn\": \"silu\",\n \"attention_head_dim\": "
},
{
"path": "configs/sd15/vae/config.json",
"chars": 572,
"preview": "{\n \"_class_name\": \"AutoencoderKL\",\n \"_diffusers_version\": \"0.6.0\",\n \"act_fn\": \"silu\",\n \"block_out_channels\": [\n 1"
},
{
"path": "configs/sd3/model_index.json",
"chars": 766,
"preview": "{\n \"_class_name\": \"StableDiffusion3Pipeline\",\n \"_diffusers_version\": \"0.29.0.dev0\",\n \"_name_or_path\": \"stabilityai/st"
},
{
"path": "configs/sd3/scheduler/scheduler_config.json",
"chars": 141,
"preview": "{\n \"_class_name\": \"FlowMatchEulerDiscreteScheduler\",\n \"_diffusers_version\": \"0.29.0.dev0\",\n \"num_train_timesteps\": 10"
},
{
"path": "configs/sd3/text_encoder/config.json",
"chars": 737,
"preview": "{\n \"_name_or_path\": \"/raid/.cache/huggingface/models--stabilityai--stable-diffusion-3-medium/snapshots/84a9ff37a0a30f72"
},
{
"path": "configs/sd3/text_encoder_2/config.json",
"chars": 735,
"preview": "{\n \"_name_or_path\": \"/raid/.cache/huggingface/models--stabilityai--stable-diffusion-3-medium/snapshots/84a9ff37a0a30f72"
},
{
"path": "configs/sd3/text_encoder_3/config.json",
"chars": 905,
"preview": "{\n \"_name_or_path\": \"/raid/.cache/huggingface/models--stabilityai--stable-diffusion-3-medium/snapshots/84a9ff37a0a30f72"
},
{
"path": "configs/sd3/tokenizer/merges.txt",
"chars": 515308,
"preview": "#version: 0.2\ni n\nt h\na n\nr e\na r\ne r\nth e</w>\nin g</w>\no u\no n\ns t\no r\ne n\no n</w>\na l\na t\ne r</w>\ni t\ni n</w>\nt o</w>\n"
},
{
"path": "configs/sd3/tokenizer/special_tokens_map.json",
"chars": 588,
"preview": "{\n \"bos_token\": {\n \"content\": \"<|startoftext|>\",\n \"lstrip\": false,\n \"normalized\": true,\n \"rstrip\": false,\n "
},
{
"path": "configs/sd3/tokenizer/tokenizer_config.json",
"chars": 705,
"preview": "{\n \"add_prefix_space\": false,\n \"added_tokens_decoder\": {\n \"49406\": {\n \"content\": \"<|startoftext|>\",\n \"lst"
},
{
"path": "configs/sd3/tokenizer/vocab.json",
"chars": 1050327,
"preview": "{\n \"!\": 0,\n \"!!\": 1443,\n \"!!!\": 11194,\n \"!!!!\": 4003,\n \"!!!!!!!!\": 11281,\n \"!!!!!!!!!!!!!!!!\": 30146,\n \"!!!!!!!!!"
},
{
"path": "configs/sd3/tokenizer_2/merges.txt",
"chars": 515308,
"preview": "#version: 0.2\ni n\nt h\na n\nr e\na r\ne r\nth e</w>\nin g</w>\no u\no n\ns t\no r\ne n\no n</w>\na l\na t\ne r</w>\ni t\ni n</w>\nt o</w>\n"
},
{
"path": "configs/sd3/tokenizer_2/special_tokens_map.json",
"chars": 576,
"preview": "{\n \"bos_token\": {\n \"content\": \"<|startoftext|>\",\n \"lstrip\": false,\n \"normalized\": true,\n \"rstrip\": false,\n "
},
{
"path": "configs/sd3/tokenizer_2/tokenizer_config.json",
"chars": 856,
"preview": "{\n \"add_prefix_space\": false,\n \"added_tokens_decoder\": {\n \"0\": {\n \"content\": \"!\",\n \"lstrip\": false,\n "
},
{
"path": "configs/sd3/tokenizer_2/vocab.json",
"chars": 1050327,
"preview": "{\n \"!\": 0,\n \"!!\": 1443,\n \"!!!\": 11194,\n \"!!!!\": 4003,\n \"!!!!!!!!\": 11281,\n \"!!!!!!!!!!!!!!!!\": 30146,\n \"!!!!!!!!!"
},
{
"path": "configs/sd3/tokenizer_3/special_tokens_map.json",
"chars": 2543,
"preview": "{\n \"additional_special_tokens\": [\n \"<extra_id_0>\",\n \"<extra_id_1>\",\n \"<extra_id_2>\",\n \"<extra_id_3>\",\n \""
},
{
"path": "configs/sd3/tokenizer_3/tokenizer.json",
"chars": 2377267,
"preview": "{\n \"version\": \"1.0\",\n \"truncation\": null,\n \"padding\": null,\n \"added_tokens\": [\n {\n \"id\": 0,\n \"content\":"
},
{
"path": "configs/sd3/tokenizer_3/tokenizer_config.json",
"chars": 20617,
"preview": "{\n \"add_prefix_space\": true,\n \"added_tokens_decoder\": {\n \"0\": {\n \"content\": \"<pad>\",\n \"lstrip\": false,\n "
},
{
"path": "configs/sd3/transformer/config.json",
"chars": 529,
"preview": "{\n \"_class_name\": \"SD3Transformer2DModel\",\n \"_diffusers_version\": \"0.29.0.dev0\",\n \"_name_or_path\": \"/raid/.cache/hugg"
},
{
"path": "configs/sd3/vae/config.json",
"chars": 889,
"preview": "{\n \"_class_name\": \"AutoencoderKL\",\n \"_diffusers_version\": \"0.29.0.dev0\",\n \"_name_or_path\": \"/raid/.cache/huggingface/"
},
{
"path": "configs/sdxl/model_index.json",
"chars": 609,
"preview": "{\n \"_class_name\": \"StableDiffusionXLPipeline\",\n \"_diffusers_version\": \"0.19.0.dev0\",\n \"force_zeros_for_empty_prompt\":"
},
{
"path": "configs/sdxl/scheduler/scheduler_config.json",
"chars": 519,
"preview": "{\n \"_class_name\": \"EulerAncestralDiscreteScheduler\",\n \"_diffusers_version\": \"0.35.1\",\n \"beta_end\": 0.012,\n \"beta_sch"
},
{
"path": "configs/sdxl/text_encoder/config.json",
"chars": 565,
"preview": "{\n \"architectures\": [\n \"CLIPTextModel\"\n ],\n \"attention_dropout\": 0.0,\n \"bos_token_id\": 0,\n \"dropout\": 0.0,\n \"eo"
},
{
"path": "configs/sdxl/text_encoder_2/config.json",
"chars": 575,
"preview": "{\n \"architectures\": [\n \"CLIPTextModelWithProjection\"\n ],\n \"attention_dropout\": 0.0,\n \"bos_token_id\": 0,\n \"dropou"
},
{
"path": "configs/sdxl/tokenizer/merges.txt",
"chars": 515308,
"preview": "#version: 0.2\ni n\nt h\na n\nr e\na r\ne r\nth e</w>\nin g</w>\no u\no n\ns t\no r\ne n\no n</w>\na l\na t\ne r</w>\ni t\ni n</w>\nt o</w>\n"
},
{
"path": "configs/sdxl/tokenizer/special_tokens_map.json",
"chars": 472,
"preview": "{\n \"bos_token\": {\n \"content\": \"<|startoftext|>\",\n \"lstrip\": false,\n \"normalized\": true,\n \"rstrip\": false,\n "
},
{
"path": "configs/sdxl/tokenizer/tokenizer_config.json",
"chars": 737,
"preview": "{\n \"add_prefix_space\": false,\n \"bos_token\": {\n \"__type\": \"AddedToken\",\n \"content\": \"<|startoftext|>\",\n \"lstri"
},
{
"path": "configs/sdxl/tokenizer/vocab.json",
"chars": 1050327,
"preview": "{\n \"!\": 0,\n \"!!\": 1443,\n \"!!!\": 11194,\n \"!!!!\": 4003,\n \"!!!!!!!!\": 11281,\n \"!!!!!!!!!!!!!!!!\": 30146,\n \"!!!!!!!!!"
},
{
"path": "configs/sdxl/tokenizer_2/merges.txt",
"chars": 515308,
"preview": "#version: 0.2\ni n\nt h\na n\nr e\na r\ne r\nth e</w>\nin g</w>\no u\no n\ns t\no r\ne n\no n</w>\na l\na t\ne r</w>\ni t\ni n</w>\nt o</w>\n"
},
{
"path": "configs/sdxl/tokenizer_2/special_tokens_map.json",
"chars": 460,
"preview": "{\n \"bos_token\": {\n \"content\": \"<|startoftext|>\",\n \"lstrip\": false,\n \"normalized\": true,\n \"rstrip\": false,\n "
},
{
"path": "configs/sdxl/tokenizer_2/tokenizer_config.json",
"chars": 725,
"preview": "{\n \"add_prefix_space\": false,\n \"bos_token\": {\n \"__type\": \"AddedToken\",\n \"content\": \"<|startoftext|>\",\n \"lstri"
},
{
"path": "configs/sdxl/tokenizer_2/vocab.json",
"chars": 1050327,
"preview": "{\n \"!\": 0,\n \"!!\": 1443,\n \"!!!\": 11194,\n \"!!!!\": 4003,\n \"!!!!!!!!\": 11281,\n \"!!!!!!!!!!!!!!!!\": 30146,\n \"!!!!!!!!!"
},
{
"path": "configs/sdxl/unet/config.json",
"chars": 1680,
"preview": "{\n \"_class_name\": \"UNet2DConditionModel\",\n \"_diffusers_version\": \"0.19.0.dev0\",\n \"act_fn\": \"silu\",\n \"addition_embed_"
},
{
"path": "configs/sdxl/vae/config.json",
"chars": 643,
"preview": "{\n \"_class_name\": \"AutoencoderKL\",\n \"_diffusers_version\": \"0.20.0.dev0\",\n \"_name_or_path\": \"../sdxl-vae/\",\n \"act_fn\""
},
{
"path": "configs/sdxl-refiner/model_index.json",
"chars": 612,
"preview": "{\n \"_class_name\": \"StableDiffusionXLImg2ImgPipeline\",\n \"_diffusers_version\": \"0.19.0.dev0\",\n \"force_zeros_for_empty_p"
},
{
"path": "configs/sdxl-refiner/scheduler/scheduler_config.json",
"chars": 479,
"preview": "{\n \"_class_name\": \"EulerDiscreteScheduler\",\n \"_diffusers_version\": \"0.19.0.dev0\",\n \"beta_end\": 0.012,\n \"beta_schedul"
},
{
"path": "configs/sdxl-refiner/text_encoder_2/config.json",
"chars": 575,
"preview": "{\n \"architectures\": [\n \"CLIPTextModelWithProjection\"\n ],\n \"attention_dropout\": 0.0,\n \"bos_token_id\": 0,\n \"dropou"
},
{
"path": "configs/sdxl-refiner/tokenizer_2/merges.txt",
"chars": 515308,
"preview": "#version: 0.2\ni n\nt h\na n\nr e\na r\ne r\nth e</w>\nin g</w>\no u\no n\ns t\no r\ne n\no n</w>\na l\na t\ne r</w>\ni t\ni n</w>\nt o</w>\n"
},
{
"path": "configs/sdxl-refiner/tokenizer_2/special_tokens_map.json",
"chars": 460,
"preview": "{\n \"bos_token\": {\n \"content\": \"<|startoftext|>\",\n \"lstrip\": false,\n \"normalized\": true,\n \"rstrip\": false,\n "
},
{
"path": "configs/sdxl-refiner/tokenizer_2/tokenizer_config.json",
"chars": 725,
"preview": "{\n \"add_prefix_space\": false,\n \"bos_token\": {\n \"__type\": \"AddedToken\",\n \"content\": \"<|startoftext|>\",\n \"lstri"
},
{
"path": "configs/sdxl-refiner/tokenizer_2/vocab.json",
"chars": 1050327,
"preview": "{\n \"!\": 0,\n \"!!\": 1443,\n \"!!!\": 11194,\n \"!!!!\": 4003,\n \"!!!!!!!!\": 11281,\n \"!!!!!!!!!!!!!!!!\": 30146,\n \"!!!!!!!!!"
},
{
"path": "configs/sdxl-refiner/unet/config.json",
"chars": 1709,
"preview": "{\n \"_class_name\": \"UNet2DConditionModel\",\n \"_diffusers_version\": \"0.19.0.dev0\",\n \"act_fn\": \"silu\",\n \"addition_embed_"
},
{
"path": "configs/sdxl-refiner/vae/config.json",
"chars": 642,
"preview": "{\n \"_class_name\": \"AutoencoderKL\",\n \"_diffusers_version\": \"0.20.0.dev0\",\n \"_name_or_path\": \"../sdxl-vae/\",\n \"act_fn\""
},
{
"path": "configs/stable-cascade/prior/config.json",
"chars": 1102,
"preview": "{\n \"_class_name\": \"StableCascadeUNet\",\n \"_diffusers_version\": \"0.27.0.dev0\",\n \"block_out_channels\": [\n 2048,\n 2"
},
{
"path": "configs/stable-cascade/prior_lite/config.json",
"chars": 1102,
"preview": "{\n \"_class_name\": \"StableCascadeUNet\",\n \"_diffusers_version\": \"0.27.0.dev0\",\n \"block_out_channels\": [\n 1536,\n 1"
},
{
"path": "data/previews.json",
"chars": 2694,
"preview": "{\n \"sd-v21-512-ema\": \"models/Reference/stabilityai--stable-diffusion-2-1-base.jpg\",\n \"stabilityai--stable-diffusion-xl"
},
{
"path": "data/reference-cloud.json",
"chars": 677,
"preview": "{\n \"Google Gemini 2.5 Flash Nano Banana\": {\n \"path\": \"gemini-2.5-flash-image\",\n \"desc\": \"Gemini can generate an"
},
{
"path": "data/reference-community.json",
"chars": 6400,
"preview": "{\n \"Tempest-by-Vlad XL\": {\n \"path\": \"tempestByVlad_baseV01.safetensors@https://civitai.com/api/download/models/130"
},
{
"path": "data/reference-distilled.json",
"chars": 9769,
"preview": "{\n \"StabilityAI StableDiffusion XL Turbo\": {\n \"path\": \"stabilityai/sdxl-turbo\",\n \"preview\": \"stabilityai--sdxl-"
},
{
"path": "data/reference-quant.json",
"chars": 9140,
"preview": "{\n \"FLUX.1-Dev sdnq-svd-uint4\": {\n \"path\": \"Disty0/FLUX.1-dev-SDNQ-uint4-svd-r32\",\n \"preview\": \"Disty0--FLUX.1-d"
},
{
"path": "data/reference.json",
"chars": 50862,
"preview": "{\n \"RunwayML StableDiffusion 1.5\": {\n \"original\": true,\n \"path\": \"v1-5-pruned-fp16-emaonly.safetensors@https://hu"
},
{
"path": "data/upscalers.json",
"chars": 2640,
"preview": "{\n \"SwinIR\": [\n [\"4x GAN\", \"https://github.com/JingyunLiang/SwinIR/releases/download/v0.0/003_realSR_BSRGAN_DFOW"
},
{
"path": "eslint.config.mjs",
"chars": 8977,
"preview": "import path from 'node:path';\n\nimport { includeIgnoreFile } from '@eslint/compat';\nimport css from '@eslint/css';\nimport"
},
{
"path": "html/art-styles.json",
"chars": 1110437,
"preview": "[\n {\n \"name\": \"3d print\",\n \"prompt\": \"3d print {prompt}\",\n \"negative\": \"\",\n \"extra\": \"\",\n \"preview\": \"da"
},
{
"path": "html/licenses.html",
"chars": 39679,
"preview": "<style>\n #licenses h2 {font-size: 1.2em; font-weight: bold; margin-bottom: 0.2em;}\n #licenses small {font-size: 0."
},
{
"path": "html/locale_de.json",
"chars": 226995,
"preview": "{\n \"icons\": [\n {\n \"id\": \"\",\n \"label\": \"🎲️\",\n \"localized\": \"🎲️\",\n \"reload\": \"\",\n \"hint\": \"Zu"
},
{
"path": "html/locale_en.json",
"chars": 153223,
"preview": "{\"icons\": [\n {\"id\":\"\",\"label\":\"🎲️\",\"localized\":\"\",\"reload\":\"\",\"hint\":\"Use random seed\"},\n {\"id\":\"\",\"label\":\"🔄\",\"locali"
},
{
"path": "html/locale_es.json",
"chars": 230140,
"preview": "{\n \"icons\": [\n {\n \"id\": \"\",\n \"label\": \"🎲️\",\n \"localized\": \"🎲️\",\n \"reload\": \"\",\n \"hint\": \"Us"
},
{
"path": "html/locale_fr.json",
"chars": 232682,
"preview": "{\n \"icons\": [\n {\n \"id\": \"\",\n \"label\": \"🎲️\",\n \"localized\": \"🎲️\",\n \"reload\": \"\",\n \"hint\": \"Ut"
},
{
"path": "html/locale_hr.json",
"chars": 222723,
"preview": "{\n \"icons\": [\n {\n \"id\": \"\",\n \"label\": \"🎲️\",\n \"localized\": \"🎲️\",\n \"reload\": \"\",\n \"hint\": \"Ko"
},
{
"path": "html/locale_it.json",
"chars": 227639,
"preview": "{\n \"icons\": [\n {\n \"id\": \"\",\n \"label\": \"🎲️\",\n \"localized\": \"🎲️\",\n \"reload\": \"\",\n \"hint\": \"Us"
},
{
"path": "html/locale_ja.json",
"chars": 190657,
"preview": "{\n \"icons\": [\n {\n \"id\": \"\",\n \"label\": \"🎲️\",\n \"localized\": \"🎲️\",\n \"reload\": \"\",\n \"hint\": \"ラン"
},
{
"path": "html/locale_ko.json",
"chars": 191428,
"preview": "{\n \"icons\": [\n {\n \"id\": \"\",\n \"label\": \"🎲️\",\n \"localized\": \"🎲️\",\n \"reload\": \"\",\n \"hint\": \"랜덤"
},
{
"path": "html/locale_pt.json",
"chars": 230435,
"preview": "{\n \"icons\": [\n {\n \"id\": \"\",\n \"label\": \"🎲️\",\n \"localized\": \"Aleatório\",\n \"reload\": \"\",\n \"hin"
},
{
"path": "html/locale_ru.json",
"chars": 227759,
"preview": "{\n \"icons\": [\n {\n \"id\": \"\",\n \"label\": \"🎲️\",\n \"localized\": \"🎲️\",\n \"reload\": \"\",\n \"hint\": \"Ис"
},
{
"path": "html/locale_zh.json",
"chars": 181536,
"preview": "{\n \"icons\": [\n {\n \"id\": \"\",\n \"label\": \"🎲️\",\n \"localized\": \"🎲️\",\n \"reload\": \"\",\n \"hint\": \"使用"
},
{
"path": "html/manifest.json",
"chars": 221,
"preview": "{\n \"name\": \"SD.Next\",\n \"short_name\": \"SD.Next\",\n \"icons\": [{ \"src\": \"favicon.png\", \"sizes\": \"256x256\", \"type\": \"image"
},
{
"path": "html/override_en.json",
"chars": 4,
"preview": "[\n]\n"
},
{
"path": "html/override_hr.json",
"chars": 143,
"preview": "[\n { \"id\": \"\", \"label\": \"Reprocess\", \"localized\": \"Ponovi\", \"hint\": \"Ponovno obradite prethodne generacije koristeći ra"
},
{
"path": "html/override_ko.json",
"chars": 23250,
"preview": "[{\"id\":\"\",\"label\":\"🎲️\",\"localized\":\"\",\"hint\":\"무작위 시드 사용\"},{\"id\":\"\",\"label\":\"🔄\",\"localized\":\"\",\"hint\":\"초기화\"},{\"id\":\"\",\"la"
},
{
"path": "html/swagger.css",
"chars": 184745,
"preview": "html {\n background-color: #aaa;\n}\n\n.swagger-ui {\n color: #3b4151;\n font-family: system-ui, sans-serif;\n}\n\n.swagge"
},
{
"path": "installer.py",
"chars": 90933,
"preview": "from typing import overload, List, Optional\nimport os\nimport sys\nimport json\nimport time\nimport shutil\nimport locale\nimp"
},
{
"path": "javascript/amethyst-nightfall.css",
"chars": 17019,
"preview": "/* generic html tags */\n:root {\n --font: \"Source Sans Pro\", 'ui-sans-serif', 'system-ui', sans-serif, 'NotoSans';\n --f"
},
{
"path": "javascript/aspectRatioOverlay.js",
"chars": 3493,
"preview": "let currentWidth = null;\nlet currentHeight = null;\nlet arFrameTimeout = null;\n\nfunction dimensionChange(e, is_width, is_"
},
{
"path": "javascript/authWrap.js",
"chars": 816,
"preview": "let user;\nlet token;\n\nasync function getToken() {\n if (token === undefined || user === undefined) {\n const res = awa"
},
{
"path": "javascript/base.css",
"chars": 11927,
"preview": "@font-face { font-family: 'NotoSans'; font-display: swap; font-style: normal; font-weight: 100; src: local('NotoSansNerd"
},
{
"path": "javascript/black-gray.css",
"chars": 16096,
"preview": "/* generic html tags */\n@font-face { font-family: 'NotoSans'; font-display: swap; font-style: normal; font-weight: 100; "
},
{
"path": "javascript/black-orange.css",
"chars": 17023,
"preview": "/* generic html tags */\n@font-face { font-family: 'NotoSans'; font-display: swap; font-style: normal; font-weight: 100; "
},
{
"path": "javascript/black-teal-reimagined.css",
"chars": 24699,
"preview": "/* Generic HTML Tags */\n@font-face {\n font-family: 'NotoSans';\n font-display: swap;\n font-style: normal;\n font-weigh"
},
{
"path": "javascript/black-teal.css",
"chars": 18398,
"preview": "/* generic html tags */\n@font-face { font-family: 'NotoSans'; font-display: swap; font-style: normal; font-weight: 100; "
},
{
"path": "javascript/changelog.js",
"chars": 2413,
"preview": "let changelogElements = [];\n\nconst getAllChildren = (el) => {\n const elements = [];\n for (let i = 0; i < el.children.l"
},
{
"path": "javascript/civitai.js",
"chars": 5994,
"preview": "String.prototype.format = function (args) { // eslint-disable-line no-extend-native, func-names\n let thisString = '';\n "
}
]
// ... and 1102 more files (download for full content)
About this extraction
This page contains the full source code of the vladmandic/sdnext GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 1302 files (30.7 MB), approximately 8.1M tokens, and a symbol index with 9937 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.
Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.