안녕하세요. 9기 HuggingFace 세션에 참여 중인 너순 입니다.
이번 포스팅에서는 지금까지 분석해 온 InstantID 모델을 LoRA와 비교하는 내용을 다뤄 보려고 합니다.
InstantID 프로젝트 페이지를 보면 인물 이미지 생성 시 기존에 주로 사용되던 LoRA 대비 더 좋다는 내용이 언급되어 있습니다.
먼저 프로세스 측면에서 보면 별도 학습을 통한 모델을 생성하지 않아도 실시간으로 이미지를 생성할 수 있는 InstantID가 우위인 점은 명확해 보입니다.
그런데 실제 생성되는 이미지에 있어서는 어떠한 차이가 있을지 궁금증이 들더군요.
그래서 몇 가지 테스트를 해보기로 했습니다.
본격적인 테스트에 앞서 먼저 LoRA에 대한 설명을 하고 넘어가야 할 것 같습니다.
LoRA (Low Rank Adaptation)
우선 ChatGPT에게 물어 봤습니다.
요약해 보면 대규모 모델의 미세 조정을 위해 소규모의 추가 파라미터를 도입하는 기법인 것 같습니다.
글만 읽어서는 별다른 감흥이 오지 않으실 것 같아서 실제 LoRA를 만들어 적용해 보았습니다.
학습할 인물 이미지를 수집하고 가로 세로 1024px 사이즈로 편집 합니다.
이후 이미지에서 kohya(https://github.com/bmaltais/kohya_ss)를 사용하여 캡션을 추출합니다.
학습할 이미지와 캡션이 준비 되었으니 OneTrainer(https://github.com/Nerogar/OneTrainer)를 실행합니다.
LoRA 모델 학습을 진행합니다.
정사각형 1024px 사이즈로 편집한 10장의 인물 사진으로 Epochs 100회 진행하였습니다.
학습에는 10분 정도 소요 (GTX 4070 기준) 되었으며 학습의 결과물로 160MB의 safetensor 파일이 생성 되었습니다.
만들어진 LoRA를 적용하면 아래와 같이 인물의 Identity가 반영된 이미지를 제작할 수 있습니다.
LoRA가 Face Swap에만 사용되는 것은 아닙니다.
이미지를 학습해서 유사한 스타일의 새로운 작업을 만드는 것도 가능합니다.
아래의 이미지는 제 개인 작업으로 왼쪽에 있는 작품을 학습 시켜 LoRA를 만든 후 생성 AI를 통해서 오른쪽의 작품을 만들었습니다.
전체 작업은 아래 링크에서 보실 수 있습니다.
LoRA와 InstantID 비교 분석
비교를 위한 원본 이미지를 한 장 선정하고 ChatGPT를 통해 이미지에서 Description을 추출합니다.
먼저 Stable Diffusion에서 이미지를 생성해 봅니다.
추출된 Description을 Prompt에 입력하여 T2I(Text 2 Image) 모드에서 이미지를 생성 했습니다.
(인물의 포즈를 고정하기 위해 Canny를 0.5 weight로 적용하였습니다)
이후 이전에 이미지 학습을 통해 생성한 LoRA를 적용해 줍니다.
LoRA 적용 전과 후의 이미지 입니다.
이번에는 InstantID에서 이미지를 생성해 보았습니다.
동일한 Description으로 Prompt를 적용하고 Canny를 0.5 weight로 적용하였습니다.
비교를 위해 이미지들을 모아 보았습니다.
각각의 장단점을 간단하게 표로 정리해 봤습니다.
결론을 요약하면 InstantID가 LoRA 대비 결과물의 선명도는 상대적으로 떨어지나 별도의 LoRA 모델을 생성하는데 들어가는 시간과 자원을 고려 한다면 충분히 경쟁력을 갖춘 좋은 이미지 생성 모델이라는 생각이 들었습니다.
이상으로 LoRA와 InstantID의 비교 포스팅을 마치겠습니다.
#9기HuggingFace #huggingface #Text-to-Image #InstantID