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

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

요약

이 프로젝트는 제한된 리소스와 100장의 데이터셋으로 Stable Diffusion XL (SDXL) 모델을 LoRA fine-tuning하여 지브리 스타일 이미지를 생성하는 실험을 진행했습니다.
실험 결과, LoRA의 한계에도 불구하고 지브리 스타일의 색감, 선의 흐름, 분위기 등이 성공적으로 반영되었으며, LoRA rank 및 alpha 값 조합에 따른 결과도 함께 제시됩니다.
본 레포지토리는 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를 고정하고, W0Rd×kW_0 \in \mathbb{R}^{d \times k}와 같은 원래 가중치 행렬의 업데이트 ΔW\Delta W를 두 개의 더 작은 행렬 BRd×rB \in \mathbb{R}^{d \times r}ARr×kA \in \mathbb{R}^{r \times k}의 곱 BABA로 근사합니다. 여기서 rr은 LoRA Rank로, rmin(d,k)r \ll \min(d,k)를 만족하는 낮은 차원을 가집니다. 학습 시에는 AABB 행렬만 업데이트되므로, 전체 모델 파라미터를 업데이트하는 것보다 훨씬 적은 수의 파라미터만 학습하게 되어 컴퓨팅 리소스 소모를 크게 줄이고, 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.pypretrainedmodelnameorpath="stabilityai/stablediffusionxlbase1.0"datasettype="ghibli"datasetdir="datasetghibli"outputdir="outputghibli"resolution=512trainbatchsize=1numtrainepochs=100learningrate=1e4lorarank=4loraalpha=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

실험 결과

  • 베이스 모델과 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 플랫폼에서 접근 가능합니다.

    원본 보기
    GitHub
    Shared by Anonymous