Buckets:

rtrm's picture
download
raw
75.1 kB
import{s as sn,n as an,o as nn}from"../chunks/scheduler.e4ff9b64.js";import{S as pn,i as Mn,e as i,s as a,c as J,h as Jn,a as p,d as t,b as n,f as tn,g as c,j as M,k as d,l as cn,m as s,n as o,t as m,o as y,p as T}from"../chunks/index.09f1bca0.js";import{C as on,H as fe,E as mn}from"../chunks/MermaidChart.svelte_svelte_type_style_lang.be5a66d3.js";import{C as r}from"../chunks/CodeBlock.a57faa9f.js";function yn(_s){let u,Ie,he,Ce,Z,Ze,B,Be,w,Gs='<img src="https://colab.research.google.com/assets/colab-badge.svg" alt="在 Colab 中打开"/>',We,j,ks='<p>鉴于当前已出现针对图像生成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>),本文档部分内容已过时。</p>',ge,W,vs='像 <a href="https://huggingface.co/docs/diffusers/stable_diffusion" rel="nofollow">Stable Diffusion</a> 这类生成模型的评估本质上是主观的。但作为开发者和研究者,我们经常需要在众多可能性中做出审慎选择。那么当面对不同生成模型(如 GANs、Diffusion 等)时,该如何决策?',_e,g,Vs="定性评估容易产生偏差,可能导致错误结论;而定量指标又未必能准确反映图像质量。因此,通常需要结合定性与定量评估来获得更可靠的模型选择依据。",Ge,_,xs="本文档将系统介绍扩散模型的定性与定量评估方法(非穷尽列举)。对于定量方法,我们将重点演示如何结合 <code>diffusers</code> 库实现这些评估。",ke,G,Xs='文档所示方法同样适用于评估不同<a href="https://huggingface.co/docs/diffusers/main/en/api/schedulers/overview" rel="nofollow">噪声调度器</a>在固定生成模型下的表现差异。',ve,k,Ve,v,Rs="我们涵盖以下Diffusion模型管线的评估:",xe,V,Ns='<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>',Xe,x,Re,X,Fs='定性评估通常涉及对生成图像的人工评判。评估维度包括构图质量、图文对齐度和空间关系等方面。标准化的提示词能为这些主观指标提供统一基准。DrawBench和PartiPrompts是常用的定性评估提示词数据集,分别由<a href="https://imagen.research.google/" rel="nofollow">Imagen</a>和<a href="https://parti.research.google/" rel="nofollow">Parti</a>团队提出。',Ne,R,Hs='根据<a href="https://parti.research.google/" rel="nofollow">Parti官方网站</a>说明:',Fe,N,Es="<p>PartiPrompts (P2)是我们发布的包含1600多个英文提示词的丰富集合,可用于测量模型在不同类别和挑战维度上的能力。</p>",He,F,Ys='<img src="https://huggingface.co/datasets/diffusers/docs-images/resolve/main/evaluation_diffusion_models/parti-prompts.png" alt="parti-prompts"/>',Ee,H,Qs="PartiPrompts包含以下字段:",Ye,E,As="<li>Prompt(提示词)</li> <li>Category(类别,如”抽象”、“世界知识”等)</li> <li>Challenge(难度等级,如”基础”、“复杂”、“文字与符号”等)</li>",Qe,Y,zs="这些基准测试支持对不同图像生成模型进行并排人工对比评估。为此,🧨 Diffusers团队构建了<strong>Open Parti Prompts</strong>——一个基于Parti Prompts的社区驱动型定性评估基准,用于比较顶尖开源diffusion模型:",Ae,Q,Ss='<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>',ze,A,$s="为进行手动图像对比,我们演示如何使用<code>diffusers</code>处理部分PartiPrompts提示词。",Se,z,Ls='以下是从不同挑战维度(基础、复杂、语言结构、想象力、文字与符号)采样的提示词示例(使用<a href="https://huggingface.co/datasets/nateraw/parti-prompts" rel="nofollow">PartiPrompts作为数据集</a>):',$e,S,Le,$,Ps='现在我们可以使用Stable Diffusion(<a href="https://huggingface.co/CompVis/stable-diffusion-v1-4" rel="nofollow">v1-4 checkpoint</a>)生成这些提示词对应的图像:',Pe,L,De,P,Ds='<img src="https://huggingface.co/datasets/diffusers/docs-images/resolve/main/evaluation_diffusion_models/parti-prompts-14.png" alt="parti-prompts-14"/>',qe,D,qs='我们也可以通过设置<code>num_images_per_prompt</code>参数来比较同一提示词生成的不同图像。使用不同检查点(<a href="https://huggingface.co/stable-diffusion-v1-5/stable-diffusion-v1-5" rel="nofollow">v1-5</a>)运行相同流程后,结果如下:',Ke,q,Ks='<img src="https://huggingface.co/datasets/diffusers/docs-images/resolve/main/evaluation_diffusion_models/parti-prompts-15.png" alt="parti-prompts-15"/>',Oe,K,Os="当使用多个待评估模型为所有提示词生成若干图像后,这些结果将提交给人类评估员进行打分。有关DrawBench和PartiPrompts基准测试的更多细节,请参阅各自的论文。",lt,U,la='<p>在模型训练过程中查看推理样本有助于评估训练进度。我们的<a href="https://github.com/huggingface/diffusers/tree/main/examples/" rel="nofollow">训练脚本</a>支持此功能,并额外提供TensorBoard和Weights &amp; Biases日志记录功能。</p>',et,O,tt,ll,ea="本节将指导您如何评估三种不同的扩散流程,使用以下指标:",st,el,ta="<li>CLIP分数</li> <li>CLIP方向相似度</li> <li>FID(弗雷歇起始距离)</li>",at,tl,nt,sl,sa='<a href="https://huggingface.co/papers/2104.08718" rel="nofollow">CLIP分数</a>用于衡量图像-标题对的匹配程度。CLIP分数越高表明匹配度越高🔼。该分数是对”匹配度”这一定性概念的量化测量,也可以理解为图像与标题之间的语义相似度。研究发现CLIP分数与人类判断具有高度相关性。',it,al,aa="首先加载<code>StableDiffusionPipeline</code>:",pt,nl,Mt,il,na="使用多个提示词生成图像:",Jt,pl,ct,Ml,ia="然后计算CLIP分数:",ot,Jl,mt,cl,pa="上述示例中,我们为每个提示生成一张图像。如果为每个提示生成多张图像,则需要计算每个提示生成图像的平均分数。",yt,ol,Ma='当需要比较两个兼容<code>StableDiffusionPipeline</code>的检查点时,应在调用管道时传入生成器。首先使用<a href="https://huggingface.co/CompVis/stable-diffusion-v1-4" rel="nofollow">v1-4 Stable Diffusion检查点</a>以固定种子生成图像:',Tt,ml,rt,yl,Ja='然后加载<a href="https://huggingface.co/stable-diffusion-v1-5/stable-diffusion-v1-5" rel="nofollow">v1-5检查点</a>生成图像:',dt,Tl,ut,rl,ca="最后比较两者的CLIP分数:",wt,dl,jt,ul,oa='结果表明<a href="https://huggingface.co/stable-diffusion-v1-5/stable-diffusion-v1-5" rel="nofollow">v1-5</a>检查点性能优于前代。但需注意,我们用于计算CLIP分数的提示词数量较少。实际评估时应使用更多样化且数量更大的提示词集。',Ut,f,ma="<p>该分数存在固有局限性:训练数据中的标题是从网络爬取,并提取自图片关联的<code>alt</code>等标签。这些描述未必符合人类描述图像的方式,因此我们需要人工”设计”部分提示词。</p>",ft,wl,ht,jl,ya="这种情况下,生成管道同时接受输入图像和文本提示作为条件。以<code>StableDiffusionInstructPix2PixPipeline</code>为例,该管道接收编辑指令作为输入提示,并接受待编辑的输入图像。",bt,Ul,Ta="示例图示:",It,fl,ra='<img src="https://huggingface.co/datasets/diffusers/docs-images/resolve/main/evaluation_diffusion_models/edit-instruction.png" alt="编辑指令"/>',Ct,hl,da='评估此类模型的策略之一是测量两幅图像间变化的连贯性(通过<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>”。',Zt,bl,ua="<li><strong>描述1</strong>对应输入图像(图像1),即待编辑的图像。</li> <li><strong>描述2</strong>对应编辑后的图像(图像2),应反映编辑指令。</li>",Bt,Il,wa="以下是示意图:",Wt,Cl,ja='<img src="https://huggingface.co/datasets/diffusers/docs-images/resolve/main/evaluation_diffusion_models/edit-consistency.png" alt="edit-consistency"/>',gt,Zl,Ua="我们准备了一个小型数据集来实现该指标。首先加载数据集:",_t,Bl,Gt,Wl,kt,gl,fa="数据字段说明:",vt,_l,ha="<li><code>input</code>:与<code>image</code>对应的原始描述。</li> <li><code>edit</code>:编辑指令。</li> <li><code>output</code>:反映<code>edit</code>指令的修改后描述。</li>",Vt,Gl,ba="查看一个样本:",xt,kl,Xt,vl,Rt,Vl,Ia="对应的图像:",Nt,xl,Ft,Xl,Ca='<img src="https://huggingface.co/datasets/diffusers/docs-images/resolve/main/evaluation_diffusion_models/edit-dataset.png" alt="edit-dataset"/>',Ht,Rl,Za="我们将根据编辑指令修改数据集中的图像,并计算方向相似度。",Et,Nl,Ba="首先加载<code>StableDiffusionInstructPix2PixPipeline</code>:",Yt,Fl,Qt,Hl,Wa="执行编辑操作:",At,El,zt,Yl,ga="为测量方向相似度,我们首先加载CLIP的图像和文本编码器:",St,Ql,$t,Al,_a='注意我们使用的是特定CLIP检查点——<code>openai/clip-vit-large-patch14</code>,因为Stable Diffusion预训练正是基于此CLIP变体。详见<a href="https://huggingface.co/docs/transformers/model_doc/clip" rel="nofollow">文档</a>。',Lt,zl,Ga="接着准备计算方向相似度的PyTorch <code>nn.Module</code>:",Pt,Sl,Dt,$l,ka="现在让我们使用<code>DirectionalSimilarity</code>模块:",qt,Ll,Kt,Pl,va="与CLIP分数类似,CLIP方向相似度数值越高越好。",Ot,Dl,Va="需要注意的是,<code>StableDiffusionInstructPix2PixPipeline</code>提供了两个控制参数<code>image_guidance_scale</code>和<code>guidance_scale</code>来调节最终编辑图像的质量。建议您尝试调整这两个参数,观察它们对方向相似度的影响。",ls,ql,xa="我们可以扩展这个度量标准来评估原始图像与编辑版本的相似度,只需计算<code>F.cosine_similarity(img_feat_two, img_feat_one)</code>。对于这类编辑任务,我们仍希望尽可能保留图像的主要语义特征(即保持较高的相似度分数)。",es,Kl,Xa='该度量方法同样适用于类似流程,例如<a href="https://huggingface.co/docs/diffusers/main/en/api/pipelines/pix2pix_zero#diffusers.StableDiffusionPix2PixZeroPipeline" rel="nofollow"><code>StableDiffusionPix2PixZeroPipeline</code></a>。',ts,h,Ra="<p>CLIP分数和CLIP方向相似度都依赖CLIP模型,可能导致评估结果存在偏差。</p>",ss,Ol,Na='<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的预训练数据集可能重叠有限,因此不适合作为特征提取器。',as,le,Fa=`<strong><em>上述指标更适合评估类别条件模型</em></strong>,例如<a href="https://huggingface.co/docs/diffusers/main/en/api/pipelines/dit" rel="nofollow">DiT</a>。该模型是在ImageNet-1k类别条件下预训练的。
这是9篇文档中的第8部分。`,ns,ee,is,te,Ha='基于类别的生成模型通常是在带有类别标签的数据集(如<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>。',ps,se,Ea='FID旨在衡量两组图像数据集的相似程度。根据<a href="https://mmgeneration.readthedocs.io/en/latest/quick_run.html#fid" rel="nofollow">此资源</a>:',Ms,ae,Ya="<p>Fréchet Inception Distance是衡量两组图像数据集相似度的指标。研究表明其与人类对视觉质量的主观判断高度相关,因此最常用于评估生成对抗网络(GAN)生成样本的质量。FID通过计算Inception网络特征表示所拟合的两个高斯分布之间的Fréchet距离来实现。</p>",Js,ne,Qa="这两个数据集本质上是真实图像数据集和生成图像数据集(本例中为人工生成的图像)。FID通常基于两个大型数据集计算,但本文档将使用两个小型数据集进行演示。",cs,ie,Aa="首先下载ImageNet-1k训练集中的部分图像:",os,pe,ms,Me,ys,Je,za="这些是来自以下ImageNet-1k类别的10张图像:“cassette_player”、“chain_saw”(2张)、“church”、“gas_pump”(3张)、“parachute”(2张)和”tench”。",Ts,b,Sa='<img src="https://huggingface.co/datasets/diffusers/docs-images/resolve/main/evaluation_diffusion_models/real-images.png" alt="真实图像"/><br/> <em>真实图像</em>',rs,ce,$a="加载图像后,我们对其进行轻量级预处理以便用于FID计算:",ds,oe,us,me,La='我们现在加载<a href="https://huggingface.co/docs/diffusers/api/pipelines/dit" rel="nofollow"><code>DiTPipeline</code></a>来生成基于上述类别的条件图像。',ws,ye,js,Te,Pa='现在,我们可以使用<a href="https://torchmetrics.readthedocs.io/" rel="nofollow"><code>torchmetrics</code></a>计算FID分数。',Us,re,fs,de,Da="FID分数越低越好。以下因素会影响FID结果:",hs,ue,qa="<li>图像数量(包括真实图像和生成图像)</li> <li>扩散过程中引入的随机性</li> <li>扩散过程的推理步数</li> <li>扩散过程中使用的调度器</li>",bs,we,Ka="对于最后两点,最佳实践是使用不同的随机种子和推理步数进行多次评估,然后报告平均结果。",Is,I,Oa="<p>FID结果往往具有脆弱性,因为它依赖于许多因素:</p> <ul><li>计算过程中使用的特定Inception模型</li> <li>计算实现的准确性</li> <li>图像格式(PNG和JPG的起点不同)</li></ul> <p>需要注意的是,FID通常在比较相似实验时最有用,但除非作者仔细公开FID测量代码,否则很难复现论文结果。</p> <p>这些注意事项同样适用于其他相关指标,如KID和IS。</p>",Cs,je,ln="最后,让我们可视化检查这些<code>fake_images</code>。",Zs,C,en='<img src="https://huggingface.co/datasets/diffusers/docs-images/resolve/main/evaluation_diffusion_models/fake-images.png" alt="生成图像"/><br/> <em>生成图像示例</em>',Bs,Ue,Ws,be,gs;return Z=new on({props:{containerStyle:"float: right; margin-left: 10px; display: inline-flex; position: relative; z-index: 10;"}}),B=new fe({props:{title:"Diffusion模型评估指南",local:"diffusion模型评估指南",headingTag:"h1"}}),k=new fe({props:{title:"评估场景",local:"评估场景",headingTag:"h2"}}),x=new fe({props:{title:"定性评估",local:"定性评估",headingTag:"h2"}}),S=new r({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}}),L=new r({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}}),O=new fe({props:{title:"定量评估",local:"定量评估",headingTag:"h2"}}),tl=new fe({props:{title:"文本引导图像生成",local:"文本引导图像生成",headingTag:"h3"}}),nl=new r({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}}),pl=new r({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}}),Jl=new r({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}}),ml=new r({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}}),Tl=new r({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}}),dl=new r({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}}),wl=new fe({props:{title:"图像条件式文本生成图像",local:"图像条件式文本生成图像",headingTag:"h3"}}),Bl=new r({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}}),Wl=new r({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}}),kl=new r({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}}),vl=new r({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}}),xl=new r({props:{code:"ZGF0YXNldCU1QmlkeCU1RCU1QiUyMmltYWdlJTIyJTVE",highlighted:'dataset[idx][<span class="hljs-string">&quot;image&quot;</span>]',wrap:!1}}),Fl=new r({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}}),El=new r({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}}),Ql=new r({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}}),Sl=new r({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}}),Ll=new r({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}}),ee=new fe({props:{title:"基于类别的图像生成",local:"基于类别的图像生成",headingTag:"h3"}}),pe=new r({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}}),Me=new r({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}}),oe=new r({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}}),ye=new r({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}}),re=new r({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}}),Ue=new mn({props:{source:"https://github.com/huggingface/diffusers/blob/main/docs/source/zh/conceptual/evaluation.md"}}),{c(){u=i("meta"),Ie=a(),he=i("p"),Ce=a(),J(Z.$$.fragment),Ze=a(),J(B.$$.fragment),Be=a(),w=i("a"),w.innerHTML=Gs,We=a(),j=i("blockquote"),j.innerHTML=ks,ge=a(),W=i("p"),W.innerHTML=vs,_e=a(),g=i("p"),g.textContent=Vs,Ge=a(),_=i("p"),_.innerHTML=xs,ke=a(),G=i("p"),G.innerHTML=Xs,ve=a(),J(k.$$.fragment),Ve=a(),v=i("p"),v.textContent=Rs,xe=a(),V=i("ul"),V.innerHTML=Ns,Xe=a(),J(x.$$.fragment),Re=a(),X=i("p"),X.innerHTML=Fs,Ne=a(),R=i("p"),R.innerHTML=Hs,Fe=a(),N=i("blockquote"),N.innerHTML=Es,He=a(),F=i("p"),F.innerHTML=Ys,Ee=a(),H=i("p"),H.textContent=Qs,Ye=a(),E=i("ul"),E.innerHTML=As,Qe=a(),Y=i("p"),Y.innerHTML=zs,Ae=a(),Q=i("ul"),Q.innerHTML=Ss,ze=a(),A=i("p"),A.innerHTML=$s,Se=a(),z=i("p"),z.innerHTML=Ls,$e=a(),J(S.$$.fragment),Le=a(),$=i("p"),$.innerHTML=Ps,Pe=a(),J(L.$$.fragment),De=a(),P=i("p"),P.innerHTML=Ds,qe=a(),D=i("p"),D.innerHTML=qs,Ke=a(),q=i("p"),q.innerHTML=Ks,Oe=a(),K=i("p"),K.textContent=Os,lt=a(),U=i("blockquote"),U.innerHTML=la,et=a(),J(O.$$.fragment),tt=a(),ll=i("p"),ll.textContent=ea,st=a(),el=i("ul"),el.innerHTML=ta,at=a(),J(tl.$$.fragment),nt=a(),sl=i("p"),sl.innerHTML=sa,it=a(),al=i("p"),al.innerHTML=aa,pt=a(),J(nl.$$.fragment),Mt=a(),il=i("p"),il.textContent=na,Jt=a(),J(pl.$$.fragment),ct=a(),Ml=i("p"),Ml.textContent=ia,ot=a(),J(Jl.$$.fragment),mt=a(),cl=i("p"),cl.textContent=pa,yt=a(),ol=i("p"),ol.innerHTML=Ma,Tt=a(),J(ml.$$.fragment),rt=a(),yl=i("p"),yl.innerHTML=Ja,dt=a(),J(Tl.$$.fragment),ut=a(),rl=i("p"),rl.textContent=ca,wt=a(),J(dl.$$.fragment),jt=a(),ul=i("p"),ul.innerHTML=oa,Ut=a(),f=i("blockquote"),f.innerHTML=ma,ft=a(),J(wl.$$.fragment),ht=a(),jl=i("p"),jl.innerHTML=ya,bt=a(),Ul=i("p"),Ul.textContent=Ta,It=a(),fl=i("p"),fl.innerHTML=ra,Ct=a(),hl=i("p"),hl.innerHTML=da,Zt=a(),bl=i("ul"),bl.innerHTML=ua,Bt=a(),Il=i("p"),Il.textContent=wa,Wt=a(),Cl=i("p"),Cl.innerHTML=ja,gt=a(),Zl=i("p"),Zl.textContent=Ua,_t=a(),J(Bl.$$.fragment),Gt=a(),J(Wl.$$.fragment),kt=a(),gl=i("p"),gl.textContent=fa,vt=a(),_l=i("ul"),_l.innerHTML=ha,Vt=a(),Gl=i("p"),Gl.textContent=ba,xt=a(),J(kl.$$.fragment),Xt=a(),J(vl.$$.fragment),Rt=a(),Vl=i("p"),Vl.textContent=Ia,Nt=a(),J(xl.$$.fragment),Ft=a(),Xl=i("p"),Xl.innerHTML=Ca,Ht=a(),Rl=i("p"),Rl.textContent=Za,Et=a(),Nl=i("p"),Nl.innerHTML=Ba,Yt=a(),J(Fl.$$.fragment),Qt=a(),Hl=i("p"),Hl.textContent=Wa,At=a(),J(El.$$.fragment),zt=a(),Yl=i("p"),Yl.textContent=ga,St=a(),J(Ql.$$.fragment),$t=a(),Al=i("p"),Al.innerHTML=_a,Lt=a(),zl=i("p"),zl.innerHTML=Ga,Pt=a(),J(Sl.$$.fragment),Dt=a(),$l=i("p"),$l.innerHTML=ka,qt=a(),J(Ll.$$.fragment),Kt=a(),Pl=i("p"),Pl.textContent=va,Ot=a(),Dl=i("p"),Dl.innerHTML=Va,ls=a(),ql=i("p"),ql.innerHTML=xa,es=a(),Kl=i("p"),Kl.innerHTML=Xa,ts=a(),h=i("blockquote"),h.innerHTML=Ra,ss=a(),Ol=i("p"),Ol.innerHTML=Na,as=a(),le=i("p"),le.innerHTML=Fa,ns=a(),J(ee.$$.fragment),is=a(),te=i("p"),te.innerHTML=Ha,ps=a(),se=i("p"),se.innerHTML=Ea,Ms=a(),ae=i("blockquote"),ae.innerHTML=Ya,Js=a(),ne=i("p"),ne.textContent=Qa,cs=a(),ie=i("p"),ie.textContent=Aa,os=a(),J(pe.$$.fragment),ms=a(),J(Me.$$.fragment),ys=a(),Je=i("p"),Je.textContent=za,Ts=a(),b=i("p"),b.innerHTML=Sa,rs=a(),ce=i("p"),ce.textContent=$a,ds=a(),J(oe.$$.fragment),us=a(),me=i("p"),me.innerHTML=La,ws=a(),J(ye.$$.fragment),js=a(),Te=i("p"),Te.innerHTML=Pa,Us=a(),J(re.$$.fragment),fs=a(),de=i("p"),de.textContent=Da,hs=a(),ue=i("ul"),ue.innerHTML=qa,bs=a(),we=i("p"),we.textContent=Ka,Is=a(),I=i("blockquote"),I.innerHTML=Oa,Cs=a(),je=i("p"),je.innerHTML=ln,Zs=a(),C=i("p"),C.innerHTML=en,Bs=a(),J(Ue.$$.fragment),Ws=a(),be=i("p"),this.h()},l(l){const e=Jn("svelte-u9bgzb",document.head);u=p(e,"META",{name:!0,content:!0}),e.forEach(t),Ie=n(l),he=p(l,"P",{}),tn(he).forEach(t),Ce=n(l),c(Z.$$.fragment,l),Ze=n(l),c(B.$$.fragment,l),Be=n(l),w=p(l,"A",{target:!0,href:!0,"data-svelte-h":!0}),M(w)!=="svelte-h14285"&&(w.innerHTML=Gs),We=n(l),j=p(l,"BLOCKQUOTE",{class:!0,"data-svelte-h":!0}),M(j)!=="svelte-1jugxt2"&&(j.innerHTML=ks),ge=n(l),W=p(l,"P",{"data-svelte-h":!0}),M(W)!=="svelte-1pes0mw"&&(W.innerHTML=vs),_e=n(l),g=p(l,"P",{"data-svelte-h":!0}),M(g)!=="svelte-k5obfv"&&(g.textContent=Vs),Ge=n(l),_=p(l,"P",{"data-svelte-h":!0}),M(_)!=="svelte-1ajaxvu"&&(_.innerHTML=xs),ke=n(l),G=p(l,"P",{"data-svelte-h":!0}),M(G)!=="svelte-e6klhp"&&(G.innerHTML=Xs),ve=n(l),c(k.$$.fragment,l),Ve=n(l),v=p(l,"P",{"data-svelte-h":!0}),M(v)!=="svelte-1iu3uxb"&&(v.textContent=Rs),xe=n(l),V=p(l,"UL",{"data-svelte-h":!0}),M(V)!=="svelte-1nhmbj0"&&(V.innerHTML=Ns),Xe=n(l),c(x.$$.fragment,l),Re=n(l),X=p(l,"P",{"data-svelte-h":!0}),M(X)!=="svelte-1txffyk"&&(X.innerHTML=Fs),Ne=n(l),R=p(l,"P",{"data-svelte-h":!0}),M(R)!=="svelte-1vuvlvf"&&(R.innerHTML=Hs),Fe=n(l),N=p(l,"BLOCKQUOTE",{"data-svelte-h":!0}),M(N)!=="svelte-m0q7q0"&&(N.innerHTML=Es),He=n(l),F=p(l,"P",{"data-svelte-h":!0}),M(F)!=="svelte-19xz367"&&(F.innerHTML=Ys),Ee=n(l),H=p(l,"P",{"data-svelte-h":!0}),M(H)!=="svelte-f20ejf"&&(H.textContent=Qs),Ye=n(l),E=p(l,"UL",{"data-svelte-h":!0}),M(E)!=="svelte-11gxful"&&(E.innerHTML=As),Qe=n(l),Y=p(l,"P",{"data-svelte-h":!0}),M(Y)!=="svelte-1op8x1l"&&(Y.innerHTML=zs),Ae=n(l),Q=p(l,"UL",{"data-svelte-h":!0}),M(Q)!=="svelte-jo9asf"&&(Q.innerHTML=Ss),ze=n(l),A=p(l,"P",{"data-svelte-h":!0}),M(A)!=="svelte-1hb73k9"&&(A.innerHTML=$s),Se=n(l),z=p(l,"P",{"data-svelte-h":!0}),M(z)!=="svelte-16alyrm"&&(z.innerHTML=Ls),$e=n(l),c(S.$$.fragment,l),Le=n(l),$=p(l,"P",{"data-svelte-h":!0}),M($)!=="svelte-rdopsg"&&($.innerHTML=Ps),Pe=n(l),c(L.$$.fragment,l),De=n(l),P=p(l,"P",{"data-svelte-h":!0}),M(P)!=="svelte-4i7yd5"&&(P.innerHTML=Ds),qe=n(l),D=p(l,"P",{"data-svelte-h":!0}),M(D)!=="svelte-8snsne"&&(D.innerHTML=qs),Ke=n(l),q=p(l,"P",{"data-svelte-h":!0}),M(q)!=="svelte-gipltn"&&(q.innerHTML=Ks),Oe=n(l),K=p(l,"P",{"data-svelte-h":!0}),M(K)!=="svelte-ueq19r"&&(K.textContent=Os),lt=n(l),U=p(l,"BLOCKQUOTE",{class:!0,"data-svelte-h":!0}),M(U)!=="svelte-yewjf8"&&(U.innerHTML=la),et=n(l),c(O.$$.fragment,l),tt=n(l),ll=p(l,"P",{"data-svelte-h":!0}),M(ll)!=="svelte-r7hhw0"&&(ll.textContent=ea),st=n(l),el=p(l,"UL",{"data-svelte-h":!0}),M(el)!=="svelte-b93mpw"&&(el.innerHTML=ta),at=n(l),c(tl.$$.fragment,l),nt=n(l),sl=p(l,"P",{"data-svelte-h":!0}),M(sl)!=="svelte-n2bg45"&&(sl.innerHTML=sa),it=n(l),al=p(l,"P",{"data-svelte-h":!0}),M(al)!=="svelte-1hzc3dk"&&(al.innerHTML=aa),pt=n(l),c(nl.$$.fragment,l),Mt=n(l),il=p(l,"P",{"data-svelte-h":!0}),M(il)!=="svelte-1k1g1o6"&&(il.textContent=na),Jt=n(l),c(pl.$$.fragment,l),ct=n(l),Ml=p(l,"P",{"data-svelte-h":!0}),M(Ml)!=="svelte-1k28vwi"&&(Ml.textContent=ia),ot=n(l),c(Jl.$$.fragment,l),mt=n(l),cl=p(l,"P",{"data-svelte-h":!0}),M(cl)!=="svelte-1iltbps"&&(cl.textContent=pa),yt=n(l),ol=p(l,"P",{"data-svelte-h":!0}),M(ol)!=="svelte-mydfaa"&&(ol.innerHTML=Ma),Tt=n(l),c(ml.$$.fragment,l),rt=n(l),yl=p(l,"P",{"data-svelte-h":!0}),M(yl)!=="svelte-1o4hn2o"&&(yl.innerHTML=Ja),dt=n(l),c(Tl.$$.fragment,l),ut=n(l),rl=p(l,"P",{"data-svelte-h":!0}),M(rl)!=="svelte-2io45m"&&(rl.textContent=ca),wt=n(l),c(dl.$$.fragment,l),jt=n(l),ul=p(l,"P",{"data-svelte-h":!0}),M(ul)!=="svelte-ujkfdk"&&(ul.innerHTML=oa),Ut=n(l),f=p(l,"BLOCKQUOTE",{class:!0,"data-svelte-h":!0}),M(f)!=="svelte-iu3cp7"&&(f.innerHTML=ma),ft=n(l),c(wl.$$.fragment,l),ht=n(l),jl=p(l,"P",{"data-svelte-h":!0}),M(jl)!=="svelte-1yzloih"&&(jl.innerHTML=ya),bt=n(l),Ul=p(l,"P",{"data-svelte-h":!0}),M(Ul)!=="svelte-7c2hev"&&(Ul.textContent=Ta),It=n(l),fl=p(l,"P",{"data-svelte-h":!0}),M(fl)!=="svelte-1u1nt56"&&(fl.innerHTML=ra),Ct=n(l),hl=p(l,"P",{"data-svelte-h":!0}),M(hl)!=="svelte-1nycz9x"&&(hl.innerHTML=da),Zt=n(l),bl=p(l,"UL",{"data-svelte-h":!0}),M(bl)!=="svelte-169ilj8"&&(bl.innerHTML=ua),Bt=n(l),Il=p(l,"P",{"data-svelte-h":!0}),M(Il)!=="svelte-f9n3pa"&&(Il.textContent=wa),Wt=n(l),Cl=p(l,"P",{"data-svelte-h":!0}),M(Cl)!=="svelte-8e89hb"&&(Cl.innerHTML=ja),gt=n(l),Zl=p(l,"P",{"data-svelte-h":!0}),M(Zl)!=="svelte-r23mbf"&&(Zl.textContent=Ua),_t=n(l),c(Bl.$$.fragment,l),Gt=n(l),c(Wl.$$.fragment,l),kt=n(l),gl=p(l,"P",{"data-svelte-h":!0}),M(gl)!=="svelte-4az32q"&&(gl.textContent=fa),vt=n(l),_l=p(l,"UL",{"data-svelte-h":!0}),M(_l)!=="svelte-1rw2hq2"&&(_l.innerHTML=ha),Vt=n(l),Gl=p(l,"P",{"data-svelte-h":!0}),M(Gl)!=="svelte-11cxr2x"&&(Gl.textContent=ba),xt=n(l),c(kl.$$.fragment,l),Xt=n(l),c(vl.$$.fragment,l),Rt=n(l),Vl=p(l,"P",{"data-svelte-h":!0}),M(Vl)!=="svelte-xp6zg6"&&(Vl.textContent=Ia),Nt=n(l),c(xl.$$.fragment,l),Ft=n(l),Xl=p(l,"P",{"data-svelte-h":!0}),M(Xl)!=="svelte-ogvsh3"&&(Xl.innerHTML=Ca),Ht=n(l),Rl=p(l,"P",{"data-svelte-h":!0}),M(Rl)!=="svelte-16d8j0z"&&(Rl.textContent=Za),Et=n(l),Nl=p(l,"P",{"data-svelte-h":!0}),M(Nl)!=="svelte-1yqwgt0"&&(Nl.innerHTML=Ba),Yt=n(l),c(Fl.$$.fragment,l),Qt=n(l),Hl=p(l,"P",{"data-svelte-h":!0}),M(Hl)!=="svelte-1llczdr"&&(Hl.textContent=Wa),At=n(l),c(El.$$.fragment,l),zt=n(l),Yl=p(l,"P",{"data-svelte-h":!0}),M(Yl)!=="svelte-y69d0n"&&(Yl.textContent=ga),St=n(l),c(Ql.$$.fragment,l),$t=n(l),Al=p(l,"P",{"data-svelte-h":!0}),M(Al)!=="svelte-1olfepe"&&(Al.innerHTML=_a),Lt=n(l),zl=p(l,"P",{"data-svelte-h":!0}),M(zl)!=="svelte-1cfzew0"&&(zl.innerHTML=Ga),Pt=n(l),c(Sl.$$.fragment,l),Dt=n(l),$l=p(l,"P",{"data-svelte-h":!0}),M($l)!=="svelte-1ah96o9"&&($l.innerHTML=ka),qt=n(l),c(Ll.$$.fragment,l),Kt=n(l),Pl=p(l,"P",{"data-svelte-h":!0}),M(Pl)!=="svelte-1evlka"&&(Pl.textContent=va),Ot=n(l),Dl=p(l,"P",{"data-svelte-h":!0}),M(Dl)!=="svelte-du0g2y"&&(Dl.innerHTML=Va),ls=n(l),ql=p(l,"P",{"data-svelte-h":!0}),M(ql)!=="svelte-1ck0ggc"&&(ql.innerHTML=xa),es=n(l),Kl=p(l,"P",{"data-svelte-h":!0}),M(Kl)!=="svelte-15kssed"&&(Kl.innerHTML=Xa),ts=n(l),h=p(l,"BLOCKQUOTE",{class:!0,"data-svelte-h":!0}),M(h)!=="svelte-yfuov9"&&(h.innerHTML=Ra),ss=n(l),Ol=p(l,"P",{"data-svelte-h":!0}),M(Ol)!=="svelte-10m0vep"&&(Ol.innerHTML=Na),as=n(l),le=p(l,"P",{"data-svelte-h":!0}),M(le)!=="svelte-1sls2vo"&&(le.innerHTML=Fa),ns=n(l),c(ee.$$.fragment,l),is=n(l),te=p(l,"P",{"data-svelte-h":!0}),M(te)!=="svelte-1be9oeu"&&(te.innerHTML=Ha),ps=n(l),se=p(l,"P",{"data-svelte-h":!0}),M(se)!=="svelte-18nm4k9"&&(se.innerHTML=Ea),Ms=n(l),ae=p(l,"BLOCKQUOTE",{"data-svelte-h":!0}),M(ae)!=="svelte-15x4a9v"&&(ae.innerHTML=Ya),Js=n(l),ne=p(l,"P",{"data-svelte-h":!0}),M(ne)!=="svelte-fg97ol"&&(ne.textContent=Qa),cs=n(l),ie=p(l,"P",{"data-svelte-h":!0}),M(ie)!=="svelte-pwwdv9"&&(ie.textContent=Aa),os=n(l),c(pe.$$.fragment,l),ms=n(l),c(Me.$$.fragment,l),ys=n(l),Je=p(l,"P",{"data-svelte-h":!0}),M(Je)!=="svelte-6bz4xb"&&(Je.textContent=za),Ts=n(l),b=p(l,"P",{align:!0,"data-svelte-h":!0}),M(b)!=="svelte-ke5ahc"&&(b.innerHTML=Sa),rs=n(l),ce=p(l,"P",{"data-svelte-h":!0}),M(ce)!=="svelte-ilkg7f"&&(ce.textContent=$a),ds=n(l),c(oe.$$.fragment,l),us=n(l),me=p(l,"P",{"data-svelte-h":!0}),M(me)!=="svelte-1g1dyy3"&&(me.innerHTML=La),ws=n(l),c(ye.$$.fragment,l),js=n(l),Te=p(l,"P",{"data-svelte-h":!0}),M(Te)!=="svelte-1wphc0p"&&(Te.innerHTML=Pa),Us=n(l),c(re.$$.fragment,l),fs=n(l),de=p(l,"P",{"data-svelte-h":!0}),M(de)!=="svelte-1v2r3ps"&&(de.textContent=Da),hs=n(l),ue=p(l,"UL",{"data-svelte-h":!0}),M(ue)!=="svelte-1iufyfv"&&(ue.innerHTML=qa),bs=n(l),we=p(l,"P",{"data-svelte-h":!0}),M(we)!=="svelte-1skjrzw"&&(we.textContent=Ka),Is=n(l),I=p(l,"BLOCKQUOTE",{class:!0,"data-svelte-h":!0}),M(I)!=="svelte-11xfkr6"&&(I.innerHTML=Oa),Cs=n(l),je=p(l,"P",{"data-svelte-h":!0}),M(je)!=="svelte-147tlvf"&&(je.innerHTML=ln),Zs=n(l),C=p(l,"P",{align:!0,"data-svelte-h":!0}),M(C)!=="svelte-1if1i1w"&&(C.innerHTML=en),Bs=n(l),c(Ue.$$.fragment,l),Ws=n(l),be=p(l,"P",{}),tn(be).forEach(t),this.h()},h(){d(u,"name","hf:doc:metadata"),d(u,"content",Tn),d(w,"target","_blank"),d(w,"href","https://colab.research.google.com/github/huggingface/notebooks/blob/main/diffusers/evaluation.ipynb"),d(j,"class","tip"),d(U,"class","tip"),d(f,"class","warning"),d(h,"class","tip"),d(b,"align","center"),d(I,"class","warning"),d(C,"align","center")},m(l,e){cn(document.head,u),s(l,Ie,e),s(l,he,e),s(l,Ce,e),o(Z,l,e),s(l,Ze,e),o(B,l,e),s(l,Be,e),s(l,w,e),s(l,We,e),s(l,j,e),s(l,ge,e),s(l,W,e),s(l,_e,e),s(l,g,e),s(l,Ge,e),s(l,_,e),s(l,ke,e),s(l,G,e),s(l,ve,e),o(k,l,e),s(l,Ve,e),s(l,v,e),s(l,xe,e),s(l,V,e),s(l,Xe,e),o(x,l,e),s(l,Re,e),s(l,X,e),s(l,Ne,e),s(l,R,e),s(l,Fe,e),s(l,N,e),s(l,He,e),s(l,F,e),s(l,Ee,e),s(l,H,e),s(l,Ye,e),s(l,E,e),s(l,Qe,e),s(l,Y,e),s(l,Ae,e),s(l,Q,e),s(l,ze,e),s(l,A,e),s(l,Se,e),s(l,z,e),s(l,$e,e),o(S,l,e),s(l,Le,e),s(l,$,e),s(l,Pe,e),o(L,l,e),s(l,De,e),s(l,P,e),s(l,qe,e),s(l,D,e),s(l,Ke,e),s(l,q,e),s(l,Oe,e),s(l,K,e),s(l,lt,e),s(l,U,e),s(l,et,e),o(O,l,e),s(l,tt,e),s(l,ll,e),s(l,st,e),s(l,el,e),s(l,at,e),o(tl,l,e),s(l,nt,e),s(l,sl,e),s(l,it,e),s(l,al,e),s(l,pt,e),o(nl,l,e),s(l,Mt,e),s(l,il,e),s(l,Jt,e),o(pl,l,e),s(l,ct,e),s(l,Ml,e),s(l,ot,e),o(Jl,l,e),s(l,mt,e),s(l,cl,e),s(l,yt,e),s(l,ol,e),s(l,Tt,e),o(ml,l,e),s(l,rt,e),s(l,yl,e),s(l,dt,e),o(Tl,l,e),s(l,ut,e),s(l,rl,e),s(l,wt,e),o(dl,l,e),s(l,jt,e),s(l,ul,e),s(l,Ut,e),s(l,f,e),s(l,ft,e),o(wl,l,e),s(l,ht,e),s(l,jl,e),s(l,bt,e),s(l,Ul,e),s(l,It,e),s(l,fl,e),s(l,Ct,e),s(l,hl,e),s(l,Zt,e),s(l,bl,e),s(l,Bt,e),s(l,Il,e),s(l,Wt,e),s(l,Cl,e),s(l,gt,e),s(l,Zl,e),s(l,_t,e),o(Bl,l,e),s(l,Gt,e),o(Wl,l,e),s(l,kt,e),s(l,gl,e),s(l,vt,e),s(l,_l,e),s(l,Vt,e),s(l,Gl,e),s(l,xt,e),o(kl,l,e),s(l,Xt,e),o(vl,l,e),s(l,Rt,e),s(l,Vl,e),s(l,Nt,e),o(xl,l,e),s(l,Ft,e),s(l,Xl,e),s(l,Ht,e),s(l,Rl,e),s(l,Et,e),s(l,Nl,e),s(l,Yt,e),o(Fl,l,e),s(l,Qt,e),s(l,Hl,e),s(l,At,e),o(El,l,e),s(l,zt,e),s(l,Yl,e),s(l,St,e),o(Ql,l,e),s(l,$t,e),s(l,Al,e),s(l,Lt,e),s(l,zl,e),s(l,Pt,e),o(Sl,l,e),s(l,Dt,e),s(l,$l,e),s(l,qt,e),o(Ll,l,e),s(l,Kt,e),s(l,Pl,e),s(l,Ot,e),s(l,Dl,e),s(l,ls,e),s(l,ql,e),s(l,es,e),s(l,Kl,e),s(l,ts,e),s(l,h,e),s(l,ss,e),s(l,Ol,e),s(l,as,e),s(l,le,e),s(l,ns,e),o(ee,l,e),s(l,is,e),s(l,te,e),s(l,ps,e),s(l,se,e),s(l,Ms,e),s(l,ae,e),s(l,Js,e),s(l,ne,e),s(l,cs,e),s(l,ie,e),s(l,os,e),o(pe,l,e),s(l,ms,e),o(Me,l,e),s(l,ys,e),s(l,Je,e),s(l,Ts,e),s(l,b,e),s(l,rs,e),s(l,ce,e),s(l,ds,e),o(oe,l,e),s(l,us,e),s(l,me,e),s(l,ws,e),o(ye,l,e),s(l,js,e),s(l,Te,e),s(l,Us,e),o(re,l,e),s(l,fs,e),s(l,de,e),s(l,hs,e),s(l,ue,e),s(l,bs,e),s(l,we,e),s(l,Is,e),s(l,I,e),s(l,Cs,e),s(l,je,e),s(l,Zs,e),s(l,C,e),s(l,Bs,e),o(Ue,l,e),s(l,Ws,e),s(l,be,e),gs=!0},p:an,i(l){gs||(m(Z.$$.fragment,l),m(B.$$.fragment,l),m(k.$$.fragment,l),m(x.$$.fragment,l),m(S.$$.fragment,l),m(L.$$.fragment,l),m(O.$$.fragment,l),m(tl.$$.fragment,l),m(nl.$$.fragment,l),m(pl.$$.fragment,l),m(Jl.$$.fragment,l),m(ml.$$.fragment,l),m(Tl.$$.fragment,l),m(dl.$$.fragment,l),m(wl.$$.fragment,l),m(Bl.$$.fragment,l),m(Wl.$$.fragment,l),m(kl.$$.fragment,l),m(vl.$$.fragment,l),m(xl.$$.fragment,l),m(Fl.$$.fragment,l),m(El.$$.fragment,l),m(Ql.$$.fragment,l),m(Sl.$$.fragment,l),m(Ll.$$.fragment,l),m(ee.$$.fragment,l),m(pe.$$.fragment,l),m(Me.$$.fragment,l),m(oe.$$.fragment,l),m(ye.$$.fragment,l),m(re.$$.fragment,l),m(Ue.$$.fragment,l),gs=!0)},o(l){y(Z.$$.fragment,l),y(B.$$.fragment,l),y(k.$$.fragment,l),y(x.$$.fragment,l),y(S.$$.fragment,l),y(L.$$.fragment,l),y(O.$$.fragment,l),y(tl.$$.fragment,l),y(nl.$$.fragment,l),y(pl.$$.fragment,l),y(Jl.$$.fragment,l),y(ml.$$.fragment,l),y(Tl.$$.fragment,l),y(dl.$$.fragment,l),y(wl.$$.fragment,l),y(Bl.$$.fragment,l),y(Wl.$$.fragment,l),y(kl.$$.fragment,l),y(vl.$$.fragment,l),y(xl.$$.fragment,l),y(Fl.$$.fragment,l),y(El.$$.fragment,l),y(Ql.$$.fragment,l),y(Sl.$$.fragment,l),y(Ll.$$.fragment,l),y(ee.$$.fragment,l),y(pe.$$.fragment,l),y(Me.$$.fragment,l),y(oe.$$.fragment,l),y(ye.$$.fragment,l),y(re.$$.fragment,l),y(Ue.$$.fragment,l),gs=!1},d(l){l&&(t(Ie),t(he),t(Ce),t(Ze),t(Be),t(w),t(We),t(j),t(ge),t(W),t(_e),t(g),t(Ge),t(_),t(ke),t(G),t(ve),t(Ve),t(v),t(xe),t(V),t(Xe),t(Re),t(X),t(Ne),t(R),t(Fe),t(N),t(He),t(F),t(Ee),t(H),t(Ye),t(E),t(Qe),t(Y),t(Ae),t(Q),t(ze),t(A),t(Se),t(z),t($e),t(Le),t($),t(Pe),t(De),t(P),t(qe),t(D),t(Ke),t(q),t(Oe),t(K),t(lt),t(U),t(et),t(tt),t(ll),t(st),t(el),t(at),t(nt),t(sl),t(it),t(al),t(pt),t(Mt),t(il),t(Jt),t(ct),t(Ml),t(ot),t(mt),t(cl),t(yt),t(ol),t(Tt),t(rt),t(yl),t(dt),t(ut),t(rl),t(wt),t(jt),t(ul),t(Ut),t(f),t(ft),t(ht),t(jl),t(bt),t(Ul),t(It),t(fl),t(Ct),t(hl),t(Zt),t(bl),t(Bt),t(Il),t(Wt),t(Cl),t(gt),t(Zl),t(_t),t(Gt),t(kt),t(gl),t(vt),t(_l),t(Vt),t(Gl),t(xt),t(Xt),t(Rt),t(Vl),t(Nt),t(Ft),t(Xl),t(Ht),t(Rl),t(Et),t(Nl),t(Yt),t(Qt),t(Hl),t(At),t(zt),t(Yl),t(St),t($t),t(Al),t(Lt),t(zl),t(Pt),t(Dt),t($l),t(qt),t(Kt),t(Pl),t(Ot),t(Dl),t(ls),t(ql),t(es),t(Kl),t(ts),t(h),t(ss),t(Ol),t(as),t(le),t(ns),t(is),t(te),t(ps),t(se),t(Ms),t(ae),t(Js),t(ne),t(cs),t(ie),t(os),t(ms),t(ys),t(Je),t(Ts),t(b),t(rs),t(ce),t(ds),t(us),t(me),t(ws),t(js),t(Te),t(Us),t(fs),t(de),t(hs),t(ue),t(bs),t(we),t(Is),t(I),t(Cs),t(je),t(Zs),t(C),t(Bs),t(Ws),t(be)),t(u),T(Z,l),T(B,l),T(k,l),T(x,l),T(S,l),T(L,l),T(O,l),T(tl,l),T(nl,l),T(pl,l),T(Jl,l),T(ml,l),T(Tl,l),T(dl,l),T(wl,l),T(Bl,l),T(Wl,l),T(kl,l),T(vl,l),T(xl,l),T(Fl,l),T(El,l),T(Ql,l),T(Sl,l),T(Ll,l),T(ee,l),T(pe,l),T(Me,l),T(oe,l),T(ye,l),T(re,l),T(Ue,l)}}}const Tn='{"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 rn(_s){return nn(()=>{new URLSearchParams(window.location.search).get("fw")}),[]}class Un extends pn{constructor(u){super(),Mn(this,u,rn,yn,sn,{})}}export{Un as component};

Xet Storage Details

Size:
75.1 kB
·
Xet hash:
08e397f6fb4c483a5077845eb118e4d2d84c83ea50b09910db198a3f025f1305

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