Buckets:
| import{S as st,i as nt,s as lt,e as s,k as p,w as j,t as h,M as it,c as n,d as e,m,a as i,x as v,h as c,b as r,N as Qa,G as t,g as o,y as G,q as B,o as E,B as X,v as rt}from"../../chunks/vendor-hf-doc-builder.js";import{T as ot}from"../../chunks/Tip-hf-doc-builder.js";import{I as tt}from"../../chunks/IconCopyLink-hf-doc-builder.js";import{C as Da}from"../../chunks/CodeBlock-hf-doc-builder.js";import{D as pt}from"../../chunks/DocNotebookDropdown-hf-doc-builder.js";function mt(Ma){let u,M;return{c(){u=s("p"),M=h("A previous experimental implementation of inpainting used a different, lower-quality process. To ensure backwards compatibility, loading a pretrained pipeline that doesn\u2019t contain the new model will still apply the old inpainting method.")},l(d){u=n(d,"P",{});var f=i(u);M=c(f,"A previous experimental implementation of inpainting used a different, lower-quality process. To ensure backwards compatibility, loading a pretrained pipeline that doesn\u2019t contain the new model will still apply the old inpainting method."),f.forEach(e)},m(d,f){o(d,u,f),t(u,M)},d(d){d&&e(u)}}}function ht(Ma){let u,M,d,f,pa,F,xa,ma,za,Ua,S,Ta,g,Ha,H,Aa,qa,V,ha,Pa,Ka,_a,U,La,A,Oa,ae,Wa,Y,ka,q,ee,Za,C,Ia,P,te,ja,R,va,T,ca,y,K,ua,se,ne,L,da,le,ie,O,fa,re,oe,aa,pe,me,ya,b,ea,N,Ue,he,ta,$,Te,ce,sa,ba,ga,ue,de,na,Q,_e,Ga,_,Ba,la,fe,Ea,w,We,Xa,J,W,wa,D,ye,Ja,be,Fa,k,ge,ia,we,Je,Sa,x,Va,ra,Me,Ya;return F=new tt({}),S=new pt({props:{classNames:"absolute z-10 right-0 top-0",options:[{label:"Mixed",value:"https://colab.research.google.com/github/huggingface/notebooks/blob/main/diffusers_doc/en/inpaint.ipynb"},{label:"PyTorch",value:"https://colab.research.google.com/github/huggingface/notebooks/blob/main/diffusers_doc/en/pytorch/inpaint.ipynb"},{label:"TensorFlow",value:"https://colab.research.google.com/github/huggingface/notebooks/blob/main/diffusers_doc/en/tensorflow/inpaint.ipynb"},{label:"Mixed",value:"https://studiolab.sagemaker.aws/import/github/huggingface/notebooks/blob/main/diffusers_doc/en/inpaint.ipynb"},{label:"PyTorch",value:"https://studiolab.sagemaker.aws/import/github/huggingface/notebooks/blob/main/diffusers_doc/en/pytorch/inpaint.ipynb"},{label:"TensorFlow",value:"https://studiolab.sagemaker.aws/import/github/huggingface/notebooks/blob/main/diffusers_doc/en/tensorflow/inpaint.ipynb"}]}}),Y=new Da({props:{code:"aW1wb3J0JTIwUElMJTBBaW1wb3J0JTIwcmVxdWVzdHMlMEFpbXBvcnQlMjB0b3JjaCUwQWZyb20lMjBpbyUyMGltcG9ydCUyMEJ5dGVzSU8lMEElMEFmcm9tJTIwZGlmZnVzZXJzJTIwaW1wb3J0JTIwU3RhYmxlRGlmZnVzaW9uSW5wYWludFBpcGVsaW5lJTBBJTBBcGlwZWxpbmUlMjAlM0QlMjBTdGFibGVEaWZmdXNpb25JbnBhaW50UGlwZWxpbmUuZnJvbV9wcmV0cmFpbmVkKCUwQSUyMCUyMCUyMCUyMCUyMnJ1bndheW1sJTJGc3RhYmxlLWRpZmZ1c2lvbi1pbnBhaW50aW5nJTIyJTJDJTBBJTIwJTIwJTIwJTIwdG9yY2hfZHR5cGUlM0R0b3JjaC5mbG9hdDE2JTJDJTBBJTIwJTIwJTIwJTIwdXNlX3NhZmV0ZW5zb3JzJTNEVHJ1ZSUyQyUwQSUyMCUyMCUyMCUyMHZhcmlhbnQlM0QlMjJmcDE2JTIyJTJDJTBBKSUwQXBpcGVsaW5lJTIwJTNEJTIwcGlwZWxpbmUudG8oJTIyY3VkYSUyMik=",highlighted:`<span class="hljs-keyword">import</span> PIL | |
| <span class="hljs-keyword">import</span> requests | |
| <span class="hljs-keyword">import</span> torch | |
| <span class="hljs-keyword">from</span> io <span class="hljs-keyword">import</span> BytesIO | |
| <span class="hljs-keyword">from</span> diffusers <span class="hljs-keyword">import</span> StableDiffusionInpaintPipeline | |
| pipeline = StableDiffusionInpaintPipeline.from_pretrained( | |
| <span class="hljs-string">"runwayml/stable-diffusion-inpainting"</span>, | |
| torch_dtype=torch.float16, | |
| use_safetensors=<span class="hljs-literal">True</span>, | |
| variant=<span class="hljs-string">"fp16"</span>, | |
| ) | |
| pipeline = pipeline.to(<span class="hljs-string">"cuda"</span>)`}}),C=new Da({props:{code:"ZGVmJTIwZG93bmxvYWRfaW1hZ2UodXJsKSUzQSUwQSUyMCUyMCUyMCUyMHJlc3BvbnNlJTIwJTNEJTIwcmVxdWVzdHMuZ2V0KHVybCklMEElMjAlMjAlMjAlMjByZXR1cm4lMjBQSUwuSW1hZ2Uub3BlbihCeXRlc0lPKHJlc3BvbnNlLmNvbnRlbnQpKS5jb252ZXJ0KCUyMlJHQiUyMiklMEElMEElMEFpbWdfdXJsJTIwJTNEJTIwJTIyaHR0cHMlM0ElMkYlMkZyYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tJTJGQ29tcFZpcyUyRmxhdGVudC1kaWZmdXNpb24lMkZtYWluJTJGZGF0YSUyRmlucGFpbnRpbmdfZXhhbXBsZXMlMkZvdmVydHVyZS1jcmVhdGlvbnMtNXNJNmZRZ1lJdW8ucG5nJTIyJTBBbWFza191cmwlMjAlM0QlMjAlMjJodHRwcyUzQSUyRiUyRnJhdy5naXRodWJ1c2VyY29udGVudC5jb20lMkZDb21wVmlzJTJGbGF0ZW50LWRpZmZ1c2lvbiUyRm1haW4lMkZkYXRhJTJGaW5wYWludGluZ19leGFtcGxlcyUyRm92ZXJ0dXJlLWNyZWF0aW9ucy01c0k2ZlFnWUl1b19tYXNrLnBuZyUyMiUwQSUwQWluaXRfaW1hZ2UlMjAlM0QlMjBkb3dubG9hZF9pbWFnZShpbWdfdXJsKS5yZXNpemUoKDUxMiUyQyUyMDUxMikpJTBBbWFza19pbWFnZSUyMCUzRCUyMGRvd25sb2FkX2ltYWdlKG1hc2tfdXJsKS5yZXNpemUoKDUxMiUyQyUyMDUxMikp",highlighted:`<span class="hljs-keyword">def</span> <span class="hljs-title function_">download_image</span>(<span class="hljs-params">url</span>): | |
| response = requests.get(url) | |
| <span class="hljs-keyword">return</span> PIL.Image.<span class="hljs-built_in">open</span>(BytesIO(response.content)).convert(<span class="hljs-string">"RGB"</span>) | |
| img_url = <span class="hljs-string">"https://raw.githubusercontent.com/CompVis/latent-diffusion/main/data/inpainting_examples/overture-creations-5sI6fQgYIuo.png"</span> | |
| mask_url = <span class="hljs-string">"https://raw.githubusercontent.com/CompVis/latent-diffusion/main/data/inpainting_examples/overture-creations-5sI6fQgYIuo_mask.png"</span> | |
| init_image = download_image(img_url).resize((<span class="hljs-number">512</span>, <span class="hljs-number">512</span>)) | |
| mask_image = download_image(mask_url).resize((<span class="hljs-number">512</span>, <span class="hljs-number">512</span>))`}}),R=new Da({props:{code:"cHJvbXB0JTIwJTNEJTIwJTIyRmFjZSUyMG9mJTIwYSUyMHllbGxvdyUyMGNhdCUyQyUyMGhpZ2glMjByZXNvbHV0aW9uJTJDJTIwc2l0dGluZyUyMG9uJTIwYSUyMHBhcmslMjBiZW5jaCUyMiUwQWltYWdlJTIwJTNEJTIwcGlwZWxpbmUocHJvbXB0JTNEcHJvbXB0JTJDJTIwaW1hZ2UlM0Rpbml0X2ltYWdlJTJDJTIwbWFza19pbWFnZSUzRG1hc2tfaW1hZ2UpLmltYWdlcyU1QjAlNUQ=",highlighted:`prompt = <span class="hljs-string">"Face of a yellow cat, high resolution, sitting on a park bench"</span> | |
| image = pipeline(prompt=prompt, image=init_image, mask_image=mask_image).images[<span class="hljs-number">0</span>]`}}),_=new ot({props:{warning:!0,$$slots:{default:[mt]},$$scope:{ctx:Ma}}}),D=new tt({}),x=new Da({props:{code:"aW1wb3J0JTIwUElMJTBBaW1wb3J0JTIwbnVtcHklMjBhcyUyMG5wJTBBaW1wb3J0JTIwdG9yY2glMEElMEFmcm9tJTIwZGlmZnVzZXJzJTIwaW1wb3J0JTIwU3RhYmxlRGlmZnVzaW9uSW5wYWludFBpcGVsaW5lJTBBZnJvbSUyMGRpZmZ1c2Vycy51dGlscyUyMGltcG9ydCUyMGxvYWRfaW1hZ2UlMEElMEFkZXZpY2UlMjAlM0QlMjAlMjJjdWRhJTIyJTBBcGlwZWxpbmUlMjAlM0QlMjBTdGFibGVEaWZmdXNpb25JbnBhaW50UGlwZWxpbmUuZnJvbV9wcmV0cmFpbmVkKCUwQSUyMCUyMCUyMCUyMCUyMnJ1bndheW1sJTJGc3RhYmxlLWRpZmZ1c2lvbi1pbnBhaW50aW5nJTIyJTJDJTBBJTIwJTIwJTIwJTIwdG9yY2hfZHR5cGUlM0R0b3JjaC5mbG9hdDE2JTJDJTBBKSUwQXBpcGVsaW5lJTIwJTNEJTIwcGlwZWxpbmUudG8oZGV2aWNlKSUwQSUwQWltZ191cmwlMjAlM0QlMjAlMjJodHRwcyUzQSUyRiUyRnJhdy5naXRodWJ1c2VyY29udGVudC5jb20lMkZDb21wVmlzJTJGbGF0ZW50LWRpZmZ1c2lvbiUyRm1haW4lMkZkYXRhJTJGaW5wYWludGluZ19leGFtcGxlcyUyRm92ZXJ0dXJlLWNyZWF0aW9ucy01c0k2ZlFnWUl1by5wbmclMjIlMEFtYXNrX3VybCUyMCUzRCUyMCUyMmh0dHBzJTNBJTJGJTJGcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSUyRkNvbXBWaXMlMkZsYXRlbnQtZGlmZnVzaW9uJTJGbWFpbiUyRmRhdGElMkZpbnBhaW50aW5nX2V4YW1wbGVzJTJGb3ZlcnR1cmUtY3JlYXRpb25zLTVzSTZmUWdZSXVvX21hc2sucG5nJTIyJTBBJTBBaW5pdF9pbWFnZSUyMCUzRCUyMGxvYWRfaW1hZ2UoaW1nX3VybCkucmVzaXplKCg1MTIlMkMlMjA1MTIpKSUwQW1hc2tfaW1hZ2UlMjAlM0QlMjBsb2FkX2ltYWdlKG1hc2tfdXJsKS5yZXNpemUoKDUxMiUyQyUyMDUxMikpJTBBJTBBcHJvbXB0JTIwJTNEJTIwJTIyRmFjZSUyMG9mJTIwYSUyMHllbGxvdyUyMGNhdCUyQyUyMGhpZ2glMjByZXNvbHV0aW9uJTJDJTIwc2l0dGluZyUyMG9uJTIwYSUyMHBhcmslMjBiZW5jaCUyMiUwQXJlcGFpbnRlZF9pbWFnZSUyMCUzRCUyMHBpcGVsaW5lKHByb21wdCUzRHByb21wdCUyQyUyMGltYWdlJTNEaW5pdF9pbWFnZSUyQyUyMG1hc2tfaW1hZ2UlM0RtYXNrX2ltYWdlKS5pbWFnZXMlNUIwJTVEJTBBcmVwYWludGVkX2ltYWdlLnNhdmUoJTIycmVwYWludGVkX2ltYWdlLnBuZyUyMiklMEElMEElMjMlMjBDb252ZXJ0JTIwbWFzayUyMHRvJTIwZ3JheXNjYWxlJTIwTnVtUHklMjBhcnJheSUwQW1hc2tfaW1hZ2VfYXJyJTIwJTNEJTIwbnAuYXJyYXkobWFza19pbWFnZS5jb252ZXJ0KCUyMkwlMjIpKSUwQSUyMyUyMEFkZCUyMGElMjBjaGFubmVsJTIwZGltZW5zaW9uJTIwdG8lMjB0aGUlMjBlbmQlMjBvZiUyMHRoZSUyMGdyYXlzY2FsZSUyMG1hc2slMEFtYXNrX2ltYWdlX2FyciUyMCUzRCUyMG1hc2tfaW1hZ2VfYXJyJTVCJTNBJTJDJTIwJTNBJTJDJTIwTm9uZSU1RCUwQSUyMyUyMEJpbmFyaXplJTIwdGhlJTIwbWFzayUzQSUyMDFzJTIwY29ycmVzcG9uZCUyMHRvJTIwdGhlJTIwcGl4ZWxzJTIwd2hpY2glMjBhcmUlMjByZXBhaW50ZWQlMEFtYXNrX2ltYWdlX2FyciUyMCUzRCUyMG1hc2tfaW1hZ2VfYXJyLmFzdHlwZShucC5mbG9hdDMyKSUyMCUyRiUyMDI1NS4wJTBBbWFza19pbWFnZV9hcnIlNUJtYXNrX2ltYWdlX2FyciUyMCUzQyUyMDAuNSU1RCUyMCUzRCUyMDAlMEFtYXNrX2ltYWdlX2FyciU1Qm1hc2tfaW1hZ2VfYXJyJTIwJTNFJTNEJTIwMC41JTVEJTIwJTNEJTIwMSUwQSUwQSUyMyUyMFRha2UlMjB0aGUlMjBtYXNrZWQlMjBwaXhlbHMlMjBmcm9tJTIwdGhlJTIwcmVwYWludGVkJTIwaW1hZ2UlMjBhbmQlMjB0aGUlMjB1bm1hc2tlZCUyMHBpeGVscyUyMGZyb20lMjB0aGUlMjBpbml0aWFsJTIwaW1hZ2UlMEF1bm1hc2tlZF91bmNoYW5nZWRfaW1hZ2VfYXJyJTIwJTNEJTIwKDElMjAtJTIwbWFza19pbWFnZV9hcnIpJTIwKiUyMGluaXRfaW1hZ2UlMjAlMkIlMjBtYXNrX2ltYWdlX2FyciUyMColMjByZXBhaW50ZWRfaW1hZ2UlMEF1bm1hc2tlZF91bmNoYW5nZWRfaW1hZ2UlMjAlM0QlMjBQSUwuSW1hZ2UuZnJvbWFycmF5KHVubWFza2VkX3VuY2hhbmdlZF9pbWFnZV9hcnIucm91bmQoKS5hc3R5cGUoJTIydWludDglMjIpKSUwQXVubWFza2VkX3VuY2hhbmdlZF9pbWFnZS5zYXZlKCUyMmZvcmNlX3VubWFza2VkX3VuY2hhbmdlZC5wbmclMjIp",highlighted:`<span class="hljs-keyword">import</span> PIL | |
| <span class="hljs-keyword">import</span> numpy <span class="hljs-keyword">as</span> np | |
| <span class="hljs-keyword">import</span> torch | |
| <span class="hljs-keyword">from</span> diffusers <span class="hljs-keyword">import</span> StableDiffusionInpaintPipeline | |
| <span class="hljs-keyword">from</span> diffusers.utils <span class="hljs-keyword">import</span> load_image | |
| device = <span class="hljs-string">"cuda"</span> | |
| pipeline = StableDiffusionInpaintPipeline.from_pretrained( | |
| <span class="hljs-string">"runwayml/stable-diffusion-inpainting"</span>, | |
| torch_dtype=torch.float16, | |
| ) | |
| pipeline = pipeline.to(device) | |
| img_url = <span class="hljs-string">"https://raw.githubusercontent.com/CompVis/latent-diffusion/main/data/inpainting_examples/overture-creations-5sI6fQgYIuo.png"</span> | |
| mask_url = <span class="hljs-string">"https://raw.githubusercontent.com/CompVis/latent-diffusion/main/data/inpainting_examples/overture-creations-5sI6fQgYIuo_mask.png"</span> | |
| init_image = load_image(img_url).resize((<span class="hljs-number">512</span>, <span class="hljs-number">512</span>)) | |
| mask_image = load_image(mask_url).resize((<span class="hljs-number">512</span>, <span class="hljs-number">512</span>)) | |
| prompt = <span class="hljs-string">"Face of a yellow cat, high resolution, sitting on a park bench"</span> | |
| repainted_image = pipeline(prompt=prompt, image=init_image, mask_image=mask_image).images[<span class="hljs-number">0</span>] | |
| repainted_image.save(<span class="hljs-string">"repainted_image.png"</span>) | |
| <span class="hljs-comment"># Convert mask to grayscale NumPy array</span> | |
| mask_image_arr = np.array(mask_image.convert(<span class="hljs-string">"L"</span>)) | |
| <span class="hljs-comment"># Add a channel dimension to the end of the grayscale mask</span> | |
| mask_image_arr = mask_image_arr[:, :, <span class="hljs-literal">None</span>] | |
| <span class="hljs-comment"># Binarize the mask: 1s correspond to the pixels which are repainted</span> | |
| mask_image_arr = mask_image_arr.astype(np.float32) / <span class="hljs-number">255.0</span> | |
| mask_image_arr[mask_image_arr < <span class="hljs-number">0.5</span>] = <span class="hljs-number">0</span> | |
| mask_image_arr[mask_image_arr >= <span class="hljs-number">0.5</span>] = <span class="hljs-number">1</span> | |
| <span class="hljs-comment"># Take the masked pixels from the repainted image and the unmasked pixels from the initial image</span> | |
| unmasked_unchanged_image_arr = (<span class="hljs-number">1</span> - mask_image_arr) * init_image + mask_image_arr * repainted_image | |
| unmasked_unchanged_image = PIL.Image.fromarray(unmasked_unchanged_image_arr.<span class="hljs-built_in">round</span>().astype(<span class="hljs-string">"uint8"</span>)) | |
| unmasked_unchanged_image.save(<span class="hljs-string">"force_unmasked_unchanged.png"</span>)`}}),{c(){u=s("meta"),M=p(),d=s("h1"),f=s("a"),pa=s("span"),j(F.$$.fragment),xa=p(),ma=s("span"),za=h("Text-guided image-inpainting"),Ua=p(),j(S.$$.fragment),Ta=p(),g=s("p"),Ha=h("The "),H=s("a"),Aa=h("StableDiffusionInpaintPipeline"),qa=h(" allows you to edit specific parts of an image by providing a mask and a text prompt. It uses a version of Stable Diffusion, like "),V=s("a"),ha=s("code"),Pa=h("runwayml/stable-diffusion-inpainting"),Ka=h(" specifically trained for inpainting tasks."),_a=p(),U=s("p"),La=h("Get started by loading an instance of the "),A=s("a"),Oa=h("StableDiffusionInpaintPipeline"),ae=h(":"),Wa=p(),j(Y.$$.fragment),ka=p(),q=s("p"),ee=h("Download an image and a mask of a dog which you\u2019ll eventually replace:"),Za=p(),j(C.$$.fragment),Ia=p(),P=s("p"),te=h("Now you can create a prompt to replace the mask with something else:"),ja=p(),j(R.$$.fragment),va=p(),T=s("table"),ca=s("thead"),y=s("tr"),K=s("th"),ua=s("code"),se=h("image"),ne=p(),L=s("th"),da=s("code"),le=h("mask_image"),ie=p(),O=s("th"),fa=s("code"),re=h("prompt"),oe=p(),aa=s("th"),pe=h("output"),me=p(),ya=s("tbody"),b=s("tr"),ea=s("td"),N=s("img"),he=p(),ta=s("td"),$=s("img"),ce=p(),sa=s("td"),ba=s("strong"),ga=s("em"),ue=h("Face of a yellow cat, high resolution, sitting on a park bench"),de=p(),na=s("td"),Q=s("img"),Ga=p(),j(_.$$.fragment),Ba=p(),la=s("p"),fe=h("Check out the Spaces below to try out image inpainting yourself!"),Ea=p(),w=s("iframe"),Xa=p(),J=s("h2"),W=s("a"),wa=s("span"),j(D.$$.fragment),ye=p(),Ja=s("span"),be=h("Preserving the Unmasked Area of the Image"),Fa=p(),k=s("p"),ge=h("Generally speaking, "),ia=s("a"),we=h("StableDiffusionInpaintPipeline"),Je=h(" (and other inpainting pipelines) will change the unmasked part of the image as well. If this behavior is undesirable, you can force the unmasked area to remain the same as follows:"),Sa=p(),j(x.$$.fragment),Va=p(),ra=s("p"),Me=h("Forcing the unmasked portion of the image to remain the same might result in some weird transitions between the unmasked and masked areas, since the model will typically change the masked and unmasked areas to make the transition more natural."),this.h()},l(a){const l=it('[data-svelte="svelte-1phssyn"]',document.head);u=n(l,"META",{name:!0,content:!0}),l.forEach(e),M=m(a),d=n(a,"H1",{class:!0});var z=i(d);f=n(z,"A",{id:!0,class:!0,href:!0});var ke=i(f);pa=n(ke,"SPAN",{});var Ze=i(pa);v(F.$$.fragment,Ze),Ze.forEach(e),ke.forEach(e),xa=m(z),ma=n(z,"SPAN",{});var Ie=i(ma);za=c(Ie,"Text-guided image-inpainting"),Ie.forEach(e),z.forEach(e),Ua=m(a),v(S.$$.fragment,a),Ta=m(a),g=n(a,"P",{});var oa=i(g);Ha=c(oa,"The "),H=n(oa,"A",{href:!0});var je=i(H);Aa=c(je,"StableDiffusionInpaintPipeline"),je.forEach(e),qa=c(oa," allows you to edit specific parts of an image by providing a mask and a text prompt. It uses a version of Stable Diffusion, like "),V=n(oa,"A",{href:!0,rel:!0});var ve=i(V);ha=n(ve,"CODE",{});var Ge=i(ha);Pa=c(Ge,"runwayml/stable-diffusion-inpainting"),Ge.forEach(e),ve.forEach(e),Ka=c(oa," specifically trained for inpainting tasks."),oa.forEach(e),_a=m(a),U=n(a,"P",{});var Ca=i(U);La=c(Ca,"Get started by loading an instance of the "),A=n(Ca,"A",{href:!0});var Be=i(A);Oa=c(Be,"StableDiffusionInpaintPipeline"),Be.forEach(e),ae=c(Ca,":"),Ca.forEach(e),Wa=m(a),v(Y.$$.fragment,a),ka=m(a),q=n(a,"P",{});var Ee=i(q);ee=c(Ee,"Download an image and a mask of a dog which you\u2019ll eventually replace:"),Ee.forEach(e),Za=m(a),v(C.$$.fragment,a),Ia=m(a),P=n(a,"P",{});var Xe=i(P);te=c(Xe,"Now you can create a prompt to replace the mask with something else:"),Xe.forEach(e),ja=m(a),v(R.$$.fragment,a),va=m(a),T=n(a,"TABLE",{});var Ra=i(T);ca=n(Ra,"THEAD",{});var Fe=i(ca);y=n(Fe,"TR",{});var Z=i(y);K=n(Z,"TH",{align:!0});var Se=i(K);ua=n(Se,"CODE",{});var Ve=i(ua);se=c(Ve,"image"),Ve.forEach(e),Se.forEach(e),ne=m(Z),L=n(Z,"TH",{align:!0});var Ye=i(L);da=n(Ye,"CODE",{});var Ce=i(da);le=c(Ce,"mask_image"),Ce.forEach(e),Ye.forEach(e),ie=m(Z),O=n(Z,"TH",{align:!0});var Re=i(O);fa=n(Re,"CODE",{});var Ne=i(fa);re=c(Ne,"prompt"),Ne.forEach(e),Re.forEach(e),oe=m(Z),aa=n(Z,"TH",{align:!0});var $e=i(aa);pe=c($e,"output"),$e.forEach(e),Z.forEach(e),Fe.forEach(e),me=m(Ra),ya=n(Ra,"TBODY",{});var Qe=i(ya);b=n(Qe,"TR",{});var I=i(b);ea=n(I,"TD",{align:!0});var De=i(ea);N=n(De,"IMG",{src:!0,alt:!0,width:!0}),De.forEach(e),he=m(I),ta=n(I,"TD",{align:!0});var xe=i(ta);$=n(xe,"IMG",{src:!0,alt:!0,width:!0}),xe.forEach(e),ce=m(I),sa=n(I,"TD",{align:!0});var ze=i(sa);ba=n(ze,"STRONG",{});var He=i(ba);ga=n(He,"EM",{});var Ae=i(ga);ue=c(Ae,"Face of a yellow cat, high resolution, sitting on a park bench"),Ae.forEach(e),He.forEach(e),ze.forEach(e),de=m(I),na=n(I,"TD",{align:!0});var qe=i(na);Q=n(qe,"IMG",{src:!0,alt:!0,width:!0}),qe.forEach(e),I.forEach(e),Qe.forEach(e),Ra.forEach(e),Ga=m(a),v(_.$$.fragment,a),Ba=m(a),la=n(a,"P",{});var Pe=i(la);fe=c(Pe,"Check out the Spaces below to try out image inpainting yourself!"),Pe.forEach(e),Ea=m(a),w=n(a,"IFRAME",{src:!0,frameborder:!0,width:!0,height:!0}),i(w).forEach(e),Xa=m(a),J=n(a,"H2",{class:!0});var Na=i(J);W=n(Na,"A",{id:!0,class:!0,href:!0});var Ke=i(W);wa=n(Ke,"SPAN",{});var Le=i(wa);v(D.$$.fragment,Le),Le.forEach(e),Ke.forEach(e),ye=m(Na),Ja=n(Na,"SPAN",{});var Oe=i(Ja);be=c(Oe,"Preserving the Unmasked Area of the Image"),Oe.forEach(e),Na.forEach(e),Fa=m(a),k=n(a,"P",{});var $a=i(k);ge=c($a,"Generally speaking, "),ia=n($a,"A",{href:!0});var at=i(ia);we=c(at,"StableDiffusionInpaintPipeline"),at.forEach(e),Je=c($a," (and other inpainting pipelines) will change the unmasked part of the image as well. If this behavior is undesirable, you can force the unmasked area to remain the same as follows:"),$a.forEach(e),Sa=m(a),v(x.$$.fragment,a),Va=m(a),ra=n(a,"P",{});var et=i(ra);Me=c(et,"Forcing the unmasked portion of the image to remain the same might result in some weird transitions between the unmasked and masked areas, since the model will typically change the masked and unmasked areas to make the transition more natural."),et.forEach(e),this.h()},h(){r(u,"name","hf:doc:metadata"),r(u,"content",JSON.stringify(ct)),r(f,"id","textguided-imageinpainting"),r(f,"class","header-link block pr-1.5 text-lg no-hover:hidden with-hover:absolute with-hover:p-1.5 with-hover:opacity-0 with-hover:group-hover:opacity-100 with-hover:right-full"),r(f,"href","#textguided-imageinpainting"),r(d,"class","relative group"),r(H,"href","/docs/diffusers/main/en/api/pipelines/stable_diffusion/inpaint#diffusers.StableDiffusionInpaintPipeline"),r(V,"href","https://huggingface.co/runwayml/stable-diffusion-inpainting"),r(V,"rel","nofollow"),r(A,"href","/docs/diffusers/main/en/api/pipelines/stable_diffusion/inpaint#diffusers.StableDiffusionInpaintPipeline"),r(K,"align","center"),r(L,"align","center"),r(O,"align","center"),r(aa,"align","right"),Qa(N.src,Ue="https://raw.githubusercontent.com/CompVis/latent-diffusion/main/data/inpainting_examples/overture-creations-5sI6fQgYIuo.png")||r(N,"src",Ue),r(N,"alt","drawing"),r(N,"width","250"),r(ea,"align","center"),Qa($.src,Te="https://raw.githubusercontent.com/CompVis/latent-diffusion/main/data/inpainting_examples/overture-creations-5sI6fQgYIuo_mask.png")||r($,"src",Te),r($,"alt","drawing"),r($,"width","250"),r(ta,"align","center"),r(sa,"align","center"),Qa(Q.src,_e="https://huggingface.co/datasets/hf-internal-testing/diffusers-images/resolve/main/in_paint/yellow_cat_sitting_on_a_park_bench.png")||r(Q,"src",_e),r(Q,"alt","drawing"),r(Q,"width","250"),r(na,"align","right"),Qa(w.src,We="https://runwayml-stable-diffusion-inpainting.hf.space")||r(w,"src",We),r(w,"frameborder","0"),r(w,"width","850"),r(w,"height","500"),r(W,"id","preserving-the-unmasked-area-of-the-image"),r(W,"class","header-link block pr-1.5 text-lg no-hover:hidden with-hover:absolute with-hover:p-1.5 with-hover:opacity-0 with-hover:group-hover:opacity-100 with-hover:right-full"),r(W,"href","#preserving-the-unmasked-area-of-the-image"),r(J,"class","relative group"),r(ia,"href","/docs/diffusers/main/en/api/pipelines/stable_diffusion/inpaint#diffusers.StableDiffusionInpaintPipeline")},m(a,l){t(document.head,u),o(a,M,l),o(a,d,l),t(d,f),t(f,pa),G(F,pa,null),t(d,xa),t(d,ma),t(ma,za),o(a,Ua,l),G(S,a,l),o(a,Ta,l),o(a,g,l),t(g,Ha),t(g,H),t(H,Aa),t(g,qa),t(g,V),t(V,ha),t(ha,Pa),t(g,Ka),o(a,_a,l),o(a,U,l),t(U,La),t(U,A),t(A,Oa),t(U,ae),o(a,Wa,l),G(Y,a,l),o(a,ka,l),o(a,q,l),t(q,ee),o(a,Za,l),G(C,a,l),o(a,Ia,l),o(a,P,l),t(P,te),o(a,ja,l),G(R,a,l),o(a,va,l),o(a,T,l),t(T,ca),t(ca,y),t(y,K),t(K,ua),t(ua,se),t(y,ne),t(y,L),t(L,da),t(da,le),t(y,ie),t(y,O),t(O,fa),t(fa,re),t(y,oe),t(y,aa),t(aa,pe),t(T,me),t(T,ya),t(ya,b),t(b,ea),t(ea,N),t(b,he),t(b,ta),t(ta,$),t(b,ce),t(b,sa),t(sa,ba),t(ba,ga),t(ga,ue),t(b,de),t(b,na),t(na,Q),o(a,Ga,l),G(_,a,l),o(a,Ba,l),o(a,la,l),t(la,fe),o(a,Ea,l),o(a,w,l),o(a,Xa,l),o(a,J,l),t(J,W),t(W,wa),G(D,wa,null),t(J,ye),t(J,Ja),t(Ja,be),o(a,Fa,l),o(a,k,l),t(k,ge),t(k,ia),t(ia,we),t(k,Je),o(a,Sa,l),G(x,a,l),o(a,Va,l),o(a,ra,l),t(ra,Me),Ya=!0},p(a,[l]){const z={};l&2&&(z.$$scope={dirty:l,ctx:a}),_.$set(z)},i(a){Ya||(B(F.$$.fragment,a),B(S.$$.fragment,a),B(Y.$$.fragment,a),B(C.$$.fragment,a),B(R.$$.fragment,a),B(_.$$.fragment,a),B(D.$$.fragment,a),B(x.$$.fragment,a),Ya=!0)},o(a){E(F.$$.fragment,a),E(S.$$.fragment,a),E(Y.$$.fragment,a),E(C.$$.fragment,a),E(R.$$.fragment,a),E(_.$$.fragment,a),E(D.$$.fragment,a),E(x.$$.fragment,a),Ya=!1},d(a){e(u),a&&e(M),a&&e(d),X(F),a&&e(Ua),X(S,a),a&&e(Ta),a&&e(g),a&&e(_a),a&&e(U),a&&e(Wa),X(Y,a),a&&e(ka),a&&e(q),a&&e(Za),X(C,a),a&&e(Ia),a&&e(P),a&&e(ja),X(R,a),a&&e(va),a&&e(T),a&&e(Ga),X(_,a),a&&e(Ba),a&&e(la),a&&e(Ea),a&&e(w),a&&e(Xa),a&&e(J),X(D),a&&e(Fa),a&&e(k),a&&e(Sa),X(x,a),a&&e(Va),a&&e(ra)}}}const ct={local:"textguided-imageinpainting",sections:[{local:"preserving-the-unmasked-area-of-the-image",title:"Preserving the Unmasked Area of the Image"}],title:"Text-guided image-inpainting"};function ut(Ma){return rt(()=>{new URLSearchParams(window.location.search).get("fw")}),[]}class wt extends st{constructor(u){super();nt(this,u,ut,ht,lt,{})}}export{wt as default,ct as metadata}; | |
Xet Storage Details
- Size:
- 22.1 kB
- Xet hash:
- 872155bc121a98526eb4fb972ea218a83e171ba694f1c89888a93cab59ecd108
·
Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.