GitHub - ldj7672/SDXL-LoRA-Fine-tuning-for-Ghibli-Style: 이 프로젝트는 Stable Diffusion XL (SDXL) 모델을 LoRA로 fine-tuning하여 지브리 스타일의 이미지를 생성하는 실험을 진행합니다.
핵심 포인트
- 1이 프로젝트는 제한된 리소스와 100장의 데이터셋으로 Stable Diffusion XL (SDXL) 모델을 LoRA fine-tuning하여 지브리 스타일 이미지를 생성하는 실험을 진행했습니다.
- 2실험 결과, LoRA의 한계에도 불구하고 지브리 스타일의 색감, 선의 흐름, 분위기 등이 성공적으로 반영되었으며, LoRA rank 및 alpha 값 조합에 따른 결과도 함께 제시됩니다.
- 3본 레포지토리는 LoRA fine-tuning 학습, 추론 스크립트와 Hugging Face 연동 방법을 제공하며, 이는 학습 및 연구 목적의 참고용으로 활용될 수 있습니다.
이 프로젝트는 Stable Diffusion XL (SDXL) 모델을 LoRA (Low-Rank Adaptation) 방식으로 fine-tuning하여 지브리 스타일의 이미지를 생성하는 실험을 다룹니다. 제한된 컴퓨팅 리소스와 100장의 작은 데이터셋으로 진행되었음에도 불구하고, 다양한 설정에 따른 실험 결과를 공유하여 관련 연구 개발자들에게 실질적인 도움이 되고자 합니다.
핵심 방법론: LoRA (Low-Rank Adaptation)
LoRA는 pre-trained model의 가중치 행렬에 저차원의 trainable matrices를 추가하여 fine-tuning하는 효율적인 방법론입니다. 일반적인 fine-tuning 방식과 달리 pre-trained weights를 고정하고, 와 같은 원래 가중치 행렬의 업데이트 를 두 개의 더 작은 행렬 와 의 곱 로 근사합니다. 여기서 은 LoRA Rank로, 를 만족하는 낮은 차원을 가집니다. 학습 시에는 와 행렬만 업데이트되므로, 전체 모델 파라미터를 업데이트하는 것보다 훨씬 적은 수의 파라미터만 학습하게 되어 컴퓨팅 리소스 소모를 크게 줄이고, fine-tuning된 모델의 크기도 작게 유지할 수 있습니다. LoRA Alpha 파라미터는 LoRA 업데이트의 스케일링 팩터로 사용되어, 업데이트의 강도에 영향을 미칩니다. 본 실험에서는 LoRA Rank와 LoRA Alpha의 다양한 조합이 이미지 생성 결과에 미치는 영향을 탐구했습니다.
실험 설정
- 모델: Stable Diffusion XL Base 1.0 모델을 베이스로 사용했습니다.
- 데이터셋: 웹에서 수집한 지브리 스타일 이미지 100장으로 구성되었습니다. 각 이미지에 대한 텍스트 캡션은 Google의 Gemini 모델을 사용하여
utils/create_text_caption.py스크립트를 통해 자동 생성되었습니다. - Fine-tuning 방법: LoRA (Low-Rank Adaptation) 방식이 적용되었습니다.
- 실험 변수:
- LoRA Rank: 4, 8, 16
- LoRA Alpha: 4, 8, 16, 32
- Learning Rate: 1e-4
- 학습 파라미터 예시:
실험 결과
- 베이스 모델과 LoRA 모델 비교: LoRA fine-tuning을 거친 모델은 100장이라는 적은 데이터셋으로도 지브리 스타일의 특정 특성을 성공적으로 반영했습니다. 특히 색감, 선의 흐름, 그리고 전체적인 분위기에서 지브리 애니메이션 특유의 감성이 잘 표현되었습니다. 그러나 LoRA 방식의 한계로 인해, 인물이나 객체의 형태가 무너지는 경우가 일부 발생했습니다.
- LoRA 파라미터 실험 결과: 다양한 LoRA Rank와 LoRA Alpha 값 조합에 따른 생성 이미지의 변화를 분석했습니다. 이 실험은 특정 스타일을 효과적으로 학습하기 위한 최적의 LoRA 파라미터 조합을 탐색하는 데 기여했습니다.
제한 사항
- 제한된 컴퓨팅 리소스로 인해 충분한 학습이 이루어지지 않았을 가능성이 있습니다.
- 매우 작은 데이터셋(100장)을 사용했기 때문에 모델의 일반화 (generalization) 성능이 제한적일 수 있습니다.
- 본 레포지토리의 내용과 실험 결과는 학습 및 연구 목적의 참고용으로만 활용되어야 합니다.
프로젝트 구조 및 사용법
프로젝트는 train_sdxl_lora.py (학습), inference_sdxl_ghibli.py (추론), run_experiments.sh (실험 실행), hf/ (Hugging Face 관련 스크립트) 등의 스크립트로 구성되어 있습니다. 사용자는 제공된 스크립트를 통해 모델 학습 및 이미지 추론을 실행할 수 있으며, Hugging Face API를 통한 추론도 지원합니다. Fine-tuning된 LoRA 모델은 Hugging Face 플랫폼에서 접근 가능합니다.