{
  "source_file": "0930",
  "source_platform": "研究机构",
  "author": "Hugging Face Blog",
  "title_listed": "The Illustrated Stable Diffusion",
  "keywords": "Stable Diffusion,扩散,文生图",
  "domain": "图像处理",
  "content_type": "图解教程",
  "is_paid_flag": "否",
  "url": "https://huggingface.co/blog/stable_diffusion",
  "publish_date": "2022-08",
  "corpus_stage": "预训练/SFT",
  "notes": "Stable Diffusion图解",
  "id": "0b33549788fc",
  "collected_at": "2026-10-02T15:23:34",
  "title": "Stable Diffusion with 🧨 Diffusers",
  "body_markdown": "Back to Articles\nStable Diffusion with 🧨 Diffusers\nPublished\n\t\t\t\t\tAugust 22, 2022\nUpdate on GitHub\nUpvote\n88\n+82\nSuraj Patil\nvalhalla\nFollow\nPedro Cuenca\npcuenq\nFollow\nNathan Lambert\nnatolambert\nFollow\nPatrick von Platen\npatrickvonplaten\nFollow\nStable Diffusion\n🎨\n...using 🧨 Diffusers\nStable Diffusion is a text-to-image latent diffusion model created by the researchers and engineers from\nCompVis\n,\nStability AI\nand\nLAION\n. \nIt is trained on 512x512 images from a subset of the\nLAION-5B\ndatabase.\nLAION-5B\nis the largest, freely accessible multi-modal dataset that currently exists.\nIn this post, we want to show how to use Stable Diffusion with the\n🧨 Diffusers library\n, explain how the model works and finally dive a bit deeper into how\ndiffusers\nallows\none to customize the image generation pipeline.\nNote\n: It is highly recommended to have a basic understanding of how diffusion models work. If diffusion \nmodels are completely new to you, we recommend reading one of the following blog posts:\nThe Annotated Diffusion Model\nGetting started with 🧨 Diffusers\nNow, let's get started by generating some images 🎨.\nRunning Stable Diffusion\nLicense\nBefore using the model, you need to accept the model\nlicense\nin order to download and use the weights.\nNote: the license does not need to be explicitly accepted through the UI anymore\n.\nThe license is designed to mitigate the potential harmful effects of such a powerful machine learning system. \nWe request users to\nread the license entirely and carefully\n. Here we offer a summary:\nYou can't use the model to deliberately produce nor share illegal or harmful outputs or content,\nWe claim no rights on the outputs you generate, you are free to use them and are accountable for their use which should not go against the provisions set in the license, and\nYou may re-distribute the weights and use the model commercially and/or as a service. If you do, please be aware you have to include the same use restrictions as the ones in the license and share a copy of the CreativeML OpenRAIL-M to all your users.\nUsage\nFirst, you should install\ndiffusers==0.10.2\nto run the following code snippets:\npip install diffusers==0.10.2 transformers scipy ftfy accelerate\nIn this post we'll use model version\nv1-4\n, but you can also use other versions of the model such as 1.5, 2, and 2.1 with minimal code changes.\nThe Stable Diffusion model can be run in inference with just a couple of lines using the\nStableDiffusionPipeline\npipeline. The pipeline sets up everything you need to generate images from text with \na simple\nfrom_pretrained\nfunction call.\nfrom\ndiffusers\nimport\nStableDiffusionPipeline\n\npipe = StableDiffusionPipeline.from_pretrained(\n\"CompVis/stable-diffusion-v1-4\"\n)\nIf a GPU is available, let's move it to one!\npipe.to(\n\"cuda\"\n)\nNote\n: If you are limited by GPU memory and have less than 10GB of GPU RAM available, please\nmake sure to load the\nStableDiffusionPipeline\nin float16 precision instead of the default\nfloat32 precision as done above.\nYou can do so by loading the weights from the\nfp16\nbranch and by telling\ndiffusers\nto expect the \nweights to be in float16 precision:\nimport\ntorch\nfrom\ndiffusers\nimport\nStableDiffusionPipeline\n\npipe = StableDiffusionPipeline.from_pretrained(\n\"CompVis/stable-diffusion-v1-4\"\n, revision=\n\"fp16\"\n, torch_dtype=torch.float16)\nTo run the pipeline, simply define the prompt and call\npipe\n.\nprompt =\n\"a photograph of an astronaut riding a horse\"\nimage = pipe(prompt).images[\n0\n]\n# you can save the image with\n# image.save(f\"astronaut_rides_horse.png\")\nThe result would look as follows\nThe previous code will give you a different image every time you run it.\nIf at some point you get a black image, it may be because the content filter built inside the model might have detected an NSFW result. \nIf you believe this shouldn't be the case, try tweaking your prompt or using a different seed. In fact, the model predictions include information about whether NSFW was detected for a particular result. Let's see what they look like:\nresult = pipe(prompt)\nprint\n(result)\n{\n'images'\n:\n[\n<PIL.Image.Image image mode=RGB size=\n512\nx512>\n]\n,\n'nsfw_content_detected'\n:\n[\nFalse\n]\n}\nIf you want deterministic output you can seed a random seed and pass a generator to the pipeline. \nEvery time you use a generator with the same seed you'll get the same image output.\nimport\ntorch\n\ngenerator = torch.Generator(\n\"cuda\"\n).manual_seed(\n1024\n)\nimage = pipe(prompt, guidance_scale=\n7.5\n, generator=generator).images[\n0\n]\n# you can save the image with\n# image.save(f\"astronaut_rides_horse.png\")\nThe result would look as follows\nYou can change the number of inference steps using the\nnum_inference_steps\nargument.\nIn general, results are better the more steps you use, however the more steps, the longer the generation takes.\nStable Diffusion works quite well with a relatively small number of steps, so we recommend using the default number of inference steps of\n50\n. \nIf you want faster results you can use a smaller number. If you want potentially higher quality results, \nyou can use larger numbers.\nLet's try out running the pipeline with less denoising steps.\nimport\ntorch\n\ngenerator = torch.Generator(\n\"cuda\"\n).manual_seed(\n1024\n)\nimage = pipe(prompt, guidance_scale=\n7.5\n, num_inference_steps=\n15\n, generator=generator).images[\n0\n]\n# you can save the image with\n# image.save(f\"astronaut_rides_horse.png\")\nNote how the structure is the same, but there are problems in the astronauts suit and the general form of the horse.\nThis shows that using only 15 denoising steps has significantly degraded the quality of the generation result. As stated earlier\n50\ndenoising steps is usually sufficient to generate high-quality images.\nBesides\nnum_inference_steps\n, we've been using another function argument, called\nguidance_scale\nin all \nprevious examples.\nguidance_scale\nis a way to increase the adherence to the conditional signal that guides the generation (text, in this case) as well as overall sample quality. \nIt is also known as\nclassifier-free guidance\n, which in simple terms forces the generation to better match the prompt potentially at the cost of image quality or diversity. \nValues between\n7\nand\n8.5\nare usually good choices for Stable Diffusion.  By default the pipeline\nuses a\nguidance_scale\nof 7.5.\nIf you use a very large value the images might look good, but will be less diverse. \nYou can learn about the technical details of this parameter in\nthis section\nof the post.\nNext, let's see how you can generate several images of the same prompt at once. \nFirst, we'll create an\nimage_grid\nfunction to help us visualize them nicely in a grid.\nfrom\nPIL\nimport\nImage\ndef\nimage_grid\n(\nimgs, rows, cols\n):\nassert\nlen\n(imgs) == rows*cols\n\n    w, h = imgs[\n0\n].size\n    grid = Image.new(\n'RGB'\n, size=(cols*w, rows*h))\n    grid_w, grid_h = grid.size\nfor\ni, img\nin\nenumerate\n(imgs):\n        grid.paste(img, box=(i%cols*w, i//cols*h))\nreturn\ngrid\nWe can generate multiple images for the same prompt by simply using a list with the same prompt repeated several times. We'll send the list to the pipeline instead of the string we used before.\nnum_images =\n3\nprompt = [\n\"a photograph of an astronaut riding a horse\"\n] * num_images\n\nimages = pipe(prompt).images\n\ngrid = image_grid(images, rows=\n1\n, cols=\n3\n)\n# you can save the grid with\n# grid.save(f\"astronaut_rides_horse.png\")\nBy default, stable diffusion produces images of\n512 × 512\npixels. It's very easy to override the default using the\nheight\nand\nwidth\narguments to create rectangular images in portrait or landscape ratios.\nWhen choosing image sizes, we advise the following:\nMake sure\nheight\nand\nwidth\nare both multiples of\n8\n.\nGoing below 512 might result in lower quality images.\nGoing over 512 in both directions will repeat image areas (global coherence is lost).\nThe best way to create non-square images is to use\n512\nin one dimension, and a value larger than that in the other one.\nLet's run an example:\nprompt =\n\"a photograph of an astronaut riding a horse\"\nimage = pipe(prompt, height=\n512\n, width=\n768\n).images[\n0\n]\n# you can save the image with\n# image.save(f\"astronaut_rides_horse.png\")\nHow does Stable Diffusion work?\nHaving seen the high-quality images that stable diffusion can produce, let's try to understand \na bit better how the model functions.\nStable Diffusion is based on a particular type of diffusion model called\nLatent Diffusion\n, proposed in\nHigh-Resolution Image Synthesis with Latent Diffusion Models\n.\nGenerally speaking, diffusion models are machine learning systems that are trained to\ndenoise\nrandom Gaussian noise step by step, to get to a sample of interest, such as an\nimage\n. For a more detailed overview of how they work, check\nthis colab\n.\nDiffusion models have shown to achieve state-of-the-art results for generating image data. But one downside of diffusion models is that the reverse denoising process is slow because of its repeated, sequential nature. In addition, these models consume a lot of memory because they operate in pixel space, which becomes huge when generating high-resolution images. Therefore, it is challenging to train these models and also use them for inference.\nLatent diffusion can reduce the memory and compute complexity by applying the diffusion process over a lower dimensional\nlatent\nspace, instead of using the actual pixel space. This is the key difference between standard diffusion and latent diffusion models:\nin latent diffusion the model is trained to generate latent (compressed) representations of the images.\nThere are three main components in latent diffusion.\nAn autoencoder (VAE).\nA\nU-Net\n.\nA text-encoder,\ne.g.\nCLIP's Text Encoder\n.\n1. The autoencoder (VAE)\nThe VAE model has two parts, an encoder and a decoder. The encoder is used to convert the image into a low dimensional latent representation, which will serve as the input to the\nU-Net\nmodel.\nThe decoder, conversely, transforms the latent representation back into an image.\nDuring latent diffusion\ntraining\n, the encoder is used to get the latent representations (\nlatents\n) of the images for the forward diffusion process, which applies more and more noise at each step. During\ninference\n, the denoised latents generated by the reverse diffusion process are converted back into images using the VAE decoder. As we will see during inference we\nonly need the VAE decoder\n.\n2. The U-Net\nThe U-Net has an encoder part and a decoder part both comprised of ResNet blocks.\nThe encoder compresses an image representation into a lower resolution image representation and the decoder decodes the lower resolution image representation back to the original higher resolution image representation that is supposedly less noisy.\nMore specifically, the U-Net output predicts the noise residual which can be used to compute the predicted denoised image representation.\nTo prevent the U-Net from losing important information while downsampling, short-cut connections are usually added between the downsampling ResNets of the encoder to the upsampling ResNets of the decoder.\nAdditionally, the stable diffusion U-Net is able to condition its output on text-embeddings via cross-attention layers. The cross-attention layers are added to both the encoder and decoder part of the U-Net usually between ResNet blocks.\n3. The Text-encoder\nThe text-encoder is responsible for transforming the input prompt,\ne.g.\n\"An astronaut riding a horse\" into an embedding space that can be understood by the U-Net. It is usually a simple\ntransformer-based\nencoder that maps a sequence of input tokens to a sequence of latent text-embeddings.\nInspired by\nImagen\n, Stable Diffusion does\nnot\ntrain the text-encoder during training and simply uses an CLIP's already trained text encoder,\nCLIPTextModel\n.\nWhy is latent diffusion fast and efficient?\nSince latent diffusion operates on a low dimensional space, it greatly reduces the memory and compute requirements compared to pixel-space diffusion models. For example, the autoencoder used in Stable Diffusion has a reduction factor of 8. This means that an image of shape\n(3, 512, 512)\nbecomes\n(4, 64, 64)\nin latent space, which means the spatial compression ratio is\n8 × 8 = 64\n.\nThis is why it's possible to generate\n512 × 512\nimages so quickly, even on 16GB Colab GPUs!\nStable Diffusion during inference\nPutting it all together, let's now take a closer look at how the model works in inference by illustrating the logical flow.\nThe stable diffusion model takes both a latent seed and a text prompt as an input. The latent seed is then used to generate random latent image representations of size\n64\n×\n64\n64 \\times 64\n64\n×\n64\nwhere as the text prompt is transformed to text embeddings of size\n77\n×\n768\n77 \\times 768\n77\n×\n768\nvia CLIP's text encoder.\nNext the U-Net iteratively\ndenoises\nthe random latent image representations while being conditioned on the text embeddings. The output of the U-Net, being the noise residual, is used to compute a denoised latent image representation via a scheduler algorithm. Many different scheduler algorithms can be used for this computation, each having its pro- and cons. For Stable Diffusion, we recommend using one of:\nPNDM scheduler\n(used by default)\nDDIM scheduler\nK-LMS scheduler\nTheory on how the scheduler algorithm function is out-of-scope for this notebook, but in short one should remember that they compute the predicted denoised image representation from the previous noise representation and the predicted noise residual.\nFor more information, we recommend looking into\nElucidating the Design Space of Diffusion-Based Generative Models\nThe\ndenoising\nprocess is repeated\nca.\n50 times to step-by-step retrieve better latent image representations.\nOnce complete, the latent image representation is decoded by the decoder part of the variational auto encoder.\nAfter this brief introduction to Latent and Stable Diffusion, let's see how to make advanced use of 🤗 Hugging Face\ndiffusers\nlibrary!\nWriting your own inference pipeline\nFinally, we show how you can create custom diffusion pipelines with\ndiffusers\n.\nWriting a custom inference pipeline is an advanced use of the\ndiffusers\nlibrary that can be useful to switch out certain components, such as the VAE or scheduler explained above.\nFor example, we'll show how to use Stable Diffusion with a different scheduler, namely\nKatherine Crowson's\nK-LMS scheduler added in\nthis PR\n.\nThe\npre-trained model\nincludes all the components required to setup a complete diffusion pipeline. They are stored in the following folders:\ntext_encoder\n: Stable Diffusion uses CLIP, but other diffusion models may use other encoders such as\nBERT\n.\ntokenizer\n. It must match the one used by the\ntext_encoder\nmodel.\nscheduler\n: The scheduling algorithm used to progressively add noise to the image during training.\nunet\n: The model used to generate the latent representation of the input.\nvae\n: Autoencoder module that we'll use to decode latent representations into real images.\nWe can load the components by referring to the folder they were saved, using the\nsubfolder\nargument to\nfrom_pretrained\n.\nfrom\ntransformers\nimport\nCLIPTextModel, CLIPTokenizer\nfrom\ndiffusers\nimport\nAutoencoderKL, UNet2DConditionModel, PNDMScheduler\n# 1. Load the autoencoder model which will be used to decode the latents into image space.\nvae = AutoencoderKL.from_pretrained(\n\"CompVis/stable-diffusion-v1-4\"\n, subfolder=\n\"vae\"\n)\n# 2. Load the tokenizer and text encoder to tokenize and encode the text.\ntokenizer = CLIPTokenizer.from_pretrained(\n\"openai/clip-vit-large-patch14\"\n)\ntext_encoder = CLIPTextModel.from_pretrained(\n\"openai/clip-vit-large-patch14\"\n)\n# 3. The UNet model for generating the latents.\nunet = UNet2DConditionModel.from_pretrained(\n\"CompVis/stable-diffusion-v1-4\"\n, subfolder=\n\"unet\"\n)\nNow instead of loading the pre-defined scheduler, we load the\nK-LMS scheduler\nwith some fitting parameters.\nfrom\ndiffusers\nimport\nLMSDiscreteScheduler\n\nscheduler = LMSDiscreteScheduler(beta_start=\n0.00085\n, beta_end=\n0.012\n, beta_schedule=\n\"scaled_linear\"\n, num_train_timesteps=\n1000\n)\nNext, let's move the models to GPU.\ntorch_device =\n\"cuda\"\nvae.to(torch_device)\ntext_encoder.to(torch_device)\nunet.to(torch_device)\nWe now define the parameters we'll use to generate images.\nNote that\nguidance_scale\nis defined analog to the guidance weight\nw\nof equation (2) in the\nImagen paper\n.\nguidance_scale == 1\ncorresponds to doing no classifier-free guidance. Here we set it to 7.5 as also done previously.\nIn contrast to the previous examples, we set\nnum_inference_steps\nto 100 to get an even more defined image.\nprompt = [\n\"a photograph of an astronaut riding a horse\"\n]\n\nheight =\n512\n# default height of Stable Diffusion\nwidth =\n512\n# default width of Stable Diffusion\nnum_inference_steps =\n100\n# Number of denoising steps\nguidance_scale =\n7.5\n# Scale for classifier-free guidance\ngenerator = torch.manual_seed(\n0\n)\n# Seed generator to create the initial latent noise\nbatch_size =\nlen\n(prompt)\nFirst, we get the\ntext_embeddings\nfor the passed prompt. \nThese embeddings will be used to condition the UNet model and guide the image generation towards something that should resemble the input prompt.\ntext_input = tokenizer(prompt, padding=\n\"max_length\"\n, max_length=tokenizer.model_max_length, truncation=\nTrue\n, return_tensors=\n\"pt\"\n)\n\ntext_embeddings = text_encoder(text_input.input_ids.to(torch_device))[\n0\n]\nWe'll also get the unconditional text embeddings for classifier-free guidance, which are just the embeddings for the padding token (empty text). They need to have the same shape as the conditional\ntext_embeddings\n(\nbatch_size\nand\nseq_length\n)\nmax_length = text_input.input_ids.shape[-\n1\n]\nuncond_input = tokenizer(\n    [\n\"\"\n] * batch_size, padding=\n\"max_length\"\n, max_length=max_length, return_tensors=\n\"pt\"\n)\nuncond_embeddings = text_encoder(uncond_input.input_ids.to(torch_device))[\n0\n]\nFor classifier-free guidance, we need to do two forward passes: one with the conditioned input (\ntext_embeddings\n), and another with the unconditional embeddings (\nuncond_embeddings\n). In practice, we can concatenate both into a single batch to avoid doing two forward passes.\ntext_embeddings = torch.cat([uncond_embeddings, text_embeddings])\nNext, we generate the initial random noise.\nlatents = torch.randn(\n    (batch_size, unet.in_channels, height //\n8\n, width //\n8\n),\n    generator=generator,\n)\nlatents = latents.to(torch_device)\nIf we examine the\nlatents\nat this stage we'll see their shape is\ntorch.Size([1, 4, 64, 64])\n, much smaller than the image we want to generate. The model will transform this latent representation (pure noise) into a\n512 × 512\nimage later on.\nNext, we initialize the scheduler with our chosen\nnum_inference_steps\n.\nThis will compute the\nsigmas\nand exact time step values to be used during the denoising process.\nscheduler.set_timesteps(num_inference_steps)\nThe K-LMS scheduler needs to multiply the\nlatents\nby its\nsigma\nvalues. Let's do this here:\nlatents = latents * scheduler.init_noise_sigma\nWe are ready to write the denoising loop.\nfrom\ntqdm.auto\nimport\ntqdm\n\nscheduler.set_timesteps(num_inference_steps)\nfor\nt\nin\ntqdm(scheduler.timesteps):\n# expand the latents if we are doing classifier-free guidance to avoid doing two forward passes.\nlatent_model_input = torch.cat([latents] *\n2\n)\n\n    latent_model_input = scheduler.scale_model_input(latent_model_input, timestep=t)\n# predict the noise residual\nwith\ntorch.no_grad():\n        noise_pred = unet(latent_model_input, t, encoder_hidden_states=text_embeddings).sample\n# perform guidance\nnoise_pred_uncond, noise_pred_text = noise_pred.chunk(\n2\n)\n    noise_pred = noise_pred_uncond + guidance_scale * (noise_pred_text - noise_pred_uncond)\n# compute the previous noisy sample x_t -> x_t-1\nlatents = scheduler.step(noise_pred, t, latents).prev_sample\nWe now use the\nvae\nto decode the generated\nlatents\nback into the image.\n# scale and decode the image latents with vae\nlatents =\n1\n/\n0.18215\n* latents\nwith\ntorch.no_grad():\n    image = vae.decode(latents).sample\nAnd finally, let's convert the image to PIL so we can display or save it.\nimage = (image /\n2\n+\n0.5\n).clamp(\n0\n,\n1\n)\nimage = image.detach().cpu().permute(\n0\n,\n2\n,\n3\n,\n1\n).numpy()\nimages = (image *\n255\n).\nround\n().astype(\n\"uint8\"\n)\npil_images = [Image.fromarray(image)\nfor\nimage\nin\nimages]\npil_images[\n0\n]\nWe've gone from the basic use of Stable Diffusion using 🤗 Hugging Face Diffusers to more advanced uses of the library, and we tried to introduce all the pieces in a modern diffusion system. If you liked this topic and want to learn more, we recommend the following resources:\nOur\nColab notebook\n.\nThe\nGetting Started with Diffusers\nnotebook, that gives a broader overview on Diffusion systems.\nThe\nAnnotated Diffusion Model\nblog post.\nOur\ncode in GitHub\nwhere we'd be more than happy if you leave a ⭐ if\ndiffusers\nis useful to you!\nCitation:\n@article{patil2022stable,\n  author = {Patil, Suraj and Cuenca, Pedro and Lambert, Nathan and von Platen, Patrick},\n  title = {Stable Diffusion with 🧨 Diffusers},\n  journal = {Hugging Face Blog},\n  year = {2022},\n  note = {[https://huggingface.co/blog/rlhf](https://huggingface.co/blog/stable_diffusion)},\n}\nModels mentioned in this article\n1\nSpaces mentioned in this article\n1\nMore Articles from our Blog\ndiffusion\nnlp\ntext to image\nDiffusion Models Live Event\n3\nNovember 25, 2022\nguide\ndiffusion\nnlp\n🧨 Stable Diffusion  in JAX / Flax !\n4\nOctober 13, 2022\nCommunity\nHERIUN\nMay 22, 2025\n•\nThis comment has been hidden (marked as Resolved)\nJahidAiTrend\nAug 3, 2025\nপ্লেন\nReply\namr622007\nSep 1, 2025\nA delicious juicy cheeseburger with lettuce, tomato, and melted cheese, designed in a Tiny Figures style. Cute miniature characters are interacting with the burger, some climbing the bun, others holding tiny utensils. Bright colors, playful composition, highly detailed, 3D cartoon style, soft lighting, commercial product photography vibe.\nSee translation\nReply\namr622007\nSep 1, 2025\nA delicious juicy cheeseburger with lettuce, tomato, and melted cheese, designed in a Tiny Figures style. Cute miniature characters are interacting with the burger, some climbing the bun, others holding tiny utensils. Bright colors, playful composition, highly detailed, 3D cartoon style, soft lighting, commercial product photography vibe.\nSee translation\nReply\nlacus2347\nNov 27, 2025\nSee translation\n❤️\n1\n1\n+\nReply\nEdit\nPreview\nUpload images, audio, and videos by dragging in the text input, pasting, or\nclicking here\n.\nTap or paste here to upload images\nComment\n·\nSign up\nor\nlog in\nto comment\nUpvote\n88\n+76\nModels mentioned in this article\n1\nSpaces mentioned in this article\n1",
  "metadata": {
    "title": "Stable Diffusion with 🧨 Diffusers",
    "description": "We’re on a journey to advance and democratize artificial intelligence through open source and open science.",
    "keywords": null,
    "author": null,
    "og:title": "Stable Diffusion with 🧨 Diffusers",
    "og:description": "We’re on a journey to advance and democratize artificial intelligence through open source and open science.",
    "og:type": "website",
    "og:url": "https://huggingface.co/blog/stable_diffusion",
    "og:image": "https://huggingface.co/blog/assets/98_stable_diffusion/thumbnail.png",
    "twitter:card": "summary_large_image",
    "twitter:site": "@huggingface",
    "twitter:image": "https://huggingface.co/blog/assets/98_stable_diffusion/thumbnail.png"
  },
  "paywall": {
    "listed_paid": false,
    "detected": false,
    "marker": "",
    "public_only": false,
    "policy": "付费/会员内容只保留页面公开可见部分，不绕过付费墙"
  },
  "crawl": {
    "success": true,
    "status_code": 200,
    "error": ""
  },
  "code_blocks": [
    {
      "file": "attachments/0b33549788fc/code/body-000.txt",
      "chars": 65,
      "language": "text"
    },
    {
      "file": "attachments/0b33549788fc/code/body-001.txt",
      "chars": 127,
      "language": "text"
    },
    {
      "file": "attachments/0b33549788fc/code/body-002.txt",
      "chars": 16,
      "language": "text"
    },
    {
      "file": "attachments/0b33549788fc/code/body-003.txt",
      "chars": 184,
      "language": "text"
    },
    {
      "file": "attachments/0b33549788fc/code/body-004.txt",
      "chars": 161,
      "language": "text"
    },
    {
      "file": "attachments/0b33549788fc/code/body-005.txt",
      "chars": 36,
      "language": "text"
    },
    {
      "file": "attachments/0b33549788fc/code/body-006.txt",
      "chars": 104,
      "language": "text"
    },
    {
      "file": "attachments/0b33549788fc/code/body-007.txt",
      "chars": 214,
      "language": "text"
    },
    {
      "file": "attachments/0b33549788fc/code/body-008.txt",
      "chars": 238,
      "language": "text"
    },
    {
      "file": "attachments/0b33549788fc/code/body-009.txt",
      "chars": 305,
      "language": "text"
    },
    {
      "file": "attachments/0b33549788fc/code/body-010.txt",
      "chars": 230,
      "language": "text"
    },
    {
      "file": "attachments/0b33549788fc/code/body-011.txt",
      "chars": 183,
      "language": "text"
    },
    {
      "file": "attachments/0b33549788fc/code/body-012.txt",
      "chars": 679,
      "language": "text"
    },
    {
      "file": "attachments/0b33549788fc/code/body-013.txt",
      "chars": 170,
      "language": "text"
    },
    {
      "file": "attachments/0b33549788fc/code/body-014.txt",
      "chars": 96,
      "language": "text"
    },
    {
      "file": "attachments/0b33549788fc/code/body-015.txt",
      "chars": 457,
      "language": "text"
    },
    {
      "file": "attachments/0b33549788fc/code/body-016.txt",
      "chars": 204,
      "language": "text"
    },
    {
      "file": "attachments/0b33549788fc/code/body-017.txt",
      "chars": 240,
      "language": "text"
    },
    {
      "file": "attachments/0b33549788fc/code/body-018.txt",
      "chars": 66,
      "language": "text"
    },
    {
      "file": "attachments/0b33549788fc/code/body-019.txt",
      "chars": 146,
      "language": "text"
    },
    {
      "file": "attachments/0b33549788fc/code/body-020.txt",
      "chars": 45,
      "language": "text"
    },
    {
      "file": "attachments/0b33549788fc/code/body-021.txt",
      "chars": 47,
      "language": "text"
    },
    {
      "file": "attachments/0b33549788fc/code/body-022.txt",
      "chars": 798,
      "language": "text"
    },
    {
      "file": "attachments/0b33549788fc/code/body-023.txt",
      "chars": 139,
      "language": "text"
    },
    {
      "file": "attachments/0b33549788fc/code/body-024.txt",
      "chars": 214,
      "language": "text"
    },
    {
      "file": "attachments/0b33549788fc/code/body-025.txt",
      "chars": 307,
      "language": "text"
    }
  ],
  "images": [
    {
      "status": "ok",
      "url": "https://huggingface.co/avatars/59f1f448eb963dbb9d228ca8b6a2976b.svg",
      "bytes": 397,
      "reused": false,
      "local_path": "attachments/0b33549788fc/images/body-698c454100a9e9526f00.svg",
      "src": "https://huggingface.co/avatars/59f1f448eb963dbb9d228ca8b6a2976b.svg",
      "alt": "",
      "downloaded": true
    },
    {
      "status": "ok",
      "url": "https://cdn-avatars.huggingface.co/v1/production/uploads/1668752148476-noauth.jpeg",
      "bytes": 15808,
      "reused": false,
      "local_path": "attachments/0b33549788fc/images/body-8145bd7fb63e91cde22d.jpeg",
      "src": "https://cdn-avatars.huggingface.co/v1/production/uploads/1668752148476-noauth.jpeg",
      "alt": "",
      "downloaded": true
    },
    {
      "status": "ok",
      "url": "https://cdn-avatars.huggingface.co/v1/production/uploads/noauth/AjnMF_ObioPCjmQ_rZk3B.png",
      "bytes": 17028,
      "reused": false,
      "local_path": "attachments/0b33549788fc/images/body-2b93756858e38a02ac60.png",
      "src": "https://cdn-avatars.huggingface.co/v1/production/uploads/noauth/AjnMF_ObioPCjmQ_rZk3B.png",
      "alt": "",
      "downloaded": true
    },
    {
      "status": "ok",
      "url": "https://cdn-avatars.huggingface.co/v1/production/uploads/noauth/Amr-3ZTIxaKRy52_3NFTt.jpeg",
      "bytes": 1694,
      "reused": false,
      "local_path": "attachments/0b33549788fc/images/body-6d281e93e06551ad0856.jpeg",
      "src": "https://cdn-avatars.huggingface.co/v1/production/uploads/noauth/Amr-3ZTIxaKRy52_3NFTt.jpeg",
      "alt": "",
      "downloaded": true
    },
    {
      "status": "ok",
      "url": "https://cdn-avatars.huggingface.co/v1/production/uploads/64ee1450f5451e991665b054/iPhviqczTDEkqaRUh9ydF.jpeg",
      "bytes": 8040,
      "reused": false,
      "local_path": "attachments/0b33549788fc/images/body-75f907c31afe8d1d19be.jpeg",
      "src": "https://cdn-avatars.huggingface.co/v1/production/uploads/64ee1450f5451e991665b054/iPhviqczTDEkqaRUh9ydF.jpeg",
      "alt": "",
      "downloaded": true
    },
    {
      "status": "ok",
      "url": "https://huggingface.co/avatars/61d737473aa932d53365e79571987e69.svg",
      "bytes": 1284,
      "reused": false,
      "local_path": "attachments/0b33549788fc/images/body-d66b8d6e78cc531f4bf8.svg",
      "src": "https://huggingface.co/avatars/61d737473aa932d53365e79571987e69.svg",
      "alt": "",
      "downloaded": true
    },
    {
      "status": "ok",
      "url": "https://colab.research.google.com/assets/colab-badge.svg",
      "bytes": 2369,
      "reused": false,
      "local_path": "attachments/0b33549788fc/images/body-dfb4615ac36cf94cea03.svg",
      "src": "https://colab.research.google.com/assets/colab-badge.svg",
      "alt": "Open In Colab",
      "downloaded": true
    },
    {
      "status": "ok",
      "url": "https://huggingface.co/blog/assets/98_stable_diffusion/stable_diffusion_12_1.png",
      "bytes": 197053,
      "reused": false,
      "local_path": "attachments/0b33549788fc/images/body-a1edfb729dfcb8b37a7a.png",
      "src": "https://huggingface.co/blog/assets/98_stable_diffusion/stable_diffusion_12_1.png",
      "alt": "png",
      "downloaded": true
    },
    {
      "status": "ok",
      "url": "https://huggingface.co/blog/assets/98_stable_diffusion/stable_diffusion_14_1.png",
      "bytes": 179934,
      "reused": false,
      "local_path": "attachments/0b33549788fc/images/body-ac6c68dec550360711d7.png",
      "src": "https://huggingface.co/blog/assets/98_stable_diffusion/stable_diffusion_14_1.png",
      "alt": "png",
      "downloaded": true
    },
    {
      "status": "ok",
      "url": "https://huggingface.co/blog/assets/98_stable_diffusion/stable_diffusion_16_1.png",
      "bytes": 146069,
      "reused": false,
      "local_path": "attachments/0b33549788fc/images/body-02de492281c171e276c2.png",
      "src": "https://huggingface.co/blog/assets/98_stable_diffusion/stable_diffusion_16_1.png",
      "alt": "png",
      "downloaded": true
    },
    {
      "status": "ok",
      "url": "https://huggingface.co/blog/assets/98_stable_diffusion/stable_diffusion_22_1.png",
      "bytes": 393807,
      "reused": false,
      "local_path": "attachments/0b33549788fc/images/body-c865417d6b8fa69fa288.png",
      "src": "https://huggingface.co/blog/assets/98_stable_diffusion/stable_diffusion_22_1.png",
      "alt": "png",
      "downloaded": true
    },
    {
      "status": "ok",
      "url": "https://huggingface.co/blog/assets/98_stable_diffusion/stable_diffusion_26_1.png",
      "bytes": 236925,
      "reused": false,
      "local_path": "attachments/0b33549788fc/images/body-3f4d4c1de412dcbb6276.png",
      "src": "https://huggingface.co/blog/assets/98_stable_diffusion/stable_diffusion_26_1.png",
      "alt": "png",
      "downloaded": true
    },
    {
      "status": "ok",
      "url": "https://raw.githubusercontent.com/patrickvonplaten/scientific_images/master/stable_diffusion.png",
      "bytes": 54639,
      "reused": true,
      "local_path": "attachments/0b33549788fc/images/009.png",
      "src": "https://raw.githubusercontent.com/patrickvonplaten/scientific_images/master/stable_diffusion.png",
      "alt": "sd-pipeline",
      "downloaded": true
    },
    {
      "status": "ok",
      "url": "https://huggingface.co/blog/assets/98_stable_diffusion/stable_diffusion_k_lms.png",
      "bytes": 107637,
      "reused": false,
      "local_path": "attachments/0b33549788fc/images/body-f2ad7541ab15a170c468.png",
      "src": "https://huggingface.co/blog/assets/98_stable_diffusion/stable_diffusion_k_lms.png",
      "alt": "png",
      "downloaded": true
    },
    {
      "status": "ok",
      "url": "https://huggingface.co/blog/assets/diffusion-models-event/thumbnail.png",
      "bytes": 1485129,
      "reused": false,
      "local_path": "attachments/0b33549788fc/images/body-7919ce6fbeb4efb4296d.png",
      "src": "https://huggingface.co/blog/assets/diffusion-models-event/thumbnail.png",
      "alt": "",
      "downloaded": true
    },
    {
      "status": "ok",
      "url": "https://cdn-avatars.huggingface.co/v1/production/uploads/1594651707950-noauth.jpeg",
      "bytes": 6664,
      "reused": false,
      "local_path": "attachments/0b33549788fc/images/body-9d765f86233ead48ab54.jpeg",
      "src": "https://cdn-avatars.huggingface.co/v1/production/uploads/1594651707950-noauth.jpeg",
      "alt": "",
      "downloaded": true
    },
    {
      "status": "ok",
      "url": "https://cdn-avatars.huggingface.co/v1/production/uploads/1636442017289-noauth.jpeg",
      "bytes": 8780,
      "reused": false,
      "local_path": "attachments/0b33549788fc/images/body-4c9002d20bd55c4f8fa7.jpeg",
      "src": "https://cdn-avatars.huggingface.co/v1/production/uploads/1636442017289-noauth.jpeg",
      "alt": "",
      "downloaded": true
    },
    {
      "status": "ok",
      "url": "https://huggingface.co/blog/assets/108_stable_diffusion_jax/thumbnail.png",
      "bytes": 4073293,
      "reused": false,
      "local_path": "attachments/0b33549788fc/images/body-53c6b7b6bc932a3a3f36.png",
      "src": "https://huggingface.co/blog/assets/108_stable_diffusion_jax/thumbnail.png",
      "alt": "",
      "downloaded": true
    },
    {
      "status": "ok",
      "url": "https://cdn-avatars.huggingface.co/v1/production/uploads/1617264212503-603d25b75f9d390ab190b777.jpeg",
      "bytes": 9492,
      "reused": true,
      "local_path": "attachments/0b33549788fc/images/001.jpeg",
      "src": "https://cdn-avatars.huggingface.co/v1/production/uploads/1617264212503-603d25b75f9d390ab190b777.jpeg",
      "alt": "",
      "downloaded": true
    },
    {
      "status": "ok",
      "url": "https://cdn-avatars.huggingface.co/v1/production/uploads/1584435275418-5dfcb1aada6d0311fd3d5448.jpeg",
      "bytes": 8082,
      "reused": true,
      "local_path": "attachments/0b33549788fc/images/003.jpeg",
      "src": "https://cdn-avatars.huggingface.co/v1/production/uploads/1584435275418-5dfcb1aada6d0311fd3d5448.jpeg",
      "alt": "",
      "downloaded": true
    },
    {
      "status": "ok",
      "url": "https://cdn-avatars.huggingface.co/v1/production/uploads/639a740e627273d46a754eae/6nU05-mRUITgEKBLV_JUj.png",
      "bytes": 16236,
      "reused": false,
      "local_path": "attachments/0b33549788fc/images/body-c71d410a8d0b572103f4.png",
      "src": "https://cdn-avatars.huggingface.co/v1/production/uploads/639a740e627273d46a754eae/6nU05-mRUITgEKBLV_JUj.png",
      "alt": "",
      "downloaded": true
    },
    {
      "status": "ok",
      "url": "https://huggingface.co/avatars/ccb34238283123939e041b9e6d9dd8e9.svg",
      "bytes": 397,
      "reused": false,
      "local_path": "attachments/0b33549788fc/images/body-a48242c563872f25aef5.svg",
      "src": "https://huggingface.co/avatars/ccb34238283123939e041b9e6d9dd8e9.svg",
      "alt": "",
      "downloaded": true
    },
    {
      "status": "ok",
      "url": "https://huggingface.co/avatars/e19aa9a7d179b20eeae97fa369055f83.svg",
      "bytes": 1282,
      "reused": false,
      "local_path": "attachments/0b33549788fc/images/body-db5e258a165f5b269cb6.svg",
      "src": "https://huggingface.co/avatars/e19aa9a7d179b20eeae97fa369055f83.svg",
      "alt": "",
      "downloaded": true
    },
    {
      "status": "ok",
      "url": "https://huggingface.co/avatars/075d9e537c4710934d1eb7fedf51b45e.svg",
      "bytes": 1282,
      "reused": false,
      "local_path": "attachments/0b33549788fc/images/body-1f52d3379138e517f807.svg",
      "src": "https://huggingface.co/avatars/075d9e537c4710934d1eb7fedf51b45e.svg",
      "alt": "",
      "downloaded": true
    },
    {
      "status": "ok",
      "url": "https://cdn-uploads.huggingface.co/production/uploads/6928b3631d8b0dc776e5ea04/mcNLq234DjGZ40B1VSUmk.jpeg",
      "bytes": 239612,
      "reused": true,
      "local_path": "attachments/0b33549788fc/images/011.jpeg",
      "src": "https://cdn-uploads.huggingface.co/production/uploads/6928b3631d8b0dc776e5ea04/mcNLq234DjGZ40B1VSUmk.jpeg",
      "alt": "IMG_8635",
      "downloaded": true
    },
    {
      "status": "ok",
      "url": "https://cdn-avatars.huggingface.co/v1/production/uploads/603bdba23249b99991dbcbc4/cxCnN1H-RXOhojHY3Wcxo.jpeg",
      "bytes": 9186,
      "reused": false,
      "local_path": "attachments/0b33549788fc/images/body-dcfdd6c95b3403c6aa7d.jpeg",
      "src": "https://cdn-avatars.huggingface.co/v1/production/uploads/603bdba23249b99991dbcbc4/cxCnN1H-RXOhojHY3Wcxo.jpeg",
      "alt": "",
      "downloaded": true
    },
    {
      "status": "ok",
      "url": "https://huggingface.co/avatars/784318ce6c090992800ec445618f4952.svg",
      "bytes": 397,
      "reused": false,
      "local_path": "attachments/0b33549788fc/images/body-6761ec13e1a1fc73aba6.svg",
      "src": "https://huggingface.co/avatars/784318ce6c090992800ec445618f4952.svg",
      "alt": "",
      "downloaded": true
    },
    {
      "status": "ok",
      "url": "https://huggingface.co/avatars/deb41ebc35932ef0c8dc965a458f8f4d.svg",
      "bytes": 397,
      "reused": false,
      "local_path": "attachments/0b33549788fc/images/body-481b1ea0bf9131aaede4.svg",
      "src": "https://huggingface.co/avatars/deb41ebc35932ef0c8dc965a458f8f4d.svg",
      "alt": "",
      "downloaded": true
    },
    {
      "status": "ok",
      "url": "https://huggingface.co/avatars/eb2e21b2ce424ffaf2e2bff8c9a1fb2e.svg",
      "bytes": 397,
      "reused": false,
      "local_path": "attachments/0b33549788fc/images/body-06400ccf59fd68b0dae0.svg",
      "src": "https://huggingface.co/avatars/eb2e21b2ce424ffaf2e2bff8c9a1fb2e.svg",
      "alt": "",
      "downloaded": true
    },
    {
      "status": "ok",
      "url": "https://huggingface.co/avatars/4fa93c43101bd4e07f9d2043e7628776.svg",
      "bytes": 1283,
      "reused": false,
      "local_path": "attachments/0b33549788fc/images/body-6a9911ffe4b5eb65a82d.svg",
      "src": "https://huggingface.co/avatars/4fa93c43101bd4e07f9d2043e7628776.svg",
      "alt": "",
      "downloaded": true
    },
    {
      "status": "ok",
      "url": "https://cdn-avatars.huggingface.co/v1/production/uploads/664a1c1fdc3138184061d587/yUZr67LThNnQkN0V1ZDQ1.jpeg",
      "bytes": 4288,
      "reused": false,
      "local_path": "attachments/0b33549788fc/images/body-323617b7b262ed74b327.jpeg",
      "src": "https://cdn-avatars.huggingface.co/v1/production/uploads/664a1c1fdc3138184061d587/yUZr67LThNnQkN0V1ZDQ1.jpeg",
      "alt": "",
      "downloaded": true
    }
  ],
  "audio": [],
  "videos": [],
  "links": [
    {
      "href": "https://huggingface.co/blog",
      "label": "Back to Articles",
      "type": "a"
    },
    {
      "href": "https://github.com/huggingface/blog/blob/main/stable_diffusion.md",
      "label": "Update on GitHub",
      "type": "a"
    },
    {
      "href": "https://huggingface.co/login?next=%2Fblog%2Fstable_diffusion",
      "label": "Upvote 88",
      "type": "a"
    },
    {
      "href": "https://huggingface.co/victorpalmeida",
      "label": "",
      "type": "a"
    },
    {
      "href": "https://huggingface.co/kwshh",
      "label": "",
      "type": "a"
    },
    {
      "href": "https://huggingface.co/PalionTech",
      "label": "",
      "type": "a"
    },
    {
      "href": "https://huggingface.co/YslLin",
      "label": "",
      "type": "a"
    },
    {
      "href": "https://huggingface.co/Adeptschneider",
      "label": "",
      "type": "a"
    },
    {
      "href": "https://huggingface.co/smis",
      "label": "",
      "type": "a"
    },
    {
      "href": "https://huggingface.co/valhalla",
      "label": "",
      "type": "a"
    },
    {
      "href": "https://huggingface.co/pcuenq",
      "label": "",
      "type": "a"
    },
    {
      "href": "https://huggingface.co/natolambert",
      "label": "",
      "type": "a"
    },
    {
      "href": "https://huggingface.co/patrickvonplaten",
      "label": "",
      "type": "a"
    },
    {
      "href": "https://colab.research.google.com/github/huggingface/notebooks/blob/main/diffusers/stable_diffusion.ipynb",
      "label": "",
      "type": "a"
    },
    {
      "href": "https://github.com/CompVis",
      "label": "CompVis",
      "type": "a"
    },
    {
      "href": "https://stability.ai/",
      "label": "Stability AI",
      "type": "a"
    },
    {
      "href": "https://laion.ai/",
      "label": "LAION",
      "type": "a"
    },
    {
      "href": "https://laion.ai/blog/laion-5b/",
      "label": "LAION-5B",
      "type": "a"
    },
    {
      "href": "https://github.com/huggingface/diffusers",
      "label": "🧨 Diffusers library",
      "type": "a"
    },
    {
      "href": "https://huggingface.co/blog/annotated-diffusion",
      "label": "The Annotated Diffusion Model",
      "type": "a"
    },
    {
      "href": "https://colab.research.google.com/github/huggingface/notebooks/blob/main/diffusers/diffusers_intro.ipynb",
      "label": "Getting started with 🧨 Diffusers",
      "type": "a"
    },
    {
      "href": "https://huggingface.co/spaces/CompVis/stable-diffusion-license",
      "label": "license",
      "type": "a"
    },
    {
      "href": "https://huggingface.co/CompVis/stable-diffusion-v1-4",
      "label": "v1-4",
      "type": "a"
    },
    {
      "href": "https://github.com/huggingface/diffusers/blob/main/src/diffusers/pipelines/stable_diffusion/pipeline_stable_diffusion.py",
      "label": "StableDiffusionPipeline",
      "type": "a"
    },
    {
      "href": "https://huggingface.co/blog/assets/98_stable_diffusion/stable_diffusion_12_1.png",
      "label": "",
      "type": "a"
    },
    {
      "href": "https://huggingface.co/blog/assets/98_stable_diffusion/stable_diffusion_14_1.png",
      "label": "",
      "type": "a"
    },
    {
      "href": "https://huggingface.co/blog/assets/98_stable_diffusion/stable_diffusion_16_1.png",
      "label": "",
      "type": "a"
    },
    {
      "href": "https://arxiv.org/abs/2207.12598",
      "label": "classifier-free guidance",
      "type": "a"
    },
    {
      "href": "https://huggingface.co/blog/assets/98_stable_diffusion/stable_diffusion_22_1.png",
      "label": "",
      "type": "a"
    },
    {
      "href": "https://huggingface.co/blog/assets/98_stable_diffusion/stable_diffusion_26_1.png",
      "label": "",
      "type": "a"
    },
    {
      "href": "https://arxiv.org/abs/2112.10752",
      "label": "High-Resolution Image Synthesis with Latent Diffusion Models",
      "type": "a"
    },
    {
      "href": "https://huggingface.co/docs/transformers/model_doc/clip",
      "label": "CLIP's Text Encoder",
      "type": "a"
    },
    {
      "href": "https://imagen.research.google/",
      "label": "Imagen",
      "type": "a"
    },
    {
      "href": "https://github.com/huggingface/diffusers/blob/main/src/diffusers/schedulers/scheduling_pndm.py",
      "label": "PNDM scheduler",
      "type": "a"
    },
    {
      "href": "https://github.com/huggingface/diffusers/blob/main/src/diffusers/schedulers/scheduling_ddim.py",
      "label": "DDIM scheduler",
      "type": "a"
    },
    {
      "href": "https://github.com/huggingface/diffusers/blob/main/src/diffusers/schedulers/scheduling_lms_discrete.py",
      "label": "K-LMS scheduler",
      "type": "a"
    },
    {
      "href": "https://arxiv.org/abs/2206.00364",
      "label": "Elucidating the Design Space of Diffusion-Based Generative Models",
      "type": "a"
    },
    {
      "href": "https://github.com/crowsonkb",
      "label": "Katherine Crowson's",
      "type": "a"
    },
    {
      "href": "https://github.com/huggingface/diffusers/pull/185",
      "label": "this PR",
      "type": "a"
    },
    {
      "href": "https://huggingface.co/CompVis/stable-diffusion-v1-4/tree/main",
      "label": "pre-trained model",
      "type": "a"
    },
    {
      "href": "https://github.com/huggingface/diffusers/blob/71ba8aec55b52a7ba5a1ff1db1265ffdd3c65ea2/src/diffusers/schedulers/scheduling_lms_discrete.py",
      "label": "K-LMS scheduler",
      "type": "a"
    },
    {
      "href": "https://arxiv.org/pdf/2205.11487.pdf",
      "label": "Imagen paper",
      "type": "a"
    },
    {
      "href": "https://huggingface.co/blog/assets/98_stable_diffusion/stable_diffusion_k_lms.png",
      "label": "",
      "type": "a"
    },
    {
      "href": "https://huggingface.co/blog/diffusion-models-event",
      "label": "diffusion nlp text to image Diffusion Models Live Event 3 November 25, 2022",
      "type": "a"
    },
    {
      "href": "https://huggingface.co/blog/stable_diffusion_jax",
      "label": "guide diffusion nlp 🧨 Stable Diffusion  in JAX / Flax ! 4 October 13, 2022",
      "type": "a"
    },
    {
      "href": "https://huggingface.co/HERIUN",
      "label": "HERIUN",
      "type": "a"
    },
    {
      "href": "https://huggingface.co/JahidAiTrend",
      "label": "JahidAiTrend",
      "type": "a"
    },
    {
      "href": "https://huggingface.co/amr622007",
      "label": "amr622007",
      "type": "a"
    },
    {
      "href": "https://huggingface.co/lacus2347",
      "label": "lacus2347",
      "type": "a"
    },
    {
      "href": "https://cdn-uploads.huggingface.co/production/uploads/6928b3631d8b0dc776e5ea04/mcNLq234DjGZ40B1VSUmk.jpeg",
      "label": "",
      "type": "a"
    },
    {
      "href": "https://huggingface.co/join?next=%2Fblog%2Fstable_diffusion",
      "label": "Sign up",
      "type": "a"
    },
    {
      "href": "https://huggingface.co/tolgacangoz",
      "label": "",
      "type": "a"
    },
    {
      "href": "https://huggingface.co/LegendNNT",
      "label": "",
      "type": "a"
    },
    {
      "href": "https://huggingface.co/cviitm",
      "label": "",
      "type": "a"
    },
    {
      "href": "https://huggingface.co/syhanhan",
      "label": "",
      "type": "a"
    },
    {
      "href": "https://huggingface.co/l-federico",
      "label": "",
      "type": "a"
    },
    {
      "href": "https://huggingface.co/YuHongYang-Ai",
      "label": "",
      "type": "a"
    }
  ],
  "repair_version": 2,
  "repaired_at": "2026-10-14T10:53:21Z",
  "source_url": "https://huggingface.co/blog/stable_diffusion",
  "papers": [
    {
      "status": "ok",
      "url": "https://arxiv.org/pdf/2207.12598",
      "bytes": 3773509,
      "reused": true,
      "local_path": "papers/repair/b118a9b962027e6555c7.pdf"
    },
    {
      "status": "ok",
      "url": "https://arxiv.org/pdf/2112.10752",
      "bytes": 40842586,
      "reused": true,
      "local_path": "papers/repair/84de7ccc1cc12ec4cb29.pdf"
    },
    {
      "status": "ok",
      "url": "https://arxiv.org/pdf/2206.00364",
      "bytes": 19211841,
      "reused": false,
      "local_path": "papers/repair/1fbb85b981b517e5c75d.pdf"
    },
    {
      "status": "ok",
      "url": "https://arxiv.org/pdf/2205.11487.pdf",
      "bytes": 11365725,
      "reused": false,
      "local_path": "papers/repair/6d0f77f6fb08d4a344f4.pdf"
    }
  ],
  "actual_video_files": [],
  "body_chars": 22599,
  "expected_body_images": 31,
  "discovery_status": "ok",
  "delivery_status": "ok",
  "missing_reason": "",
  "raw_html": "attachments/0b33549788fc/pages/source.html",
  "local_html": "attachments/0b33549788fc/pages/article.html",
  "body_base_path": "attachments/0b33549788fc/pages/",
  "body_markdown_path": "attachments/0b33549788fc/pages/article.md"
}