본문 바로가기

AI

생성형 AI의 일관성을 위한 사전 자료조사

728x90

잠재 일관성 모델(Latent Consistency Models, LCMs)은 이미지나 텍스트와 같은 데이터를 처리할 때 사용되는 딥러닝 모델의 한 종류입니다. 전통적인 딥러닝 모델이 반복적인 과정을 통해 점차적으로 결과를 개선해 나가는 반면, LCM은 데이터의 잠재적인 특성을 활용하여 한 번의 계산으로 높은 품질의 결과를 얻을 수 있는 것이 특징입니다.

LCM의 핵심 아이디어는 데이터를 잠재 공간(latent space)에 매핑하고, 이 공간에서의 일관성을 유지하면서 원하는 변환을 수행하는 것입니다. 이 방식은 특히 이미지나 텍스트 생성, 스타일 변환, 데이터 복원과 같은 분야에서 유용하게 적용될 수 있습니다.

LCM의 주요 구성 요소:

  • 잠재 공간(Latent Space): 데이터의 핵심적인 특성을 압축하여 표현한 고차원의 벡터 공간입니다. 이 공간에서의 작은 변화는 원본 데이터에서 의미 있는 변화로 해석됩니다.
  • 일관성 유지(Consistency Keeping): 잠재 공간에서의 변환은 원본 데이터의 일관성을 유지해야 합니다. 예를 들어, 이미지의 스타일을 변환할 때 원본 이미지의 구조는 그대로 유지하는 것입니다.
  • 단일 단계 변환(Single-step Transformation): LCM은 데이터를 잠재 공간에 매핑한 뒤, 원하는 변환을 한 번에 수행합니다. 이는 반복적인 계산 과정 없이 빠르게 결과를 얻을 수 있게 해줍니다.

LCM의 장점:

  • 효율성: 반복적인 과정 없이 한 번의 계산으로 원하는 결과를 얻을 수 있어 계산 비용이 낮습니다.
  • 유연성: 다양한 유형의 데이터와 태스크에 적용할 수 있으며, 맞춤형 변환을 쉽게 구현할 수 있습니다.
  • 고품질: 잠재 공간에서의 일관성 유지를 통해 원본 데이터의 중요한 특성을 보존하면서도 고품질의 결과물을 생성할 수 있습니다.

LCM의 활용 예:

  • 이미지 생성 및 복원: 이미지의 노이즈를 제거하거나, 누락된 부분을 복원하는 작업에서 LCM을 사용할 수 있습니다.
  • 스타일 변환: 이미지나 텍스트의 스타일을 변환하는 데 LCM을 적용하여, 원본의 일관성을 유지하면서 새로운 스타일을 적용할 수 있습니다.
  • 데이터 생성: 잠재 공간에서의 샘플링을 통해 새로운 이미지나 텍스트를 생성하는 과정에 LCM을 활용할 수 있습니다.

LCM은 이러한 장점들로 인해 다양한 분야에서 연구 및 응용이 활발히 진행되고 있으며, 앞으로도 많은 발전이 기대되는 기술입니다.

 

 

 

나이가 바뀌는 일관성 있는 캐릭터 - 캐릭터 참고 - 미드저니

캐릭터 참조 기능을 사용하면 일관성 있는 캐릭터의 시대를 변화시키는 데도 도움이 될 수 있다.

  • -cw 인덱스를 0 ( --cw 0)으로 설정하면 문자 참조는 연령 프롬프트와 결합된 얼굴 특징에만 초점을 맞추게 됩니다.

프롬프트:

<캐릭터> <나이> --cw 0 --cref URL캐릭터

예:

아기, 5살 --cw 0 --cref URL캐릭터

10대, 10세 --cw 0 --cref URL캐릭터

25세 어린 소년 --cw 0 --cref URL캐릭터

팁: --cref 파라미터를 사용할 때, 다양한 연령대의 여러 캐릭터 이미지 URL을 결합하여 최상의 일관성을 유지할 수 있습니다. 예: --cref URLcharacter1 URLcharacter2

일러스트레이터의 디자인 페이지 레이아웃

 

만화/애니를 만들기 위한 미드저니의 흔한 명령

현재 미드저니는 완전한 만화를 만들 수 있도록 거의 모든 명령어/기능을 제공하고 있습니다.

필요한 명령어/기능이 있습니다:

1/ --cref URL --cw : 일관된 캐릭터, URL은 사람이나 동물의 이미지 경로입니다. 밀도 증가/감소 --cw (0 - 100 / default 100)는 캐릭터의 의상이나 연령을 변경하는 데 도움이 됩니다.

2/ --sref URL --sw : 일관된 아트 스타일, URL은 스타일 참조에 사용되는 이미지 경로입니다. 밀도 증가/감소 --sw (0 - 1000 / default 100)는 스타일 영향력의 수준을 높이거나 감소하는 데 도움이 됩니다.

3/ 확대/ 팬: 이미지를 균등하게 또는 필요한 방향으로 확장합니다. 이미지에 더 많은 콘텐츠가 포함되어 스토리 페이지를 쉽게 레이아웃할 수 있도록 도와줍니다.

4/ Vary - 지역: 이것은 상당히 중요한 기능이며, 세부 사항이나 이미지의 일부를 편집하는 데 도움이 됩니다. 같은 스토리 프레임에 다양한 캐릭터를 추가하세요.

5/ -- niji 6: 애니메이션 콘텐츠에 좋은 사용

게다가, 다른 기능도 많습니다. Mid Journey에서 명령어를 마스터하면 이미지를 쉽게 만들 수 있습니다.

캐릭터 생성 참조 프롬프트:

어깨까지 내려앉은 긴 갈색 머리, 분홍색 블라우스 입은 검은색 눈의 여성이 고층 건물 앞에 서 있습니다. 애니메이션 스타일 --스타일 raw -niji 6

갈색 머리에 파란색 눈을 가진 청년이 연한 파란색 셔츠 위에 흰색 정장 재킷을 입고 빨간색 넥타이를 목에 걸고 담배를 피우며 쉬고 있습니다. 가게 앞, 거리에서 애니메이션 스타일 --style raw --niji 6

금발 머리에 파란 눈을 가진 어린 성인 백인 남성, 남성 재킷에 단추가 없는 흰색 셔츠를 입고 짧은 머리를 뒤로 묶고 흰색 바지, 머리 위에 동그란 금색 선글라스를 쓰고 있다. 애니메이션 스타일 --style raw --niji 6

일러스트레이터가 디자인한 레이아웃

 

[ ComfyUI - 미드저니 캐릭터 시트를 기반으로 SDXL Lora 생성하여 SDXL Lightning 적용하기 ]

  1. 미드저니 Cref 를 활용한 시트를 생성합니다.
  2. 해당 리소스를 별도로 편집하여 SDXL Lora 학습을 진행합니다.
  3. 로라를 적용하고 seed 를 변경하며 다양한 각도 연출을 진행합니다.

Instant ID, 사진 단 1장으로 캐릭터 일관성 유지된 이미지 생성

캐릭터 일관성이 뭔가요?

같은 프롬프트를 이용해 생성한 이미지들내에서 캐릭터 일관성이 유지되지 않는 모습 (comfy UI를 이용)

여러분들은 Stable diffusion[1](이하 SD)을 사용해본 적 있으신가요? SD로 컨텐츠를 만들 때 답답한 점은 이미지를 생성 할 때마다 얼굴이나 의상, 헤어스타일, 머리색깔과 같은 캐릭터의 외적인 부분이 계속 바뀐다는 점인데요. 프롬프트를 아무리 잘 써도 말이죠. 캐릭터의 외적인 부분이 생성할 때마다 바뀌는 것을 일관성(consistency)이 유지되지 않는다고 표현합니다.

캐릭터 일관성을 유지하는게 중요한가요?

생성하는 이미지들이 한번만 쓰이고 말 캐릭터들이면 캐릭터 일관성을 유지하는것이 중요하지 않은 경우가 많습니다. 하지만 컨텐츠에 따라서 동일한 캐릭터가 여러 장면에 등장해야하는 경우가 있을 수 있잖아요? 시리즈물이라던가 어떤 스토리를 표현한다거나 하는 경우에는 시청자들이 보기에 ‘아 저 캐릭터가 아까 나왔던 그 캐릭터구나’를 느낄 수 있을 정도까지는 캐릭터 일관성을 유지하는게 필요하죠.

캐릭터 일관성을 유지하는 방법이 없었나요?

캐릭터 일관성 유지를

위해 학습한 다양한 LoRA들 (ref. civitai[4])

 

IP-adapter를 이용해 일관성이 유지된 이미지 생성 (https://ip-adapter.github.io/)

 

SD로 컨텐츠를 만드려고 시도하신 분들은 다들 공감하시겠지만 Identity가 유지된 사진을 뽑기 위해서 몇십 장의 사진을 뽑고 또 고르는 반복작업을 해보셨을 겁니다. 그래서 SD 사용자들은 이런 문제를 해결하기위해 LoRA[2]를 학습시키거나 IP-Adapter[3]를 이용해 이미지를 생성하는 등 여러가지 시도를 하고 있고, 이를 이용해 이미지를 생성하면 캐릭터가 꽤 일관되게 나옵니다.

그래서 보여줄게 뭔가요?

Instant ID가 할 수 있는 작업

 

Instant ID 예시

 

LoRA와 IP-Adapter 모두 괜찮은 성능을 보여주지만 두 방법 모두 단점이 존재합니다. LoRA는 최소 20~30장의 이미지가 필요하고, 추가로 학습을 진행해야므로 GPU와 같은 컴퓨팅 자원이 오랜시간 들어가게 됩니다. Instant ID[5]를 이용하면 번거롭게 LoRA를 학습할 필요가 없습니다! 또한 기존 IP-Adapter보다 얼굴의 일관성이 잘 유지되는 이미지를 얻을 수 있습니다. 물론 animate diff[6]와 같은 영상컨텐츠에는 LoRA가 더 활용성이 높긴 하지만, 간단하고 빠르게 identity가 유지된 이미지를 뽑아볼 수 있다는 점에서는 확실히 Instant ID도 사용할 만합니다.

Instant ID 논문의 핵심은 뭔가요? (비전공자는 어려울 수 있음!)

Instant ID 논문의 핵심 아이디어

 

Instant ID는 크게 3가지로 핵심을 나눌수 있습니다.

  1. Face Encoder에서 Face embedding을 추출하는 ID embedding
  2. Face embedding과 Text embedding을 합치는 decoupled cross-attention
  3. Face Identity의 영향력을 높이기 위한 IdentityNet

각각에 대해서 간단하게 살펴보도록 하겠습니다. 첫번째로 ID Embedding 과정은 주어진 Ref image에서 Face embedding 추출하는 과정입니다. 기존에는 비주얼 프롬프트(Face embedding)를 이미지로부터 추출하기 위해서는 Clip encoder를 사용했었습니다. 하지만 Clip encoder로 추출된 특징은 얼굴에 집중하기 보다는 이미지의 전반적인 구도, 스타일, 색상같은 광범위한 시맨틱 정보들입니다. 그래서 Clip encoder는 텍스트 임베딩을 보조하는 용으로는 좋겠지만, 이 연구에서는 좀 더 얼굴에 집중하기 위해서 Ip adapter를 Face encoder로 사용해 face feature를 추출합니다. 그리고 추출된 face feature를 text embedding과 같이 사용하기위해 한번 가공하는 과정을 거치게 되는데, 이 때 나온 결과가 face embedding 입니다.

두번째로 face embedding을 비주얼 프롬프트로 사용하기 위한 과정입니다. ID embedding에서 추출한 face embedding과 프롬프트로 입력된 text embedding을 결합하는 decoupled cross attention을 거칩니다. text embedding의 cross attention결과에 face embedding의 cross attention결과를 더해서 query feature(Z_new)를 새로 만드는 것이죠. 식은 다음과 같습니다.

decoupled cross attention 설명

 

마지막으로 face landmark와 face embedding을 이용해서 얼굴 이미지의 세부 특징을 인코딩하는 identityNet입니다. 앞의 ID embedding과 decoupled cross-attention은 IP-Adapter와 거의 똑같다고 볼 수 있죠. IP adapter의 한계점을 간단하게 설명드리면 이미지와 텍스트의 임베딩을 합쳤기 때문에 기존에 텍스트 프롬프트가 발휘하던 영향력이 줄어들게 됩니다. 그렇다고 이미지 임베딩의 영향력을 낮추면 identity가 유지가 잘 안되구요. 또 그렇다고 identity 유지를 잘 하기위해서 이미지 임베딩의 영향력을 높이면 텍스트 프롬프트의 영향력이 반대로 낮아져서 텍스트 프롬프트가 적용이 잘 안됩니다. 이 문제를 해결하기 위해서 별도의 face embedding값과 랜드마크를 이용한 Control Net[7]을 만들었고, Identity Net이라고 명명했습니다. 다만 얼굴 랜드마크가 openpose가 아니고 눈2개, 코1개, 입2개의 총 5개의 얼굴 키포인트를 가진 랜드마크입니다.

Instant ID가 얼마나 더 잘하나요?

Instant ID와 IP-Adapter의 결과 비교

 

다양한 IPA(IP-Adapter)들과 PhotoMaker[8]와 Instant ID를 비교한 그림입니다. IP-Adapter에는 얼굴의 identity를 더 잘 표현하기 위한 다양한 모델(FaceID)들이 있는데요, 그러한 모델들보다도 text style이 잘 적용되어 결과가 좋게 나온 것을 볼 수 있습니다. Photomaker는 Instant ID와 같이 사진 한 장으로 Identity가 유지된 이미지를 생성해주는 프로젝트입니다. 하지만 Instant ID가 더 좋은 결과를 내는 것을 볼 수 있습니다.

Instant ID와 LoRA의 결과 비교

Lora와 Instant ID의 이미지를 비교한 그림입니다. 전체적인 퀄리티를 보면 LoRA가 개인적으로는 조금은 더 나아보이긴 합니다만, LoRA를 만들기 위해 필요한 작업들(이미지 수집, 전처리, 학습 파라미터 최적화, 학습 등)을 생각해보면 Instant ID도 매력적인 선택지죠. 다만 아직까지는 Animate diff와 같은 동영상 작업에서는 LoRA가 더 좋을 것 같다는 생각입니다.

Instant ID와 Swapper의 결과 비교

 

InsightFace Swapper[9]와 Instant ID의 face swapping 결과를 비교한 그림입니다. Swapper는 Roop[10]나 Reactor[11]로 많이 사용하고 있는 face swap 모델입니다. 실사 이미지에서는 swapper와 Instant ID 모두 결과가 좋은데, 실사이미지가 아닌 경우에는 Instant ID가 배경이나 그림체에 좀 더 잘 결합하는 것을 확인할 수 있습니다.

Instant ID를 WebUI에서 사용할 수 있나요?

A1111의 SD-Webui[12]에서 확장기능으로 사용이 가능합니다. 블로그에서 글로 설명하기보다 영상으로 확인하는게 더 명확하기 때문에 저희 Endplan 유튜브 채널에 올려둔 Instant ID 영상을 링크합니다. 이 영상에 Instant ID의 기능, Instant ID 논문에서 제안한 방법(IP Adapter + Identity Net)에 대한 간단한 설명, Web-UI에서 사용하는 방법까지 담았습니다. 영상을 시청하시고 질문을 남겨주시면 답변 드리겠습니다!

마치며

사진 한장으로 학습 없이 Identity 유지된 이미지를 생성하는 Instant ID에 대해서 살펴보았습니다. 얼굴의 Identity를 향상시키는 이미지 어댑터(핵심 1,2)와 복잡한 얼굴 특징을 보존하기 위한 IdentityNet(핵심 3)입니다. 실험 결과는 텍스트 프롬프트의 영향력을 보존함과 동시에 InstantID의 Identity 유지 성능을 확인시켜 줍니다. 또한 호환성이 좋기 때문에 LoRA 및 ControlNet과 같은 다른 모델과 원활하게 통합할 수 있어 추가적인 노력 없이 적용 범위를 넓힐 수 있습니다.

한편 사람의 얼굴을 유지하는 것과 관련된 윤리적 고려 사항, 특히 모욕적이거나 문화적으로 부적절한 이미지의 생성 가능성은 이 모델뿐만 아니라 생성형 AI를 다룰 때 신중하게 고려해야 할 중요한 문제입니다.

Reference

  1. Rombach, Robin, et al. “High-resolution image synthesis with latent diffusion models.” Proceedings of the IEEE/CVF conference on computer vision and pattern recognition. 2022. https://arxiv.org/abs/2112.10752
  2. Hu, Edward J., et al. “Lora: Low-rank adaptation of large language models.” arXiv preprint arXiv:2106.09685 (2021). https://arxiv.org/abs/2106.09685
  3. Ye, Hu, et al. “Ip-adapter: Text compatible image prompt adapter for text-to-image diffusion models.” arXiv preprint arXiv:2308.06721 (2023). https://ip-adapter.github.io/
  4. https://civitai.com/
  5. Wang, Qixun, et al. “InstantID: Zero-shot Identity-Preserving Generation in Seconds.” arXiv preprint arXiv:2401.07519 (2024). https://instantid.github.io/
  6. Guo, Yuwei, et al. “Animatediff: Animate your personalized text-to-image diffusion models without specific tuning.” arXiv preprint arXiv:2307.04725 (2023). https://animatediff.github.io/
  7. Zhang, Lvmin, Anyi Rao, and Maneesh Agrawala. “Adding conditional control to text-to-image diffusion models.” Proceedings of the IEEE/CVF International Conference on Computer Vision. 2023. https://github.com/lllyasviel/ControlNet
  8. Li, Zhen, et al. “Photomaker: Customizing realistic human photos via stacked id embedding.” arXiv preprint arXiv:2312.04461 (2023). https://photo-maker.github.io/
  9. https://github.com/haofanwang/inswapper
  10. https://github.com/s0md3v/roop
  11. https://github.com/Gourieff/sd-webui-reactor
  12. https://github.com/AUTOMATIC1111/stable-diffusion-webui

'AI' 카테고리의 다른 글

Stable Diffsuion TEST  (0) 2024.04.18
생성형 AI 일관성 유지  (0) 2024.04.18