AI 이미지/AI 기타

SD-Forge에서 Flux Lora 사용법

하늘이푸른오늘 2024. 12. 26. 17:17

LoRA 모델은 Flux AI 체크포인트 모델을 보완해주기 위한 중요한 도구입니다. LoRA 모델을 사용하면 Flux가 학습하지 않은 스타일이나 특정한 얼굴을 담은 이미지를 생성할 수 있습니다.

이 글에서는 SD-Forge (Stable Diffusion Forge) 웹UI에서 Flux를 LoRA와 함께 사용하는 법을 설명합니다. 또한 이를 통해 여러  LoRA 모델을 사용해 여러 이미지간에 비슷한 얼굴을 생성하는 방법도 알아보겠습니다.

소프트웨어

Flux AI와 LoRA를 사용하는 가장 쉬운 방법은 SD Forge 웹UI를 사용하는 것입니다. SD-Forge는 Flux-AI를 매우 잘 지원합니다.

Forge는 AUTOMATIC1111으로부터 파생된 웹 UI로 사용법은 비슷하지만, 콘트롤넷 등의 필수 확장을 내장하였고, 속도가 빠른 것이 특징입니다. SD Forge 설치 방법은 이 글을 읽어보시기 바랍니다. 사용법은 AUTOMATIC1111 사용법 과 거의 비슷하니 참고하세요.

Flux AI 용 LoRA 모델 사용법

LoRA 모델은 기본적으로 체크포인트 모델을 약간 변화시켜 새로운 스타일이나 캐릭터를 만들어내는 역할을 합니다. LoRA 모델은 단독으로 사용할 수 없고, 반드시 체크포인트 모델과 함께 사용해야 합니다.

1단계: Forge 설치 또는 업데이트

먼저 Forge를 최신 버전으로 업데이트 해야 합니다. 그래도 LoRA 가 효과가 없을 경우, Forge를 새로 설치해야 할 수 있습니다. CUDA 라이브러리와 PyTorch 버전이 갱신되었기 때문입니다.

Forge 업데이트

Forge가 Flux를 지원하기 시작한 것은 아주 최근의 일입니다. Forge를 얼마동안 사용하지 않았다면 사용하기 전에 미리 업데이트해야 합니다. 

Forge 설치 폴더인 webui-forge-cuXXX-torchXXX 로 들어가서 update.bat를 더블클릭하면 됩니다.

Forge 재설치

SD-Forge 설치 방법에 따라 설치하시면 됩니다. 이때 기존의 Forge 를 유지하려면, 해당 폴더를 다른 위치로 옮겨두시면 됩니다. 

저는 현재 추천 버전인 Forge with CUDA 12.1 + Pytorch 2.3.1 을 사용합니다. Flux를 LoRA와 함께 사용하려면 반드시 Forge를 최신 버전으로 업데이트하는 것이 좋습니다.

2단계: LoRA 모델 다운로드

Flux 용 LoRA 모델은 Civitai에서 다운로드 받을 수 있습니다. 하지만, Civitai에는 아주 다양한 종류의 모델이 올려져 있기 때문에 Flux 용 LoRA 모델만 보이도록 필터링이 필요합니다.

1. Civitai.com 윗쪽 메뉴에서 [Model]을 눌러 Models 페이지로 들어갑니다.
2. 우상단에 있는 Filter  아이콘을 클릭하고 아래와 같이 선택합니다.

  • Model Types : LoRA
  • Base model : Flux 1.D (D는 dev 모델이고, S는 Schnell 모델입니다.)

이제 원하는 모델을 다운로드 받고, webui/models/LoRA에 넣어주면 됩니다. 참고로, A1111과 모델을 공유할 경우, A1111의 LoRA 폴더에 넣어주어도 됩니다.

참고1: AUTOMATIC1111의 Civitai Helper 확장을 사용하면 LoRA 파일을 자동으로 올바른 폴더에 다운로드받을 수 있을 뿐 아니라, 모델에 대한 커버 이미지도 함께 설치되므로 편리하게 사용할 수 있습니다(단, 현재 A1111은 Flux를 지원하지 않습니다)

참고2: Flux라는 서브 폴더를 만들어 Flux용 LoRA를 넣어두면 편립합니다. 

이 글에서는 아래와 같은 두가지 LoRA 파일을 사용합니다. 참고하세요.

3단계: Forge UI에서 LoRA 모델 사용하는 밥업

LoRA없이 이미지 생성하기

먼저 LoRA를 사용하지 않고 이미지를 생성해보겠습니다. 아래는 설정입니다.

  • UI: flux
  • 체크포인트: flux1-dev-bnb-nf4-v2.safetensors (메모리 여유가 많다면 flux1-dev-fp8.safetensors를 써도 됩니다.)
  • Diffusion in Low Bits: Automatic
  • 프롬프트: Emma Watson walking on city street, gray suit, black short skirt, high heels

이 글에서는 동일한 이미지를 얻기 위해 Seed를 아무 값이나 고정(예: 1234)시켜서 생성합니다.

마지막으로 [Generate]를 선택하면 이미지가 생성됩니다.

보시는 것처럼, Flux의 경우에는 유명인의 이름을 프롬프트에 넣어도 인식되지 않습니다.

LoRA  추가

LoRA 탭을 선택하고, 원하는  LoRA를 클릭하면 프롬프트에 자동 추가됩니다.

아래와 같이요.

다시 [Generate] 버튼을 눌러 이미지를 생성합니다. 그런데.... 아직 엠마 왓슨이 아니네요. ㅠㅠ

문제 해결

LoRA가 적용되려면 LoRA 모델이 Flux의 UNet 모델에 추가되어야 합니다. NF4 또는 FP8과 같은 비트수를 낮춘 체크포인트 파일을 사용할 경우, LoRA 모델을 먼저 비트 수를 낮추도록 수정되어야 합니다. 그런데, PC의 메모리가 부족할 경우 실패할 수 있습니다.

위의 예처럼 LoRA 가 적용되지 않는다면 LoRA모델이 수정되지 않았기 때문입니다. 이 경우, 아래처럼 Diffusion in Low Bits를 Automatic(fp16 LoRA)로 바꿔주면 됩니다.

아래는 이렇게 설정을 바꾸고 새로 생성한 이미지입니다. 엠마왓슨이 나타났네요. ㅎㅎ

유명인 얼굴을 융합해 얼굴을 일관성 있게 유지하기

스테이블 디퓨전에서는 유명인 이름을 키워드로 사용해서 일관성있는 얼굴을 유지할 수 있습니다. 하지만 Flux는 유명인을 인식하지 못합니다. 따라서 이 방법은 사용할 수 없고, 두개 이상의 LoRA를 사용해 해결해야 합니다.

예를 들어, 아래는 엠마 왓슨과 스칼렛 요한의 얼굴을 섞어서 새로운 얼굴을 생성한 예입니다.

프롬프트: Emma Watson walking on city street, gray suit, black short skirt, high heels  <lora:Emma_Watson_V2_Flux:1> <lora:scarlett_johansson_flux_lora_v1:1.2>

위의 얼굴엔 스칼렛 요한의 얼굴이 더 두드러지게 나타나는데, 원하면 다른 사람을 더 넣어서 얼굴을 섞어줄 수도 있습니다. 여기에서는 LoRA의 가중치 합이 1이 되도록 조정했습니다. 그래서 그런지 더 잘 나온 것 같네요. Milla Jovovich LoRA는 여기에서 받으시면 됩니다.

프롬프트: Emma Watson walking on city street, gray suit, black short skirt, high heels <lora:Emma_Watson_V2_Flux:0.3> <lora:Milla_Jovovich_Flux:0.4> <lora:scarlett_johansson_flux_lora_v1:0.3>

왼쪽은 똑같이 거리를 걷는 모습, 오른쪽은 카페에서 커피를 마시는 모습입니다. 보시는 것처럼, 양쪽 얼굴이 서로 비슷하게 잘 나왔네요.

이상입니다.

이 글은 stable-diffusion-art.com의 글을 번역하면서 제 마음대로 수정, 추가해 작성한 글입니다.