# 훑어보기

🧨 Diffusers로 빠르게 시작하고 실행하세요! 이 훑어보기는 여러분이 개발자, 일반사용자 상관없이 시작하는 데 도움을 주며, 추론을 위해 `DiffusionPipeline` 사용하는 방법을 보여줍니다.

시작하기에 앞서서, 필요한 모든 라이브러리가 설치되어 있는지 확인하세요:

    pip install --upgrade diffusers accelerate transformers

- `accelerate`은 추론 및 학습을 위한 모델 불러오기 속도를 높입니다.
- `transformers`는 Stable Diffusion과 같이 가장 널리 사용되는 확산 모델을 실행하기 위해 필요합니다.

##
DiffusionPipeline

`DiffusionPipeline`은 추론을 위해 사전학습된 확산 시스템을 사용하는 가장 쉬운 방법입니다. 다양한 양식의 많은 작업에 `DiffusionPipeline`을 바로 사용할 수 있습니다. 지원되는 작업은 아래의 표를 참고하세요:

Task | Description | Pipeline
--- | --- | ---
Unconditional Image Generation | 가우시안 노이즈에서 이미지 생성 | unconditional_image_generation
Text-Guided Image Generation | 텍스트 프롬프트로 이미지 생성 | conditional_image_generation
Text-Guided Image-to-Image Translation | 텍스트 프롬프트에 따라 이미지 조정 | img2img
Text-Guided Image-Inpainting | 마스크 및 텍스트 프롬프트가 주어진 이미지의 마스킹된 부분을 채우기 | inpaint
Text-Guided Depth-to-Image Translation | 깊이 추정을 통해 구조를 유지하면서 텍스트 프롬프트에 따라 이미지의 일부를 조정 | depth2image

확산 파이프라인이 다양한 작업에 대해 어떻게 작동하는지는 Using Diffusers를 참고하세요.

예를들어, `DiffusionPipeline` 인스턴스를 생성하여 시작하고, 다운로드하려는 파이프라인 체크포인트를 지정합니다. 모든 Diffusers’ checkpoint에 대해 `DiffusionPipeline`을 사용할 수 있습니다. 하지만, 이 가이드에서는 Stable Diffusion을 사용하여 text-to-image를 하는데 `DiffusionPipeline`을 사용합니다.

Stable Diffusion 기반 모델을 실행하기 전에 license를 주의 깊게 읽으세요. 이는 모델의 향상된 이미지 생성 기능과 이것으로 생성될 수 있는 유해한 콘텐츠 때문입니다. 선택한 Stable Diffusion 모델(예: `runwayml/stable-diffusion-v1-5`)로 이동하여 라이센스를 읽으세요.

다음과 같이 모델을 로드할 수 있습니다:

    >>> from diffusers import DiffusionPipeline

    >>> pipeline = DiffusionPipeline.from_pretrained("runwayml/stable-diffusion-v1-5")

`DiffusionPipeline`은 모든 모델링, 토큰화 및 스케줄링 구성요소를 다운로드하고 캐시합니다. 모델은 약 14억개의 매개변수로 구성되어 있으므로 GPU에서 실행하는 것이 좋습니다. PyTorch에서와 마찬가지로 생성기 객체를 GPU로 옮길 수 있습니다.

    >>> pipeline.to("cuda")

이제 `pipeline`을 사용할 수 있습니다:

    >>> image = pipeline("An image of a squirrel in Picasso style").images[0]

출력은 기본적으로 PIL Image object로 래핑됩니다.

다음과 같이 함수를 호출하여 이미지를 저장할 수 있습니다:

    >>> image.save("image_of_squirrel_painting.png")

참고: 다음을 통해 가중치를 다운로드하여 로컬에서 파이프라인을 사용할 수도 있습니다:

    git lfs install
    git clone https://huggingface.co/runwayml/stable-diffusion-v1-5

그리고 저장된 가중치를 파이프라인에 불러옵니다.

    >>> pipeline = DiffusionPipeline.from_pretrained("./stable-diffusion-v1-5")

파이프라인 실행은 동일한 모델 아키텍처이므로 위의 코드와 동일합니다.

    >>> generator.to("cuda")
    >>> image = generator("An image of a squirrel in Picasso style").images[0]
    >>> image.save("image_of_squirrel_painting.png")

확산 시스템은 각각 장점이 있는 여러 다른 schedulers와 함께 사용할 수 있습니다. 기본적으로 Stable Diffusion은 `PNDMScheduler`로 실행되지만 다른 스케줄러를 사용하는 방법은 매우 간단합니다. 예 `EulerDiscreteScheduler` 스케줄러를 사용하려는 경우, 다음과 같이 사용할 수 있습니다:

    >>> from diffusers import EulerDiscreteScheduler

    >>> pipeline = StableDiffusionPipeline.from_pretrained("runwayml/stable-diffusion-v1-5")

    >>> # change scheduler to Euler
    >>> pipeline.scheduler = EulerDiscreteScheduler.from_config(pipeline.scheduler.config)

스케줄러 변경 방법에 대한 자세한 내용은 Using Schedulers 가이드를 참고하세요.

Stability AI’s의 Stable Diffusion 모델은 인상적인 이미지 생성 모델이며 텍스트에서 이미지를 생성하는 것보다 훨씬 더 많은 작업을 수행할 수 있습니다. 우리는 Stable Diffusion만을 위한 전체 문서 페이지를 제공합니다 link.

만약 더 적은 메모리, 더 높은 추론 속도, Mac과 같은 특정 하드웨어 또는 ONNX 런타임에서 실행되도록 Stable Diffusion을 최적화하는 방법을 알고 싶다면 최적화 페이지를 살펴보세요:

- Optimized PyTorch on GPU
- Mac OS with PyTorch
- ONNX
- OpenVINO

확산 모델을 미세조정하거나 학습시키려면, training section을 살펴보세요.

마지막으로, 생성된 이미지를 공개적으로 배포할 때 신중을 기해 주세요 🤗.