GitHub - ldj7672/SDXL-LoRA-Fine-tuning-for-Ghibli-Style: 이 프로젝트는 Stable Diffusion XL (SDXL) 모델을 LoRA로 fine-tuning하여 지브리 스타일의 이미지를 생성하는 실험을 진행합니다.
Service

GitHub - ldj7672/SDXL-LoRA-Fine-tuning-for-Ghibli-Style: 이 프로젝트는 Stable Diffusion XL (SDXL) 모델을 LoRA로 fine-tuning하여 지브리 스타일의 이미지를 생성하는 실험을 진행합니다.

ldj7672
2025.06.08
·GitHub·by Anonymous
#SDXL#LoRA#Fine-tuning#Ghibli Style#Image Generation

핵심 포인트

  • 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를 고정하고, W0∈Rd×kW_0 \in \mathbb{R}^{d \times k}와 같은 원래 가중치 행렬의 업데이트 ΔW\Delta W를 두 개의 더 작은 행렬 B∈Rd×rB \in \mathbb{R}^{d \times r}와 A∈Rr×kA \in \mathbb{R}^{r \times k}의 곱 BABA로 근사합니다. 여기서 rr은 LoRA Rank로, r≪min⁡(d,k)r \ll \min(d,k)를 만족하는 낮은 차원을 가집니다. 학습 시에는 AA와 BB 행렬만 업데이트되므로, 전체 모델 파라미터를 업데이트하는 것보다 훨씬 적은 수의 파라미터만 학습하게 되어 컴퓨팅 리소스 소모를 크게 줄이고, 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
  • 학습 파라미터 예시:
pythontrainsdxllora.py−−pretrainedmodelnameorpath="stabilityai/stable−diffusion−xl−base−1.0"−−datasettype="ghibli"−−datasetdir="datasetghibli"−−outputdir="outputghibli"−−resolution=512−−trainbatchsize=1−−numtrainepochs=100−−learningrate=1e−4−−lorarank=4−−loraalpha=8.0python train_sdxl_lora.py --pretrained_model_name_or_path="stabilityai/stable-diffusion-xl-base-1.0" --dataset_type="ghibli" --dataset_dir="dataset_ghibli" --output_dir="output_ghibli" --resolution=512 --train_batch_size=1 --num_train_epochs=100 --learning_rate=1e-4 --lora_rank=4 --lora_alpha=8.0

실험 결과

  1. 베이스 모델과 LoRA 모델 비교: LoRA fine-tuning을 거친 모델은 100장이라는 적은 데이터셋으로도 지브리 스타일의 특정 특성을 성공적으로 반영했습니다. 특히 색감, 선의 흐름, 그리고 전체적인 분위기에서 지브리 애니메이션 특유의 감성이 잘 표현되었습니다. 그러나 LoRA 방식의 한계로 인해, 인물이나 객체의 형태가 무너지는 경우가 일부 발생했습니다.
  2. 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 플랫폼에서 접근 가능합니다.