Buckets:

rtrm's picture
download
raw
76.4 kB
import{s as sn,o as an,n as ve}from"../chunks/scheduler.5c93273d.js";import{S as nn,i as pn,g as i,s as a,r as c,A as Mn,h as p,f as t,c as n,j as tn,u as o,x as M,k as ge,y as Jn,a as s,v as m,d as y,t as T,w as r}from"../chunks/index.e43dd92b.js";import{T as Ge}from"../chunks/Tip.1cbfe904.js";import{C as u}from"../chunks/CodeBlock.6896320e.js";import{H as Be,E as cn}from"../chunks/getInferenceSnippets.6dc84e4f.js";function on(b){let J,j='鉴于当前已出现针对图像生成Diffusion模型的成熟评估框架(如<a href="https://crfm.stanford.edu/helm/heim/latest/" rel="nofollow">HEIM</a>、<a href="https://huggingface.co/papers/2307.06350" rel="nofollow">T2I-Compbench</a>、<a href="https://huggingface.co/papers/2310.11513" rel="nofollow">GenEval</a>),本文档部分内容已过时。';return{c(){J=i("p"),J.innerHTML=j},l(d){J=p(d,"P",{"data-svelte-h":!0}),M(J)!=="svelte-1eepoip"&&(J.innerHTML=j)},m(d,w){s(d,J,w)},p:ve,d(d){d&&t(J)}}}function mn(b){let J,j='在模型训练过程中查看推理样本有助于评估训练进度。我们的<a href="https://github.com/huggingface/diffusers/tree/main/examples/" rel="nofollow">训练脚本</a>支持此功能,并额外提供TensorBoard和Weights &amp; Biases日志记录功能。';return{c(){J=i("p"),J.innerHTML=j},l(d){J=p(d,"P",{"data-svelte-h":!0}),M(J)!=="svelte-11fkf2z"&&(J.innerHTML=j)},m(d,w){s(d,J,w)},p:ve,d(d){d&&t(J)}}}function yn(b){let J,j="该分数存在固有局限性:训练数据中的标题是从网络爬取,并提取自图片关联的<code>alt</code>等标签。这些描述未必符合人类描述图像的方式,因此我们需要人工”设计”部分提示词。";return{c(){J=i("p"),J.innerHTML=j},l(d){J=p(d,"P",{"data-svelte-h":!0}),M(J)!=="svelte-1kd06m1"&&(J.innerHTML=j)},m(d,w){s(d,J,w)},p:ve,d(d){d&&t(J)}}}function Tn(b){let J,j="CLIP分数和CLIP方向相似度都依赖CLIP模型,可能导致评估结果存在偏差。";return{c(){J=i("p"),J.textContent=j},l(d){J=p(d,"P",{"data-svelte-h":!0}),M(J)!=="svelte-deyo40"&&(J.textContent=j)},m(d,w){s(d,J,w)},p:ve,d(d){d&&t(J)}}}function rn(b){let J,j="FID结果往往具有脆弱性,因为它依赖于许多因素:",d,w,I="<li>计算过程中使用的特定Inception模型</li> <li>计算实现的准确性</li> <li>图像格式(PNG和JPG的起点不同)</li>",Z,U,We="需要注意的是,FID通常在比较相似实验时最有用,但除非作者仔细公开FID测量代码,否则很难复现论文结果。",B,h,k="这些注意事项同样适用于其他相关指标,如KID和IS。";return{c(){J=i("p"),J.textContent=j,d=a(),w=i("ul"),w.innerHTML=I,Z=a(),U=i("p"),U.textContent=We,B=a(),h=i("p"),h.textContent=k},l(f){J=p(f,"P",{"data-svelte-h":!0}),M(J)!=="svelte-fax4tc"&&(J.textContent=j),d=n(f),w=p(f,"UL",{"data-svelte-h":!0}),M(w)!=="svelte-40toec"&&(w.innerHTML=I),Z=n(f),U=p(f,"P",{"data-svelte-h":!0}),M(U)!=="svelte-1lq2320"&&(U.textContent=We),B=n(f),h=p(f,"P",{"data-svelte-h":!0}),M(h)!=="svelte-1zrqq3"&&(h.textContent=k)},m(f,C){s(f,J,C),s(f,d,C),s(f,w,C),s(f,Z,C),s(f,U,C),s(f,B,C),s(f,h,C)},p:ve,d(f){f&&(t(J),t(d),t(w),t(Z),t(U),t(B),t(h))}}}function dn(b){let J,j,d,w,I,Z,U,We='<img src="https://colab.research.google.com/assets/colab-badge.svg" alt="在 Colab 中打开"/>',B,h,k,f,C='像 <a href="https://huggingface.co/docs/diffusers/stable_diffusion" rel="nofollow">Stable Diffusion</a> 这类生成模型的评估本质上是主观的。但作为开发者和研究者,我们经常需要在众多可能性中做出审慎选择。那么当面对不同生成模型(如 GANs、Diffusion 等)时,该如何决策?',Ve,x,Vs="定性评估容易产生偏差,可能导致错误结论;而定量指标又未必能准确反映图像质量。因此,通常需要结合定性与定量评估来获得更可靠的模型选择依据。",ke,X,ks="本文档将系统介绍扩散模型的定性与定量评估方法(非穷尽列举)。对于定量方法,我们将重点演示如何结合 <code>diffusers</code> 库实现这些评估。",xe,R,xs='文档所示方法同样适用于评估不同<a href="https://huggingface.co/docs/diffusers/main/en/api/schedulers/overview" rel="nofollow">噪声调度器</a>在固定生成模型下的表现差异。',Xe,$,Re,N,Xs="我们涵盖以下Diffusion模型管线的评估:",$e,F,Rs='<li>文本引导图像生成(如 <a href="https://huggingface.co/docs/diffusers/main/en/api/pipelines/stable_diffusion/text2img" rel="nofollow"><code>StableDiffusionPipeline</code></a>)</li> <li>基于文本和输入图像的引导生成(如 <a href="https://huggingface.co/docs/diffusers/main/en/api/pipelines/stable_diffusion/img2img" rel="nofollow"><code>StableDiffusionImg2ImgPipeline</code></a> 和 <a href="https://huggingface.co/docs/diffusers/main/en/api/pipelines/pix2pix" rel="nofollow"><code>StableDiffusionInstructPix2PixPipeline</code></a>)</li> <li>类别条件图像生成模型(如 <a href="https://huggingface.co/docs/diffusers/main/en/api/pipe" rel="nofollow"><code>DiTPipeline</code></a>)</li>',Ne,H,Fe,E,$s='定性评估通常涉及对生成图像的人工评判。评估维度包括构图质量、图文对齐度和空间关系等方面。标准化的提示词能为这些主观指标提供统一基准。DrawBench和PartiPrompts是常用的定性评估提示词数据集,分别由<a href="https://imagen.research.google/" rel="nofollow">Imagen</a>和<a href="https://parti.research.google/" rel="nofollow">Parti</a>团队提出。',He,Y,Ns='根据<a href="https://parti.research.google/" rel="nofollow">Parti官方网站</a>说明:',Ee,Q,Fs="<p>PartiPrompts (P2)是我们发布的包含1600多个英文提示词的丰富集合,可用于测量模型在不同类别和挑战维度上的能力。</p>",Ye,A,Hs='<img src="https://huggingface.co/datasets/diffusers/docs-images/resolve/main/evaluation_diffusion_models/parti-prompts.png" alt="parti-prompts"/>',Qe,z,Es="PartiPrompts包含以下字段:",Ae,S,Ys="<li>Prompt(提示词)</li> <li>Category(类别,如”抽象”、“世界知识”等)</li> <li>Challenge(难度等级,如”基础”、“复杂”、“文字与符号”等)</li>",ze,L,Qs="这些基准测试支持对不同图像生成模型进行并排人工对比评估。为此,🧨 Diffusers团队构建了<strong>Open Parti Prompts</strong>——一个基于Parti Prompts的社区驱动型定性评估基准,用于比较顶尖开源diffusion模型:",Se,P,As='<li><a href="https://huggingface.co/spaces/OpenGenAI/open-parti-prompts" rel="nofollow">Open Parti Prompts游戏</a>:展示10个parti提示词对应的4张生成图像,用户选择最符合提示的图片</li> <li><a href="https://huggingface.co/spaces/OpenGenAI/parti-prompts-leaderboard" rel="nofollow">Open Parti Prompts排行榜</a>:对比当前最优开源diffusion模型的性能榜单</li>',Le,D,zs="为进行手动图像对比,我们演示如何使用<code>diffusers</code>处理部分PartiPrompts提示词。",Pe,q,Ss='以下是从不同挑战维度(基础、复杂、语言结构、想象力、文字与符号)采样的提示词示例(使用<a href="https://huggingface.co/datasets/nateraw/parti-prompts" rel="nofollow">PartiPrompts作为数据集</a>):',De,K,qe,O,Ls='现在我们可以使用Stable Diffusion(<a href="https://huggingface.co/CompVis/stable-diffusion-v1-4" rel="nofollow">v1-4 checkpoint</a>)生成这些提示词对应的图像:',Ke,ll,Oe,el,Ps='<img src="https://huggingface.co/datasets/diffusers/docs-images/resolve/main/evaluation_diffusion_models/parti-prompts-14.png" alt="parti-prompts-14"/>',lt,tl,Ds='我们也可以通过设置<code>num_images_per_prompt</code>参数来比较同一提示词生成的不同图像。使用不同检查点(<a href="https://huggingface.co/stable-diffusion-v1-5/stable-diffusion-v1-5" rel="nofollow">v1-5</a>)运行相同流程后,结果如下:',et,sl,qs='<img src="https://huggingface.co/datasets/diffusers/docs-images/resolve/main/evaluation_diffusion_models/parti-prompts-15.png" alt="parti-prompts-15"/>',tt,al,Ks="当使用多个待评估模型为所有提示词生成若干图像后,这些结果将提交给人类评估员进行打分。有关DrawBench和PartiPrompts基准测试的更多细节,请参阅各自的论文。",st,g,at,nl,nt,il,Os="本节将指导您如何评估三种不同的扩散流程,使用以下指标:",it,pl,la="<li>CLIP分数</li> <li>CLIP方向相似度</li> <li>FID(弗雷歇起始距离)</li>",pt,Ml,Mt,Jl,ea='<a href="https://huggingface.co/papers/2104.08718" rel="nofollow">CLIP分数</a>用于衡量图像-标题对的匹配程度。CLIP分数越高表明匹配度越高🔼。该分数是对”匹配度”这一定性概念的量化测量,也可以理解为图像与标题之间的语义相似度。研究发现CLIP分数与人类判断具有高度相关性。',Jt,cl,ta="首先加载<code>StableDiffusionPipeline</code>:",ct,ol,ot,ml,sa="使用多个提示词生成图像:",mt,yl,yt,Tl,aa="然后计算CLIP分数:",Tt,rl,rt,dl,na="上述示例中,我们为每个提示生成一张图像。如果为每个提示生成多张图像,则需要计算每个提示生成图像的平均分数。",dt,fl,ia='当需要比较两个兼容<code>StableDiffusionPipeline</code>的检查点时,应在调用管道时传入生成器。首先使用<a href="https://huggingface.co/CompVis/stable-diffusion-v1-4" rel="nofollow">v1-4 Stable Diffusion检查点</a>以固定种子生成图像:',ft,ul,ut,wl,pa='然后加载<a href="https://huggingface.co/stable-diffusion-v1-5/stable-diffusion-v1-5" rel="nofollow">v1-5检查点</a>生成图像:',wt,jl,jt,Ul,Ma="最后比较两者的CLIP分数:",Ut,hl,ht,bl,Ja='结果表明<a href="https://huggingface.co/stable-diffusion-v1-5/stable-diffusion-v1-5" rel="nofollow">v1-5</a>检查点性能优于前代。但需注意,我们用于计算CLIP分数的提示词数量较少。实际评估时应使用更多样化且数量更大的提示词集。',bt,W,It,Il,Ct,Cl,ca="这种情况下,生成管道同时接受输入图像和文本提示作为条件。以<code>StableDiffusionInstructPix2PixPipeline</code>为例,该管道接收编辑指令作为输入提示,并接受待编辑的输入图像。",Zt,Zl,oa="示例图示:",Bt,Bl,ma='<img src="https://huggingface.co/datasets/diffusers/docs-images/resolve/main/evaluation_diffusion_models/edit-instruction.png" alt="编辑指令"/>',gt,gl,ya='评估此类模型的策略之一是测量两幅图像间变化的连贯性(通过<a href="https://huggingface.co/docs/transformers/model_doc/clip" rel="nofollow">CLIP</a>定义)中两个图像之间的变化与两个图像描述之间的变化的一致性(如论文<a href="https://huggingface.co/papers/2108.00946" rel="nofollow">《CLIP-Guided Domain Adaptation of Image Generators》</a>所示)。这被称为“<strong>CLIP方向相似度</strong>”。',Wt,Wl,Ta="<li><strong>描述1</strong>对应输入图像(图像1),即待编辑的图像。</li> <li><strong>描述2</strong>对应编辑后的图像(图像2),应反映编辑指令。</li>",_t,_l,ra="以下是示意图:",Gt,Gl,da='<img src="https://huggingface.co/datasets/diffusers/docs-images/resolve/main/evaluation_diffusion_models/edit-consistency.png" alt="edit-consistency"/>',vt,vl,fa="我们准备了一个小型数据集来实现该指标。首先加载数据集:",Vt,Vl,kt,kl,xt,xl,ua="数据字段说明:",Xt,Xl,wa="<li><code>input</code>:与<code>image</code>对应的原始描述。</li> <li><code>edit</code>:编辑指令。</li> <li><code>output</code>:反映<code>edit</code>指令的修改后描述。</li>",Rt,Rl,ja="查看一个样本:",$t,$l,Nt,Nl,Ft,Fl,Ua="对应的图像:",Ht,Hl,Et,El,ha='<img src="https://huggingface.co/datasets/diffusers/docs-images/resolve/main/evaluation_diffusion_models/edit-dataset.png" alt="edit-dataset"/>',Yt,Yl,ba="我们将根据编辑指令修改数据集中的图像,并计算方向相似度。",Qt,Ql,Ia="首先加载<code>StableDiffusionInstructPix2PixPipeline</code>:",At,Al,zt,zl,Ca="执行编辑操作:",St,Sl,Lt,Ll,Za="为测量方向相似度,我们首先加载CLIP的图像和文本编码器:",Pt,Pl,Dt,Dl,Ba='注意我们使用的是特定CLIP检查点——<code>openai/clip-vit-large-patch14</code>,因为Stable Diffusion预训练正是基于此CLIP变体。详见<a href="https://huggingface.co/docs/transformers/model_doc/clip" rel="nofollow">文档</a>。',qt,ql,ga="接着准备计算方向相似度的PyTorch <code>nn.Module</code>:",Kt,Kl,Ot,Ol,Wa="现在让我们使用<code>DirectionalSimilarity</code>模块:",ls,le,es,ee,_a="与CLIP分数类似,CLIP方向相似度数值越高越好。",ts,te,Ga="需要注意的是,<code>StableDiffusionInstructPix2PixPipeline</code>提供了两个控制参数<code>image_guidance_scale</code>和<code>guidance_scale</code>来调节最终编辑图像的质量。建议您尝试调整这两个参数,观察它们对方向相似度的影响。",ss,se,va="我们可以扩展这个度量标准来评估原始图像与编辑版本的相似度,只需计算<code>F.cosine_similarity(img_feat_two, img_feat_one)</code>。对于这类编辑任务,我们仍希望尽可能保留图像的主要语义特征(即保持较高的相似度分数)。",as,ae,Va='该度量方法同样适用于类似流程,例如<a href="https://huggingface.co/docs/diffusers/main/en/api/pipelines/pix2pix_zero#diffusers.StableDiffusionPix2PixZeroPipeline" rel="nofollow"><code>StableDiffusionPix2PixZeroPipeline</code></a>。',ns,_,is,ne,ka='<strong><em>扩展IS、FID(后文讨论)或KID等指标存在困难</em></strong>,当被评估模型是在大型图文数据集(如<a href="https://laion.ai/blog/laion-5b/" rel="nofollow">LAION-5B数据集</a>)上预训练时。因为这些指标的底层都使用了在ImageNet-1k数据集上预训练的InceptionNet来提取图像特征。Stable Diffusion的预训练数据集与InceptionNet的预训练数据集可能重叠有限,因此不适合作为特征提取器。',ps,ie,xa=`<strong><em>上述指标更适合评估类别条件模型</em></strong>,例如<a href="https://huggingface.co/docs/diffusers/main/en/api/pipelines/dit" rel="nofollow">DiT</a>。该模型是在ImageNet-1k类别条件下预训练的。
这是9篇文档中的第8部分。`,Ms,pe,Js,Me,Xa='基于类别的生成模型通常是在带有类别标签的数据集(如<a href="https://huggingface.co/datasets/imagenet-1k" rel="nofollow">ImageNet-1k</a>)上进行预训练的。评估这些模型的常用指标包括Fréchet Inception Distance(FID)、Kernel Inception Distance(KID)和Inception Score(IS)。本文档重点介绍FID(<a href="https://huggingface.co/papers/1706.08500" rel="nofollow">Heusel等人</a>),并展示如何使用<a href="https://huggingface.co/docs/diffusers/api/pipelines/dit" rel="nofollow"><code>DiTPipeline</code></a>计算该指标,该管道底层使用了<a href="https://huggingface.co/papers/2212.09748" rel="nofollow">DiT模型</a>。',cs,Je,Ra='FID旨在衡量两组图像数据集的相似程度。根据<a href="https://mmgeneration.readthedocs.io/en/latest/quick_run.html#fid" rel="nofollow">此资源</a>:',os,ce,$a="<p>Fréchet Inception Distance是衡量两组图像数据集相似度的指标。研究表明其与人类对视觉质量的主观判断高度相关,因此最常用于评估生成对抗网络(GAN)生成样本的质量。FID通过计算Inception网络特征表示所拟合的两个高斯分布之间的Fréchet距离来实现。</p>",ms,oe,Na="这两个数据集本质上是真实图像数据集和生成图像数据集(本例中为人工生成的图像)。FID通常基于两个大型数据集计算,但本文档将使用两个小型数据集进行演示。",ys,me,Fa="首先下载ImageNet-1k训练集中的部分图像:",Ts,ye,rs,Te,ds,re,Ha="这些是来自以下ImageNet-1k类别的10张图像:“cassette_player”、“chain_saw”(2张)、“church”、“gas_pump”(3张)、“parachute”(2张)和”tench”。",fs,G,Ea='<img src="https://huggingface.co/datasets/diffusers/docs-images/resolve/main/evaluation_diffusion_models/real-images.png" alt="真实图像"/><br/> <em>真实图像</em>',us,de,Ya="加载图像后,我们对其进行轻量级预处理以便用于FID计算:",ws,fe,js,ue,Qa='我们现在加载<a href="https://huggingface.co/docs/diffusers/api/pipelines/dit" rel="nofollow"><code>DiTPipeline</code></a>来生成基于上述类别的条件图像。',Us,we,hs,je,Aa='现在,我们可以使用<a href="https://torchmetrics.readthedocs.io/" rel="nofollow"><code>torchmetrics</code></a>计算FID分数。',bs,Ue,Is,he,za="FID分数越低越好。以下因素会影响FID结果:",Cs,be,Sa="<li>图像数量(包括真实图像和生成图像)</li> <li>扩散过程中引入的随机性</li> <li>扩散过程的推理步数</li> <li>扩散过程中使用的调度器</li>",Zs,Ie,La="对于最后两点,最佳实践是使用不同的随机种子和推理步数进行多次评估,然后报告平均结果。",Bs,v,gs,Ce,Pa="最后,让我们可视化检查这些<code>fake_images</code>。",Ws,V,Da='<img src="https://huggingface.co/datasets/diffusers/docs-images/resolve/main/evaluation_diffusion_models/fake-images.png" alt="生成图像"/><br/> <em>生成图像示例</em>',_s,Ze,Gs,_e,vs;return I=new Be({props:{title:"Diffusion模型评估指南",local:"diffusion模型评估指南",headingTag:"h1"}}),h=new Ge({props:{warning:!1,$$slots:{default:[on]},$$scope:{ctx:b}}}),$=new Be({props:{title:"评估场景",local:"评估场景",headingTag:"h2"}}),H=new Be({props:{title:"定性评估",local:"定性评估",headingTag:"h2"}}),K=new u({props:{code:"ZnJvbSUyMGRhdGFzZXRzJTIwaW1wb3J0JTIwbG9hZF9kYXRhc2V0JTBBJTBBJTIzJTIwcHJvbXB0cyUyMCUzRCUyMGxvYWRfZGF0YXNldCglMjJuYXRlcmF3JTJGcGFydGktcHJvbXB0cyUyMiUyQyUyMHNwbGl0JTNEJTIydHJhaW4lMjIpJTBBJTIzJTIwcHJvbXB0cyUyMCUzRCUyMHByb21wdHMuc2h1ZmZsZSgpJTBBJTIzJTIwc2FtcGxlX3Byb21wdHMlMjAlM0QlMjAlNUJwcm9tcHRzJTVCaSU1RCU1QiUyMlByb21wdCUyMiU1RCUyMGZvciUyMGklMjBpbiUyMHJhbmdlKDUpJTVEJTBBJTBBJTIzJTIwRml4aW5nJTIwdGhlc2UlMjBzYW1wbGUlMjBwcm9tcHRzJTIwaW4lMjB0aGUlMjBpbnRlcmVzdCUyMG9mJTIwcmVwcm9kdWNpYmlsaXR5LiUwQXNhbXBsZV9wcm9tcHRzJTIwJTNEJTIwJTVCJTBBJTIwJTIwJTIwJTIwJTIyYSUyMGNvcmdpJTIyJTJDJTBBJTIwJTIwJTIwJTIwJTIyYSUyMGhvdCUyMGFpciUyMGJhbGxvb24lMjB3aXRoJTIwYSUyMHlpbi15YW5nJTIwc3ltYm9sJTJDJTIwd2l0aCUyMHRoZSUyMG1vb24lMjB2aXNpYmxlJTIwaW4lMjB0aGUlMjBkYXl0aW1lJTIwc2t5JTIyJTJDJTBBJTIwJTIwJTIwJTIwJTIyYSUyMGNhciUyMHdpdGglMjBubyUyMHdpbmRvd3MlMjIlMkMlMEElMjAlMjAlMjAlMjAlMjJhJTIwY3ViZSUyMG1hZGUlMjBvZiUyMHBvcmN1cGluZSUyMiUyQyUwQSUyMCUyMCUyMCUyMCdUaGUlMjBzYXlpbmclMjAlMjJCRSUyMEVYQ0VMTEVOVCUyMFRPJTIwRUFDSCUyME9USEVSJTIyJTIwd3JpdHRlbiUyMG9uJTIwYSUyMHJlZCUyMGJyaWNrJTIwd2FsbCUyMHdpdGglMjBhJTIwZ3JhZmZpdGklMjBpbWFnZSUyMG9mJTIwYSUyMGdyZWVuJTIwYWxpZW4lMjB3ZWFyaW5nJTIwYSUyMHR1eGVkby4lMjBBJTIweWVsbG93JTIwZmlyZSUyMGh5ZHJhbnQlMjBpcyUyMG9uJTIwYSUyMHNpZGV3YWxrJTIwaW4lMjB0aGUlMjBmb3JlZ3JvdW5kLiclMkMlMEElNUQ=",highlighted:`<span class="hljs-keyword">from</span> datasets <span class="hljs-keyword">import</span> load_dataset
<span class="hljs-comment"># prompts = load_dataset(&quot;nateraw/parti-prompts&quot;, split=&quot;train&quot;)</span>
<span class="hljs-comment"># prompts = prompts.shuffle()</span>
<span class="hljs-comment"># sample_prompts = [prompts[i][&quot;Prompt&quot;] for i in range(5)]</span>
<span class="hljs-comment"># Fixing these sample prompts in the interest of reproducibility.</span>
sample_prompts = [
<span class="hljs-string">&quot;a corgi&quot;</span>,
<span class="hljs-string">&quot;a hot air balloon with a yin-yang symbol, with the moon visible in the daytime sky&quot;</span>,
<span class="hljs-string">&quot;a car with no windows&quot;</span>,
<span class="hljs-string">&quot;a cube made of porcupine&quot;</span>,
<span class="hljs-string">&#x27;The saying &quot;BE EXCELLENT TO EACH OTHER&quot; written on a red brick wall with a graffiti image of a green alien wearing a tuxedo. A yellow fire hydrant is on a sidewalk in the foreground.&#x27;</span>,
]`,wrap:!1}}),ll=new u({props:{code:"aW1wb3J0JTIwdG9yY2glMEElMEFzZWVkJTIwJTNEJTIwMCUwQWdlbmVyYXRvciUyMCUzRCUyMHRvcmNoLm1hbnVhbF9zZWVkKHNlZWQpJTBBJTBBaW1hZ2VzJTIwJTNEJTIwc2RfcGlwZWxpbmUoc2FtcGxlX3Byb21wdHMlMkMlMjBudW1faW1hZ2VzX3Blcl9wcm9tcHQlM0QxJTJDJTIwZ2VuZXJhdG9yJTNEZ2VuZXJhdG9yKS5pbWFnZXM=",highlighted:`<span class="hljs-keyword">import</span> torch
seed = <span class="hljs-number">0</span>
generator = torch.manual_seed(seed)
images = sd_pipeline(sample_prompts, num_images_per_prompt=<span class="hljs-number">1</span>, generator=generator).images`,wrap:!1}}),g=new Ge({props:{$$slots:{default:[mn]},$$scope:{ctx:b}}}),nl=new Be({props:{title:"定量评估",local:"定量评估",headingTag:"h2"}}),Ml=new Be({props:{title:"文本引导图像生成",local:"文本引导图像生成",headingTag:"h3"}}),ol=new u({props:{code:"ZnJvbSUyMGRpZmZ1c2VycyUyMGltcG9ydCUyMFN0YWJsZURpZmZ1c2lvblBpcGVsaW5lJTBBaW1wb3J0JTIwdG9yY2glMEElMEFtb2RlbF9ja3B0JTIwJTNEJTIwJTIyQ29tcFZpcyUyRnN0YWJsZS1kaWZmdXNpb24tdjEtNCUyMiUwQXNkX3BpcGVsaW5lJTIwJTNEJTIwU3RhYmxlRGlmZnVzaW9uUGlwZWxpbmUuZnJvbV9wcmV0cmFpbmVkKG1vZGVsX2NrcHQlMkMlMjB0b3JjaF9kdHlwZSUzRHRvcmNoLmZsb2F0MTYpLnRvKCUyMmN1ZGElMjIp",highlighted:`<span class="hljs-keyword">from</span> diffusers <span class="hljs-keyword">import</span> StableDiffusionPipeline
<span class="hljs-keyword">import</span> torch
model_ckpt = <span class="hljs-string">&quot;CompVis/stable-diffusion-v1-4&quot;</span>
sd_pipeline = StableDiffusionPipeline.from_pretrained(model_ckpt, torch_dtype=torch.float16).to(<span class="hljs-string">&quot;cuda&quot;</span>)`,wrap:!1}}),yl=new u({props:{code:"cHJvbXB0cyUyMCUzRCUyMCU1QiUwQSUyMCUyMCUyMCUyMCUyMmElMjBwaG90byUyMG9mJTIwYW4lMjBhc3Ryb25hdXQlMjByaWRpbmclMjBhJTIwaG9yc2UlMjBvbiUyMG1hcnMlMjIlMkMlMEElMjAlMjAlMjAlMjAlMjJBJTIwaGlnaCUyMHRlY2glMjBzb2xhcnB1bmslMjB1dG9waWElMjBpbiUyMHRoZSUyMEFtYXpvbiUyMHJhaW5mb3Jlc3QlMjIlMkMlMEElMjAlMjAlMjAlMjAlMjJBJTIwcGlrYWNodSUyMGZpbmUlMjBkaW5pbmclMjB3aXRoJTIwYSUyMHZpZXclMjB0byUyMHRoZSUyMEVpZmZlbCUyMFRvd2VyJTIyJTJDJTBBJTIwJTIwJTIwJTIwJTIyQSUyMG1lY2hhJTIwcm9ib3QlMjBpbiUyMGElMjBmYXZlbGElMjBpbiUyMGV4cHJlc3Npb25pc3QlMjBzdHlsZSUyMiUyQyUwQSUyMCUyMCUyMCUyMCUyMmFuJTIwaW5zZWN0JTIwcm9ib3QlMjBwcmVwYXJpbmclMjBhJTIwZGVsaWNpb3VzJTIwbWVhbCUyMiUyQyUwQSUyMCUyMCUyMCUyMCUyMkElMjBzbWFsbCUyMGNhYmluJTIwb24lMjB0b3AlMjBvZiUyMGElMjBzbm93eSUyMG1vdW50YWluJTIwaW4lMjB0aGUlMjBzdHlsZSUyMG9mJTIwRGlzbmV5JTJDJTIwYXJ0c3RhdGlvbiUyMiUyQyUwQSU1RCUwQSUwQWltYWdlcyUyMCUzRCUyMHNkX3BpcGVsaW5lKHByb21wdHMlMkMlMjBudW1faW1hZ2VzX3Blcl9wcm9tcHQlM0QxJTJDJTIwb3V0cHV0X3R5cGUlM0QlMjJucCUyMikuaW1hZ2VzJTBBJTBBcHJpbnQoaW1hZ2VzLnNoYXBlKSUwQSUyMyUyMCg2JTJDJTIwNTEyJTJDJTIwNTEyJTJDJTIwMyk=",highlighted:`prompts = [
<span class="hljs-string">&quot;a photo of an astronaut riding a horse on mars&quot;</span>,
<span class="hljs-string">&quot;A high tech solarpunk utopia in the Amazon rainforest&quot;</span>,
<span class="hljs-string">&quot;A pikachu fine dining with a view to the Eiffel Tower&quot;</span>,
<span class="hljs-string">&quot;A mecha robot in a favela in expressionist style&quot;</span>,
<span class="hljs-string">&quot;an insect robot preparing a delicious meal&quot;</span>,
<span class="hljs-string">&quot;A small cabin on top of a snowy mountain in the style of Disney, artstation&quot;</span>,
]
images = sd_pipeline(prompts, num_images_per_prompt=<span class="hljs-number">1</span>, output_type=<span class="hljs-string">&quot;np&quot;</span>).images
<span class="hljs-built_in">print</span>(images.shape)
<span class="hljs-comment"># (6, 512, 512, 3)</span>`,wrap:!1}}),rl=new u({props:{code:"ZnJvbSUyMHRvcmNobWV0cmljcy5mdW5jdGlvbmFsLm11bHRpbW9kYWwlMjBpbXBvcnQlMjBjbGlwX3Njb3JlJTBBZnJvbSUyMGZ1bmN0b29scyUyMGltcG9ydCUyMHBhcnRpYWwlMEElMEFjbGlwX3Njb3JlX2ZuJTIwJTNEJTIwcGFydGlhbChjbGlwX3Njb3JlJTJDJTIwbW9kZWxfbmFtZV9vcl9wYXRoJTNEJTIyb3BlbmFpJTJGY2xpcC12aXQtYmFzZS1wYXRjaDE2JTIyKSUwQSUwQWRlZiUyMGNhbGN1bGF0ZV9jbGlwX3Njb3JlKGltYWdlcyUyQyUyMHByb21wdHMpJTNBJTBBJTIwJTIwJTIwJTIwaW1hZ2VzX2ludCUyMCUzRCUyMChpbWFnZXMlMjAqJTIwMjU1KS5hc3R5cGUoJTIydWludDglMjIpJTBBJTIwJTIwJTIwJTIwY2xpcF9zY29yZSUyMCUzRCUyMGNsaXBfc2NvcmVfZm4odG9yY2guZnJvbV9udW1weShpbWFnZXNfaW50KS5wZXJtdXRlKDAlMkMlMjAzJTJDJTIwMSUyQyUyMDIpJTJDJTIwcHJvbXB0cykuZGV0YWNoKCklMEElMjAlMjAlMjAlMjByZXR1cm4lMjByb3VuZChmbG9hdChjbGlwX3Njb3JlKSUyQyUyMDQpJTBBJTBBc2RfY2xpcF9zY29yZSUyMCUzRCUyMGNhbGN1bGF0ZV9jbGlwX3Njb3JlKGltYWdlcyUyQyUyMHByb21wdHMpJTBBcHJpbnQoZiUyMkNMSVAlRTUlODglODYlRTYlOTUlQjAlM0ElMjAlN0JzZF9jbGlwX3Njb3JlJTdEJTIyKSUwQSUyMyUyMENMSVAlRTUlODglODYlRTYlOTUlQjAlM0ElMjAzNS43MDM4",highlighted:`<span class="hljs-keyword">from</span> torchmetrics.functional.multimodal <span class="hljs-keyword">import</span> clip_score
<span class="hljs-keyword">from</span> functools <span class="hljs-keyword">import</span> partial
clip_score_fn = partial(clip_score, model_name_or_path=<span class="hljs-string">&quot;openai/clip-vit-base-patch16&quot;</span>)
<span class="hljs-keyword">def</span> <span class="hljs-title function_">calculate_clip_score</span>(<span class="hljs-params">images, prompts</span>):
images_int = (images * <span class="hljs-number">255</span>).astype(<span class="hljs-string">&quot;uint8&quot;</span>)
clip_score = clip_score_fn(torch.from_numpy(images_int).permute(<span class="hljs-number">0</span>, <span class="hljs-number">3</span>, <span class="hljs-number">1</span>, <span class="hljs-number">2</span>), prompts).detach()
<span class="hljs-keyword">return</span> <span class="hljs-built_in">round</span>(<span class="hljs-built_in">float</span>(clip_score), <span class="hljs-number">4</span>)
sd_clip_score = calculate_clip_score(images, prompts)
<span class="hljs-built_in">print</span>(<span class="hljs-string">f&quot;CLIP分数: <span class="hljs-subst">{sd_clip_score}</span>&quot;</span>)
<span class="hljs-comment"># CLIP分数: 35.7038</span>`,wrap:!1}}),ul=new u({props:{code:"c2VlZCUyMCUzRCUyMDAlMEFnZW5lcmF0b3IlMjAlM0QlMjB0b3JjaC5tYW51YWxfc2VlZChzZWVkKSUwQSUwQWltYWdlcyUyMCUzRCUyMHNkX3BpcGVsaW5lKHByb21wdHMlMkMlMjBudW1faW1hZ2VzX3Blcl9wcm9tcHQlM0QxJTJDJTIwZ2VuZXJhdG9yJTNEZ2VuZXJhdG9yJTJDJTIwb3V0cHV0X3R5cGUlM0QlMjJucCUyMikuaW1hZ2Vz",highlighted:`seed = <span class="hljs-number">0</span>
generator = torch.manual_seed(seed)
images = sd_pipeline(prompts, num_images_per_prompt=<span class="hljs-number">1</span>, generator=generator, output_type=<span class="hljs-string">&quot;np&quot;</span>).images`,wrap:!1}}),jl=new u({props:{code:"bW9kZWxfY2twdF8xXzUlMjAlM0QlMjAlMjJzdGFibGUtZGlmZnVzaW9uLXYxLTUlMkZzdGFibGUtZGlmZnVzaW9uLXYxLTUlMjIlMEFzZF9waXBlbGluZV8xXzUlMjAlM0QlMjBTdGFibGVEaWZmdXNpb25QaXBlbGluZS5mcm9tX3ByZXRyYWluZWQobW9kZWxfY2twdF8xXzUlMkMlMjB0b3JjaF9kdHlwZSUzRHRvcmNoLmZsb2F0MTYpLnRvKCUyMmN1ZGElMjIpJTBBJTBBaW1hZ2VzXzFfNSUyMCUzRCUyMHNkX3BpcGVsaW5lXzFfNShwcm9tcHRzJTJDJTIwbnVtX2ltYWdlc19wZXJfcHJvbXB0JTNEMSUyQyUyMGdlbmVyYXRvciUzRGdlbmVyYXRvciUyQyUyMG91dHB1dF90eXBlJTNEJTIybnAlMjIpLmltYWdlcw==",highlighted:`model_ckpt_1_5 = <span class="hljs-string">&quot;stable-diffusion-v1-5/stable-diffusion-v1-5&quot;</span>
sd_pipeline_1_5 = StableDiffusionPipeline.from_pretrained(model_ckpt_1_5, torch_dtype=torch.float16).to(<span class="hljs-string">&quot;cuda&quot;</span>)
images_1_5 = sd_pipeline_1_5(prompts, num_images_per_prompt=<span class="hljs-number">1</span>, generator=generator, output_type=<span class="hljs-string">&quot;np&quot;</span>).images`,wrap:!1}}),hl=new u({props:{code:"c2RfY2xpcF9zY29yZV8xXzQlMjAlM0QlMjBjYWxjdWxhdGVfY2xpcF9zY29yZShpbWFnZXMlMkMlMjBwcm9tcHRzKSUwQXByaW50KGYlMjJ2LTEtNCVFNyU4OSU4OCVFNiU5QyVBQyVFNyU5QSU4NENMSVAlRTUlODglODYlRTYlOTUlQjAlM0ElMjAlN0JzZF9jbGlwX3Njb3JlXzFfNCU3RCUyMiklMEElMjMlMjB2LTEtNCVFNyU4OSU4OCVFNiU5QyVBQyVFNyU5QSU4NENMSVAlRTUlODglODYlRTYlOTUlQjAlM0ElMjAzNC45MTAyJTBBJTBBc2RfY2xpcF9zY29yZV8xXzUlMjAlM0QlMjBjYWxjdWxhdGVfY2xpcF9zY29yZShpbWFnZXNfMV81JTJDJTIwcHJvbXB0cyklMEFwcmludChmJTIydi0xLTUlRTclODklODglRTYlOUMlQUMlRTclOUElODRDTElQJUU1JTg4JTg2JUU2JTk1JUIwJTNBJTIwJTdCc2RfY2xpcF9zY29yZV8xXzUlN0QlMjIpJTBBJTIzJTIwdi0xLTUlRTclODklODglRTYlOUMlQUMlRTclOUElODRDTElQJUU1JTg4JTg2JUU2JTk1JUIwJTNBJTIwMzYuMjEzNw==",highlighted:`sd_clip_score_1_4 = calculate_clip_score(images, prompts)
<span class="hljs-built_in">print</span>(<span class="hljs-string">f&quot;v-1-4版本的CLIP分数: <span class="hljs-subst">{sd_clip_score_1_4}</span>&quot;</span>)
<span class="hljs-comment"># v-1-4版本的CLIP分数: 34.9102</span>
sd_clip_score_1_5 = calculate_clip_score(images_1_5, prompts)
<span class="hljs-built_in">print</span>(<span class="hljs-string">f&quot;v-1-5版本的CLIP分数: <span class="hljs-subst">{sd_clip_score_1_5}</span>&quot;</span>)
<span class="hljs-comment"># v-1-5版本的CLIP分数: 36.2137</span>`,wrap:!1}}),W=new Ge({props:{warning:!0,$$slots:{default:[yn]},$$scope:{ctx:b}}}),Il=new Be({props:{title:"图像条件式文本生成图像",local:"图像条件式文本生成图像",headingTag:"h3"}}),Vl=new u({props:{code:"ZnJvbSUyMGRhdGFzZXRzJTIwaW1wb3J0JTIwbG9hZF9kYXRhc2V0JTBBJTBBZGF0YXNldCUyMCUzRCUyMGxvYWRfZGF0YXNldCglMjJzYXlha3BhdWwlMkZpbnN0cnVjdHBpeDJwaXgtZGVtbyUyMiUyQyUyMHNwbGl0JTNEJTIydHJhaW4lMjIpJTBBZGF0YXNldC5mZWF0dXJlcw==",highlighted:`<span class="hljs-keyword">from</span> datasets <span class="hljs-keyword">import</span> load_dataset
dataset = load_dataset(<span class="hljs-string">&quot;sayakpaul/instructpix2pix-demo&quot;</span>, split=<span class="hljs-string">&quot;train&quot;</span>)
dataset.features`,wrap:!1}}),kl=new u({props:{code:"JTdCJ2lucHV0JyUzQSUyMFZhbHVlKGR0eXBlJTNEJ3N0cmluZyclMkMlMjBpZCUzRE5vbmUpJTJDJTBBJTIwJ2VkaXQnJTNBJTIwVmFsdWUoZHR5cGUlM0Qnc3RyaW5nJyUyQyUyMGlkJTNETm9uZSklMkMlMEElMjAnb3V0cHV0JyUzQSUyMFZhbHVlKGR0eXBlJTNEJ3N0cmluZyclMkMlMjBpZCUzRE5vbmUpJTJDJTBBJTIwJ2ltYWdlJyUzQSUyMEltYWdlKGRlY29kZSUzRFRydWUlMkMlMjBpZCUzRE5vbmUpJTdE",highlighted:`{<span class="hljs-string">&#x27;input&#x27;</span>: Value(dtype=<span class="hljs-string">&#x27;string&#x27;</span>, <span class="hljs-built_in">id</span>=None),
<span class="hljs-string">&#x27;edit&#x27;</span>: Value(dtype=<span class="hljs-string">&#x27;string&#x27;</span>, <span class="hljs-built_in">id</span>=None),
<span class="hljs-string">&#x27;output&#x27;</span>: Value(dtype=<span class="hljs-string">&#x27;string&#x27;</span>, <span class="hljs-built_in">id</span>=None),
<span class="hljs-string">&#x27;image&#x27;</span>: Image(decode=True, <span class="hljs-built_in">id</span>=None)}`,wrap:!1}}),$l=new u({props:{code:"aWR4JTIwJTNEJTIwMCUwQXByaW50KGYlMjJPcmlnaW5hbCUyMGNhcHRpb24lM0ElMjAlN0JkYXRhc2V0JTVCaWR4JTVEJTVCJ2lucHV0JyU1RCU3RCUyMiklMEFwcmludChmJTIyRWRpdCUyMGluc3RydWN0aW9uJTNBJTIwJTdCZGF0YXNldCU1QmlkeCU1RCU1QidlZGl0JyU1RCU3RCUyMiklMEFwcmludChmJTIyTW9kaWZpZWQlMjBjYXB0aW9uJTNBJTIwJTdCZGF0YXNldCU1QmlkeCU1RCU1QidvdXRwdXQnJTVEJTdEJTIyKQ==",highlighted:`idx = <span class="hljs-number">0</span>
<span class="hljs-built_in">print</span>(<span class="hljs-string">f&quot;Original caption: <span class="hljs-subst">{dataset[idx][<span class="hljs-string">&#x27;input&#x27;</span>]}</span>&quot;</span>)
<span class="hljs-built_in">print</span>(<span class="hljs-string">f&quot;Edit instruction: <span class="hljs-subst">{dataset[idx][<span class="hljs-string">&#x27;edit&#x27;</span>]}</span>&quot;</span>)
<span class="hljs-built_in">print</span>(<span class="hljs-string">f&quot;Modified caption: <span class="hljs-subst">{dataset[idx][<span class="hljs-string">&#x27;output&#x27;</span>]}</span>&quot;</span>)`,wrap:!1}}),Nl=new u({props:{code:"T3JpZ2luYWwlMjBjYXB0aW9uJTNBJTIwMi4lMjBGQVJPRSUyMElTTEFORFMlM0ElMjBBbiUyMGFyY2hpcGVsYWdvJTIwb2YlMjAxOCUyMG1vdW50YWlub3VzJTIwaXNsZXMlMjBpbiUyMHRoZSUyME5vcnRoJTIwQXRsYW50aWMlMjBPY2VhbiUyMGJldHdlZW4lMjBOb3J3YXklMjBhbmQlMjBJY2VsYW5kJTJDJTIwdGhlJTIwRmFyb2UlMjBJc2xhbmRzJTIwaGFzJTIwJ2V2ZXJ5dGhpbmclMjB5b3UlMjBjb3VsZCUyMGhvcGUlMjBmb3InJTJDJTIwYWNjb3JkaW5nJTIwdG8lMjBCaWclMjA3JTIwVHJhdmVsLiUyMEl0JTIwYm9hc3RzJTIwJ2NyeXN0YWwlMjBjbGVhciUyMHdhdGVyZmFsbHMlMkMlMjByb2NreSUyMGNsaWZmcyUyMHRoYXQlMjBzZWVtJTIwdG8lMjBqdXQlMjBvdXQlMjBvZiUyMG5vd2hlcmUlMjBhbmQlMjB2ZWx2ZXR5JTIwZ3JlZW4lMjBoaWxscyclMEFFZGl0JTIwaW5zdHJ1Y3Rpb24lM0ElMjBtYWtlJTIwdGhlJTIwaXNsZXMlMjBhbGwlMjB3aGl0ZSUyMG1hcmJsZSUwQU1vZGlmaWVkJTIwY2FwdGlvbiUzQSUyMDIuJTIwV0hJVEUlMjBNQVJCTEUlMjBJU0xBTkRTJTNBJTIwQW4lMjBhcmNoaXBlbGFnbyUyMG9mJTIwMTglMjBtb3VudGFpbm91cyUyMHdoaXRlJTIwbWFyYmxlJTIwaXNsZXMlMjBpbiUyMHRoZSUyME5vcnRoJTIwQXRsYW50aWMlMjBPY2VhbiUyMGJldHdlZW4lMjBOb3J3YXklMjBhbmQlMjBJY2VsYW5kJTJDJTIwdGhlJTIwV2hpdGUlMjBNYXJibGUlMjBJc2xhbmRzJTIwaGFzJTIwJ2V2ZXJ5dGhpbmclMjB5b3UlMjBjb3VsZCUyMGhvcGUlMjBmb3InJTJDJTIwYWNjb3JkaW5nJTIwdG8lMjBCaWclMjA3JTIwVHJhdmVsLiUyMEl0JTIwYm9hc3RzJTIwJ2NyeXN0YWwlMjBjbGVhciUyMHdhdGVyZmFsbHMlMkMlMjByb2NreSUyMGNsaWZmcyUyMHRoYXQlMjBzZWVtJTIwdG8lMjBqdXQlMjBvdXQlMjBvZiUyMG5vd2hlcmUlMjBhbmQlMjB2ZWx2ZXR5JTIwZ3JlZW4lMjBoaWxscyc=",highlighted:`Original caption: 2. FAROE ISLANDS: An archipelago of 18 mountainous isles <span class="hljs-keyword">in</span> the North Atlantic Ocean between Norway and Iceland, the Faroe Islands has <span class="hljs-string">&#x27;everything you could hope for&#x27;</span>, according to Big 7 Travel. It boasts <span class="hljs-string">&#x27;crystal clear waterfalls, rocky cliffs that seem to jut out of nowhere and velvety green hills&#x27;</span>
Edit instruction: make the isles all white marble
Modified caption: 2. WHITE MARBLE ISLANDS: An archipelago of 18 mountainous white marble isles <span class="hljs-keyword">in</span> the North Atlantic Ocean between Norway and Iceland, the White Marble Islands has <span class="hljs-string">&#x27;everything you could hope for&#x27;</span>, according to Big 7 Travel. It boasts <span class="hljs-string">&#x27;crystal clear waterfalls, rocky cliffs that seem to jut out of nowhere and velvety green hills&#x27;</span>`,wrap:!1}}),Hl=new u({props:{code:"ZGF0YXNldCU1QmlkeCU1RCU1QiUyMmltYWdlJTIyJTVE",highlighted:'dataset[idx][<span class="hljs-string">&quot;image&quot;</span>]',wrap:!1}}),Al=new u({props:{code:"ZnJvbSUyMGRpZmZ1c2VycyUyMGltcG9ydCUyMFN0YWJsZURpZmZ1c2lvbkluc3RydWN0UGl4MlBpeFBpcGVsaW5lJTBBJTBBaW5zdHJ1Y3RfcGl4MnBpeF9waXBlbGluZSUyMCUzRCUyMFN0YWJsZURpZmZ1c2lvbkluc3RydWN0UGl4MlBpeFBpcGVsaW5lLmZyb21fcHJldHJhaW5lZCglMEElMjAlMjAlMjAlMjAlMjJ0aW1icm9va3MlMkZpbnN0cnVjdC1waXgycGl4JTIyJTJDJTIwdG9yY2hfZHR5cGUlM0R0b3JjaC5mbG9hdDE2JTBBKS50byglMjJjdWRhJTIyKQ==",highlighted:`<span class="hljs-keyword">from</span> diffusers <span class="hljs-keyword">import</span> StableDiffusionInstructPix2PixPipeline
instruct_pix2pix_pipeline = StableDiffusionInstructPix2PixPipeline.from_pretrained(
<span class="hljs-string">&quot;timbrooks/instruct-pix2pix&quot;</span>, torch_dtype=torch.float16
).to(<span class="hljs-string">&quot;cuda&quot;</span>)`,wrap:!1}}),Sl=new u({props:{code:"aW1wb3J0JTIwbnVtcHklMjBhcyUyMG5wJTBBJTBBJTBBZGVmJTIwZWRpdF9pbWFnZShpbnB1dF9pbWFnZSUyQyUyMGluc3RydWN0aW9uKSUzQSUwQSUyMCUyMCUyMCUyMGltYWdlJTIwJTNEJTIwaW5zdHJ1Y3RfcGl4MnBpeF9waXBlbGluZSglMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjBpbnN0cnVjdGlvbiUyQyUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMGltYWdlJTNEaW5wdXRfaW1hZ2UlMkMlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjBvdXRwdXRfdHlwZSUzRCUyMm5wJTIyJTJDJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwZ2VuZXJhdG9yJTNEZ2VuZXJhdG9yJTJDJTBBJTIwJTIwJTIwJTIwKS5pbWFnZXMlNUIwJTVEJTBBJTIwJTIwJTIwJTIwcmV0dXJuJTIwaW1hZ2UlMEElMEFpbnB1dF9pbWFnZXMlMjAlM0QlMjAlNUIlNUQlMEFvcmlnaW5hbF9jYXB0aW9ucyUyMCUzRCUyMCU1QiU1RCUwQW1vZGlmaWVkX2NhcHRpb25zJTIwJTNEJTIwJTVCJTVEJTBBZWRpdGVkX2ltYWdlcyUyMCUzRCUyMCU1QiU1RCUwQSUwQWZvciUyMGlkeCUyMGluJTIwcmFuZ2UobGVuKGRhdGFzZXQpKSUzQSUwQSUyMCUyMCUyMCUyMGlucHV0X2ltYWdlJTIwJTNEJTIwZGF0YXNldCU1QmlkeCU1RCU1QiUyMmltYWdlJTIyJTVEJTBBJTIwJTIwJTIwJTIwZWRpdF9pbnN0cnVjdGlvbiUyMCUzRCUyMGRhdGFzZXQlNUJpZHglNUQlNUIlMjJlZGl0JTIyJTVEJTBBJTIwJTIwJTIwJTIwZWRpdGVkX2ltYWdlJTIwJTNEJTIwZWRpdF9pbWFnZShpbnB1dF9pbWFnZSUyQyUyMGVkaXRfaW5zdHJ1Y3Rpb24pJTBBJTBBJTIwJTIwJTIwJTIwaW5wdXRfaW1hZ2VzLmFwcGVuZChucC5hcnJheShpbnB1dF9pbWFnZSkpJTBBJTIwJTIwJTIwJTIwb3JpZ2luYWxfY2FwdGlvbnMuYXBwZW5kKGRhdGFzZXQlNUJpZHglNUQlNUIlMjJpbnB1dCUyMiU1RCklMEElMjAlMjAlMjAlMjBtb2RpZmllZF9jYXB0aW9ucy5hcHBlbmQoZGF0YXNldCU1QmlkeCU1RCU1QiUyMm91dHB1dCUyMiU1RCklMEElMjAlMjAlMjAlMjBlZGl0ZWRfaW1hZ2VzLmFwcGVuZChlZGl0ZWRfaW1hZ2Up",highlighted:`<span class="hljs-keyword">import</span> numpy <span class="hljs-keyword">as</span> np
<span class="hljs-keyword">def</span> <span class="hljs-title function_">edit_image</span>(<span class="hljs-params">input_image, instruction</span>):
image = instruct_pix2pix_pipeline(
instruction,
image=input_image,
output_type=<span class="hljs-string">&quot;np&quot;</span>,
generator=generator,
).images[<span class="hljs-number">0</span>]
<span class="hljs-keyword">return</span> image
input_images = []
original_captions = []
modified_captions = []
edited_images = []
<span class="hljs-keyword">for</span> idx <span class="hljs-keyword">in</span> <span class="hljs-built_in">range</span>(<span class="hljs-built_in">len</span>(dataset)):
input_image = dataset[idx][<span class="hljs-string">&quot;image&quot;</span>]
edit_instruction = dataset[idx][<span class="hljs-string">&quot;edit&quot;</span>]
edited_image = edit_image(input_image, edit_instruction)
input_images.append(np.array(input_image))
original_captions.append(dataset[idx][<span class="hljs-string">&quot;input&quot;</span>])
modified_captions.append(dataset[idx][<span class="hljs-string">&quot;output&quot;</span>])
edited_images.append(edited_image)`,wrap:!1}}),Pl=new u({props:{code:"ZnJvbSUyMHRyYW5zZm9ybWVycyUyMGltcG9ydCUyMCglMEElMjAlMjAlMjAlMjBDTElQVG9rZW5pemVyJTJDJTBBJTIwJTIwJTIwJTIwQ0xJUFRleHRNb2RlbFdpdGhQcm9qZWN0aW9uJTJDJTBBJTIwJTIwJTIwJTIwQ0xJUFZpc2lvbk1vZGVsV2l0aFByb2plY3Rpb24lMkMlMEElMjAlMjAlMjAlMjBDTElQSW1hZ2VQcm9jZXNzb3IlMkMlMEEpJTBBJTBBY2xpcF9pZCUyMCUzRCUyMCUyMm9wZW5haSUyRmNsaXAtdml0LWxhcmdlLXBhdGNoMTQlMjIlMEF0b2tlbml6ZXIlMjAlM0QlMjBDTElQVG9rZW5pemVyLmZyb21fcHJldHJhaW5lZChjbGlwX2lkKSUwQXRleHRfZW5jb2RlciUyMCUzRCUyMENMSVBUZXh0TW9kZWxXaXRoUHJvamVjdGlvbi5mcm9tX3ByZXRyYWluZWQoY2xpcF9pZCkudG8oJTIyY3VkYSUyMiklMEFpbWFnZV9wcm9jZXNzb3IlMjAlM0QlMjBDTElQSW1hZ2VQcm9jZXNzb3IuZnJvbV9wcmV0cmFpbmVkKGNsaXBfaWQpJTBBaW1hZ2VfZW5jb2RlciUyMCUzRCUyMENMSVBWaXNpb25Nb2RlbFdpdGhQcm9qZWN0aW9uLmZyb21fcHJldHJhaW5lZChjbGlwX2lkKS50byglMjJjdWRhJTIyKQ==",highlighted:`<span class="hljs-keyword">from</span> transformers <span class="hljs-keyword">import</span> (
CLIPTokenizer,
CLIPTextModelWithProjection,
CLIPVisionModelWithProjection,
CLIPImageProcessor,
)
clip_id = <span class="hljs-string">&quot;openai/clip-vit-large-patch14&quot;</span>
tokenizer = CLIPTokenizer.from_pretrained(clip_id)
text_encoder = CLIPTextModelWithProjection.from_pretrained(clip_id).to(<span class="hljs-string">&quot;cuda&quot;</span>)
image_processor = CLIPImageProcessor.from_pretrained(clip_id)
image_encoder = CLIPVisionModelWithProjection.from_pretrained(clip_id).to(<span class="hljs-string">&quot;cuda&quot;</span>)`,wrap:!1}}),Kl=new u({props:{code:"aW1wb3J0JTIwdG9yY2gubm4lMjBhcyUyMG5uJTBBaW1wb3J0JTIwdG9yY2gubm4uZnVuY3Rpb25hbCUyMGFzJTIwRiUwQSUwQSUwQWNsYXNzJTIwRGlyZWN0aW9uYWxTaW1pbGFyaXR5KG5uLk1vZHVsZSklM0ElMEElMjAlMjAlMjAlMjBkZWYlMjBfX2luaXRfXyhzZWxmJTJDJTIwdG9rZW5pemVyJTJDJTIwdGV4dF9lbmNvZGVyJTJDJTIwaW1hZ2VfcHJvY2Vzc29yJTJDJTIwaW1hZ2VfZW5jb2RlciklM0ElMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjBzdXBlcigpLl9faW5pdF9fKCklMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjBzZWxmLnRva2VuaXplciUyMCUzRCUyMHRva2VuaXplciUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMHNlbGYudGV4dF9lbmNvZGVyJTIwJTNEJTIwdGV4dF9lbmNvZGVyJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwc2VsZi5pbWFnZV9wcm9jZXNzb3IlMjAlM0QlMjBpbWFnZV9wcm9jZXNzb3IlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjBzZWxmLmltYWdlX2VuY29kZXIlMjAlM0QlMjBpbWFnZV9lbmNvZGVyJTBBJTBBJTIwJTIwJTIwJTIwZGVmJTIwcHJlcHJvY2Vzc19pbWFnZShzZWxmJTJDJTIwaW1hZ2UpJTNBJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwaW1hZ2UlMjAlM0QlMjBzZWxmLmltYWdlX3Byb2Nlc3NvcihpbWFnZSUyQyUyMHJldHVybl90ZW5zb3JzJTNEJTIycHQlMjIpJTVCJTIycGl4ZWxfdmFsdWVzJTIyJTVEJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwcmV0dXJuJTIwJTdCJTIycGl4ZWxfdmFsdWVzJTIyJTNBJTIwaW1hZ2UudG8oJTIyY3VkYSUyMiklN0QlMEElMEElMjAlMjAlMjAlMjBkZWYlMjB0b2tlbml6ZV90ZXh0KHNlbGYlMkMlMjB0ZXh0KSUzQSUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMGlucHV0cyUyMCUzRCUyMHNlbGYudG9rZW5pemVyKCUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMHRleHQlMkMlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjBtYXhfbGVuZ3RoJTNEc2VsZi50b2tlbml6ZXIubW9kZWxfbWF4X2xlbmd0aCUyQyUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMHBhZGRpbmclM0QlMjJtYXhfbGVuZ3RoJTIyJTJDJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwdHJ1bmNhdGlvbiUzRFRydWUlMkMlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjByZXR1cm5fdGVuc29ycyUzRCUyMnB0JTIyJTJDJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwKSUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMHJldHVybiUyMCU3QiUyMmlucHV0X2lkcyUyMiUzQSUyMGlucHV0cy5pbnB1dF9pZHMudG8oJTIyY3VkYSUyMiklN0QlMEElMEElMjAlMjAlMjAlMjBkZWYlMjBlbmNvZGVfaW1hZ2Uoc2VsZiUyQyUyMGltYWdlKSUzQSUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMHByZXByb2Nlc3NlZF9pbWFnZSUyMCUzRCUyMHNlbGYucHJlcHJvY2Vzc19pbWFnZShpbWFnZSklMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjBpbWFnZV9mZWF0dXJlcyUyMCUzRCUyMHNlbGYuaW1hZ2VfZW5jb2RlcigqKnByZXByb2Nlc3NlZF9pbWFnZSkuaW1hZ2VfZW1iZWRzJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwaW1hZ2VfZmVhdHVyZXMlMjAlM0QlMjBpbWFnZV9mZWF0dXJlcyUyMCUyRiUyMGltYWdlX2ZlYXR1cmVzLm5vcm0oZGltJTNEMSUyQyUyMGtlZXBkaW0lM0RUcnVlKSUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMHJldHVybiUyMGltYWdlX2ZlYXR1cmVzJTBBJTBBJTIwJTIwJTIwJTIwZGVmJTIwZW5jb2RlX3RleHQoc2VsZiUyQyUyMHRleHQpJTNBJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwdG9rZW5pemVkX3RleHQlMjAlM0QlMjBzZWxmLnRva2VuaXplX3RleHQodGV4dCklMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjB0ZXh0X2ZlYXR1cmVzJTIwJTNEJTIwc2VsZi50ZXh0X2VuY29kZXIoKip0b2tlbml6ZWRfdGV4dCkudGV4dF9lbWJlZHMlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjB0ZXh0X2ZlYXR1cmVzJTIwJTNEJTIwdGV4dF9mZWF0dXJlcyUyMCUyRiUyMHRleHRfZmVhdHVyZXMubm9ybShkaW0lM0QxJTJDJTIwa2VlcGRpbSUzRFRydWUpJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwcmV0dXJuJTIwdGV4dF9mZWF0dXJlcyUwQSUwQSUyMCUyMCUyMCUyMGRlZiUyMGNvbXB1dGVfZGlyZWN0aW9uYWxfc2ltaWxhcml0eShzZWxmJTJDJTIwaW1nX2ZlYXRfb25lJTJDJTIwaW1nX2ZlYXRfdHdvJTJDJTIwdGV4dF9mZWF0X29uZSUyQyUyMHRleHRfZmVhdF90d28pJTNBJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwc2ltX2RpcmVjdGlvbiUyMCUzRCUyMEYuY29zaW5lX3NpbWlsYXJpdHkoaW1nX2ZlYXRfdHdvJTIwLSUyMGltZ19mZWF0X29uZSUyQyUyMHRleHRfZmVhdF90d28lMjAtJTIwdGV4dF9mZWF0X29uZSklMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjByZXR1cm4lMjBzaW1fZGlyZWN0aW9uJTBBJTBBJTIwJTIwJTIwJTIwZGVmJTIwZm9yd2FyZChzZWxmJTJDJTIwaW1hZ2Vfb25lJTJDJTIwaW1hZ2VfdHdvJTJDJTIwY2FwdGlvbl9vbmUlMkMlMjBjYXB0aW9uX3R3byklM0ElMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjBpbWdfZmVhdF9vbmUlMjAlM0QlMjBzZWxmLmVuY29kZV9pbWFnZShpbWFnZV9vbmUpJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwaW1nX2ZlYXRfdHdvJTIwJTNEJTIwc2VsZi5lbmNvZGVfaW1hZ2UoaW1hZ2VfdHdvKSUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMHRleHRfZmVhdF9vbmUlMjAlM0QlMjBzZWxmLmVuY29kZV90ZXh0KGNhcHRpb25fb25lKSUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMHRleHRfZmVhdF90d28lMjAlM0QlMjBzZWxmLmVuY29kZV90ZXh0KGNhcHRpb25fdHdvKSUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMGRpcmVjdGlvbmFsX3NpbWlsYXJpdHklMjAlM0QlMjBzZWxmLmNvbXB1dGVfZGlyZWN0aW9uYWxfc2ltaWxhcml0eSglMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjBpbWdfZmVhdF9vbmUlMkMlMjBpbWdfZmVhdF90d28lMkMlMjB0ZXh0X2ZlYXRfb25lJTJDJTIwdGV4dF9mZWF0X3R3byUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCklMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjByZXR1cm4lMjBkaXJlY3Rpb25hbF9zaW1pbGFyaXR5",highlighted:`<span class="hljs-keyword">import</span> torch.nn <span class="hljs-keyword">as</span> nn
<span class="hljs-keyword">import</span> torch.nn.functional <span class="hljs-keyword">as</span> F
<span class="hljs-keyword">class</span> <span class="hljs-title class_">DirectionalSimilarity</span>(nn.Module):
<span class="hljs-keyword">def</span> <span class="hljs-title function_">__init__</span>(<span class="hljs-params">self, tokenizer, text_encoder, image_processor, image_encoder</span>):
<span class="hljs-built_in">super</span>().__init__()
self.tokenizer = tokenizer
self.text_encoder = text_encoder
self.image_processor = image_processor
self.image_encoder = image_encoder
<span class="hljs-keyword">def</span> <span class="hljs-title function_">preprocess_image</span>(<span class="hljs-params">self, image</span>):
image = self.image_processor(image, return_tensors=<span class="hljs-string">&quot;pt&quot;</span>)[<span class="hljs-string">&quot;pixel_values&quot;</span>]
<span class="hljs-keyword">return</span> {<span class="hljs-string">&quot;pixel_values&quot;</span>: image.to(<span class="hljs-string">&quot;cuda&quot;</span>)}
<span class="hljs-keyword">def</span> <span class="hljs-title function_">tokenize_text</span>(<span class="hljs-params">self, text</span>):
inputs = self.tokenizer(
text,
max_length=self.tokenizer.model_max_length,
padding=<span class="hljs-string">&quot;max_length&quot;</span>,
truncation=<span class="hljs-literal">True</span>,
return_tensors=<span class="hljs-string">&quot;pt&quot;</span>,
)
<span class="hljs-keyword">return</span> {<span class="hljs-string">&quot;input_ids&quot;</span>: inputs.input_ids.to(<span class="hljs-string">&quot;cuda&quot;</span>)}
<span class="hljs-keyword">def</span> <span class="hljs-title function_">encode_image</span>(<span class="hljs-params">self, image</span>):
preprocessed_image = self.preprocess_image(image)
image_features = self.image_encoder(**preprocessed_image).image_embeds
image_features = image_features / image_features.norm(dim=<span class="hljs-number">1</span>, keepdim=<span class="hljs-literal">True</span>)
<span class="hljs-keyword">return</span> image_features
<span class="hljs-keyword">def</span> <span class="hljs-title function_">encode_text</span>(<span class="hljs-params">self, text</span>):
tokenized_text = self.tokenize_text(text)
text_features = self.text_encoder(**tokenized_text).text_embeds
text_features = text_features / text_features.norm(dim=<span class="hljs-number">1</span>, keepdim=<span class="hljs-literal">True</span>)
<span class="hljs-keyword">return</span> text_features
<span class="hljs-keyword">def</span> <span class="hljs-title function_">compute_directional_similarity</span>(<span class="hljs-params">self, img_feat_one, img_feat_two, text_feat_one, text_feat_two</span>):
sim_direction = F.cosine_similarity(img_feat_two - img_feat_one, text_feat_two - text_feat_one)
<span class="hljs-keyword">return</span> sim_direction
<span class="hljs-keyword">def</span> <span class="hljs-title function_">forward</span>(<span class="hljs-params">self, image_one, image_two, caption_one, caption_two</span>):
img_feat_one = self.encode_image(image_one)
img_feat_two = self.encode_image(image_two)
text_feat_one = self.encode_text(caption_one)
text_feat_two = self.encode_text(caption_two)
directional_similarity = self.compute_directional_similarity(
img_feat_one, img_feat_two, text_feat_one, text_feat_two
)
<span class="hljs-keyword">return</span> directional_similarity`,wrap:!1}}),le=new u({props:{code:"ZGlyX3NpbWlsYXJpdHklMjAlM0QlMjBEaXJlY3Rpb25hbFNpbWlsYXJpdHkodG9rZW5pemVyJTJDJTIwdGV4dF9lbmNvZGVyJTJDJTIwaW1hZ2VfcHJvY2Vzc29yJTJDJTIwaW1hZ2VfZW5jb2RlciklMEFzY29yZXMlMjAlM0QlMjAlNUIlNUQlMEElMEFmb3IlMjBpJTIwaW4lMjByYW5nZShsZW4oaW5wdXRfaW1hZ2VzKSklM0ElMEElMjAlMjAlMjAlMjBvcmlnaW5hbF9pbWFnZSUyMCUzRCUyMGlucHV0X2ltYWdlcyU1QmklNUQlMEElMjAlMjAlMjAlMjBvcmlnaW5hbF9jYXB0aW9uJTIwJTNEJTIwb3JpZ2luYWxfY2FwdGlvbnMlNUJpJTVEJTBBJTIwJTIwJTIwJTIwZWRpdGVkX2ltYWdlJTIwJTNEJTIwZWRpdGVkX2ltYWdlcyU1QmklNUQlMEElMjAlMjAlMjAlMjBtb2RpZmllZF9jYXB0aW9uJTIwJTNEJTIwbW9kaWZpZWRfY2FwdGlvbnMlNUJpJTVEJTBBJTBBJTIwJTIwJTIwJTIwc2ltaWxhcml0eV9zY29yZSUyMCUzRCUyMGRpcl9zaW1pbGFyaXR5KG9yaWdpbmFsX2ltYWdlJTJDJTIwZWRpdGVkX2ltYWdlJTJDJTIwb3JpZ2luYWxfY2FwdGlvbiUyQyUyMG1vZGlmaWVkX2NhcHRpb24pJTBBJTIwJTIwJTIwJTIwc2NvcmVzLmFwcGVuZChmbG9hdChzaW1pbGFyaXR5X3Njb3JlLmRldGFjaCgpLmNwdSgpKSklMEElMEFwcmludChmJTIyQ0xJUCVFNiU5NiVCOSVFNSU5MCU5MSVFNyU5QiVCOCVFNCVCQyVCQyVFNSVCQSVBNiUzQSUyMCU3Qm5wLm1lYW4oc2NvcmVzKSU3RCUyMiklMEElMjMlMjBDTElQJUU2JTk2JUI5JUU1JTkwJTkxJUU3JTlCJUI4JUU0JUJDJUJDJUU1JUJBJUE2JTNBJTIwMC4wNzk3OTc2NTUzNDQwMDk0",highlighted:`dir_similarity = DirectionalSimilarity(tokenizer, text_encoder, image_processor, image_encoder)
scores = []
<span class="hljs-keyword">for</span> i <span class="hljs-keyword">in</span> <span class="hljs-built_in">range</span>(<span class="hljs-built_in">len</span>(input_images)):
original_image = input_images[i]
original_caption = original_captions[i]
edited_image = edited_images[i]
modified_caption = modified_captions[i]
similarity_score = dir_similarity(original_image, edited_image, original_caption, modified_caption)
scores.append(<span class="hljs-built_in">float</span>(similarity_score.detach().cpu()))
<span class="hljs-built_in">print</span>(<span class="hljs-string">f&quot;CLIP方向相似度: <span class="hljs-subst">{np.mean(scores)}</span>&quot;</span>)
<span class="hljs-comment"># CLIP方向相似度: 0.0797976553440094</span>`,wrap:!1}}),_=new Ge({props:{$$slots:{default:[Tn]},$$scope:{ctx:b}}}),pe=new Be({props:{title:"基于类别的图像生成",local:"基于类别的图像生成",headingTag:"h3"}}),ye=new u({props:{code:"ZnJvbSUyMHppcGZpbGUlMjBpbXBvcnQlMjBaaXBGaWxlJTBBaW1wb3J0JTIwcmVxdWVzdHMlMEElMEElMEFkZWYlMjBkb3dubG9hZCh1cmwlMkMlMjBsb2NhbF9maWxlcGF0aCklM0ElMEElMjAlMjAlMjAlMjByJTIwJTNEJTIwcmVxdWVzdHMuZ2V0KHVybCklMEElMjAlMjAlMjAlMjB3aXRoJTIwb3Blbihsb2NhbF9maWxlcGF0aCUyQyUyMCUyMndiJTIyKSUyMGFzJTIwZiUzQSUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMGYud3JpdGUoci5jb250ZW50KSUwQSUyMCUyMCUyMCUyMHJldHVybiUyMGxvY2FsX2ZpbGVwYXRoJTBBJTBBZHVtbXlfZGF0YXNldF91cmwlMjAlM0QlMjAlMjJodHRwcyUzQSUyRiUyRmhmLmNvJTJGZGF0YXNldHMlMkZzYXlha3BhdWwlMkZzYW1wbGUtZGF0YXNldHMlMkZyZXNvbHZlJTJGbWFpbiUyRnNhbXBsZS1pbWFnZW5ldC1pbWFnZXMuemlwJTIyJTBBbG9jYWxfZmlsZXBhdGglMjAlM0QlMjBkb3dubG9hZChkdW1teV9kYXRhc2V0X3VybCUyQyUyMGR1bW15X2RhdGFzZXRfdXJsLnNwbGl0KCUyMiUyRiUyMiklNUItMSU1RCklMEElMEF3aXRoJTIwWmlwRmlsZShsb2NhbF9maWxlcGF0aCUyQyUyMCUyMnIlMjIpJTIwYXMlMjB6aXBwZXIlM0ElMEElMjAlMjAlMjAlMjB6aXBwZXIuZXh0cmFjdGFsbCglMjIuJTIyKQ==",highlighted:`<span class="hljs-keyword">from</span> zipfile <span class="hljs-keyword">import</span> ZipFile
<span class="hljs-keyword">import</span> requests
<span class="hljs-keyword">def</span> <span class="hljs-title function_">download</span>(<span class="hljs-params">url, local_filepath</span>):
r = requests.get(url)
<span class="hljs-keyword">with</span> <span class="hljs-built_in">open</span>(local_filepath, <span class="hljs-string">&quot;wb&quot;</span>) <span class="hljs-keyword">as</span> f:
f.write(r.content)
<span class="hljs-keyword">return</span> local_filepath
dummy_dataset_url = <span class="hljs-string">&quot;https://hf.co/datasets/sayakpaul/sample-datasets/resolve/main/sample-imagenet-images.zip&quot;</span>
local_filepath = download(dummy_dataset_url, dummy_dataset_url.split(<span class="hljs-string">&quot;/&quot;</span>)[-<span class="hljs-number">1</span>])
<span class="hljs-keyword">with</span> ZipFile(local_filepath, <span class="hljs-string">&quot;r&quot;</span>) <span class="hljs-keyword">as</span> zipper:
zipper.extractall(<span class="hljs-string">&quot;.&quot;</span>)`,wrap:!1}}),Te=new u({props:{code:"ZnJvbSUyMFBJTCUyMGltcG9ydCUyMEltYWdlJTBBaW1wb3J0JTIwb3MlMEFpbXBvcnQlMjBudW1weSUyMGFzJTIwbnAlMEElMEFkYXRhc2V0X3BhdGglMjAlM0QlMjAlMjJzYW1wbGUtaW1hZ2VuZXQtaW1hZ2VzJTIyJTBBaW1hZ2VfcGF0aHMlMjAlM0QlMjBzb3J0ZWQoJTVCb3MucGF0aC5qb2luKGRhdGFzZXRfcGF0aCUyQyUyMHgpJTIwZm9yJTIweCUyMGluJTIwb3MubGlzdGRpcihkYXRhc2V0X3BhdGgpJTVEKSUwQSUwQXJlYWxfaW1hZ2VzJTIwJTNEJTIwJTVCbnAuYXJyYXkoSW1hZ2Uub3BlbihwYXRoKS5jb252ZXJ0KCUyMlJHQiUyMikpJTIwZm9yJTIwcGF0aCUyMGluJTIwaW1hZ2VfcGF0aHMlNUQ=",highlighted:`<span class="hljs-keyword">from</span> PIL <span class="hljs-keyword">import</span> Image
<span class="hljs-keyword">import</span> os
<span class="hljs-keyword">import</span> numpy <span class="hljs-keyword">as</span> np
dataset_path = <span class="hljs-string">&quot;sample-imagenet-images&quot;</span>
image_paths = <span class="hljs-built_in">sorted</span>([os.path.join(dataset_path, x) <span class="hljs-keyword">for</span> x <span class="hljs-keyword">in</span> os.listdir(dataset_path)])
real_images = [np.array(Image.<span class="hljs-built_in">open</span>(path).convert(<span class="hljs-string">&quot;RGB&quot;</span>)) <span class="hljs-keyword">for</span> path <span class="hljs-keyword">in</span> image_paths]`,wrap:!1}}),fe=new u({props:{code:"ZnJvbSUyMHRvcmNodmlzaW9uLnRyYW5zZm9ybXMlMjBpbXBvcnQlMjBmdW5jdGlvbmFsJTIwYXMlMjBGJTBBaW1wb3J0JTIwdG9yY2glMEElMEElMEFkZWYlMjBwcmVwcm9jZXNzX2ltYWdlKGltYWdlKSUzQSUwQSUyMCUyMCUyMCUyMGltYWdlJTIwJTNEJTIwdG9yY2gudGVuc29yKGltYWdlKS51bnNxdWVlemUoMCklMEElMjAlMjAlMjAlMjBpbWFnZSUyMCUzRCUyMGltYWdlLnBlcm11dGUoMCUyQyUyMDMlMkMlMjAxJTJDJTIwMiklMjAlMkYlMjAyNTUuMCUwQSUyMCUyMCUyMCUyMHJldHVybiUyMEYuY2VudGVyX2Nyb3AoaW1hZ2UlMkMlMjAoMjU2JTJDJTIwMjU2KSklMEElMEFyZWFsX2ltYWdlcyUyMCUzRCUyMHRvcmNoLnN0YWNrKCU1QmRpdF9waXBlbGluZS5wcmVwcm9jZXNzX2ltYWdlKGltYWdlKSUyMGZvciUyMGltYWdlJTIwaW4lMjByZWFsX2ltYWdlcyU1RCklMEFwcmludChyZWFsX2ltYWdlcy5zaGFwZSklMEElMjMlMjB0b3JjaC5TaXplKCU1QjEwJTJDJTIwMyUyQyUyMDI1NiUyQyUyMDI1NiU1RCk=",highlighted:`<span class="hljs-keyword">from</span> torchvision.transforms <span class="hljs-keyword">import</span> functional <span class="hljs-keyword">as</span> F
<span class="hljs-keyword">import</span> torch
<span class="hljs-keyword">def</span> <span class="hljs-title function_">preprocess_image</span>(<span class="hljs-params">image</span>):
image = torch.tensor(image).unsqueeze(<span class="hljs-number">0</span>)
image = image.permute(<span class="hljs-number">0</span>, <span class="hljs-number">3</span>, <span class="hljs-number">1</span>, <span class="hljs-number">2</span>) / <span class="hljs-number">255.0</span>
<span class="hljs-keyword">return</span> F.center_crop(image, (<span class="hljs-number">256</span>, <span class="hljs-number">256</span>))
real_images = torch.stack([dit_pipeline.preprocess_image(image) <span class="hljs-keyword">for</span> image <span class="hljs-keyword">in</span> real_images])
<span class="hljs-built_in">print</span>(real_images.shape)
<span class="hljs-comment"># torch.Size([10, 3, 256, 256])</span>`,wrap:!1}}),we=new u({props:{code:"ZnJvbSUyMGRpZmZ1c2VycyUyMGltcG9ydCUyMERpVFBpcGVsaW5lJTJDJTIwRFBNU29sdmVyTXVsdGlzdGVwU2NoZWR1bGVyJTBBJTBBZGl0X3BpcGVsaW5lJTIwJTNEJTIwRGlUUGlwZWxpbmUuZnJvbV9wcmV0cmFpbmVkKCUyMmZhY2Vib29rJTJGRGlULVhMLTItMjU2JTIyJTJDJTIwdG9yY2hfZHR5cGUlM0R0b3JjaC5mbG9hdDE2KSUwQWRpdF9waXBlbGluZS5zY2hlZHVsZXIlMjAlM0QlMjBEUE1Tb2x2ZXJNdWx0aXN0ZXBTY2hlZHVsZXIuZnJvbV9jb25maWcoZGl0X3BpcGVsaW5lLnNjaGVkdWxlci5jb25maWcpJTBBZGl0X3BpcGVsaW5lJTIwJTNEJTIwZGl0X3BpcGVsaW5lLnRvKCUyMmN1ZGElMjIpJTBBJTBBc2VlZCUyMCUzRCUyMDAlMEFnZW5lcmF0b3IlMjAlM0QlMjB0b3JjaC5tYW51YWxfc2VlZChzZWVkKSUwQSUwQSUwQXdvcmRzJTIwJTNEJTIwJTVCJTBBJTIwJTIwJTIwJTIwJTIyY2Fzc2V0dGUlMjBwbGF5ZXIlMjIlMkMlMEElMjAlMjAlMjAlMjAlMjJjaGFpbnNhdyUyMiUyQyUwQSUyMCUyMCUyMCUyMCUyMmNoYWluc2F3JTIyJTJDJTBBJTIwJTIwJTIwJTIwJTIyY2h1cmNoJTIyJTJDJTBBJTIwJTIwJTIwJTIwJTIyZ2FzJTIwcHVtcCUyMiUyQyUwQSUyMCUyMCUyMCUyMCUyMmdhcyUyMHB1bXAlMjIlMkMlMEElMjAlMjAlMjAlMjAlMjJnYXMlMjBwdW1wJTIyJTJDJTBBJTIwJTIwJTIwJTIwJTIycGFyYWNodXRlJTIyJTJDJTBBJTIwJTIwJTIwJTIwJTIycGFyYWNodXRlJTIyJTJDJTBBJTIwJTIwJTIwJTIwJTIydGVuY2glMjIlMkMlMEElNUQlMEElMEFjbGFzc19pZHMlMjAlM0QlMjBkaXRfcGlwZWxpbmUuZ2V0X2xhYmVsX2lkcyh3b3JkcyklMEFvdXRwdXQlMjAlM0QlMjBkaXRfcGlwZWxpbmUoY2xhc3NfbGFiZWxzJTNEY2xhc3NfaWRzJTJDJTIwZ2VuZXJhdG9yJTNEZ2VuZXJhdG9yJTJDJTIwb3V0cHV0X3R5cGUlM0QlMjJucCUyMiklMEElMEFmYWtlX2ltYWdlcyUyMCUzRCUyMG91dHB1dC5pbWFnZXMlMEFmYWtlX2ltYWdlcyUyMCUzRCUyMHRvcmNoLnRlbnNvcihmYWtlX2ltYWdlcyklMEFmYWtlX2ltYWdlcyUyMCUzRCUyMGZha2VfaW1hZ2VzLnBlcm11dGUoMCUyQyUyMDMlMkMlMjAxJTJDJTIwMiklMEFwcmludChmYWtlX2ltYWdlcy5zaGFwZSklMEElMjMlMjB0b3JjaC5TaXplKCU1QjEwJTJDJTIwMyUyQyUyMDI1NiUyQyUyMDI1NiU1RCk=",highlighted:`<span class="hljs-keyword">from</span> diffusers <span class="hljs-keyword">import</span> DiTPipeline, DPMSolverMultistepScheduler
dit_pipeline = DiTPipeline.from_pretrained(<span class="hljs-string">&quot;facebook/DiT-XL-2-256&quot;</span>, torch_dtype=torch.float16)
dit_pipeline.scheduler = DPMSolverMultistepScheduler.from_config(dit_pipeline.scheduler.config)
dit_pipeline = dit_pipeline.to(<span class="hljs-string">&quot;cuda&quot;</span>)
seed = <span class="hljs-number">0</span>
generator = torch.manual_seed(seed)
words = [
<span class="hljs-string">&quot;cassette player&quot;</span>,
<span class="hljs-string">&quot;chainsaw&quot;</span>,
<span class="hljs-string">&quot;chainsaw&quot;</span>,
<span class="hljs-string">&quot;church&quot;</span>,
<span class="hljs-string">&quot;gas pump&quot;</span>,
<span class="hljs-string">&quot;gas pump&quot;</span>,
<span class="hljs-string">&quot;gas pump&quot;</span>,
<span class="hljs-string">&quot;parachute&quot;</span>,
<span class="hljs-string">&quot;parachute&quot;</span>,
<span class="hljs-string">&quot;tench&quot;</span>,
]
class_ids = dit_pipeline.get_label_ids(words)
output = dit_pipeline(class_labels=class_ids, generator=generator, output_type=<span class="hljs-string">&quot;np&quot;</span>)
fake_images = output.images
fake_images = torch.tensor(fake_images)
fake_images = fake_images.permute(<span class="hljs-number">0</span>, <span class="hljs-number">3</span>, <span class="hljs-number">1</span>, <span class="hljs-number">2</span>)
<span class="hljs-built_in">print</span>(fake_images.shape)
<span class="hljs-comment"># torch.Size([10, 3, 256, 256])</span>`,wrap:!1}}),Ue=new u({props:{code:"ZnJvbSUyMHRvcmNobWV0cmljcy5pbWFnZS5maWQlMjBpbXBvcnQlMjBGcmVjaGV0SW5jZXB0aW9uRGlzdGFuY2UlMEElMEFmaWQlMjAlM0QlMjBGcmVjaGV0SW5jZXB0aW9uRGlzdGFuY2Uobm9ybWFsaXplJTNEVHJ1ZSklMEFmaWQudXBkYXRlKHJlYWxfaW1hZ2VzJTJDJTIwcmVhbCUzRFRydWUpJTBBZmlkLnVwZGF0ZShmYWtlX2ltYWdlcyUyQyUyMHJlYWwlM0RGYWxzZSklMEElMEFwcmludChmJTIyRklEJUU1JTg4JTg2JUU2JTk1JUIwJTNBJTIwJTdCZmxvYXQoZmlkLmNvbXB1dGUoKSklN0QlMjIpJTBBJTIzJTIwRklEJUU1JTg4JTg2JUU2JTk1JUIwJTNBJTIwMTc3LjcxNDcyMTY3OTY4NzU=",highlighted:`<span class="hljs-keyword">from</span> torchmetrics.image.fid <span class="hljs-keyword">import</span> FrechetInceptionDistance
fid = FrechetInceptionDistance(normalize=<span class="hljs-literal">True</span>)
fid.update(real_images, real=<span class="hljs-literal">True</span>)
fid.update(fake_images, real=<span class="hljs-literal">False</span>)
<span class="hljs-built_in">print</span>(<span class="hljs-string">f&quot;FID分数: <span class="hljs-subst">{<span class="hljs-built_in">float</span>(fid.compute())}</span>&quot;</span>)
<span class="hljs-comment"># FID分数: 177.7147216796875</span>`,wrap:!1}}),v=new Ge({props:{warning:!0,$$slots:{default:[rn]},$$scope:{ctx:b}}}),Ze=new cn({props:{source:"https://github.com/huggingface/diffusers/blob/main/docs/source/zh/conceptual/evaluation.md"}}),{c(){J=i("meta"),j=a(),d=i("p"),w=a(),c(I.$$.fragment),Z=a(),U=i("a"),U.innerHTML=We,B=a(),c(h.$$.fragment),k=a(),f=i("p"),f.innerHTML=C,Ve=a(),x=i("p"),x.textContent=Vs,ke=a(),X=i("p"),X.innerHTML=ks,xe=a(),R=i("p"),R.innerHTML=xs,Xe=a(),c($.$$.fragment),Re=a(),N=i("p"),N.textContent=Xs,$e=a(),F=i("ul"),F.innerHTML=Rs,Ne=a(),c(H.$$.fragment),Fe=a(),E=i("p"),E.innerHTML=$s,He=a(),Y=i("p"),Y.innerHTML=Ns,Ee=a(),Q=i("blockquote"),Q.innerHTML=Fs,Ye=a(),A=i("p"),A.innerHTML=Hs,Qe=a(),z=i("p"),z.textContent=Es,Ae=a(),S=i("ul"),S.innerHTML=Ys,ze=a(),L=i("p"),L.innerHTML=Qs,Se=a(),P=i("ul"),P.innerHTML=As,Le=a(),D=i("p"),D.innerHTML=zs,Pe=a(),q=i("p"),q.innerHTML=Ss,De=a(),c(K.$$.fragment),qe=a(),O=i("p"),O.innerHTML=Ls,Ke=a(),c(ll.$$.fragment),Oe=a(),el=i("p"),el.innerHTML=Ps,lt=a(),tl=i("p"),tl.innerHTML=Ds,et=a(),sl=i("p"),sl.innerHTML=qs,tt=a(),al=i("p"),al.textContent=Ks,st=a(),c(g.$$.fragment),at=a(),c(nl.$$.fragment),nt=a(),il=i("p"),il.textContent=Os,it=a(),pl=i("ul"),pl.innerHTML=la,pt=a(),c(Ml.$$.fragment),Mt=a(),Jl=i("p"),Jl.innerHTML=ea,Jt=a(),cl=i("p"),cl.innerHTML=ta,ct=a(),c(ol.$$.fragment),ot=a(),ml=i("p"),ml.textContent=sa,mt=a(),c(yl.$$.fragment),yt=a(),Tl=i("p"),Tl.textContent=aa,Tt=a(),c(rl.$$.fragment),rt=a(),dl=i("p"),dl.textContent=na,dt=a(),fl=i("p"),fl.innerHTML=ia,ft=a(),c(ul.$$.fragment),ut=a(),wl=i("p"),wl.innerHTML=pa,wt=a(),c(jl.$$.fragment),jt=a(),Ul=i("p"),Ul.textContent=Ma,Ut=a(),c(hl.$$.fragment),ht=a(),bl=i("p"),bl.innerHTML=Ja,bt=a(),c(W.$$.fragment),It=a(),c(Il.$$.fragment),Ct=a(),Cl=i("p"),Cl.innerHTML=ca,Zt=a(),Zl=i("p"),Zl.textContent=oa,Bt=a(),Bl=i("p"),Bl.innerHTML=ma,gt=a(),gl=i("p"),gl.innerHTML=ya,Wt=a(),Wl=i("ul"),Wl.innerHTML=Ta,_t=a(),_l=i("p"),_l.textContent=ra,Gt=a(),Gl=i("p"),Gl.innerHTML=da,vt=a(),vl=i("p"),vl.textContent=fa,Vt=a(),c(Vl.$$.fragment),kt=a(),c(kl.$$.fragment),xt=a(),xl=i("p"),xl.textContent=ua,Xt=a(),Xl=i("ul"),Xl.innerHTML=wa,Rt=a(),Rl=i("p"),Rl.textContent=ja,$t=a(),c($l.$$.fragment),Nt=a(),c(Nl.$$.fragment),Ft=a(),Fl=i("p"),Fl.textContent=Ua,Ht=a(),c(Hl.$$.fragment),Et=a(),El=i("p"),El.innerHTML=ha,Yt=a(),Yl=i("p"),Yl.textContent=ba,Qt=a(),Ql=i("p"),Ql.innerHTML=Ia,At=a(),c(Al.$$.fragment),zt=a(),zl=i("p"),zl.textContent=Ca,St=a(),c(Sl.$$.fragment),Lt=a(),Ll=i("p"),Ll.textContent=Za,Pt=a(),c(Pl.$$.fragment),Dt=a(),Dl=i("p"),Dl.innerHTML=Ba,qt=a(),ql=i("p"),ql.innerHTML=ga,Kt=a(),c(Kl.$$.fragment),Ot=a(),Ol=i("p"),Ol.innerHTML=Wa,ls=a(),c(le.$$.fragment),es=a(),ee=i("p"),ee.textContent=_a,ts=a(),te=i("p"),te.innerHTML=Ga,ss=a(),se=i("p"),se.innerHTML=va,as=a(),ae=i("p"),ae.innerHTML=Va,ns=a(),c(_.$$.fragment),is=a(),ne=i("p"),ne.innerHTML=ka,ps=a(),ie=i("p"),ie.innerHTML=xa,Ms=a(),c(pe.$$.fragment),Js=a(),Me=i("p"),Me.innerHTML=Xa,cs=a(),Je=i("p"),Je.innerHTML=Ra,os=a(),ce=i("blockquote"),ce.innerHTML=$a,ms=a(),oe=i("p"),oe.textContent=Na,ys=a(),me=i("p"),me.textContent=Fa,Ts=a(),c(ye.$$.fragment),rs=a(),c(Te.$$.fragment),ds=a(),re=i("p"),re.textContent=Ha,fs=a(),G=i("p"),G.innerHTML=Ea,us=a(),de=i("p"),de.textContent=Ya,ws=a(),c(fe.$$.fragment),js=a(),ue=i("p"),ue.innerHTML=Qa,Us=a(),c(we.$$.fragment),hs=a(),je=i("p"),je.innerHTML=Aa,bs=a(),c(Ue.$$.fragment),Is=a(),he=i("p"),he.textContent=za,Cs=a(),be=i("ul"),be.innerHTML=Sa,Zs=a(),Ie=i("p"),Ie.textContent=La,Bs=a(),c(v.$$.fragment),gs=a(),Ce=i("p"),Ce.innerHTML=Pa,Ws=a(),V=i("p"),V.innerHTML=Da,_s=a(),c(Ze.$$.fragment),Gs=a(),_e=i("p"),this.h()},l(l){const e=Mn("svelte-u9bgzb",document.head);J=p(e,"META",{name:!0,content:!0}),e.forEach(t),j=n(l),d=p(l,"P",{}),tn(d).forEach(t),w=n(l),o(I.$$.fragment,l),Z=n(l),U=p(l,"A",{target:!0,href:!0,"data-svelte-h":!0}),M(U)!=="svelte-h14285"&&(U.innerHTML=We),B=n(l),o(h.$$.fragment,l),k=n(l),f=p(l,"P",{"data-svelte-h":!0}),M(f)!=="svelte-1pes0mw"&&(f.innerHTML=C),Ve=n(l),x=p(l,"P",{"data-svelte-h":!0}),M(x)!=="svelte-k5obfv"&&(x.textContent=Vs),ke=n(l),X=p(l,"P",{"data-svelte-h":!0}),M(X)!=="svelte-1ajaxvu"&&(X.innerHTML=ks),xe=n(l),R=p(l,"P",{"data-svelte-h":!0}),M(R)!=="svelte-e6klhp"&&(R.innerHTML=xs),Xe=n(l),o($.$$.fragment,l),Re=n(l),N=p(l,"P",{"data-svelte-h":!0}),M(N)!=="svelte-1iu3uxb"&&(N.textContent=Xs),$e=n(l),F=p(l,"UL",{"data-svelte-h":!0}),M(F)!=="svelte-1nhmbj0"&&(F.innerHTML=Rs),Ne=n(l),o(H.$$.fragment,l),Fe=n(l),E=p(l,"P",{"data-svelte-h":!0}),M(E)!=="svelte-1txffyk"&&(E.innerHTML=$s),He=n(l),Y=p(l,"P",{"data-svelte-h":!0}),M(Y)!=="svelte-1vuvlvf"&&(Y.innerHTML=Ns),Ee=n(l),Q=p(l,"BLOCKQUOTE",{"data-svelte-h":!0}),M(Q)!=="svelte-m0q7q0"&&(Q.innerHTML=Fs),Ye=n(l),A=p(l,"P",{"data-svelte-h":!0}),M(A)!=="svelte-19xz367"&&(A.innerHTML=Hs),Qe=n(l),z=p(l,"P",{"data-svelte-h":!0}),M(z)!=="svelte-f20ejf"&&(z.textContent=Es),Ae=n(l),S=p(l,"UL",{"data-svelte-h":!0}),M(S)!=="svelte-11gxful"&&(S.innerHTML=Ys),ze=n(l),L=p(l,"P",{"data-svelte-h":!0}),M(L)!=="svelte-1op8x1l"&&(L.innerHTML=Qs),Se=n(l),P=p(l,"UL",{"data-svelte-h":!0}),M(P)!=="svelte-jo9asf"&&(P.innerHTML=As),Le=n(l),D=p(l,"P",{"data-svelte-h":!0}),M(D)!=="svelte-1hb73k9"&&(D.innerHTML=zs),Pe=n(l),q=p(l,"P",{"data-svelte-h":!0}),M(q)!=="svelte-16alyrm"&&(q.innerHTML=Ss),De=n(l),o(K.$$.fragment,l),qe=n(l),O=p(l,"P",{"data-svelte-h":!0}),M(O)!=="svelte-rdopsg"&&(O.innerHTML=Ls),Ke=n(l),o(ll.$$.fragment,l),Oe=n(l),el=p(l,"P",{"data-svelte-h":!0}),M(el)!=="svelte-4i7yd5"&&(el.innerHTML=Ps),lt=n(l),tl=p(l,"P",{"data-svelte-h":!0}),M(tl)!=="svelte-8snsne"&&(tl.innerHTML=Ds),et=n(l),sl=p(l,"P",{"data-svelte-h":!0}),M(sl)!=="svelte-gipltn"&&(sl.innerHTML=qs),tt=n(l),al=p(l,"P",{"data-svelte-h":!0}),M(al)!=="svelte-ueq19r"&&(al.textContent=Ks),st=n(l),o(g.$$.fragment,l),at=n(l),o(nl.$$.fragment,l),nt=n(l),il=p(l,"P",{"data-svelte-h":!0}),M(il)!=="svelte-r7hhw0"&&(il.textContent=Os),it=n(l),pl=p(l,"UL",{"data-svelte-h":!0}),M(pl)!=="svelte-b93mpw"&&(pl.innerHTML=la),pt=n(l),o(Ml.$$.fragment,l),Mt=n(l),Jl=p(l,"P",{"data-svelte-h":!0}),M(Jl)!=="svelte-n2bg45"&&(Jl.innerHTML=ea),Jt=n(l),cl=p(l,"P",{"data-svelte-h":!0}),M(cl)!=="svelte-1hzc3dk"&&(cl.innerHTML=ta),ct=n(l),o(ol.$$.fragment,l),ot=n(l),ml=p(l,"P",{"data-svelte-h":!0}),M(ml)!=="svelte-1k1g1o6"&&(ml.textContent=sa),mt=n(l),o(yl.$$.fragment,l),yt=n(l),Tl=p(l,"P",{"data-svelte-h":!0}),M(Tl)!=="svelte-1k28vwi"&&(Tl.textContent=aa),Tt=n(l),o(rl.$$.fragment,l),rt=n(l),dl=p(l,"P",{"data-svelte-h":!0}),M(dl)!=="svelte-1iltbps"&&(dl.textContent=na),dt=n(l),fl=p(l,"P",{"data-svelte-h":!0}),M(fl)!=="svelte-mydfaa"&&(fl.innerHTML=ia),ft=n(l),o(ul.$$.fragment,l),ut=n(l),wl=p(l,"P",{"data-svelte-h":!0}),M(wl)!=="svelte-1o4hn2o"&&(wl.innerHTML=pa),wt=n(l),o(jl.$$.fragment,l),jt=n(l),Ul=p(l,"P",{"data-svelte-h":!0}),M(Ul)!=="svelte-2io45m"&&(Ul.textContent=Ma),Ut=n(l),o(hl.$$.fragment,l),ht=n(l),bl=p(l,"P",{"data-svelte-h":!0}),M(bl)!=="svelte-ujkfdk"&&(bl.innerHTML=Ja),bt=n(l),o(W.$$.fragment,l),It=n(l),o(Il.$$.fragment,l),Ct=n(l),Cl=p(l,"P",{"data-svelte-h":!0}),M(Cl)!=="svelte-1yzloih"&&(Cl.innerHTML=ca),Zt=n(l),Zl=p(l,"P",{"data-svelte-h":!0}),M(Zl)!=="svelte-7c2hev"&&(Zl.textContent=oa),Bt=n(l),Bl=p(l,"P",{"data-svelte-h":!0}),M(Bl)!=="svelte-1u1nt56"&&(Bl.innerHTML=ma),gt=n(l),gl=p(l,"P",{"data-svelte-h":!0}),M(gl)!=="svelte-1nycz9x"&&(gl.innerHTML=ya),Wt=n(l),Wl=p(l,"UL",{"data-svelte-h":!0}),M(Wl)!=="svelte-169ilj8"&&(Wl.innerHTML=Ta),_t=n(l),_l=p(l,"P",{"data-svelte-h":!0}),M(_l)!=="svelte-f9n3pa"&&(_l.textContent=ra),Gt=n(l),Gl=p(l,"P",{"data-svelte-h":!0}),M(Gl)!=="svelte-8e89hb"&&(Gl.innerHTML=da),vt=n(l),vl=p(l,"P",{"data-svelte-h":!0}),M(vl)!=="svelte-r23mbf"&&(vl.textContent=fa),Vt=n(l),o(Vl.$$.fragment,l),kt=n(l),o(kl.$$.fragment,l),xt=n(l),xl=p(l,"P",{"data-svelte-h":!0}),M(xl)!=="svelte-4az32q"&&(xl.textContent=ua),Xt=n(l),Xl=p(l,"UL",{"data-svelte-h":!0}),M(Xl)!=="svelte-1rw2hq2"&&(Xl.innerHTML=wa),Rt=n(l),Rl=p(l,"P",{"data-svelte-h":!0}),M(Rl)!=="svelte-11cxr2x"&&(Rl.textContent=ja),$t=n(l),o($l.$$.fragment,l),Nt=n(l),o(Nl.$$.fragment,l),Ft=n(l),Fl=p(l,"P",{"data-svelte-h":!0}),M(Fl)!=="svelte-xp6zg6"&&(Fl.textContent=Ua),Ht=n(l),o(Hl.$$.fragment,l),Et=n(l),El=p(l,"P",{"data-svelte-h":!0}),M(El)!=="svelte-ogvsh3"&&(El.innerHTML=ha),Yt=n(l),Yl=p(l,"P",{"data-svelte-h":!0}),M(Yl)!=="svelte-16d8j0z"&&(Yl.textContent=ba),Qt=n(l),Ql=p(l,"P",{"data-svelte-h":!0}),M(Ql)!=="svelte-1yqwgt0"&&(Ql.innerHTML=Ia),At=n(l),o(Al.$$.fragment,l),zt=n(l),zl=p(l,"P",{"data-svelte-h":!0}),M(zl)!=="svelte-1llczdr"&&(zl.textContent=Ca),St=n(l),o(Sl.$$.fragment,l),Lt=n(l),Ll=p(l,"P",{"data-svelte-h":!0}),M(Ll)!=="svelte-y69d0n"&&(Ll.textContent=Za),Pt=n(l),o(Pl.$$.fragment,l),Dt=n(l),Dl=p(l,"P",{"data-svelte-h":!0}),M(Dl)!=="svelte-1olfepe"&&(Dl.innerHTML=Ba),qt=n(l),ql=p(l,"P",{"data-svelte-h":!0}),M(ql)!=="svelte-1cfzew0"&&(ql.innerHTML=ga),Kt=n(l),o(Kl.$$.fragment,l),Ot=n(l),Ol=p(l,"P",{"data-svelte-h":!0}),M(Ol)!=="svelte-1ah96o9"&&(Ol.innerHTML=Wa),ls=n(l),o(le.$$.fragment,l),es=n(l),ee=p(l,"P",{"data-svelte-h":!0}),M(ee)!=="svelte-1evlka"&&(ee.textContent=_a),ts=n(l),te=p(l,"P",{"data-svelte-h":!0}),M(te)!=="svelte-du0g2y"&&(te.innerHTML=Ga),ss=n(l),se=p(l,"P",{"data-svelte-h":!0}),M(se)!=="svelte-1ck0ggc"&&(se.innerHTML=va),as=n(l),ae=p(l,"P",{"data-svelte-h":!0}),M(ae)!=="svelte-15kssed"&&(ae.innerHTML=Va),ns=n(l),o(_.$$.fragment,l),is=n(l),ne=p(l,"P",{"data-svelte-h":!0}),M(ne)!=="svelte-10m0vep"&&(ne.innerHTML=ka),ps=n(l),ie=p(l,"P",{"data-svelte-h":!0}),M(ie)!=="svelte-1sls2vo"&&(ie.innerHTML=xa),Ms=n(l),o(pe.$$.fragment,l),Js=n(l),Me=p(l,"P",{"data-svelte-h":!0}),M(Me)!=="svelte-1be9oeu"&&(Me.innerHTML=Xa),cs=n(l),Je=p(l,"P",{"data-svelte-h":!0}),M(Je)!=="svelte-18nm4k9"&&(Je.innerHTML=Ra),os=n(l),ce=p(l,"BLOCKQUOTE",{"data-svelte-h":!0}),M(ce)!=="svelte-15x4a9v"&&(ce.innerHTML=$a),ms=n(l),oe=p(l,"P",{"data-svelte-h":!0}),M(oe)!=="svelte-fg97ol"&&(oe.textContent=Na),ys=n(l),me=p(l,"P",{"data-svelte-h":!0}),M(me)!=="svelte-pwwdv9"&&(me.textContent=Fa),Ts=n(l),o(ye.$$.fragment,l),rs=n(l),o(Te.$$.fragment,l),ds=n(l),re=p(l,"P",{"data-svelte-h":!0}),M(re)!=="svelte-6bz4xb"&&(re.textContent=Ha),fs=n(l),G=p(l,"P",{align:!0,"data-svelte-h":!0}),M(G)!=="svelte-ke5ahc"&&(G.innerHTML=Ea),us=n(l),de=p(l,"P",{"data-svelte-h":!0}),M(de)!=="svelte-ilkg7f"&&(de.textContent=Ya),ws=n(l),o(fe.$$.fragment,l),js=n(l),ue=p(l,"P",{"data-svelte-h":!0}),M(ue)!=="svelte-1g1dyy3"&&(ue.innerHTML=Qa),Us=n(l),o(we.$$.fragment,l),hs=n(l),je=p(l,"P",{"data-svelte-h":!0}),M(je)!=="svelte-1wphc0p"&&(je.innerHTML=Aa),bs=n(l),o(Ue.$$.fragment,l),Is=n(l),he=p(l,"P",{"data-svelte-h":!0}),M(he)!=="svelte-1v2r3ps"&&(he.textContent=za),Cs=n(l),be=p(l,"UL",{"data-svelte-h":!0}),M(be)!=="svelte-1iufyfv"&&(be.innerHTML=Sa),Zs=n(l),Ie=p(l,"P",{"data-svelte-h":!0}),M(Ie)!=="svelte-1skjrzw"&&(Ie.textContent=La),Bs=n(l),o(v.$$.fragment,l),gs=n(l),Ce=p(l,"P",{"data-svelte-h":!0}),M(Ce)!=="svelte-147tlvf"&&(Ce.innerHTML=Pa),Ws=n(l),V=p(l,"P",{align:!0,"data-svelte-h":!0}),M(V)!=="svelte-1if1i1w"&&(V.innerHTML=Da),_s=n(l),o(Ze.$$.fragment,l),Gs=n(l),_e=p(l,"P",{}),tn(_e).forEach(t),this.h()},h(){ge(J,"name","hf:doc:metadata"),ge(J,"content",fn),ge(U,"target","_blank"),ge(U,"href","https://colab.research.google.com/github/huggingface/notebooks/blob/main/diffusers/evaluation.ipynb"),ge(G,"align","center"),ge(V,"align","center")},m(l,e){Jn(document.head,J),s(l,j,e),s(l,d,e),s(l,w,e),m(I,l,e),s(l,Z,e),s(l,U,e),s(l,B,e),m(h,l,e),s(l,k,e),s(l,f,e),s(l,Ve,e),s(l,x,e),s(l,ke,e),s(l,X,e),s(l,xe,e),s(l,R,e),s(l,Xe,e),m($,l,e),s(l,Re,e),s(l,N,e),s(l,$e,e),s(l,F,e),s(l,Ne,e),m(H,l,e),s(l,Fe,e),s(l,E,e),s(l,He,e),s(l,Y,e),s(l,Ee,e),s(l,Q,e),s(l,Ye,e),s(l,A,e),s(l,Qe,e),s(l,z,e),s(l,Ae,e),s(l,S,e),s(l,ze,e),s(l,L,e),s(l,Se,e),s(l,P,e),s(l,Le,e),s(l,D,e),s(l,Pe,e),s(l,q,e),s(l,De,e),m(K,l,e),s(l,qe,e),s(l,O,e),s(l,Ke,e),m(ll,l,e),s(l,Oe,e),s(l,el,e),s(l,lt,e),s(l,tl,e),s(l,et,e),s(l,sl,e),s(l,tt,e),s(l,al,e),s(l,st,e),m(g,l,e),s(l,at,e),m(nl,l,e),s(l,nt,e),s(l,il,e),s(l,it,e),s(l,pl,e),s(l,pt,e),m(Ml,l,e),s(l,Mt,e),s(l,Jl,e),s(l,Jt,e),s(l,cl,e),s(l,ct,e),m(ol,l,e),s(l,ot,e),s(l,ml,e),s(l,mt,e),m(yl,l,e),s(l,yt,e),s(l,Tl,e),s(l,Tt,e),m(rl,l,e),s(l,rt,e),s(l,dl,e),s(l,dt,e),s(l,fl,e),s(l,ft,e),m(ul,l,e),s(l,ut,e),s(l,wl,e),s(l,wt,e),m(jl,l,e),s(l,jt,e),s(l,Ul,e),s(l,Ut,e),m(hl,l,e),s(l,ht,e),s(l,bl,e),s(l,bt,e),m(W,l,e),s(l,It,e),m(Il,l,e),s(l,Ct,e),s(l,Cl,e),s(l,Zt,e),s(l,Zl,e),s(l,Bt,e),s(l,Bl,e),s(l,gt,e),s(l,gl,e),s(l,Wt,e),s(l,Wl,e),s(l,_t,e),s(l,_l,e),s(l,Gt,e),s(l,Gl,e),s(l,vt,e),s(l,vl,e),s(l,Vt,e),m(Vl,l,e),s(l,kt,e),m(kl,l,e),s(l,xt,e),s(l,xl,e),s(l,Xt,e),s(l,Xl,e),s(l,Rt,e),s(l,Rl,e),s(l,$t,e),m($l,l,e),s(l,Nt,e),m(Nl,l,e),s(l,Ft,e),s(l,Fl,e),s(l,Ht,e),m(Hl,l,e),s(l,Et,e),s(l,El,e),s(l,Yt,e),s(l,Yl,e),s(l,Qt,e),s(l,Ql,e),s(l,At,e),m(Al,l,e),s(l,zt,e),s(l,zl,e),s(l,St,e),m(Sl,l,e),s(l,Lt,e),s(l,Ll,e),s(l,Pt,e),m(Pl,l,e),s(l,Dt,e),s(l,Dl,e),s(l,qt,e),s(l,ql,e),s(l,Kt,e),m(Kl,l,e),s(l,Ot,e),s(l,Ol,e),s(l,ls,e),m(le,l,e),s(l,es,e),s(l,ee,e),s(l,ts,e),s(l,te,e),s(l,ss,e),s(l,se,e),s(l,as,e),s(l,ae,e),s(l,ns,e),m(_,l,e),s(l,is,e),s(l,ne,e),s(l,ps,e),s(l,ie,e),s(l,Ms,e),m(pe,l,e),s(l,Js,e),s(l,Me,e),s(l,cs,e),s(l,Je,e),s(l,os,e),s(l,ce,e),s(l,ms,e),s(l,oe,e),s(l,ys,e),s(l,me,e),s(l,Ts,e),m(ye,l,e),s(l,rs,e),m(Te,l,e),s(l,ds,e),s(l,re,e),s(l,fs,e),s(l,G,e),s(l,us,e),s(l,de,e),s(l,ws,e),m(fe,l,e),s(l,js,e),s(l,ue,e),s(l,Us,e),m(we,l,e),s(l,hs,e),s(l,je,e),s(l,bs,e),m(Ue,l,e),s(l,Is,e),s(l,he,e),s(l,Cs,e),s(l,be,e),s(l,Zs,e),s(l,Ie,e),s(l,Bs,e),m(v,l,e),s(l,gs,e),s(l,Ce,e),s(l,Ws,e),s(l,V,e),s(l,_s,e),m(Ze,l,e),s(l,Gs,e),s(l,_e,e),vs=!0},p(l,[e]){const qa={};e&2&&(qa.$$scope={dirty:e,ctx:l}),h.$set(qa);const Ka={};e&2&&(Ka.$$scope={dirty:e,ctx:l}),g.$set(Ka);const Oa={};e&2&&(Oa.$$scope={dirty:e,ctx:l}),W.$set(Oa);const ln={};e&2&&(ln.$$scope={dirty:e,ctx:l}),_.$set(ln);const en={};e&2&&(en.$$scope={dirty:e,ctx:l}),v.$set(en)},i(l){vs||(y(I.$$.fragment,l),y(h.$$.fragment,l),y($.$$.fragment,l),y(H.$$.fragment,l),y(K.$$.fragment,l),y(ll.$$.fragment,l),y(g.$$.fragment,l),y(nl.$$.fragment,l),y(Ml.$$.fragment,l),y(ol.$$.fragment,l),y(yl.$$.fragment,l),y(rl.$$.fragment,l),y(ul.$$.fragment,l),y(jl.$$.fragment,l),y(hl.$$.fragment,l),y(W.$$.fragment,l),y(Il.$$.fragment,l),y(Vl.$$.fragment,l),y(kl.$$.fragment,l),y($l.$$.fragment,l),y(Nl.$$.fragment,l),y(Hl.$$.fragment,l),y(Al.$$.fragment,l),y(Sl.$$.fragment,l),y(Pl.$$.fragment,l),y(Kl.$$.fragment,l),y(le.$$.fragment,l),y(_.$$.fragment,l),y(pe.$$.fragment,l),y(ye.$$.fragment,l),y(Te.$$.fragment,l),y(fe.$$.fragment,l),y(we.$$.fragment,l),y(Ue.$$.fragment,l),y(v.$$.fragment,l),y(Ze.$$.fragment,l),vs=!0)},o(l){T(I.$$.fragment,l),T(h.$$.fragment,l),T($.$$.fragment,l),T(H.$$.fragment,l),T(K.$$.fragment,l),T(ll.$$.fragment,l),T(g.$$.fragment,l),T(nl.$$.fragment,l),T(Ml.$$.fragment,l),T(ol.$$.fragment,l),T(yl.$$.fragment,l),T(rl.$$.fragment,l),T(ul.$$.fragment,l),T(jl.$$.fragment,l),T(hl.$$.fragment,l),T(W.$$.fragment,l),T(Il.$$.fragment,l),T(Vl.$$.fragment,l),T(kl.$$.fragment,l),T($l.$$.fragment,l),T(Nl.$$.fragment,l),T(Hl.$$.fragment,l),T(Al.$$.fragment,l),T(Sl.$$.fragment,l),T(Pl.$$.fragment,l),T(Kl.$$.fragment,l),T(le.$$.fragment,l),T(_.$$.fragment,l),T(pe.$$.fragment,l),T(ye.$$.fragment,l),T(Te.$$.fragment,l),T(fe.$$.fragment,l),T(we.$$.fragment,l),T(Ue.$$.fragment,l),T(v.$$.fragment,l),T(Ze.$$.fragment,l),vs=!1},d(l){l&&(t(j),t(d),t(w),t(Z),t(U),t(B),t(k),t(f),t(Ve),t(x),t(ke),t(X),t(xe),t(R),t(Xe),t(Re),t(N),t($e),t(F),t(Ne),t(Fe),t(E),t(He),t(Y),t(Ee),t(Q),t(Ye),t(A),t(Qe),t(z),t(Ae),t(S),t(ze),t(L),t(Se),t(P),t(Le),t(D),t(Pe),t(q),t(De),t(qe),t(O),t(Ke),t(Oe),t(el),t(lt),t(tl),t(et),t(sl),t(tt),t(al),t(st),t(at),t(nt),t(il),t(it),t(pl),t(pt),t(Mt),t(Jl),t(Jt),t(cl),t(ct),t(ot),t(ml),t(mt),t(yt),t(Tl),t(Tt),t(rt),t(dl),t(dt),t(fl),t(ft),t(ut),t(wl),t(wt),t(jt),t(Ul),t(Ut),t(ht),t(bl),t(bt),t(It),t(Ct),t(Cl),t(Zt),t(Zl),t(Bt),t(Bl),t(gt),t(gl),t(Wt),t(Wl),t(_t),t(_l),t(Gt),t(Gl),t(vt),t(vl),t(Vt),t(kt),t(xt),t(xl),t(Xt),t(Xl),t(Rt),t(Rl),t($t),t(Nt),t(Ft),t(Fl),t(Ht),t(Et),t(El),t(Yt),t(Yl),t(Qt),t(Ql),t(At),t(zt),t(zl),t(St),t(Lt),t(Ll),t(Pt),t(Dt),t(Dl),t(qt),t(ql),t(Kt),t(Ot),t(Ol),t(ls),t(es),t(ee),t(ts),t(te),t(ss),t(se),t(as),t(ae),t(ns),t(is),t(ne),t(ps),t(ie),t(Ms),t(Js),t(Me),t(cs),t(Je),t(os),t(ce),t(ms),t(oe),t(ys),t(me),t(Ts),t(rs),t(ds),t(re),t(fs),t(G),t(us),t(de),t(ws),t(js),t(ue),t(Us),t(hs),t(je),t(bs),t(Is),t(he),t(Cs),t(be),t(Zs),t(Ie),t(Bs),t(gs),t(Ce),t(Ws),t(V),t(_s),t(Gs),t(_e)),t(J),r(I,l),r(h,l),r($,l),r(H,l),r(K,l),r(ll,l),r(g,l),r(nl,l),r(Ml,l),r(ol,l),r(yl,l),r(rl,l),r(ul,l),r(jl,l),r(hl,l),r(W,l),r(Il,l),r(Vl,l),r(kl,l),r($l,l),r(Nl,l),r(Hl,l),r(Al,l),r(Sl,l),r(Pl,l),r(Kl,l),r(le,l),r(_,l),r(pe,l),r(ye,l),r(Te,l),r(fe,l),r(we,l),r(Ue,l),r(v,l),r(Ze,l)}}}const fn='{"title":"Diffusion模型评估指南","local":"diffusion模型评估指南","sections":[{"title":"评估场景","local":"评估场景","sections":[],"depth":2},{"title":"定性评估","local":"定性评估","sections":[],"depth":2},{"title":"定量评估","local":"定量评估","sections":[{"title":"文本引导图像生成","local":"文本引导图像生成","sections":[],"depth":3},{"title":"图像条件式文本生成图像","local":"图像条件式文本生成图像","sections":[],"depth":3},{"title":"基于类别的图像生成","local":"基于类别的图像生成","sections":[],"depth":3}],"depth":2}],"depth":1}';function un(b){return an(()=>{new URLSearchParams(window.location.search).get("fw")}),[]}class In extends nn{constructor(J){super(),pn(this,J,un,dn,sn,{})}}export{In as component};

Xet Storage Details

Size:
76.4 kB
·
Xet hash:
aa5a9b52bc0e618ab783cf3a627edc7400de203f65dd0fdacfe141dd11469ec4

Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.