-added my model cover tag viewing\n -added virtual model folder link to the model directory\n -bug fixes
|
After Width: | Height: | Size: 23 KiB |
|
After Width: | Height: | Size: 33 KiB |
|
After Width: | Height: | Size: 45 KiB |
|
After Width: | Height: | Size: 45 KiB |
|
After Width: | Height: | Size: 61 KiB |
|
After Width: | Height: | Size: 37 KiB |
|
After Width: | Height: | Size: 33 KiB |
|
After Width: | Height: | Size: 39 KiB |
|
After Width: | Height: | Size: 26 KiB |
|
After Width: | Height: | Size: 47 KiB |
|
After Width: | Height: | Size: 44 KiB |
|
After Width: | Height: | Size: 55 KiB |
|
After Width: | Height: | Size: 57 KiB |
|
After Width: | Height: | Size: 40 KiB |
|
After Width: | Height: | Size: 9.0 KiB |
|
After Width: | Height: | Size: 60 KiB |
|
After Width: | Height: | Size: 8.1 KiB |
|
After Width: | Height: | Size: 7.1 KiB |
|
After Width: | Height: | Size: 9.0 KiB |
|
After Width: | Height: | Size: 60 KiB |
|
After Width: | Height: | Size: 48 KiB |
|
After Width: | Height: | Size: 56 KiB |
|
After Width: | Height: | Size: 93 KiB |
|
After Width: | Height: | Size: 30 KiB |
|
After Width: | Height: | Size: 76 KiB |
|
|
@ -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"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
|
|
@ -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"
|
||||
}
|
||||
|
|
@ -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"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
|
|
@ -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
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -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
|
||||
|
||||
####################################################################
|
||||
|
|
@ -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
|
||||
|
|
@ -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"
|
||||
|
||||
###########################################
|
||||
|
After Width: | Height: | Size: 2.0 MiB |
|
After Width: | Height: | Size: 49 KiB |
|
After Width: | Height: | Size: 36 KiB |
|
After Width: | Height: | Size: 3.8 MiB |
|
After Width: | Height: | Size: 1.5 MiB |
|
After Width: | Height: | Size: 77 KiB |
|
After Width: | Height: | Size: 341 KiB |
|
After Width: | Height: | Size: 36 KiB |
|
After Width: | Height: | Size: 37 KiB |
|
After Width: | Height: | Size: 20 KiB |
|
After Width: | Height: | Size: 53 KiB |
|
After Width: | Height: | Size: 28 KiB |
|
After Width: | Height: | Size: 79 KiB |
|
After Width: | Height: | Size: 84 KiB |
|
After Width: | Height: | Size: 32 KiB |
|
After Width: | Height: | Size: 28 KiB |
|
After Width: | Height: | Size: 30 KiB |
|
After Width: | Height: | Size: 24 KiB |
|
After Width: | Height: | Size: 153 KiB |
|
After Width: | Height: | Size: 48 KiB |
|
After Width: | Height: | Size: 48 KiB |
|
After Width: | Height: | Size: 43 KiB |
|
After Width: | Height: | Size: 25 KiB |
|
After Width: | Height: | Size: 22 KiB |
|
After Width: | Height: | Size: 600 KiB |
|
After Width: | Height: | Size: 37 KiB |
|
After Width: | Height: | Size: 1.0 MiB |
|
After Width: | Height: | Size: 28 KiB |
|
After Width: | Height: | Size: 260 KiB |
|
After Width: | Height: | Size: 2.2 MiB |
|
After Width: | Height: | Size: 42 KiB |
|
After Width: | Height: | Size: 4.7 MiB |
|
After Width: | Height: | Size: 36 KiB |
|
After Width: | Height: | Size: 53 KiB |
|
|
@ -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)
|
||||
)
|
||||
|
|
|
|||
|
|
@ -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(
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||