
생성 AI 캐릭터를 실시간 3D 아바타로 만들기까지: I2V → 3DGS 실패 후 GAGAvatar에 안착한 이야기
요약
생성 AI 캐릭터 이미지를 실시간 3D 아바타로 변환하기 위한 실험 과정을 다룹니다. I2V와 3DGS를 활용한 초기 시도의 실패 원인을 분석하고, 최종적으로 GAGAvatar를 통해 실시간 구동에 성공한 기술적 경로를 설명합니다.
핵심 포인트
- I2V 기반 3DGS 복원은 광도 및 기하학적 일관성 부족으로 실패
- GAGAvatar를 통해 단일 이미지로부터 고품질 3D 아바타 생성 성공
- MediaPipe와 GPU 서버 렌더링 이층 구조로 실시간 구동 구현
- RTX 4050 환경에서 약 29fps의 실시간 성능 확인
이 기사는 생성 AI로 만든 실존하지 않는 캐릭터 이미지 1장으로부터, 웹캠의 표정으로 실시간 구동되는 3D 아바타를 만들기까지의 실험 기록입니다.
참고로, 이번 실험은 모두 생성 AI와의 대화로 진행했습니다. 저는 순수 문과 출신이라 코드를 한 줄도 쓸 줄 모릅니다.
처음에 시도한 것은 "이미지에서 영상을 만들고, 그 영상을 다시 시점(multi-view) 이미지로서 3D Gaussian Splatting으로 복원하는" 소박한 방법이었습니다. 결과적으로 이 방법은 실패했습니다. 얼굴로서의 동일성(identity)은 상당히 유지되었음에도 불구하고, 3D 복원에 필요한 광도(photometric) 및 기하학적(geometric) 일관성이 부족했기 때문입니다.
최종적으로는 I2V 영상으로부터의 복원이 아니라, GAGAvatar와 같은 "단일 이미지로부터 구동 가능한 3D 머리 아바타를 만드는 모델"로 전환함으로써 실시간 구동까지 도달했습니다.
TL;DR
- I2V로 만든 턴테이블 영상은 얼굴 인식상의 identity가 평균 0.808로 높았다
- 하지만 얼굴 휘도가 최대 18.8%까지 계통적 변동(systematic variation)이 발생하여, 정적 3D 물체라는 전제가 무너졌다
- 3DGS 복원은 전 호(full arc), 기지 궤도 지정, 정면 한정 + 로버스트화(robustness)라는 세 가지 조치를 모두 취했음에도 실패했다
- GAGAvatar로 전환하자 이미지 1장으로 구동 가능한 3D 아바타를 만들 수 있었다
- 입력 이미지와 출력 아바타의 identity 유사도는 맨머리 버전에서 평균 0.929, 은발 버전에서 평균 0.859였다
- 브라우저의 MediaPipe FaceLandmarker에서 ARKit 호환 블렌드셰이프(blendshape)와 머리 자세를 전송하고, GPU 서버 측에서 렌더링하는 이층 구조로 구성했다
- RTX 4050 Laptop / VRAM 6GB 환경에서 렌더러 평균 27.47ms, WebSocket을 포함한 수신 29.0fps까지 확인했다
배경
하고 싶었던 것은 단순합니다.
생성 AI로 만든 오리지널 캐릭터를 단순한 이미지가 아니라, 표정으로 움직이는 3D 아바타로 만들고 싶습니다.
VTuber적인 용도를 고려하면 Live2D나 VRM을 사용하는 방법은 이미 일반적입니다. 다만, 이번에는 "생성 AI 이미지 자체의 얼굴, 머리카락, 분위기를 최대한 유지하면서 3D적으로 움직이는 것"을 목표로 했습니다.
실존 인물이라면 여러 각도에서 촬영하거나 스캔할 수 있습니다. 하지만 생성 AI 캐릭터의 경우, 정면 이미지 1장이 유일한 기준입니다. 옆모습이나 뒷모습을 다시 촬영할 수는 없습니다.
그래서 처음에 생각한 루트는 다음과 같았습니다.
생성 AI 캐릭터의 정면 이미지
↓
I2V로 카메라 오빗(orbit) 영상 생성
...
직관적으로는 꽤 괜찮아 보였습니다.
I2V 모델에 "카메라만 회전하고 인물은 조각상처럼 정지해 있다"라고 지시하면, 의사(pseudo) 다시점 촬영이 되지 않을까 생각했습니다.
결론부터 말하자면, 이 가설은 통하지 않았습니다.
실험 1: I2V 영상으로부터 3DGS 복원을 시도하다
사용한 I2V는 Google Flow(labs.google)의 영상 생성 모델인 Omni Flash입니다. 2026년 7월 시점의 이력 화면에 표시된 명칭에 맞추었습니다.
입력은 캐릭터 "레이네"의 정면 바스트업 이미지입니다. 프롬프트에서는 피사체를 인물이 아닌 "움직이지 않는 조각상"으로 기술했습니다. 목적은 눈 깜빡임, 시선 추종, 표정 변화, 머리카락 흔들림을 억제하는 것입니다.
생성 조건의 요점은 다음과 같습니다.
- 180도의 느린 오빗(orbit) 촬영
- 피사체는 완전히 정지한 조각상
- 흰색 배경
- 그림자가 적은 플랫(flat)한 조명
- 카메라만 움직임
이 영상에서 프레임을 추출하고, 얼굴 인식 유사도로 identity가 무너진 프레임을 제외했습니다.
실패한 이유 1: identity는 유지되었다
먼저 의외였던 점은 identity만 놓고 보면 나쁘지 않았다는 것입니다.
프레임 간 얼굴 인식 유사도는 평균 0.808이었습니다. 옆모습에서는 정면 참조와의 유사도가 떨어져 최소 0.349까지 내려갔지만, 정면 부근에서는 0.97 정도까지 올라갑니다.
즉, 영상으로서 보았을 때의 "같은 사람 같은 느낌"은 상당히 잘 유지되었습니다.

이 시점에서는 아직 "될 수도 있겠다"라고 생각했습니다.
하지만 3D 복원에 필요한 것은 얼굴 인식기가 보는 identity만이 아닙니다. 정적인 3D 물체로서 각 프레임 간에 형태, 조명, 음영이 일관되어야 합니다.
이 부분이 깨져 있었습니다.
실패한 이유 2: 조명과 음영이 프레임마다 재생성되었다
얼굴 중앙의 휘도를 추적해 보니, 최대 18.8%의 계통적 변동이 있었습니다.

인간의 눈으로 영상을 보면 "같은 캐릭터가 회전하고 있다"라고 느껴집니다. 하지만 복원 알고리즘의 관점에서 보면, 프레임마다 조명과 음영이 미묘하게 다시 만들어지고 있는 상태입니다.
이는 정적 장면 (Static Scene)의 다시점 복원 (Multi-view Reconstruction)에는 상당히 까다로운 조건입니다.
3DGS나 NeRF 계열의 복원은 동일한 점이 다른 시점에서 보일 때, 보이는 모습이 일관적일 것이라는 점을 암묵적으로 기대합니다. 하지만 I2V 영상에서는 시각적인 그럴듯함을 유지하기 위해, 얼굴의 밝기나 음영이 프레임마다 새로 생성되었습니다.
이 때문에 Identity (정체성)는 유지되고 있음에도 불구하고, 3D 복원에는 적합하지 않은 상태가 되었습니다.
실패한 복원 루트
3DGS 복원에서는 다음 세 가지를 시도했습니다.
| 시도 | 내용 | 결과 |
|---|---|---|
| 전호 복원 (Full Arc Reconstruction) | 생성 영상의 넓은 각도 범위를 사용 | 바늘 모양으로 폭발 |
| ... |
SfM (Structure from Motion)에 대해서도, SIFT를 사용했을 때는 특징점 (Feature Point)이 부족했습니다. SuperPoint+SuperGlue를 사용하면 144/144 프레임까지 등록(Registration)은 성공했지만, 카메라 궤적은 직선적인 퇴화해 (Degenerate Solution)로 떨어졌습니다.
흰 배경, 망원 화각, 얼굴 중심의 약한 원근감이 겹쳐, 기하학적 추정 (Geometric Estimation)으로서도 어려운 조건이었습니다.
이 시점에서 다시점 복원 노선은 종료되었습니다.
중요한 것은 "I2V가 안 된다"라는 일반론이 아닙니다. 3D 일관성을 의식하여 훈련된 영상 생성 또는 3D 생성 모델이라면 다른 결과가 나올 가능성도 있습니다.
이번 결론은 조금 더 한정적입니다.
범용 I2V로 만든 머리 회전 (Head Orbit) 영상은, 얼굴 인식상의 Identity가 유지되더라도, 정적 3D 복원에 필요한 광도(Photometric) 및 기하학적 일관성 (Geometric Consistency)을 만족한다는 보장이 없다.
개인적으로는 이 부분이 이번 실험에서 얻은 가장 큰 지견이었습니다.
방침 전환: 일관성은 영상이 아니라 모델의 사전 분포에 맡긴다
다시점 복원에서 막힌 후, 방침을 바꾸었습니다.
"I2V로 일관된 다시점 이미지를 만드는" 것이 아니라, "단일 이미지로부터 구동 가능한 3D 머리를 직접 만드는" 방식입니다.
사용 모델은 GAGAvatar입니다. GAGAvatar는 단일 이미지로부터 3D Gaussian 기반의 머리 아바타를 구축하고, FLAME 파라미터로 재연기 (Re-enactment)할 수 있는 기법입니다.
이 방식에서는 여러 프레임 간의 일관성을 I2V가 만들도록 하지 않습니다. 대신, 학습된 모델이 가진 머리 형태, 표정, 보이는 모습의 사전 분포 (Prior Distribution)에 맡깁니다.
즉, 설계 사상이 반대입니다.
실패한 방식:
이미지 1장 → I2V로 다시점 생성 → 다시점으로부터 3D 복원
성공한 방식:
...
결과적으로 레이네의 맨머리 버전뿐만 아니라, 은발 롱헤어 버전도 머리카락까지 아바타화할 수 있었습니다.



입력 이미지와 구동 출력 프레임의 Identity 유사도는 다음과 같았습니다.
| 입력 | 평균 | 최소 | n |
|---|---|---|---|
| 맨머리 버전 | 0.929 | 0.856 | 25 |
| 은발 버전 | 0.859 | 0.776 | 25 |
참고로, I2V 프레임 간의 평균 유사도는 0.808입니다. 적어도 얼굴 인식 지표상으로는 GAGAvatar 출력이 입력 이미지와의 Identity를 더 강하게 유지하고 있었습니다.
반면, 주관적으로는 몇 가지 과제도 있습니다.
- 애니메이션 스타일이나 생성 이미지에 가까운 얼굴은 약간 실사 느낌으로 변질됨
- 머리카락 끝부분이 흐릿해지기 쉬움
- 처리 해상도 512px의 제약이 있어, 얼굴이 작은 입력 이미지에서는 품질이 저하됨
- FLAME 의존성이 있어, 상업적 이용 시 라이선스 확인이 필요함
특히 흥미로운 점은, 얼굴 인식 유사도가 높더라도 시각적인 화풍 변화는 인간이 알아챌 수 있다는 것입니다. 여기서도 "Identity 지표만으로는 부족하다"라는 이야기가 나옵니다.
실시간화: MediaPipe와 GPU 서버를 WebSocket으로 분리
아바타화에 성공했으므로, 다음은 실시간 구동입니다.
구성은 두 층으로 나누었습니다.
브라우저
Web 카메라
↓
...
클라이언트 측에서는 MediaPipe FaceLandmarker를 사용하여 얼굴 랜드마크 (Face Landmark), 52개의 블렌드쉐이프 (Blendshape), 얼굴 변환 행렬 (Transformation Matrix)을 가져옵니다. MediaPipe는 웹에서도 동작하므로, 카메라 입력과 표정 캡처는 브라우저 내에서 완결됩니다.
서버 측에서는 받은 ARKit 호환 블렌드쉐이프와 머리 자세를 FLAME 측 계수로 변환하여, GAGAvatar로 렌더링합니다.
이러한 분리에는 의미가 있습니다.
클라이언트가 "가공되지 않은 캡처 값"만 보내도록 설정해 두면, 향후 FLAME 이외의 머리 모델로 교체할 때도 브라우저 측을 수정할 필요가 없습니다. 표정 리타겟팅 (Expression Retargeting)은 서버 측의 책임입니다.
개인 환경에서는 Windows 노트북의 RTX 4050 Laptop / VRAM 6GB 상에서 레이네(Reine)의 실시간 페이스 모션 (Face Motion)까지 확인할 수 있었습니다.
실측값은 다음과 같습니다.
| 항목 | 값 |
|---|---|
| GPU | NVIDIA GeForce RTX 4050 Laptop GPU |
| ... |
데모 영상
공개 데모에서는 GAGAvatar에 포함된 인물 드라이버 (Driver) 소재를 사용하지 않고, 본인 입력으로 구동된 아바타 출력물만을 게재합니다. 구동자의 얼굴 영상 자체는 공개하지 않지만, 실시간으로 페이스 모션 (Face Motion)이 가능합니다.
Zenn에서는 MP4 첨부가 불가능한 것 같으므로, 동작하는 영상은 X(구 Twitter) 포스트를 확인해 주세요. ※ 생성 AI 캐릭터 「레이네」의 아바타 출력 영상입니다.
참고로, 이번에 아바타화한 레이네 씨가 히로인인 오리지널 소설은 이쪽입니다.
이미지 1장으로 만들 때의 실무 메모
GAGAvatar에 넣는 이미지는 품질의 매우 큰 부분을 결정합니다.
이번 경험에서는 다음 조건들이 효과적이었습니다.
- 정면 바스트 샷 (Bust-up)
- 얼굴이 프레임의 대부분을 차지함
- 균일한 조명 (Lighting)
- 무지 배경
- 무표정에서 가벼운 미소 정도
- 포토 리얼 (Photo-real)에 가까운 화풍
머리카락은 별도의 레이어로 나누지 않아도 어느 정도 그대로 리프트 (Lift) 되었습니다. 처음에는 민머리 (Naked head) 베이스와 가발을 분리하는 방안도 생각했으나, 은발 롱 헤어 이미지를 직접 넣는 것이 더 빠르고 결과도 좋았습니다.
헤어스타일을 바꾸고 싶다면 이미지를 교체하여 아바타를 다시 만드는 것이 가장 심플했습니다.
다른 캐릭터에서의 재현
동일한 절차를 레이네 이외의 생성 캐릭터 이미지로도 동작 확인했습니다.
구체적으로는 shizuku_hair.png, rara_hair.png, madoka_hair.png 3장으로도 이미지 1장으로부터의 아바타화와 구동 출력을 확인할 수 있었습니다.
다만, 이것이 "임의의 이미지로 그대로 고품질로 움직인다"는 의미는 아닙니다. 이번 3장은 베이스 설계가 레이네와 유사하며, 캐릭터마다 눈의 크기나 표정이 지어지는 방식이 다르기 때문에 실용 수준까지 끌어올리려면 개별적인 리타겟팅 (Retargeting) 조정이 필요했습니다.
이 결과는 이번 파이프라인이 레이네 1장만의 우연이 아니라는 것을 보여주는 보조 증거입니다. 한편, 입력 이미지의 화풍, 얼굴 크기, 머리카락이나 장식의 잘림 정도에 따라 품질이 달라지므로, 수평 전개 시에는 캐릭터별 조정 공정을 고려해야 합니다.
라이선스와 윤리
이러한 기술은 라이선스와 윤리를 소홀히 다루면 위험합니다.
먼저 라이선스입니다. GAGAvatar 자체는 MIT License이지만, 내부적으로 FLAME에 의존합니다. FLAME는 연구용·비상업적 이용을 위한 라이선스로, 상업적 이용에는 별도의 확인이 필요합니다.
| 컴포넌트 | 이번의 취급 | 주의 |
|---|---| |
| 캐릭터 이미지 | ChatGPT로 생성 | OpenAI의 이용 약관상 사용자는 출력을 소유한다. 단, 입력에 필요한 권리를 가질 것, 제3자의 권리 침해나 실존 인물의 초상 재현을 피하는 것이 전제 조건임 |
| I2V 영상 | Google Flow(labs.google) / Omni Flash | Google은 생성된 오리지널 콘텐츠의 소유권을 주장하지 않는다. 단, Google의 약관 및 생성 AI 금지 이용 정책을 따라야 한다. Flow 생성 영상에는 SynthID 워터마크가 포함됨 |
| GAGAvatar | MIT License | 단, FLAME 등의 의존 컴포넌트 조건은 별도로 확인이 필요함 |
| MediaPipe | Apache 2.0 | FaceLandmarker는 브라우저 측에서 표정 계수 취득에 사용 |
| FLAME | 독자 라이선스 | 비상업적 연구·교육·예술 목적용. 상업적 이용은 별도 라이선스 확인 필요 |
참고한 약관·문서:
- OpenAI Terms of Use
- OpenAI Service Terms
- Google Terms of Service
- Google Generative AI Prohibited Use Policy
- Google Flow Help
- GAGAvatar GitHub
- MediaPipe GitHub
- FLAME Model License
또한, 원샷 재연기 (One-shot Re-enactment)는 실존 인물의 사칭으로 전용될 수 있는 기술입니다.
이번 대상은 실재하지 않는 생성 AI 캐릭터입니다. 데모에서는 권리 관계가 불분명한 동봉된 드라이버(Driver) 소재를 사용하지 않고, 본인이 취득한 표정 입력에 기인하는 아바타 출력만을 게재합니다. 구동자의 얼굴 영상 자체는 공개하지 않습니다.
요약
이번 실험에서 가장 컸던 배움은 다음의 한 가지 점입니다.
얼굴로서 똑같이 보이는 것과, 3D 복원(3D Reconstruction)을 견뎌내는 것은 별개의 문제입니다.
I2V 영상은 인간이나 얼굴 인식기(Face Recognizer)에게는 상당히 일관되게 보였습니다. 하지만 정적 3D 복원이 필요로 하는 광도(Photometric)·기하학적(Geometric) 일관성은 충족하지 못했습니다.
그래서 여러 프레임으로부터 일관성을 만드는 것을 포기하고, 단일 이미지 생성 모델(Single Image Generation Model)의 사전 분포(Prior Distribution)에 일관성을 맡기는 방침으로 전환했습니다. 이 전환을 통해 생성 AI 캐릭터 이미지 1장으로부터 실시간으로 구동되는 3D 아바타까지 도달할 수 있었습니다.
아직 과제는 남아 있습니다. 표정 리타겟팅(Expression Retargeting)의 정밀도, 512px 제약, 상용 시의 FLAME 라이선스, 캐릭터별 개별 조정 등입니다.
다만, "생성 AI 캐릭터를 이미지 1장으로부터 실시간 3D 아바타화하는" 실용적인 루트로서는, I2V→3DGS보다 원샷 아바타(One-shot Avatar) 생성 모델을 사용하는 것이 현시점에서는 더 타당해 보입니다.
참고
Discussion

AI 자동 생성 콘텐츠
본 콘텐츠는 Zenn AI의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기