🤖 AI/ML

IP-Adapter

이미지 프롬프트를 위한 어댑터 모델

📖 상세 설명

IP-Adapter(Image Prompt Adapter)는 텍스트-이미지 생성 모델(Stable Diffusion 등)에 이미지 프롬프트 기능을 추가하는 경량 어댑터입니다. 단 22M 파라미터로 참조 이미지의 스타일, 구도, 색감을 새로운 이미지 생성에 반영할 수 있어 Midjourney나 DALL-E 3와 유사한 기능을 제공합니다.

Tencent AI Lab에서 2023년 8월 발표한 IP-Adapter는 "Decoupled Cross-Attention" 메커니즘이 핵심입니다. 텍스트 특징과 이미지 특징을 분리된 cross-attention 레이어로 처리하여 두 모달리티가 서로 간섭하지 않고 효과적으로 결합됩니다.

IP-Adapter는 이미지 인코더(CLIP ViT-H)로 참조 이미지의 특징을 추출하고, 이를 어댑티드 모듈을 통해 디퓨전 모델의 UNet에 주입합니다. 텍스트 프롬프트와 함께 사용하면 멀티모달 이미지 생성이 가능합니다.

실무에서는 ip_adapter_scale 파라미터(0.0~1.0)로 이미지 프롬프트의 영향력을 조절합니다. 0.5가 텍스트와 이미지 균형에 적합하며, 1.0은 이미지만으로 조건화됩니다. ControlNet, T2I-Adapter와 호환되어 포즈, 깊이맵 등과 함께 활용 가능합니다.

💻 코드 예제

from diffusers import StableDiffusionPipeline
from diffusers.utils import load_image
import torch

# Stable Diffusion 파이프라인 로드
pipe = StableDiffusionPipeline.from_pretrained(
    "runwayml/stable-diffusion-v1-5",
    torch_dtype=torch.float16
).to("cuda")

# IP-Adapter 로드
pipe.load_ip_adapter(
    "h94/IP-Adapter",
    subfolder="models",
    weight_name="ip-adapter_sd15.bin"
)

# 참조 이미지 로드 (스타일 복사용)
reference_image = load_image("https://example.com/style_reference.jpg")

# IP-Adapter 스케일 설정 (0.5 = 텍스트와 이미지 균형)
pipe.set_ip_adapter_scale(0.6)

# 이미지 생성: 참조 이미지 스타일 + 텍스트 프롬프트
image = pipe(
    prompt="a cat sitting on a couch, high quality",
    ip_adapter_image=reference_image,
    negative_prompt="low quality, blurry",
    num_inference_steps=30,
    generator=torch.Generator("cuda").manual_seed(42)
).images[0]

image.save("ip_adapter_result.png")
print("스타일 전이 이미지 생성 완료!")

🗣️ 실무에서 이렇게 말하세요

💬 회의에서
"IP-Adapter로 레퍼런스 이미지 스타일을 적용하면 프롬프트만으로 설명하기 어려운 분위기를 쉽게 재현할 수 있습니다. scale을 0.6 정도로 설정하면 스타일은 유지하면서 텍스트 프롬프트의 내용도 반영됩니다."
💬 면접에서
"IP-Adapter의 핵심은 Decoupled Cross-Attention입니다. 텍스트와 이미지 특징을 분리된 어텐션으로 처리해서 두 모달리티가 간섭 없이 결합됩니다. 22M 파라미터로 전체 모델 파인튜닝 없이 이미지 프롬프트 기능을 추가할 수 있어요."
💬 기술 토론에서
"IP-Adapter Plus 버전은 patch embeddings를 사용해서 더 정교한 스타일 전이가 가능해요. FaceID 버전은 얼굴 특징을 유지하면서 다른 스타일로 변환하는 데 최적화되어 있습니다."

⚠️ 흔한 실수 & 주의사항

ip_adapter_scale을 1.0으로 고정

scale이 1.0이면 텍스트 프롬프트가 거의 무시됩니다. 대부분의 경우 0.4~0.7 범위가 텍스트와 이미지의 균형에 적합합니다.

베이스 모델과 맞지 않는 IP-Adapter 사용

SD 1.5용 IP-Adapter를 SDXL에 사용하면 작동하지 않습니다. 반드시 베이스 모델에 맞는 어댑터를 선택하세요.

ControlNet과 함께 사용

IP-Adapter로 스타일을, ControlNet으로 포즈나 구도를 제어하면 더 정밀한 이미지 생성이 가능합니다.

🔗 관련 용어

📚 더 배우기