Buckets:
| import{S as lf,i as af,s as sf,e as a,k as c,w as d,t as r,M as nf,c as s,d as l,m as u,a as i,x as f,h as p,b as o,N as j,G as t,g as m,y as h,q as g,o as y,B as M,v as of}from"../../chunks/vendor-hf-doc-builder.js";import{T as mc}from"../../chunks/Tip-hf-doc-builder.js";import{I as _}from"../../chunks/IconCopyLink-hf-doc-builder.js";import{C as w}from"../../chunks/CodeBlock-hf-doc-builder.js";import{D as rf}from"../../chunks/DocNotebookDropdown-hf-doc-builder.js";function pf(Je){let b,I,J,v,W,Z,U,G,k,T,V,F,$,rt;return{c(){b=a("p"),I=r("You\u2019ll notice throughout the guide, we use "),J=a("a"),v=r("enable_model_cpu_offload()"),W=r(" and "),Z=a("a"),U=r("enable_xformers_memory_efficient_attention()"),G=r(", to save memory and increase inference speed. If you\u2019re using PyTorch 2.0, then you don\u2019t need to call "),k=a("a"),T=r("enable_xformers_memory_efficient_attention()"),V=r(" on your pipeline because it\u2019ll already be using PyTorch 2.0\u2019s native "),F=a("a"),$=r("scaled-dot product attention"),rt=r("."),this.h()},l(R){b=s(R,"P",{});var B=i(b);I=p(B,"You\u2019ll notice throughout the guide, we use "),J=s(B,"A",{href:!0});var Ml=i(J);v=p(Ml,"enable_model_cpu_offload()"),Ml.forEach(l),W=p(B," and "),Z=s(B,"A",{href:!0});var pt=i(Z);U=p(pt,"enable_xformers_memory_efficient_attention()"),pt.forEach(l),G=p(B,", to save memory and increase inference speed. If you\u2019re using PyTorch 2.0, then you don\u2019t need to call "),k=s(B,"A",{href:!0});var D=i(k);T=p(D,"enable_xformers_memory_efficient_attention()"),D.forEach(l),V=p(B," on your pipeline because it\u2019ll already be using PyTorch 2.0\u2019s native "),F=s(B,"A",{href:!0});var bl=i(F);$=p(bl,"scaled-dot product attention"),bl.forEach(l),rt=p(B,"."),B.forEach(l),this.h()},h(){o(J,"href","/docs/diffusers/main/en/api/pipelines/stable_diffusion/gligen#diffusers.StableDiffusionGLIGENTextImagePipeline.enable_model_cpu_offload"),o(Z,"href","/docs/diffusers/main/en/api/pipelines/stable_diffusion/image_variation#diffusers.StableDiffusionImageVariationPipeline.enable_xformers_memory_efficient_attention"),o(k,"href","/docs/diffusers/main/en/api/pipelines/stable_diffusion/image_variation#diffusers.StableDiffusionImageVariationPipeline.enable_xformers_memory_efficient_attention"),o(F,"href","/optimization/torch2.0#scaled-dot-product-attention")},m(R,B){m(R,b,B),t(b,I),t(b,J),t(J,v),t(b,W),t(b,Z),t(Z,U),t(b,G),t(b,k),t(k,T),t(b,V),t(b,F),t(F,$),t(b,rt)},d(R){R&&l(b)}}}function mf(Je){let b,I,J,v,W;return{c(){b=a("p"),I=r("It is important to specify "),J=a("code"),v=r('output_type="latent"'),W=r(" in the pipeline to keep all the outputs in latent space to avoid an unnecessary decode-encode step. This only works if the chained pipelines are using the same VAE.")},l(Z){b=s(Z,"P",{});var U=i(b);I=p(U,"It is important to specify "),J=s(U,"CODE",{});var G=i(J);v=p(G,'output_type="latent"'),G.forEach(l),W=p(U," in the pipeline to keep all the outputs in latent space to avoid an unnecessary decode-encode step. This only works if the chained pipelines are using the same VAE."),U.forEach(l)},m(Z,U){m(Z,b,U),t(b,I),t(b,J),t(J,v),t(b,W)},d(Z){Z&&l(b)}}}function cf(Je){let b,I,J,v,W,Z,U,G;return{c(){b=a("p"),I=r("It is important to specify "),J=a("code"),v=r('output_type="latent"'),W=r(" in the pipeline to keep all the outputs in "),Z=a("em"),U=r("latent"),G=r(" space to avoid an unnecessary decode-encode step. This only works if the chained pipelines are using the same VAE.")},l(k){b=s(k,"P",{});var T=i(b);I=p(T,"It is important to specify "),J=s(T,"CODE",{});var V=i(J);v=p(V,'output_type="latent"'),V.forEach(l),W=p(T," in the pipeline to keep all the outputs in "),Z=s(T,"EM",{});var F=i(Z);U=p(F,"latent"),F.forEach(l),G=p(T," space to avoid an unnecessary decode-encode step. This only works if the chained pipelines are using the same VAE."),T.forEach(l)},m(k,T){m(k,b,T),t(b,I),t(b,J),t(J,v),t(b,W),t(b,Z),t(Z,U),t(b,G)},d(k){k&&l(b)}}}function uf(Je){let b,I,J,v,W,Z,U,G,k,T,V,F,$,rt,R,B,Ml,pt,D,bl,As,Jl,mt,_o,Zl,Io,Go,Hs,ct,qs,Ze,zs,ut,Ra,ko,Ps,dt,Ds,ft,Ya,Bo,Ls,ht,Ks,L,gt,wl,cc,Eo,vl,Xo,Vo,yt,jl,uc,Fo,Ul,xo,Os,K,we,Na,Mt,$o,Sa,Ro,ei,Y,Yo,bt,No,So,Jt,Qo,Co,Zt,Ao,Ho,ti,O,ve,Qa,wt,qo,Ca,zo,li,Wl,Po,ai,vt,si,ee,jt,Tl,dc,Do,_l,Lo,Ko,Ut,Il,fc,Oo,Gl,er,ii,te,je,Aa,Wt,tr,Ha,lr,ni,Ue,ar,kl,sr,ir,oi,Tt,ri,le,_t,Bl,hc,nr,El,or,rr,It,Xl,gc,pr,Vl,mr,pi,ae,We,qa,Gt,cr,za,ur,mi,Fl,dr,ci,xl,fr,ui,kt,di,se,Bt,$l,yc,hr,Rl,gr,yr,Et,Yl,Mc,Mr,Nl,br,fi,ie,Te,Pa,Xt,Jr,Da,Zr,hi,Sl,wr,gi,ne,_e,La,Vt,vr,Ka,jr,yi,Ft,Oa,Ur,Wr,Mi,Ie,oe,Tr,es,_r,Ir,ts,Gr,kr,Br,xt,Er,ls,Xr,Vr,bi,E,Fr,as,xr,$r,ss,Rr,Yr,is,Nr,Sr,ns,Qr,Cr,os,Ar,Hr,Ji,$t,Zi,C,Ge,Ql,bc,qr,Cl,zr,Pr,ke,Al,Jc,Dr,Hl,Lr,Kr,Be,ql,Zc,Or,zl,ep,wi,re,Ee,rs,Rt,tp,ps,lp,vi,N,ap,ms,sp,ip,cs,np,op,us,rp,pp,ji,X,mp,ds,cp,up,fs,dp,fp,hs,hp,gp,gs,yp,Mp,ys,bp,Jp,Ui,Yt,Wi,A,Xe,Pl,wc,Zp,Dl,wp,vp,Ve,Ll,vc,jp,Kl,Up,Wp,Fe,Ol,jc,Tp,ea,_p,Ti,pe,xe,Ms,Nt,Ip,bs,Gp,_i,$e,kp,Js,Bp,Ep,Ii,St,Gi,me,Re,ta,Uc,Xp,la,Vp,Fp,Ye,aa,Wc,xp,sa,$p,ki,ce,Ne,Zs,Qt,Rp,ws,Yp,Bi,ia,Np,Ei,ue,Se,vs,Ct,Sp,js,Qp,Xi,na,Cp,Vi,oa,Ap,Fi,At,xi,ra,Hp,$i,Ht,Ri,de,Qe,Us,qt,qp,Ws,zp,Yi,pa,Pp,Ni,ma,Dp,Si,zt,Qi,Ce,Ci,Ae,Lp,Pt,Kp,Op,Ai,Dt,Hi,He,em,Lt,tm,lm,qi,Kt,zi,fe,qe,Ts,Ot,am,_s,sm,Pi,ca,im,Di,ua,nm,Li,el,Ki,ze,Oi,da,om,en,tl,tn,fa,rm,ln,ll,an,he,Pe,Is,al,pm,Gs,mm,sn,De,cm,ks,um,dm,nn,ge,Le,Bs,sl,fm,Es,hm,on,q,gm,il,ym,Mm,ha,bm,Jm,rn,x,ga,Zm,wm,Xs,vm,jm,Vs,Um,Wm,Fs,Tm,_m,pn,nl,mn,ye,Ke,xs,ol,Im,$s,Gm,cn,ya,km,un,Ma,Bm,dn,rl,fn,Oe,Em,ba,Xm,Vm,hn,pl,gn,Ja,Fm,yn,ml,Mn,H,et,Za,Tc,xm,wa,$m,Rm,tt,va,_c,Ym,ja,Nm,Sm,lt,Ua,Ic,Qm,Wa,Cm,bn,at,Am,cl,Hm,qm,Jn,ul,Zn,dl,Rs,Gc,wn,Me,st,Ys,fl,zm,Ns,Pm,vn,z,Dm,Ta,Lm,Km,_a,Om,ec,jn,hl,Un,it,tc,Ia,Ss,lc,ac,Wn,gl,Tn,P,sc,Ga,ic,nc,ka,oc,rc,_n;return Z=new _({}),V=new rf({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/img2img.ipynb"},{label:"PyTorch",value:"https://colab.research.google.com/github/huggingface/notebooks/blob/main/diffusers_doc/en/pytorch/img2img.ipynb"},{label:"TensorFlow",value:"https://colab.research.google.com/github/huggingface/notebooks/blob/main/diffusers_doc/en/tensorflow/img2img.ipynb"},{label:"Mixed",value:"https://studiolab.sagemaker.aws/import/github/huggingface/notebooks/blob/main/diffusers_doc/en/img2img.ipynb"},{label:"PyTorch",value:"https://studiolab.sagemaker.aws/import/github/huggingface/notebooks/blob/main/diffusers_doc/en/pytorch/img2img.ipynb"},{label:"TensorFlow",value:"https://studiolab.sagemaker.aws/import/github/huggingface/notebooks/blob/main/diffusers_doc/en/tensorflow/img2img.ipynb"}]}}),ct=new w({props:{code:"ZnJvbSUyMGRpZmZ1c2VycyUyMGltcG9ydCUyMEF1dG9QaXBlbGluZUZvckltYWdlMkltYWdlJTBBZnJvbSUyMGRpZmZ1c2Vycy51dGlscyUyMGltcG9ydCUyMGxvYWRfaW1hZ2UlMEElMEFwaXBlbGluZSUyMCUzRCUyMEF1dG9QaXBlbGluZUZvckltYWdlMkltYWdlLmZyb21fcHJldHJhaW5lZCglMEElMjAlMjAlMjAlMjAlMjJrYW5kaW5za3ktY29tbXVuaXR5JTJGa2FuZGluc2t5LTItMi1kZWNvZGVyJTIyJTJDJTIwdG9yY2hfZHR5cGUlM0R0b3JjaC5mbG9hdDE2JTJDJTIwdmFyaWFudCUzRCUyMmZwMTYlMjIlMkMlMjB1c2Vfc2FmZXRlbnNvcnMlM0RUcnVlJTBBKS50byglMjJjdWRhJTIyKSUwQXBpcGVsaW5lLmVuYWJsZV9tb2RlbF9jcHVfb2ZmbG9hZCgpJTBBcGlwZWxpbmUuZW5hYmxlX3hmb3JtZXJzX21lbW9yeV9lZmZpY2llbnRfYXR0ZW50aW9uKCk=",highlighted:`<span class="hljs-keyword">from</span> diffusers <span class="hljs-keyword">import</span> AutoPipelineForImage2Image | |
| <span class="hljs-keyword">from</span> diffusers.utils <span class="hljs-keyword">import</span> load_image | |
| pipeline = AutoPipelineForImage2Image.from_pretrained( | |
| <span class="hljs-string">"kandinsky-community/kandinsky-2-2-decoder"</span>, torch_dtype=torch.float16, variant=<span class="hljs-string">"fp16"</span>, use_safetensors=<span class="hljs-literal">True</span> | |
| ).to(<span class="hljs-string">"cuda"</span>) | |
| pipeline.enable_model_cpu_offload() | |
| pipeline.enable_xformers_memory_efficient_attention()`}}),Ze=new mc({props:{$$slots:{default:[pf]},$$scope:{ctx:Je}}}),dt=new w({props:{code:"aW5pdF9pbWFnZSUyMCUzRCUyMGxvYWRfaW1hZ2UoJTIyaHR0cHMlM0ElMkYlMkZodWdnaW5nZmFjZS5jbyUyRmRhdGFzZXRzJTJGaHVnZ2luZ2ZhY2UlMkZkb2N1bWVudGF0aW9uLWltYWdlcyUyRnJlc29sdmUlMkZtYWluJTJGZGlmZnVzZXJzJTJGY2F0LnBuZyUyMik=",highlighted:'init_image = load_image(<span class="hljs-string">"https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/diffusers/cat.png"</span>)'}}),ht=new w({props:{code:"cHJvbXB0JTIwJTNEJTIwJTIyY2F0JTIwd2l6YXJkJTJDJTIwZ2FuZGFsZiUyQyUyMGxvcmQlMjBvZiUyMHRoZSUyMHJpbmdzJTJDJTIwZGV0YWlsZWQlMkMlMjBmYW50YXN5JTJDJTIwY3V0ZSUyQyUyMGFkb3JhYmxlJTJDJTIwUGl4YXIlMkMlMjBEaXNuZXklMkMlMjA4ayUyMiUwQWltYWdlJTIwJTNEJTIwcGlwZWxpbmUocHJvbXB0JTJDJTIwaW1hZ2UlM0Rpbml0X2ltYWdlKS5pbWFnZXMlNUIwJTVEJTBBaW1hZ2U=",highlighted:`prompt = <span class="hljs-string">"cat wizard, gandalf, lord of the rings, detailed, fantasy, cute, adorable, Pixar, Disney, 8k"</span> | |
| image = pipeline(prompt, image=init_image).images[<span class="hljs-number">0</span>] | |
| image`}}),Mt=new _({}),wt=new _({}),vt=new w({props:{code:"aW1wb3J0JTIwdG9yY2glMEFpbXBvcnQlMjByZXF1ZXN0cyUwQWZyb20lMjBQSUwlMjBpbXBvcnQlMjBJbWFnZSUwQWZyb20lMjBpbyUyMGltcG9ydCUyMEJ5dGVzSU8lMEFmcm9tJTIwZGlmZnVzZXJzJTIwaW1wb3J0JTIwQXV0b1BpcGVsaW5lRm9ySW1hZ2UySW1hZ2UlMEElMEFwaXBlbGluZSUyMCUzRCUyMEF1dG9QaXBlbGluZUZvckltYWdlMkltYWdlLmZyb21fcHJldHJhaW5lZCglMEElMjAlMjAlMjAlMjAlMjJydW53YXltbCUyRnN0YWJsZS1kaWZmdXNpb24tdjEtNSUyMiUyQyUyMHRvcmNoX2R0eXBlJTNEdG9yY2guZmxvYXQxNiUyQyUyMHZhcmlhbnQlM0QlMjJmcDE2JTIyJTJDJTIwdXNlX3NhZmV0ZW5zb3JzJTNEVHJ1ZSUwQSkudG8oJTIyY3VkYSUyMiklMEFwaXBlbGluZS5lbmFibGVfbW9kZWxfY3B1X29mZmxvYWQoKSUwQXBpcGVsaW5lLmVuYWJsZV94Zm9ybWVyc19tZW1vcnlfZWZmaWNpZW50X2F0dGVudGlvbigpJTBBJTBBJTIzJTIwcHJlcGFyZSUyMGltYWdlJTBBdXJsJTIwJTNEJTIwJTIyaHR0cHMlM0ElMkYlMkZodWdnaW5nZmFjZS5jbyUyRmRhdGFzZXRzJTJGaHVnZ2luZ2ZhY2UlMkZkb2N1bWVudGF0aW9uLWltYWdlcyUyRnJlc29sdmUlMkZtYWluJTJGZGlmZnVzZXJzJTJGaW1nMmltZy1pbml0LnBuZyUyMiUwQXJlc3BvbnNlJTIwJTNEJTIwcmVxdWVzdHMuZ2V0KHVybCklMEFpbml0X2ltYWdlJTIwJTNEJTIwSW1hZ2Uub3BlbihCeXRlc0lPKHJlc3BvbnNlLmNvbnRlbnQpKS5jb252ZXJ0KCUyMlJHQiUyMiklMEElMEFwcm9tcHQlMjAlM0QlMjAlMjJBc3Ryb25hdXQlMjBpbiUyMGElMjBqdW5nbGUlMkMlMjBjb2xkJTIwY29sb3IlMjBwYWxldHRlJTJDJTIwbXV0ZWQlMjBjb2xvcnMlMkMlMjBkZXRhaWxlZCUyQyUyMDhrJTIyJTBBJTBBJTIzJTIwcGFzcyUyMHByb21wdCUyMGFuZCUyMGltYWdlJTIwdG8lMjBwaXBlbGluZSUwQWltYWdlJTIwJTNEJTIwcGlwZWxpbmUocHJvbXB0JTJDJTIwaW1hZ2UlM0Rpbml0X2ltYWdlKS5pbWFnZXMlNUIwJTVEJTBBaW1hZ2U=",highlighted:`<span class="hljs-keyword">import</span> torch | |
| <span class="hljs-keyword">import</span> requests | |
| <span class="hljs-keyword">from</span> PIL <span class="hljs-keyword">import</span> Image | |
| <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> AutoPipelineForImage2Image | |
| pipeline = AutoPipelineForImage2Image.from_pretrained( | |
| <span class="hljs-string">"runwayml/stable-diffusion-v1-5"</span>, torch_dtype=torch.float16, variant=<span class="hljs-string">"fp16"</span>, use_safetensors=<span class="hljs-literal">True</span> | |
| ).to(<span class="hljs-string">"cuda"</span>) | |
| pipeline.enable_model_cpu_offload() | |
| pipeline.enable_xformers_memory_efficient_attention() | |
| <span class="hljs-comment"># prepare image</span> | |
| url = <span class="hljs-string">"https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/diffusers/img2img-init.png"</span> | |
| response = requests.get(url) | |
| init_image = Image.<span class="hljs-built_in">open</span>(BytesIO(response.content)).convert(<span class="hljs-string">"RGB"</span>) | |
| prompt = <span class="hljs-string">"Astronaut in a jungle, cold color palette, muted colors, detailed, 8k"</span> | |
| <span class="hljs-comment"># pass prompt and image to pipeline</span> | |
| image = pipeline(prompt, image=init_image).images[<span class="hljs-number">0</span>] | |
| image`}}),Wt=new _({}),Tt=new w({props:{code:"aW1wb3J0JTIwdG9yY2glMEFpbXBvcnQlMjByZXF1ZXN0cyUwQWZyb20lMjBQSUwlMjBpbXBvcnQlMjBJbWFnZSUwQWZyb20lMjBpbyUyMGltcG9ydCUyMEJ5dGVzSU8lMEFmcm9tJTIwZGlmZnVzZXJzJTIwaW1wb3J0JTIwQXV0b1BpcGVsaW5lRm9ySW1hZ2UySW1hZ2UlMEElMEFwaXBlbGluZSUyMCUzRCUyMEF1dG9QaXBlbGluZUZvckltYWdlMkltYWdlLmZyb21fcHJldHJhaW5lZCglMEElMjAlMjAlMjAlMjAlMjJzdGFiaWxpdHlhaSUyRnN0YWJsZS1kaWZmdXNpb24teGwtcmVmaW5lci0xLjAlMjIlMkMlMjB0b3JjaF9kdHlwZSUzRHRvcmNoLmZsb2F0MTYlMkMlMjB2YXJpYW50JTNEJTIyZnAxNiUyMiUyQyUyMHVzZV9zYWZldGVuc29ycyUzRFRydWUlMEEpLnRvKCUyMmN1ZGElMjIpJTBBcGlwZWxpbmUuZW5hYmxlX21vZGVsX2NwdV9vZmZsb2FkKCklMEFwaXBlbGluZS5lbmFibGVfeGZvcm1lcnNfbWVtb3J5X2VmZmljaWVudF9hdHRlbnRpb24oKSUwQSUwQSUyMyUyMHByZXBhcmUlMjBpbWFnZSUwQXVybCUyMCUzRCUyMCUyMmh0dHBzJTNBJTJGJTJGaHVnZ2luZ2ZhY2UuY28lMkZkYXRhc2V0cyUyRmh1Z2dpbmdmYWNlJTJGZG9jdW1lbnRhdGlvbi1pbWFnZXMlMkZyZXNvbHZlJTJGbWFpbiUyRmRpZmZ1c2VycyUyRmltZzJpbWctc2R4bC1pbml0LnBuZyUyMiUwQXJlc3BvbnNlJTIwJTNEJTIwcmVxdWVzdHMuZ2V0KHVybCklMEFpbml0X2ltYWdlJTIwJTNEJTIwSW1hZ2Uub3BlbihCeXRlc0lPKHJlc3BvbnNlLmNvbnRlbnQpKS5jb252ZXJ0KCUyMlJHQiUyMiklMEElMEFwcm9tcHQlMjAlM0QlMjAlMjJBc3Ryb25hdXQlMjBpbiUyMGElMjBqdW5nbGUlMkMlMjBjb2xkJTIwY29sb3IlMjBwYWxldHRlJTJDJTIwbXV0ZWQlMjBjb2xvcnMlMkMlMjBkZXRhaWxlZCUyQyUyMDhrJTIyJTBBJTBBJTIzJTIwcGFzcyUyMHByb21wdCUyMGFuZCUyMGltYWdlJTIwdG8lMjBwaXBlbGluZSUwQWltYWdlJTIwJTNEJTIwcGlwZWxpbmUocHJvbXB0JTJDJTIwaW1hZ2UlM0Rpbml0X2ltYWdlJTJDJTIwc3RyZW5ndGglM0QpLmltYWdlcyU1QjAlNUQlMEFpbWFnZQ==",highlighted:`<span class="hljs-keyword">import</span> torch | |
| <span class="hljs-keyword">import</span> requests | |
| <span class="hljs-keyword">from</span> PIL <span class="hljs-keyword">import</span> Image | |
| <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> AutoPipelineForImage2Image | |
| pipeline = AutoPipelineForImage2Image.from_pretrained( | |
| <span class="hljs-string">"stabilityai/stable-diffusion-xl-refiner-1.0"</span>, torch_dtype=torch.float16, variant=<span class="hljs-string">"fp16"</span>, use_safetensors=<span class="hljs-literal">True</span> | |
| ).to(<span class="hljs-string">"cuda"</span>) | |
| pipeline.enable_model_cpu_offload() | |
| pipeline.enable_xformers_memory_efficient_attention() | |
| <span class="hljs-comment"># prepare image</span> | |
| url = <span class="hljs-string">"https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/diffusers/img2img-sdxl-init.png"</span> | |
| response = requests.get(url) | |
| init_image = Image.<span class="hljs-built_in">open</span>(BytesIO(response.content)).convert(<span class="hljs-string">"RGB"</span>) | |
| prompt = <span class="hljs-string">"Astronaut in a jungle, cold color palette, muted colors, detailed, 8k"</span> | |
| <span class="hljs-comment"># pass prompt and image to pipeline</span> | |
| image = pipeline(prompt, image=init_image, strength=).images[<span class="hljs-number">0</span>] | |
| image`}}),Gt=new _({}),kt=new w({props:{code:"aW1wb3J0JTIwdG9yY2glMEFpbXBvcnQlMjByZXF1ZXN0cyUwQWZyb20lMjBQSUwlMjBpbXBvcnQlMjBJbWFnZSUwQWZyb20lMjBpbyUyMGltcG9ydCUyMEJ5dGVzSU8lMEFmcm9tJTIwZGlmZnVzZXJzJTIwaW1wb3J0JTIwQXV0b1BpcGVsaW5lRm9ySW1hZ2UySW1hZ2UlMEElMEFwaXBlbGluZSUyMCUzRCUyMEF1dG9QaXBlbGluZUZvckltYWdlMkltYWdlLmZyb21fcHJldHJhaW5lZCglMEElMjAlMjAlMjAlMjAlMjJrYW5kaW5za3ktY29tbXVuaXR5JTJGa2FuZGluc2t5LTItMi1kZWNvZGVyJTIyJTJDJTIwdG9yY2hfZHR5cGUlM0R0b3JjaC5mbG9hdDE2JTJDJTIwdmFyaWFudCUzRCUyMmZwMTYlMjIlMkMlMjB1c2Vfc2FmZXRlbnNvcnMlM0RUcnVlJTBBKS50byglMjJjdWRhJTIyKSUwQXBpcGVsaW5lLmVuYWJsZV9tb2RlbF9jcHVfb2ZmbG9hZCgpJTBBcGlwZWxpbmUuZW5hYmxlX3hmb3JtZXJzX21lbW9yeV9lZmZpY2llbnRfYXR0ZW50aW9uKCklMEElMEElMjMlMjBwcmVwYXJlJTIwaW1hZ2UlMEF1cmwlMjAlM0QlMjAlMjJodHRwcyUzQSUyRiUyRmh1Z2dpbmdmYWNlLmNvJTJGZGF0YXNldHMlMkZodWdnaW5nZmFjZSUyRmRvY3VtZW50YXRpb24taW1hZ2VzJTJGcmVzb2x2ZSUyRm1haW4lMkZkaWZmdXNlcnMlMkZpbWcyaW1nLWluaXQucG5nJTIyJTBBcmVzcG9uc2UlMjAlM0QlMjByZXF1ZXN0cy5nZXQodXJsKSUwQWluaXRfaW1hZ2UlMjAlM0QlMjBJbWFnZS5vcGVuKEJ5dGVzSU8ocmVzcG9uc2UuY29udGVudCkpLmNvbnZlcnQoJTIyUkdCJTIyKSUwQSUwQXByb21wdCUyMCUzRCUyMCUyMkFzdHJvbmF1dCUyMGluJTIwYSUyMGp1bmdsZSUyQyUyMGNvbGQlMjBjb2xvciUyMHBhbGV0dGUlMkMlMjBtdXRlZCUyMGNvbG9ycyUyQyUyMGRldGFpbGVkJTJDJTIwOGslMjIlMEElMEElMjMlMjBwYXNzJTIwcHJvbXB0JTIwYW5kJTIwaW1hZ2UlMjB0byUyMHBpcGVsaW5lJTBBaW1hZ2UlMjAlM0QlMjBwaXBlbGluZShwcm9tcHQlMkMlMjBpbWFnZSUzRGluaXRfaW1hZ2UpLmltYWdlcyU1QjAlNUQlMEFpbWFnZQ==",highlighted:`<span class="hljs-keyword">import</span> torch | |
| <span class="hljs-keyword">import</span> requests | |
| <span class="hljs-keyword">from</span> PIL <span class="hljs-keyword">import</span> Image | |
| <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> AutoPipelineForImage2Image | |
| pipeline = AutoPipelineForImage2Image.from_pretrained( | |
| <span class="hljs-string">"kandinsky-community/kandinsky-2-2-decoder"</span>, torch_dtype=torch.float16, variant=<span class="hljs-string">"fp16"</span>, use_safetensors=<span class="hljs-literal">True</span> | |
| ).to(<span class="hljs-string">"cuda"</span>) | |
| pipeline.enable_model_cpu_offload() | |
| pipeline.enable_xformers_memory_efficient_attention() | |
| <span class="hljs-comment"># prepare image</span> | |
| url = <span class="hljs-string">"https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/diffusers/img2img-init.png"</span> | |
| response = requests.get(url) | |
| init_image = Image.<span class="hljs-built_in">open</span>(BytesIO(response.content)).convert(<span class="hljs-string">"RGB"</span>) | |
| prompt = <span class="hljs-string">"Astronaut in a jungle, cold color palette, muted colors, detailed, 8k"</span> | |
| <span class="hljs-comment"># pass prompt and image to pipeline</span> | |
| image = pipeline(prompt, image=init_image).images[<span class="hljs-number">0</span>] | |
| image`}}),Xt=new _({}),Vt=new _({}),$t=new w({props:{code:"aW1wb3J0JTIwdG9yY2glMEFpbXBvcnQlMjByZXF1ZXN0cyUwQWZyb20lMjBQSUwlMjBpbXBvcnQlMjBJbWFnZSUwQWZyb20lMjBpbyUyMGltcG9ydCUyMEJ5dGVzSU8lMEFmcm9tJTIwZGlmZnVzZXJzJTIwaW1wb3J0JTIwQXV0b1BpcGVsaW5lRm9ySW1hZ2UySW1hZ2UlMEElMEFwaXBlbGluZSUyMCUzRCUyMEF1dG9QaXBlbGluZUZvckltYWdlMkltYWdlLmZyb21fcHJldHJhaW5lZCglMEElMjAlMjAlMjAlMjAlMjJydW53YXltbCUyRnN0YWJsZS1kaWZmdXNpb24tdjEtNSUyMiUyQyUyMHRvcmNoX2R0eXBlJTNEdG9yY2guZmxvYXQxNiUyQyUyMHZhcmlhbnQlM0QlMjJmcDE2JTIyJTJDJTIwdXNlX3NhZmV0ZW5zb3JzJTNEVHJ1ZSUwQSkudG8oJTIyY3VkYSUyMiklMEFwaXBlbGluZS5lbmFibGVfbW9kZWxfY3B1X29mZmxvYWQoKSUwQXBpcGVsaW5lLmVuYWJsZV94Zm9ybWVyc19tZW1vcnlfZWZmaWNpZW50X2F0dGVudGlvbigpJTBBJTBBJTIzJTIwcHJlcGFyZSUyMGltYWdlJTBBdXJsJTIwJTNEJTIwJTIyaHR0cHMlM0ElMkYlMkZodWdnaW5nZmFjZS5jbyUyRmRhdGFzZXRzJTJGaHVnZ2luZ2ZhY2UlMkZkb2N1bWVudGF0aW9uLWltYWdlcyUyRnJlc29sdmUlMkZtYWluJTJGZGlmZnVzZXJzJTJGaW1nMmltZy1pbml0LnBuZyUyMiUwQXJlc3BvbnNlJTIwJTNEJTIwcmVxdWVzdHMuZ2V0KHVybCklMEFpbml0X2ltYWdlJTIwJTNEJTIwSW1hZ2Uub3BlbihCeXRlc0lPKHJlc3BvbnNlLmNvbnRlbnQpKS5jb252ZXJ0KCUyMlJHQiUyMiklMEElMEFwcm9tcHQlMjAlM0QlMjAlMjJBc3Ryb25hdXQlMjBpbiUyMGElMjBqdW5nbGUlMkMlMjBjb2xkJTIwY29sb3IlMjBwYWxldHRlJTJDJTIwbXV0ZWQlMjBjb2xvcnMlMkMlMjBkZXRhaWxlZCUyQyUyMDhrJTIyJTBBaW1hZ2UlMjAlM0QlMjBpbml0X2ltYWdlJTBBJTBBJTIzJTIwcGFzcyUyMHByb21wdCUyMGFuZCUyMGltYWdlJTIwdG8lMjBwaXBlbGluZSUwQWltYWdlJTIwJTNEJTIwcGlwZWxpbmUocHJvbXB0JTJDJTIwaW1hZ2UlM0Rpbml0X2ltYWdlJTJDJTIwc3RyZW5ndGglM0QwLjgpLmltYWdlcyU1QjAlNUQlMEFpbWFnZQ==",highlighted:`<span class="hljs-keyword">import</span> torch | |
| <span class="hljs-keyword">import</span> requests | |
| <span class="hljs-keyword">from</span> PIL <span class="hljs-keyword">import</span> Image | |
| <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> AutoPipelineForImage2Image | |
| pipeline = AutoPipelineForImage2Image.from_pretrained( | |
| <span class="hljs-string">"runwayml/stable-diffusion-v1-5"</span>, torch_dtype=torch.float16, variant=<span class="hljs-string">"fp16"</span>, use_safetensors=<span class="hljs-literal">True</span> | |
| ).to(<span class="hljs-string">"cuda"</span>) | |
| pipeline.enable_model_cpu_offload() | |
| pipeline.enable_xformers_memory_efficient_attention() | |
| <span class="hljs-comment"># prepare image</span> | |
| url = <span class="hljs-string">"https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/diffusers/img2img-init.png"</span> | |
| response = requests.get(url) | |
| init_image = Image.<span class="hljs-built_in">open</span>(BytesIO(response.content)).convert(<span class="hljs-string">"RGB"</span>) | |
| prompt = <span class="hljs-string">"Astronaut in a jungle, cold color palette, muted colors, detailed, 8k"</span> | |
| image = init_image | |
| <span class="hljs-comment"># pass prompt and image to pipeline</span> | |
| image = pipeline(prompt, image=init_image, strength=<span class="hljs-number">0.8</span>).images[<span class="hljs-number">0</span>] | |
| image`}}),Rt=new _({}),Yt=new w({props:{code:"aW1wb3J0JTIwdG9yY2glMEFpbXBvcnQlMjByZXF1ZXN0cyUwQWZyb20lMjBQSUwlMjBpbXBvcnQlMjBJbWFnZSUwQWZyb20lMjBpbyUyMGltcG9ydCUyMEJ5dGVzSU8lMEFmcm9tJTIwZGlmZnVzZXJzJTIwaW1wb3J0JTIwQXV0b1BpcGVsaW5lRm9ySW1hZ2UySW1hZ2UlMEElMEFwaXBlbGluZSUyMCUzRCUyMEF1dG9QaXBlbGluZUZvckltYWdlMkltYWdlLmZyb21fcHJldHJhaW5lZCglMEElMjAlMjAlMjAlMjAlMjJydW53YXltbCUyRnN0YWJsZS1kaWZmdXNpb24tdjEtNSUyMiUyQyUyMHRvcmNoX2R0eXBlJTNEdG9yY2guZmxvYXQxNiUyQyUyMHZhcmlhbnQlM0QlMjJmcDE2JTIyJTJDJTIwdXNlX3NhZmV0ZW5zb3JzJTNEVHJ1ZSUwQSkudG8oJTIyY3VkYSUyMiklMEFwaXBlbGluZS5lbmFibGVfbW9kZWxfY3B1X29mZmxvYWQoKSUwQXBpcGVsaW5lLmVuYWJsZV94Zm9ybWVyc19tZW1vcnlfZWZmaWNpZW50X2F0dGVudGlvbigpJTBBJTBBJTIzJTIwcHJlcGFyZSUyMGltYWdlJTBBdXJsJTIwJTNEJTIwJTIyaHR0cHMlM0ElMkYlMkZodWdnaW5nZmFjZS5jbyUyRmRhdGFzZXRzJTJGaHVnZ2luZ2ZhY2UlMkZkb2N1bWVudGF0aW9uLWltYWdlcyUyRnJlc29sdmUlMkZtYWluJTJGZGlmZnVzZXJzJTJGaW1nMmltZy1pbml0LnBuZyUyMiUwQXJlc3BvbnNlJTIwJTNEJTIwcmVxdWVzdHMuZ2V0KHVybCklMEFpbml0X2ltYWdlJTIwJTNEJTIwSW1hZ2Uub3BlbihCeXRlc0lPKHJlc3BvbnNlLmNvbnRlbnQpKS5jb252ZXJ0KCUyMlJHQiUyMiklMEElMEFwcm9tcHQlMjAlM0QlMjAlMjJBc3Ryb25hdXQlMjBpbiUyMGElMjBqdW5nbGUlMkMlMjBjb2xkJTIwY29sb3IlMjBwYWxldHRlJTJDJTIwbXV0ZWQlMjBjb2xvcnMlMkMlMjBkZXRhaWxlZCUyQyUyMDhrJTIyJTBBJTBBJTIzJTIwcGFzcyUyMHByb21wdCUyMGFuZCUyMGltYWdlJTIwdG8lMjBwaXBlbGluZSUwQWltYWdlJTIwJTNEJTIwcGlwZWxpbmUocHJvbXB0JTJDJTIwaW1hZ2UlM0Rpbml0X2ltYWdlJTJDJTIwZ3VpZGFuY2Vfc2NhbGUlM0Q4LjApLmltYWdlcyU1QjAlNUQlMEFpbWFnZQ==",highlighted:`<span class="hljs-keyword">import</span> torch | |
| <span class="hljs-keyword">import</span> requests | |
| <span class="hljs-keyword">from</span> PIL <span class="hljs-keyword">import</span> Image | |
| <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> AutoPipelineForImage2Image | |
| pipeline = AutoPipelineForImage2Image.from_pretrained( | |
| <span class="hljs-string">"runwayml/stable-diffusion-v1-5"</span>, torch_dtype=torch.float16, variant=<span class="hljs-string">"fp16"</span>, use_safetensors=<span class="hljs-literal">True</span> | |
| ).to(<span class="hljs-string">"cuda"</span>) | |
| pipeline.enable_model_cpu_offload() | |
| pipeline.enable_xformers_memory_efficient_attention() | |
| <span class="hljs-comment"># prepare image</span> | |
| url = <span class="hljs-string">"https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/diffusers/img2img-init.png"</span> | |
| response = requests.get(url) | |
| init_image = Image.<span class="hljs-built_in">open</span>(BytesIO(response.content)).convert(<span class="hljs-string">"RGB"</span>) | |
| prompt = <span class="hljs-string">"Astronaut in a jungle, cold color palette, muted colors, detailed, 8k"</span> | |
| <span class="hljs-comment"># pass prompt and image to pipeline</span> | |
| image = pipeline(prompt, image=init_image, guidance_scale=<span class="hljs-number">8.0</span>).images[<span class="hljs-number">0</span>] | |
| image`}}),Nt=new _({}),St=new w({props:{code:"aW1wb3J0JTIwdG9yY2glMEFpbXBvcnQlMjByZXF1ZXN0cyUwQWZyb20lMjBQSUwlMjBpbXBvcnQlMjBJbWFnZSUwQWZyb20lMjBpbyUyMGltcG9ydCUyMEJ5dGVzSU8lMEFmcm9tJTIwZGlmZnVzZXJzJTIwaW1wb3J0JTIwQXV0b1BpcGVsaW5lRm9ySW1hZ2UySW1hZ2UlMEElMEFwaXBlbGluZSUyMCUzRCUyMEF1dG9QaXBlbGluZUZvckltYWdlMkltYWdlLmZyb21fcHJldHJhaW5lZCglMEElMjAlMjAlMjAlMjAlMjJzdGFiaWxpdHlhaSUyRnN0YWJsZS1kaWZmdXNpb24teGwtcmVmaW5lci0xLjAlMjIlMkMlMjB0b3JjaF9kdHlwZSUzRHRvcmNoLmZsb2F0MTYlMkMlMjB2YXJpYW50JTNEJTIyZnAxNiUyMiUyQyUyMHVzZV9zYWZldGVuc29ycyUzRFRydWUlMEEpLnRvKCUyMmN1ZGElMjIpJTBBcGlwZWxpbmUuZW5hYmxlX21vZGVsX2NwdV9vZmZsb2FkKCklMEFwaXBlbGluZS5lbmFibGVfeGZvcm1lcnNfbWVtb3J5X2VmZmljaWVudF9hdHRlbnRpb24oKSUwQSUwQSUyMyUyMHByZXBhcmUlMjBpbWFnZSUwQXVybCUyMCUzRCUyMCUyMmh0dHBzJTNBJTJGJTJGaHVnZ2luZ2ZhY2UuY28lMkZkYXRhc2V0cyUyRmh1Z2dpbmdmYWNlJTJGZG9jdW1lbnRhdGlvbi1pbWFnZXMlMkZyZXNvbHZlJTJGbWFpbiUyRmRpZmZ1c2VycyUyRmltZzJpbWctaW5pdC5wbmclMjIlMEFyZXNwb25zZSUyMCUzRCUyMHJlcXVlc3RzLmdldCh1cmwpJTBBaW5pdF9pbWFnZSUyMCUzRCUyMEltYWdlLm9wZW4oQnl0ZXNJTyhyZXNwb25zZS5jb250ZW50KSkuY29udmVydCglMjJSR0IlMjIpJTBBJTBBcHJvbXB0JTIwJTNEJTIwJTIyQXN0cm9uYXV0JTIwaW4lMjBhJTIwanVuZ2xlJTJDJTIwY29sZCUyMGNvbG9yJTIwcGFsZXR0ZSUyQyUyMG11dGVkJTIwY29sb3JzJTJDJTIwZGV0YWlsZWQlMkMlMjA4ayUyMiUwQW5lZ2F0aXZlX3Byb21wdCUyMCUzRCUyMCUyMnVnbHklMkMlMjBkZWZvcm1lZCUyQyUyMGRpc2ZpZ3VyZWQlMkMlMjBwb29yJTIwZGV0YWlscyUyQyUyMGJhZCUyMGFuYXRvbXklMjIlMEElMEElMjMlMjBwYXNzJTIwcHJvbXB0JTIwYW5kJTIwaW1hZ2UlMjB0byUyMHBpcGVsaW5lJTBBaW1hZ2UlMjAlM0QlMjBwaXBlbGluZShwcm9tcHQlMkMlMjBuZWdhdGl2ZV9wcm9tcHQlM0RuZWdhdGl2ZV9wcm9tcHQlMkMlMjBpbWFnZSUzRGluaXRfaW1hZ2UpLmltYWdlcyU1QjAlNUQlMEFpbWFnZQ==",highlighted:`<span class="hljs-keyword">import</span> torch | |
| <span class="hljs-keyword">import</span> requests | |
| <span class="hljs-keyword">from</span> PIL <span class="hljs-keyword">import</span> Image | |
| <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> AutoPipelineForImage2Image | |
| pipeline = AutoPipelineForImage2Image.from_pretrained( | |
| <span class="hljs-string">"stabilityai/stable-diffusion-xl-refiner-1.0"</span>, torch_dtype=torch.float16, variant=<span class="hljs-string">"fp16"</span>, use_safetensors=<span class="hljs-literal">True</span> | |
| ).to(<span class="hljs-string">"cuda"</span>) | |
| pipeline.enable_model_cpu_offload() | |
| pipeline.enable_xformers_memory_efficient_attention() | |
| <span class="hljs-comment"># prepare image</span> | |
| url = <span class="hljs-string">"https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/diffusers/img2img-init.png"</span> | |
| response = requests.get(url) | |
| init_image = Image.<span class="hljs-built_in">open</span>(BytesIO(response.content)).convert(<span class="hljs-string">"RGB"</span>) | |
| prompt = <span class="hljs-string">"Astronaut in a jungle, cold color palette, muted colors, detailed, 8k"</span> | |
| negative_prompt = <span class="hljs-string">"ugly, deformed, disfigured, poor details, bad anatomy"</span> | |
| <span class="hljs-comment"># pass prompt and image to pipeline</span> | |
| image = pipeline(prompt, negative_prompt=negative_prompt, image=init_image).images[<span class="hljs-number">0</span>] | |
| image`}}),Qt=new _({}),Ct=new _({}),At=new w({props:{code:"ZnJvbSUyMGRpZmZ1c2VycyUyMGltcG9ydCUyMEF1dG9QaXBlbGluZUZvclRleHQySW1hZ2UlMkMlMjBBdXRvUGlwZWxpbmVGb3JJbWFnZTJJbWFnZSUwQWltcG9ydCUyMHRvcmNoJTBBJTBBcGlwZWxpbmUlMjAlM0QlMjBBdXRvUGlwZWxpbmVGb3JUZXh0MkltYWdlLmZyb21fcHJldHJhaW5lZCglMEElMjAlMjAlMjAlMjAlMjJydW53YXltbCUyRnN0YWJsZS1kaWZmdXNpb24tdjEtNSUyMiUyQyUyMHRvcmNoX2R0eXBlJTNEdG9yY2guZmxvYXQxNiUyQyUyMHZhcmlhbnQlM0QlMjJmcDE2JTIyJTJDJTIwdXNlX3NhZmV0ZW5zb3JzJTNEVHJ1ZSUwQSkudG8oJTIyY3VkYSUyMiklMEFwaXBlbGluZS5lbmFibGVfbW9kZWxfY3B1X29mZmxvYWQoKSUwQXBpcGVsaW5lLmVuYWJsZV94Zm9ybWVyc19tZW1vcnlfZWZmaWNpZW50X2F0dGVudGlvbigpJTBBJTBBaW1hZ2UlMjAlM0QlMjBwaXBlbGluZSglMjJBc3Ryb25hdXQlMjBpbiUyMGElMjBqdW5nbGUlMkMlMjBjb2xkJTIwY29sb3IlMjBwYWxldHRlJTJDJTIwbXV0ZWQlMjBjb2xvcnMlMkMlMjBkZXRhaWxlZCUyQyUyMDhrJTIyKS5pbWFnZXMlNUIwJTVE",highlighted:`<span class="hljs-keyword">from</span> diffusers <span class="hljs-keyword">import</span> AutoPipelineForText2Image, AutoPipelineForImage2Image | |
| <span class="hljs-keyword">import</span> torch | |
| pipeline = AutoPipelineForText2Image.from_pretrained( | |
| <span class="hljs-string">"runwayml/stable-diffusion-v1-5"</span>, torch_dtype=torch.float16, variant=<span class="hljs-string">"fp16"</span>, use_safetensors=<span class="hljs-literal">True</span> | |
| ).to(<span class="hljs-string">"cuda"</span>) | |
| pipeline.enable_model_cpu_offload() | |
| pipeline.enable_xformers_memory_efficient_attention() | |
| image = pipeline(<span class="hljs-string">"Astronaut in a jungle, cold color palette, muted colors, detailed, 8k"</span>).images[<span class="hljs-number">0</span>]`}}),Ht=new w({props:{code:"cGlwZWxpbmUlMjAlM0QlMjBBdXRvUGlwZWxpbmVGb3JJbWFnZTJJbWFnZS5mcm9tX3ByZXRyYWluZWQoJTBBJTIwJTIwJTIwJTIwJTIya2FuZGluc2t5LWNvbW11bml0eSUyRmthbmRpbnNreS0yLTItZGVjb2RlciUyMiUyQyUyMHRvcmNoX2R0eXBlJTNEdG9yY2guZmxvYXQxNiUyQyUyMHZhcmlhbnQlM0QlMjJmcDE2JTIyJTJDJTIwdXNlX3NhZmV0ZW5zb3JzJTNEVHJ1ZSUwQSkudG8oJTIyY3VkYSUyMiklMEFwaXBlbGluZS5lbmFibGVfbW9kZWxfY3B1X29mZmxvYWQoKSUwQXBpcGVsaW5lLmVuYWJsZV94Zm9ybWVyc19tZW1vcnlfZWZmaWNpZW50X2F0dGVudGlvbigpJTBBJTBBaW1hZ2UlMjAlM0QlMjBwaXBlbGluZSglMjJBc3Ryb25hdXQlMjBpbiUyMGElMjBqdW5nbGUlMkMlMjBjb2xkJTIwY29sb3IlMjBwYWxldHRlJTJDJTIwbXV0ZWQlMjBjb2xvcnMlMkMlMjBkZXRhaWxlZCUyQyUyMDhrJTIyJTJDJTIwaW1hZ2UlM0RpbWFnZSkuaW1hZ2VzJTVCMCU1RCUwQWltYWdl",highlighted:`pipeline = AutoPipelineForImage2Image.from_pretrained( | |
| <span class="hljs-string">"kandinsky-community/kandinsky-2-2-decoder"</span>, torch_dtype=torch.float16, variant=<span class="hljs-string">"fp16"</span>, use_safetensors=<span class="hljs-literal">True</span> | |
| ).to(<span class="hljs-string">"cuda"</span>) | |
| pipeline.enable_model_cpu_offload() | |
| pipeline.enable_xformers_memory_efficient_attention() | |
| image = pipeline(<span class="hljs-string">"Astronaut in a jungle, cold color palette, muted colors, detailed, 8k"</span>, image=image).images[<span class="hljs-number">0</span>] | |
| image`}}),qt=new _({}),zt=new w({props:{code:"aW1wb3J0JTIwdG9yY2glMEFpbXBvcnQlMjByZXF1ZXN0cyUwQWZyb20lMjBQSUwlMjBpbXBvcnQlMjBJbWFnZSUwQWZyb20lMjBpbyUyMGltcG9ydCUyMEJ5dGVzSU8lMEFmcm9tJTIwZGlmZnVzZXJzJTIwaW1wb3J0JTIwQXV0b1BpcGVsaW5lRm9ySW1hZ2UySW1hZ2UlMEElMEFwaXBlbGluZSUyMCUzRCUyMEF1dG9QaXBlbGluZUZvckltYWdlMkltYWdlLmZyb21fcHJldHJhaW5lZCglMEElMjAlMjAlMjAlMjAlMjJydW53YXltbCUyRnN0YWJsZS1kaWZmdXNpb24tdjEtNSUyMiUyQyUyMHRvcmNoX2R0eXBlJTNEdG9yY2guZmxvYXQxNiUyQyUyMHZhcmlhbnQlM0QlMjJmcDE2JTIyJTJDJTIwdXNlX3NhZmV0ZW5zb3JzJTNEVHJ1ZSUwQSkudG8oJTIyY3VkYSUyMiklMEFwaXBlbGluZS5lbmFibGVfbW9kZWxfY3B1X29mZmxvYWQoKSUwQXBpcGVsaW5lLmVuYWJsZV94Zm9ybWVyc19tZW1vcnlfZWZmaWNpZW50X2F0dGVudGlvbigpJTBBJTBBJTIzJTIwcHJlcGFyZSUyMGltYWdlJTBBdXJsJTIwJTNEJTIwJTIyaHR0cHMlM0ElMkYlMkZodWdnaW5nZmFjZS5jbyUyRmRhdGFzZXRzJTJGaHVnZ2luZ2ZhY2UlMkZkb2N1bWVudGF0aW9uLWltYWdlcyUyRnJlc29sdmUlMkZtYWluJTJGZGlmZnVzZXJzJTJGaW1nMmltZy1pbml0LnBuZyUyMiUwQXJlc3BvbnNlJTIwJTNEJTIwcmVxdWVzdHMuZ2V0KHVybCklMEFpbml0X2ltYWdlJTIwJTNEJTIwSW1hZ2Uub3BlbihCeXRlc0lPKHJlc3BvbnNlLmNvbnRlbnQpKS5jb252ZXJ0KCUyMlJHQiUyMiklMEElMEFwcm9tcHQlMjAlM0QlMjAlMjJBc3Ryb25hdXQlMjBpbiUyMGElMjBqdW5nbGUlMkMlMjBjb2xkJTIwY29sb3IlMjBwYWxldHRlJTJDJTIwbXV0ZWQlMjBjb2xvcnMlMkMlMjBkZXRhaWxlZCUyQyUyMDhrJTIyJTBBJTBBJTIzJTIwcGFzcyUyMHByb21wdCUyMGFuZCUyMGltYWdlJTIwdG8lMjBwaXBlbGluZSUwQWltYWdlJTIwJTNEJTIwcGlwZWxpbmUocHJvbXB0JTJDJTIwaW1hZ2UlM0Rpbml0X2ltYWdlJTJDJTIwb3V0cHV0X3R5cGUlM0QlMjJsYXRlbnQlMjIpLmltYWdlcyU1QjAlNUQ=",highlighted:`<span class="hljs-keyword">import</span> torch | |
| <span class="hljs-keyword">import</span> requests | |
| <span class="hljs-keyword">from</span> PIL <span class="hljs-keyword">import</span> Image | |
| <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> AutoPipelineForImage2Image | |
| pipeline = AutoPipelineForImage2Image.from_pretrained( | |
| <span class="hljs-string">"runwayml/stable-diffusion-v1-5"</span>, torch_dtype=torch.float16, variant=<span class="hljs-string">"fp16"</span>, use_safetensors=<span class="hljs-literal">True</span> | |
| ).to(<span class="hljs-string">"cuda"</span>) | |
| pipeline.enable_model_cpu_offload() | |
| pipeline.enable_xformers_memory_efficient_attention() | |
| <span class="hljs-comment"># prepare image</span> | |
| url = <span class="hljs-string">"https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/diffusers/img2img-init.png"</span> | |
| response = requests.get(url) | |
| init_image = Image.<span class="hljs-built_in">open</span>(BytesIO(response.content)).convert(<span class="hljs-string">"RGB"</span>) | |
| prompt = <span class="hljs-string">"Astronaut in a jungle, cold color palette, muted colors, detailed, 8k"</span> | |
| <span class="hljs-comment"># pass prompt and image to pipeline</span> | |
| image = pipeline(prompt, image=init_image, output_type=<span class="hljs-string">"latent"</span>).images[<span class="hljs-number">0</span>]`}}),Ce=new mc({props:{$$slots:{default:[mf]},$$scope:{ctx:Je}}}),Dt=new w({props:{code:"cGlwZWxuZSUyMCUzRCUyMEF1dG9QaXBlbGluZUZvckltYWdlMkltYWdlLmZyb21fcHJldHJhaW5lZCglMEElMjAlMjAlMjAlMjAlMjJvZ2thbHUlMkZDb21pYy1EaWZmdXNpb24lMjIlMkMlMjB0b3JjaF9kdHlwZSUzRHRvcmNoLmZsb2F0MTYlMkMlMjB2YXJpYW50JTNEJTIyZnAxNiUyMiUyQyUyMHVzZV9zYWZldGVuc29ycyUzRFRydWUlMEEpLnRvKCUyMmN1ZGElMjIpJTBBcGlwZWxpbmUuZW5hYmxlX21vZGVsX2NwdV9vZmZsb2FkKCklMEFwaXBlbGluZS5lbmFibGVfeGZvcm1lcnNfbWVtb3J5X2VmZmljaWVudF9hdHRlbnRpb24oKSUwQSUwQSUyMyUyMG5lZWQlMjB0byUyMGluY2x1ZGUlMjB0aGUlMjB0b2tlbiUyMCUyMmNoYXJsaWVibyUyMGFydHN0eWxlJTIyJTIwaW4lMjB0aGUlMjBwcm9tcHQlMjB0byUyMHVzZSUyMHRoaXMlMjBjaGVja3BvaW50JTBBaW1hZ2UlMjAlM0QlMjBwaXBlbGluZSglMjJBc3Ryb25hdXQlMjBpbiUyMGElMjBqdW5nbGUlMkMlMjBjaGFybGllYm8lMjBhcnRzdHlsZSUyMiUyQyUyMGltYWdlJTNEaW1hZ2UlMkMlMjBvdXRwdXRfdHlwZSUzRCUyMmxhdGVudCUyMikuaW1hZ2VzJTVCMCU1RA==",highlighted:`pipelne = AutoPipelineForImage2Image.from_pretrained( | |
| <span class="hljs-string">"ogkalu/Comic-Diffusion"</span>, torch_dtype=torch.float16, variant=<span class="hljs-string">"fp16"</span>, use_safetensors=<span class="hljs-literal">True</span> | |
| ).to(<span class="hljs-string">"cuda"</span>) | |
| pipeline.enable_model_cpu_offload() | |
| pipeline.enable_xformers_memory_efficient_attention() | |
| <span class="hljs-comment"># need to include the token "charliebo artstyle" in the prompt to use this checkpoint</span> | |
| image = pipeline(<span class="hljs-string">"Astronaut in a jungle, charliebo artstyle"</span>, image=image, output_type=<span class="hljs-string">"latent"</span>).images[<span class="hljs-number">0</span>]`}}),Kt=new w({props:{code:"cGlwZWxpbmUlMjAlM0QlMjBBdXRvUGlwZWxpbmVGb3JJbWFnZTJJbWFnZS5mcm9tX3ByZXRyYWluZWQoJTBBJTIwJTIwJTIwJTIwJTIya29oYmFueWUlMkZwaXhlbC1hcnQtc3R5bGUlMjIlMkMlMjB0b3JjaF9kdHlwZSUzRHRvcmNoLmZsb2F0MTYlMkMlMjB2YXJpYW50JTNEJTIyZnAxNiUyMiUyQyUyMHVzZV9zYWZldGVuc29ycyUzRFRydWUlMEEpLnRvKCUyMmN1ZGElMjIpJTBBcGlwZWxpbmUuZW5hYmxlX21vZGVsX2NwdV9vZmZsb2FkKCklMEFwaXBlbGluZS5lbmFibGVfeGZvcm1lcnNfbWVtb3J5X2VmZmljaWVudF9hdHRlbnRpb24oKSUwQSUwQSUyMyUyMG5lZWQlMjB0byUyMGluY2x1ZGUlMjB0aGUlMjB0b2tlbiUyMCUyMnBpeGVsYXJ0c3R5bGUlMjIlMjBpbiUyMHRoZSUyMHByb21wdCUyMHRvJTIwdXNlJTIwdGhpcyUyMGNoZWNrcG9pbnQlMEFpbWFnZSUyMCUzRCUyMHBpcGVsaW5lKCUyMkFzdHJvbmF1dCUyMGluJTIwYSUyMGp1bmdsZSUyQyUyMHBpeGVsYXJ0c3R5bGUlMjIlMkMlMjBpbWFnZSUzRGltYWdlKS5pbWFnZXMlNUIwJTVEJTBBaW1hZ2U=",highlighted:`pipeline = AutoPipelineForImage2Image.from_pretrained( | |
| <span class="hljs-string">"kohbanye/pixel-art-style"</span>, torch_dtype=torch.float16, variant=<span class="hljs-string">"fp16"</span>, use_safetensors=<span class="hljs-literal">True</span> | |
| ).to(<span class="hljs-string">"cuda"</span>) | |
| pipeline.enable_model_cpu_offload() | |
| pipeline.enable_xformers_memory_efficient_attention() | |
| <span class="hljs-comment"># need to include the token "pixelartstyle" in the prompt to use this checkpoint</span> | |
| image = pipeline(<span class="hljs-string">"Astronaut in a jungle, pixelartstyle"</span>, image=image).images[<span class="hljs-number">0</span>] | |
| image`}}),Ot=new _({}),el=new w({props:{code:"aW1wb3J0JTIwdG9yY2glMEFpbXBvcnQlMjByZXF1ZXN0cyUwQWZyb20lMjBQSUwlMjBpbXBvcnQlMjBJbWFnZSUwQWZyb20lMjBpbyUyMGltcG9ydCUyMEJ5dGVzSU8lMEFmcm9tJTIwZGlmZnVzZXJzJTIwaW1wb3J0JTIwQXV0b1BpcGVsaW5lRm9ySW1hZ2UySW1hZ2UlMEElMEFwaXBlbGluZSUyMCUzRCUyMEF1dG9QaXBlbGluZUZvckltYWdlMkltYWdlLmZyb21fcHJldHJhaW5lZCglMEElMjAlMjAlMjAlMjAlMjJydW53YXltbCUyRnN0YWJsZS1kaWZmdXNpb24tdjEtNSUyMiUyQyUyMHRvcmNoX2R0eXBlJTNEdG9yY2guZmxvYXQxNiUyQyUyMHZhcmlhbnQlM0QlMjJmcDE2JTIyJTJDJTIwdXNlX3NhZmV0ZW5zb3JzJTNEVHJ1ZSUwQSkudG8oJTIyY3VkYSUyMiklMEFwaXBlbGluZS5lbmFibGVfbW9kZWxfY3B1X29mZmxvYWQoKSUwQXBpcGVsaW5lLmVuYWJsZV94Zm9ybWVyc19tZW1vcnlfZWZmaWNpZW50X2F0dGVudGlvbigpJTBBJTBBJTIzJTIwcHJlcGFyZSUyMGltYWdlJTBBdXJsJTIwJTNEJTIwJTIyaHR0cHMlM0ElMkYlMkZodWdnaW5nZmFjZS5jbyUyRmRhdGFzZXRzJTJGaHVnZ2luZ2ZhY2UlMkZkb2N1bWVudGF0aW9uLWltYWdlcyUyRnJlc29sdmUlMkZtYWluJTJGZGlmZnVzZXJzJTJGaW1nMmltZy1pbml0LnBuZyUyMiUwQXJlc3BvbnNlJTIwJTNEJTIwcmVxdWVzdHMuZ2V0KHVybCklMEFpbml0X2ltYWdlJTIwJTNEJTIwSW1hZ2Uub3BlbihCeXRlc0lPKHJlc3BvbnNlLmNvbnRlbnQpKS5jb252ZXJ0KCUyMlJHQiUyMiklMEElMEFwcm9tcHQlMjAlM0QlMjAlMjJBc3Ryb25hdXQlMjBpbiUyMGElMjBqdW5nbGUlMkMlMjBjb2xkJTIwY29sb3IlMjBwYWxldHRlJTJDJTIwbXV0ZWQlMjBjb2xvcnMlMkMlMjBkZXRhaWxlZCUyQyUyMDhrJTIyJTBBJTBBJTIzJTIwcGFzcyUyMHByb21wdCUyMGFuZCUyMGltYWdlJTIwdG8lMjBwaXBlbGluZSUwQWltYWdlXzElMjAlM0QlMjBwaXBlbGluZShwcm9tcHQlMkMlMjBpbWFnZSUzRGluaXRfaW1hZ2UlMkMlMjBvdXRwdXRfdHlwZSUzRCUyMmxhdGVudCUyMikuaW1hZ2VzJTVCMCU1RA==",highlighted:`<span class="hljs-keyword">import</span> torch | |
| <span class="hljs-keyword">import</span> requests | |
| <span class="hljs-keyword">from</span> PIL <span class="hljs-keyword">import</span> Image | |
| <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> AutoPipelineForImage2Image | |
| pipeline = AutoPipelineForImage2Image.from_pretrained( | |
| <span class="hljs-string">"runwayml/stable-diffusion-v1-5"</span>, torch_dtype=torch.float16, variant=<span class="hljs-string">"fp16"</span>, use_safetensors=<span class="hljs-literal">True</span> | |
| ).to(<span class="hljs-string">"cuda"</span>) | |
| pipeline.enable_model_cpu_offload() | |
| pipeline.enable_xformers_memory_efficient_attention() | |
| <span class="hljs-comment"># prepare image</span> | |
| url = <span class="hljs-string">"https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/diffusers/img2img-init.png"</span> | |
| response = requests.get(url) | |
| init_image = Image.<span class="hljs-built_in">open</span>(BytesIO(response.content)).convert(<span class="hljs-string">"RGB"</span>) | |
| prompt = <span class="hljs-string">"Astronaut in a jungle, cold color palette, muted colors, detailed, 8k"</span> | |
| <span class="hljs-comment"># pass prompt and image to pipeline</span> | |
| image_1 = pipeline(prompt, image=init_image, output_type=<span class="hljs-string">"latent"</span>).images[<span class="hljs-number">0</span>]`}}),ze=new mc({props:{$$slots:{default:[cf]},$$scope:{ctx:Je}}}),tl=new w({props:{code:"dXBzY2FsZXIlMjAlM0QlMjBBdXRvUGlwZWxpbmVGb3JJbWFnZTJJbWFnZS5mcm9tX3ByZXRyYWluZWQoJTBBJTIwJTIwJTIwJTIwJTIyc3RhYmlsaXR5YWklMkZzZC14Mi1sYXRlbnQtdXBzY2FsZXIlMjIlMkMlMjB0b3JjaF9kdHlwZSUzRHRvcmNoLmZsb2F0MTYlMkMlMjB2YXJpYW50JTNEJTIyZnAxNiUyMiUyQyUyMHVzZV9zYWZldGVuc29ycyUzRFRydWUlMEEpLnRvKCUyMmN1ZGElMjIpJTBBdXBzY2FsZXIuZW5hYmxlX21vZGVsX2NwdV9vZmZsb2FkKCklMEF1cHNjYWxlci5lbmFibGVfeGZvcm1lcnNfbWVtb3J5X2VmZmljaWVudF9hdHRlbnRpb24oKSUwQSUwQWltYWdlXzIlMjAlM0QlMjB1cHNjYWxlcihwcm9tcHQlMkMlMjBpbWFnZSUzRGltYWdlXzElMkMlMjBvdXRwdXRfdHlwZSUzRCUyMmxhdGVudCUyMikuaW1hZ2VzJTVCMCU1RA==",highlighted:`upscaler = AutoPipelineForImage2Image.from_pretrained( | |
| <span class="hljs-string">"stabilityai/sd-x2-latent-upscaler"</span>, torch_dtype=torch.float16, variant=<span class="hljs-string">"fp16"</span>, use_safetensors=<span class="hljs-literal">True</span> | |
| ).to(<span class="hljs-string">"cuda"</span>) | |
| upscaler.enable_model_cpu_offload() | |
| upscaler.enable_xformers_memory_efficient_attention() | |
| image_2 = upscaler(prompt, image=image_1, output_type=<span class="hljs-string">"latent"</span>).images[<span class="hljs-number">0</span>]`}}),ll=new w({props:{code:"c3VwZXJfcmVzJTIwJTNEJTIwQXV0b1BpcGVsaW5lRm9ySW1hZ2UySW1hZ2UuZnJvbV9wcmV0cmFpbmVkKCUwQSUyMCUyMCUyMCUyMCUyMnN0YWJpbGl0eWFpJTJGc3RhYmxlLWRpZmZ1c2lvbi14NC11cHNjYWxlciUyMiUyQyUyMHRvcmNoX2R0eXBlJTNEdG9yY2guZmxvYXQxNiUyQyUyMHZhcmlhbnQlM0QlMjJmcDE2JTIyJTJDJTIwdXNlX3NhZmV0ZW5zb3JzJTNEVHJ1ZSUwQSkudG8oJTIyY3VkYSUyMiklMEFzdXBlcl9yZXMuZW5hYmxlX21vZGVsX2NwdV9vZmZsb2FkKCklMEFzdXBlcl9yZXMuZW5hYmxlX3hmb3JtZXJzX21lbW9yeV9lZmZpY2llbnRfYXR0ZW50aW9uKCklMEElMEFpbWFnZV8zJTIwJTNEJTIwdXBzY2FsZXIocHJvbXB0JTJDJTIwaW1hZ2UlM0RpbWFnZV8yKS5pbWFnZXMlNUIwJTVEJTBBaW1hZ2VfMw==",highlighted:`super_res = AutoPipelineForImage2Image.from_pretrained( | |
| <span class="hljs-string">"stabilityai/stable-diffusion-x4-upscaler"</span>, torch_dtype=torch.float16, variant=<span class="hljs-string">"fp16"</span>, use_safetensors=<span class="hljs-literal">True</span> | |
| ).to(<span class="hljs-string">"cuda"</span>) | |
| super_res.enable_model_cpu_offload() | |
| super_res.enable_xformers_memory_efficient_attention() | |
| image_3 = upscaler(prompt, image=image_2).images[<span class="hljs-number">0</span>] | |
| image_3`}}),al=new _({}),sl=new _({}),nl=new w({props:{code:"ZnJvbSUyMGRpZmZ1c2VycyUyMGltcG9ydCUyMEF1dG9QaXBlbGluZUZvckltYWdlMkltYWdlJTBBaW1wb3J0JTIwdG9yY2glMEElMEFwaXBlbGluZSUyMCUzRCUyMEF1dG9QaXBlbGluZUZvckltYWdlMkltYWdlLmZyb21fcHJldHJhaW5lZCglMEElMjAlMjAlMjAlMjAlMjJydW53YXltbCUyRnN0YWJsZS1kaWZmdXNpb24tdjEtNSUyMiUyQyUyMHRvcmNoX2R0eXBlJTNEdG9yY2guZmxvYXQxNiUyQyUyMHVzZV9zYWZldGVuc29ycyUzRFRydWUlMEEpLnRvKCUyMmN1ZGElMjIpJTBBcGlwZWxpbmUuZW5hYmxlX21vZGVsX2NwdV9vZmZsb2FkKCklMEFwaXBlbGluZS5lbmFibGVfeGZvcm1lcnNfbWVtb3J5X2VmZmljaWVudF9hdHRlbnRpb24oKSUwQSUwQWltYWdlJTIwJTNEJTIwcGlwZWxpbmUocHJvbXB0X2VtZWJkcyUzRHByb21wdF9lbWJlZHMlMkMlMjAlMjMlMjBnZW5lcmF0ZWQlMjBmcm9tJTIwQ29tcGVsJTBBJTIwJTIwJTIwJTIwbmVnYXRpdmVfcHJvbXB0X2VtYmVkcyUyQyUyMCUyMyUyMGdlbmVyYXRlZCUyMGZyb20lMjBDb21wZWwlMEElMjAlMjAlMjAlMjBpbWFnZSUzRGluaXRfaW1hZ2UlMkMlMEEpLmltYWdlcyU1QjAlNUQ=",highlighted:`<span class="hljs-keyword">from</span> diffusers <span class="hljs-keyword">import</span> AutoPipelineForImage2Image | |
| <span class="hljs-keyword">import</span> torch | |
| pipeline = AutoPipelineForImage2Image.from_pretrained( | |
| <span class="hljs-string">"runwayml/stable-diffusion-v1-5"</span>, torch_dtype=torch.float16, use_safetensors=<span class="hljs-literal">True</span> | |
| ).to(<span class="hljs-string">"cuda"</span>) | |
| pipeline.enable_model_cpu_offload() | |
| pipeline.enable_xformers_memory_efficient_attention() | |
| image = pipeline(prompt_emebds=prompt_embeds, <span class="hljs-comment"># generated from Compel</span> | |
| negative_prompt_embeds, <span class="hljs-comment"># generated from Compel</span> | |
| image=init_image, | |
| ).images[<span class="hljs-number">0</span>]`}}),ol=new _({}),rl=new w({props:{code:"JTIzJTIwcHJlcGFyZSUyMGltYWdlJTBBdXJsJTIwJTNEJTIwJTIyaHR0cHMlM0ElMkYlMkZodWdnaW5nZmFjZS5jbyUyRmRhdGFzZXRzJTJGaHVnZ2luZ2ZhY2UlMkZkb2N1bWVudGF0aW9uLWltYWdlcyUyRnJlc29sdmUlMkZtYWluJTJGZGlmZnVzZXJzJTJGaW1nMmltZy1pbml0LnBuZyUyMiUwQXJlc3BvbnNlJTIwJTNEJTIwcmVxdWVzdHMuZ2V0KHVybCklMEFpbml0X2ltYWdlJTIwJTNEJTIwSW1hZ2Uub3BlbihCeXRlc0lPKHJlc3BvbnNlLmNvbnRlbnQpKS5jb252ZXJ0KCUyMlJHQiUyMiklMEFpbml0X2ltYWdlJTIwJTNEJTIwaW5pdF9pbWFnZS5yZXNpemUoKDk1OCUyQyUyMDk2MCkpJTIwJTIzJTIwcmVzaXplJTIwdG8lMjBkZXB0aCUyMGltYWdlJTIwZGltZW5zaW9ucyUwQWRlcHRoX2ltYWdlJTIwJTNEJTIwbG9hZF9pbWFnZSglMjJodHRwcyUzQSUyRiUyRmh1Z2dpbmdmYWNlLmNvJTJGbGxseWFzdmllbCUyRmNvbnRyb2xfdjExZjFwX3NkMTVfZGVwdGglMkZyZXNvbHZlJTJGbWFpbiUyRmltYWdlcyUyRmNvbnRyb2wucG5nJTIyKQ==",highlighted:`<span class="hljs-comment"># prepare image</span> | |
| url = <span class="hljs-string">"https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/diffusers/img2img-init.png"</span> | |
| response = requests.get(url) | |
| init_image = Image.<span class="hljs-built_in">open</span>(BytesIO(response.content)).convert(<span class="hljs-string">"RGB"</span>) | |
| init_image = init_image.resize((<span class="hljs-number">958</span>, <span class="hljs-number">960</span>)) <span class="hljs-comment"># resize to depth image dimensions</span> | |
| depth_image = load_image(<span class="hljs-string">"https://huggingface.co/lllyasviel/control_v11f1p_sd15_depth/resolve/main/images/control.png"</span>)`}}),pl=new w({props:{code:"ZnJvbSUyMGRpZmZ1c2VycyUyMGltcG9ydCUyMENvbnRyb2xOZXRNb2RlbCUyQyUyMEF1dG9QaXBlbGluZUZvckltYWdlMkltYWdlJTBBZnJvbSUyMGRpZmZ1c2Vycy51dGlscyUyMGltcG9ydCUyMGxvYWRfaW1hZ2UlMEFpbXBvcnQlMjB0b3JjaCUwQSUwQWNvbnRyb2xuZXQlMjAlM0QlMjBDb250cm9sTmV0TW9kZWwuZnJvbV9wcmV0cmFpbmVkKCUyMmxsbHlhc3ZpZWwlMkZjb250cm9sX3YxMWYxcF9zZDE1X2RlcHRoJTIyJTJDJTIwdG9yY2hfZHR5cGUlM0R0b3JjaC5mbG9hdDE2JTJDJTIwdmFyaWFudCUzRCUyMmZwMTYlMjIlMkMlMjB1c2Vfc2FmZXRlbnNvcnMlM0RUcnVlKSUwQXBpcGVsaW5lJTIwJTNEJTIwQXV0b1BpcGVsaW5lRm9ySW1hZ2UySW1hZ2UuZnJvbV9wcmV0cmFpbmVkKCUwQSUyMCUyMCUyMCUyMCUyMnJ1bndheW1sJTJGc3RhYmxlLWRpZmZ1c2lvbi12MS01JTIyJTJDJTIwY29udHJvbG5ldCUzRGNvbnRyb2xuZXQlMkMlMjB0b3JjaF9kdHlwZSUzRHRvcmNoLmZsb2F0MTYlMkMlMjB2YXJpYW50JTNEJTIyZnAxNiUyMiUyQyUyMHVzZV9zYWZldGVuc29ycyUzRFRydWUlMEEpLnRvKCUyMmN1ZGElMjIpJTBBcGlwZWxpbmUuZW5hYmxlX21vZGVsX2NwdV9vZmZsb2FkKCklMEFwaXBlbGluZS5lbmFibGVfeGZvcm1lcnNfbWVtb3J5X2VmZmljaWVudF9hdHRlbnRpb24oKQ==",highlighted:`<span class="hljs-keyword">from</span> diffusers <span class="hljs-keyword">import</span> ControlNetModel, AutoPipelineForImage2Image | |
| <span class="hljs-keyword">from</span> diffusers.utils <span class="hljs-keyword">import</span> load_image | |
| <span class="hljs-keyword">import</span> torch | |
| controlnet = ControlNetModel.from_pretrained(<span class="hljs-string">"lllyasviel/control_v11f1p_sd15_depth"</span>, torch_dtype=torch.float16, variant=<span class="hljs-string">"fp16"</span>, use_safetensors=<span class="hljs-literal">True</span>) | |
| pipeline = AutoPipelineForImage2Image.from_pretrained( | |
| <span class="hljs-string">"runwayml/stable-diffusion-v1-5"</span>, controlnet=controlnet, torch_dtype=torch.float16, variant=<span class="hljs-string">"fp16"</span>, use_safetensors=<span class="hljs-literal">True</span> | |
| ).to(<span class="hljs-string">"cuda"</span>) | |
| pipeline.enable_model_cpu_offload() | |
| pipeline.enable_xformers_memory_efficient_attention()`}}),ml=new w({props:{code:"cHJvbXB0JTIwJTNEJTIwJTIyQXN0cm9uYXV0JTIwaW4lMjBhJTIwanVuZ2xlJTJDJTIwY29sZCUyMGNvbG9yJTIwcGFsZXR0ZSUyQyUyMG11dGVkJTIwY29sb3JzJTJDJTIwZGV0YWlsZWQlMkMlMjA4ayUyMiUwQWltYWdlJTIwJTNEJTIwcGlwZWxpbmUocHJvbXB0JTJDJTIwaW1hZ2UlM0Rpbml0X2ltYWdlJTJDJTIwY29udHJvbF9pbWFnZSUzRGRlcHRoX2ltYWdlKS5pbWFnZXMlNUIwJTVEJTBBaW1hZ2U=",highlighted:`prompt = <span class="hljs-string">"Astronaut in a jungle, cold color palette, muted colors, detailed, 8k"</span> | |
| image = pipeline(prompt, image=init_image, control_image=depth_image).images[<span class="hljs-number">0</span>] | |
| image`}}),ul=new w({props:{code:"cGlwZWxpbmUlMjAlM0QlMjBBdXRvUGlwZWxpbmVGb3JJbWFnZTJJbWFnZS5mcm9tX3ByZXRyYWluZWQoJTBBJTIwJTIwJTIwJTIwJTIybml0cm9zb2NrZSUyRmVsZGVuLXJpbmctZGlmZnVzaW9uJTIyJTJDJTIwdG9yY2hfZHR5cGUlM0R0b3JjaC5mbG9hdDE2JTJDJTBBKS50byglMjJjdWRhJTIyKSUwQXBpcGVsaW5lLmVuYWJsZV9tb2RlbF9jcHVfb2ZmbG9hZCgpJTBBcGlwZWxpbmUuZW5hYmxlX3hmb3JtZXJzX21lbW9yeV9lZmZpY2llbnRfYXR0ZW50aW9uKCklMEElMEFwcm9tcHQlMjAlM0QlMjAlMjJlbGRlbiUyMHJpbmclMjBzdHlsZSUyMGFzdHJvbmF1dCUyMGluJTIwYSUyMGp1bmdsZSUyMiUyMCUyMyUyMGluY2x1ZGUlMjB0aGUlMjB0b2tlbiUyMCUyMmVsZGVuJTIwcmluZyUyMHN0eWxlJTIyJTIwaW4lMjB0aGUlMjBwcm9tcHQlMEFuZWdhdGl2ZV9wcm9tcHQlMjAlM0QlMjAlMjJ1Z2x5JTJDJTIwZGVmb3JtZWQlMkMlMjBkaXNmaWd1cmVkJTJDJTIwcG9vciUyMGRldGFpbHMlMkMlMjBiYWQlMjBhbmF0b215JTIyJTBBJTBBaW1hZ2UlMjAlM0QlMjBwaXBlbGluZShwcm9tcHQlMkMlMjBuZWdhdGl2ZV9wcm9tcHQlM0RuZWdhdGl2ZV9wcm9tcHQlMkMlMjBpbWFnZSUzRGluaXRfaW1hZ2UlMkMlMjBzdHJlbmd0aCUzRDAuNDUlMkMlMjBndWlkYW5jZV9zY2FsZSUzRDEwLjUpLmltYWdlcyU1QjAlNUQlMEFpbWFnZQ==",highlighted:`pipeline = AutoPipelineForImage2Image.from_pretrained( | |
| <span class="hljs-string">"nitrosocke/elden-ring-diffusion"</span>, torch_dtype=torch.float16, | |
| ).to(<span class="hljs-string">"cuda"</span>) | |
| pipeline.enable_model_cpu_offload() | |
| pipeline.enable_xformers_memory_efficient_attention() | |
| prompt = <span class="hljs-string">"elden ring style astronaut in a jungle"</span> <span class="hljs-comment"># include the token "elden ring style" in the prompt</span> | |
| negative_prompt = <span class="hljs-string">"ugly, deformed, disfigured, poor details, bad anatomy"</span> | |
| image = pipeline(prompt, negative_prompt=negative_prompt, image=init_image, strength=<span class="hljs-number">0.45</span>, guidance_scale=<span class="hljs-number">10.5</span>).images[<span class="hljs-number">0</span>] | |
| image`}}),fl=new _({}),hl=new w({props:{code:"JTJCJTIwcGlwZWxpbmUuZW5hYmxlX21vZGVsX2NwdV9vZmZsb2FkKCklMEElMkIlMjBwaXBlbGluZS5lbmFibGVfeGZvcm1lcnNfbWVtb3J5X2VmZmljaWVudF9hdHRlbnRpb24oKQ==",highlighted:`<span class="hljs-addition">+ pipeline.enable_model_cpu_offload()</span> | |
| <span class="hljs-addition">+ pipeline.enable_xformers_memory_efficient_attention()</span>`}}),gl=new w({props:{code:"cGlwZS51bmV0JTIwJTNEJTIwdG9yY2guY29tcGlsZShwaXBlLnVuZXQlMkMlMjBtb2RlJTNEJTIycmVkdWNlLW92ZXJoZWFkJTIyJTJDJTIwZnVsbGdyYXBoJTNEVHJ1ZSk=",highlighted:'pipe.unet = torch.<span class="hljs-built_in">compile</span>(pipe.unet, mode=<span class="hljs-string">"reduce-overhead"</span>, fullgraph=<span class="hljs-literal">True</span>)'}}),{c(){b=a("meta"),I=c(),J=a("h1"),v=a("a"),W=a("span"),d(Z.$$.fragment),U=c(),G=a("span"),k=r("Image-to-image"),T=c(),d(V.$$.fragment),F=c(),$=a("p"),rt=r("Image-to-image is similar to "),R=a("a"),B=r("text-to-image"),Ml=r(", but in addition to a prompt, you can also pass an initial image as a starting point for the diffusion process. The initial image is encoded to latent space and noise is added to it. Then the latent diffusion model takes a prompt and the noisy latent image, predicts the added noise, and removes the predicted noise from the initial latent image to get the new latent image. Lastly, a decoder decodes the new latent image back into an image."),pt=c(),D=a("p"),bl=r("With \u{1F917} Diffusers, this is as easy as 1-2-3:"),As=c(),Jl=a("ol"),mt=a("li"),_o=r("Load a checkpoint into the "),Zl=a("a"),Io=r("AutoPipelineForImage2Image"),Go=r(" class; this pipeline automatically handles loading the correct pipeline class based on the checkpoint:"),Hs=c(),d(ct.$$.fragment),qs=c(),d(Ze.$$.fragment),zs=c(),ut=a("ol"),Ra=a("li"),ko=r("Load an image to pass to the pipeline:"),Ps=c(),d(dt.$$.fragment),Ds=c(),ft=a("ol"),Ya=a("li"),Bo=r("Pass a prompt and image to the pipeline to generate an image:"),Ls=c(),d(ht.$$.fragment),Ks=c(),L=a("div"),gt=a("div"),wl=a("img"),Eo=c(),vl=a("figcaption"),Xo=r("initial image"),Vo=c(),yt=a("div"),jl=a("img"),Fo=c(),Ul=a("figcaption"),xo=r("generated image"),Os=c(),K=a("h2"),we=a("a"),Na=a("span"),d(Mt.$$.fragment),$o=c(),Sa=a("span"),Ro=r("Popular models"),ei=c(),Y=a("p"),Yo=r("The most popular image-to-image models are "),bt=a("a"),No=r("Stable Diffusion v1.5"),So=r(", "),Jt=a("a"),Qo=r("Stable Diffusion XL (SDXL)"),Co=r(", and "),Zt=a("a"),Ao=r("Kandinsky 2.2"),Ho=r(". The results from the Stable Diffusion and Kandinsky models vary due to their architecture differences and training process; you can generally expect SDXL to produce higher quality images than Stable Diffusion v1.5. Let\u2019s take a quick look at how to use each of these models and compare their results."),ti=c(),O=a("h3"),ve=a("a"),Qa=a("span"),d(wt.$$.fragment),qo=c(),Ca=a("span"),zo=r("Stable Diffusion v1.5"),li=c(),Wl=a("p"),Po=r("Stable Diffusion v1.5 is a latent diffusion model intialized from an earlier checkpoint, and further finetuned for 595K steps on 512x512 images. To use this pipeline for image-to-image, you\u2019ll need to prepare an initial image to pass to the pipeline. Then you can pass a prompt and the image to the pipeline to generate a new image:"),ai=c(),d(vt.$$.fragment),si=c(),ee=a("div"),jt=a("div"),Tl=a("img"),Do=c(),_l=a("figcaption"),Lo=r("initial image"),Ko=c(),Ut=a("div"),Il=a("img"),Oo=c(),Gl=a("figcaption"),er=r("generated image"),ii=c(),te=a("h3"),je=a("a"),Aa=a("span"),d(Wt.$$.fragment),tr=c(),Ha=a("span"),lr=r("Stable Diffusion XL (SDXL)"),ni=c(),Ue=a("p"),ar=r("SDXL is a more powerful version of the Stable Diffusion model. It uses a larger base model, and an additional refiner model to increase the quality of the base model\u2019s output. Read the "),kl=a("a"),sr=r("SDXL"),ir=r(" guide for a more detailed walkthrough of how to use this model, and other techniques it uses to produce high quality images."),oi=c(),d(Tt.$$.fragment),ri=c(),le=a("div"),_t=a("div"),Bl=a("img"),nr=c(),El=a("figcaption"),or=r("initial image"),rr=c(),It=a("div"),Xl=a("img"),pr=c(),Vl=a("figcaption"),mr=r("generated image"),pi=c(),ae=a("h3"),We=a("a"),qa=a("span"),d(Gt.$$.fragment),cr=c(),za=a("span"),ur=r("Kandinsky 2.2"),mi=c(),Fl=a("p"),dr=r("The Kandinsky model is different from the Stable Diffusion models because it uses an image prior model to create image embeddings. The embeddings help create a better alignment between text and images, allowing the latent diffusion model to generate better images."),ci=c(),xl=a("p"),fr=r("The simplest way to use Kandinsky 2.2 is:"),ui=c(),d(kt.$$.fragment),di=c(),se=a("div"),Bt=a("div"),$l=a("img"),hr=c(),Rl=a("figcaption"),gr=r("initial image"),yr=c(),Et=a("div"),Yl=a("img"),Mr=c(),Nl=a("figcaption"),br=r("generated image"),fi=c(),ie=a("h2"),Te=a("a"),Pa=a("span"),d(Xt.$$.fragment),Jr=c(),Da=a("span"),Zr=r("Configure pipeline parameters"),hi=c(),Sl=a("p"),wr=r("There are several important parameters you can configure in the pipeline that\u2019ll affect the image generation process and image quality. Let\u2019s take a closer look at what these parameters do and how changing them affects the output."),gi=c(),ne=a("h3"),_e=a("a"),La=a("span"),d(Vt.$$.fragment),vr=c(),Ka=a("span"),jr=r("Strength"),yi=c(),Ft=a("p"),Oa=a("code"),Ur=r("strength"),Wr=r(" is one of the most important parameters to consider and it\u2019ll have a huge impact on your generated image. It determines how much the generated image resembles the initial image. In other words:"),Mi=c(),Ie=a("ul"),oe=a("li"),Tr=r("\u{1F4C8} a higher "),es=a("code"),_r=r("strength"),Ir=r(" value gives the model more \u201Ccreativity\u201D to generate an image that\u2019s different from the initial image; a "),ts=a("code"),Gr=r("strength"),kr=r(" value of 1.0 means the initial image is more or less ignored"),Br=c(),xt=a("li"),Er=r("\u{1F4C9} a lower "),ls=a("code"),Xr=r("strength"),Vr=r(" value means the generated image is more similar to the initial image"),bi=c(),E=a("p"),Fr=r("The "),as=a("code"),xr=r("strength"),$r=r(" and "),ss=a("code"),Rr=r("num_inference_steps"),Yr=r(" parameter are related because "),is=a("code"),Nr=r("strength"),Sr=r(" determines the number of noise steps to add. For example, if the "),ns=a("code"),Qr=r("num_inference_steps"),Cr=r(" is 50 and "),os=a("code"),Ar=r("strength"),Hr=r(" is 0.8, then this means adding 40 (50 * 0.8) steps of noise to the initial image and then denoising for 40 steps to get the newly generated image."),Ji=c(),d($t.$$.fragment),Zi=c(),C=a("div"),Ge=a("div"),Ql=a("img"),qr=c(),Cl=a("figcaption"),zr=r("strength = 0.4"),Pr=c(),ke=a("div"),Al=a("img"),Dr=c(),Hl=a("figcaption"),Lr=r("strength = 0.6"),Kr=c(),Be=a("div"),ql=a("img"),Or=c(),zl=a("figcaption"),ep=r("strength = 1.0"),wi=c(),re=a("h3"),Ee=a("a"),rs=a("span"),d(Rt.$$.fragment),tp=c(),ps=a("span"),lp=r("Guidance scale"),vi=c(),N=a("p"),ap=r("The "),ms=a("code"),sp=r("guidance_scale"),ip=r(" parameter is used to control how closely aligned the generated image and text prompt are. A higher "),cs=a("code"),np=r("guidance_scale"),op=r(" value means your generated image is more aligned with the prompt, while a lower "),us=a("code"),rp=r("guidance_scale"),pp=r(" value means your generated image has more space to deviate from the prompt."),ji=c(),X=a("p"),mp=r("You can combine "),ds=a("code"),cp=r("guidance_scale"),up=r(" with "),fs=a("code"),dp=r("strength"),fp=r(" for even more precise control over how expressive the model is. For example, combine a high "),hs=a("code"),hp=r("strength + guidance_scale"),gp=r(" for maximum creativity or use a combination of low "),gs=a("code"),yp=r("strength"),Mp=r(" and low "),ys=a("code"),bp=r("guidance_scale"),Jp=r(" to generate an image that resembles the initial image but is not as strictly bound to the prompt."),Ui=c(),d(Yt.$$.fragment),Wi=c(),A=a("div"),Xe=a("div"),Pl=a("img"),Zp=c(),Dl=a("figcaption"),wp=r("guidance_scale = 0.1"),vp=c(),Ve=a("div"),Ll=a("img"),jp=c(),Kl=a("figcaption"),Up=r("guidance_scale = 5.0"),Wp=c(),Fe=a("div"),Ol=a("img"),Tp=c(),ea=a("figcaption"),_p=r("guidance_scale = 10.0"),Ti=c(),pe=a("h3"),xe=a("a"),Ms=a("span"),d(Nt.$$.fragment),Ip=c(),bs=a("span"),Gp=r("Negative prompt"),_i=c(),$e=a("p"),kp=r("A negative prompt conditions the model to "),Js=a("em"),Bp=r("not"),Ep=r(" include things in an image, and it can be used to improve image quality or modify an image. For example, you can improve image quality by including negative prompts like \u201Cpoor details\u201D or \u201Cblurry\u201D to encourage the model to generate a higher quality image. Or you can modify an image by specifying things to exclude from an image."),Ii=c(),d(St.$$.fragment),Gi=c(),me=a("div"),Re=a("div"),ta=a("img"),Xp=c(),la=a("figcaption"),Vp=r('negative prompt = "ugly, deformed, disfigured, poor details, bad anatomy"'),Fp=c(),Ye=a("div"),aa=a("img"),xp=c(),sa=a("figcaption"),$p=r('negative prompt = "jungle"'),ki=c(),ce=a("h2"),Ne=a("a"),Zs=a("span"),d(Qt.$$.fragment),Rp=c(),ws=a("span"),Yp=r("Chained image-to-image pipelines"),Bi=c(),ia=a("p"),Np=r("There are some other interesting ways you can use an image-to-image pipeline aside from just generating an image (although that is pretty cool too). You can take it a step further and chain it with other pipelines."),Ei=c(),ue=a("h3"),Se=a("a"),vs=a("span"),d(Ct.$$.fragment),Sp=c(),js=a("span"),Qp=r("Text-to-image-to-image"),Xi=c(),na=a("p"),Cp=r("Chaining a text-to-image and image-to-image pipeline allows you to generate an image from text and use the generated image as the initial image for the image-to-image pipeline. This is useful if you want to generate an image entirely from scratch. For example, let\u2019s chain a Stable Diffusion and a Kandinsky model."),Vi=c(),oa=a("p"),Ap=r("Start by generating an image with the text-to-image pipeline:"),Fi=c(),d(At.$$.fragment),xi=c(),ra=a("p"),Hp=r("Now you can pass this generated image to the image-to-image pipeline:"),$i=c(),d(Ht.$$.fragment),Ri=c(),de=a("h3"),Qe=a("a"),Us=a("span"),d(qt.$$.fragment),qp=c(),Ws=a("span"),zp=r("Image-to-image-to-image"),Yi=c(),pa=a("p"),Pp=r("You can also chain multiple image-to-image pipelines together to create more interesting images. This can be useful for iteratively performing style transfer on an image, generate short GIFs, restore color to an image, or restore missing areas of an image."),Ni=c(),ma=a("p"),Dp=r("Start by generating an image:"),Si=c(),d(zt.$$.fragment),Qi=c(),d(Ce.$$.fragment),Ci=c(),Ae=a("p"),Lp=r("Pass the latent output from this pipeline to the next pipeline to generate an image in a "),Pt=a("a"),Kp=r("comic book art style"),Op=r(":"),Ai=c(),d(Dt.$$.fragment),Hi=c(),He=a("p"),em=r("Repeat one more time to generate the final image in a "),Lt=a("a"),tm=r("pixel art style"),lm=r(":"),qi=c(),d(Kt.$$.fragment),zi=c(),fe=a("h3"),qe=a("a"),Ts=a("span"),d(Ot.$$.fragment),am=c(),_s=a("span"),sm=r("Image-to-upscaler-to-super-resolution"),Pi=c(),ca=a("p"),im=r("Another way you can chain your image-to-image pipeline is with an upscaler and super-resolution pipeline to really increase the level of details in an image."),Di=c(),ua=a("p"),nm=r("Start with an image-to-image pipeline:"),Li=c(),d(el.$$.fragment),Ki=c(),d(ze.$$.fragment),Oi=c(),da=a("p"),om=r("Chain it to an upscaler pipeline to increase the image resolution:"),en=c(),d(tl.$$.fragment),tn=c(),fa=a("p"),rm=r("Finally, chain it to a super-resolution pipeline to further enhance the resolution:"),ln=c(),d(ll.$$.fragment),an=c(),he=a("h2"),Pe=a("a"),Is=a("span"),d(al.$$.fragment),pm=c(),Gs=a("span"),mm=r("Control image generation"),sn=c(),De=a("p"),cm=r("Trying to generate an image that looks exactly the way you want can be difficult, which is why controlled generation techniques and models are so useful. While you can use the "),ks=a("code"),um=r("negative_prompt"),dm=r(" to partially control image generation, there are more robust methods like prompt weighting and ControlNets."),nn=c(),ge=a("h3"),Le=a("a"),Bs=a("span"),d(sl.$$.fragment),fm=c(),Es=a("span"),hm=r("Prompt weighting"),on=c(),q=a("p"),gm=r("Prompt weighting allows you to scale the representation of each concept in a prompt. For example, in a prompt like \u201CAstronaut in a jungle, cold color palette, muted colors, detailed, 8k\u201D, you can choose to increase or decrease the embeddings of \u201Castronaut\u201D and \u201Cjungle\u201D. The "),il=a("a"),ym=r("Compel"),Mm=r(" library provides a simple syntax for adjusting prompt weights and generating the embeddings. You can learn how to create the embeddings in the "),ha=a("a"),bm=r("Prompt weighting"),Jm=r(" guide."),rn=c(),x=a("p"),ga=a("a"),Zm=r("AutoPipelineForImage2Image"),wm=r(" has a "),Xs=a("code"),vm=r("prompt_embeds"),jm=r(" (and "),Vs=a("code"),Um=r("negative_prompt_embeds"),Wm=r(" if you\u2019re using a negative prompt) parameter where you can pass the embeddings which replaces the "),Fs=a("code"),Tm=r("prompt"),_m=r(" parameter."),pn=c(),d(nl.$$.fragment),mn=c(),ye=a("h3"),Ke=a("a"),xs=a("span"),d(ol.$$.fragment),Im=c(),$s=a("span"),Gm=r("ControlNet"),cn=c(),ya=a("p"),km=r("ControlNets provide a more flexible and accurate way to control image generation because you can use an additional conditioning image. The conditioning image can be a canny image, depth map, image segmentation, and even scribbles! Whatever type of conditioning image you choose, the ControlNet generates an image that preserves the information in it."),un=c(),Ma=a("p"),Bm=r("For example, let\u2019s condition an image with a depth map to keep the spatial information in the image."),dn=c(),d(rl.$$.fragment),fn=c(),Oe=a("p"),Em=r("Load a ControlNet model conditioned on depth maps and the "),ba=a("a"),Xm=r("AutoPipelineForImage2Image"),Vm=r(":"),hn=c(),d(pl.$$.fragment),gn=c(),Ja=a("p"),Fm=r("Now generate a new image conditioned on the depth map, initial image, and prompt:"),yn=c(),d(ml.$$.fragment),Mn=c(),H=a("div"),et=a("div"),Za=a("img"),xm=c(),wa=a("figcaption"),$m=r("initial image"),Rm=c(),tt=a("div"),va=a("img"),Ym=c(),ja=a("figcaption"),Nm=r("depth image"),Sm=c(),lt=a("div"),Ua=a("img"),Qm=c(),Wa=a("figcaption"),Cm=r("ControlNet image"),bn=c(),at=a("p"),Am=r("Let\u2019s apply a new "),cl=a("a"),Hm=r("style"),qm=r(" to the image generated from the ControlNet by chaining it with an image-to-image pipeline:"),Jn=c(),d(ul.$$.fragment),Zn=c(),dl=a("div"),Rs=a("img"),wn=c(),Me=a("h2"),st=a("a"),Ys=a("span"),d(fl.$$.fragment),zm=c(),Ns=a("span"),Pm=r("Optimize"),vn=c(),z=a("p"),Dm=r("Running diffusion models is computationally expensive and intensive, but with a few optimization tricks, it is entirely possible to run them on consumer and free-tier GPUs. For example, you can use a more memory-efficient form of attention such as PyTorch 2.0\u2019s "),Ta=a("a"),Lm=r("scaled-dot product attention"),Km=r(" or "),_a=a("a"),Om=r("xFormers"),ec=r(" (you can use one or the other, but there\u2019s no need to use both). You can also offload the model to the GPU while the other pipeline components wait on the CPU."),jn=c(),d(hl.$$.fragment),Un=c(),it=a("p"),tc=r("With "),Ia=a("a"),Ss=a("code"),lc=r("torch.compile"),ac=r(", you can boost your inference speed even more by wrapping your UNet with it:"),Wn=c(),d(gl.$$.fragment),Tn=c(),P=a("p"),sc=r("To learn more, take a look at the "),Ga=a("a"),ic=r("Reduce memory usage"),nc=r(" and "),ka=a("a"),oc=r("Torch 2.0"),rc=r(" guides."),this.h()},l(e){const n=nf('[data-svelte="svelte-1phssyn"]',document.head);b=s(n,"META",{name:!0,content:!0}),n.forEach(l),I=u(e),J=s(e,"H1",{class:!0});var yl=i(J);v=s(yl,"A",{id:!0,class:!0,href:!0});var Qs=i(v);W=s(Qs,"SPAN",{});var Cs=i(W);f(Z.$$.fragment,Cs),Cs.forEach(l),Qs.forEach(l),U=u(yl),G=s(yl,"SPAN",{});var kc=i(G);k=p(kc,"Image-to-image"),kc.forEach(l),yl.forEach(l),T=u(e),f(V.$$.fragment,e),F=u(e),$=s(e,"P",{});var In=i($);rt=p(In,"Image-to-image is similar to "),R=s(In,"A",{href:!0});var Bc=i(R);B=p(Bc,"text-to-image"),Bc.forEach(l),Ml=p(In,", but in addition to a prompt, you can also pass an initial image as a starting point for the diffusion process. The initial image is encoded to latent space and noise is added to it. Then the latent diffusion model takes a prompt and the noisy latent image, predicts the added noise, and removes the predicted noise from the initial latent image to get the new latent image. Lastly, a decoder decodes the new latent image back into an image."),In.forEach(l),pt=u(e),D=s(e,"P",{});var Ec=i(D);bl=p(Ec,"With \u{1F917} Diffusers, this is as easy as 1-2-3:"),Ec.forEach(l),As=u(e),Jl=s(e,"OL",{});var Xc=i(Jl);mt=s(Xc,"LI",{});var Gn=i(mt);_o=p(Gn,"Load a checkpoint into the "),Zl=s(Gn,"A",{href:!0});var Vc=i(Zl);Io=p(Vc,"AutoPipelineForImage2Image"),Vc.forEach(l),Go=p(Gn," class; this pipeline automatically handles loading the correct pipeline class based on the checkpoint:"),Gn.forEach(l),Xc.forEach(l),Hs=u(e),f(ct.$$.fragment,e),qs=u(e),f(Ze.$$.fragment,e),zs=u(e),ut=s(e,"OL",{start:!0});var Fc=i(ut);Ra=s(Fc,"LI",{});var xc=i(Ra);ko=p(xc,"Load an image to pass to the pipeline:"),xc.forEach(l),Fc.forEach(l),Ps=u(e),f(dt.$$.fragment,e),Ds=u(e),ft=s(e,"OL",{start:!0});var $c=i(ft);Ya=s($c,"LI",{});var Rc=i(Ya);Bo=p(Rc,"Pass a prompt and image to the pipeline to generate an image:"),Rc.forEach(l),$c.forEach(l),Ls=u(e),f(ht.$$.fragment,e),Ks=u(e),L=s(e,"DIV",{class:!0});var kn=i(L);gt=s(kn,"DIV",{});var Bn=i(gt);wl=s(Bn,"IMG",{class:!0,src:!0}),Eo=u(Bn),vl=s(Bn,"FIGCAPTION",{class:!0});var Yc=i(vl);Xo=p(Yc,"initial image"),Yc.forEach(l),Bn.forEach(l),Vo=u(kn),yt=s(kn,"DIV",{});var En=i(yt);jl=s(En,"IMG",{class:!0,src:!0}),Fo=u(En),Ul=s(En,"FIGCAPTION",{class:!0});var Nc=i(Ul);xo=p(Nc,"generated image"),Nc.forEach(l),En.forEach(l),kn.forEach(l),Os=u(e),K=s(e,"H2",{class:!0});var Xn=i(K);we=s(Xn,"A",{id:!0,class:!0,href:!0});var Sc=i(we);Na=s(Sc,"SPAN",{});var Qc=i(Na);f(Mt.$$.fragment,Qc),Qc.forEach(l),Sc.forEach(l),$o=u(Xn),Sa=s(Xn,"SPAN",{});var Cc=i(Sa);Ro=p(Cc,"Popular models"),Cc.forEach(l),Xn.forEach(l),ei=u(e),Y=s(e,"P",{});var nt=i(Y);Yo=p(nt,"The most popular image-to-image models are "),bt=s(nt,"A",{href:!0,rel:!0});var Ac=i(bt);No=p(Ac,"Stable Diffusion v1.5"),Ac.forEach(l),So=p(nt,", "),Jt=s(nt,"A",{href:!0,rel:!0});var Hc=i(Jt);Qo=p(Hc,"Stable Diffusion XL (SDXL)"),Hc.forEach(l),Co=p(nt,", and "),Zt=s(nt,"A",{href:!0,rel:!0});var qc=i(Zt);Ao=p(qc,"Kandinsky 2.2"),qc.forEach(l),Ho=p(nt,". The results from the Stable Diffusion and Kandinsky models vary due to their architecture differences and training process; you can generally expect SDXL to produce higher quality images than Stable Diffusion v1.5. Let\u2019s take a quick look at how to use each of these models and compare their results."),nt.forEach(l),ti=u(e),O=s(e,"H3",{class:!0});var Vn=i(O);ve=s(Vn,"A",{id:!0,class:!0,href:!0});var zc=i(ve);Qa=s(zc,"SPAN",{});var Pc=i(Qa);f(wt.$$.fragment,Pc),Pc.forEach(l),zc.forEach(l),qo=u(Vn),Ca=s(Vn,"SPAN",{});var Dc=i(Ca);zo=p(Dc,"Stable Diffusion v1.5"),Dc.forEach(l),Vn.forEach(l),li=u(e),Wl=s(e,"P",{});var Lc=i(Wl);Po=p(Lc,"Stable Diffusion v1.5 is a latent diffusion model intialized from an earlier checkpoint, and further finetuned for 595K steps on 512x512 images. To use this pipeline for image-to-image, you\u2019ll need to prepare an initial image to pass to the pipeline. Then you can pass a prompt and the image to the pipeline to generate a new image:"),Lc.forEach(l),ai=u(e),f(vt.$$.fragment,e),si=u(e),ee=s(e,"DIV",{class:!0});var Fn=i(ee);jt=s(Fn,"DIV",{});var xn=i(jt);Tl=s(xn,"IMG",{class:!0,src:!0}),Do=u(xn),_l=s(xn,"FIGCAPTION",{class:!0});var Kc=i(_l);Lo=p(Kc,"initial image"),Kc.forEach(l),xn.forEach(l),Ko=u(Fn),Ut=s(Fn,"DIV",{});var $n=i(Ut);Il=s($n,"IMG",{class:!0,src:!0}),Oo=u($n),Gl=s($n,"FIGCAPTION",{class:!0});var Oc=i(Gl);er=p(Oc,"generated image"),Oc.forEach(l),$n.forEach(l),Fn.forEach(l),ii=u(e),te=s(e,"H3",{class:!0});var Rn=i(te);je=s(Rn,"A",{id:!0,class:!0,href:!0});var eu=i(je);Aa=s(eu,"SPAN",{});var tu=i(Aa);f(Wt.$$.fragment,tu),tu.forEach(l),eu.forEach(l),tr=u(Rn),Ha=s(Rn,"SPAN",{});var lu=i(Ha);lr=p(lu,"Stable Diffusion XL (SDXL)"),lu.forEach(l),Rn.forEach(l),ni=u(e),Ue=s(e,"P",{});var Yn=i(Ue);ar=p(Yn,"SDXL is a more powerful version of the Stable Diffusion model. It uses a larger base model, and an additional refiner model to increase the quality of the base model\u2019s output. Read the "),kl=s(Yn,"A",{href:!0});var au=i(kl);sr=p(au,"SDXL"),au.forEach(l),ir=p(Yn," guide for a more detailed walkthrough of how to use this model, and other techniques it uses to produce high quality images."),Yn.forEach(l),oi=u(e),f(Tt.$$.fragment,e),ri=u(e),le=s(e,"DIV",{class:!0});var Nn=i(le);_t=s(Nn,"DIV",{});var Sn=i(_t);Bl=s(Sn,"IMG",{class:!0,src:!0}),nr=u(Sn),El=s(Sn,"FIGCAPTION",{class:!0});var su=i(El);or=p(su,"initial image"),su.forEach(l),Sn.forEach(l),rr=u(Nn),It=s(Nn,"DIV",{});var Qn=i(It);Xl=s(Qn,"IMG",{class:!0,src:!0}),pr=u(Qn),Vl=s(Qn,"FIGCAPTION",{class:!0});var iu=i(Vl);mr=p(iu,"generated image"),iu.forEach(l),Qn.forEach(l),Nn.forEach(l),pi=u(e),ae=s(e,"H3",{class:!0});var Cn=i(ae);We=s(Cn,"A",{id:!0,class:!0,href:!0});var nu=i(We);qa=s(nu,"SPAN",{});var ou=i(qa);f(Gt.$$.fragment,ou),ou.forEach(l),nu.forEach(l),cr=u(Cn),za=s(Cn,"SPAN",{});var ru=i(za);ur=p(ru,"Kandinsky 2.2"),ru.forEach(l),Cn.forEach(l),mi=u(e),Fl=s(e,"P",{});var pu=i(Fl);dr=p(pu,"The Kandinsky model is different from the Stable Diffusion models because it uses an image prior model to create image embeddings. The embeddings help create a better alignment between text and images, allowing the latent diffusion model to generate better images."),pu.forEach(l),ci=u(e),xl=s(e,"P",{});var mu=i(xl);fr=p(mu,"The simplest way to use Kandinsky 2.2 is:"),mu.forEach(l),ui=u(e),f(kt.$$.fragment,e),di=u(e),se=s(e,"DIV",{class:!0});var An=i(se);Bt=s(An,"DIV",{});var Hn=i(Bt);$l=s(Hn,"IMG",{class:!0,src:!0}),hr=u(Hn),Rl=s(Hn,"FIGCAPTION",{class:!0});var cu=i(Rl);gr=p(cu,"initial image"),cu.forEach(l),Hn.forEach(l),yr=u(An),Et=s(An,"DIV",{});var qn=i(Et);Yl=s(qn,"IMG",{class:!0,src:!0}),Mr=u(qn),Nl=s(qn,"FIGCAPTION",{class:!0});var uu=i(Nl);br=p(uu,"generated image"),uu.forEach(l),qn.forEach(l),An.forEach(l),fi=u(e),ie=s(e,"H2",{class:!0});var zn=i(ie);Te=s(zn,"A",{id:!0,class:!0,href:!0});var du=i(Te);Pa=s(du,"SPAN",{});var fu=i(Pa);f(Xt.$$.fragment,fu),fu.forEach(l),du.forEach(l),Jr=u(zn),Da=s(zn,"SPAN",{});var hu=i(Da);Zr=p(hu,"Configure pipeline parameters"),hu.forEach(l),zn.forEach(l),hi=u(e),Sl=s(e,"P",{});var gu=i(Sl);wr=p(gu,"There are several important parameters you can configure in the pipeline that\u2019ll affect the image generation process and image quality. Let\u2019s take a closer look at what these parameters do and how changing them affects the output."),gu.forEach(l),gi=u(e),ne=s(e,"H3",{class:!0});var Pn=i(ne);_e=s(Pn,"A",{id:!0,class:!0,href:!0});var yu=i(_e);La=s(yu,"SPAN",{});var Mu=i(La);f(Vt.$$.fragment,Mu),Mu.forEach(l),yu.forEach(l),vr=u(Pn),Ka=s(Pn,"SPAN",{});var bu=i(Ka);jr=p(bu,"Strength"),bu.forEach(l),Pn.forEach(l),yi=u(e),Ft=s(e,"P",{});var pc=i(Ft);Oa=s(pc,"CODE",{});var Ju=i(Oa);Ur=p(Ju,"strength"),Ju.forEach(l),Wr=p(pc," is one of the most important parameters to consider and it\u2019ll have a huge impact on your generated image. It determines how much the generated image resembles the initial image. In other words:"),pc.forEach(l),Mi=u(e),Ie=s(e,"UL",{});var Dn=i(Ie);oe=s(Dn,"LI",{});var Ba=i(oe);Tr=p(Ba,"\u{1F4C8} a higher "),es=s(Ba,"CODE",{});var Zu=i(es);_r=p(Zu,"strength"),Zu.forEach(l),Ir=p(Ba," value gives the model more \u201Ccreativity\u201D to generate an image that\u2019s different from the initial image; a "),ts=s(Ba,"CODE",{});var wu=i(ts);Gr=p(wu,"strength"),wu.forEach(l),kr=p(Ba," value of 1.0 means the initial image is more or less ignored"),Ba.forEach(l),Br=u(Dn),xt=s(Dn,"LI",{});var Ln=i(xt);Er=p(Ln,"\u{1F4C9} a lower "),ls=s(Ln,"CODE",{});var vu=i(ls);Xr=p(vu,"strength"),vu.forEach(l),Vr=p(Ln," value means the generated image is more similar to the initial image"),Ln.forEach(l),Dn.forEach(l),bi=u(e),E=s(e,"P",{});var S=i(E);Fr=p(S,"The "),as=s(S,"CODE",{});var ju=i(as);xr=p(ju,"strength"),ju.forEach(l),$r=p(S," and "),ss=s(S,"CODE",{});var Uu=i(ss);Rr=p(Uu,"num_inference_steps"),Uu.forEach(l),Yr=p(S," parameter are related because "),is=s(S,"CODE",{});var Wu=i(is);Nr=p(Wu,"strength"),Wu.forEach(l),Sr=p(S," determines the number of noise steps to add. For example, if the "),ns=s(S,"CODE",{});var Tu=i(ns);Qr=p(Tu,"num_inference_steps"),Tu.forEach(l),Cr=p(S," is 50 and "),os=s(S,"CODE",{});var _u=i(os);Ar=p(_u,"strength"),_u.forEach(l),Hr=p(S," is 0.8, then this means adding 40 (50 * 0.8) steps of noise to the initial image and then denoising for 40 steps to get the newly generated image."),S.forEach(l),Ji=u(e),f($t.$$.fragment,e),Zi=u(e),C=s(e,"DIV",{class:!0});var Ea=i(C);Ge=s(Ea,"DIV",{class:!0});var Kn=i(Ge);Ql=s(Kn,"IMG",{class:!0,src:!0}),qr=u(Kn),Cl=s(Kn,"FIGCAPTION",{class:!0});var Iu=i(Cl);zr=p(Iu,"strength = 0.4"),Iu.forEach(l),Kn.forEach(l),Pr=u(Ea),ke=s(Ea,"DIV",{class:!0});var On=i(ke);Al=s(On,"IMG",{class:!0,src:!0}),Dr=u(On),Hl=s(On,"FIGCAPTION",{class:!0});var Gu=i(Hl);Lr=p(Gu,"strength = 0.6"),Gu.forEach(l),On.forEach(l),Kr=u(Ea),Be=s(Ea,"DIV",{class:!0});var eo=i(Be);ql=s(eo,"IMG",{class:!0,src:!0}),Or=u(eo),zl=s(eo,"FIGCAPTION",{class:!0});var ku=i(zl);ep=p(ku,"strength = 1.0"),ku.forEach(l),eo.forEach(l),Ea.forEach(l),wi=u(e),re=s(e,"H3",{class:!0});var to=i(re);Ee=s(to,"A",{id:!0,class:!0,href:!0});var Bu=i(Ee);rs=s(Bu,"SPAN",{});var Eu=i(rs);f(Rt.$$.fragment,Eu),Eu.forEach(l),Bu.forEach(l),tp=u(to),ps=s(to,"SPAN",{});var Xu=i(ps);lp=p(Xu,"Guidance scale"),Xu.forEach(l),to.forEach(l),vi=u(e),N=s(e,"P",{});var ot=i(N);ap=p(ot,"The "),ms=s(ot,"CODE",{});var Vu=i(ms);sp=p(Vu,"guidance_scale"),Vu.forEach(l),ip=p(ot," parameter is used to control how closely aligned the generated image and text prompt are. A higher "),cs=s(ot,"CODE",{});var Fu=i(cs);np=p(Fu,"guidance_scale"),Fu.forEach(l),op=p(ot," value means your generated image is more aligned with the prompt, while a lower "),us=s(ot,"CODE",{});var xu=i(us);rp=p(xu,"guidance_scale"),xu.forEach(l),pp=p(ot," value means your generated image has more space to deviate from the prompt."),ot.forEach(l),ji=u(e),X=s(e,"P",{});var Q=i(X);mp=p(Q,"You can combine "),ds=s(Q,"CODE",{});var $u=i(ds);cp=p($u,"guidance_scale"),$u.forEach(l),up=p(Q," with "),fs=s(Q,"CODE",{});var Ru=i(fs);dp=p(Ru,"strength"),Ru.forEach(l),fp=p(Q," for even more precise control over how expressive the model is. For example, combine a high "),hs=s(Q,"CODE",{});var Yu=i(hs);hp=p(Yu,"strength + guidance_scale"),Yu.forEach(l),gp=p(Q," for maximum creativity or use a combination of low "),gs=s(Q,"CODE",{});var Nu=i(gs);yp=p(Nu,"strength"),Nu.forEach(l),Mp=p(Q," and low "),ys=s(Q,"CODE",{});var Su=i(ys);bp=p(Su,"guidance_scale"),Su.forEach(l),Jp=p(Q," to generate an image that resembles the initial image but is not as strictly bound to the prompt."),Q.forEach(l),Ui=u(e),f(Yt.$$.fragment,e),Wi=u(e),A=s(e,"DIV",{class:!0});var Xa=i(A);Xe=s(Xa,"DIV",{class:!0});var lo=i(Xe);Pl=s(lo,"IMG",{class:!0,src:!0}),Zp=u(lo),Dl=s(lo,"FIGCAPTION",{class:!0});var Qu=i(Dl);wp=p(Qu,"guidance_scale = 0.1"),Qu.forEach(l),lo.forEach(l),vp=u(Xa),Ve=s(Xa,"DIV",{class:!0});var ao=i(Ve);Ll=s(ao,"IMG",{class:!0,src:!0}),jp=u(ao),Kl=s(ao,"FIGCAPTION",{class:!0});var Cu=i(Kl);Up=p(Cu,"guidance_scale = 5.0"),Cu.forEach(l),ao.forEach(l),Wp=u(Xa),Fe=s(Xa,"DIV",{class:!0});var so=i(Fe);Ol=s(so,"IMG",{class:!0,src:!0}),Tp=u(so),ea=s(so,"FIGCAPTION",{class:!0});var Au=i(ea);_p=p(Au,"guidance_scale = 10.0"),Au.forEach(l),so.forEach(l),Xa.forEach(l),Ti=u(e),pe=s(e,"H3",{class:!0});var io=i(pe);xe=s(io,"A",{id:!0,class:!0,href:!0});var Hu=i(xe);Ms=s(Hu,"SPAN",{});var qu=i(Ms);f(Nt.$$.fragment,qu),qu.forEach(l),Hu.forEach(l),Ip=u(io),bs=s(io,"SPAN",{});var zu=i(bs);Gp=p(zu,"Negative prompt"),zu.forEach(l),io.forEach(l),_i=u(e),$e=s(e,"P",{});var no=i($e);kp=p(no,"A negative prompt conditions the model to "),Js=s(no,"EM",{});var Pu=i(Js);Bp=p(Pu,"not"),Pu.forEach(l),Ep=p(no," include things in an image, and it can be used to improve image quality or modify an image. For example, you can improve image quality by including negative prompts like \u201Cpoor details\u201D or \u201Cblurry\u201D to encourage the model to generate a higher quality image. Or you can modify an image by specifying things to exclude from an image."),no.forEach(l),Ii=u(e),f(St.$$.fragment,e),Gi=u(e),me=s(e,"DIV",{class:!0});var oo=i(me);Re=s(oo,"DIV",{class:!0});var ro=i(Re);ta=s(ro,"IMG",{class:!0,src:!0}),Xp=u(ro),la=s(ro,"FIGCAPTION",{class:!0});var Du=i(la);Vp=p(Du,'negative prompt = "ugly, deformed, disfigured, poor details, bad anatomy"'),Du.forEach(l),ro.forEach(l),Fp=u(oo),Ye=s(oo,"DIV",{class:!0});var po=i(Ye);aa=s(po,"IMG",{class:!0,src:!0}),xp=u(po),sa=s(po,"FIGCAPTION",{class:!0});var Lu=i(sa);$p=p(Lu,'negative prompt = "jungle"'),Lu.forEach(l),po.forEach(l),oo.forEach(l),ki=u(e),ce=s(e,"H2",{class:!0});var mo=i(ce);Ne=s(mo,"A",{id:!0,class:!0,href:!0});var Ku=i(Ne);Zs=s(Ku,"SPAN",{});var Ou=i(Zs);f(Qt.$$.fragment,Ou),Ou.forEach(l),Ku.forEach(l),Rp=u(mo),ws=s(mo,"SPAN",{});var ed=i(ws);Yp=p(ed,"Chained image-to-image pipelines"),ed.forEach(l),mo.forEach(l),Bi=u(e),ia=s(e,"P",{});var td=i(ia);Np=p(td,"There are some other interesting ways you can use an image-to-image pipeline aside from just generating an image (although that is pretty cool too). You can take it a step further and chain it with other pipelines."),td.forEach(l),Ei=u(e),ue=s(e,"H3",{class:!0});var co=i(ue);Se=s(co,"A",{id:!0,class:!0,href:!0});var ld=i(Se);vs=s(ld,"SPAN",{});var ad=i(vs);f(Ct.$$.fragment,ad),ad.forEach(l),ld.forEach(l),Sp=u(co),js=s(co,"SPAN",{});var sd=i(js);Qp=p(sd,"Text-to-image-to-image"),sd.forEach(l),co.forEach(l),Xi=u(e),na=s(e,"P",{});var id=i(na);Cp=p(id,"Chaining a text-to-image and image-to-image pipeline allows you to generate an image from text and use the generated image as the initial image for the image-to-image pipeline. This is useful if you want to generate an image entirely from scratch. For example, let\u2019s chain a Stable Diffusion and a Kandinsky model."),id.forEach(l),Vi=u(e),oa=s(e,"P",{});var nd=i(oa);Ap=p(nd,"Start by generating an image with the text-to-image pipeline:"),nd.forEach(l),Fi=u(e),f(At.$$.fragment,e),xi=u(e),ra=s(e,"P",{});var od=i(ra);Hp=p(od,"Now you can pass this generated image to the image-to-image pipeline:"),od.forEach(l),$i=u(e),f(Ht.$$.fragment,e),Ri=u(e),de=s(e,"H3",{class:!0});var uo=i(de);Qe=s(uo,"A",{id:!0,class:!0,href:!0});var rd=i(Qe);Us=s(rd,"SPAN",{});var pd=i(Us);f(qt.$$.fragment,pd),pd.forEach(l),rd.forEach(l),qp=u(uo),Ws=s(uo,"SPAN",{});var md=i(Ws);zp=p(md,"Image-to-image-to-image"),md.forEach(l),uo.forEach(l),Yi=u(e),pa=s(e,"P",{});var cd=i(pa);Pp=p(cd,"You can also chain multiple image-to-image pipelines together to create more interesting images. This can be useful for iteratively performing style transfer on an image, generate short GIFs, restore color to an image, or restore missing areas of an image."),cd.forEach(l),Ni=u(e),ma=s(e,"P",{});var ud=i(ma);Dp=p(ud,"Start by generating an image:"),ud.forEach(l),Si=u(e),f(zt.$$.fragment,e),Qi=u(e),f(Ce.$$.fragment,e),Ci=u(e),Ae=s(e,"P",{});var fo=i(Ae);Lp=p(fo,"Pass the latent output from this pipeline to the next pipeline to generate an image in a "),Pt=s(fo,"A",{href:!0,rel:!0});var dd=i(Pt);Kp=p(dd,"comic book art style"),dd.forEach(l),Op=p(fo,":"),fo.forEach(l),Ai=u(e),f(Dt.$$.fragment,e),Hi=u(e),He=s(e,"P",{});var ho=i(He);em=p(ho,"Repeat one more time to generate the final image in a "),Lt=s(ho,"A",{href:!0,rel:!0});var fd=i(Lt);tm=p(fd,"pixel art style"),fd.forEach(l),lm=p(ho,":"),ho.forEach(l),qi=u(e),f(Kt.$$.fragment,e),zi=u(e),fe=s(e,"H3",{class:!0});var go=i(fe);qe=s(go,"A",{id:!0,class:!0,href:!0});var hd=i(qe);Ts=s(hd,"SPAN",{});var gd=i(Ts);f(Ot.$$.fragment,gd),gd.forEach(l),hd.forEach(l),am=u(go),_s=s(go,"SPAN",{});var yd=i(_s);sm=p(yd,"Image-to-upscaler-to-super-resolution"),yd.forEach(l),go.forEach(l),Pi=u(e),ca=s(e,"P",{});var Md=i(ca);im=p(Md,"Another way you can chain your image-to-image pipeline is with an upscaler and super-resolution pipeline to really increase the level of details in an image."),Md.forEach(l),Di=u(e),ua=s(e,"P",{});var bd=i(ua);nm=p(bd,"Start with an image-to-image pipeline:"),bd.forEach(l),Li=u(e),f(el.$$.fragment,e),Ki=u(e),f(ze.$$.fragment,e),Oi=u(e),da=s(e,"P",{});var Jd=i(da);om=p(Jd,"Chain it to an upscaler pipeline to increase the image resolution:"),Jd.forEach(l),en=u(e),f(tl.$$.fragment,e),tn=u(e),fa=s(e,"P",{});var Zd=i(fa);rm=p(Zd,"Finally, chain it to a super-resolution pipeline to further enhance the resolution:"),Zd.forEach(l),ln=u(e),f(ll.$$.fragment,e),an=u(e),he=s(e,"H2",{class:!0});var yo=i(he);Pe=s(yo,"A",{id:!0,class:!0,href:!0});var wd=i(Pe);Is=s(wd,"SPAN",{});var vd=i(Is);f(al.$$.fragment,vd),vd.forEach(l),wd.forEach(l),pm=u(yo),Gs=s(yo,"SPAN",{});var jd=i(Gs);mm=p(jd,"Control image generation"),jd.forEach(l),yo.forEach(l),sn=u(e),De=s(e,"P",{});var Mo=i(De);cm=p(Mo,"Trying to generate an image that looks exactly the way you want can be difficult, which is why controlled generation techniques and models are so useful. While you can use the "),ks=s(Mo,"CODE",{});var Ud=i(ks);um=p(Ud,"negative_prompt"),Ud.forEach(l),dm=p(Mo," to partially control image generation, there are more robust methods like prompt weighting and ControlNets."),Mo.forEach(l),nn=u(e),ge=s(e,"H3",{class:!0});var bo=i(ge);Le=s(bo,"A",{id:!0,class:!0,href:!0});var Wd=i(Le);Bs=s(Wd,"SPAN",{});var Td=i(Bs);f(sl.$$.fragment,Td),Td.forEach(l),Wd.forEach(l),fm=u(bo),Es=s(bo,"SPAN",{});var _d=i(Es);hm=p(_d,"Prompt weighting"),_d.forEach(l),bo.forEach(l),on=u(e),q=s(e,"P",{});var Va=i(q);gm=p(Va,"Prompt weighting allows you to scale the representation of each concept in a prompt. For example, in a prompt like \u201CAstronaut in a jungle, cold color palette, muted colors, detailed, 8k\u201D, you can choose to increase or decrease the embeddings of \u201Castronaut\u201D and \u201Cjungle\u201D. The "),il=s(Va,"A",{href:!0,rel:!0});var Id=i(il);ym=p(Id,"Compel"),Id.forEach(l),Mm=p(Va," library provides a simple syntax for adjusting prompt weights and generating the embeddings. You can learn how to create the embeddings in the "),ha=s(Va,"A",{href:!0});var Gd=i(ha);bm=p(Gd,"Prompt weighting"),Gd.forEach(l),Jm=p(Va," guide."),Va.forEach(l),rn=u(e),x=s(e,"P",{});var be=i(x);ga=s(be,"A",{href:!0});var kd=i(ga);Zm=p(kd,"AutoPipelineForImage2Image"),kd.forEach(l),wm=p(be," has a "),Xs=s(be,"CODE",{});var Bd=i(Xs);vm=p(Bd,"prompt_embeds"),Bd.forEach(l),jm=p(be," (and "),Vs=s(be,"CODE",{});var Ed=i(Vs);Um=p(Ed,"negative_prompt_embeds"),Ed.forEach(l),Wm=p(be," if you\u2019re using a negative prompt) parameter where you can pass the embeddings which replaces the "),Fs=s(be,"CODE",{});var Xd=i(Fs);Tm=p(Xd,"prompt"),Xd.forEach(l),_m=p(be," parameter."),be.forEach(l),pn=u(e),f(nl.$$.fragment,e),mn=u(e),ye=s(e,"H3",{class:!0});var Jo=i(ye);Ke=s(Jo,"A",{id:!0,class:!0,href:!0});var Vd=i(Ke);xs=s(Vd,"SPAN",{});var Fd=i(xs);f(ol.$$.fragment,Fd),Fd.forEach(l),Vd.forEach(l),Im=u(Jo),$s=s(Jo,"SPAN",{});var xd=i($s);Gm=p(xd,"ControlNet"),xd.forEach(l),Jo.forEach(l),cn=u(e),ya=s(e,"P",{});var $d=i(ya);km=p($d,"ControlNets provide a more flexible and accurate way to control image generation because you can use an additional conditioning image. The conditioning image can be a canny image, depth map, image segmentation, and even scribbles! Whatever type of conditioning image you choose, the ControlNet generates an image that preserves the information in it."),$d.forEach(l),un=u(e),Ma=s(e,"P",{});var Rd=i(Ma);Bm=p(Rd,"For example, let\u2019s condition an image with a depth map to keep the spatial information in the image."),Rd.forEach(l),dn=u(e),f(rl.$$.fragment,e),fn=u(e),Oe=s(e,"P",{});var Zo=i(Oe);Em=p(Zo,"Load a ControlNet model conditioned on depth maps and the "),ba=s(Zo,"A",{href:!0});var Yd=i(ba);Xm=p(Yd,"AutoPipelineForImage2Image"),Yd.forEach(l),Vm=p(Zo,":"),Zo.forEach(l),hn=u(e),f(pl.$$.fragment,e),gn=u(e),Ja=s(e,"P",{});var Nd=i(Ja);Fm=p(Nd,"Now generate a new image conditioned on the depth map, initial image, and prompt:"),Nd.forEach(l),yn=u(e),f(ml.$$.fragment,e),Mn=u(e),H=s(e,"DIV",{class:!0});var Fa=i(H);et=s(Fa,"DIV",{class:!0});var wo=i(et);Za=s(wo,"IMG",{class:!0,src:!0}),xm=u(wo),wa=s(wo,"FIGCAPTION",{class:!0});var Sd=i(wa);$m=p(Sd,"initial image"),Sd.forEach(l),wo.forEach(l),Rm=u(Fa),tt=s(Fa,"DIV",{class:!0});var vo=i(tt);va=s(vo,"IMG",{class:!0,src:!0}),Ym=u(vo),ja=s(vo,"FIGCAPTION",{class:!0});var Qd=i(ja);Nm=p(Qd,"depth image"),Qd.forEach(l),vo.forEach(l),Sm=u(Fa),lt=s(Fa,"DIV",{class:!0});var jo=i(lt);Ua=s(jo,"IMG",{class:!0,src:!0}),Qm=u(jo),Wa=s(jo,"FIGCAPTION",{class:!0});var Cd=i(Wa);Cm=p(Cd,"ControlNet image"),Cd.forEach(l),jo.forEach(l),Fa.forEach(l),bn=u(e),at=s(e,"P",{});var Uo=i(at);Am=p(Uo,"Let\u2019s apply a new "),cl=s(Uo,"A",{href:!0,rel:!0});var Ad=i(cl);Hm=p(Ad,"style"),Ad.forEach(l),qm=p(Uo," to the image generated from the ControlNet by chaining it with an image-to-image pipeline:"),Uo.forEach(l),Jn=u(e),f(ul.$$.fragment,e),Zn=u(e),dl=s(e,"DIV",{class:!0});var Hd=i(dl);Rs=s(Hd,"IMG",{src:!0}),Hd.forEach(l),wn=u(e),Me=s(e,"H2",{class:!0});var Wo=i(Me);st=s(Wo,"A",{id:!0,class:!0,href:!0});var qd=i(st);Ys=s(qd,"SPAN",{});var zd=i(Ys);f(fl.$$.fragment,zd),zd.forEach(l),qd.forEach(l),zm=u(Wo),Ns=s(Wo,"SPAN",{});var Pd=i(Ns);Pm=p(Pd,"Optimize"),Pd.forEach(l),Wo.forEach(l),vn=u(e),z=s(e,"P",{});var xa=i(z);Dm=p(xa,"Running diffusion models is computationally expensive and intensive, but with a few optimization tricks, it is entirely possible to run them on consumer and free-tier GPUs. For example, you can use a more memory-efficient form of attention such as PyTorch 2.0\u2019s "),Ta=s(xa,"A",{href:!0});var Dd=i(Ta);Lm=p(Dd,"scaled-dot product attention"),Dd.forEach(l),Km=p(xa," or "),_a=s(xa,"A",{href:!0});var Ld=i(_a);Om=p(Ld,"xFormers"),Ld.forEach(l),ec=p(xa," (you can use one or the other, but there\u2019s no need to use both). You can also offload the model to the GPU while the other pipeline components wait on the CPU."),xa.forEach(l),jn=u(e),f(hl.$$.fragment,e),Un=u(e),it=s(e,"P",{});var To=i(it);tc=p(To,"With "),Ia=s(To,"A",{href:!0});var Kd=i(Ia);Ss=s(Kd,"CODE",{});var Od=i(Ss);lc=p(Od,"torch.compile"),Od.forEach(l),Kd.forEach(l),ac=p(To,", you can boost your inference speed even more by wrapping your UNet with it:"),To.forEach(l),Wn=u(e),f(gl.$$.fragment,e),Tn=u(e),P=s(e,"P",{});var $a=i(P);sc=p($a,"To learn more, take a look at the "),Ga=s($a,"A",{href:!0});var ef=i(Ga);ic=p(ef,"Reduce memory usage"),ef.forEach(l),nc=p($a," and "),ka=s($a,"A",{href:!0});var tf=i(ka);oc=p(tf,"Torch 2.0"),tf.forEach(l),rc=p($a," guides."),$a.forEach(l),this.h()},h(){o(b,"name","hf:doc:metadata"),o(b,"content",JSON.stringify(df)),o(v,"id","imagetoimage"),o(v,"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"),o(v,"href","#imagetoimage"),o(J,"class","relative group"),o(R,"href","conditional_image_generation"),o(Zl,"href","/docs/diffusers/main/en/api/pipelines/auto_pipeline#diffusers.AutoPipelineForImage2Image"),o(ut,"start","2"),o(ft,"start","3"),o(wl,"class","rounded-xl"),j(wl.src,cc="https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/diffusers/cat.png")||o(wl,"src",cc),o(vl,"class","mt-2 text-center text-sm text-gray-500"),o(jl,"class","rounded-xl"),j(jl.src,uc="https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/diffusers/img2img.png")||o(jl,"src",uc),o(Ul,"class","mt-2 text-center text-sm text-gray-500"),o(L,"class","flex gap-4"),o(we,"id","popular-models"),o(we,"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"),o(we,"href","#popular-models"),o(K,"class","relative group"),o(bt,"href","https://huggingface.co/runwayml/stable-diffusion-v1-5"),o(bt,"rel","nofollow"),o(Jt,"href","https://huggingface.co/stabilityai/stable-diffusion-xl-base-1.0"),o(Jt,"rel","nofollow"),o(Zt,"href","https://huggingface.co/kandinsky-community/kandinsky-2-2-decoder"),o(Zt,"rel","nofollow"),o(ve,"id","stable-diffusion-v15"),o(ve,"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"),o(ve,"href","#stable-diffusion-v15"),o(O,"class","relative group"),o(Tl,"class","rounded-xl"),j(Tl.src,dc="https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/diffusers/img2img-init.png")||o(Tl,"src",dc),o(_l,"class","mt-2 text-center text-sm text-gray-500"),o(Il,"class","rounded-xl"),j(Il.src,fc="https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/diffusers/img2img-sdv1.5.png")||o(Il,"src",fc),o(Gl,"class","mt-2 text-center text-sm text-gray-500"),o(ee,"class","flex gap-4"),o(je,"id","stable-diffusion-xl-sdxl"),o(je,"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"),o(je,"href","#stable-diffusion-xl-sdxl"),o(te,"class","relative group"),o(kl,"href","sdxl"),o(Bl,"class","rounded-xl"),j(Bl.src,hc="https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/diffusers/img2img-sdxl-init.png")||o(Bl,"src",hc),o(El,"class","mt-2 text-center text-sm text-gray-500"),o(Xl,"class","rounded-xl"),j(Xl.src,gc="https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/diffusers/img2img-sdxl.png")||o(Xl,"src",gc),o(Vl,"class","mt-2 text-center text-sm text-gray-500"),o(le,"class","flex gap-4"),o(We,"id","kandinsky-22"),o(We,"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"),o(We,"href","#kandinsky-22"),o(ae,"class","relative group"),o($l,"class","rounded-xl"),j($l.src,yc="https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/diffusers/img2img-init.png")||o($l,"src",yc),o(Rl,"class","mt-2 text-center text-sm text-gray-500"),o(Yl,"class","rounded-xl"),j(Yl.src,Mc="https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/diffusers/img2img-kandinsky.png")||o(Yl,"src",Mc),o(Nl,"class","mt-2 text-center text-sm text-gray-500"),o(se,"class","flex gap-4"),o(Te,"id","configure-pipeline-parameters"),o(Te,"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"),o(Te,"href","#configure-pipeline-parameters"),o(ie,"class","relative group"),o(_e,"id","strength"),o(_e,"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"),o(_e,"href","#strength"),o(ne,"class","relative group"),o(Ql,"class","rounded-xl"),j(Ql.src,bc="https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/diffusers/img2img-strength-0.4.png")||o(Ql,"src",bc),o(Cl,"class","mt-2 text-center text-sm text-gray-500"),o(Ge,"class","flex-1"),o(Al,"class","rounded-xl"),j(Al.src,Jc="https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/diffusers/img2img-strength-0.6.png")||o(Al,"src",Jc),o(Hl,"class","mt-2 text-center text-sm text-gray-500"),o(ke,"class","flex-1"),o(ql,"class","rounded-xl"),j(ql.src,Zc="https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/diffusers/img2img-strength-1.0.png")||o(ql,"src",Zc),o(zl,"class","mt-2 text-center text-sm text-gray-500"),o(Be,"class","flex-1"),o(C,"class","flex flex-row gap-4"),o(Ee,"id","guidance-scale"),o(Ee,"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"),o(Ee,"href","#guidance-scale"),o(re,"class","relative group"),o(Pl,"class","rounded-xl"),j(Pl.src,wc="https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/diffusers/img2img-guidance-0.1.png")||o(Pl,"src",wc),o(Dl,"class","mt-2 text-center text-sm text-gray-500"),o(Xe,"class","flex-1"),o(Ll,"class","rounded-xl"),j(Ll.src,vc="https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/diffusers/img2img-guidance-3.0.png")||o(Ll,"src",vc),o(Kl,"class","mt-2 text-center text-sm text-gray-500"),o(Ve,"class","flex-1"),o(Ol,"class","rounded-xl"),j(Ol.src,jc="https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/diffusers/img2img-guidance-7.5.png")||o(Ol,"src",jc),o(ea,"class","mt-2 text-center text-sm text-gray-500"),o(Fe,"class","flex-1"),o(A,"class","flex flex-row gap-4"),o(xe,"id","negative-prompt"),o(xe,"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"),o(xe,"href","#negative-prompt"),o(pe,"class","relative group"),o(ta,"class","rounded-xl"),j(ta.src,Uc="https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/diffusers/img2img-negative-1.png")||o(ta,"src",Uc),o(la,"class","mt-2 text-center text-sm text-gray-500"),o(Re,"class","flex-1"),o(aa,"class","rounded-xl"),j(aa.src,Wc="https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/diffusers/img2img-negative-2.png")||o(aa,"src",Wc),o(sa,"class","mt-2 text-center text-sm text-gray-500"),o(Ye,"class","flex-1"),o(me,"class","flex flex-row gap-4"),o(Ne,"id","chained-imagetoimage-pipelines"),o(Ne,"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"),o(Ne,"href","#chained-imagetoimage-pipelines"),o(ce,"class","relative group"),o(Se,"id","texttoimagetoimage"),o(Se,"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"),o(Se,"href","#texttoimagetoimage"),o(ue,"class","relative group"),o(Qe,"id","imagetoimagetoimage"),o(Qe,"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"),o(Qe,"href","#imagetoimagetoimage"),o(de,"class","relative group"),o(Pt,"href","https://huggingface.co/ogkalu/Comic-Diffusion"),o(Pt,"rel","nofollow"),o(Lt,"href","https://huggingface.co/kohbanye/pixel-art-style"),o(Lt,"rel","nofollow"),o(qe,"id","imagetoupscalertosuperresolution"),o(qe,"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"),o(qe,"href","#imagetoupscalertosuperresolution"),o(fe,"class","relative group"),o(Pe,"id","control-image-generation"),o(Pe,"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"),o(Pe,"href","#control-image-generation"),o(he,"class","relative group"),o(Le,"id","prompt-weighting"),o(Le,"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"),o(Le,"href","#prompt-weighting"),o(ge,"class","relative group"),o(il,"href","https://github.com/damian0815/compel"),o(il,"rel","nofollow"),o(ha,"href","weighted_prompts"),o(ga,"href","/docs/diffusers/main/en/api/pipelines/auto_pipeline#diffusers.AutoPipelineForImage2Image"),o(Ke,"id","controlnet"),o(Ke,"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"),o(Ke,"href","#controlnet"),o(ye,"class","relative group"),o(ba,"href","/docs/diffusers/main/en/api/pipelines/auto_pipeline#diffusers.AutoPipelineForImage2Image"),o(Za,"class","rounded-xl"),j(Za.src,Tc="https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/diffusers/img2img-init.png")||o(Za,"src",Tc),o(wa,"class","mt-2 text-center text-sm text-gray-500"),o(et,"class","flex-1"),o(va,"class","rounded-xl"),j(va.src,_c="https://huggingface.co/lllyasviel/control_v11f1p_sd15_depth/resolve/main/images/control.png")||o(va,"src",_c),o(ja,"class","mt-2 text-center text-sm text-gray-500"),o(tt,"class","flex-1"),o(Ua,"class","rounded-xl"),j(Ua.src,Ic="https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/diffusers/img2img-controlnet.png")||o(Ua,"src",Ic),o(Wa,"class","mt-2 text-center text-sm text-gray-500"),o(lt,"class","flex-1"),o(H,"class","flex flex-row gap-4"),o(cl,"href","https://huggingface.co/nitrosocke/elden-ring-diffusion"),o(cl,"rel","nofollow"),j(Rs.src,Gc="https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/diffusers/img2img-elden-ring.png")||o(Rs,"src",Gc),o(dl,"class","flex justify-center"),o(st,"id","optimize"),o(st,"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"),o(st,"href","#optimize"),o(Me,"class","relative group"),o(Ta,"href","optimization/torch2.0#scaled-dot-product-attention"),o(_a,"href","optimization/xformers"),o(Ia,"href","optimization/torch2.0#torch.compile"),o(Ga,"href","optimization/memory"),o(ka,"href","optimization/torch2.0")},m(e,n){t(document.head,b),m(e,I,n),m(e,J,n),t(J,v),t(v,W),h(Z,W,null),t(J,U),t(J,G),t(G,k),m(e,T,n),h(V,e,n),m(e,F,n),m(e,$,n),t($,rt),t($,R),t(R,B),t($,Ml),m(e,pt,n),m(e,D,n),t(D,bl),m(e,As,n),m(e,Jl,n),t(Jl,mt),t(mt,_o),t(mt,Zl),t(Zl,Io),t(mt,Go),m(e,Hs,n),h(ct,e,n),m(e,qs,n),h(Ze,e,n),m(e,zs,n),m(e,ut,n),t(ut,Ra),t(Ra,ko),m(e,Ps,n),h(dt,e,n),m(e,Ds,n),m(e,ft,n),t(ft,Ya),t(Ya,Bo),m(e,Ls,n),h(ht,e,n),m(e,Ks,n),m(e,L,n),t(L,gt),t(gt,wl),t(gt,Eo),t(gt,vl),t(vl,Xo),t(L,Vo),t(L,yt),t(yt,jl),t(yt,Fo),t(yt,Ul),t(Ul,xo),m(e,Os,n),m(e,K,n),t(K,we),t(we,Na),h(Mt,Na,null),t(K,$o),t(K,Sa),t(Sa,Ro),m(e,ei,n),m(e,Y,n),t(Y,Yo),t(Y,bt),t(bt,No),t(Y,So),t(Y,Jt),t(Jt,Qo),t(Y,Co),t(Y,Zt),t(Zt,Ao),t(Y,Ho),m(e,ti,n),m(e,O,n),t(O,ve),t(ve,Qa),h(wt,Qa,null),t(O,qo),t(O,Ca),t(Ca,zo),m(e,li,n),m(e,Wl,n),t(Wl,Po),m(e,ai,n),h(vt,e,n),m(e,si,n),m(e,ee,n),t(ee,jt),t(jt,Tl),t(jt,Do),t(jt,_l),t(_l,Lo),t(ee,Ko),t(ee,Ut),t(Ut,Il),t(Ut,Oo),t(Ut,Gl),t(Gl,er),m(e,ii,n),m(e,te,n),t(te,je),t(je,Aa),h(Wt,Aa,null),t(te,tr),t(te,Ha),t(Ha,lr),m(e,ni,n),m(e,Ue,n),t(Ue,ar),t(Ue,kl),t(kl,sr),t(Ue,ir),m(e,oi,n),h(Tt,e,n),m(e,ri,n),m(e,le,n),t(le,_t),t(_t,Bl),t(_t,nr),t(_t,El),t(El,or),t(le,rr),t(le,It),t(It,Xl),t(It,pr),t(It,Vl),t(Vl,mr),m(e,pi,n),m(e,ae,n),t(ae,We),t(We,qa),h(Gt,qa,null),t(ae,cr),t(ae,za),t(za,ur),m(e,mi,n),m(e,Fl,n),t(Fl,dr),m(e,ci,n),m(e,xl,n),t(xl,fr),m(e,ui,n),h(kt,e,n),m(e,di,n),m(e,se,n),t(se,Bt),t(Bt,$l),t(Bt,hr),t(Bt,Rl),t(Rl,gr),t(se,yr),t(se,Et),t(Et,Yl),t(Et,Mr),t(Et,Nl),t(Nl,br),m(e,fi,n),m(e,ie,n),t(ie,Te),t(Te,Pa),h(Xt,Pa,null),t(ie,Jr),t(ie,Da),t(Da,Zr),m(e,hi,n),m(e,Sl,n),t(Sl,wr),m(e,gi,n),m(e,ne,n),t(ne,_e),t(_e,La),h(Vt,La,null),t(ne,vr),t(ne,Ka),t(Ka,jr),m(e,yi,n),m(e,Ft,n),t(Ft,Oa),t(Oa,Ur),t(Ft,Wr),m(e,Mi,n),m(e,Ie,n),t(Ie,oe),t(oe,Tr),t(oe,es),t(es,_r),t(oe,Ir),t(oe,ts),t(ts,Gr),t(oe,kr),t(Ie,Br),t(Ie,xt),t(xt,Er),t(xt,ls),t(ls,Xr),t(xt,Vr),m(e,bi,n),m(e,E,n),t(E,Fr),t(E,as),t(as,xr),t(E,$r),t(E,ss),t(ss,Rr),t(E,Yr),t(E,is),t(is,Nr),t(E,Sr),t(E,ns),t(ns,Qr),t(E,Cr),t(E,os),t(os,Ar),t(E,Hr),m(e,Ji,n),h($t,e,n),m(e,Zi,n),m(e,C,n),t(C,Ge),t(Ge,Ql),t(Ge,qr),t(Ge,Cl),t(Cl,zr),t(C,Pr),t(C,ke),t(ke,Al),t(ke,Dr),t(ke,Hl),t(Hl,Lr),t(C,Kr),t(C,Be),t(Be,ql),t(Be,Or),t(Be,zl),t(zl,ep),m(e,wi,n),m(e,re,n),t(re,Ee),t(Ee,rs),h(Rt,rs,null),t(re,tp),t(re,ps),t(ps,lp),m(e,vi,n),m(e,N,n),t(N,ap),t(N,ms),t(ms,sp),t(N,ip),t(N,cs),t(cs,np),t(N,op),t(N,us),t(us,rp),t(N,pp),m(e,ji,n),m(e,X,n),t(X,mp),t(X,ds),t(ds,cp),t(X,up),t(X,fs),t(fs,dp),t(X,fp),t(X,hs),t(hs,hp),t(X,gp),t(X,gs),t(gs,yp),t(X,Mp),t(X,ys),t(ys,bp),t(X,Jp),m(e,Ui,n),h(Yt,e,n),m(e,Wi,n),m(e,A,n),t(A,Xe),t(Xe,Pl),t(Xe,Zp),t(Xe,Dl),t(Dl,wp),t(A,vp),t(A,Ve),t(Ve,Ll),t(Ve,jp),t(Ve,Kl),t(Kl,Up),t(A,Wp),t(A,Fe),t(Fe,Ol),t(Fe,Tp),t(Fe,ea),t(ea,_p),m(e,Ti,n),m(e,pe,n),t(pe,xe),t(xe,Ms),h(Nt,Ms,null),t(pe,Ip),t(pe,bs),t(bs,Gp),m(e,_i,n),m(e,$e,n),t($e,kp),t($e,Js),t(Js,Bp),t($e,Ep),m(e,Ii,n),h(St,e,n),m(e,Gi,n),m(e,me,n),t(me,Re),t(Re,ta),t(Re,Xp),t(Re,la),t(la,Vp),t(me,Fp),t(me,Ye),t(Ye,aa),t(Ye,xp),t(Ye,sa),t(sa,$p),m(e,ki,n),m(e,ce,n),t(ce,Ne),t(Ne,Zs),h(Qt,Zs,null),t(ce,Rp),t(ce,ws),t(ws,Yp),m(e,Bi,n),m(e,ia,n),t(ia,Np),m(e,Ei,n),m(e,ue,n),t(ue,Se),t(Se,vs),h(Ct,vs,null),t(ue,Sp),t(ue,js),t(js,Qp),m(e,Xi,n),m(e,na,n),t(na,Cp),m(e,Vi,n),m(e,oa,n),t(oa,Ap),m(e,Fi,n),h(At,e,n),m(e,xi,n),m(e,ra,n),t(ra,Hp),m(e,$i,n),h(Ht,e,n),m(e,Ri,n),m(e,de,n),t(de,Qe),t(Qe,Us),h(qt,Us,null),t(de,qp),t(de,Ws),t(Ws,zp),m(e,Yi,n),m(e,pa,n),t(pa,Pp),m(e,Ni,n),m(e,ma,n),t(ma,Dp),m(e,Si,n),h(zt,e,n),m(e,Qi,n),h(Ce,e,n),m(e,Ci,n),m(e,Ae,n),t(Ae,Lp),t(Ae,Pt),t(Pt,Kp),t(Ae,Op),m(e,Ai,n),h(Dt,e,n),m(e,Hi,n),m(e,He,n),t(He,em),t(He,Lt),t(Lt,tm),t(He,lm),m(e,qi,n),h(Kt,e,n),m(e,zi,n),m(e,fe,n),t(fe,qe),t(qe,Ts),h(Ot,Ts,null),t(fe,am),t(fe,_s),t(_s,sm),m(e,Pi,n),m(e,ca,n),t(ca,im),m(e,Di,n),m(e,ua,n),t(ua,nm),m(e,Li,n),h(el,e,n),m(e,Ki,n),h(ze,e,n),m(e,Oi,n),m(e,da,n),t(da,om),m(e,en,n),h(tl,e,n),m(e,tn,n),m(e,fa,n),t(fa,rm),m(e,ln,n),h(ll,e,n),m(e,an,n),m(e,he,n),t(he,Pe),t(Pe,Is),h(al,Is,null),t(he,pm),t(he,Gs),t(Gs,mm),m(e,sn,n),m(e,De,n),t(De,cm),t(De,ks),t(ks,um),t(De,dm),m(e,nn,n),m(e,ge,n),t(ge,Le),t(Le,Bs),h(sl,Bs,null),t(ge,fm),t(ge,Es),t(Es,hm),m(e,on,n),m(e,q,n),t(q,gm),t(q,il),t(il,ym),t(q,Mm),t(q,ha),t(ha,bm),t(q,Jm),m(e,rn,n),m(e,x,n),t(x,ga),t(ga,Zm),t(x,wm),t(x,Xs),t(Xs,vm),t(x,jm),t(x,Vs),t(Vs,Um),t(x,Wm),t(x,Fs),t(Fs,Tm),t(x,_m),m(e,pn,n),h(nl,e,n),m(e,mn,n),m(e,ye,n),t(ye,Ke),t(Ke,xs),h(ol,xs,null),t(ye,Im),t(ye,$s),t($s,Gm),m(e,cn,n),m(e,ya,n),t(ya,km),m(e,un,n),m(e,Ma,n),t(Ma,Bm),m(e,dn,n),h(rl,e,n),m(e,fn,n),m(e,Oe,n),t(Oe,Em),t(Oe,ba),t(ba,Xm),t(Oe,Vm),m(e,hn,n),h(pl,e,n),m(e,gn,n),m(e,Ja,n),t(Ja,Fm),m(e,yn,n),h(ml,e,n),m(e,Mn,n),m(e,H,n),t(H,et),t(et,Za),t(et,xm),t(et,wa),t(wa,$m),t(H,Rm),t(H,tt),t(tt,va),t(tt,Ym),t(tt,ja),t(ja,Nm),t(H,Sm),t(H,lt),t(lt,Ua),t(lt,Qm),t(lt,Wa),t(Wa,Cm),m(e,bn,n),m(e,at,n),t(at,Am),t(at,cl),t(cl,Hm),t(at,qm),m(e,Jn,n),h(ul,e,n),m(e,Zn,n),m(e,dl,n),t(dl,Rs),m(e,wn,n),m(e,Me,n),t(Me,st),t(st,Ys),h(fl,Ys,null),t(Me,zm),t(Me,Ns),t(Ns,Pm),m(e,vn,n),m(e,z,n),t(z,Dm),t(z,Ta),t(Ta,Lm),t(z,Km),t(z,_a),t(_a,Om),t(z,ec),m(e,jn,n),h(hl,e,n),m(e,Un,n),m(e,it,n),t(it,tc),t(it,Ia),t(Ia,Ss),t(Ss,lc),t(it,ac),m(e,Wn,n),h(gl,e,n),m(e,Tn,n),m(e,P,n),t(P,sc),t(P,Ga),t(Ga,ic),t(P,nc),t(P,ka),t(ka,oc),t(P,rc),_n=!0},p(e,[n]){const yl={};n&2&&(yl.$$scope={dirty:n,ctx:e}),Ze.$set(yl);const Qs={};n&2&&(Qs.$$scope={dirty:n,ctx:e}),Ce.$set(Qs);const Cs={};n&2&&(Cs.$$scope={dirty:n,ctx:e}),ze.$set(Cs)},i(e){_n||(g(Z.$$.fragment,e),g(V.$$.fragment,e),g(ct.$$.fragment,e),g(Ze.$$.fragment,e),g(dt.$$.fragment,e),g(ht.$$.fragment,e),g(Mt.$$.fragment,e),g(wt.$$.fragment,e),g(vt.$$.fragment,e),g(Wt.$$.fragment,e),g(Tt.$$.fragment,e),g(Gt.$$.fragment,e),g(kt.$$.fragment,e),g(Xt.$$.fragment,e),g(Vt.$$.fragment,e),g($t.$$.fragment,e),g(Rt.$$.fragment,e),g(Yt.$$.fragment,e),g(Nt.$$.fragment,e),g(St.$$.fragment,e),g(Qt.$$.fragment,e),g(Ct.$$.fragment,e),g(At.$$.fragment,e),g(Ht.$$.fragment,e),g(qt.$$.fragment,e),g(zt.$$.fragment,e),g(Ce.$$.fragment,e),g(Dt.$$.fragment,e),g(Kt.$$.fragment,e),g(Ot.$$.fragment,e),g(el.$$.fragment,e),g(ze.$$.fragment,e),g(tl.$$.fragment,e),g(ll.$$.fragment,e),g(al.$$.fragment,e),g(sl.$$.fragment,e),g(nl.$$.fragment,e),g(ol.$$.fragment,e),g(rl.$$.fragment,e),g(pl.$$.fragment,e),g(ml.$$.fragment,e),g(ul.$$.fragment,e),g(fl.$$.fragment,e),g(hl.$$.fragment,e),g(gl.$$.fragment,e),_n=!0)},o(e){y(Z.$$.fragment,e),y(V.$$.fragment,e),y(ct.$$.fragment,e),y(Ze.$$.fragment,e),y(dt.$$.fragment,e),y(ht.$$.fragment,e),y(Mt.$$.fragment,e),y(wt.$$.fragment,e),y(vt.$$.fragment,e),y(Wt.$$.fragment,e),y(Tt.$$.fragment,e),y(Gt.$$.fragment,e),y(kt.$$.fragment,e),y(Xt.$$.fragment,e),y(Vt.$$.fragment,e),y($t.$$.fragment,e),y(Rt.$$.fragment,e),y(Yt.$$.fragment,e),y(Nt.$$.fragment,e),y(St.$$.fragment,e),y(Qt.$$.fragment,e),y(Ct.$$.fragment,e),y(At.$$.fragment,e),y(Ht.$$.fragment,e),y(qt.$$.fragment,e),y(zt.$$.fragment,e),y(Ce.$$.fragment,e),y(Dt.$$.fragment,e),y(Kt.$$.fragment,e),y(Ot.$$.fragment,e),y(el.$$.fragment,e),y(ze.$$.fragment,e),y(tl.$$.fragment,e),y(ll.$$.fragment,e),y(al.$$.fragment,e),y(sl.$$.fragment,e),y(nl.$$.fragment,e),y(ol.$$.fragment,e),y(rl.$$.fragment,e),y(pl.$$.fragment,e),y(ml.$$.fragment,e),y(ul.$$.fragment,e),y(fl.$$.fragment,e),y(hl.$$.fragment,e),y(gl.$$.fragment,e),_n=!1},d(e){l(b),e&&l(I),e&&l(J),M(Z),e&&l(T),M(V,e),e&&l(F),e&&l($),e&&l(pt),e&&l(D),e&&l(As),e&&l(Jl),e&&l(Hs),M(ct,e),e&&l(qs),M(Ze,e),e&&l(zs),e&&l(ut),e&&l(Ps),M(dt,e),e&&l(Ds),e&&l(ft),e&&l(Ls),M(ht,e),e&&l(Ks),e&&l(L),e&&l(Os),e&&l(K),M(Mt),e&&l(ei),e&&l(Y),e&&l(ti),e&&l(O),M(wt),e&&l(li),e&&l(Wl),e&&l(ai),M(vt,e),e&&l(si),e&&l(ee),e&&l(ii),e&&l(te),M(Wt),e&&l(ni),e&&l(Ue),e&&l(oi),M(Tt,e),e&&l(ri),e&&l(le),e&&l(pi),e&&l(ae),M(Gt),e&&l(mi),e&&l(Fl),e&&l(ci),e&&l(xl),e&&l(ui),M(kt,e),e&&l(di),e&&l(se),e&&l(fi),e&&l(ie),M(Xt),e&&l(hi),e&&l(Sl),e&&l(gi),e&&l(ne),M(Vt),e&&l(yi),e&&l(Ft),e&&l(Mi),e&&l(Ie),e&&l(bi),e&&l(E),e&&l(Ji),M($t,e),e&&l(Zi),e&&l(C),e&&l(wi),e&&l(re),M(Rt),e&&l(vi),e&&l(N),e&&l(ji),e&&l(X),e&&l(Ui),M(Yt,e),e&&l(Wi),e&&l(A),e&&l(Ti),e&&l(pe),M(Nt),e&&l(_i),e&&l($e),e&&l(Ii),M(St,e),e&&l(Gi),e&&l(me),e&&l(ki),e&&l(ce),M(Qt),e&&l(Bi),e&&l(ia),e&&l(Ei),e&&l(ue),M(Ct),e&&l(Xi),e&&l(na),e&&l(Vi),e&&l(oa),e&&l(Fi),M(At,e),e&&l(xi),e&&l(ra),e&&l($i),M(Ht,e),e&&l(Ri),e&&l(de),M(qt),e&&l(Yi),e&&l(pa),e&&l(Ni),e&&l(ma),e&&l(Si),M(zt,e),e&&l(Qi),M(Ce,e),e&&l(Ci),e&&l(Ae),e&&l(Ai),M(Dt,e),e&&l(Hi),e&&l(He),e&&l(qi),M(Kt,e),e&&l(zi),e&&l(fe),M(Ot),e&&l(Pi),e&&l(ca),e&&l(Di),e&&l(ua),e&&l(Li),M(el,e),e&&l(Ki),M(ze,e),e&&l(Oi),e&&l(da),e&&l(en),M(tl,e),e&&l(tn),e&&l(fa),e&&l(ln),M(ll,e),e&&l(an),e&&l(he),M(al),e&&l(sn),e&&l(De),e&&l(nn),e&&l(ge),M(sl),e&&l(on),e&&l(q),e&&l(rn),e&&l(x),e&&l(pn),M(nl,e),e&&l(mn),e&&l(ye),M(ol),e&&l(cn),e&&l(ya),e&&l(un),e&&l(Ma),e&&l(dn),M(rl,e),e&&l(fn),e&&l(Oe),e&&l(hn),M(pl,e),e&&l(gn),e&&l(Ja),e&&l(yn),M(ml,e),e&&l(Mn),e&&l(H),e&&l(bn),e&&l(at),e&&l(Jn),M(ul,e),e&&l(Zn),e&&l(dl),e&&l(wn),e&&l(Me),M(fl),e&&l(vn),e&&l(z),e&&l(jn),M(hl,e),e&&l(Un),e&&l(it),e&&l(Wn),M(gl,e),e&&l(Tn),e&&l(P)}}}const df={local:"imagetoimage",sections:[{local:"popular-models",sections:[{local:"stable-diffusion-v15",title:"Stable Diffusion v1.5"},{local:"stable-diffusion-xl-sdxl",title:"Stable Diffusion XL (SDXL)"},{local:"kandinsky-22",title:"Kandinsky 2.2"}],title:"Popular models"},{local:"configure-pipeline-parameters",sections:[{local:"strength",title:"Strength"},{local:"guidance-scale",title:"Guidance scale"},{local:"negative-prompt",title:"Negative prompt"}],title:"Configure pipeline parameters"},{local:"chained-imagetoimage-pipelines",sections:[{local:"texttoimagetoimage",title:"Text-to-image-to-image"},{local:"imagetoimagetoimage",title:"Image-to-image-to-image"},{local:"imagetoupscalertosuperresolution",title:"Image-to-upscaler-to-super-resolution"}],title:"Chained image-to-image pipelines"},{local:"control-image-generation",sections:[{local:"prompt-weighting",title:"Prompt weighting"},{local:"controlnet",title:"ControlNet"}],title:"Control image generation"},{local:"optimize",title:"Optimize"}],title:"Image-to-image"};function ff(Je){return of(()=>{new URLSearchParams(window.location.search).get("fw")}),[]}class Jf extends lf{constructor(b){super();af(this,b,ff,uf,sf,{})}}export{Jf as default,df as metadata}; | |
Xet Storage Details
- Size:
- 109 kB
- Xet hash:
- 0399eec183c81a041131fc795fd994806a57813ce23421a57ab531ed2cfe45d5
·
Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.