-added my model cover tag viewing\n -added virtual model folder link to the model directory\n -bug fixes

pull/12/head
Superag 2023-04-24 15:01:26 -07:00
parent cb456a338e
commit bfc5a580ff
70 changed files with 1532 additions and 84 deletions

BIN
cache/167394.jpg vendored Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 23 KiB

BIN
cache/167633.jpg vendored Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 33 KiB

BIN
cache/21278.jpeg.jpg vendored Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 45 KiB

BIN
cache/21278.jpg vendored Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 45 KiB

BIN
cache/21282.jpeg.jpg vendored Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 61 KiB

BIN
cache/21284.jpeg.jpg vendored Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 37 KiB

BIN
cache/214033.jpg vendored Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 33 KiB

BIN
cache/224275.jpg vendored Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 39 KiB

BIN
cache/224817.jpg vendored Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 26 KiB

BIN
cache/28023.jpg vendored Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 47 KiB

BIN
cache/28027.jpg vendored Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 44 KiB

BIN
cache/28030.jpg vendored Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 55 KiB

BIN
cache/312502.jpg vendored Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 57 KiB

BIN
cache/312504.jpg vendored Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 40 KiB

BIN
cache/312507.jpg vendored Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.0 KiB

BIN
cache/312510.jpg vendored Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 60 KiB

BIN
cache/312512.jpg vendored Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.1 KiB

BIN
cache/312513.jpg vendored Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.1 KiB

BIN
cache/312514.jpg vendored Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.0 KiB

BIN
cache/357737.jpg vendored Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 60 KiB

BIN
cache/43946.jpg vendored Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 48 KiB

BIN
cache/43952.jpg vendored Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 56 KiB

BIN
cache/67555.jpg vendored Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 93 KiB

BIN
cache/98306.jpg vendored Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 30 KiB

BIN
cache/98562.jpg vendored Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 76 KiB

660
configs/controlnet.json Normal file
View File

@ -0,0 +1,660 @@
[
{
"id": 1,
"name": "Controlnet 1.0",
"description": "<p>This repository hosts pruned .safetensors modules of ControlNet, by lllyasviel and T2I-Adapters, TencentARC Team\n\nThe modules are meant for this extension for AUTOMATIC1111/stable-diffusion-webui, but should work for different webuis too if they have it implemented. cheers!\uD83E\uDD42</p></li></ol>",
"type": "Checkpoint",
"poi": false,
"nsfw": false,
"allowNoCredit": true,
"allowCommercialUse": "Rent",
"allowDerivatives": true,
"allowDifferentLicense": true,
"stats": {
"downloadCount": 865,
"favoriteCount": 190,
"commentCount": 7,
"ratingCount": 2,
"rating": 5
},
"creator": {
"username": "lllyasviel",
"image": "https://huggingface.co/webui/ControlNet-modules-safetensors"
},
"tags": [],
"modelVersions": [
{
"id": 1,
"modelId": 7019,
"name": "Controlnet 1.0",
"createdAt": "2023-02-06T13:52:34.605Z",
"updatedAt": "2023-02-06T13:52:34.605Z",
"trainedWords": [],
"baseModel": "SD 1.5",
"earlyAccessTimeFrame": 0,
"description": "<p></p>",
"files": [
{
"name": "control_canny-fp16.safetensors",
"id": 1,
"sizeKB": 161261.130859375,
"type": "Model",
"format": "Controlnet",
"pickleScanResult": "Success",
"pickleScanMessage": "No Pickle imports",
"virusScanResult": "Success",
"scannedAt": "2023-02-06T13:55:58.281Z",
"hashes": {
"AutoV2": "833E816807",
"SHA256": "833E816807E8D3658EBC65436908F690603A8E0E8D26143A90050F32958C9E4E",
"CRC32": "87F68C12",
"BLAKE3": "7A28D3D22520D61B58338791522A14B7B33A6A9CE552FF7D68D7E2688CAB3266"
},
"downloadUrl": "https://huggingface.co/webui/ControlNet-modules-safetensors/resolve/main/control_canny-fp16.safetensors",
"primary": false
},
{
"name": "control_depth-fp16.safetensors",
"id": 2,
"sizeKB": 741261.130859375,
"type": "Model",
"format": "Controlnet",
"pickleScanResult": "Success",
"pickleScanMessage": "No Pickle imports",
"virusScanResult": "Success",
"scannedAt": "2023-02-06T13:55:58.281Z",
"hashes": {
"AutoV2": "833E816807",
"SHA256": "833E816807E8D3658EBC65436908F690603A8E0E8D26143A90050F32958C9E4E",
"CRC32": "87F68C12",
"BLAKE3": "7A28D3D22520D61B58338791522A14B7B33A6A9CE552FF7D68D7E2688CAB3266"
},
"downloadUrl": "https://huggingface.co/webui/ControlNet-modules-safetensors/resolve/main/control_depth-fp16.safetensors",
"primary": true
},
{
"name": "control_hed-fp16.safetensors",
"id": 3,
"sizeKB": 741261.130859375,
"type": "Model",
"format": "Controlnet",
"pickleScanResult": "Success",
"pickleScanMessage": "No Pickle imports",
"virusScanResult": "Success",
"scannedAt": "2023-02-06T13:55:58.281Z",
"hashes": {
"AutoV2": "833E816807",
"SHA256": "833E816807E8D3658EBC65436908F690603A8E0E8D26143A90050F32958C9E4E",
"CRC32": "87F68C12",
"BLAKE3": "7A28D3D22520D61B58338791522A14B7B33A6A9CE552FF7D68D7E2688CAB3266"
},
"downloadUrl": "https://huggingface.co/webui/ControlNet-modules-safetensors/resolve/main/control_hed-fp16.safetensors",
"primary": false
},
{
"name": "control_mlsd-fp16.safetensors",
"id": 4,
"sizeKB": 741261.130859375,
"type": "Model",
"format": "Controlnet",
"pickleScanResult": "Success",
"pickleScanMessage": "No Pickle imports",
"virusScanResult": "Success",
"scannedAt": "2023-02-06T13:55:58.281Z",
"hashes": {
"AutoV2": "833E816807",
"SHA256": "833E816807E8D3658EBC65436908F690603A8E0E8D26143A90050F32958C9E4E",
"CRC32": "87F68C12",
"BLAKE3": "7A28D3D22520D61B58338791522A14B7B33A6A9CE552FF7D68D7E2688CAB3266"
},
"downloadUrl": "https://huggingface.co/webui/ControlNet-modules-safetensors/resolve/main/control_mlsd-fp16.safetensors",
"primary": false
},
{
"name": "control_normal-fp16.safetensors",
"id": 5,
"sizeKB": 741261.130859375,
"type": "Model",
"format": "Checkpoint",
"pickleScanResult": "Success",
"pickleScanMessage": "No Pickle imports",
"virusScanResult": "Success",
"scannedAt": "2023-02-06T13:55:58.281Z",
"hashes": {
"AutoV2": "833E816807",
"SHA256": "833E816807E8D3658EBC65436908F690603A8E0E8D26143A90050F32958C9E4E",
"CRC32": "87F68C12",
"BLAKE3": "7A28D3D22520D61B58338791522A14B7B33A6A9CE552FF7D68D7E2688CAB3266"
},
"downloadUrl": "https://huggingface.co/webui/ControlNet-modules-safetensors/resolve/main/control_normal-fp16.safetensors",
"primary": false
},
{
"name": "control_openpose-fp16.safetensors",
"id": 6,
"sizeKB": 741261.130859375,
"type": "Model",
"format": "Checkpoint",
"pickleScanResult": "Success",
"pickleScanMessage": "No Pickle imports",
"virusScanResult": "Success",
"scannedAt": "2023-02-06T13:55:58.281Z",
"hashes": {
"AutoV2": "833E816807",
"SHA256": "833E816807E8D3658EBC65436908F690603A8E0E8D26143A90050F32958C9E4E",
"CRC32": "87F68C12",
"BLAKE3": "7A28D3D22520D61B58338791522A14B7B33A6A9CE552FF7D68D7E2688CAB3266"
},
"downloadUrl": "https://huggingface.co/webui/ControlNet-modules-safetensors/resolve/main/control_openpose-fp16.safetensors",
"primary": false
},
{
"name": "control_scribble-fp16.safetensors",
"id": 7,
"sizeKB": 741261.130859375,
"type": "Model",
"format": "Checkpoint",
"pickleScanResult": "Success",
"pickleScanMessage": "No Pickle imports",
"virusScanResult": "Success",
"scannedAt": "2023-02-06T13:55:58.281Z",
"hashes": {
"AutoV2": "833E816807",
"SHA256": "833E816807E8D3658EBC65436908F690603A8E0E8D26143A90050F32958C9E4E",
"CRC32": "87F68C12",
"BLAKE3": "7A28D3D22520D61B58338791522A14B7B33A6A9CE552FF7D68D7E2688CAB3266"
},
"downloadUrl": "https://huggingface.co/webui/ControlNet-modules-safetensors/resolve/main/control_scribble-fp16.safetensors",
"primary": false
},
{
"name": "control_seg-fp16.safetensors",
"id": 8,
"sizeKB": 161261.130859375,
"type": "Model",
"format": "Checkpoint",
"pickleScanResult": "Success",
"pickleScanMessage": "No Pickle imports",
"virusScanResult": "Success",
"scannedAt": "2023-02-06T13:55:58.281Z",
"hashes": {
"AutoV2": "833E816807",
"SHA256": "833E816807E8D3658EBC65436908F690603A8E0E8D26143A90050F32958C9E4E",
"CRC32": "87F68C12",
"BLAKE3": "7A28D3D22520D61B58338791522A14B7B33A6A9CE552FF7D68D7E2688CAB3266"
},
"downloadUrl": "https://huggingface.co/webui/ControlNet-modules-safetensors/resolve/main/control_seg-fp16.safetensors",
"primary": false
},
{
"name": "t2iadapter_canny-fp16.safetensors",
"id": 9,
"sizeKB": 38261.130859375,
"type": "Model",
"format": "Checkpoint",
"pickleScanResult": "Success",
"pickleScanMessage": "No Pickle imports",
"virusScanResult": "Success",
"scannedAt": "2023-02-06T13:55:58.281Z",
"hashes": {
"AutoV2": "833E816807",
"SHA256": "833E816807E8D3658EBC65436908F690603A8E0E8D26143A90050F32958C9E4E",
"CRC32": "87F68C12",
"BLAKE3": "7A28D3D22520D61B58338791522A14B7B33A6A9CE552FF7D68D7E2688CAB3266"
},
"downloadUrl": "https://huggingface.co/webui/ControlNet-modules-safetensors/resolve/main/t2iadapter_canny-fp16.safetensors",
"primary": false
},
{
"name": "t2iadapter_color-fp16.safetensors",
"id": 10,
"sizeKB": 161261.130859375,
"type": "Model",
"format": "Checkpoint",
"pickleScanResult": "Success",
"pickleScanMessage": "No Pickle imports",
"virusScanResult": "Success",
"scannedAt": "2023-02-06T13:55:58.281Z",
"hashes": {
"AutoV2": "833E816807",
"SHA256": "833E816807E8D3658EBC65436908F690603A8E0E8D26143A90050F32958C9E4E",
"CRC32": "87F68C12",
"BLAKE3": "7A28D3D22520D61B58338791522A14B7B33A6A9CE552FF7D68D7E2688CAB3266"
},
"downloadUrl": "https://huggingface.co/webui/ControlNet-modules-safetensors/resolve/main/t2iadapter_color-fp16.safetensors",
"primary": false
},
{
"name": "t2iadapter_depth-fp16.safetensors",
"id": 11,
"sizeKB": 161261.130859375,
"type": "Model",
"format": "Checkpoint",
"pickleScanResult": "Success",
"pickleScanMessage": "No Pickle imports",
"virusScanResult": "Success",
"scannedAt": "2023-02-06T13:55:58.281Z",
"hashes": {
"AutoV2": "833E816807",
"SHA256": "833E816807E8D3658EBC65436908F690603A8E0E8D26143A90050F32958C9E4E",
"CRC32": "87F68C12",
"BLAKE3": "7A28D3D22520D61B58338791522A14B7B33A6A9CE552FF7D68D7E2688CAB3266"
},
"downloadUrl": "https://huggingface.co/webui/ControlNet-modules-safetensors/resolve/main/t2iadapter_depth-fp16.safetensors",
"primary": false
},
{
"name": "t2iadapter_keypose-fp16.safetensors",
"id": 12,
"sizeKB": 161261.130859375,
"type": "Model",
"format": "Checkpoint",
"pickleScanResult": "Success",
"pickleScanMessage": "No Pickle imports",
"virusScanResult": "Success",
"scannedAt": "2023-02-06T13:55:58.281Z",
"hashes": {
"AutoV2": "833E816807",
"SHA256": "833E816807E8D3658EBC65436908F690603A8E0E8D26143A90050F32958C9E4E",
"CRC32": "87F68C12",
"BLAKE3": "7A28D3D22520D61B58338791522A14B7B33A6A9CE552FF7D68D7E2688CAB3266"
},
"downloadUrl": "https://huggingface.co/webui/ControlNet-modules-safetensors/resolve/main/t2iadapter_keypose-fp16.safetensors",
"primary": false
},
{
"name": "t2iadapter_openpose-fp16.safetensors",
"id": 13,
"sizeKB": 161261.130859375,
"type": "Model",
"format": "Checkpoint",
"pickleScanResult": "Success",
"pickleScanMessage": "No Pickle imports",
"virusScanResult": "Success",
"scannedAt": "2023-02-06T13:55:58.281Z",
"hashes": {
"AutoV2": "833E816807",
"SHA256": "833E816807E8D3658EBC65436908F690603A8E0E8D26143A90050F32958C9E4E",
"CRC32": "87F68C12",
"BLAKE3": "7A28D3D22520D61B58338791522A14B7B33A6A9CE552FF7D68D7E2688CAB3266"
},
"downloadUrl": "https://huggingface.co/webui/ControlNet-modules-safetensors/resolve/main/t2iadapter_openpose-fp16.safetensors",
"primary": false
},
{
"name": "t2iadapter_seg-fp16.safetensors",
"id": 14,
"sizeKB": 161261.130859375,
"type": "Model",
"format": "Checkpoint",
"pickleScanResult": "Success",
"pickleScanMessage": "No Pickle imports",
"virusScanResult": "Success",
"scannedAt": "2023-02-06T13:55:58.281Z",
"hashes": {
"AutoV2": "833E816807",
"SHA256": "833E816807E8D3658EBC65436908F690603A8E0E8D26143A90050F32958C9E4E",
"CRC32": "87F68C12",
"BLAKE3": "7A28D3D22520D61B58338791522A14B7B33A6A9CE552FF7D68D7E2688CAB3266"
},
"downloadUrl": "https://huggingface.co/webui/ControlNet-modules-safetensors/resolve/main/t2iadapter_seg-fp16.safetensors",
"primary": false
},
{
"name": "t2iadapter_sketch-fp16.safetensors",
"id": 15,
"sizeKB": 161261.130859375,
"type": "Model",
"format": "Checkpoint",
"pickleScanResult": "Success",
"pickleScanMessage": "No Pickle imports",
"virusScanResult": "Success",
"scannedAt": "2023-02-06T13:55:58.281Z",
"hashes": {
"AutoV2": "833E816807",
"SHA256": "833E816807E8D3658EBC65436908F690603A8E0E8D26143A90050F32958C9E4E",
"CRC32": "87F68C12",
"BLAKE3": "7A28D3D22520D61B58338791522A14B7B33A6A9CE552FF7D68D7E2688CAB3266"
},
"downloadUrl": "https://huggingface.co/webui/ControlNet-modules-safetensors/resolve/main/t2iadapter_sketch-fp16.safetensors",
"primary": false
},
{
"name": "t2iadapter_style-fp16.safetensors",
"id": 16,
"sizeKB": 78261.130859375,
"type": "Model",
"format": "Checkpoint",
"pickleScanResult": "Success",
"pickleScanMessage": "No Pickle imports",
"virusScanResult": "Success",
"scannedAt": "2023-02-06T13:55:58.281Z",
"hashes": {
"AutoV2": "833E816807",
"SHA256": "833E816807E8D3658EBC65436908F690603A8E0E8D26143A90050F32958C9E4E",
"CRC32": "87F68C12",
"BLAKE3": "7A28D3D22520D61B58338791522A14B7B33A6A9CE552FF7D68D7E2688CAB3266"
},
"downloadUrl": "https://huggingface.co/webui/ControlNet-modules-safetensors/resolve/main/t2iadapter_style-fp16.safetensors",
"primary": false
}
],
"images": [
{
"url": "https://msdn.miaoshouai.com/msai/kt/ez/9900922.png"
}
]
}
]
},
{
"id": 2,
"name": "Controlnet 1.1",
"description": "<p>Stable Diffusion v2-1 Model Card\\nThis model card focuses on the model associated with the Stable Diffusion v2-1 model, codebase available here.\\n\\nThis stable-diffusion-2-1 model is fine-tuned from stable-diffusion-2 (768-v-ema.ckpt) with an additional 55k steps on the same dataset (with punsafe=0.1), and then fine-tuned for another 155k extra steps with punsafe=0.98.\\n\\nUse it with the stablediffusion repository: download the v2-1_768-ema-pruned.ckpt here.\\nUse it with \\uD83E\\uDDE8 diffusers\\nModel Details\\nDeveloped by: Robin Rombach, Patrick Esser\\n\\nModel type: Diffusion-based text-to-image generation model\\n\\nLanguage(s): English\\n\\nLicense: CreativeML Open RAIL++-M License\\n\\nModel Description: This is a model that can be used to generate and modify images based on text prompts. It is a Latent Diffusion Model that uses a fixed, pretrained text encoder (OpenCLIP-ViT/H).\\n\\nResources for more information: GitHub Repository.</p></li></ol>\",</p></li></ol>",
"type": "Checkpoint",
"poi": false,
"nsfw": false,
"allowNoCredit": true,
"allowCommercialUse": "Rent",
"allowDerivatives": true,
"allowDifferentLicense": true,
"stats": {
"downloadCount": 865,
"favoriteCount": 190,
"commentCount": 7,
"ratingCount": 2,
"rating": 5
},
"creator": {
"username": "lllyasviel",
"image": "https://huggingface.co/lllyasviel/ControlNet-v1-1"
},
"tags": [],
"modelVersions": [
{
"id": 2,
"modelId": 2,
"name": "Controlnet 1.1",
"createdAt": "2023-02-06T13:52:34.605Z",
"updatedAt": "2023-02-06T13:52:34.605Z",
"trainedWords": [],
"baseModel": "SD 1.5",
"earlyAccessTimeFrame": 0,
"description": "<p></p>",
"files": [
{
"name": "control_v11e_sd15_ip2p.pth",
"id": 18,
"sizeKB": 1561261.130859375,
"type": "Model",
"format": "Controlnet",
"pickleScanResult": "Success",
"pickleScanMessage": "No Pickle imports",
"virusScanResult": "Success",
"scannedAt": "2023-02-06T13:55:58.281Z",
"hashes": {
"AutoV2": "833E816807",
"SHA256": "833E816807E8D3658EBC65436908F690603A8E0E8D26143A90050F32958C9E4E",
"CRC32": "87F68C12",
"BLAKE3": "7A28D3D22520D61B58338791522A14B7B33A6A9CE552FF7D68D7E2688CAB3266"
},
"downloadUrl": "https://huggingface.co/lllyasviel/ControlNet-v1-1/resolve/main/control_v11e_sd15_ip2p.pth",
"primary": false
},
{
"name": "control_v11e_sd15_shuffle.pth",
"id": 19,
"sizeKB": 1521261.130859375,
"type": "Model",
"format": "Controlnet",
"pickleScanResult": "Success",
"pickleScanMessage": "No Pickle imports",
"virusScanResult": "Success",
"scannedAt": "2023-02-06T13:55:58.281Z",
"hashes": {
"AutoV2": "833E816807",
"SHA256": "833E816807E8D3658EBC65436908F690603A8E0E8D26143A90050F32958C9E4E",
"CRC32": "87F68C12",
"BLAKE3": "7A28D3D22520D61B58338791522A14B7B33A6A9CE552FF7D68D7E2688CAB3266"
},
"downloadUrl": "https://huggingface.co/lllyasviel/ControlNet-v1-1/resolve/main/control_v11e_sd15_shuffle.pth",
"primary": true
},
{
"name": "control_v11f1p_sd15_depth.pth",
"id": 20,
"sizeKB": 1521261.130859375,
"type": "Model",
"format": "Controlnet",
"pickleScanResult": "Success",
"pickleScanMessage": "No Pickle imports",
"virusScanResult": "Success",
"scannedAt": "2023-02-06T13:55:58.281Z",
"hashes": {
"AutoV2": "833E816807",
"SHA256": "833E816807E8D3658EBC65436908F690603A8E0E8D26143A90050F32958C9E4E",
"CRC32": "87F68C12",
"BLAKE3": "7A28D3D22520D61B58338791522A14B7B33A6A9CE552FF7D68D7E2688CAB3266"
},
"downloadUrl": "https://huggingface.co/lllyasviel/ControlNet-v1-1/resolve/main/control_v11f1p_sd15_depth.pth",
"primary": false
},
{
"name": "control_v11p_sd15_canny.pth",
"id": 21,
"sizeKB": 1521261.130859375,
"type": "Model",
"format": "Controlnet",
"pickleScanResult": "Success",
"pickleScanMessage": "No Pickle imports",
"virusScanResult": "Success",
"scannedAt": "2023-02-06T13:55:58.281Z",
"hashes": {
"AutoV2": "833E816807",
"SHA256": "833E816807E8D3658EBC65436908F690603A8E0E8D26143A90050F32958C9E4E",
"CRC32": "87F68C12",
"BLAKE3": "7A28D3D22520D61B58338791522A14B7B33A6A9CE552FF7D68D7E2688CAB3266"
},
"downloadUrl": "https://huggingface.co/lllyasviel/ControlNet-v1-1/resolve/main/control_v11p_sd15_canny.pth",
"primary": false
},
{
"name": "control_v11p_sd15_inpaint.pth",
"id": 22,
"sizeKB": 1521261.130859375,
"type": "Model",
"format": "Controlnet",
"pickleScanResult": "Success",
"pickleScanMessage": "No Pickle imports",
"virusScanResult": "Success",
"scannedAt": "2023-02-06T13:55:58.281Z",
"hashes": {
"AutoV2": "833E816807",
"SHA256": "833E816807E8D3658EBC65436908F690603A8E0E8D26143A90050F32958C9E4E",
"CRC32": "87F68C12",
"BLAKE3": "7A28D3D22520D61B58338791522A14B7B33A6A9CE552FF7D68D7E2688CAB3266"
},
"downloadUrl": "https://huggingface.co/lllyasviel/ControlNet-v1-1/resolve/main/control_v11p_sd15_inpaint.pth",
"primary": false
},
{
"name": "control_v11p_sd15_lineart.pth",
"id": 23,
"sizeKB": 1521261.130859375,
"type": "Model",
"format": "Controlnet",
"pickleScanResult": "Success",
"pickleScanMessage": "No Pickle imports",
"virusScanResult": "Success",
"scannedAt": "2023-02-06T13:55:58.281Z",
"hashes": {
"AutoV2": "833E816807",
"SHA256": "833E816807E8D3658EBC65436908F690603A8E0E8D26143A90050F32958C9E4E",
"CRC32": "87F68C12",
"BLAKE3": "7A28D3D22520D61B58338791522A14B7B33A6A9CE552FF7D68D7E2688CAB3266"
},
"downloadUrl": "https://huggingface.co/lllyasviel/ControlNet-v1-1/resolve/main/control_v11p_sd15_lineart.pth",
"primary": false
},
{
"name": "control_v11p_sd15_mlsd.pth",
"id": 24,
"sizeKB": 1521261.130859375,
"type": "Model",
"format": "Controlnet",
"pickleScanResult": "Success",
"pickleScanMessage": "No Pickle imports",
"virusScanResult": "Success",
"scannedAt": "2023-02-06T13:55:58.281Z",
"hashes": {
"AutoV2": "833E816807",
"SHA256": "833E816807E8D3658EBC65436908F690603A8E0E8D26143A90050F32958C9E4E",
"CRC32": "87F68C12",
"BLAKE3": "7A28D3D22520D61B58338791522A14B7B33A6A9CE552FF7D68D7E2688CAB3266"
},
"downloadUrl": "https://huggingface.co/lllyasviel/ControlNet-v1-1/resolve/main/control_v11p_sd15_mlsd.pth",
"primary": false
},
{
"name": "control_v11p_sd15_normalbae.pth",
"id": 25,
"sizeKB": 1521261.130859375,
"type": "Model",
"format": "Controlnet",
"pickleScanResult": "Success",
"pickleScanMessage": "No Pickle imports",
"virusScanResult": "Success",
"scannedAt": "2023-02-06T13:55:58.281Z",
"hashes": {
"AutoV2": "833E816807",
"SHA256": "833E816807E8D3658EBC65436908F690603A8E0E8D26143A90050F32958C9E4E",
"CRC32": "87F68C12",
"BLAKE3": "7A28D3D22520D61B58338791522A14B7B33A6A9CE552FF7D68D7E2688CAB3266"
},
"downloadUrl": "https://huggingface.co/lllyasviel/ControlNet-v1-1/resolve/main/control_v11p_sd15_normalbae.pth",
"primary": false
},
{
"name": "control_v11p_sd15_openpose.pth",
"id": 26,
"sizeKB": 1521261.130859375,
"type": "Model",
"format": "Controlnet",
"pickleScanResult": "Success",
"pickleScanMessage": "No Pickle imports",
"virusScanResult": "Success",
"scannedAt": "2023-02-06T13:55:58.281Z",
"hashes": {
"AutoV2": "833E816807",
"SHA256": "833E816807E8D3658EBC65436908F690603A8E0E8D26143A90050F32958C9E4E",
"CRC32": "87F68C12",
"BLAKE3": "7A28D3D22520D61B58338791522A14B7B33A6A9CE552FF7D68D7E2688CAB3266"
},
"downloadUrl": "https://huggingface.co/lllyasviel/ControlNet-v1-1/resolve/main/control_v11p_sd15_openpose.pth",
"primary": false
},
{
"name": "control_v11p_sd15_scribble.pth",
"id": 27,
"sizeKB": 1521261.130859375,
"type": "Model",
"format": "Controlnet",
"pickleScanResult": "Success",
"pickleScanMessage": "No Pickle imports",
"virusScanResult": "Success",
"scannedAt": "2023-02-06T13:55:58.281Z",
"hashes": {
"AutoV2": "833E816807",
"SHA256": "833E816807E8D3658EBC65436908F690603A8E0E8D26143A90050F32958C9E4E",
"CRC32": "87F68C12",
"BLAKE3": "7A28D3D22520D61B58338791522A14B7B33A6A9CE552FF7D68D7E2688CAB3266"
},
"downloadUrl": "https://huggingface.co/lllyasviel/ControlNet-v1-1/resolve/main/control_v11p_sd15_scribble.pth",
"primary": false
},
{
"name": "control_v11p_sd15_seg.pth",
"id": 28,
"sizeKB": 1521261.130859375,
"type": "Model",
"format": "Controlnet",
"pickleScanResult": "Success",
"pickleScanMessage": "No Pickle imports",
"virusScanResult": "Success",
"scannedAt": "2023-02-06T13:55:58.281Z",
"hashes": {
"AutoV2": "833E816807",
"SHA256": "833E816807E8D3658EBC65436908F690603A8E0E8D26143A90050F32958C9E4E",
"CRC32": "87F68C12",
"BLAKE3": "7A28D3D22520D61B58338791522A14B7B33A6A9CE552FF7D68D7E2688CAB3266"
},
"downloadUrl": "https://huggingface.co/lllyasviel/ControlNet-v1-1/resolve/main/control_v11p_sd15_seg.pth",
"primary": false
},
{
"name": "control_v11p_sd15_softedge.pth",
"id": 29,
"sizeKB": 1521261.130859375,
"type": "Model",
"format": "Controlnet",
"pickleScanResult": "Success",
"pickleScanMessage": "No Pickle imports",
"virusScanResult": "Success",
"scannedAt": "2023-02-06T13:55:58.281Z",
"hashes": {
"AutoV2": "833E816807",
"SHA256": "833E816807E8D3658EBC65436908F690603A8E0E8D26143A90050F32958C9E4E",
"CRC32": "87F68C12",
"BLAKE3": "7A28D3D22520D61B58338791522A14B7B33A6A9CE552FF7D68D7E2688CAB3266"
},
"downloadUrl": "https://huggingface.co/lllyasviel/ControlNet-v1-1/resolve/main/control_v11p_sd15_softedge.pth",
"primary": false
},
{
"name": "control_v11p_sd15s2_lineart_anime.pth",
"id": 30,
"sizeKB": 1521261.130859375,
"type": "Model",
"format": "Controlnet",
"pickleScanResult": "Success",
"pickleScanMessage": "No Pickle imports",
"virusScanResult": "Success",
"scannedAt": "2023-02-06T13:55:58.281Z",
"hashes": {
"AutoV2": "833E816807",
"SHA256": "833E816807E8D3658EBC65436908F690603A8E0E8D26143A90050F32958C9E4E",
"CRC32": "87F68C12",
"BLAKE3": "7A28D3D22520D61B58338791522A14B7B33A6A9CE552FF7D68D7E2688CAB3266"
},
"downloadUrl": "https://huggingface.co/lllyasviel/ControlNet-v1-1/resolve/main/control_v11p_sd15s2_lineart_anime.pth",
"primary": false
},
{
"name": "control_v11u_sd15_tile.pth",
"id": 31,
"sizeKB": 1521261.130859375,
"type": "Model",
"format": "Controlnet",
"pickleScanResult": "Success",
"pickleScanMessage": "No Pickle imports",
"virusScanResult": "Success",
"scannedAt": "2023-02-06T13:55:58.281Z",
"hashes": {
"AutoV2": "833E816807",
"SHA256": "833E816807E8D3658EBC65436908F690603A8E0E8D26143A90050F32958C9E4E",
"CRC32": "87F68C12",
"BLAKE3": "7A28D3D22520D61B58338791522A14B7B33A6A9CE552FF7D68D7E2688CAB3266"
},
"downloadUrl": "https://huggingface.co/lllyasviel/ControlNet-v1-1/resolve/main/control_v11u_sd15_tile.pth",
"primary": false
}
],
"images": [
{
"url": "https://msdn.miaoshouai.com/msai/kt/ez/9900922.png"
}
]
}
]
}
]

View File

@ -78,5 +78,79 @@
"deliberate_v2.safetensors [b500405cde]": "b500405cde",
"deliberate_v2.safetensors [493484f455]": "493484f455",
"deliberate_v2.safetensors [ade8822b56]": "ade8822b56",
"realisticVisionV20_v20.ckpt [d11a449e0f]": "d11a449e0f"
}
"realisticVisionV20_v20.ckpt [d11a449e0f]": "d11a449e0f",
"2dn_1.safetensors [83569a04f4]": "83569a04f4",
"21SDModernBuildings_midjourneyBuildings.ckpt [14e1e8d692]": "14e1e8d692",
"AbyssOrangeMix2_hard.safetensors [0fc198c490]": "0fc198c490",
"adobisRealFlexibleMix_v2.safetensors [9e8a2c7a5d]": "9e8a2c7a5d",
"allInOnePixelModel_v1.ckpt [d7fb6396ab]": "d7fb6396ab",
"aloeverasSimpmaker3K_simpmaker3K1.ckpt [2cae9bc4e0]": "2cae9bc4e0",
"analogDiffusion_10Safetensors.safetensors [51f6fff508]": "51f6fff508",
"analogDream3D_10.ckpt [4575363662]": "4575363662",
"anovel_speed.ckpt [89d59c3dde]": "89d59c3dde",
"anygenV37_anygenv37.ckpt [815c974757]": "815c974757",
"Anything-V3.0-pruned.ckpt [543bcbc212]": "543bcbc212",
"anytwam11Mixedmodel_anytwam11.safetensors [e9cb790ad3]": "e9cb790ad3",
"aoaokoPVCStyleModel_pvcAOAOKO.safetensors [cf64507cef]": "cf64507cef",
"Arcane_Diffusion.ckpt [7dd0e6760f]": "7dd0e6760f",
"arcaneDiffusion_v3.ckpt [7dd0e6760f]": "7dd0e6760f",
"artErosAerosATribute_aerosNovae.safetensors [70346f7a1e]": "70346f7a1e",
"aToZovyaRPGArtistsTools15_sd15V1.safetensors [e28b2e61fb]": "e28b2e61fb",
"ayonimix_V2.safetensors [7076f76b9d]": "7076f76b9d",
"babes_11.safetensors [79886b6484]": "79886b6484",
"Basil_mix_fixed.safetensors [0ff127093f]": "0ff127093f",
"biggerGirlsModel_biggergirlsV2.ckpt [f3c16c83de]": "f3c16c83de",
"cheeseDaddys_30.safetensors [4176564bea]": "4176564bea",
"chillout_west_mix.safetensors [b93a715b47]": "b93a715b47",
"chilloutmix_inpainting.inpainting.safetensors [ec749031ba]": "ec749031ba",
"chromaticcreamv1_chromaticcreamV1.ckpt [c979d60b4a]": "c979d60b4a",
"ChromaV5 (2.0).ckpt [e8004ba771]": "e8004ba771",
"clarity_14.safetensors [dc027dbbf9]": "dc027dbbf9",
"classicNegative1521_classicNegative768px.ckpt [2106fd3b8c]": "2106fd3b8c",
"Colorwater_v4.safetensors [1b175706ff]": "1b175706ff",
"comicBabes_v1.safetensors [9211801e30]": "9211801e30",
"comicDiffusion_v2.ckpt [d3c225cbc2]": "d3c225cbc2",
"corneos7thHeavenMix_100.safetensors [d289dfa4ed]": "d289dfa4ed",
"corneos7thHeavenMix_v1.safetensors [d289dfa4ed]": "d289dfa4ed",
"Counterfeit-V2.5_pruned.safetensors [a074b8864e]": "a074b8864e",
"CounterfeitV20_20.ckpt [8838e0d1fb]": "8838e0d1fb",
"cuteRichstyle15_cuteRichstyle.ckpt [24bc802fc5]": "24bc802fc5",
"cyberrealistic_v13.safetensors [23e4391b10]": "23e4391b10",
"cynthiaModela_v10.safetensors [c83fe90aa3]": "c83fe90aa3",
"deliberate_v11-inpainting.inpainting.safetensors [0d0792451f]": "0d0792451f",
"deliberate_v11.safetensors [d8691b4d16]": "d8691b4d16",
"dgspitzerArt_dgspitzerArtDiffusion.safetensors [8141c5f18e]": "8141c5f18e",
"diGiMDSToriyamaModel_toriyamaV1.ckpt [33c84ed0b3]": "33c84ed0b3",
"dreamlikeDiffusion10_10.ckpt [0aecbcfa2c]": "0aecbcfa2c",
"dreamlikePhotoreal20_dreamlikePhotoreal20.safetensors [92970aa785]": "92970aa785",
"dreamshaper_332BakedVaeClipFix.safetensors [13dfc9921f]": "13dfc9921f",
"DucHaitenAIart.safetensors [55fed17365]": "55fed17365",
"duchaitenaiart_V20.safetensors [55fed17365]": "55fed17365",
"dvarchMultiPrompt_dvarchExterior.ckpt [1ecb6b4e9c]": "1ecb6b4e9c",
"Elldreths_OG_4060_mix.ckpt [707ee16b5b]": "707ee16b5b",
"Elldreths_Retro_Mix.ckpt [57285e7bd5]": "57285e7bd5",
"ElldrethsImaginationMix.ckpt [64224f0599]": "64224f0599",
"elldrethsLucidMix_v10.safetensors [67abd65708]": "67abd65708",
"elldrethSOg4060Mix_v10.ckpt [707ee16b5b]": "707ee16b5b",
"elldrethsRetroMix_v10.safetensors [57285e7bd5]": "57285e7bd5",
"icomix_V02Pruned.safetensors [76b00ee812]": "76b00ee812",
"inkpunkDiffusion_v2-inpainting-fp16-no-ema.safetensors [0c666f32e8]": "0c666f32e8",
"inkpunkDiffusion_v2-inpainting.safetensors [1bd4ce2c12]": "1bd4ce2c12",
"inkpunkDiffusion_v2.ckpt [2182245415]": "2182245415",
"meinamix_meinaV8.safetensors [30953ab0de]": "30953ab0de",
"mimi_V3.safetensors [88f31afc3d]": "88f31afc3d",
"mini_town_v1.safetensors [ed94110348]": "ed94110348",
"pixhell_v20.safetensors [333825e530]": "333825e530",
"projectUnrealEngine5_projectUnrealEngine5B.ckpt [748ff6eab2]": "748ff6eab2",
"pyraMythraPneuma_50Epochs.safetensors [fc9d093614]": "fc9d093614",
"realisticVisionV20_v20.safetensors [c0d1994c73]": "c0d1994c73",
"realLifeTest_realLifeTest.ckpt [d6347268cc]": "d6347268cc",
"revAnimated_v11.safetensors [d725be5d18]": "d725be5d18",
"samdoesartsUltmerge_v1.ckpt [0df9497424]": "0df9497424",
"shanshui_v0-000002.safetensors [18cbf1953b]": "18cbf1953b",
"tmndMix_tmndMixPlus.safetensors [7d19f9efad]": "7d19f9efad",
"unstableinkdream_v73.safetensors [f036d7b40b]": "f036d7b40b",
"unstablephotorealv5_05.ckpt [6ef4ed10a6]": "6ef4ed10a6",
"yinmu.safetensors [c1b28e2883]": "c1b28e2883",
"protogenX58RebuiltScifi_10.ckpt [e0de8aae3e]": "e0de8aae3e"
}

View File

@ -0,0 +1,323 @@
[
{
"id": 1,
"name": "stable-diffusion-v1-5",
"description": "<p>Stable Diffusion is a latent text-to-image diffusion model capable of generating photo-realistic images given any text input. For more information about how Stable Diffusion functions, please have a look at \uD83E\uDD17's Stable Diffusion blog.\n\nThe Stable-Diffusion-v1-5 checkpoint was initialized with the weights of the Stable-Diffusion-v1-2 checkpoint and subsequently fine-tuned on 595k steps at resolution 512x512 on \"laion-aesthetics v2 5+\" and 10% dropping of the text-conditioning to improve classifier-free guidance sampling.\n\nYou can use this both with the \uD83E\uDDE8Diffusers library and the RunwayML GitHub repository.</p></li></ol>",
"type": "Checkpoint",
"poi": false,
"nsfw": false,
"allowNoCredit": true,
"allowCommercialUse": "Rent",
"allowDerivatives": true,
"allowDifferentLicense": true,
"stats": {
"downloadCount": 865,
"favoriteCount": 190,
"commentCount": 7,
"ratingCount": 2,
"rating": 5
},
"creator": {
"username": "creativeml-openrail-m",
"image": "https://huggingface.co/runwayml/stable-diffusion-v1-5"
},
"tags": [
"horror",
"dzislaw beksinskidzi",
"kappa_neuro",
"paintings"
],
"modelVersions": [
{
"id": 1,
"modelId": 7019,
"name": "Zdzislaw Beksinski LORA",
"createdAt": "2023-02-06T13:52:34.605Z",
"updatedAt": "2023-02-06T13:52:34.605Z",
"trainedWords": [],
"baseModel": "SD 1.5",
"earlyAccessTimeFrame": 0,
"description": "<p></p>",
"files": [
{
"name": "v1-5-pruned-emaonly.ckpt",
"id": 1,
"sizeKB": 4471261.130859375,
"type": "Model",
"format": "CKPT",
"pickleScanResult": "Success",
"pickleScanMessage": "No Pickle imports",
"virusScanResult": "Success",
"scannedAt": "2023-02-06T13:55:58.281Z",
"hashes": {
"AutoV2": "833E816807",
"SHA256": "833E816807E8D3658EBC65436908F690603A8E0E8D26143A90050F32958C9E4E",
"CRC32": "87F68C12",
"BLAKE3": "7A28D3D22520D61B58338791522A14B7B33A6A9CE552FF7D68D7E2688CAB3266"
},
"downloadUrl": "https://huggingface.co/runwayml/stable-diffusion-v1-5/resolve/main/v1-5-pruned-emaonly.ckpt",
"primary": false
},
{
"name": "v1-5-pruned-emaonly.safetensors",
"id": 2,
"sizeKB": 4471261.130859375,
"type": "Model",
"format": "Safetensors",
"pickleScanResult": "Success",
"pickleScanMessage": "No Pickle imports",
"virusScanResult": "Success",
"scannedAt": "2023-02-06T13:55:58.281Z",
"hashes": {
"AutoV2": "833E816807",
"SHA256": "833E816807E8D3658EBC65436908F690603A8E0E8D26143A90050F32958C9E4E",
"CRC32": "87F68C12",
"BLAKE3": "7A28D3D22520D61B58338791522A14B7B33A6A9CE552FF7D68D7E2688CAB3266"
},
"downloadUrl": "https://huggingface.co/runwayml/stable-diffusion-v1-5/resolve/main/v1-5-pruned-emaonly.safetensors",
"primary": true
},
{
"name": "v1-5-pruned.ckpt",
"id": 3,
"sizeKB": 7971261.130859375,
"type": "Model",
"format": "Safetensors",
"pickleScanResult": "Success",
"pickleScanMessage": "No Pickle imports",
"virusScanResult": "Success",
"scannedAt": "2023-02-06T13:55:58.281Z",
"hashes": {
"AutoV2": "833E816807",
"SHA256": "833E816807E8D3658EBC65436908F690603A8E0E8D26143A90050F32958C9E4E",
"CRC32": "87F68C12",
"BLAKE3": "7A28D3D22520D61B58338791522A14B7B33A6A9CE552FF7D68D7E2688CAB3266"
},
"downloadUrl": "https://huggingface.co/runwayml/stable-diffusion-v1-5/resolve/main/v1-5-pruned.ckpt",
"primary": false
},
{
"name": "v1-5-pruned.safetensors",
"id": 4,
"sizeKB": 7971261.130859375,
"type": "Model",
"format": "Safetensors",
"pickleScanResult": "Success",
"pickleScanMessage": "No Pickle imports",
"virusScanResult": "Success",
"scannedAt": "2023-02-06T13:55:58.281Z",
"hashes": {
"AutoV2": "833E816807",
"SHA256": "833E816807E8D3658EBC65436908F690603A8E0E8D26143A90050F32958C9E4E",
"CRC32": "87F68C12",
"BLAKE3": "7A28D3D22520D61B58338791522A14B7B33A6A9CE552FF7D68D7E2688CAB3266"
},
"downloadUrl": "https://huggingface.co/runwayml/stable-diffusion-v1-5/resolve/main/v1-5-pruned.safetensors",
"primary": false
},
{
"name": "sd-v1-5-inpainting.ckpt",
"id": 5,
"sizeKB": 4471261.130859375,
"type": "Model",
"format": "Checkpoint",
"pickleScanResult": "Success",
"pickleScanMessage": "No Pickle imports",
"virusScanResult": "Success",
"scannedAt": "2023-02-06T13:55:58.281Z",
"hashes": {
"AutoV2": "833E816807",
"SHA256": "833E816807E8D3658EBC65436908F690603A8E0E8D26143A90050F32958C9E4E",
"CRC32": "87F68C12",
"BLAKE3": "7A28D3D22520D61B58338791522A14B7B33A6A9CE552FF7D68D7E2688CAB3266"
},
"downloadUrl": "https://huggingface.co/runwayml/stable-diffusion-inpainting/resolve/main/sd-v1-5-inpainting.ckpt",
"primary": false
}
],
"images": [
{
"url": "https://msdn.miaoshouai.com/msai/kt/ez/9900922.png"
}
]
}
]
},
{
"id": 2,
"name": "stable-diffusion-2-1",
"description": "<p>Stable Diffusion v2-1 Model Card\nThis model card focuses on the model associated with the Stable Diffusion v2-1 model, codebase available here.\n\nThis stable-diffusion-2-1 model is fine-tuned from stable-diffusion-2 (768-v-ema.ckpt) with an additional 55k steps on the same dataset (with punsafe=0.1), and then fine-tuned for another 155k extra steps with punsafe=0.98.\n\nUse it with the stablediffusion repository: download the v2-1_768-ema-pruned.ckpt here.\nUse it with \uD83E\uDDE8 diffusers\nModel Details\nDeveloped by: Robin Rombach, Patrick Esser\n\nModel type: Diffusion-based text-to-image generation model\n\nLanguage(s): English\n\nLicense: CreativeML Open RAIL++-M License\n\nModel Description: This is a model that can be used to generate and modify images based on text prompts. It is a Latent Diffusion Model that uses a fixed, pretrained text encoder (OpenCLIP-ViT/H).\n\nResources for more information: GitHub Repository.</p></li></ol>",
"type": "Checkpoint",
"poi": false,
"nsfw": false,
"allowNoCredit": true,
"allowCommercialUse": "Rent",
"allowDerivatives": true,
"allowDifferentLicense": true,
"stats": {
"downloadCount": 865,
"favoriteCount": 190,
"commentCount": 7,
"ratingCount": 2,
"rating": 5
},
"creator": {
"username": "stabilityai",
"image": "https://huggingface.co/stabilityai/stable-diffusion-2-1"
},
"tags": [],
"modelVersions": [
{
"id": 2,
"modelId": 2,
"name": "stable-diffusion-2-1",
"createdAt": "2023-02-06T13:52:34.605Z",
"updatedAt": "2023-02-06T13:52:34.605Z",
"trainedWords": [],
"baseModel": "SD 1.5",
"earlyAccessTimeFrame": 0,
"description": "<p></p>",
"files": [
{
"name": "v2-1_768-ema-pruned.ckpt",
"id": 6,
"sizeKB": 5421261.130859375,
"type": "Model",
"format": "CKPT",
"pickleScanResult": "Success",
"pickleScanMessage": "No Pickle imports",
"virusScanResult": "Success",
"scannedAt": "2023-02-06T13:55:58.281Z",
"hashes": {
"AutoV2": "833E816807",
"SHA256": "833E816807E8D3658EBC65436908F690603A8E0E8D26143A90050F32958C9E4E",
"CRC32": "87F68C12",
"BLAKE3": "7A28D3D22520D61B58338791522A14B7B33A6A9CE552FF7D68D7E2688CAB3266"
},
"downloadUrl": "https://huggingface.co/runwayml/stable-diffusion-v1-5/resolve/main/v1-5-pruned-emaonly.ckpt",
"primary": false
},
{
"name": "v2-1_768-ema-pruned.safetensors",
"id": 7,
"sizeKB": 5421261.130859375,
"type": "Model",
"format": "Safetensors",
"pickleScanResult": "Success",
"pickleScanMessage": "No Pickle imports",
"virusScanResult": "Success",
"scannedAt": "2023-02-06T13:55:58.281Z",
"hashes": {
"AutoV2": "833E816807",
"SHA256": "833E816807E8D3658EBC65436908F690603A8E0E8D26143A90050F32958C9E4E",
"CRC32": "87F68C12",
"BLAKE3": "7A28D3D22520D61B58338791522A14B7B33A6A9CE552FF7D68D7E2688CAB3266"
},
"downloadUrl": "https://huggingface.co/runwayml/stable-diffusion-v1-5/resolve/main/v1-5-pruned-emaonly.safetensors",
"primary": true
},
{
"name": "v2-1_768-nonema-pruned.ckpt",
"id": 8,
"sizeKB": 5421261.130859375,
"type": "Model",
"format": "CKPT",
"pickleScanResult": "Success",
"pickleScanMessage": "No Pickle imports",
"virusScanResult": "Success",
"scannedAt": "2023-02-06T13:55:58.281Z",
"hashes": {
"AutoV2": "833E816807",
"SHA256": "833E816807E8D3658EBC65436908F690603A8E0E8D26143A90050F32958C9E4E",
"CRC32": "87F68C12",
"BLAKE3": "7A28D3D22520D61B58338791522A14B7B33A6A9CE552FF7D68D7E2688CAB3266"
},
"downloadUrl": "https://huggingface.co/runwayml/stable-diffusion-v1-5/resolve/main/v1-5-pruned.ckpt",
"primary": false
},
{
"name": "v2-1_768-nonema-pruned.safetensors",
"id": 9,
"sizeKB": 5421261.130859375,
"type": "Model",
"format": "Safetensors",
"pickleScanResult": "Success",
"pickleScanMessage": "No Pickle imports",
"virusScanResult": "Success",
"scannedAt": "2023-02-06T13:55:58.281Z",
"hashes": {
"AutoV2": "833E816807",
"SHA256": "833E816807E8D3658EBC65436908F690603A8E0E8D26143A90050F32958C9E4E",
"CRC32": "87F68C12",
"BLAKE3": "7A28D3D22520D61B58338791522A14B7B33A6A9CE552FF7D68D7E2688CAB3266"
},
"downloadUrl": "https://huggingface.co/runwayml/stable-diffusion-v1-5/resolve/main/v1-5-pruned.safetensors",
"primary": false
},
{
"name": "512-inpainting-ema.ckpt",
"id": 10,
"sizeKB": 5421261.130859375,
"type": "Model",
"format": "Safetensors",
"pickleScanResult": "Success",
"pickleScanMessage": "No Pickle imports",
"virusScanResult": "Success",
"scannedAt": "2023-02-06T13:55:58.281Z",
"hashes": {
"AutoV2": "833E816807",
"SHA256": "833E816807E8D3658EBC65436908F690603A8E0E8D26143A90050F32958C9E4E",
"CRC32": "87F68C12",
"BLAKE3": "7A28D3D22520D61B58338791522A14B7B33A6A9CE552FF7D68D7E2688CAB3266"
},
"downloadUrl": "https://huggingface.co/stabilityai/stable-diffusion-2-inpainting/resolve/main/512-inpainting-ema.ckpt",
"primary": false
},
{
"name": "512-inpainting-ema.safetensors",
"id": 11,
"sizeKB": 5421261.130859375,
"type": "Model",
"format": "Safetensors",
"pickleScanResult": "Success",
"pickleScanMessage": "No Pickle imports",
"virusScanResult": "Success",
"scannedAt": "2023-02-06T13:55:58.281Z",
"hashes": {
"AutoV2": "833E816807",
"SHA256": "833E816807E8D3658EBC65436908F690603A8E0E8D26143A90050F32958C9E4E",
"CRC32": "87F68C12",
"BLAKE3": "7A28D3D22520D61B58338791522A14B7B33A6A9CE552FF7D68D7E2688CAB3266"
},
"downloadUrl": "https://huggingface.co/stabilityai/stable-diffusion-2-inpainting/resolve/main/512-inpainting-ema.safetensors",
"primary": false
},
{
"name": "v2-1_768-ema-pruned.yaml",
"id": 11,
"sizeKB": 2261.130859375,
"type": "Model",
"format": "Safetensors",
"pickleScanResult": "Success",
"pickleScanMessage": "No Pickle imports",
"virusScanResult": "Success",
"scannedAt": "2023-02-06T13:55:58.281Z",
"hashes": {
"AutoV2": "833E816807",
"SHA256": "833E816807E8D3658EBC65436908F690603A8E0E8D26143A90050F32958C9E4E",
"CRC32": "87F68C12",
"BLAKE3": "7A28D3D22520D61B58338791522A14B7B33A6A9CE552FF7D68D7E2688CAB3266"
},
"downloadUrl": "https://raw.githubusercontent.com/Stability-AI/stablediffusion/main/configs/stable-diffusion/v2-inference-v.yaml",
"primary": false
}
],
"images": [
{
"url": "https://msdn.miaoshouai.com/msai/kt/ez/9900922.png"
}
]
}
]
}
]

View File

@ -1,16 +1,16 @@
{
"boot_settings": {
"drp_args_vram": "Med: 6-8G VRAM",
"drp_args_theme": "Light Mode",
"drp_args_theme": "Auto",
"txt_args_listen_port": "7860",
"Enable xFormers": "--xformers",
"No Half": "False",
"No Half": "--no-half",
"No Half VAE": "False",
"Enable API": "--api",
"Auto Launch": "--autolaunch",
"Allow Local Network Access": "False",
"drp_choose_version": "Python Integrated",
"txt_args_more": "--ckpt-dir=C:\\\\Users\\\\Bob\\\\Projects\\\\stable-diffusion-webui\\\\models\\\\Stable-diffusion --lora-dir=C:\\\\Users\\\\Bob\\\\Projects\\\\stable-diffusion-webui\\\\models\\\\Lora",
"drp_choose_version": "Official Release",
"txt_args_more": "",
"disable_log_console_output": true
}
}
}

View File

@ -0,0 +1,19 @@
#!/bin/bash
####################################################################
# macOS defaults #
# Please modify webui-user.sh to change these instead of this file #
####################################################################
if [[ -x "$(command -v python3.10)" ]]
then
python_cmd="python3.10"
fi
export install_dir="$HOME"
export COMMANDLINE_ARGS="--skip-torch-cuda-test --upcast-sampling --no-half-vae --use-cpu interrogate"
export TORCH_COMMAND="pip install torch==1.12.1 torchvision==0.13.1"
export K_DIFFUSION_REPO="https://github.com/brkirch/k-diffusion.git"
export K_DIFFUSION_COMMIT_HASH="51c9778f269cedb55a4d88c79c0246d35bdadb71"
export PYTORCH_ENABLE_MPS_FALLBACK=1
####################################################################

View File

@ -0,0 +1,10 @@
echo off
set GIT_PYTHON_GIT_EXECUTABLE=git\\bin\\git.exe
echo 访问喵手AI资源站
echo http://resource.miaoshouai.com 获取更多资源
set GIT_PYTHON_REFRESH=quiet
call update.bat
python\python.exe webui.py --api --deepdanbooru
pause

47
configs/webui-user.sh Normal file
View File

@ -0,0 +1,47 @@
#!/bin/bash
#########################################################
# Uncomment and change the variables below to your need:#
#########################################################
# Install directory without trailing slash
#install_dir="/home/$(whoami)"
# Name of the subdirectory
#clone_dir="stable-diffusion-webui"
# Commandline arguments for webui.py, for example: export COMMANDLINE_ARGS="--medvram --opt-split-attention"
# uncomment the line below based on https://github.com/AUTOMATIC1111/stable-diffusion-webui/wiki/Installation-on-Apple-Silicon
export COMMANDLINE_ARGS="--skip-torch-cuda-test --no-half --use-cpu all"
# python3 executable
#python_cmd="python3"
# git executable
#export GIT="git"
# python3 venv without trailing slash (defaults to ${install_dir}/${clone_dir}/venv)
#venv_dir="venv"
# script to launch to start the app
#export LAUNCH_SCRIPT="launch.py"
# install command for torch
#export TORCH_COMMAND="pip install torch==1.12.1+cu113 --extra-index-url https://download.pytorch.org/whl/cu113"
# Requirements file to use for stable-diffusion-webui
#export REQS_FILE="requirements_versions.txt"
# Fixed git repos
#export K_DIFFUSION_PACKAGE=""
#export GFPGAN_PACKAGE=""
# Fixed git commits
#export STABLE_DIFFUSION_COMMIT_HASH=""
#export TAMING_TRANSFORMERS_COMMIT_HASH=""
#export CODEFORMER_COMMIT_HASH=""
#export BLIP_COMMIT_HASH=""
# Uncomment to enable accelerated launch
#export ACCELERATE="True"
###########################################

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 MiB

BIN
covers/ChromaV5 (2.0).jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 49 KiB

BIN
covers/Colorwater_v4.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 36 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.8 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 77 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 341 KiB

BIN
covers/analogDream3D_10.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 36 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 37 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

BIN
covers/babes_11.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 53 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 28 KiB

BIN
covers/cheeseDaddys_30.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 79 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 84 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 32 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 28 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 30 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 153 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 48 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 48 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 43 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 25 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 600 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 37 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.0 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 28 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 260 KiB

BIN
covers/revAnimated_v11.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.2 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 42 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.7 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 36 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 53 KiB

View File

@ -6,9 +6,12 @@ import gradio as gr
import launch
import modules
from modules import shared
from scripts.logging.msai_logger import Logger
from scripts.runtime.msai_prelude import MiaoshouPrelude
from scripts.runtime.msai_runtime import MiaoshouRuntime
import modules.generation_parameters_copypaste as parameters_copypaste
from modules.ui_components import ToolButton
class MiaoShouAssistant(object):
@ -20,6 +23,7 @@ class MiaoShouAssistant(object):
self.prelude = MiaoshouPrelude()
self.runtime = MiaoshouRuntime()
self.refresh_symbol = '\U0001f504'
self.folder_symbol = '\U0001f4c2' # 📂
def on_event_ui_tabs_opened(self) -> t.List[t.Optional[t.Tuple[t.Any, str, str]]]:
with gr.Blocks(analytics_enabled=False, css=MiaoShouAssistant.default_css) as miaoshou_assistant:
@ -36,19 +40,20 @@ class MiaoShouAssistant(object):
gpu, theme, port, chk_args, txt_args, webui_ver = self.runtime.get_default_args()
gr.Markdown(value="Argument settings")
with gr.Row():
drp_gpu = gr.Dropdown(label="", elem_id="drp_args_vram",
self.drp_gpu = gr.Dropdown(label="VRAM Size", elem_id="drp_args_vram",
choices=list(self.prelude.gpu_setting.keys()),
value=gpu, interactive=True)
drp_theme = gr.Dropdown(label="UI Theme", choices=list(self.prelude.theme_setting.keys()),
self.drp_theme = gr.Dropdown(label="UI Theme", choices=list(self.prelude.theme_setting.keys()),
value=theme,
elem_id="drp_args_theme", interactive=True)
txt_listen_port = gr.Text(label='Listen Port', value=port, elem_id="txt_args_listen_port",
self.txt_listen_port = gr.Text(label='Listen Port', value=port, elem_id="txt_args_listen_port",
interactive=True)
with gr.Row():
chk_group_args = gr.CheckboxGroup(choices=list(self.prelude.checkboxes.keys()), value=chk_args,
self.chk_group_args = gr.CheckboxGroup(choices=list(self.prelude.checkboxes.keys()), value=chk_args,
show_label=False)
additional_args = gr.Text(label='COMMANDLINE_ARGS (Divide by space)', value=txt_args,
self.additional_args = gr.Text(label='COMMANDLINE_ARGS (Divide by space)', value=txt_args,
elem_id="txt_args_more", interactive=True)
with gr.Row():
@ -61,13 +66,15 @@ class MiaoShouAssistant(object):
gr.HTML(
'<div><p>*Save your settings to webui-user.bat file. Use Python Integrated only if your'
' WebUI is extracted from a zip file and does not need python installation</p></div>')
save_settings = gr.Button(value="Save settings", elem_id="btn_arg_save_setting")
save_settings = gr.Button(value="Save Boot Settings", elem_id="btn_arg_save_setting")
with gr.Row():
# with gr.Column():
# settings_submit = gr.Button(value="Apply settings", variant='primary', elem_id="ms_settings_submit")
# with gr.Column():
restart_gradio = gr.Button(value='Apply & Restart WebUI', variant='primary',
btn_apply = gr.Button(value='Apply Settings', variant='primary',
elem_id="ms_settings_restart_gradio")
restart_gradio = gr.Button(value='Restart WebUI', variant='primary',
elem_id="ms_settings_restart_gradio")
'''def mod_args(drp_gpu, drp_theme, txt_listen_port, chk_group_args, additional_args):
@ -83,11 +90,21 @@ class MiaoShouAssistant(object):
settings_submit.click(mod_args, inputs=[drp_gpu, drp_theme, txt_listen_port, chk_group_args, additional_args], outputs=[])'''
save_settings.click(self.runtime.change_boot_setting,
inputs=[drp_choose_version, drp_gpu, drp_theme, txt_listen_port, chk_group_args,
additional_args], outputs=[txt_save_status])
inputs=[drp_choose_version, self.drp_gpu, self.drp_theme, self.txt_listen_port, self.chk_group_args,
self.additional_args], outputs=[txt_save_status])
btn_apply.click(
self.save_cmdline_args,
inputs=[self.drp_gpu, self.drp_theme, self.txt_listen_port, self.chk_group_args,
self.additional_args],
outputs=[txt_save_status],
)
def request_restart():
shared.state.interrupt()
shared.state.need_restart = True
restart_gradio.click(
fn=self.request_restart,
request_restart,
_js='restart_reload',
inputs=[],
outputs=[],
@ -102,51 +119,99 @@ class MiaoShouAssistant(object):
with gr.Row():
sys_info_refbtn = gr.Button(value="Refresh")
drp_gpu.change(self.runtime.update_xformers, inputs=[drp_gpu, chk_group_args], outputs=[chk_group_args])
def update_chkbox(chkbox):
print(chkbox)
self.drp_gpu.change(self.runtime.update_xformers, inputs=[self.drp_gpu, self.chk_group_args], outputs=[self.chk_group_args])
self.chk_group_args.change(update_chkbox, inputs=[self.chk_group_args], outputs=[])
sys_info_refbtn.click(self.prelude.get_sys_info, None, txt_sys_info)
def create_subtab_model_management(self) -> None:
with gr.TabItem('Model Management', elem_id="model_management_tab") as tab_batch:
with gr.Row():
with gr.Column():
my_models = self.runtime.get_local_models()
ds_my_models = gr.Dataset(
components=[gr.HTML(visible=False, label='Cover', elem_id='my_model_cover'),
gr.Textbox(visible=False, label='Name/Version'),
gr.Textbox(visible=False, label='File Name'),
gr.Textbox(visible=False, label='Hash'), gr.Textbox(visible=False, label='Creator'),
gr.Textbox(visible=False, label='Type'), gr.Textbox(visible=False, label='NSFW'),
gr.Textbox(visible=False, label='Trigger Words', elem_id='my_model_trigger_words')],
elem_id='my_model_lib',
label="My Models",
headers=None,
samples=my_models,
samples_per_page=50)
with gr.Column():
html_model_prompt = gr.HTML(visible=True,
value='<div style="height:400px;"><p>No Model Selected</p></div>')
with gr.Row():
gr.Markdown(value="If you want your model directory to be other than [your_webui_dir]\\models, select a new directory down below. "
"Your default models directory needs to be removed first before you apply. Make sure do your backups!")
md_result = gr.Markdown(visible=False, value="")
with gr.Row():
model_folder_path = gr.Textbox("", label="Model path", interactive=False)
open_folder_button = ToolButton(value=self.folder_symbol,
elem_id="hidden_element" if shared.cmd_opts.hide_ui_dir_config else "open_folder_metadata_editor")
refresh_models_button = ToolButton(value=self.refresh_symbol, elem_id="hidden_element")
with gr.Row():
btn_connect_modeldir = gr.Button(value="Apply Virtual Model Folder")
with gr.Row():
my_models = self.runtime.get_local_models()
self.runtime.ds_my_models = gr.Dataset(
components=[gr.Image(visible=False, label='Cover', elem_id='my_model_cover'),
gr.Textbox(visible=False, label='ModelId'),
gr.Textbox(visible=False, label='Name/Version'),
gr.Textbox(visible=False, label='File Name'),
gr.Textbox(visible=False, label='Hash'), gr.Textbox(visible=False, label='Creator'),
gr.Textbox(visible=False, label='Type'), gr.Textbox(visible=False, label='NSFW'),
gr.Textbox(visible=False, label='Trigger Words', elem_id='my_model_trigger_words')],
elem_id='my_model_lib',
label="My Models",
headers=None,
samples=my_models,
samples_per_page=50)
with gr.Column():
self.runtime.ds_my_model_covers = gr.Dataset(components=[gr.HTML(visible=False)],
elem_id='my_model_covers',
label="Model Cover",
headers=None,
samples=[],
samples_per_page=10)
with gr.Row(variant='panel'):
btn_set_cover = gr.Button(visible=False, value='Set as Cover')
with gr.Row(variant='panel'):
c_image = gr.Image(elem_id="pnginfo_image", label="Source", source="upload", interactive=True,
type="pil", visible=False)
with gr.Row(variant='panel'):
generation_info = gr.Textbox(label='prompt', interactive=False, visible=True, elem_id="imginfo_generation_info")
with gr.Row(variant='panel'):
with gr.Row():
buttons = parameters_copypaste.create_buttons(["txt2img", "img2img", "inpaint", "extras"])
for tabname, button in buttons.items():
parameters_copypaste.register_paste_params_button(parameters_copypaste.ParamBinding(
paste_button=button, tabname=tabname, source_text_component=generation_info,
source_image_component=c_image,
))
btn_set_cover.click(self.runtime.set_cover, inputs=[self.runtime.ds_my_models, c_image], outputs=[self.runtime.ds_my_models])
open_folder_button.click(self.runtime.open_folder, inputs=[model_folder_path], outputs=[model_folder_path])
btn_connect_modeldir.click(self.runtime.change_model_folder, inputs=[model_folder_path], outputs=[md_result])
refresh_models_button.click(self.runtime.refresh_local_models, inputs=[], outputs=[self.runtime.ds_my_models])
self.runtime.ds_my_models.click(self.runtime.get_my_model_covers,
inputs=[self.runtime.ds_my_models],
outputs=[self.runtime.ds_my_model_covers])
self.runtime.ds_my_model_covers.click(self.runtime.update_cover_info,
inputs=[self.runtime.ds_my_models, self.runtime.ds_my_model_covers],
outputs=[btn_set_cover, generation_info, c_image])
with gr.Row():
add = gr.Button(value="Add", variant="primary")
# delete = gr.Button(value="Delete")
with gr.Row():
reset_btn = gr.Button(value="Reset")
json_input = gr.Button(value="Load from JSON")
png_input = gr.Button(value="Detect from image")
png_input_area = gr.Image(label="Detect from image", elem_id="openpose_editor_input")
bg_input = gr.Button(value="Add Background image")
def create_subtab_model_download(self) -> None:
with gr.TabItem('Model Download', elem_id="model_download_tab") as tab_downloads:
with gr.Row():
with gr.Column(elem_id="col_model_list"):
with gr.Row().style(equal_height=True):
model_source_dropdown = gr.Dropdown(choices=["civitai", "liandange"],
model_source_dropdown = gr.Dropdown(choices=["civitai.com", "liandange.com", "official_models", "controlnet"],
value=self.runtime.model_source,
label="Select Model Source",
type="value",
show_label=True,
elem_id="model_source").style(full_width=True)
#btn_fetch = gr.Button("Fetch")
with gr.Row().style(equal_height=True):
search_text = gr.Textbox(
label="Model name",
@ -187,13 +252,13 @@ class MiaoShouAssistant(object):
value='Select Model', elem_id='ms_dwn_button',
interactive=True)
is_civitai_model_source_active = self.runtime.model_source == "civitai"
is_civitai_model_source_active = self.runtime.model_source == "civitai.com"
with gr.Row(variant="panel"):
dwn_button = gr.Button(value='Download',
visible=is_civitai_model_source_active, elem_id='ms_dwn_button')
open_url_in_browser_newtab_button = gr.HTML(
value='<p style="text-align: center;">'
'<a style="text-align: center;" href="https://models.paomiantv.cn/models" '
'<a style="text-align: center;" href="http://www.liandange.com/models" '
'target="_blank">Download</a></p>',
visible=not is_civitai_model_source_active)
with gr.Row():
@ -204,6 +269,8 @@ class MiaoShouAssistant(object):
model_type.change(self.runtime.search_model, inputs=[search_text, model_type], outputs=self.runtime.ds_models)
#btn_fetch.click(self.runtime.refresh_all_models, inputs=[], outputs=self.runtime.ds_models)
btn_search.click(self.runtime.search_model, inputs=[search_text, model_type], outputs=self.runtime.ds_models)
self.runtime.ds_models.click(self.runtime.get_model_info,
@ -220,34 +287,38 @@ class MiaoShouAssistant(object):
model_source_dropdown.change(self.switch_model_source,
inputs=[model_source_dropdown],
outputs=[self.runtime.ds_models, dwn_button, open_url_in_browser_newtab_button])
outputs=[self.runtime.ds_models, self.runtime.ds_my_models, dwn_button, open_url_in_browser_newtab_button])
def request_restart(self, drp_gpu, drp_theme, txt_listen_port, chk_group_args, additional_args):
print('request_restart: cmd_arg = ', self.runtime.cmdline_args)
print('request_restart: sys.argv = ', sys.argv)
modules.shared.state.interrupt()
modules.shared.state.need_restart = True
def save_cmdline_args(self, drp_gpu, drp_theme, txt_listen_port, chk_group_args, additional_args):
#print(drp_gpu, drp_theme, txt_listen_port, chk_group_args, additional_args)
self.runtime.get_final_args(drp_gpu, drp_theme, txt_listen_port, chk_group_args, additional_args)
#print('request_restart: cmd_arg = ', self.runtime.cmdline_args)
#print('request_restart: sys.argv = ', sys.argv)
# reset args
sys.argv = [sys.argv[0]]
os.environ['COMMANDLINE_ARGS'] = ""
print('remove', sys.argv)
#print('remove', sys.argv)
for arg in self.runtime.cmdline_args:
for arg in list(dict.fromkeys(self.runtime.cmdline_args)):
sys.argv.append(arg)
print('after', sys.argv)
print('saved args', sys.argv)
launch.prepare_environment()
launch.start()
#launch.start()
return gr.Markdown.update(value="Settings Saved", visible=True)
def switch_model_source(self, new_model_source: str):
self.runtime.model_source = new_model_source
show_download_button = self.runtime.model_source == "civitai"
show_download_button = self.runtime.model_source != "liandange.com"
images = self.runtime.get_images_html()
self.runtime.ds_models.samples = images
my_models = self.runtime.get_local_models()
self.runtime.ds_my_models.samples = my_models
return (
gr.Dataset.update(samples=images),
gr.Dataset.update(samples=my_models),
gr.Button.update(visible=show_download_button),
gr.HTML.update(visible=not show_download_button)
)

View File

@ -10,6 +10,7 @@ from scripts.download.msai_file_downloader import MiaoshouFileDownloader
from scripts.logging.msai_logger import Logger
from scripts.msai_utils.msai_singleton import MiaoshouSingleton
import scripts.msai_utils.msai_toolkit as toolkit
from urllib.request import Request, urlopen
class DownloadingEntry(object):
@ -185,6 +186,14 @@ class MiaoshouDownloaderManager(metaclass=MiaoshouSingleton):
def download(self, source_url: str, target_file: str, estimated_total_size: float,
expected_checksum: str = None) -> None:
resp = requests.get(source_url, stream=True)
length = resp.headers.get("Content-length")
if length is not None:
estimated_total_size = float(length)
#estimated_total_size = meta.getheaders("Content-Length")[0]
print(estimated_total_size)
target_dir = os.path.dirname(target_file)
target_filename = os.path.basename(target_file)
download_entry = DownloadingEntry(

View File

@ -10,6 +10,7 @@ import launch
from scripts.logging.msai_logger import Logger
from scripts.msai_utils import msai_toolkit as toolkit
from scripts.msai_utils.msai_singleton import MiaoshouSingleton
import modules
class MiaoshouPrelude(metaclass=MiaoshouSingleton):
@ -33,15 +34,20 @@ class MiaoshouPrelude(metaclass=MiaoshouSingleton):
def _init_constants(self) -> None:
self._api_url = {
"civitai": "https://civitai.com/api/v1/models",
"liandange": "https://model-api.paomiantv.cn/model/api/models",
"civitai.com": "https://civitai.com/api/v1/models",
"liandange.com": "http://model-api.liandange.com/model/api/models",
}
self._ext_folder = os.path.abspath(os.path.join(os.path.dirname(os.path.abspath(__file__)), "..", ".."))
self._setting_file = os.path.join(self.ext_folder, "configs", "settings.json")
self._model_hash_file = os.path.join(self.ext_folder, "configs", "model_hash.json")
self._cache_folder = os.path.join(self.ext_folder, "cache")
self._cover_folder = os.path.join(self.ext_folder, "covers")
self._no_preview_img = os.path.join(modules.paths.script_path, "html", "card-no-preview.png")
self._model_json = {
'civitai': os.path.join(self.ext_folder, 'configs', 'civitai_models.json'),
'liandange': os.path.join(self.ext_folder, 'configs', 'liandange_models.json'),
'civitai.com': os.path.join(self.ext_folder, 'configs', 'civitai_models.json'),
'liandange.com': os.path.join(self.ext_folder, 'configs', 'liandange_models.json'),
'official_models': os.path.join(self.ext_folder, 'configs', 'official_models.json'),
'controlnet': os.path.join(self.ext_folder, 'configs', 'controlnet.json'),
}
self._checkboxes = {
'Enable xFormers': '--xformers',
@ -65,6 +71,7 @@ class MiaoshouPrelude(metaclass=MiaoshouSingleton):
'Light Mode': '--theme=light',
'Dark Mode': '--theme=dark',
}
self._ENV_EXCLUSION = ['COLAB_GPU', 'RUNPOD_POD_ID']
@property
def ext_folder(self) -> str:
@ -93,10 +100,26 @@ class MiaoshouPrelude(metaclass=MiaoshouSingleton):
def setting_file(self) -> str:
return self._setting_file
@property
def ENV_EXCLUSION(self) -> list[str]:
return self._ENV_EXCLUSION
@property
def model_hash_file(self) -> str:
return self._model_hash_file
@property
def cache_folder(self) -> str:
return self._cache_folder
@property
def cover_folder(self) -> str:
return self._cover_folder
@property
def no_preview_img(self) -> str:
return self._no_preview_img
@property
def checkboxes(self) -> t.Dict[str, str]:
return self._checkboxes

View File

@ -10,8 +10,12 @@ import typing as t
import gradio as gr
import requests
from bs4 import BeautifulSoup
import subprocess
from subprocess import check_output
import modules
from tkinter import filedialog, Tk
from modules import shared
from modules.sd_models import CheckpointInfo
from scripts.download.msai_downloader_manager import MiaoshouDownloaderManager
from scripts.logging.msai_logger import Logger
@ -28,8 +32,10 @@ class MiaoshouRuntime(object):
self._model_set: t.List[t.Dict] = None
self._model_set_last_access_time: datetime.datetime = None
self._ds_models: gr.Dataset = None
self._ds_my_models: gr.Dataset = None
self._ds_my_model_covers: gr.Dataset = None
self._allow_nsfw: bool = False
self._model_source: str = "civitai" # civitai is the default model source
self._model_source: str = "civitai.com" # civitai is the default model source
# TODO: may be owned by downloader class
self.model_files = []
@ -39,7 +45,7 @@ class MiaoshouRuntime(object):
def get_default_args(self, commandline_args: t.List[str] = None):
if commandline_args is None:
commandline_args: t.List[str] = toolkit.get_args(sys.argv[1:])
self.cmdline_args = commandline_args
self.cmdline_args = list(dict.fromkeys(commandline_args))
self.logger.info(f"default commandline args: {commandline_args}")
checkbox_values = []
@ -58,7 +64,7 @@ class MiaoshouRuntime(object):
for chk in self.prelude.checkboxes:
for arg in commandline_args:
if self.prelude.checkboxes[chk] == arg:
if self.prelude.checkboxes[chk] == arg and chk not in checkbox_values:
checkbox_values.append(chk)
gpu_arg_list = [f'--{i.strip()}' for i in ' '.join(list(self.prelude.gpu_setting.values())).split('--')]
@ -76,9 +82,14 @@ class MiaoshouRuntime(object):
def add_arg(self, args: str = "") -> None:
for arg in args.split('--'):
self.logger.info(f'add arg: {arg.strip()}')
if f"--{arg.strip()}" not in self.cmdline_args and arg.strip() != '':
self.logger.info(f'add arg: {arg.strip()}')
self.cmdline_args.append(f'--{arg.strip()}')
print('added', self.cmdline_args)
#remove duplicates
self.cmdline_args = list(dict.fromkeys(self.cmdline_args))
print('added dup',self.cmdline_args)
def remove_arg(self, args: str = "") -> None:
arg_keywords = ['port', 'theme']
@ -92,8 +103,15 @@ class MiaoshouRuntime(object):
elif f'--{arg.strip()}' in self.cmdline_args and arg.strip() != '':
print(f"remove args:{arg.strip()}")
self.cmdline_args.remove(f'--{arg.strip()}')
print('removed', self.cmdline_args)
# remove duplicates
self.cmdline_args = list(dict.fromkeys(self.cmdline_args))
print('removed dup',self.cmdline_args)
def get_final_args(self, gpu, theme, port, checkgroup, more_args) -> None:
# remove duplicates
self.cmdline_args = list(dict.fromkeys(self.cmdline_args))
# gpu settings
for s1 in self.prelude.gpu_setting:
if s1 in gpu:
@ -129,6 +147,7 @@ class MiaoshouRuntime(object):
self._old_additional = more_args.replace('\\\\', '\\')
def fetch_all_models(self) -> t.List[t.Dict]:
print('start fetching...')
endpoint_url = self.prelude.api_url(self.model_source)
if endpoint_url is None:
self.logger.error(f"{self.model_source} is not supported")
@ -141,16 +160,22 @@ class MiaoshouRuntime(object):
all_set = []
response = requests.get(endpoint_url + f'?page=1&limit={limit_threshold}')
num_of_pages = response.json()['metadata']['totalPages']
total_items = response.json()['metadata']['totalItems']
remain_items = total_items
self.logger.info(f"total pages = {num_of_pages}")
continuous_error_counts = 0
for p in range(1, num_of_pages + 1):
for p in range(1, num_of_pages+2):
try:
remain_items -= limit_threshold
print(remain_items)
if remain_items < limit_threshold:
limit_threshold = remain_items
response = requests.get(endpoint_url + f'?page={p}&limit={limit_threshold}')
payload = response.json()
if payload.get("success") is not None and not payload.get("success"):
self.logger.error(f"failed to fetch page[{p + 1}]")
self.logger.error(f"failed to fetch page[{p}]")
continuous_error_counts += 1
if continuous_error_counts > 10:
break
@ -161,11 +186,12 @@ class MiaoshouRuntime(object):
self.logger.debug(f"start to process page[{p}]")
for model in payload['items']:
print(f"{p}/{num_of_pages}: model")
all_set.append(model)
self.logger.debug(f"page[{p}] : {len(payload['items'])} items added")
except Exception as e:
self.logger.error(f"failed to fetch page[{p + 1}] due to {e}")
self.logger.error(f"failed to fetch page[{p}] due to {e}")
time.sleep(3)
if len(all_set) > 0:
@ -270,16 +296,17 @@ class MiaoshouRuntime(object):
if chkpt_info.sha256 is None and chkpt_info.shorthash is None:
chkpt_info = self.get_hash_from_json(chkpt_info)
model_info = self.search_model_by_hash(chkpt_info)
fname = re.sub(r'\[.*?\]', "", chkpt_info.title)
model_info = self.search_model_by_hash(chkpt_info.sha256, chkpt_info.shorthash, fname)
if model_info is not None:
models.append(model_info)
else:
self.logger.info(
f"{chkpt_info.title}, {chkpt_info.hash}, {chkpt_info.shorthash}, {chkpt_info.sha256}")
models.append([
[f'<img src="file={os.path.join(modules.paths.script_path, "html", "card-no-preview.png")}" '
'style="width:100px;height:150px;">'],
self.prelude.no_preview_img,
0,
[os.path.basename(fname)],
[fname],
[chkpt_info.shorthash],
@ -287,13 +314,58 @@ class MiaoshouRuntime(object):
return models
def search_model_by_hash(self, lookup_sha256: str, lookup_shash: str, fname: str) -> t.Optional[t.List[t.Any]]:
def refresh_local_models(self) -> t.Dict:
my_models = self.get_local_models()
self.ds_my_models.samples = my_models
return gr.Dataset.update(samples=my_models)
def set_cover(self, model, cover):
fname = model[3][0]
mname, ext = os.path.splitext(fname)
dst = os.path.join(shared.models_path, 'Stable-diffusion', f'{mname}.jpg')
print(dst)
cover.save(dst)
my_models = self.get_local_models()
self.ds_my_models.samples = my_models
return gr.Dataset.update(samples=my_models)
def search_model_by_hash(self, chkpt_info) -> t.Optional[t.List[t.Any]]:
lookup_sha256 = chkpt_info.sha256
lookup_shash = chkpt_info.shorthash
fname = re.sub(r'\[.*?\]', "", chkpt_info.title)
self.logger.info(f"lookup_sha256: {lookup_sha256}, lookup_shash: {lookup_shash}, fname: {fname}")
res = None
if lookup_sha256 is None and lookup_shash is None:
return None
mpath = (os.path.join(shared.models_path, chkpt_info.filename))
prefix, ext = os.path.splitext(mpath)
if os.path.exists(f'{prefix}.jpg'):
cover_img = os.path.join(shared.models_path, 'Stable-diffusion', f'{os.path.basename(prefix)}.jpg')
elif os.path.exists(f'{prefix}.png'):
cover_img = os.path.join(shared.models_path, 'Stable-diffusion', f'{os.path.basename(prefix)}.png')
elif os.path.exists(f'{prefix}.webp'):
cover_img = os.path.join(shared.models_path, 'Stable-diffusion', f'{os.path.basename(prefix)}.webp')
else:
cover_img = self.prelude.no_preview_img
dst = os.path.join(self.prelude.cover_folder, os.path.basename(cover_img))
if cover_img != self.prelude.no_preview_img and not os.path.exists(dst):
shutil.copyfile(cover_img, dst)
elif cover_img == self.prelude.no_preview_img:
dst = cover_img
for model in self.model_set:
match = False
@ -305,11 +377,11 @@ class MiaoshouRuntime(object):
match = (lookup_shash[:10].upper() in [h.upper() for h in file['hashes'].values()])
if match:
cover_link = ver['images'][0]['url'].replace('width=450', 'width=100')
#cover_link = ver['images'][0]['url'].replace('width=450', 'width=100')
mid = model['id']
res = [
[
f'<a href="https://civitai.com/models/{mid}" target="_blank"><img src="{cover_link}"></a>'],
dst,
mid,
[f"{model['name']}/{ver['name']}"],
[fname],
[lookup_shash],
@ -356,10 +428,16 @@ class MiaoshouRuntime(object):
cover_imgs = []
htmlDetail = "<div><p>Empty</p></div>"
mid = models[1]
# TODO: use map to enhance the performances
m = [e for e in self.model_set if e['id'] == mid][0]
m_list = [e for e in self.model_set if e['id'] == mid]
if m_list is not None or m_list != []:
m = m_list[0]
else:
return [[]], {}, '', {}
self.model_files.clear()
@ -443,6 +521,69 @@ class MiaoshouRuntime(object):
'target="_blank">Download</a></p>')
)
def get_my_model_covers(self, model):
img_list, l1, h1, h2 = self.get_model_info(model)
if self._ds_my_model_covers is None:
self.logger.error(f"_ds_my_model_covers is not initialized")
return {}
cover_list = []
for img_link in img_list:
cover_html = '<div style="display: flex; align-items: center;">\n'
cover_html += f'<div style = "margin-right: 10px;" class ="model-item" >\n'
cover_html += f'<img src="{img_link[0].replace("width=450","width=100")}" style="width:100px;">\n</div>\n'
cover_html += '</div>'
cover_list.append([cover_html])
self._ds_my_model_covers.samples = cover_list
return self._ds_my_model_covers.update(samples=cover_list)
def update_cover_info(self, model, covers):
soup = BeautifulSoup(covers[0])
cover_url = soup.findAll('img')[0]['src'].replace('width=100', 'width=450')
if self.model_set is None:
self.logger.error("model_set is null")
return []
mid = model[1]
m_list = [e for e in self.model_set if e['id'] == mid]
if m_list is not None or m_list != []:
m = m_list[0]
else:
return {}, {}
generation_info = ''
fname = None
for mv in m['modelVersions']:
for img in mv['images']:
if img['url'] == cover_url:
if img['meta'] is None or img['meta'] == '':
break
meta = img['meta']
generation_info += f"{meta['prompt']}\n"
generation_info += f"Negative prompt: {meta['negativePrompt']}\n"
generation_info += f"Steps: {meta['steps']}, Sampler: {meta['sampler']}, "
generation_info += f"CFG scale: {meta['cfgScale']}, Seed: {meta['seed']}, Size: {meta['Size']},"
generation_info += f"Model hash: {meta['Model hash']}"
if self.model_source == 'civitai.com':
fname = os.path.join(self.prelude.cache_folder, f"{cover_url.split('/')[-1]}.jpg")
elif self.model_source == 'liandange.com':
fname = os.path.join(self.prelude.cache_folder, cover_url.split('?')[0].split('/')[-1])
break
if fname is not None and not os.path.exists(fname):
r = requests.get(cover_url, stream=True)
r.raw.decode_content = True
with open(fname, 'wb') as f:
shutil.copyfileobj(r.raw, f)
return gr.Button.update(visible=True), gr.Text.update(value=generation_info), gr.Image.update(value=fname)
def get_downloading_status(self):
(_, _, desc) = self.downloader_manager.tasks_summary()
return gr.HTML.update(value=desc)
@ -473,6 +614,9 @@ class MiaoshouRuntime(object):
elif f['format'] == 'Hypernetwork':
cover_fname = os.path.join(model_path, 'hypernetworks', cover_fname)
model_fname = os.path.join(model_path, 'hypernetworks', model_fname)
elif f['format'] == 'Controlnet':
cover_fname = os.path.join(shared.script_path, 'extensions', 'sd-webui-controlnet', cover_fname)
model_fname = os.path.join(shared.script_path, 'extensions', 'sd-webui-controlnet', model_fname)
else:
cover_fname = os.path.join(model_path, 'Stable-diffusion', cover_fname)
model_fname = os.path.join(model_path, 'Stable-diffusion', model_fname)
@ -519,14 +663,58 @@ class MiaoshouRuntime(object):
time.sleep(2)
self.model_files.clear()
#self.model_files.clear()
return gr.HTML.update(value=f"<h4>{len(urls)} downloading tasks added into task list</h4>")
def get_dir_and_file(self, file_path):
dir_path, file_name = os.path.split(file_path)
return (dir_path, file_name)
def open_folder(self, folder_path=''):
if not any(var in os.environ for var in self.prelude.ENV_EXCLUSION) and sys.platform != 'darwin':
current_folder_path = folder_path
initial_dir, initial_file = self.get_dir_and_file(folder_path)
root = Tk()
root.wm_attributes('-topmost', 1)
root.withdraw()
folder_path = filedialog.askdirectory(initialdir=initial_dir)
root.destroy()
if folder_path == '':
folder_path = current_folder_path
return folder_path
def change_model_folder(self, folder_path=''):
res = 'Model folder is linked successfully'
if folder_path == '':
return gr.Markdown.update(value='No directory is set', visible=True)
try:
src = shared.models_path
# Destination file path
dst = folder_path
# Create a symbolic link
# pointing to src named dst
# using os.symlink() method
subprocess.check_call('mklink /J "%s" "%s"' % (src, dst), shell=True)
except Exception as e:
res = str(e)
return gr.Markdown.update(value=res, visible=True)
def change_boot_setting(self, version, drp_gpu, drp_theme, txt_listen_port, chk_group_args, additional_args):
self.get_final_args(drp_gpu, drp_theme, txt_listen_port, chk_group_args, additional_args)
self.logger.info(f'saved_cmd: {self.cmdline_args}')
target_webui_user_file = "webui-user.bat"
if version == 'Official Release':
target_webui_user_file = "webui-user.bat"
else:
target_webui_user_file = "webui-user-launch.bat"
script_export_keyword = "export"
if platform.system() == "Linux":
target_webui_user_file = "webui-user.sh"
@ -548,7 +736,7 @@ class MiaoshouRuntime(object):
for line in file:
if 'COMMANDLINE_ARGS' in line:
rep_txt = ' '.join(self.cmdline_args).replace('\\', '\\\\')
line = f'{script_export_keyword} COMMANDLINE_ARGS="{rep_txt}"\n'
line = f'{script_export_keyword} COMMANDLINE_ARGS={rep_txt}\n'
sys.stdout.write(line)
except Exception as e:
@ -558,12 +746,20 @@ class MiaoshouRuntime(object):
if not os.path.exists(filepath):
shutil.copyfile(os.path.join(self.prelude.ext_folder, 'configs', target_webui_user_file), filepath)
with fileinput.FileInput(filepath, inplace=True, backup='.bak') as file:
for line in file:
new_data = ''
with open(filepath, 'r+') as file:
data = file.readlines()
for line in data:
if 'webui.py' in line:
print('b')
rep_txt = ' '.join(self.cmdline_args).replace('\\', '\\\\')
line = f"python\python.exe webui.py {rep_txt}\n"
sys.stdout.write(line)
new_data += line
print(line)
file.seek(0)
file.write(new_data)
file.truncate()
except Exception as e:
msg = f'Error: {str(e)}'
@ -603,6 +799,22 @@ class MiaoshouRuntime(object):
def ds_models(self, newone: gr.Dataset):
self._ds_models = newone
@property
def ds_my_models(self) -> gr.Dataset:
return self._ds_my_models
@ds_my_models.setter
def ds_my_models(self, newone: gr.Dataset):
self._ds_my_models = newone
@property
def ds_my_model_covers(self) -> gr.Dataset:
return self._ds_my_model_covers
@ds_my_model_covers.setter
def ds_my_model_covers(self, newone: gr.Dataset):
self._ds_my_model_covers = newone
@property
def model_source(self) -> str:
return self._model_source