AI/이론

153. [AI] [Fine-Tuning] Pipeline을 활용한 이미지 생성

천재단미 2025. 2. 18. 20:36
728x90
반응형

파이프라인

 

 

 

 

목차 ▽열기

 

 

 

🎯 소개

자연어 처리(NLP) 모델은 다양한 용도로 활용될 수 있으며, 특히 감성 분석(Sentiment Analysis) 분야에서 큰 성과를 보이고 있습니다. 본 글에서는 Hugging Face의 distilbert-base-uncased-finetuned-sst-2-english 모델을 활용하여 감성 분석 모델을 Fine-Tuning하고, 이를 Hugging Face Hub에 업로드하는 방법까지 자세히 다룹니다.

또한, Stable Diffusion 모델을 사용하여 텍스트를 기반으로 이미지를 생성하는 방법도 소개합니다. 🚀


📌 1. Fine-Tuning 개념 이해

Fine-Tuning이란, 이미 학습된 모델(Pretrained Model)을 특정한 작업에 맞게 추가적으로 훈련하는 과정을 의미합니다.

일반적으로 대량의 데이터를 사용하여 미리 학습된 모델을 가져와, 우리가 원하는 도메인에 맞게 적은 데이터로 추가 학습시켜 성능을 향상시킬 수 있습니다.

Fine-Tuning의 장점

  • 적은 데이터로도 높은 성능을 낼 수 있음
  • 훈련 시간을 단축할 수 있음
  • 이미 최적화된 가중치를 활용하여 더 좋은 성능을 기대할 수 있음

본 글에서는 영화 리뷰 데이터를 활용하여 긍정/부정을 예측하는 감성 분석 모델을 Fine-Tuning해보겠습니다.

 

 

 


📌 2. Stable Diffusion을 이용한 텍스트 기반 이미지 생성

 

2.1 Stable Diffusion 모델이란?

Stable Diffusion은 텍스트 입력을 기반으로 고품질 이미지를 생성할 수 있는 AI 모델입니다.

이를 활용하면, 텍스트 프롬프트를 입력하여 원하는 이미지를 생성할 수 있습니다.

 

 

2.2 Stable Diffusion을 활용한 이미지 생성 코드

from diffusers import DiffusionPipeline
import torch

# Stable Diffusion 모델 로드
pipe = DiffusionPipeline.from_pretrained("runwayml/stable-diffusion-v1-5")

# GPU 사용 여부 확인 후 설정
pipe.to("cuda" if torch.cuda.is_available() else "cpu")

# 텍스트 프롬프트로 이미지 생성
prompt = 'A fantasy landscape with castles and dragons, highly detailed, digital art'

image = pipe(prompt).images[0]

# 생성된 이미지를 저장 및 출력
image.save('my_image.jpg')

import matplotlib.pyplot as plt
plt.imshow(image)
plt.axis('off')
plt.show()

 

설명

 

1. DiffusionPipeline.from_pretrained()을 사용하여 Stable Diffusion 모델을 불러옵니다.

스크린샷 2025-03-03 오후 8

 

2. GPU가 사용 가능하면 GPU에서 실행하도록 설정합니다.

StableDiffusionPipeline {
  "_class_name": "StableDiffusionPipeline",
  "_diffusers_version": "0.32.2",
  "_name_or_path": "runwayml/stable-diffusion-v1-5",
  "feature_extractor": [
    "transformers",
    "CLIPImageProcessor"
  ],
  "image_encoder": [
    null,
    null
  ],
  "requires_safety_checker": true,
  "safety_checker": [
    "stable_diffusion",
    "StableDiffusionSafetyChecker"
  ],
  "scheduler": [
    "diffusers",
    "PNDMScheduler"
  ],
  "text_encoder": [
    "transformers",
    "CLIPTextModel"
  ],
  "tokenizer": [
    "transformers",
    "CLIPTokenizer"
  ],
  "unet": [
    "diffusers",
    "UNet2DConditionModel"
  ],
  "vae": [
    "diffusers",
    "AutoencoderKL"
  ]
}

 

3. 사용자가 원하는 텍스트 프롬프트를 입력하여 이미지를 생성합니다.

 

스크린샷 2025-03-03 오후 8

 

 

 

4.  생성된 이미지를 matplotlib을 사용하여 화면에 출력합니다.

스크린샷 2025-03-03 오후 8

 


 

 

728x90
반응형
home
}