AI 이미지/AUTOMATIC1111

스테이블 디퓨전에서 LyCORIS 사용법

하늘이푸른오늘 2023. 8. 26. 14:44

스테이블 디퓨전으로 이미지를 생성해보셨다면, 아마도 LoRA는 사용해 보셨을 겁니다. (LoRA 사용법은 이 글을 읽어보세요) 특히 SD 1.5에서는 LoRA 없이는 정상적인 이미지를 만들기 힘들 정도죠. 그런데 LyCORIS 모델은 사용해 보셨나요? 저도 한번도 접해볼 기회가 없었습니다. 

LyCORIS 모델이란 무엇인가?

LyCORIS는 LoRA beYond Conventional methods, Other Rank adaptation Implementations for Stable Diffusion(스테이블 디퓨전을 위한, 일반적인 방법론을 넘어서는 LoRA, 또다른 계수 적용법(Rank adaptation) 구현) 의 약자입니다. (제가 번역하고도 무슨 뜻인지 모르겠네요 ㅠㅠ) LyCORIS는 LoRA와 비슷한데, 스테이블 디퓨전 체크포인트 모델에 약간의 변화를 일으키기 위한 방법론의 집합입니다.

LyCORIS를 사용하면 다음과 같은 작업이 가능합니다. 체크포인트 모델을 변경시키는데 사용되죠. 이것만 봐서는 LoRA와 그다지 다르지 않은 것 같습니다.

  • 캐릭터 삽입: 유명인, 가상의 캐릭터 등
  • 스타일 변경
  • 의복 스타일 변경
  • 배경 변경
  • 자동차, 건물과 같은 객체 추가
  • 동물 추가

아래는 Realistic Vision v2 모델에 LyCORIS Royal Gowns(왕실의 가운)을 적용한 예입니다.

Realistic VisionV v2 오리지널 edgPreppyGown LyCORIS를 적용했을 

LoRA와 LyCORIS의 비교

여기까지만 보면 LoRA와 LyCORIS는 거기서 거기인 것 같네요. LyCORIS 모델과 LoRA 모델은 모두 용량이 큰 스테이블 디퓨전 체크포인트 모델을 작은 파일을 사용하여 작은 수정을 가하는 것이 목표입니다. 두가지 모두 매트릭스 분해(matrix decomposition)을 통해 U-NET을 수정하지만, 접근법은 다릅니다.

LoRA는 원래의 방법입니다. LyCORIS는 LoRA와 유사한 방법론의 집합입니다. 즉, LoCon, LoHa, LoKR, DyLoRA 등의 집합입니다.

LoRA

LoRA 모델은 U-Net의 교차 인지(cross-attention) 레이어를 수정합니다. 다만, 가중치를 보다 효율적으로 저장하죠.

체크포인트는 전체 행렬을 저장하지만, LoRA는 계수(rank)가 낮은 두개의 작은 행렬을 사용해 전체 행렬을 근사시킵니다. 이렇게 하면 파라미터의 수가 줄어들 게 됩니다. 예를 들어 원래 행렬이 1000x2000이라면 2백만개의 파라미터가 필요할것이비다. 하지만, 계수가 10인 LoRA는 1000x10 + 2000x10 = 30,000 개으 파라미터만 필요합니다. 이렇게 하면 크기가 1/60으로 줄어드는 것이죠.

LoRA는 낮은 계수(rank)의 행렬 두개로 원래 전체 행렬을 근사시킨다.
LoRA는 낮은 계수(rank)의 행렬 두개로 원래 전체 행렬을 근사시킨다.

이때문에 LoRA 파일이 작은 것입니다. LoRA는 체크포인트 파일에 대한 가중치(weight)의 차이만 저장하며, 체크포인트 파일의 U-Net의 교차 인지 레이어만 수정합니다.

LoCon(LyCORIS)

LoCon (LoRA for convolution network, 합성곱 신경망을 위한 LoRA)는 LoRA를 확장한 것입니다. 교차인지(cross attention)레이어 뿐만아니라, 합성곱(convolution) 레이어도 수정합니다.

체크포인트 파일에서 여러 부분을 수정하므로, LoCon은 LoRA보다 성능이 뛰어납니다.

LoHa(LyCORIS)

LoHA(LoRA with Hadamard Product representation, 하다마드 곱 표현을 채택한 LoRA)도 또다른 LyCORIS 모델입니다. 이 모델은 FedPara(federal learning method)에 영감을 받았습니다. 다만, LoHA는 fedral learning과는 아무런 관련이 없으며, 낮은 계수 근사법만을 사용할 뿐입니다. 

LoHA 모델은 4개의 낮은 계수 행렬을 사용한다.
LoHA 모델은 4개의 낮은 계수 행렬을 사용한다.

LoHA는 전체 행렬을 4개의 계수가 낮은 행렬로 분해합니다. LoRA와 비슷한데, 두개의 LoRA를 하다마드 곱(Hadamard Product, bitwise 곱)으로 결합합니다.

LoKR(LyCORIS)

LoKR(LoRA with Kronecker Product representation, 크로네커 곱 표현을 채택한 LoRA)는 Kronecker 곱을 사용한다는 점외에는 LoHA와 거의 비슷합니다. 

LoKR은 곱 표현 방법외에는 KoHa와 거의 동일하다.
LoKR은 곱 표현 방법외에는 KoHa와 거의 동일하다.

DyLoRA(LyCORIS)

DyLoRA(Dynamic LoRA, 동적 LoRA)는 LoRA를 학습시키는 다른 방법입니다. 이 방법은 계수를 쉽게 변경시킬 수 있다는 장점이 있습니다. 

그래서, LoRA와 LyCORIS가 뭐가 달라?

LyCORIS는 일반적으로 LoRA보다 표현력이 뛰어납니다. 체크포인트 모델을 더 많이 변경할 수 있기 때문입니다.

아래는 예입니다. Sakura Chiyono ) 모델인데요, LoRA 모델과 LyCORIS(LoCon)을 동시에 제공하기 때문에 비교해보기 좋습니다. 보시는 것처럼 LyCORIS가 더 많은 디테일을 살려냅니다.

LoRA LoCORIS(LoCon)

LyCORIS 모델을 찾는 방법?

Civitai 사이트에 들어가면 Stable Diffusion용 LyCORIS 모델을 찾을 수 있습니다.

아래 그림처럼 왼쪽 위 메뉴에서 Models를 클릭하고 오른쪽에서 필터 아이콘을 누른 후 LyCORIS를 선택해주시면 됩니다.

Civitai.com의 LyCORIS 모델 검색
Civitai.com의 LyCORIS 모델 검색

LyCORIS 모델 다운로드

원하는 LyCORIS 모델을 선택한 후, Download 버튼을 누릅니다. 이때, 아래쪽에 Trigger가 있는지 확인해 둡니다. 보통 LoRA나 LyCORIS는 그냥 사용만 해도 되지만, 프롬프트에 Trigger 단어를 넣어주면 더 확실하게 작동됩니다.

torograo 스타일 LyCORIS
torograo 스타일 LyCORIS

파일은 아래의 폴더에 다운로드해서 넣어줍니다. LoRA 파일과 같은 폴더네요.

stable-diffusion-webui/models/Lora

참고: Civitai Helper를 사용할 경우

Civitai Helper 페이지로 들어가 Download Model 부분으로 내려갑니다. 그다음 civital URL에 해당 모델의 URL을 입력하고 [1. Get Model infor by Civitai URL] 버튼을 눌러줍니다. 그러면 아래와 같이 정보가 나타납니다.

civitai Helpter로 모델 다운로드
civitai Helpter로 모델 다운로드

Sub-folder는 "/"로  선택하고, 우측 Model version에서 적당한 버전을 눌러준 후 [3. Download Model] 버튼을 눌러주면 됩니다. 참고로 이렇게 다운로드 받으면 커버 이미지도 함께 다운로드되어 편리합니다.

LyCORIS 모델 사용법

LyCORIS 모델을 사용하는 방법은  LoRA 모델과 동일합니다. 따라서 반드시 스테이블 디퓨전 체크포인트 모델과 함께 사용해야 합니다. 또한 LyCORIS 모델과 잘 작동하는 체크포인트 모델이 있으며, 해당 모델을 활성화시키는 트리거(Trigger)단어가 있을 수 있으니 모델 페이지를 확인해야 합니다.

아울러 주의할 점은 LoRA 모델과 마찬가지로, 모든 버전의 스테이블 디퓨전에 다 사용할 수 있는 것이 아니라, v1.5, v3, SDXL 별로 다른 모델이 필요합니다. 즉, v1.5 용 LyCORIS 모델은 SDXL 모델에는 사용할 수 없습니다.  

LyCORIS 모델을 사용하려면 아래 그림과 같이 [Generate] 버튼 바로 아래에 있는 화투모양의 아이콘을 누르고 "LoRA" 버튼을 누른 뒤 원하는 모델을 클릭해주면 됩니다. (모델이 안보이면 Refresh 버튼을 누르세요) 

LyCORIS 모델 사용방법
LyCORIS 모델 사용방법

모델 커버 이미지를 누르면 <lora:MODEL_NAME:1> 과 같은 문구가 프롬프트에 자동으로 포함됩니다. 해당 스타일을 더 강조하고 싶으면 1을 조금 더 큰 값으로, 영향을 낮추고 싶으면 1보다 작은 값으로 설정하면 됩니다.

LyCORIS 사용예

위에서 보인 Royal Gown을 사용하는 예를 보여드립니다.

모델 : realistic vision v2
프롬프트: ((Masterpiece, best quality)), ballgown,edgPreppy, a woman in a set of edgPreppy clothes, ribbons,frills, posing for a picture ,wearing edgPreppy with ballgown, Blonde Nadia with sunglasses and a choker
부정적 프롬프트: disfigured, deformed, ugly, nsfw
LyCORIS : https://civitai.com/models/61135?modelVersionId=144924 

a woman in a set of edgPreppy clothes
a woman in a set of edgPreppy clothes

이상입니다. 이 글은 https://stable-diffusion-art.com/lycoris/ 를 일부 수정하여 번역한 글입니다.

민, 푸른하늘