GitHub - ldj7672/SDXL-LoRA-Fine-tuning-for-Ghibli-Style: 이 프로젝트는 Stable Diffusion XL (SDXL) 모델을 LoRA로 fine-tuning하여 지브리 스타일의 이미지를 생성하는 실험을 진행합니다.
요약
상세 내용
핵심 방법론: 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
* 학습 파라미터 예시:
실험 결과
제한 사항
* 제한된 컴퓨팅 리소스로 인해 충분한 학습이 이루어지지 않았을 가능성이 있습니다.
* 매우 작은 데이터셋(100장)을 사용했기 때문에 모델의 일반화 (generalization) 성능이 제한적일 수 있습니다.
* 본 레포지토리의 내용과 실험 결과는 학습 및 연구 목적의 참고용으로만 활용되어야 합니다.
프로젝트 구조 및 사용법
프로젝트는 train_sdxl_lora.py (학습), inference_sdxl_ghibli.py (추론), run_experiments.sh (실험 실행), hf/ (Hugging Face 관련 스크립트) 등의 스크립트로 구성되어 있습니다. 사용자는 제공된 스크립트를 통해 모델 학습 및 이미지 추론을 실행할 수 있으며, Hugging Face API를 통한 추론도 지원합니다. Fine-tuning된 LoRA 모델은 Hugging Face 플랫폼에서 접근 가능합니다.