본문 바로가기
노코딩AI/AI설명

diffusion 모델 중 LoRA 모델에 대해 알아보고 이미지 생성해보기

by 노마드랩스 2023. 3. 12.
728x90
반응형

오늘은 LoRA 모델에 대해서 알아보고 WebUI로 직접 구현하는 시간을 가져보겠습니다.

 

LoRA 모델은 표준 체크포인트 모델에 작은 변경 사항을 적용하는 소규모 안정적 확산 모델입니다. 일반적으로 체크포인트 모델보다 10~100배 더 작습니다. 따라서 다양한 모델을 보유한 사람들에게 매우 매력적입니다.

 

LoRA 모델이란?

LoRA(낮은 순위 적응)는 안정적 확산 모델을 미세 조정하기 위한 훈련 기법입니다.

하지만 이미 드림부스나 텍스트 반전과 같은 훈련 기법이 있습니다. 

 

2023.03.12 - [노코딩AI/AI설명] - diffusion의 확장 모델인 dreambooth에 대해 알아보고 이미지 생성해보기

 

diffusion의 확장 모델인 dreambooth에 대해 알아보고 이미지 생성해보기

Dreambooth는 2022년에 Google 연구팀과 보스턴 대학교의 연구자들이 개발한 딥러닝 생성 모델입니다. Dreambooth는 기존의 텍스트-이미지 모델을 세부적으로 조정하거나 새로운 이미지를 생성할 수 있

nomadlabs.tistory.com

2023.03.11 - [노코딩AI/AI설명] - 스테이블 디퓨전 Textual Inversion에 대해 속성으로 알아보도록 하겠습니다.

 

스테이블 디퓨전 Textual Inversion에 대해 속성으로 알아보도록 하겠습니다.

생성 커뮤니티에서 Stable Diffusion이 굉장히 핫해지고, 생성 AI에 대한 발전이 급속도로 이루어지고 있는데요. 그 중 하나가 Textual Inversion입니다. 아래는 논문으로 개제 된 정식 명칭인데요. An Image

nomadlabs.tistory.com

LoRA의 장점은 무엇인가요? LoRA는 파일 크기와 훈련 성능 사이에서 적절한 절충점을 제공합니다. 드림부스는 강력하지만 모델 파일 용량이 2~7GB에 달합니다. 텍스트 반전은 파일 크기가 작지만(약 100KB), 할 수 있는 작업이 많지 않습니다.

LoRA는 그 사이에 위치합니다: 파일 크기가 관리 가능한 수준(2~200MB)이며, 학습 능력도 괜찮습니다.

모델 실험을 좋아하는 Stable Diffusion 사용자는 로컬 스토리지가 얼마나 빨리 채워지는지 알 수 있습니다. 크기가 크기 때문에 개인용 컴퓨터로 컬렉션을 유지하기가 어렵습니다. LoRA는 스토리지 문제에 대한 훌륭한 솔루션입니다.

텍스트 반전과 마찬가지로 LoRA 모델만 사용할 수는 없습니다. 원래 Base가 되는 모델의 체크포인트 파일이 있어야 같이 결합해서 사용이 가능합니다.

 

LoRA는 함께 제공되는 모델 파일에 작은 변경 사항을 적용하여 스타일을 수정합니다.

728x90

LoRA는 어떻게 작동하나요?

LoRA는 안정적 확산 모델에서 가장 중요한 부분에 작은 변화를 적용합니다.

교차 주의 레이어입니다. 교차 주의 층은 이미지와 프롬프트가 만나는 모델 부분입니다. 연구원들은 모델의 이 부분을 미세 조정하는 것만으로도 좋은 학습 결과를 얻을 수 있다는 것을 발견했습니다. 교차 주의 레이어는 아래 Latent Diffusion 모델 아키텍처에서 노란색 부분입니다.

 

LORA fine-tunes the cross-attention layers (the QKV parts of the U-Net noise predictor). (Figure from  Stable Diffusion paper .)

교차 주의 레이어의 가중치는 행렬로 배열됩니다. 행렬은 Excel 스프레드시트에서와 같이 열과 행으로 배열된 숫자의 집합입니다. LoRA 모델은 이러한 행렬에 가중치를 추가하여 모델을 미세 조정합니다.

같은 수의 가중치를 저장해야 하는 경우 어떻게 하면 LoRA 모델 파일을 더 작게 만들 수 있을까요? LoRA의 비결은 행렬을 두 개의 작은(순위가 낮은) 행렬로 나누는 것입니다. 이렇게 하면 훨씬 더 적은 수의 숫자를 저장할 수 있습니다. 다음 예제를 통해 이를 설명해 보겠습니다.

반응형


모델에 행이 1,000개, 열이 2,000개인 행렬이 있다고 가정해 보겠습니다. 모델 파일에 저장해야 할 숫자는 2,000,000개(1,000 x 2,000)입니다. LoRA는 이 행렬을 1,000×2 행렬과 2×2,000 행렬로 세분화합니다. 이는 333배나 적은 6,000개(1,000 x 2 + 2 x 2,000)의 숫자에 불과합니다. 이것이 바로 LoRA 파일이 훨씬 작은 이유입니다.

 

여기서 핵심은 기존의 큰 데이터(모델)를 랭크, 즉 순위가 낮은 행렬로 쪼개서 효율성을 극대화 한다는 것에 포인트가 있습니다. 그러면 모델의 특이점은 가져와서 어느정도 모델 성능은 유지하고 용량도 획기적으로 줄게 되는 것이죠.

 

 

이 예에서 행렬의 순위는 2입니다. 원래 차원보다 훨씬 낮기 때문에 낮은 순위 행렬이라고 합니다. 순위는 1까지 낮출 수 있습니다.

 

LoRA는 어떻게 사용하나요?

automatic1111의 webui를 사용하여 LoRA를 사용해보도록 하겠습니다.

 

먼저 WebUI를 실행해주시구요.

설치가 안되어있으신 분들은 아래 링크 참고 부탁드립니다.

2023.03.02 - [노코딩AI] - 실사 사진 생성을 위한 Stable Diffusion WebUI를 윈도우 PC에 설치하는 방법

2023.03.05 - [노코딩AI] - 애니 사진 생성을 위한 Stable Diffusion WebUI를 리눅스 우분투 PC에 설치하는 방법

 

먼저 Lora에 사용하실 모델을 WebUI 설치한 Lora 폴더에 옮깁니다.

저는 Korean-doll-likeness.safetensors를 받아보겠습니다.

다운 받을 수 있는 링크는 아래에 공유드려요.

https://huggingface.co/AnonPerson/ChilloutMix/tree/main

 

AnonPerson/ChilloutMix at main

Detected Pickle imports (3) "collections.OrderedDict", "torch._utils._rebuild_tensor_v2", "torch.FloatStorage" What is a pickle import?

huggingface.co

다운 받으시고, Lora Model 폴더에 아래와 같이 넣어주세요.

 

그리고, WebUI를 실행합니다.

WebUI가 설치 안되어 있으신 분은 아래 링크 참고해주세요.

2023.03.02 - [노코딩AI] - 실사 사진 생성을 위한 Stable Diffusion WebUI를 윈도우 PC에 설치하는 방법

 

WebUI에서 text2img 탭으로 들어가시구요.

tex2img 탭에서 오른쪽 Generate 밑에 화투처럼 생긴 아이콘이 있습니다.

아이콘에 마우스를 대보면, Show extra networks라고 나오는데요.

클릭해주면, 아래와 같이 Textual Inversion, Hypernetworks, Checkpoints, Lora와 같은 탭이 생성됩니다.

 

저희가 넣은 Korean-doll-likeness 모델이 들어가 있는 걸 보실 수 있구요.

NoPREVIEW라고 되어있는 그 아이콘을 클릭하시게 되면,

상단 Prompt에 <lora:Korean-doll-likeness:1>이라는 문구가 추가됩니다.

 

이게 Mix하는 방법이에요.

 

저는 WebUI 기본모델은 chilloutmix_NiPruneFp32Fix.safetensors를 썼구요.

 

없으신 분들은 아래 링크에서 받아주시구요.

https://huggingface.co/SakerLy/chilloutmix_NiPrunedFp32Fix/tree/main

1

 

결과물을 보겠습니다.

항상 수위 조절이 잘 안되서 난감할 때가 있네요...

기존 ChilloutMix와 Koreandoll 모델이 결합해서 나온 결과네요.

잘 나온 것 같습니다.

 

아래는 파라미터 값입니다.

<lora:Korean-doll-likeness:1>, (photorealistic:1.4), best quality, ultra high res, 1woman, oversized jarket, white shirt, cute, (Kpop idol), ((puffy eyes)), looking at viewer, full body
Negative prompt: paintings, sketchs, (worst quality:2), (low quality:2), (normal quality:2), lowres, normal quality, ((monochrome), ((grayscale)), skin spots, acnes, skin blemishes, age spot
Steps: 28, Sampler: DPM++ SDE Karras, CFG scale: 7, Seed: 4102275570, Size: 512x768, Model hash: a757fe8b3d, Model: Chilloutmix

 

오늘은 LoRA에 대해서 알아보았습니다.

2023.04.03 - [노코딩AI/Stable Diffusion] - 스테이블 디퓨전 Web UI Colab으로 5분 안에 설치하는 방법

 

스테이블 디퓨전 Web UI Colab으로 5분 안에 설치하는 방법

GPU 없는 노트북으로 WebUI를 구현하는 방법에 대해 알려드리겠습니다. 구글에 Automatic1111이라고 검색하면 스테이블 디퓨전 Web UI가 나옵니다. 접속하시면 아래와 같은 화면이 나오실 건데요. Install

nomadlabs.tistory.com

 

728x90
반응형

댓글