Buckets:
| import"../chunks/DsnmJJEf.js";import{i as T,h as Z,C as _,H as g,a as s,E as v,s as U}from"../chunks/CFM6C53a.js";import{p as G,o as V,s as e,f as k,a as b,b as I,c as y,n as B}from"../chunks/CNc7KuUZ.js";import{D as X}from"../chunks/BK2xlcGK.js";const j='{"title":"프롬프트에 가중치 부여하기","local":"프롬프트에-가중치-부여하기","sections":[{"title":"Diffusers에서 프롬프트 가중치 부여하는 방법","local":"diffusers에서-프롬프트-가중치-부여하는-방법","sections":[],"depth":2}],"depth":1}';var C=y('<meta name="hf:doc:metadata"/>'),W=y(`<p></p> <!> <!> <!> <p>텍스트 가이드 기반의 diffusion 모델은 주어진 텍스트 프롬프트를 기반으로 이미지를 생성합니다. | |
| 텍스트 프롬프트에는 모델이 생성해야 하는 여러 개념이 포함될 수 있으며 프롬프트의 특정 부분에 가중치를 부여하는 것이 바람직한 경우가 많습니다.</p> <p>Diffusion 모델은 문맥화된 텍스트 임베딩으로 diffusion 모델의 cross attention 레이어를 조절함으로써 작동합니다. | |
| (<a href="https://huggingface.co/docs/optimum-neuron/main/en/package_reference/modeling#stable-diffusion" rel="nofollow">더 많은 정보를 위한 Stable Diffusion Guide</a>를 참고하세요). | |
| 따라서 프롬프트의 특정 부분을 강조하는(또는 강조하지 않는) 간단한 방법은 프롬프트의 관련 부분에 해당하는 텍스트 임베딩 벡터의 크기를 늘리거나 줄이는 것입니다. | |
| 이것은 “프롬프트 가중치 부여” 라고 하며, 커뮤니티에서 가장 요구하는 기능입니다.(<a href="https://github.com/huggingface/diffusers/issues/2431" rel="nofollow">이곳</a>의 issue를 보세요 ).</p> <!> <p>우리는 <code>diffusers</code>의 역할이 다른 프로젝트를 가능하게 하는 필수적인 기능을 제공하는 toolbex라고 생각합니다. <a href="https://github.com/invoke-ai/InvokeAI" rel="nofollow">InvokeAI</a> 나 <a href="https://github.com/abhishekkrthakur/diffuzers" rel="nofollow">diffuzers</a> 같은 강력한 UI를 구축할 수 있습니다. | |
| 프롬프트를 조작하는 방법을 지원하기 위해, <code>diffusers</code> 는 <a href="https://huggingface.co/docs/diffusers/v0.18.2/en/api/pipelines/stable_diffusion/text2img#diffusers.StableDiffusionPipeline" rel="nofollow">StableDiffusionPipeline</a>와 같은 | |
| 많은 파이프라인에 <a href="https://huggingface.co/docs/diffusers/v0.14.0/en/api/pipelines/stable_diffusion/text2img#diffusers.StableDiffusionPipeline.__call__.prompt_embeds" rel="nofollow">prompt_embeds</a> 인수를 노출시켜, “prompt-weighted”/축척된 텍스트 임베딩을 파이프라인에 바로 전달할 수 있게 합니다.</p> <p><a href="https://github.com/damian0815/compel" rel="nofollow">Compel 라이브러리</a>는 프롬프트의 일부를 강조하거나 강조하지 않을 수 있는 쉬운 방법을 제공합니다. | |
| 임베딩을 직접 준비하는 것 대신 이 방법을 사용하는 것을 강력히 추천합니다.</p> <p>간단한 예제를 살펴보겠습니다. | |
| 다음과 같이 <code>"공을 갖고 노는 붉은색 고양이"</code> 이미지를 생성하고 싶습니다:</p> <!> <p>생성된 이미지:</p> <p><img src="https://huggingface.co/datasets/hf-internal-testing/diffusers-images/resolve/main/compel/forest_0.png" alt="img"/></p> <p>사진에서 알 수 있듯이, “공”은 이미지에 없습니다. 이 부분을 강조해 볼까요!</p> <p>먼저 <code>compel</code> 라이브러리를 설치해야합니다:</p> <!> <p>그런 다음에는 <code>Compel</code> 오브젝트를 생성합니다:</p> <!> <p>이제 <code>"++"</code> 를 사용해서 “공” 을 강조해 봅시다:</p> <!> <p>그리고 이 프롬프트를 파이프라인에 바로 전달하지 않고, <code>compel_proc</code> 를 사용하여 처리해야합니다:</p> <!> <p>파이프라인에 <code>prompt_embeds</code> 를 바로 전달할 수 있습니다:</p> <!> <p>이제 “공”이 있는 그림을 출력할 수 있습니다!</p> <p><img src="https://huggingface.co/datasets/hf-internal-testing/diffusers-images/resolve/main/compel/forest_1.png" alt="img"/></p> <p>마찬가지로 <code>--</code> 접미사를 단어에 사용하여 문장의 일부를 강조하지 않을 수 있습니다. 한번 시도해 보세요!</p> <p>즐겨찾는 파이프라인에 <code>prompt_embeds</code> 입력이 없는 경우 issue를 새로 만들어주세요. | |
| Diffusers 팀은 최대한 대응하려고 노력합니다.</p> <p>Compel 1.1.6 는 textual inversions을 사용하여 단순화하는 유티릴티 클래스를 추가합니다. <code>DiffusersTextualInversionManager</code>를 인스턴스화 한 후 이를 Compel init에 전달합니다:</p> <!> <p>더 많은 정보를 얻고 싶다면 <a href="https://github.com/damian0815/compel" rel="nofollow">compel</a> 라이브러리 문서를 참고하세요.</p> <!> <p></p>`,1);function Y(w,J){G(J,!1),V(()=>{new URLSearchParams(window.location.search).get("fw")}),T();var a=W();Z("12846ih",f=>{var u=C();U(u,"content",j),b(f,u)});var o=e(k(a),2);_(o,{containerStyle:"float: right; margin-left: 10px; display: inline-flex; position: relative; z-index: 10;"});var l=e(o,2);X(l,{containerStyle:"float: right; margin-left: 10px; display: inline-flex; position: relative; z-index: 10;",options:[{label:"Mixed",value:"https://colab.research.google.com/github/huggingface/notebooks/blob/main/diffusers_doc/ko/weighted_prompts.ipynb"},{label:"PyTorch",value:"https://colab.research.google.com/github/huggingface/notebooks/blob/main/diffusers_doc/ko/pytorch/weighted_prompts.ipynb"},{label:"TensorFlow",value:"https://colab.research.google.com/github/huggingface/notebooks/blob/main/diffusers_doc/ko/tensorflow/weighted_prompts.ipynb"},{label:"Mixed",value:"https://studiolab.sagemaker.aws/import/github/huggingface/notebooks/blob/main/diffusers_doc/ko/weighted_prompts.ipynb"},{label:"PyTorch",value:"https://studiolab.sagemaker.aws/import/github/huggingface/notebooks/blob/main/diffusers_doc/ko/pytorch/weighted_prompts.ipynb"},{label:"TensorFlow",value:"https://studiolab.sagemaker.aws/import/github/huggingface/notebooks/blob/main/diffusers_doc/ko/tensorflow/weighted_prompts.ipynb"}]});var p=e(l,2);g(p,{title:"프롬프트에 가중치 부여하기",local:"프롬프트에-가중치-부여하기",headingTag:"h1"});var i=e(p,6);g(i,{title:"Diffusers에서 프롬프트 가중치 부여하는 방법",local:"diffusers에서-프롬프트-가중치-부여하는-방법",headingTag:"h2"});var t=e(i,8);s(t,{code:"ZnJvbSUyMGRpZmZ1c2VycyUyMGltcG9ydCUyMFN0YWJsZURpZmZ1c2lvblBpcGVsaW5lJTJDJTIwVW5pUENNdWx0aXN0ZXBTY2hlZHVsZXIlMEElMEFwaXBlJTIwJTNEJTIwU3RhYmxlRGlmZnVzaW9uUGlwZWxpbmUuZnJvbV9wcmV0cmFpbmVkKCUyMkNvbXBWaXMlMkZzdGFibGUtZGlmZnVzaW9uLXYxLTQlMjIpJTBBcGlwZS5zY2hlZHVsZXIlMjAlM0QlMjBVbmlQQ011bHRpc3RlcFNjaGVkdWxlci5mcm9tX2NvbmZpZyhwaXBlLnNjaGVkdWxlci5jb25maWcpJTBBJTBBcHJvbXB0JTIwJTNEJTIwJTIyYSUyMHJlZCUyMGNhdCUyMHBsYXlpbmclMjB3aXRoJTIwYSUyMGJhbGwlMjIlMEElMEFnZW5lcmF0b3IlMjAlM0QlMjB0b3JjaC5HZW5lcmF0b3IoZGV2aWNlJTNEJTIyY3B1JTIyKS5tYW51YWxfc2VlZCgzMyklMEElMEFpbWFnZSUyMCUzRCUyMHBpcGUocHJvbXB0JTJDJTIwZ2VuZXJhdG9yJTNEZ2VuZXJhdG9yJTJDJTIwbnVtX2luZmVyZW5jZV9zdGVwcyUzRDIwKS5pbWFnZXMlNUIwJTVEJTBBaW1hZ2U=",highlighted:`<span class="hljs-keyword">from</span> diffusers <span class="hljs-keyword">import</span> StableDiffusionPipeline, UniPCMultistepScheduler | |
| pipe = StableDiffusionPipeline.from_pretrained(<span class="hljs-string">"CompVis/stable-diffusion-v1-4"</span>) | |
| pipe.scheduler = UniPCMultistepScheduler.from_config(pipe.scheduler.config) | |
| prompt = <span class="hljs-string">"a red cat playing with a ball"</span> | |
| generator = torch.Generator(device=<span class="hljs-string">"cpu"</span>).manual_seed(<span class="hljs-number">33</span>) | |
| image = pipe(prompt, generator=generator, num_inference_steps=<span class="hljs-number">20</span>).images[<span class="hljs-number">0</span>] | |
| image`,lang:"py",wrap:!1});var n=e(t,10);s(n,{code:"cGlwJTIwaW5zdGFsbCUyMGNvbXBlbA==",highlighted:"pip install compel",lang:"sh",wrap:!1});var r=e(n,4);s(r,{code:"ZnJvbSUyMGNvbXBlbCUyMGltcG9ydCUyMENvbXBlbCUwQSUwQWNvbXBlbF9wcm9jJTIwJTNEJTIwQ29tcGVsKHRva2VuaXplciUzRHBpcGUudG9rZW5pemVyJTJDJTIwdGV4dF9lbmNvZGVyJTNEcGlwZS50ZXh0X2VuY29kZXIp",highlighted:`<span class="hljs-keyword">from</span> compel <span class="hljs-keyword">import</span> Compel | |
| compel_proc = Compel(tokenizer=pipe.tokenizer, text_encoder=pipe.text_encoder)`,lang:"py",wrap:!1});var c=e(r,4);s(c,{code:"cHJvbXB0JTIwJTNEJTIwJTIyYSUyMHJlZCUyMGNhdCUyMHBsYXlpbmclMjB3aXRoJTIwYSUyMGJhbGwlMkIlMkIlMjI=",highlighted:'prompt = <span class="hljs-string">"a red cat playing with a ball++"</span>',lang:"py",wrap:!1});var d=e(c,4);s(d,{code:"cHJvbXB0X2VtYmVkcyUyMCUzRCUyMGNvbXBlbF9wcm9jKHByb21wdCk=",highlighted:"prompt_embeds = compel_proc(prompt)",lang:"py",wrap:!1});var m=e(d,4);s(m,{code:"Z2VuZXJhdG9yJTIwJTNEJTIwdG9yY2guR2VuZXJhdG9yKGRldmljZSUzRCUyMmNwdSUyMikubWFudWFsX3NlZWQoMzMpJTBBJTBBaW1hZ2VzJTIwJTNEJTIwcGlwZShwcm9tcHRfZW1iZWRzJTNEcHJvbXB0X2VtYmVkcyUyQyUyMGdlbmVyYXRvciUzRGdlbmVyYXRvciUyQyUyMG51bV9pbmZlcmVuY2Vfc3RlcHMlM0QyMCkuaW1hZ2VzJTVCMCU1RCUwQWltYWdl",highlighted:`generator = torch.Generator(device=<span class="hljs-string">"cpu"</span>).manual_seed(<span class="hljs-number">33</span>) | |
| images = pipe(prompt_embeds=prompt_embeds, generator=generator, num_inference_steps=<span class="hljs-number">20</span>).images[<span class="hljs-number">0</span>] | |
| image`,lang:"py",wrap:!1});var h=e(m,12);s(h,{code:"dGV4dHVhbF9pbnZlcnNpb25fbWFuYWdlciUyMCUzRCUyMERpZmZ1c2Vyc1RleHR1YWxJbnZlcnNpb25NYW5hZ2VyKHBpcGUpJTBBY29tcGVsJTIwJTNEJTIwQ29tcGVsKCUwQSUyMCUyMCUyMCUyMHRva2VuaXplciUzRHBpcGUudG9rZW5pemVyJTJDJTBBJTIwJTIwJTIwJTIwdGV4dF9lbmNvZGVyJTNEcGlwZS50ZXh0X2VuY29kZXIlMkMlMEElMjAlMjAlMjAlMjB0ZXh0dWFsX2ludmVyc2lvbl9tYW5hZ2VyJTNEdGV4dHVhbF9pbnZlcnNpb25fbWFuYWdlcik=",highlighted:`<span class="hljs-attr">textual_inversion_manager</span> = DiffusersTextualInversionManager(pipe) | |
| <span class="hljs-attr">compel</span> = Compel( | |
| <span class="hljs-attr">tokenizer</span>=pipe.tokenizer, | |
| <span class="hljs-attr">text_encoder</span>=pipe.text_encoder, | |
| <span class="hljs-attr">textual_inversion_manager</span>=textual_inversion_manager)`,lang:"",wrap:!1});var M=e(h,4);v(M,{source:"https://github.com/huggingface/diffusers/blob/main/docs/source/ko/using-diffusers/weighted_prompts.md"}),B(2),b(w,a),I()}export{Y as component}; | |
Xet Storage Details
- Size:
- 10.5 kB
- Xet hash:
- 1d466779b0d11ad1740d5ab9df93ce1ab7955d74695b8f01c70684f95c78e217
·
Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.