저는 조금 특이한 것을 시도해 보았습니다. Anima가 Krea2 Turbo가 이미지를 생성하는 방식을 모방하도록 가르치는 LoRA를 학습시켰습니다. 이는 일종의 지식 증류(knowledge distillation) 형태로 볼 수 있습니다. LoRA: https://civitai.red/models/2554528/animaloralab 이 페이지에 훈련 코드도 공유했습니다. 여기에는 RunPod API를 사용하여 Krea2 지식 증류, 이후 CFG 및 단계 증류(step distillation)를 자동화하는 AI 지원 워크플로우의 예시가 포함되어 있습니다. 코드는 즉시 실행할 준비가 되어 있지는 않습니다. 전체 폴더를 AI 코딩 어시스턴트에게 제공하여 프로젝트 분석을 요청하고, 이를 바탕으로 사용자 환경과 목표에 맞게 코드와 함께 작업하는 것을 추천합니다. 심지어 제 버전보다 더 나은 것을 구축할 수도 있을 것입니다.
LoRA 사용 방법
메인 LoRA는 이미 CFG 1 / 12단계 증류를 거쳤으므로, Anima Base v01: https://civitai.red/models/2458426/anima?modelVersionId=2945208에 적용하십시오. 다른 병합된 모델들은 테스트하지 않았지만, 이 LoRA는 비교적 간단하기 때문에 잘 작동할 수도 있습니다. 다른 Turbo 모델로 시도하려면 한 가지 가능한 접근 방식은 제 LoRA를 Anima Base v01에 먼저 적용한 다음, ComfyUI의 Simple Merge를 사용하여 약 0.5 강도로 결과를 병합하는 것입니다. 이것이 작동할 수는 있지만, 저는 검증하지 않았습니다. 또는, 백업 ZIP에는 단계 증류가 없는 Krea2 지식 증류를 수행하는 버전도 포함되어 있습니다. 이 버전은 일반적인 LoRA처럼 작동하며 CFG 4.5 / 30단계와 같은 설정으로 사용할 수 있습니다.
무엇을 학습시켰나요?
이 아이디어는 Anima와 Krea2가 동일한 VAE를 사용한다는 사실에서 비롯되었습니다. 저는 Anima에게 Krea2가 이미지를 생성하는 방식을 보여주는 것이 더 나은 결과를 얻는 데 도움이 될지 궁금했습니다. 저는 AI 어시스턴트와 협력하여 훈련 코드를 개발하고, 실험을 실행했으며, 상당히 유망한 결과를 얻었습니다. 그래서 공유하는 것입니다. 분명히 하자면, 이것을 "지식 증류"라고 부르는 것은 다소 거창하게 들릴 수 있습니다. Anima가 Krea2의 모든 지식이나 능력을 습득한 것은 아닙니다.
이는 마치 Anima에게 Krea2의 그림 과정을 모방하도록 가르치는 것과 같습니다. 훈련에는 두 가지 주요 부분이 있습니다: 1. Krea2의 생성 과정 학습. Anima는 Krea2가 사용하는 생성 과정을 보여줍니다. 목표는 단순히 최종 이미지가 어떻게 보이는지를 가르치는 것이 아니라, Krea2가 이미지를 어떻게 접근하고 구성하는지 Anima에게 가르치는 것입니다. 2. Krea2가 이미지를 개선하는 방법 학습. Anima가 이미지 생성을 시작하면, Krea2는 중간 잠재 상태(intermediate latent state)에서 인계받아 Hires Fix를 사용하여 이를 정교하게 다듬습니다. 이는 미술 수업과 같다고 생각할 수 있습니다: 학생이 러프 스케치를 그리고, 강사가 그것을 직접 교정하고 개선하는 것입니다. 학생은 강사가 붓놀림을 어떻게 조정하고 실수를 고치는지 볼 수 있습니다. 마찬가지로 Krea2는 Anima가 잘못 처리할 수 있는 세부 사항을 어떻게 수정해야 하는지 시연할 수 있습니다. 저는 이 두 가지 행동 모두를 LoRA에 훈련시켰습니다.
훈련 데이터 및 결과. 이 실험의 규모는 놀라울 정도로 작았습니다. 데이터셋은 태그와 자연어의 혼합을 포함하는 캡션 1,200개로 구성되었습니다. Anima와 Krea2 모두 동일한 캡션을 받아 훈련 프로세스를 위한 이미지를 생성했습니다. 이렇게 작은 규모에서도 저는 지식 증류(knowledge distillation)뿐만 아니라 CFG 및 단계 증류(step distillation)를 수행할 수 있었습니다.
실험은 제가 예상했던 어려움보다 훨씬 덜 까다로웠으며, 개인이 달성할 수 있는 범위 내에 머물러 있습니다. 데이터셋은 다음 두 가지 유형의 이미지 간에 균형을 이루었습니다: 실제 사진에서 파생된 캡션 600개 / 애니메이션 이미지에서 파생된 캡션 600개. 이는 LoRA가 두 가지 유형의 이미지를 모두 처리할 수 있는 능력을 제공해야 합니다.
하지만 이것이 Anima가 이제 Krea2의 포토리얼리즘이나 세부 수준과 일치할 수 있다는 것을 의미하지는 않습니다. 주요 개선점은 전반적인 시각적 접근 방식과 느낌에 있습니다. 저는 이것이 반실사(semi-realistic), 2.5D 스타일 캐릭터에 가장 유용할 것이라고 예상합니다. 저의 원래 목표 중 하나는 특히 배경과 해부학적 정확성 등 Anima의 약한 부분을 개선하는 것이었습니다. 이 실험은 그 부분에서 어느 정도의 이점을 보여주었다고 생각합니다.
Krea2는 배경 생성을 위한 교사(teacher) 역할을 하므로, Anima가 Krea2가 제공할 수 있는 것보다 더 많은 디테일을 학습하기는 어려울 것입니다. 하지만 결과물은 여전히 Anima의 원래 출력물보다 나을 수 있습니다. 몇 가지 한계점들을 언급할 가치가 있습니다.
- 사진 같은 이미지 (Photorealistic images): 일부 미세한 디테일이 손실됩니다. 애니메이션 이미지는 일반적으로 훨씬 잘 유지되는 반면, 사실적인 이미지는 전반적인 모습과 분위기를 포착하는 데 중점을 둡니다.
- 배경 노이즈 (Background noise): 때때로 배경에서 노이즈가 감지될 수 있습니다. 이는 Krea2 Turbo로부터 상속된 특성 중 하나인 것으로 보입니다.
- 애니메이션 편향성 (Anime bias): 이 LoRA는 애니메이션 쪽으로 다소 치우쳐 있습니다. 데이터셋이 사진과 애니메이션 이미지로 균등하게 분할되었기 때문에, Anima 자체가 이미 애니메이션 지향적이라는 점을 고려하면 그럴 만한 결과일 것입니다.
개선할 여지 (Room for improvement)
제 LoRA가 반드시 최상의 결과는 아닙니다. 데이터셋과 그 구성이 결과물에 상당한 영향을 미치며, 저는 이 실험을 최적의 솔루션보다는 기준점(baseline)으로 간주하고 싶습니다. 예를 들어, 사진에서 파생된 자연어 캡션(natural-language captions)의 비율을 더 많이 사용한다면, 보다 사실주의 지향적인 증류(distillation)를 만들어낼 수 있을 것입니다.
또한 저는 훈련 프로세스를 개발할 때 AI 도움에 상당히 의존했기 때문에, 저의 이해 중 일부는 완벽하지 않을 수 있습니다. 그럼에도 불구하고, 이 코드와 전체적인 접근 방식이 여러분 자신의 실험을 위한 참고 자료로 유용하기를 바랍니다. 이를 가지고 무엇을 만들어낼 수 있을지 매우 궁금합니다.
submitted by /u/Honest_Concert_6473 [link] [comments]