스테이블 디퓨전 WebUI LoRA 사용법

스테이블 디퓨젼(Stable Diffusion)으로 그림을 생성할 때 Lora 사용법을 알아두면 그림 생성 관련해 굉장히 다양한 부분에서 활용할 수 있습니다. 본 글에서는 Lora에 대한 전반적인 이해와 A1111 WebUI에서 Lora 사용법을 자세히 알아보도록 하겠습니다.

LoRA란?

스테이블 디퓨전은 생성형 인공지능 그림 도구인데요, 여기서 생성형이란 미리 학습된 데이터(학습 모델)로부터 인공지능이 사용자의 입력 프롬프트를 구현해내는 방식을 뜻합니다. 예를 들어 어떤 화가에게 그림을 의뢰할 때, 원하는 그림을 아무리 자세히 설명한다 하더라도, 그 화가가 그린 10장의 그림은 매번 그릴 때 마다 조금씩 차이가 있기 마련입니다. 게다가 내가 설명하지 못한 부분을 빈 캔버스로 둘 수 없기 때문에 화가가 임의로 채워넣는 부분도 분명히 발생하기 마련입니다. 이는 화가가 그림을 매번 “생성”하기 때문인데요, 어떤 그림을 그려놓은 뒤에 그 그림 위에서 일부분만 수정하는 것이 아니라, 매 번 그림을 새로 생성한다는 의미입니다.

인공지능, 즉 스테이블 디퓨젼 또한 마찬가지로, 생성형 도구이기 때문에 동일한 프롬프트에 대해서도 학습된 모델의 차이, 설정값의 차이 등에 따라 매번 다른 그림이 생성(모델, 세팅값, 시드 등까지 완벽히 동일한 경우 같은 그림을 재현하는 것은 가능)됩니다. 이는 즉, 동일 또는 유사 프롬프트에 대해 실제 생성된 그림의 일관성이 떨어진다는 것을 의미합니다.

스테이블 디퓨젼에서는 이미 학습된 모델에 상대적으로 적은 용량으로 구현 가능한 Lora(Low rank adaptation of large language models)를 적용하여, 그림의 일관성을 유지할 수 있는 기술이 있습니다. 즉, 메인 모델 이외에 추가로 살짝 학습된 Lora를 가미하여, Lora 학습에 사용된 이미지와 최대한 유사한 이미지를 생성하도록 만드는 것입니다.

스노우볼
스노우볼 로라를 이용해 그린 크리스마스 스노우볼

Lora를 활용하면, 특정인의 얼굴을 학습시켜 일관되게 그 사람과 유사한 얼굴을 생성하거나, 특정 자동차 모델을 학습시켜 그 자동차와 유사한 그림을 생성해내는 것이 가능합니다. 뿐만아니라 특정 의상을 학습시키면, 생성한 그림의 의상들을 해당 의상과 유사하게 만들 수도 있고, 그림의 전반적인 분위기나 화풍을 바꾸는 것도 가능합니다.

LoRA 사용법

Automatic1111 WebUI에서 Lora 사용법은 굉장히 간단합니다. 우선 로라를 구하는 과정부터 살펴보고, 이후 적용 방법에 대해 알아보겠습니다.

LoRA 학습

앞서 그림 생성에 사용하는 본 모델 이외에 추가로 학습된 Lora를 활용할 수 있다고 말씀드렸는데요, Lora 자체가 무거운 파일이 아니다보니, 만약 사용중인 PC가 스테이블 디퓨젼으로 그림을 생성할 수 있는 수준의 하드웨어를 갖춘 상태라면 Kohya_ss를 활용해 Lora를 직접 학습하는 것이 가능합니다. 로라 학습에 대한 자세한 내용은 다른 포스팅에서 다루도록 하겠습니다.

LoRA 다운로드

만약 꼭 필요한 화풍이나 그림체, 얼굴 등이 필요한 경우라면 직접 학습해서 만들어야 하겠지만, 그렇지 않다면 이미 다른 사람들이 만들어놓은 수많은 로라를 다운로드 받아서 활용하는 방법도 있습니다. Lora를 다운로드할 수 있는 가장 대표적인 무료 사이트가 바로 Civitai입니다.

civitai lora 필터링

Civitai에 접속한 뒤 가입 또는 로그인을 합니다. 위 그림과 같이 Models > LoRA를 체크하면 다운로드 가능한 Lora 파일들이 필터링 되어 표시되는데요, 여기서 원하는 모델을 다운받을 수 있습니다.

LoRA 적용 방법

스테이블 디퓨전 WebUI에서 LoRA 사용법은 어렵지 않습니다. 먼저 사용하고자 하는 LoRA의 트리거워드를 확인합니다. 트리거 워드란, 그림 생성시 해당 로라가 잘 구현되도록 하는 단어인데요, LoRA 학습 단계에서 만들어지는 단어기 때문에, 보통 다운로드 받은 로라의 경우 업로더가 해당 로라의 다운로드 페이지에 트리거 워드를 같이 적어놓습니다.

Lora trigger words 확인

본문에서는 위 사진에서 보이는 로라를 사용해보고자 합니다. 우측 Details 표에 Trigger Words 항목을 확인(트리거 워드가 없는 로라도 있음)할 수 있습니다. 해당 로라를 다운로드 받은 뒤, 스테이블 디퓨전이 설치된 폴더에서 아래와 같이 Lora 폴더 경로를 찾아 다운받은 파일을 이동시켜 줍니다.

Lora 파일 이동경로

예시의 경우 E 드라이브 WEBUI 폴더 내 stable-diffusion-webui 폴더에 스테이블 디퓨젼이 설치되어 있으며, 다시 해당 폴더 내에서 models > Lora로 이동하여 위에서 다운받은 로라 파일을 복사했습니다. 만약 다양한 로라 파일을 받아 사용하시는 경우라면 분류의 편의를 위해 Lora 폴더 내에 사용자 임의로 하위 폴더를 새로 만들어 사용(예를 들어 의상 관련 로라는 Clothes, 배경 로라는 Background, 인물로라는 Character 등) 하더라도 WebUI에서 모두 인식 가능합니다.

이제 Webui를 실행한 뒤 아래와 같이 Lora 탭에서 다운받은 로라를 선택합니다. 로라를 선택하면 긍정 프롬프트 (positive prompt) 창에 로라명과 함께 가중치가 입력된 것을 확인할 수 있습니다. 여기에 해당 로라가 잘 작동하게 하기 위해 아까 확인했던 트리거 워드를 함께 입력합니다.

Lora 사용법

프롬프트에는 기본적인 긴 머리의 여성 사진을 만들도록 girl, solo, long hair와 같이 간단한 태그만 입력했습니다. 이외 모든 설정값(해상도, 시드 등)을 고정한 뒤 로라를 적용 유무만 달리해 그림을 생성해보면 다음과 같습니다.

밋밋했던 배경에는 크리스마스 장식과 선물이 생겼고, 주인공 또한 크리스마스 드레스를 입고있는 모습입니다. 다운받은 로라가 제대로 동작하고 있는 것을 확인할 수 있습니다.