LoRA: Stable Diffusion의 작지만 강력한 이미지 생성 모델

0

Stable Diffusion으로 그림 생성형 인공지능을 활용해 이미지를 만들다 보면 “LoRA”라는 단어를 자주 마주하게 됩니다. LoRA 모델은 일반적인 체크포인트 모델과 비교하여 작은 변화만 일으키는 경량화된 Stable Diffusion 모델입니다. 일반적으로 체크포인트 모델보다 1/10에서 1/100 정도의 크기로 줄어들어 다양한 모델을 수집하려는 사람들에게 인기 만점이죠.

예를 들어, LoRA 모델은 특정한 스타일을 따르는 이미지를 생성하거나 특정 주제에 맞는 이미지를 만들 때 특히 유용합니다. 체크포인트 모델에 비해 매우 작으면서도 강력한 변화를 가져오며, 이를 통해 자신만의 독특한 이미지를 만들어낼 수 있습니다.

이 글에서는 LoRA 모델이 무엇인지, 일반적인 체크포인트 모델과 어떤 차이가 있는지, 그리고 이를 어떻게 활용할 수 있는지에 대해 알아보겠습니다. 이 글을 통해 LoRA 모델의 특징과 활용법을 알아보고, 여러분이 원하는 이미지 생성 작업에 LoRA 모델을 최대한 활용할 수 있도록 도와드리겠습니다.

LoRA 모델이란 무엇인가?

LoRA는 Stable Diffusion 모델을 세부 조정하기 위한 학습 기법입니다. Stable Diffusion에는 Dreambooth와 텍스추얼 인버전과 같은 다른 학습 기법도 있는데요, LoRA는 어떤 점이 다를까요?

Dreambooth는 매우 강력하지만, 모델 파일의 크기가 2~7GB 정도로 상당히 큽니다. 반면, 텍스추얼 인버전은 파일이 100KB 정도로 작지만 활용할 수 있는 기능이 제한적입니다. LoRA는 두 가지 학습 기법의 중간에 위치한 모델로, 파일 크기와 학습 능력 간에 적절한 균형을 이룬다고 볼 수 있습니다. 파일 크기는 보통 2~200MB 정도로 부담이 적으며, 학습 능력도 뛰어난 편입니다.

Stable Diffusion 사용자라면 모델을 수집할 때 저장 용량이 얼마나 빨리 소모되는지 잘 아실 겁니다. LoRA를 사용하면 저장 용량을 절약할 수 있습니다. 파일 크기가 작기 때문에 다양한 모델을 효과적으로 수집할 수 있죠.

LoRA 모델 사용의 주의사항

LoRA 모델은 텍스추얼 인버전과 마찬가지로 단독으로 사용할 수 없으며, 체크포인트 모델과 함께 사용해야 합니다. LoRA는 체크포인트 파일에 작은 변화를 일으켜 스타일을 변경하는 역할만 하기 때문에 LoRA를 활용하려면 기본 체크포인트 모델을 함께 준비해야 합니다.

체크포인트 모델

LoRA 모델의 작동 원리

LoRA는 Stable Diffusion 모델 중 가장 중요한 부분인 교차 인지 레이어에 작은 변화를 가합니다. 이 부분은 이미지와 프롬프트가 만나는 지점으로, 연구자들은 교차 인지 레이어만 세부 조정해도 좋은 학습 결과를 얻을 수 있다는 점을 발견했습니다. 교차 인지 레이어는 아래의 Stable Diffusion 아키텍처 그림에서 노란색 부분에 해당합니다.

Stable Diffusion Architecture

LoRA는 교차 인지 레이어(U-Net 잡음 예측기 중 QKV)의 가중치를 세부 조정합니다. 교차 인지 레이어의 가중치는 행렬에 저장되며, 이 행렬은 엑셀의 스프레드시트처럼 숫자로 나열되어 있습니다. LoRA 모델은 이러한 행렬에 가중치를 추가하여 모델을 미세 조정하죠.

LoRA의 랭크 분해 원리

LoRA 모델이 동일한 수의 가중치를 저장하면서도 파일 크기가 작은 이유는 행렬을 랭크가 낮은(low-rank) 두 개의 행렬로 분해하기 때문입니다. 이를 통해 훨씬 더 적은 수의 숫자를 저장할 수 있습니다. 예를 들어보겠습니다.

어떤 모델이 1000개의 행과 2000개의 열로 구성된 행렬을 가지고 있다고 가정하겠습니다. 그러면 그 모델 파일에는 2백만(1000×2000) 개의 숫자가 저장됩니다. LoRA는 이 행렬을 1000×2 행렬과 2×2000 행렬로 쪼갭니다. 이렇게 하면 총 6000개의 숫자만 필요해지며, 원래의 행렬에 비해 1/333로 줄어듭니다. 이 때문에 LoRA 파일의 크기가 훨씬 작아지는 것입니다.

LoRA 랭크 분해

위 예제에서 LoRA에 저장되는 행렬의 랭크는 2입니다. 원래의 행렬 랭크는 2000이니 훨씬 작죠. 그래서 이를 저 랭크 행렬이라고 합니다. 하지만 “행렬의 크기를 줄이면 성능에 문제가 발생하지 않을까?” 하는 의문이 들 수도 있습니다. 그러나 연구자들에 따르면 교차 인지 레이어에서는 이렇게 해도 미세 조정 성능에 큰 영향을 미치지 않는다고 합니다.

LoRA 모델의 강점과 한계

LoRA 모델은 작고 가벼우면서도 체크포인트 모델과 유사한 수준의 성능을 제공하는 것이 특징입니다. 이를 통해 저장 용량을 크게 절약하면서 다양한 스타일의 이미지를 생성할 수 있습니다. 그러나, LoRA 모델은 기본 체크포인트 모델에 의존하여 작동하므로 이를 단독으로 사용할 수는 없습니다.

그렇지만, LoRA 모델의 핵심은 교차 인지 레이어에 집중된 미세 조정 능력과 낮은 파일 크기입니다. 이를 잘 활용하면 원하는 이미지 스타일을 효율적으로 생성할 수 있습니다.

더 자세한 내용은 Stable Diffusion 논문 “High-Resolution Image Synthesis with Latent Diffusion Models”를 참고하세요.

LoRA 모델을 다운로드할 수 있는 곳

LoRA 모델을 어디서 다운로드할 수 있는지 궁금하신가요? 몇 가지 추천 사이트를 소개해드리겠습니다.

1. Civitai

Civitai에는 다양한 LoRA 모델이 풍부하게 제공되고 있습니다. 특히 이곳에 접속하면 LoRA 모델만 필터링하여 볼 수 있는데, 대부분의 LoRA 모델은 여성, 애니메이션, 사실적인 일러스트레이션 스타일로 구성되어 있습니다. Civitai에는 노골적인 이미지(NSFW)가 많으므로 주의하세요.

LoRA 필터 설정

2. Hugging Face

Hugging Face에서도 LoRA 모델을 찾을 수 있습니다. 하지만 클릭해야만 미리보기가 가능하며, 다운로드 횟수가 상대적으로 적은 점이 단점이죠. 그래서 더 많은 LoRA 모델을 찾고자 한다면 Civitai가 더욱 유용할 수 있습니다.

LoRA 모델 활용 방법

LoRA 모델을 다운로드한 후에는 Stable Diffusion의 체크포인트 모델과 함께 사용할 수 있습니다. 아래는 LoRA 모델을 활용하는 간단한 방법입니다.

  • Civitai 또는 Hugging Face에서 LoRA 모델을 다운로드합니다.
  • 다운로드한 LoRA 모델을 ‘stable-diffusion-webui/models/Lora’에 저장합니다.
  • 이미지 생성 툴(예: Automatic1111 WebUI)에서 LoRA 모델을 추가 설정합니다.
  • 원하는 스타일의 프롬프트와 함께 LoRA 모델을 사용하여 이미지를 생성합니다.

최적화된 프롬프트 작성 팁

LoRA 모델을 효과적으로 사용하기 위해서는 적절한 프롬프트 작성이 중요합니다. 프롬프트 작성 시 다음 요소들을 고려하세요.

  • 스타일 선택: 원하는 이미지 스타일을 명확히 기술합니다.
  • LoRA 태그 추가: LoRA 모델의 이름이나 태그를 프롬프트에 포함합니다.
  • 키워드 강화: 프롬프트 내 중요한 키워드를 강조합니다.
예시 프롬프트

portrait of a woman, fine skin textures, soft natural lighting, expressive eyes, realistic hair details,

원본 이미지와 LoRA를 적용한 이미지

AUTOMATIC1111에서 LoRA 모델 사용하는 방법

Stable Diffusion의 대표적인 UI인 AUTOMATIC1111에서 LoRA 모델을 사용하는 방법을 알아보겠습니다. 참고로, AUTOMATIC1111은 윈도, 맥, 그리고 Google Colab에서 설치하여 사용할 수 있습니다.

1단계: LoRA 모델 설치

먼저 LoRA 모델을 다운로드해야 합니다. Civitai 등에서 필요한 LoRA 모델을 다운로드 받은 후, 다음 폴더에 파일을 넣습니다.

stable-diffusion-webui/models/Lora

폴더에 넣으면 설치가 완료된 것입니다.

2단계: LoRA 모델 사용

LoRA 모델을 사용하려면 프롬프트에 다음과 같은 형식으로 입력합니다.

<lora:filename:multiplier>

  • filename: LoRA 모델의 파일명(확장자는 제외)
  • multiplier: LoRA 모델에 적용할 가중치(기본값은 1)

<lora:example-model:0.8>

참고로, 가중치를 0으로 설정하면 해당 LoRA 모델을 사용하지 않게 됩니다.

3단계: Lora 탭 활용

LoRA 파일명을 정확하게 입력하기 어렵거나 어떤 LoRA 모델을 사용할지 모르겠다면, txx2imgimg2img 메뉴의 하위에 있는 Lora 탭을 클릭하면 됩니다.

LoRA

그러면 텍스추얼 인버전, Hypernetworks 등 체크포인트 모델과 함께 사용할 수 있는 여러 보조 모델들이 나타납니다. 여기서 LoRA 탭을 클릭한 뒤 원하는 LoRA 파일을 클릭하면 자동으로 프롬프트에 해당 파일 내용이 입력됩니다.

LoRA 사용 시 주의사항

LoRA 모델을 효과적으로 사용하려면 몇 가지 중요한 사항을 유념해야 합니다.

1. Multiplier 값 설정

LoRA를 사용할 때의 문법은 <lora:filename:multiplier>입니다. multiplier 값은 0에서 1 사이로 설정하며, 이 값에 따라 모델 적용 강도를 조절할 수 있습니다.

  • 0: 해당 LoRA 모델을 사용하지 않음
  • 1: LoRA 모델을 완전히 강하게 적용

<lora:example-model:0.5>

2. 발동 키워드 확인

일부 LoRA 모델은 Dreambooth를 사용하여 학습됩니다. 이 경우, LoRA 모델을 사용할 때 ‘발동 키워드‘를 함께 사용해야 합니다. 따라서 LoRA 모델을 다운로드할 때 해당 페이지에서 트리거 키워드가 지정되어 있는지 확인해야 합니다.

예를 들어, 지브리 스타일의 LoRA 모델을 사용하려면 아래처럼 ghibli style이라는 트리거 키워드를 프롬프트에 포함해야 합니다.

LoRA 발동 키워드 확인

<lora:ghibli-style:0.8>, ghibli style, beautiful landscape

3. 여러 LoRA 모델의 동시 사용

LoRA는 임베딩처럼 여러 개의 LoRA 모델을 동시에 사용할 수 있습니다. 또한, 임베딩과 LoRA를 함께 사용해도 무방합니다.

<lora:example-model-1:0.5>, <lora:example-model-2:0.7>

4. AUTOMATIC1111에서 LoRA 관련 문법

AUTOMATIC1111에서 LoRA 관련 단어는 프롬프트에 포함되지만 실제로는 프롬프트의 일부로 간주되지 않습니다. LoRA 관련 단어는 모델 적용 후 제거되므로 keyword1:keyword2:0.8과 같은 프롬프트 문법은 사용할 수 없습니다.

LoRA 모델 사용의 예시

다음은 실제로 LoRA 모델을 사용한 예시 프롬프트입니다.

anime style, full body, 3 girls, playing with animals, landscape, <lora:sign2:0.6>

위 예시에서는 sign2라는 LoRA 모델을 0.6의 가중치로 적용하여 특정 애니메이션 스타일의 이미지를 생성합니다. 아래는 왼쪽이 0.6, 오른쪽이 1을 적용한 이미지입니다. 전체적인 분위기가 미묘하게 다르다는 것을 알 수 있습니다.

0.6 가중치와 1 가중치의 생성 이미지 비교

추천 LoRA 모델들

LoRA 모델은 다양한 스타일과 주제의 이미지를 생성하는 데 활용될 수 있습니다. 아래는 Andrew님의 글에서 소개된 몇 가지 LoRA 모델과 그 사용 예시입니다.

1. 수묵화 LoRA 모델

동양의 수묵화 형태의 그림을 그려주는 모델로, ‘墨心 MoXin’이라는 이름으로 제공됩니다. ‘疏可走马‘는 수묵화에서 비어있는 여백이 커서 말이 지나갈 수 있을 정도로 넉넉하다는 뜻입니다.

프롬프트:

chinese painting, half body, female, perfect symmetric face, detailed chinese dress, mountains, flowers, 1girl, tiger

부정적 프롬프트:

disfigured, ugly, bad, immature

chinese painting, half body, female, perfect symmetric face, detailed chinese dress, mountains, flowers, 1girl, tiger

2. Cyberpunk 2077 타로 카드

사이버펑크 스타일의 도시와 캐릭터를 생성하는 LoRA 모델입니다.

프롬프트:

cyberpunk, tarot card, close up, portrait, bionic body, cat, young man, leather metallic jacket, circuit, city street in background, natural lighting, masterpiece

부정적 프롬프트:

(worst quality, low quality:1.4), (painting by bad-artist-anime:0.9), (painting by bad-artist:0.9), watermark, text, error, blurry, jpeg artifacts, cropped, worst quality, low quality, normal quality, jpeg artifacts, signature, watermark, username, artist name, bad anatomy, big breast

cyberpunk, tarot card, close up, portrait, bionic body, cat, young man, leather metallic jacket, circuit, city street in background, natural lighting, masterpiece

3. 지브리 스타일 LoRA

스튜디오 지브리 스타일의 이미지를 생성하는 LoRA 모델입니다.

프롬프트:

ghibli style, 1girl, smile, jewelry, armlet, bangs, black hair, earrings, grassland with flowers, mountain in the distant, looking at viewer, medium breasts, nature, white shirt, ((masterpiece))

ghibli style, 1girl, smile, jewelry, armlet, bangs, black hair, earrings, grassland with flowers, mountain in the distant, looking at viewer, medium breasts, nature, white shirt, ((masterpiece))

마치며

Stable Diffusion에서 LoRA 모델을 활용하는 것은 작고 가벼운 변화로 큰 가능성을 만들어내는 혁신적인 접근법입니다. LoRA 모델은 기존의 체크포인트 모델보다 훨씬 작고 효율적이면서도 원하는 이미지 스타일을 정확하게 반영합니다. 다양한 LoRA 모델의 예시에서 볼 수 있듯이, 각 모델은 개별적인 주제와 스타일을 반영하여 수묵화, 사이버펑크, 스튜디오 지브리 스타일 등으로 독특한 이미지를 창조해냅니다.

LoRA 모델의 작동 원리는 교차 인지 레이어에 가중치를 추가하여 모델을 미세 조정하는 것이 핵심입니다. 낮은 랭크 행렬로 가중치를 분해하는 원리를 이용해 파일 크기를 줄이면서도 성능을 유지할 수 있습니다. 특히 AUTOMATIC1111과 같은 사용자 친화적인 인터페이스를 통해 LoRA 모델을 쉽게 다운로드하고 프롬프트에 활용할 수 있습니다.

이처럼 LoRA 모델은 Dreambooth와 텍스추얼 인버전의 장점을 절묘하게 결합하여 저장 용량과 성능 간의 균형을 이룬 가벼운 모델링 솔루션을 제공합니다. 또한, 여러 LoRA 모델을 동시에 사용하거나 트리거 키워드를 통해 특정 스타일을 발동하는 등의 기능을 갖춰 다양한 스타일과 주제를 자유롭게 응용할 수 있습니다.

Stable Diffusion과 LoRA 모델의 조합으로 여러분도 원하는 스타일과 테마로 자신만의 이미지를 만들어내고, AI 예술의 새로운 가능성을 탐험해 보세요. 작지만 강력한 LoRA 모델은 작은 변화로도 거대한 가능성을 열어줄 것입니다.

Leave a Reply