Buckets:

download
raw
20 kB
import"../chunks/DsnmJJEf.js";import{i as B,h as u,C as Q,H as k,b,a as s,E as g,s as R}from"../chunks/DdZvggmf.js";import{p as A,o as E,s as l,f as h,a as M,b as F,c as T,n as N}from"../chunks/BbekZcyp.js";import{H as n}from"../chunks/BcnRgdDK.js";const S='{"title":"AutoPipelineBlocks","local":"autopipelineblocks","sections":[],"depth":1}';var G=T('<meta name="hf:doc:metadata"/>'),_=T("<!> <!> <!>",1),Z=T("<p></p> <!> <!> <p><code>AutoPipelineBlocks</code> 是一种包含支持不同工作流程的块的多块类型。它根据运行时提供的输入自动选择要运行的子块。这通常用于将多个工作流程(文本到图像、图像到图像、修复)打包到一个管道中以便利。</p> <p>本指南展示如何创建 <code>AutoPipelineBlocks</code>。</p> <p>创建三个 <code>ModularPipelineBlocks</code> 用于文本到图像、图像到图像和修复。这些代表了管道中可用的不同工作流程。</p> <!> <p>创建一个包含子块类及其对应块名称列表的<code>AutoPipelineBlocks</code>类。</p> <p>你还需要包括<code>block_trigger_inputs</code>,一个触发相应块的输入名称列表。如果在运行时提供了触发输入,则选择该块运行。使用<code>None</code>来指定如果未检测到触发输入时运行的默认块。</p> <p>最后,重要的是包括一个<code>description</code>,清楚地解释哪些输入触发哪些工作流。这有助于用户理解如何运行特定的工作流。</p> <!> <p>包含<code>description</code>以避免任何关于如何运行块和需要什么输入的混淆<strong>非常</strong>重要。虽然<code>AutoPipelineBlocks</code>很方便,但如果它没有正确解释,其条件逻辑可能难以理解。</p> <p>创建<code>AutoImageBlocks</code>的一个实例。</p> <!> <p>对于更复杂的组合,例如在更大的管道中作为子块使用的嵌套<code>AutoPipelineBlocks</code>块,使用<code>get_execution_blocks()</code>方法根据你的输入提取实际运行的块。</p> <!> <!> <p></p>",1);function z(d,r){A(r,!1),E(()=>{new URLSearchParams(window.location.search).get("fw")}),B();var t=Z();u("1k4az8t",J=>{var U=G();R(U,"content",S),M(J,U)});var p=l(h(t),2);Q(p,{containerStyle:"float: right; margin-left: 10px; display: inline-flex; position: relative; z-index: 10;"});var e=l(p,2);k(e,{title:"AutoPipelineBlocks",local:"autopipelineblocks",headingTag:"h1"});var c=l(e,8);b(c,{id:"auto",options:["text-to-image","image-to-image","inpaint"],children:(J,U)=>{var j=_(),w=h(j);n(w,{id:"auto",option:"text-to-image",children:(a,C)=>{s(a,{code:"aW1wb3J0JTIwdG9yY2glMEFmcm9tJTIwZGlmZnVzZXJzLm1vZHVsYXJfcGlwZWxpbmVzJTIwaW1wb3J0JTIwTW9kdWxhclBpcGVsaW5lQmxvY2tzJTJDJTIwSW5wdXRQYXJhbSUyQyUyME91dHB1dFBhcmFtJTBBJTBBY2xhc3MlMjBUZXh0VG9JbWFnZUJsb2NrKE1vZHVsYXJQaXBlbGluZUJsb2NrcyklM0ElMEElMjAlMjAlMjAlMjBtb2RlbF9uYW1lJTIwJTNEJTIwJTIydGV4dDJpbWclMjIlMEElMEElMjAlMjAlMjAlMjAlNDBwcm9wZXJ0eSUwQSUyMCUyMCUyMCUyMGRlZiUyMGlucHV0cyhzZWxmKSUzQSUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMHJldHVybiUyMCU1QklucHV0UGFyYW0obmFtZSUzRCUyMnByb21wdCUyMiklNUQlMEElMEElMjAlMjAlMjAlMjAlNDBwcm9wZXJ0eSUwQSUyMCUyMCUyMCUyMGRlZiUyMGludGVybWVkaWF0ZV9vdXRwdXRzKHNlbGYpJTNBJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwcmV0dXJuJTIwJTVCJTVEJTBBJTBBJTIwJTIwJTIwJTIwJTQwcHJvcGVydHklMEElMjAlMjAlMjAlMjBkZWYlMjBkZXNjcmlwdGlvbihzZWxmKSUzQSUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMHJldHVybiUyMCUyMiVFNiU4OCU5MSVFNiU5OCVBRiVFNCVCOCU4MCVFNCVCOCVBQSVFNiU5NiU4NyVFNiU5QyVBQyVFNSU4OCVCMCVFNSU5QiVCRSVFNSU4MyU4RiVFNyU5QSU4NCVFNSVCNyVBNSVFNCVCRCU5QyVFNiVCNSU4MSVFNyVBOCU4QiVFRiVCQyU4MSUyMiUwQSUwQSUyMCUyMCUyMCUyMGRlZiUyMF9fY2FsbF9fKHNlbGYlMkMlMjBjb21wb25lbnRzJTJDJTIwc3RhdGUpJTNBJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwYmxvY2tfc3RhdGUlMjAlM0QlMjBzZWxmLmdldF9ibG9ja19zdGF0ZShzdGF0ZSklMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjBwcmludCglMjIlRTglQkYlOTAlRTglQTElOEMlRTYlOTYlODclRTYlOUMlQUMlRTUlODglQjAlRTUlOUIlQkUlRTUlODMlOEYlRTUlQjclQTUlRTQlQkQlOUMlRTYlQjUlODElRTclQTglOEIlMjIpJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIzJTIwJUU1JTlDJUE4JUU4JUJGJTk5JUU5JTg3JThDJUU2JUI3JUJCJUU1JThBJUEwJUU0JUJEJUEwJUU3JTlBJTg0JUU2JTk2JTg3JUU2JTlDJUFDJUU1JTg4JUIwJUU1JTlCJUJFJUU1JTgzJThGJUU5JTgwJUJCJUU4JUJFJTkxJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIzJTIwJUU0JUJFJThCJUU1JUE2JTgyJUVGJUJDJTlBJUU2JUEwJUI5JUU2JThEJUFFJUU2JThGJTkwJUU3JUE0JUJBJUU3JTk0JTlGJUU2JTg4JTkwJUU1JTlCJUJFJUU1JTgzJThGJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwc2VsZi5zZXRfYmxvY2tfc3RhdGUoc3RhdGUlMkMlMjBibG9ja19zdGF0ZSklMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjByZXR1cm4lMjBjb21wb25lbnRzJTJDJTIwc3RhdGU=",highlighted:`<span class="hljs-keyword">import</span> torch
<span class="hljs-keyword">from</span> diffusers.modular_pipelines <span class="hljs-keyword">import</span> ModularPipelineBlocks, InputParam, OutputParam
<span class="hljs-keyword">class</span> <span class="hljs-title class_">TextToImageBlock</span>(<span class="hljs-title class_ inherited__">ModularPipelineBlocks</span>):
model_name = <span class="hljs-string">&quot;text2img&quot;</span>
<span class="hljs-meta"> @property</span>
<span class="hljs-keyword">def</span> <span class="hljs-title function_">inputs</span>(<span class="hljs-params">self</span>):
<span class="hljs-keyword">return</span> [InputParam(name=<span class="hljs-string">&quot;prompt&quot;</span>)]
<span class="hljs-meta"> @property</span>
<span class="hljs-keyword">def</span> <span class="hljs-title function_">intermediate_outputs</span>(<span class="hljs-params">self</span>):
<span class="hljs-keyword">return</span> []
<span class="hljs-meta"> @property</span>
<span class="hljs-keyword">def</span> <span class="hljs-title function_">description</span>(<span class="hljs-params">self</span>):
<span class="hljs-keyword">return</span> <span class="hljs-string">&quot;我是一个文本到图像的工作流程!&quot;</span>
<span class="hljs-keyword">def</span> <span class="hljs-title function_">__call__</span>(<span class="hljs-params">self, components, state</span>):
block_state = <span class="hljs-variable language_">self</span>.get_block_state(state)
<span class="hljs-built_in">print</span>(<span class="hljs-string">&quot;运行文本到图像工作流程&quot;</span>)
<span class="hljs-comment"># 在这里添加你的文本到图像逻辑</span>
<span class="hljs-comment"># 例如:根据提示生成图像</span>
<span class="hljs-variable language_">self</span>.set_block_state(state, block_state)
<span class="hljs-keyword">return</span> components, state`,lang:"py",wrap:!1})},$$slots:{default:!0}});var I=l(w,2);n(I,{id:"auto",option:"image-to-image",children:(a,C)=>{s(a,{code:"Y2xhc3MlMjBJbWFnZVRvSW1hZ2VCbG9jayhNb2R1bGFyUGlwZWxpbmVCbG9ja3MpJTNBJTBBJTIwJTIwJTIwJTIwbW9kZWxfbmFtZSUyMCUzRCUyMCUyMmltZzJpbWclMjIlMEElMEElMjAlMjAlMjAlMjAlNDBwcm9wZXJ0eSUwQSUyMCUyMCUyMCUyMGRlZiUyMGlucHV0cyhzZWxmKSUzQSUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMHJldHVybiUyMCU1QklucHV0UGFyYW0obmFtZSUzRCUyMnByb21wdCUyMiklMkMlMjBJbnB1dFBhcmFtKG5hbWUlM0QlMjJpbWFnZSUyMiklNUQlMEElMEElMjAlMjAlMjAlMjAlNDBwcm9wZXJ0eSUwQSUyMCUyMCUyMCUyMGRlZiUyMGludGVybWVkaWF0ZV9vdXRwdXRzKHNlbGYpJTNBJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwcmV0dXJuJTIwJTVCJTVEJTBBJTBBJTIwJTIwJTIwJTIwJTQwcHJvcGVydHklMEElMjAlMjAlMjAlMjBkZWYlMjBkZXNjcmlwdGlvbihzZWxmKSUzQSUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMHJldHVybiUyMCUyMiVFNiU4OCU5MSVFNiU5OCVBRiVFNCVCOCU4MCVFNCVCOCVBQSVFNSU5QiVCRSVFNSU4MyU4RiVFNSU4OCVCMCVFNSU5QiVCRSVFNSU4MyU4RiVFNyU5QSU4NCVFNSVCNyVBNSVFNCVCRCU5QyVFNiVCNSU4MSVFNyVBOCU4QiVFRiVCQyU4MSUyMiUwQSUwQSUyMCUyMCUyMCUyMGRlZiUyMF9fY2FsbF9fKHNlbGYlMkMlMjBjb21wb25lbnRzJTJDJTIwc3RhdGUpJTNBJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwYmxvY2tfc3RhdGUlMjAlM0QlMjBzZWxmLmdldF9ibG9ja19zdGF0ZShzdGF0ZSklMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjBwcmludCglMjIlRTglQkYlOTAlRTglQTElOEMlRTUlOUIlQkUlRTUlODMlOEYlRTUlODglQjAlRTUlOUIlQkUlRTUlODMlOEYlRTUlQjclQTUlRTQlQkQlOUMlRTYlQjUlODElRTclQTglOEIlMjIpJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIzJTIwJUU1JTlDJUE4JUU4JUJGJTk5JUU5JTg3JThDJUU2JUI3JUJCJUU1JThBJUEwJUU0JUJEJUEwJUU3JTlBJTg0JUU1JTlCJUJFJUU1JTgzJThGJUU1JTg4JUIwJUU1JTlCJUJFJUU1JTgzJThGJUU5JTgwJUJCJUU4JUJFJTkxJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIzJTIwJUU0JUJFJThCJUU1JUE2JTgyJUVGJUJDJTlBJUU2JUEwJUI5JUU2JThEJUFFJUU2JThGJTkwJUU3JUE0JUJBJUU4JUJEJUFDJUU2JThEJUEyJUU4JUJFJTkzJUU1JTg1JUE1JUU1JTlCJUJFJUU1JTgzJThGJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwc2VsZi5zZXRfYmxvY2tfc3RhdGUoc3RhdGUlMkMlMjBibG9ja19zdGF0ZSklMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjByZXR1cm4lMjBjb21wb25lbnRzJTJDJTIwc3RhdGU=",highlighted:`<span class="hljs-keyword">class</span> <span class="hljs-title class_">ImageToImageBlock</span>(<span class="hljs-title class_ inherited__">ModularPipelineBlocks</span>):
model_name = <span class="hljs-string">&quot;img2img&quot;</span>
<span class="hljs-meta"> @property</span>
<span class="hljs-keyword">def</span> <span class="hljs-title function_">inputs</span>(<span class="hljs-params">self</span>):
<span class="hljs-keyword">return</span> [InputParam(name=<span class="hljs-string">&quot;prompt&quot;</span>), InputParam(name=<span class="hljs-string">&quot;image&quot;</span>)]
<span class="hljs-meta"> @property</span>
<span class="hljs-keyword">def</span> <span class="hljs-title function_">intermediate_outputs</span>(<span class="hljs-params">self</span>):
<span class="hljs-keyword">return</span> []
<span class="hljs-meta"> @property</span>
<span class="hljs-keyword">def</span> <span class="hljs-title function_">description</span>(<span class="hljs-params">self</span>):
<span class="hljs-keyword">return</span> <span class="hljs-string">&quot;我是一个图像到图像的工作流程!&quot;</span>
<span class="hljs-keyword">def</span> <span class="hljs-title function_">__call__</span>(<span class="hljs-params">self, components, state</span>):
block_state = <span class="hljs-variable language_">self</span>.get_block_state(state)
<span class="hljs-built_in">print</span>(<span class="hljs-string">&quot;运行图像到图像工作流程&quot;</span>)
<span class="hljs-comment"># 在这里添加你的图像到图像逻辑</span>
<span class="hljs-comment"># 例如:根据提示转换输入图像</span>
<span class="hljs-variable language_">self</span>.set_block_state(state, block_state)
<span class="hljs-keyword">return</span> components, state`,lang:"py",wrap:!1})},$$slots:{default:!0}});var V=l(I,2);n(V,{id:"auto",option:"inpaint",children:(a,C)=>{s(a,{code:"Y2xhc3MlMjBJbnBhaW50QmxvY2soTW9kdWxhclBpcGVsaW5lQmxvY2tzKSUzQSUwQSUyMCUyMCUyMCUyMG1vZGVsX25hbWUlMjAlM0QlMjAlMjJpbnBhaW50JTIyJTBBJTBBJTIwJTIwJTIwJTIwJTQwcHJvcGVydHklMEElMjAlMjAlMjAlMjBkZWYlMjBpbnB1dHMoc2VsZiklM0ElMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjByZXR1cm4lMjAlNUJJbnB1dFBhcmFtKG5hbWUlM0QlMjJwcm9tcHQlMjIpJTJDJTIwSW5wdXRQYXJhbShuYW1lJTNEJTIyaW1hZ2UlMjIpJTJDJTIwSW5wdXRQYXJhbShuYW1lJTNEJTIybWFzayUyMiklNUQlMEElMEElMjAlMjAlMjAlMjAlNDBwcm9wZXJ0eSUwQSUwQSUyMCUyMCUyMCUyMGRlZiUyMGludGVybWVkaWF0ZV9vdXRwdXRzKHNlbGYpJTNBJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwcmV0dXJuJTIwJTVCJTVEJTBBJTBBJTIwJTIwJTIwJTIwJTQwcHJvcGVydHklMEElMjAlMjAlMjAlMjBkZWYlMjBkZXNjcmlwdGlvbihzZWxmKSUzQSUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMHJldHVybiUyMCUyMiVFNiU4OCU5MSVFNiU5OCVBRiVFNCVCOCU4MCVFNCVCOCVBQSVFNCVCRiVBRSVFNSVBNCU4RCVFNSVCNyVBNSVFNCVCRCU5QyVFNiVCNSU4MSVFRiVCQyU4MSUyMiUwQSUwQSUyMCUyMCUyMCUyMGRlZiUyMF9fY2FsbF9fKHNlbGYlMkMlMjBjb21wb25lbnRzJTJDJTIwc3RhdGUpJTNBJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwYmxvY2tfc3RhdGUlMjAlM0QlMjBzZWxmLmdldF9ibG9ja19zdGF0ZShzdGF0ZSklMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjBwcmludCglMjIlRTglQkYlOTAlRTglQTElOEMlRTQlQkYlQUUlRTUlQTQlOEQlRTUlQjclQTUlRTQlQkQlOUMlRTYlQjUlODElMjIpJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIzJTIwJUU1JTlDJUE4JUU4JUJGJTk5JUU5JTg3JThDJUU2JUI3JUJCJUU1JThBJUEwJUU0JUJEJUEwJUU3JTlBJTg0JUU0JUJGJUFFJUU1JUE0JThEJUU5JTgwJUJCJUU4JUJFJTkxJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIzJTIwJUU0JUJFJThCJUU1JUE2JTgyJUVGJUJDJTlBJUU2JUEwJUI5JUU2JThEJUFFJUU2JThGJTkwJUU3JUE0JUJBJUU1JUExJUFCJUU1JTg1JTg1JUU4JUEyJUFCJUU5JTgxJUFFJUU3JUJEJUE5JUU3JTlBJTg0JUU1JThDJUJBJUU1JTlGJTlGJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwc2VsZi5zZXRfYmxvY2tfc3RhdGUoc3RhdGUlMkMlMjBibG9ja19zdGF0ZSklMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjByZXR1cm4lMjBjb21wb25lbnRzJTJDJTIwc3RhdGU=",highlighted:`<span class="hljs-keyword">class</span> <span class="hljs-title class_">InpaintBlock</span>(<span class="hljs-title class_ inherited__">ModularPipelineBlocks</span>):
model_name = <span class="hljs-string">&quot;inpaint&quot;</span>
<span class="hljs-meta"> @property</span>
<span class="hljs-keyword">def</span> <span class="hljs-title function_">inputs</span>(<span class="hljs-params">self</span>):
<span class="hljs-keyword">return</span> [InputParam(name=<span class="hljs-string">&quot;prompt&quot;</span>), InputParam(name=<span class="hljs-string">&quot;image&quot;</span>), InputParam(name=<span class="hljs-string">&quot;mask&quot;</span>)]
<span class="hljs-meta"> @property</span>
<span class="hljs-keyword">def</span> <span class="hljs-title function_">intermediate_outputs</span>(<span class="hljs-params">self</span>):
<span class="hljs-keyword">return</span> []
<span class="hljs-meta"> @property</span>
<span class="hljs-keyword">def</span> <span class="hljs-title function_">description</span>(<span class="hljs-params">self</span>):
<span class="hljs-keyword">return</span> <span class="hljs-string">&quot;我是一个修复工作流!&quot;</span>
<span class="hljs-keyword">def</span> <span class="hljs-title function_">__call__</span>(<span class="hljs-params">self, components, state</span>):
block_state = <span class="hljs-variable language_">self</span>.get_block_state(state)
<span class="hljs-built_in">print</span>(<span class="hljs-string">&quot;运行修复工作流&quot;</span>)
<span class="hljs-comment"># 在这里添加你的修复逻辑</span>
<span class="hljs-comment"># 例如:根据提示填充被遮罩的区域</span>
<span class="hljs-variable language_">self</span>.set_block_state(state, block_state)
<span class="hljs-keyword">return</span> components, state`,lang:"py",wrap:!1})},$$slots:{default:!0}}),M(J,j)},$$slots:{default:!0}});var i=l(c,8);s(i,{code:"ZnJvbSUyMGRpZmZ1c2Vycy5tb2R1bGFyX3BpcGVsaW5lcyUyMGltcG9ydCUyMEF1dG9QaXBlbGluZUJsb2NrcyUwQSUwQWNsYXNzJTIwQXV0b0ltYWdlQmxvY2tzKEF1dG9QaXBlbGluZUJsb2NrcyklM0ElMEElMjAlMjAlMjAlMjAlMjMlMjAlRTklODAlODklRTYlOEIlQTklRTUlQUQlOTAlRTUlOUQlOTclRTclQjElQkIlRTclOUElODQlRTUlODglOTclRTglQTElQTglMEElMjAlMjAlMjAlMjBibG9ja19jbGFzc2VzJTIwJTNEJTIwJTVCYmxvY2tfaW5wYWludF9jbHMlMkMlMjBibG9ja19pMmlfY2xzJTJDJTIwYmxvY2tfdDJpX2NscyU1RCUwQSUyMCUyMCUyMCUyMCUyMyUyMCVFNiVBRiU4RiVFNCVCOCVBQSVFNSU5RCU5NyVFNyU5QSU4NCVFNSU5MCU4RCVFNyVBNyVCMCVFRiVCQyU4QyVFOSVBMSVCQSVFNSVCQSU4RiVFNyU5QiVCOCVFNSU5MCU4QyUwQSUyMCUyMCUyMCUyMGJsb2NrX25hbWVzJTIwJTNEJTIwJTVCJTIyaW5wYWludCUyMiUyQyUyMCUyMmltZzJpbWclMjIlMkMlMjAlMjJ0ZXh0MmltZyUyMiU1RCUwQSUyMCUyMCUyMCUyMCUyMyUyMCVFNSU4NiVCMyVFNSVBRSU5QSVFOCVCRiU5MCVFOCVBMSU4QyVFNSU5MyVBQSVFNCVCOCVBQSVFNSU5RCU5NyVFNyU5QSU4NCVFOCVBNyVBNiVFNSU4RiU5MSVFOCVCRSU5MyVFNSU4NSVBNSUwQSUyMCUyMCUyMCUyMCUyMyUyMC0lMjAlMjJtYXNrJTIyJTIwJUU4JUE3JUE2JUU1JThGJTkxJUU0JUJGJUFFJUU1JUE0JThEJUU1JUI3JUE1JUU0JUJEJTlDJUU2JUI1JTgxJTBBJTIwJTIwJTIwJTIwJTIzJTIwLSUyMCUyMmltYWdlJTIyJTIwJUU4JUE3JUE2JUU1JThGJTkxaW1nMmltZyVFNSVCNyVBNSVFNCVCRCU5QyVFNiVCNSU4MSVFRiVCQyU4OCVFNCVCRCU4NiVFNCVCQiU4NSVFNSU5QyVBOCVFNiU5QyVBQSVFNiU4RiU5MCVFNCVCRSU5Qm1hc2slRTYlOTclQjYlRUYlQkMlODklMEElMjAlMjAlMjAlMjAlMjMlMjAtJTIwJUU1JUE2JTgyJUU2JTlFJTlDJUU0JUJCJUE1JUU0JUI4JThBJUU5JTgzJUJEJUU2JUIyJUExJUU2JTlDJTg5JUVGJUJDJThDJUU4JUJGJTkwJUU4JUExJThDdGV4dDJpbWclRTUlQjclQTUlRTQlQkQlOUMlRTYlQjUlODElRUYlQkMlODglRTklQkIlOTglRTglQUUlQTQlRUYlQkMlODklMEElMjAlMjAlMjAlMjBibG9ja190cmlnZ2VyX2lucHV0cyUyMCUzRCUyMCU1QiUyMm1hc2slMjIlMkMlMjAlMjJpbWFnZSUyMiUyQyUyME5vbmUlNUQlMEElMjAlMjAlMjAlMjAlMjMlMjAlRTUlQUYlQjklRTQlQkElOEVBdXRvUGlwZWxpbmVCbG9ja3MlRTYlOUQlQTUlRTglQUYlQjQlRUYlQkMlOEMlRTYlOEYlOEYlRTglQkYlQjAlRTYlOUUlODElRTUlODUlQjYlRTklODclOEQlRTglQTYlODElMEElMEElMjAlMjAlMjAlMjBkZWYlMjBkZXNjcmlwdGlvbihzZWxmKSUzQSUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMHJldHVybiUyMCglMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjJQaXBlbGluZSUyMGdlbmVyYXRlcyUyMGltYWdlcyUyMGdpdmVuJTIwZGlmZmVyZW50JTIwdHlwZXMlMjBvZiUyMGNvbmRpdGlvbnMhJTVDbiUyMiUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyQiUyMCUyMlRoaXMlMjBpcyUyMGFuJTIwYXV0byUyMHBpcGVsaW5lJTIwYmxvY2slMjB0aGF0JTIwd29ya3MlMjBmb3IlMjB0ZXh0MmltZyUyQyUyMGltZzJpbWclMjBhbmQlMjBpbnBhaW50aW5nJTIwdGFza3MuJTVDbiUyMiUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyQiUyMCUyMiUyMC0lMjBpbnBhaW50JTIwd29ya2Zsb3clMjBpcyUyMHJ1biUyMHdoZW4lMjAlNjBtYXNrJTYwJTIwaXMlMjBwcm92aWRlZC4lNUNuJTIyJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTJCJTIwJTIyJTIwLSUyMGltZzJpbWclMjB3b3JrZmxvdyUyMGlzJTIwcnVuJTIwd2hlbiUyMCU2MGltYWdlJTYwJTIwaXMlMjBwcm92aWRlZCUyMChidXQlMjBvbmx5JTIwd2hlbiUyMCU2MG1hc2slNjAlMjBpcyUyMG5vdCUyMHByb3ZpZGVkKS4lNUNuJTIyJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTJCJTIwJTIyJTIwLSUyMHRleHQyaW1nJTIwd29ya2Zsb3clMjBpcyUyMHJ1biUyMHdoZW4lMjBuZWl0aGVyJTIwJTYwaW1hZ2UlNjAlMjBub3IlMjAlNjBtYXNrJTYwJTIwaXMlMjBwcm92aWRlZC4lNUNuJTIyJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwKQ==",highlighted:`<span class="hljs-keyword">from</span> diffusers.modular_pipelines <span class="hljs-keyword">import</span> AutoPipelineBlocks
<span class="hljs-keyword">class</span> <span class="hljs-title class_">AutoImageBlocks</span>(<span class="hljs-title class_ inherited__">AutoPipelineBlocks</span>):
<span class="hljs-comment"># 选择子块类的列表</span>
block_classes = [block_inpaint_cls, block_i2i_cls, block_t2i_cls]
<span class="hljs-comment"># 每个块的名称,顺序相同</span>
block_names = [<span class="hljs-string">&quot;inpaint&quot;</span>, <span class="hljs-string">&quot;img2img&quot;</span>, <span class="hljs-string">&quot;text2img&quot;</span>]
<span class="hljs-comment"># 决定运行哪个块的触发输入</span>
<span class="hljs-comment"># - &quot;mask&quot; 触发修复工作流</span>
<span class="hljs-comment"># - &quot;image&quot; 触发img2img工作流(但仅在未提供mask时)</span>
<span class="hljs-comment"># - 如果以上都没有,运行text2img工作流(默认)</span>
block_trigger_inputs = [<span class="hljs-string">&quot;mask&quot;</span>, <span class="hljs-string">&quot;image&quot;</span>, <span class="hljs-literal">None</span>]
<span class="hljs-comment"># 对于AutoPipelineBlocks来说,描述极其重要</span>
<span class="hljs-keyword">def</span> <span class="hljs-title function_">description</span>(<span class="hljs-params">self</span>):
<span class="hljs-keyword">return</span> (
<span class="hljs-string">&quot;Pipeline generates images given different types of conditions!\\n&quot;</span>
+ <span class="hljs-string">&quot;This is an auto pipeline block that works for text2img, img2img and inpainting tasks.\\n&quot;</span>
+ <span class="hljs-string">&quot; - inpaint workflow is run when \`mask\` is provided.\\n&quot;</span>
+ <span class="hljs-string">&quot; - img2img workflow is run when \`image\` is provided (but only when \`mask\` is not provided).\\n&quot;</span>
+ <span class="hljs-string">&quot; - text2img workflow is run when neither \`image\` nor \`mask\` is provided.\\n&quot;</span>
)`,lang:"py",wrap:!1});var o=l(i,6);s(o,{code:"YXV0b19ibG9ja3MlMjAlM0QlMjBBdXRvSW1hZ2VCbG9ja3MoKQ==",highlighted:"auto_blocks = AutoImageBlocks()",lang:"py",wrap:!1});var y=l(o,4);s(y,{code:"YXV0b19ibG9ja3MuZ2V0X2V4ZWN1dGlvbl9ibG9ja3MoJTIybWFzayUyMik=",highlighted:'auto_blocks.get_execution_blocks(<span class="hljs-string">&quot;mask&quot;</span>)',lang:"py",wrap:!1});var m=l(y,2);g(m,{source:"https://github.com/huggingface/diffusers/blob/main/docs/source/zh/modular_diffusers/auto_pipeline_blocks.md"}),N(2),M(d,t),F()}export{z as component};

Xet Storage Details

Size:
20 kB
·
Xet hash:
87f782eecf017eb3c4e25bfbdc26b22740edf9d5fa38d0f3c2667ee667832312

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