import{S as Fl,i as Bl,s as zl,e as o,k as p,w as y,t as n,M as Wl,c as s,d as t,m as h,a as r,x as k,h as a,b as f,N as Fe,G as i,g as u,y as E,q as b,o as D,B as $,v as Rl}from"../../chunks/vendor-hf-doc-builder.js";import{T as Gl}from"../../chunks/Tip-hf-doc-builder.js";import{I as ct}from"../../chunks/IconCopyLink-hf-doc-builder.js";import{C as ar}from"../../chunks/CodeBlock-hf-doc-builder.js";function Jl(Be){let c,_;return{c(){c=o("p"),_=n("This is an experimental feature.")},l(d){c=s(d,"P",{});var m=r(c);_=a(m,"This is an experimental feature."),m.forEach(t)},m(d,m){u(d,c,m),i(c,_)},d(d){d&&t(c)}}}function Yl(Be){let c,_;return{c(){c=o("p"),_=n("Note that we\u2019re not specifying the UNet weights here since the UNet is not fine-tuned during Textual Inversion.")},l(d){c=s(d,"P",{});var m=r(c);_=a(m,"Note that we\u2019re not specifying the UNet weights here since the UNet is not fine-tuned during Textual Inversion."),m.forEach(t)},m(d,m){u(d,c,m),i(c,_)},d(d){d&&t(c)}}}function Ql(Be){let c,_,d,m,dt,ie,ro,mt,lo,ii,j,oi,v,oe,no,ao,se,fo,uo,re,po,ho,le,co,mo,ne,vo,_o,si,P,go,ae,wo,yo,fe,vt,ko,Eo,ri,S,bo,ue,Do,$o,pe,Po,So,li,M,O,_t,he,xo,gt,Ao,ni,H,Io,G,Co,wt,Lo,No,ai,g,yt,ce,Mo,Uo,kt,de,Vo,qo,Et,me,Ko,To,bt,ve,jo,fi,ze,Oo,ui,x,Dt,Ho,Go,$t,Fo,Bo,Pt,zo,pi,We,Wo,hi,A,St,Ro,Jo,xt,Yo,Qo,At,Xo,ci,U,F,It,_e,Zo,Ct,es,di,I,ts,ge,is,os,Lt,ss,rs,mi,Re,ls,vi,C,Nt,ns,as,Mt,fs,us,Ut,ps,_i,we,Vt,fr,gi,Je,hs,wi,ye,qt,ur,yi,B,cs,ke,ds,ms,ki,Ee,Kt,pr,Ei,z,vs,be,_s,gs,bi,De,Tt,hr,Di,W,$i,Ye,ws,Pi,V,R,jt,$e,ys,Ot,ks,Si,J,Es,Pe,bs,Ds,xi,Se,Ht,cr,Ai,Qe,$s,Ii,xe,Ci,Y,Ps,Gt,Ss,xs,Li,Ae,Ni,Xe,As,Mi,Ie,Ft,dr,Ui,Ze,Bt,q,Is,zt,Cs,Ls,Ce,Ns,Ms,Vi,et,Us,qi,Q,tt,Le,Vs,qs,Ks,it,Ne,Ts,js,Ki,K,X,Wt,Me,Os,Rt,Hs,Ti,L,Gs,Ue,Jt,Fs,Bs,Ve,Yt,zs,Ws,ji,Z,Rs,qe,Js,Ys,Oi,Ke,Hi,Te,Qt,mr,Gi,N,Qs,je,Xs,Zs,Oe,er,tr,Fi,T,ee,Xt,He,ir,Zt,or,Bi,ot,ei,sr,zi;return ie=new ct({}),j=new Gl({props:{warning:!0,$$slots:{default:[Jl]},$$scope:{ctx:Be}}}),he=new ct({}),_e=new ct({}),W=new Gl({props:{$$slots:{default:[Yl]},$$scope:{ctx:Be}}}),$e=new ct({}),xe=new ar({props:{code:`from diffusers import DiffusionPipeline

pipeline = DiffusionPipeline.from_pretrained("sayakpaul/textual-inversion-cat-kerascv_sd_diffusers_pipeline")`,highlighted:`<span class="hljs-keyword">from</span> diffusers <span class="hljs-keyword">import</span> DiffusionPipeline

pipeline = DiffusionPipeline.from_pretrained(<span class="hljs-string">&quot;sayakpaul/textual-inversion-cat-kerascv_sd_diffusers_pipeline&quot;</span>)`}}),Ae=new ar({props:{code:`from diffusers import DiffusionPipeline

pipeline = DiffusionPipeline.from_pretrained("sayakpaul/textual-inversion-cat-kerascv_sd_diffusers_pipeline")
pipeline.to("cuda")

placeholder_token = "<my-funny-cat-token>"
prompt = f"two {placeholder_token} getting married, photorealistic, high quality"
image = pipeline(prompt, num_inference_steps=50).images[0]`,highlighted:`<span class="hljs-keyword">from</span> diffusers <span class="hljs-keyword">import</span> DiffusionPipeline

pipeline = DiffusionPipeline.from_pretrained(<span class="hljs-string">&quot;sayakpaul/textual-inversion-cat-kerascv_sd_diffusers_pipeline&quot;</span>)
pipeline.to(<span class="hljs-string">&quot;cuda&quot;</span>)

placeholder_token = <span class="hljs-string">&quot;&lt;my-funny-cat-token&gt;&quot;</span>
prompt = <span class="hljs-string">f&quot;two <span class="hljs-subst">{placeholder_token}</span> getting married, photorealistic, high quality&quot;</span>
image = pipeline(prompt, num_inference_steps=<span class="hljs-number">50</span>).images[<span class="hljs-number">0</span>]`}}),Me=new ct({}),Ke=new ar({props:{code:`from diffusers import DiffusionPipeline, DPMSolverMultistepScheduler

pipeline = DiffusionPipeline.from_pretrained("sayakpaul/textual-inversion-cat-kerascv_sd_diffusers_pipeline")
pipeline.scheduler = DPMSolverMultistepScheduler.from_config(pipeline.scheduler.config)
pipeline.to("cuda")

placeholder_token = "<my-funny-cat-token>"
prompt = f"two {placeholder_token} getting married, photorealistic, high quality"
image = pipeline(prompt, num_inference_steps=50).images[0]`,highlighted:`<span class="hljs-keyword">from</span> diffusers <span class="hljs-keyword">import</span> DiffusionPipeline, DPMSolverMultistepScheduler

pipeline = DiffusionPipeline.from_pretrained(<span class="hljs-string">&quot;sayakpaul/textual-inversion-cat-kerascv_sd_diffusers_pipeline&quot;</span>)
pipeline.scheduler = DPMSolverMultistepScheduler.from_config(pipeline.scheduler.config)
pipeline.to(<span class="hljs-string">&quot;cuda&quot;</span>)

placeholder_token = <span class="hljs-string">&quot;&lt;my-funny-cat-token&gt;&quot;</span>
prompt = <span class="hljs-string">f&quot;two <span class="hljs-subst">{placeholder_token}</span> getting married, photorealistic, high quality&quot;</span>
image = pipeline(prompt, num_inference_steps=<span class="hljs-number">50</span>).images[<span class="hljs-number">0</span>]`}}),He=new ct({}),{c(){c=o("meta"),_=p(),d=o("h1"),m=o("a"),dt=o("span"),y(ie.$$.fragment),ro=p(),mt=o("span"),lo=n("Using KerasCV Stable Diffusion Checkpoints in Diffusers"),ii=p(),y(j.$$.fragment),oi=p(),v=o("p"),oe=o("a"),no=n("KerasCV"),ao=n(` provides APIs for implementing various computer vision workflows. It
also provides the Stable Diffusion `),se=o("a"),fo=n("v1 and v2"),uo=n(`
models. Many practitioners find it easy to fine-tune the Stable Diffusion models shipped by KerasCV. However, as of this writing, KerasCV offers limited support to experiment with Stable Diffusion models for inference and deployment. On the other hand,
Diffusers provides tooling dedicated to this purpose (and more), such as different `),re=o("a"),po=n("noise schedulers"),ho=n(", "),le=o("a"),co=n("flash attention"),mo=n(", and "),ne=o("a"),vo=n(`other
optimization techniques`),_o=n("."),si=p(),P=o("p"),go=n(`How about fine-tuning Stable Diffusion models in KerasCV and exporting them such that they become compatible with Diffusers to combine the
best of both worlds? We have created a `),ae=o("a"),wo=n("tool"),yo=n(` that
lets you do just that! It takes KerasCV Stable Diffusion checkpoints and exports them to Diffusers-compatible checkpoints.
More specifically, it first converts the checkpoints to PyTorch and then wraps them into a
`),fe=o("a"),vt=o("code"),ko=n("StableDiffusionPipeline"),Eo=n(` which is ready
for inference. Finally, it pushes the converted checkpoints to a repository on the Hugging Face Hub.`),ri=p(),S=o("p"),bo=n("We welcome you to try out the tool "),ue=o("a"),Do=n("here"),$o=n(`
and share feedback via `),pe=o("a"),Po=n("discussions"),So=n("."),li=p(),M=o("h2"),O=o("a"),_t=o("span"),y(he.$$.fragment),xo=p(),gt=o("span"),Ao=n("Getting Started"),ni=p(),H=o("p"),Io=n(`First, you need to obtain the fine-tuned KerasCV Stable Diffusion checkpoints. We provide an
overview of the different ways Stable Diffusion models can be fine-tuned `),G=o("a"),Co=n("using "),wt=o("code"),Lo=n("diffusers"),No=n(". For the Keras implementation of some of these methods, you can check out these resources:"),ai=p(),g=o("ul"),yt=o("li"),ce=o("a"),Mo=n("Teach StableDiffusion new concepts via Textual Inversion"),Uo=p(),kt=o("li"),de=o("a"),Vo=n("Fine-tuning Stable Diffusion"),qo=p(),Et=o("li"),me=o("a"),Ko=n("DreamBooth"),To=p(),bt=o("li"),ve=o("a"),jo=n("Prompt-to-Prompt editing"),fi=p(),ze=o("p"),Oo=n("Stable Diffusion is comprised of the following models:"),ui=p(),x=o("ul"),Dt=o("li"),Ho=n("Text encoder"),Go=p(),$t=o("li"),Fo=n("UNet"),Bo=p(),Pt=o("li"),zo=n("VAE"),pi=p(),We=o("p"),Wo=n("Depending on the fine-tuning task, we may fine-tune one or more of these components (the VAE is almost always left untouched). Here are some common combinations:"),hi=p(),A=o("ul"),St=o("li"),Ro=n("DreamBooth: UNet and text encoder"),Jo=p(),xt=o("li"),Yo=n("Classical text to image fine-tuning: UNet"),Qo=p(),At=o("li"),Xo=n("Textual Inversion: Just the newly initialized embeddings in the text encoder"),ci=p(),U=o("h3"),F=o("a"),It=o("span"),y(_e.$$.fragment),Zo=p(),Ct=o("span"),es=n("Performing the Conversion"),di=p(),I=o("p"),ts=n("Let\u2019s use "),ge=o("a"),is=n("this checkpoint"),os=n(` which was generated
by conducting Textual Inversion with the following \u201Cplaceholder token\u201D: `),Lt=o("code"),ss=n("<my-funny-cat-token>"),rs=n("."),mi=p(),Re=o("p"),ls=n("On the tool, we supply the following things:"),vi=p(),C=o("ul"),Nt=o("li"),ns=n("Path(s) to download the fine-tuned checkpoint(s) (KerasCV)"),as=p(),Mt=o("li"),fs=n("An HF token"),us=p(),Ut=o("li"),ps=n("Placeholder token (only applicable for Textual Inversion)"),_i=p(),we=o("div"),Vt=o("img"),gi=p(),Je=o("p"),hs=n("As soon as you hit \u201CSubmit\u201D, the conversion process will begin. Once it\u2019s complete, you should see the following:"),wi=p(),ye=o("div"),qt=o("img"),yi=p(),B=o("p"),cs=n("If you click the "),ke=o("a"),ds=n("link"),ms=n(`, you
should see something like so:`),ki=p(),Ee=o("div"),Kt=o("img"),Ei=p(),z=o("p"),vs=n("If you head over to the "),be=o("a"),_s=n("model card of the repository"),gs=n(`, the
following should appear:`),bi=p(),De=o("div"),Tt=o("img"),Di=p(),y(W.$$.fragment),$i=p(),Ye=o("p"),ws=n("And that\u2019s it! You now have your fine-tuned KerasCV Stable Diffusion model in Diffusers \u{1F9E8}"),Pi=p(),V=o("h2"),R=o("a"),jt=o("span"),y($e.$$.fragment),ys=p(),Ot=o("span"),ks=n("Using the Converted Model in Diffusers"),Si=p(),J=o("p"),Es=n("Just beside the model card of the "),Pe=o("a"),bs=n("repository"),Ds=n(`,
you\u2019d notice an inference widget to try out the model directly from the UI \u{1F917}`),xi=p(),Se=o("div"),Ht=o("img"),Ai=p(),Qe=o("p"),$s=n("On the top right hand side, we provide a \u201CUse in Diffusers\u201D button. If you click the button, you should see the following code-snippet:"),Ii=p(),y(xe.$$.fragment),Ci=p(),Y=o("p"),Ps=n("The model is in standard "),Gt=o("code"),Ss=n("diffusers"),xs=n(" format. Let\u2019s perform inference!"),Li=p(),y(Ae.$$.fragment),Ni=p(),Xe=o("p"),As=n("And we get:"),Mi=p(),Ie=o("div"),Ft=o("img"),Ui=p(),Ze=o("p"),Bt=o("em"),q=o("strong"),Is=n("Note that if you specified a "),zt=o("code"),Cs=n("placeholder_token"),Ls=n(` while performing the conversion, the tool will log it accordingly. Refer
to the model card of `),Ce=o("a"),Ns=n("this repository"),Ms=n(`
as an example.`),Vi=p(),et=o("p"),Us=n(`We welcome you to use the tool for various Stable Diffusion fine-tuning scenarios and let us know your feedback! Here are some examples
of Diffusers checkpoints that were obtained using the tool:`),qi=p(),Q=o("ul"),tt=o("li"),Le=o("a"),Vs=n("sayakpaul/text-unet-dogs-kerascv_sd_diffusers_pipeline"),qs=n(" (DreamBooth with both the text encoder and UNet fine-tuned)"),Ks=p(),it=o("li"),Ne=o("a"),Ts=n("sayakpaul/unet-dogs-kerascv_sd_diffusers_pipeline"),js=n(" (DreamBooth with only the UNet fine-tuned)"),Ki=p(),K=o("h2"),X=o("a"),Wt=o("span"),y(Me.$$.fragment),Os=p(),Rt=o("span"),Hs=n("Incorporating Diffusers Goodies \u{1F381}"),Ti=p(),L=o("p"),Gs=n(`Diffusers provides various options that one can leverage to experiment with different inference setups. One particularly
useful option is the use of a different noise scheduler during inference other than what was used during fine-tuning.
Let\u2019s try out the `),Ue=o("a"),Jt=o("code"),Fs=n("DPMSolverMultistepScheduler"),Bs=n(`
which is different from the one (`),Ve=o("a"),Yt=o("code"),zs=n("DDPMScheduler"),Ws=n(`) used during
fine-tuning.`),ji=p(),Z=o("p"),Rs=n("You can read more details about this process in "),qe=o("a"),Js=n("this section"),Ys=n("."),Oi=p(),y(Ke.$$.fragment),Hi=p(),Te=o("div"),Qt=o("img"),Gi=p(),N=o("p"),Qs=n("One can also continue fine-tuning from these Diffusers checkpoints by leveraging some relevant tools from Diffusers. Refer "),je=o("a"),Xs=n("here"),Zs=n(` for
more details. For inference-specific optimizations, refer `),Oe=o("a"),er=n("here"),tr=n("."),Fi=p(),T=o("h2"),ee=o("a"),Xt=o("span"),y(He.$$.fragment),ir=p(),Zt=o("span"),or=n("Known Limitations"),Bi=p(),ot=o("ul"),ei=o("li"),sr=n("Only Stable Diffusion v1 checkpoints are supported for conversion in this tool."),this.h()},l(e){const l=Wl('[data-svelte="svelte-1phssyn"]',document.head);c=s(l,"META",{name:!0,content:!0}),l.forEach(t),_=h(e),d=s(e,"H1",{class:!0});var Ge=r(d);m=s(Ge,"A",{id:!0,class:!0,href:!0});var ti=r(m);dt=s(ti,"SPAN",{});var vr=r(dt);k(ie.$$.fragment,vr),vr.forEach(t),ti.forEach(t),ro=h(Ge),mt=s(Ge,"SPAN",{});var _r=r(mt);lo=a(_r,"Using KerasCV Stable Diffusion Checkpoints in Diffusers"),_r.forEach(t),Ge.forEach(t),ii=h(e),k(j.$$.fragment,e),oi=h(e),v=s(e,"P",{});var w=r(v);oe=s(w,"A",{href:!0,rel:!0});var gr=r(oe);no=a(gr,"KerasCV"),gr.forEach(t),ao=a(w,` provides APIs for implementing various computer vision workflows. It
also provides the Stable Diffusion `),se=s(w,"A",{href:!0,rel:!0});var wr=r(se);fo=a(wr,"v1 and v2"),wr.forEach(t),uo=a(w,`
models. Many practitioners find it easy to fine-tune the Stable Diffusion models shipped by KerasCV. However, as of this writing, KerasCV offers limited support to experiment with Stable Diffusion models for inference and deployment. On the other hand,
Diffusers provides tooling dedicated to this purpose (and more), such as different `),re=s(w,"A",{href:!0,rel:!0});var yr=r(re);po=a(yr,"noise schedulers"),yr.forEach(t),ho=a(w,", "),le=s(w,"A",{href:!0,rel:!0});var kr=r(le);co=a(kr,"flash attention"),kr.forEach(t),mo=a(w,", and "),ne=s(w,"A",{href:!0,rel:!0});var Er=r(ne);vo=a(Er,`other
optimization techniques`),Er.forEach(t),_o=a(w,"."),w.forEach(t),si=h(e),P=s(e,"P",{});var st=r(P);go=a(st,`How about fine-tuning Stable Diffusion models in KerasCV and exporting them such that they become compatible with Diffusers to combine the
best of both worlds? We have created a `),ae=s(st,"A",{href:!0,rel:!0});var br=r(ae);wo=a(br,"tool"),br.forEach(t),yo=a(st,` that
lets you do just that! It takes KerasCV Stable Diffusion checkpoints and exports them to Diffusers-compatible checkpoints.
More specifically, it first converts the checkpoints to PyTorch and then wraps them into a
`),fe=s(st,"A",{href:!0,rel:!0});var Dr=r(fe);vt=s(Dr,"CODE",{});var $r=r(vt);ko=a($r,"StableDiffusionPipeline"),$r.forEach(t),Dr.forEach(t),Eo=a(st,` which is ready
for inference. Finally, it pushes the converted checkpoints to a repository on the Hugging Face Hub.`),st.forEach(t),ri=h(e),S=s(e,"P",{});var rt=r(S);bo=a(rt,"We welcome you to try out the tool "),ue=s(rt,"A",{href:!0,rel:!0});var Pr=r(ue);Do=a(Pr,"here"),Pr.forEach(t),$o=a(rt,`
and share feedback via `),pe=s(rt,"A",{href:!0,rel:!0});var Sr=r(pe);Po=a(Sr,"discussions"),Sr.forEach(t),So=a(rt,"."),rt.forEach(t),li=h(e),M=s(e,"H2",{class:!0});var Wi=r(M);O=s(Wi,"A",{id:!0,class:!0,href:!0});var xr=r(O);_t=s(xr,"SPAN",{});var Ar=r(_t);k(he.$$.fragment,Ar),Ar.forEach(t),xr.forEach(t),xo=h(Wi),gt=s(Wi,"SPAN",{});var Ir=r(gt);Ao=a(Ir,"Getting Started"),Ir.forEach(t),Wi.forEach(t),ni=h(e),H=s(e,"P",{});var Ri=r(H);Io=a(Ri,`First, you need to obtain the fine-tuned KerasCV Stable Diffusion checkpoints. We provide an
overview of the different ways Stable Diffusion models can be fine-tuned `),G=s(Ri,"A",{href:!0,rel:!0});var rr=r(G);Co=a(rr,"using "),wt=s(rr,"CODE",{});var Cr=r(wt);Lo=a(Cr,"diffusers"),Cr.forEach(t),rr.forEach(t),No=a(Ri,". For the Keras implementation of some of these methods, you can check out these resources:"),Ri.forEach(t),ai=h(e),g=s(e,"UL",{});var te=r(g);yt=s(te,"LI",{});var Lr=r(yt);ce=s(Lr,"A",{href:!0,rel:!0});var Nr=r(ce);Mo=a(Nr,"Teach StableDiffusion new concepts via Textual Inversion"),Nr.forEach(t),Lr.forEach(t),Uo=h(te),kt=s(te,"LI",{});var Mr=r(kt);de=s(Mr,"A",{href:!0,rel:!0});var Ur=r(de);Vo=a(Ur,"Fine-tuning Stable Diffusion"),Ur.forEach(t),Mr.forEach(t),qo=h(te),Et=s(te,"LI",{});var Vr=r(Et);me=s(Vr,"A",{href:!0,rel:!0});var qr=r(me);Ko=a(qr,"DreamBooth"),qr.forEach(t),Vr.forEach(t),To=h(te),bt=s(te,"LI",{});var Kr=r(bt);ve=s(Kr,"A",{href:!0,rel:!0});var Tr=r(ve);jo=a(Tr,"Prompt-to-Prompt editing"),Tr.forEach(t),Kr.forEach(t),te.forEach(t),fi=h(e),ze=s(e,"P",{});var jr=r(ze);Oo=a(jr,"Stable Diffusion is comprised of the following models:"),jr.forEach(t),ui=h(e),x=s(e,"UL",{});var lt=r(x);Dt=s(lt,"LI",{});var Or=r(Dt);Ho=a(Or,"Text encoder"),Or.forEach(t),Go=h(lt),$t=s(lt,"LI",{});var Hr=r($t);Fo=a(Hr,"UNet"),Hr.forEach(t),Bo=h(lt),Pt=s(lt,"LI",{});var Gr=r(Pt);zo=a(Gr,"VAE"),Gr.forEach(t),lt.forEach(t),pi=h(e),We=s(e,"P",{});var Fr=r(We);Wo=a(Fr,"Depending on the fine-tuning task, we may fine-tune one or more of these components (the VAE is almost always left untouched). Here are some common combinations:"),Fr.forEach(t),hi=h(e),A=s(e,"UL",{});var nt=r(A);St=s(nt,"LI",{});var Br=r(St);Ro=a(Br,"DreamBooth: UNet and text encoder"),Br.forEach(t),Jo=h(nt),xt=s(nt,"LI",{});var zr=r(xt);Yo=a(zr,"Classical text to image fine-tuning: UNet"),zr.forEach(t),Qo=h(nt),At=s(nt,"LI",{});var Wr=r(At);Xo=a(Wr,"Textual Inversion: Just the newly initialized embeddings in the text encoder"),Wr.forEach(t),nt.forEach(t),ci=h(e),U=s(e,"H3",{class:!0});var Ji=r(U);F=s(Ji,"A",{id:!0,class:!0,href:!0});var Rr=r(F);It=s(Rr,"SPAN",{});var Jr=r(It);k(_e.$$.fragment,Jr),Jr.forEach(t),Rr.forEach(t),Zo=h(Ji),Ct=s(Ji,"SPAN",{});var Yr=r(Ct);es=a(Yr,"Performing the Conversion"),Yr.forEach(t),Ji.forEach(t),di=h(e),I=s(e,"P",{});var at=r(I);ts=a(at,"Let\u2019s use "),ge=s(at,"A",{href:!0,rel:!0});var Qr=r(ge);is=a(Qr,"this checkpoint"),Qr.forEach(t),os=a(at,` which was generated
by conducting Textual Inversion with the following \u201Cplaceholder token\u201D: `),Lt=s(at,"CODE",{});var Xr=r(Lt);ss=a(Xr,"<my-funny-cat-token>"),Xr.forEach(t),rs=a(at,"."),at.forEach(t),mi=h(e),Re=s(e,"P",{});var Zr=r(Re);ls=a(Zr,"On the tool, we supply the following things:"),Zr.forEach(t),vi=h(e),C=s(e,"UL",{});var ft=r(C);Nt=s(ft,"LI",{});var el=r(Nt);ns=a(el,"Path(s) to download the fine-tuned checkpoint(s) (KerasCV)"),el.forEach(t),as=h(ft),Mt=s(ft,"LI",{});var tl=r(Mt);fs=a(tl,"An HF token"),tl.forEach(t),us=h(ft),Ut=s(ft,"LI",{});var il=r(Ut);ps=a(il,"Placeholder token (only applicable for Textual Inversion)"),il.forEach(t),ft.forEach(t),_i=h(e),we=s(e,"DIV",{align:!0});var ol=r(we);Vt=s(ol,"IMG",{src:!0}),ol.forEach(t),gi=h(e),Je=s(e,"P",{});var sl=r(Je);hs=a(sl,"As soon as you hit \u201CSubmit\u201D, the conversion process will begin. Once it\u2019s complete, you should see the following:"),sl.forEach(t),wi=h(e),ye=s(e,"DIV",{align:!0});var rl=r(ye);qt=s(rl,"IMG",{src:!0}),rl.forEach(t),yi=h(e),B=s(e,"P",{});var Yi=r(B);cs=a(Yi,"If you click the "),ke=s(Yi,"A",{href:!0,rel:!0});var ll=r(ke);ds=a(ll,"link"),ll.forEach(t),ms=a(Yi,`, you
should see something like so:`),Yi.forEach(t),ki=h(e),Ee=s(e,"DIV",{align:!0});var nl=r(Ee);Kt=s(nl,"IMG",{src:!0}),nl.forEach(t),Ei=h(e),z=s(e,"P",{});var Qi=r(z);vs=a(Qi,"If you head over to the "),be=s(Qi,"A",{href:!0,rel:!0});var al=r(be);_s=a(al,"model card of the repository"),al.forEach(t),gs=a(Qi,`, the
following should appear:`),Qi.forEach(t),bi=h(e),De=s(e,"DIV",{align:!0});var fl=r(De);Tt=s(fl,"IMG",{src:!0}),fl.forEach(t),Di=h(e),k(W.$$.fragment,e),$i=h(e),Ye=s(e,"P",{});var ul=r(Ye);ws=a(ul,"And that\u2019s it! You now have your fine-tuned KerasCV Stable Diffusion model in Diffusers \u{1F9E8}"),ul.forEach(t),Pi=h(e),V=s(e,"H2",{class:!0});var Xi=r(V);R=s(Xi,"A",{id:!0,class:!0,href:!0});var pl=r(R);jt=s(pl,"SPAN",{});var hl=r(jt);k($e.$$.fragment,hl),hl.forEach(t),pl.forEach(t),ys=h(Xi),Ot=s(Xi,"SPAN",{});var cl=r(Ot);ks=a(cl,"Using the Converted Model in Diffusers"),cl.forEach(t),Xi.forEach(t),Si=h(e),J=s(e,"P",{});var Zi=r(J);Es=a(Zi,"Just beside the model card of the "),Pe=s(Zi,"A",{href:!0,rel:!0});var dl=r(Pe);bs=a(dl,"repository"),dl.forEach(t),Ds=a(Zi,`,
you\u2019d notice an inference widget to try out the model directly from the UI \u{1F917}`),Zi.forEach(t),xi=h(e),Se=s(e,"DIV",{align:!0});var ml=r(Se);Ht=s(ml,"IMG",{src:!0}),ml.forEach(t),Ai=h(e),Qe=s(e,"P",{});var vl=r(Qe);$s=a(vl,"On the top right hand side, we provide a \u201CUse in Diffusers\u201D button. If you click the button, you should see the following code-snippet:"),vl.forEach(t),Ii=h(e),k(xe.$$.fragment,e),Ci=h(e),Y=s(e,"P",{});var eo=r(Y);Ps=a(eo,"The model is in standard "),Gt=s(eo,"CODE",{});var _l=r(Gt);Ss=a(_l,"diffusers"),_l.forEach(t),xs=a(eo," format. Let\u2019s perform inference!"),eo.forEach(t),Li=h(e),k(Ae.$$.fragment,e),Ni=h(e),Xe=s(e,"P",{});var gl=r(Xe);As=a(gl,"And we get:"),gl.forEach(t),Mi=h(e),Ie=s(e,"DIV",{align:!0});var wl=r(Ie);Ft=s(wl,"IMG",{src:!0}),wl.forEach(t),Ui=h(e),Ze=s(e,"P",{});var yl=r(Ze);Bt=s(yl,"EM",{});var kl=r(Bt);q=s(kl,"STRONG",{});var ut=r(q);Is=a(ut,"Note that if you specified a "),zt=s(ut,"CODE",{});var El=r(zt);Cs=a(El,"placeholder_token"),El.forEach(t),Ls=a(ut,` while performing the conversion, the tool will log it accordingly. Refer
to the model card of `),Ce=s(ut,"A",{href:!0,rel:!0});var bl=r(Ce);Ns=a(bl,"this repository"),bl.forEach(t),Ms=a(ut,`
as an example.`),ut.forEach(t),kl.forEach(t),yl.forEach(t),Vi=h(e),et=s(e,"P",{});var Dl=r(et);Us=a(Dl,`We welcome you to use the tool for various Stable Diffusion fine-tuning scenarios and let us know your feedback! Here are some examples
of Diffusers checkpoints that were obtained using the tool:`),Dl.forEach(t),qi=h(e),Q=s(e,"UL",{});var to=r(Q);tt=s(to,"LI",{});var lr=r(tt);Le=s(lr,"A",{href:!0,rel:!0});var $l=r(Le);Vs=a($l,"sayakpaul/text-unet-dogs-kerascv_sd_diffusers_pipeline"),$l.forEach(t),qs=a(lr," (DreamBooth with both the text encoder and UNet fine-tuned)"),lr.forEach(t),Ks=h(to),it=s(to,"LI",{});var nr=r(it);Ne=s(nr,"A",{href:!0,rel:!0});var Pl=r(Ne);Ts=a(Pl,"sayakpaul/unet-dogs-kerascv_sd_diffusers_pipeline"),Pl.forEach(t),js=a(nr," (DreamBooth with only the UNet fine-tuned)"),nr.forEach(t),to.forEach(t),Ki=h(e),K=s(e,"H2",{class:!0});var io=r(K);X=s(io,"A",{id:!0,class:!0,href:!0});var Sl=r(X);Wt=s(Sl,"SPAN",{});var xl=r(Wt);k(Me.$$.fragment,xl),xl.forEach(t),Sl.forEach(t),Os=h(io),Rt=s(io,"SPAN",{});var Al=r(Rt);Hs=a(Al,"Incorporating Diffusers Goodies \u{1F381}"),Al.forEach(t),io.forEach(t),Ti=h(e),L=s(e,"P",{});var pt=r(L);Gs=a(pt,`Diffusers provides various options that one can leverage to experiment with different inference setups. One particularly
useful option is the use of a different noise scheduler during inference other than what was used during fine-tuning.
Let\u2019s try out the `),Ue=s(pt,"A",{href:!0,rel:!0});var Il=r(Ue);Jt=s(Il,"CODE",{});var Cl=r(Jt);Fs=a(Cl,"DPMSolverMultistepScheduler"),Cl.forEach(t),Il.forEach(t),Bs=a(pt,`
which is different from the one (`),Ve=s(pt,"A",{href:!0,rel:!0});var Ll=r(Ve);Yt=s(Ll,"CODE",{});var Nl=r(Yt);zs=a(Nl,"DDPMScheduler"),Nl.forEach(t),Ll.forEach(t),Ws=a(pt,`) used during
fine-tuning.`),pt.forEach(t),ji=h(e),Z=s(e,"P",{});var oo=r(Z);Rs=a(oo,"You can read more details about this process in "),qe=s(oo,"A",{href:!0,rel:!0});var Ml=r(qe);Js=a(Ml,"this section"),Ml.forEach(t),Ys=a(oo,"."),oo.forEach(t),Oi=h(e),k(Ke.$$.fragment,e),Hi=h(e),Te=s(e,"DIV",{align:!0});var Ul=r(Te);Qt=s(Ul,"IMG",{src:!0}),Ul.forEach(t),Gi=h(e),N=s(e,"P",{});var ht=r(N);Qs=a(ht,"One can also continue fine-tuning from these Diffusers checkpoints by leveraging some relevant tools from Diffusers. Refer "),je=s(ht,"A",{href:!0,rel:!0});var Vl=r(je);Xs=a(Vl,"here"),Vl.forEach(t),Zs=a(ht,` for
more details. For inference-specific optimizations, refer `),Oe=s(ht,"A",{href:!0,rel:!0});var ql=r(Oe);er=a(ql,"here"),ql.forEach(t),tr=a(ht,"."),ht.forEach(t),Fi=h(e),T=s(e,"H2",{class:!0});var so=r(T);ee=s(so,"A",{id:!0,class:!0,href:!0});var Kl=r(ee);Xt=s(Kl,"SPAN",{});var Tl=r(Xt);k(He.$$.fragment,Tl),Tl.forEach(t),Kl.forEach(t),ir=h(so),Zt=s(so,"SPAN",{});var jl=r(Zt);or=a(jl,"Known Limitations"),jl.forEach(t),so.forEach(t),Bi=h(e),ot=s(e,"UL",{});var Ol=r(ot);ei=s(Ol,"LI",{});var Hl=r(ei);sr=a(Hl,"Only Stable Diffusion v1 checkpoints are supported for conversion in this tool."),Hl.forEach(t),Ol.forEach(t),this.h()},h(){f(c,"name","hf:doc:metadata"),f(c,"content",JSON.stringify(Xl)),f(m,"id","using-kerascv-stable-diffusion-checkpoints-in-diffusers"),f(m,"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"),f(m,"href","#using-kerascv-stable-diffusion-checkpoints-in-diffusers"),f(d,"class","relative group"),f(oe,"href","https://github.com/keras-team/keras-cv/"),f(oe,"rel","nofollow"),f(se,"href","https://github.com/keras-team/keras-cv/blob/master/keras_cv/models/stable_diffusion"),f(se,"rel","nofollow"),f(re,"href","https://huggingface.co/docs/diffusers/using-diffusers/schedulers"),f(re,"rel","nofollow"),f(le,"href","https://huggingface.co/docs/diffusers/optimization/xformers"),f(le,"rel","nofollow"),f(ne,"href","https://huggingface.co/docs/diffusers/optimization/fp16"),f(ne,"rel","nofollow"),f(ae,"href","https://huggingface.co/spaces/sayakpaul/convert-kerascv-sd-diffusers"),f(ae,"rel","nofollow"),f(fe,"href","https://huggingface.co/docs/diffusers/api/pipelines/stable_diffusion/overview"),f(fe,"rel","nofollow"),f(ue,"href","https://huggingface.co/spaces/sayakpaul/convert-kerascv-sd-diffusers"),f(ue,"rel","nofollow"),f(pe,"href","https://huggingface.co/spaces/sayakpaul/convert-kerascv-sd-diffusers/discussions/new"),f(pe,"rel","nofollow"),f(O,"id","getting-started"),f(O,"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"),f(O,"href","#getting-started"),f(M,"class","relative group"),f(G,"href","https://huggingface.co/docs/diffusers/training/overview"),f(G,"rel","nofollow"),f(ce,"href","https://keras.io/examples/generative/fine_tune_via_textual_inversion/"),f(ce,"rel","nofollow"),f(de,"href","https://keras.io/examples/generative/finetune_stable_diffusion/"),f(de,"rel","nofollow"),f(me,"href","https://keras.io/examples/generative/dreambooth/"),f(me,"rel","nofollow"),f(ve,"href","https://github.com/miguelCalado/prompt-to-prompt-tensorflow"),f(ve,"rel","nofollow"),f(F,"id","performing-the-conversion"),f(F,"class","header-link block pr-1.5 text-lg no-hover:hidden with-hover:absolute with-hover:p-1.5 with-hover:opacity-0 with-hover:group-hover:opacity-100 with-hover:right-full"),f(F,"href","#performing-the-conversion"),f(U,"class","relative group"),f(ge,"href","https://huggingface.co/sayakpaul/textual-inversion-kerasio/resolve/main/textual_inversion_kerasio.h5"),f(ge,"rel","nofollow"),Fe(Vt.src,fr="https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/diffusers/space_snap.png")||f(Vt,"src",fr),f(we,"align","center"),Fe(qt.src,ur="https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/diffusers/model_push_success.png")||f(qt,"src",ur),f(ye,"align","center"),f(ke,"href","https://huggingface.co/sayakpaul/textual-inversion-cat-kerascv_sd_diffusers_pipeline/tree/main"),f(ke,"rel","nofollow"),Fe(Kt.src,pr="https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/diffusers/model_repo_contents.png")||f(Kt,"src",pr),f(Ee,"align","center"),f(be,"href","https://huggingface.co/sayakpaul/textual-inversion-cat-kerascv_sd_diffusers_pipeline"),f(be,"rel","nofollow"),Fe(Tt.src,hr="https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/diffusers/model_card.png")||f(Tt,"src",hr),f(De,"align","center"),f(R,"id","using-the-converted-model-in-diffusers"),f(R,"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"),f(R,"href","#using-the-converted-model-in-diffusers"),f(V,"class","relative group"),f(Pe,"href","https://huggingface.co/sayakpaul/textual-inversion-cat-kerascv_sd_diffusers_pipeline"),f(Pe,"rel","nofollow"),Fe(Ht.src,cr="https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/diffusers/inference_widget_output.png")||f(Ht,"src",cr),f(Se,"align","center"),Fe(Ft.src,dr="https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/diffusers/diffusers_output_one.png")||f(Ft,"src",dr),f(Ie,"align","center"),f(Ce,"href","https://huggingface.co/sayakpaul/textual-inversion-cat-kerascv_sd_diffusers_pipeline"),f(Ce,"rel","nofollow"),f(Le,"href","https://huggingface.co/sayakpaul/text-unet-dogs-kerascv_sd_diffusers_pipeline"),f(Le,"rel","nofollow"),f(Ne,"href","https://huggingface.co/sayakpaul/unet-dogs-kerascv_sd_diffusers_pipeline"),f(Ne,"rel","nofollow"),f(X,"id","incorporating-diffusers-goodies"),f(X,"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"),f(X,"href","#incorporating-diffusers-goodies"),f(K,"class","relative group"),f(Ue,"href","https://huggingface.co/docs/diffusers/main/en/api/schedulers/multistep_dpm_solver"),f(Ue,"rel","nofollow"),f(Ve,"href","https://huggingface.co/docs/diffusers/main/en/api/schedulers/ddpm"),f(Ve,"rel","nofollow"),f(qe,"href","https://huggingface.co/docs/diffusers/using-diffusers/schedulers"),f(qe,"rel","nofollow"),Fe(Qt.src,mr="https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/diffusers/diffusers_output_two.png")||f(Qt,"src",mr),f(Te,"align","center"),f(je,"href","https://huggingface.co/docs/diffusers/training/overview"),f(je,"rel","nofollow"),f(Oe,"href","https://huggingface.co/docs/diffusers/main/en/optimization/fp16"),f(Oe,"rel","nofollow"),f(ee,"id","known-limitations"),f(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"),f(ee,"href","#known-limitations"),f(T,"class","relative group")},m(e,l){i(document.head,c),u(e,_,l),u(e,d,l),i(d,m),i(m,dt),E(ie,dt,null),i(d,ro),i(d,mt),i(mt,lo),u(e,ii,l),E(j,e,l),u(e,oi,l),u(e,v,l),i(v,oe),i(oe,no),i(v,ao),i(v,se),i(se,fo),i(v,uo),i(v,re),i(re,po),i(v,ho),i(v,le),i(le,co),i(v,mo),i(v,ne),i(ne,vo),i(v,_o),u(e,si,l),u(e,P,l),i(P,go),i(P,ae),i(ae,wo),i(P,yo),i(P,fe),i(fe,vt),i(vt,ko),i(P,Eo),u(e,ri,l),u(e,S,l),i(S,bo),i(S,ue),i(ue,Do),i(S,$o),i(S,pe),i(pe,Po),i(S,So),u(e,li,l),u(e,M,l),i(M,O),i(O,_t),E(he,_t,null),i(M,xo),i(M,gt),i(gt,Ao),u(e,ni,l),u(e,H,l),i(H,Io),i(H,G),i(G,Co),i(G,wt),i(wt,Lo),i(H,No),u(e,ai,l),u(e,g,l),i(g,yt),i(yt,ce),i(ce,Mo),i(g,Uo),i(g,kt),i(kt,de),i(de,Vo),i(g,qo),i(g,Et),i(Et,me),i(me,Ko),i(g,To),i(g,bt),i(bt,ve),i(ve,jo),u(e,fi,l),u(e,ze,l),i(ze,Oo),u(e,ui,l),u(e,x,l),i(x,Dt),i(Dt,Ho),i(x,Go),i(x,$t),i($t,Fo),i(x,Bo),i(x,Pt),i(Pt,zo),u(e,pi,l),u(e,We,l),i(We,Wo),u(e,hi,l),u(e,A,l),i(A,St),i(St,Ro),i(A,Jo),i(A,xt),i(xt,Yo),i(A,Qo),i(A,At),i(At,Xo),u(e,ci,l),u(e,U,l),i(U,F),i(F,It),E(_e,It,null),i(U,Zo),i(U,Ct),i(Ct,es),u(e,di,l),u(e,I,l),i(I,ts),i(I,ge),i(ge,is),i(I,os),i(I,Lt),i(Lt,ss),i(I,rs),u(e,mi,l),u(e,Re,l),i(Re,ls),u(e,vi,l),u(e,C,l),i(C,Nt),i(Nt,ns),i(C,as),i(C,Mt),i(Mt,fs),i(C,us),i(C,Ut),i(Ut,ps),u(e,_i,l),u(e,we,l),i(we,Vt),u(e,gi,l),u(e,Je,l),i(Je,hs),u(e,wi,l),u(e,ye,l),i(ye,qt),u(e,yi,l),u(e,B,l),i(B,cs),i(B,ke),i(ke,ds),i(B,ms),u(e,ki,l),u(e,Ee,l),i(Ee,Kt),u(e,Ei,l),u(e,z,l),i(z,vs),i(z,be),i(be,_s),i(z,gs),u(e,bi,l),u(e,De,l),i(De,Tt),u(e,Di,l),E(W,e,l),u(e,$i,l),u(e,Ye,l),i(Ye,ws),u(e,Pi,l),u(e,V,l),i(V,R),i(R,jt),E($e,jt,null),i(V,ys),i(V,Ot),i(Ot,ks),u(e,Si,l),u(e,J,l),i(J,Es),i(J,Pe),i(Pe,bs),i(J,Ds),u(e,xi,l),u(e,Se,l),i(Se,Ht),u(e,Ai,l),u(e,Qe,l),i(Qe,$s),u(e,Ii,l),E(xe,e,l),u(e,Ci,l),u(e,Y,l),i(Y,Ps),i(Y,Gt),i(Gt,Ss),i(Y,xs),u(e,Li,l),E(Ae,e,l),u(e,Ni,l),u(e,Xe,l),i(Xe,As),u(e,Mi,l),u(e,Ie,l),i(Ie,Ft),u(e,Ui,l),u(e,Ze,l),i(Ze,Bt),i(Bt,q),i(q,Is),i(q,zt),i(zt,Cs),i(q,Ls),i(q,Ce),i(Ce,Ns),i(q,Ms),u(e,Vi,l),u(e,et,l),i(et,Us),u(e,qi,l),u(e,Q,l),i(Q,tt),i(tt,Le),i(Le,Vs),i(tt,qs),i(Q,Ks),i(Q,it),i(it,Ne),i(Ne,Ts),i(it,js),u(e,Ki,l),u(e,K,l),i(K,X),i(X,Wt),E(Me,Wt,null),i(K,Os),i(K,Rt),i(Rt,Hs),u(e,Ti,l),u(e,L,l),i(L,Gs),i(L,Ue),i(Ue,Jt),i(Jt,Fs),i(L,Bs),i(L,Ve),i(Ve,Yt),i(Yt,zs),i(L,Ws),u(e,ji,l),u(e,Z,l),i(Z,Rs),i(Z,qe),i(qe,Js),i(Z,Ys),u(e,Oi,l),E(Ke,e,l),u(e,Hi,l),u(e,Te,l),i(Te,Qt),u(e,Gi,l),u(e,N,l),i(N,Qs),i(N,je),i(je,Xs),i(N,Zs),i(N,Oe),i(Oe,er),i(N,tr),u(e,Fi,l),u(e,T,l),i(T,ee),i(ee,Xt),E(He,Xt,null),i(T,ir),i(T,Zt),i(Zt,or),u(e,Bi,l),u(e,ot,l),i(ot,ei),i(ei,sr),zi=!0},p(e,[l]){const Ge={};l&2&&(Ge.$$scope={dirty:l,ctx:e}),j.$set(Ge);const ti={};l&2&&(ti.$$scope={dirty:l,ctx:e}),W.$set(ti)},i(e){zi||(b(ie.$$.fragment,e),b(j.$$.fragment,e),b(he.$$.fragment,e),b(_e.$$.fragment,e),b(W.$$.fragment,e),b($e.$$.fragment,e),b(xe.$$.fragment,e),b(Ae.$$.fragment,e),b(Me.$$.fragment,e),b(Ke.$$.fragment,e),b(He.$$.fragment,e),zi=!0)},o(e){D(ie.$$.fragment,e),D(j.$$.fragment,e),D(he.$$.fragment,e),D(_e.$$.fragment,e),D(W.$$.fragment,e),D($e.$$.fragment,e),D(xe.$$.fragment,e),D(Ae.$$.fragment,e),D(Me.$$.fragment,e),D(Ke.$$.fragment,e),D(He.$$.fragment,e),zi=!1},d(e){t(c),e&&t(_),e&&t(d),$(ie),e&&t(ii),$(j,e),e&&t(oi),e&&t(v),e&&t(si),e&&t(P),e&&t(ri),e&&t(S),e&&t(li),e&&t(M),$(he),e&&t(ni),e&&t(H),e&&t(ai),e&&t(g),e&&t(fi),e&&t(ze),e&&t(ui),e&&t(x),e&&t(pi),e&&t(We),e&&t(hi),e&&t(A),e&&t(ci),e&&t(U),$(_e),e&&t(di),e&&t(I),e&&t(mi),e&&t(Re),e&&t(vi),e&&t(C),e&&t(_i),e&&t(we),e&&t(gi),e&&t(Je),e&&t(wi),e&&t(ye),e&&t(yi),e&&t(B),e&&t(ki),e&&t(Ee),e&&t(Ei),e&&t(z),e&&t(bi),e&&t(De),e&&t(Di),$(W,e),e&&t($i),e&&t(Ye),e&&t(Pi),e&&t(V),$($e),e&&t(Si),e&&t(J),e&&t(xi),e&&t(Se),e&&t(Ai),e&&t(Qe),e&&t(Ii),$(xe,e),e&&t(Ci),e&&t(Y),e&&t(Li),$(Ae,e),e&&t(Ni),e&&t(Xe),e&&t(Mi),e&&t(Ie),e&&t(Ui),e&&t(Ze),e&&t(Vi),e&&t(et),e&&t(qi),e&&t(Q),e&&t(Ki),e&&t(K),$(Me),e&&t(Ti),e&&t(L),e&&t(ji),e&&t(Z),e&&t(Oi),$(Ke,e),e&&t(Hi),e&&t(Te),e&&t(Gi),e&&t(N),e&&t(Fi),e&&t(T),$(He),e&&t(Bi),e&&t(ot)}}}const Xl={local:"using-kerascv-stable-diffusion-checkpoints-in-diffusers",sections:[{local:"getting-started",sections:[{local:"performing-the-conversion",title:"Performing the Conversion"}],title:"Getting Started "},{local:"using-the-converted-model-in-diffusers",title:"Using the Converted Model in Diffusers "},{local:"incorporating-diffusers-goodies",title:"Incorporating Diffusers Goodies \u{1F381}"},{local:"known-limitations",title:"Known Limitations "}],title:"Using KerasCV Stable Diffusion Checkpoints in Diffusers"};function Zl(Be){return Rl(()=>{new URLSearchParams(window.location.search).get("fw")}),[]}class rn extends Fl{constructor(c){super();Bl(this,c,Zl,Ql,zl,{})}}export{rn as default,Xl as metadata};
