본문 바로가기

인공지능

CharacterGen: Efficient 3D Character Generation from Single Imageswith Multi-View Pose Calibration

https://charactergen.github.io/

 

CharacterGen: Efficient 3D Character Generation from Single Images

In this paper, we present CharacterGen, a framework developed to efficiently generate 3D characters. CharacterGen introduces a streamlined generation pipeline along with an image-conditioned multi-view diffusion model. This model effectively calibrates inp

charactergen.github.io

 

디지털 콘텐츠 제작 분야에서 단일 이미지로부터 고품질 3D 캐릭터를 생성하는 것은 다양한 몸 자세의 복잡성, 자기 가림(셀프 오클루전), 자세의 모호성 등의 문제로 인해 매우 도전적입니다. 본 논문에서는 효율적으로 3D 캐릭터를 생성하기 위해 개발된 CharacterGen이라는 프레임워크를 소개합니다. CharacterGen은 효율적인 생성 파이프라인과 이미지 기반 멀티뷰 디퓨전 모델을 도입합니다. 이 모델은 입력된 자세를 표준 형태로 보정하면서 입력 이미지의 주요 속성을 유지하여 다양한 자세가 주는 문제를 해결합니다. 트랜스포머 기반의 범용성 있는 희소 뷰 재구성 모델은 멀티뷰 이미지로부터 상세한 3D 모델을 생성하는 또 다른 핵심 구성 요소입니다. 우리는 또한 고품질의 텍스처 맵을 생성하기 위해 텍스처 역투영(백 프로젝션) 전략을 채택했습니다. 추가로, 우리는 다양한 자세와 뷰에서 렌더링된 애니메이션 캐릭터 데이터셋을 수집하여 모델을 학습하고 평가했습니다. 우리의 접근 방식은 정량적 및 정성적 실험을 통해 철저하게 평가되었으며, 고품질의 형태와 텍스처를 가진 3D 캐릭터를 생성하는 데 있어 뛰어난 성능을 보여주었습니다. 이러한 3D 캐릭터는 리깅 및 애니메이션과 같은 후속 작업에 적합합니다.

 

CCS 개념: • 컴퓨팅 방법론→인공지능; 형태 모델링; 이미지 조작.

추가 키워드 및 구문: 이미지 기반 생성, 3D 아바타 생성, 아바타 자세 표준화

 

그림 1. CharacterGen은 효율적인 3D 캐릭터 생성 프레임워크입니다. 단일 입력 이미지를 받아 표준 자세에서 일관된 외형을 가진 고품질 3D 캐릭터 메쉬를 생성하며, 이는 후속 리깅 및 애니메이션 작업 흐름에 적합합니다. © kinoko7

 

1 서론

디지털 콘텐츠 산업의 급속한 발전은 영화, 비디오 게임, 온라인 스트리밍 및 가상 현실(VR) 등 다양한 분야에서 고품질 3D 콘텐츠의 생성이 중요한 측면으로 자리 잡게 했습니다. 수작업으로 모델링된 3D 콘텐츠는 뛰어난 품질을 달성할 수 있지만, 상당한 시간과 노동 투자가 필요하여 큰 병목 현상을 초래합니다. 이를 해결하기 위해 단일 이미지에서 3D 모델을 생성하는 흥미로운 연구들이 활발히 진행되고 있습니다. 이러한 접근 방식은 초보 사용자들에게 3D 콘텐츠 생성의 진입 장벽을 크게 낮추어, 3D 콘텐츠 생성 접근을 민주화하고 해당 분야를 혁신할 잠재력을 지니고 있습니다.

 

3D 캐릭터 모델은 복잡한 관절 구조를 가지며, 2D 이미지에서는 자주 자기 가림(셀프 오클루전)이 발생하여 재구성, 생성 및 애니메이션화에 상당한 어려움을 초래합니다. 더욱이, 이러한 캐릭터는 다양한 신체 자세를 취할 수 있으며, 일부는 정확히 해석하기 어려운 희귀한 자세일 수 있습니다. 이로 인해 데이터 도메인이 다양하면서도 불균형하게 됩니다. 이러한 복잡성은 효과적인 생성, 리깅 및 애니메이션화에 장애가 됩니다. 따라서 일반적인 3D 생성 기술과 단일 뷰 3D 재구성 방법은 최적의 결과를 제공하지 못하는 경우가 많습니다. 이전 연구는 3D 인간 신체의 파라메트릭 모델을 3D 프라이어로 사용하는 것을 탐구했으나, 이러한 방법은 주로 현실적인 인간 비율과 상대적으로 타이트한 의복에 맞추어져 있어 적용 범위가 제한적입니다. 특히, 과장된 신체 비율과 복잡한 의상 디자인으로 알려진 스타일화된 캐릭터의 경우 이러한 제약이 두드러집니다.

 

본 논문에서는 단일 이미지에서 표준 자세의 3D 캐릭터를 생성하는 새로운 접근 방식인 CharacterGen을 소개합니다. 우리의 방법은 입력 이미지의 어떠한 신체 자세도 허용하고 깨끗한 3D 캐릭터 모델을 출력할 수 있다는 점에서 이전 방법과는 크게 다릅니다. CharacterGen의 기본 원리는 생성 과정에서 신체 자세를 표준화하고 일관된 멀티뷰 이미지를 생성하는 데 있습니다. 이는 각 자세를 3D 캐릭터 모델링에서 널리 사용되는 표준 'A-포즈'로 변환하면서 동시에 여러 뷰에서 이미지 일관성을 보장함으로써 달성됩니다. 이러한 이중 접근 방식은 자기 가림 및 모호한 인간 자세의 문제를 효과적으로 해결하여 이후 재구성, 리깅 및 애니메이션 단계를 크게 단순화합니다.

 

우리의 3D 캐릭터 생성 접근 방식은 두 개의 긴밀하게 연결된 단계로 구성됩니다: 첫째, 단일 이미지를 여러 뷰포인트로 확장하면서 입력 자세를 표준화합니다; 둘째, 이러한 표준 자세를 사용하여 3D 캐릭터를 재구성합니다. 이 방법은 두 가지 주요 통찰력에 의해 뒷받침됩니다: 첫째, 제어 가능한 이미지 생성의 최근 발전에서 성공적인 기술과 원칙을 통합합니다; 둘째, 3D 캐릭터에 대한 희소 뷰 재구성과 관련된 문제를 극복합니다. 표준 자세에 집중함으로써 기하학적 및 텍스처 구조가 더 명확하게 정의되고 자기 가림이 최소화되어 제한된 뷰에서 기하학과 텍스처를 재구성하는 작업이 단순화됩니다. 첫 번째 단계는 디퓨전 기반의 이미지 조건화된 멀티뷰 생성 모델을 포함하며, 입력 이미지의 글로벌 및 로컬 캐릭터 특징을 캡처하고 이를 표준 자세로 변환하여 여러 뷰에서 일관된 표준 자세 이미지를 생성하는 데 능숙합니다. 두 번째 단계는 트랜스포머 기반의 범용적인 희소 뷰 재구성 모델을 사용하여 첫 번째 단계에서 생성된 이미지로부터 거칠게 텍스처된 3D 캐릭터 모델을 생성합니다. 이후, 투사 텍스처 매핑과 포아송 블렌딩을 통해 모델의 텍스처 해상도를 더욱 세밀하게 정제하여 최종 모델을 얻습니다. 또한, 표준 자세로 캐릭터를 생성하는 것은 리깅 및 애니메이션과 같은 후속 응용에도 큰 이점을 제공합니다. 생성된 3D 캐릭터의 애니메이션을 그림 1에 보여줍니다. 전체 생성 과정은 1분 이내에 완료됩니다.

 

우리의 파이프라인을 학습시키기 위해, 우리는 온라인에서 널리 이용 가능한 VRoid Hub와 같은 플랫폼에서 애니메이션 캐릭터를 중심으로 한 멀티 포즈, 멀티 뷰 캐릭터 데이터셋을 수집했습니다. 우리는 13,746개의 캐릭터를 수집하고 이를 다양한 뷰포인트와 여러 신체 자세에서 렌더링했습니다. 이 방대한 컬렉션을 Anime3D라고 부르는 데이터셋으로 조직했습니다.

요약하자면, 본 논문은 다음과 같은 주요 기여를 합니다:

  • 자기 가림 및 자세 모호성과 같은 문제를 해결하는 다양한 입력 자세에서 제어된 표준 자세의 멀티뷰 일관성 이미지를 효과적으로 생성하는 이미지 조건화된 디퓨전 모델.
  • 멀티뷰 이미지 생성을 위한 디퓨전 모델과 트랜스포머 기반의 재구성 모델을 결합한 간소화된 파이프라인. 이 파이프라인은 단일 뷰 입력을 상세한 3D 캐릭터 모델로 효율적으로 변환합니다.
  • 여러 포즈와 뷰에서 렌더링된 13,746개의 애니메이션 캐릭터로 구성된 데이터셋으로, 우리의 모델 및 향후 3D 캐릭터 생성 연구를 위한 다양한 학습 및 평가 자원을 제공합니다.

 

2 관련 연구

이 섹션에서는 주로 디퓨전 기반 3D 객체 및 아바타 생성에 관한 관련 연구를 다룹니다. 우리의 CharacterGen도 효율적인 3D 캐릭터 생성을 위해 트랜스포머 기반 재구성 모델을 채택하고 있습니다. 공간 제약으로 인해 3D 인간 재구성 작업에 대한 논의는 생략합니다.

2.1 디퓨전 기반 3D 객체 생성

최근 디퓨전 방법은 3D 객체 생성 작업에서 강력한 능력을 보여주고 있습니다. DreamFusion과 SJC는 텍스트-투-3D 생성 작업을 위해 사전 학습된 2D 디퓨전 모델로부터 그래디언트 지침을 제공하는 점수 증류 샘플링(SDS)을 활용합니다. Magic3D와 Fantasia3D는 고해상도 렌더링을 지원하기 위해 암묵적인 사면체 필드를 활용합니다. ProlificDreamer는 LoRA 네트워크로부터 그래디언트 점수를 증류하여 3D 객체의 분포를 더 잘 학습하는 VSD를 제안합니다. Zero123은 주어진 카메라 자세에 따라 입력 이미지에 맞는 멀티뷰 이미지를 생성하는 새로운 디퓨전 모델을 제시합니다. Magic123은 SDS와 Zero123 지침을 결합하여 이미지 프롬프트로부터 3D 객체를 생성하고, 전면 뷰 텍스처 품질을 향상시키기 위해 재구성 손실을 채택합니다. MVDream과 ImageDream은 멀티뷰 디퓨전 모델을 사용하여 3D 객체 생성 과정에서 높은 일관성을 제공하는 지침을 제공합니다. SyncDreamer는 3D 인식 주의 모듈을 활용하여 동기화된 멀티뷰 이미지 생성을 달성합니다. 다양한 다른 연구들은 3D 데이터를 사용하여 디퓨전 모델을 훈련시켜 직접 3D 객체 생성을 수행하는데, 이는 빠르지만 출력 다양성에서 어려움을 겪습니다.

2.2 3D 아바타 생성

SMPL 및 SMPL-X와 같은 강력한 인간 신체 프라이어를 사용하여 일반적인 3D 생성 방법을 기반으로 고품질의 인간 아바타를 생성할 수 있습니다. EVA3D는 GAN 백본과 포즈 가이드 샘플링 방법을 결합하여 고품질의 3D 인간 아바타를 생성합니다. AvatarCLIP은 사전 학습된 CLIP 모델을 활용하여 지오메트리 및 색상 네트워크의 최적화를 안내함으로써 텍스트-투-인간 생성을 처음으로 해결합니다. Dreamavatar와 AvatarCraft는 SMPL을 사용하여 디퓨전 가이드 생성 과정에서 사용되는 암묵적 인간 지오메트리를 초기화합니다. DreamHuman은 ImGHum을 신체 프라이어로 채택하고, 아바타의 세부 지오메트리를 더 잘 재구성하기 위해 집중 렌더링 메커니즘을 제안합니다. DreamWaltz는 ControlNet을 활용하여 애니메이션 표현을 미세 조정하기 위한 포즈 지침을 제공합니다. AvatarVerse와 AvatarStudio는 생성 과정에서 DensePose-가이드 ControlNet을 활용하여 다중 얼굴 "야누스" 문제를 회피하고 부분 지오메트리 최적화를 지원합니다. TeCH는 SDS 지침 모델을 위해 입력 이미지에 추가적인 DreamBooth 모델을 훈련시켜 이미지 프롬프트 아바타 생성을 지원합니다. TADA는 2D 디퓨전 모델을 직접 증류하여 SMPL 신체 메쉬의 노멀과 변위를 최적화합니다.

 

이러한 방법의 대부분은 주로 텍스트-투-3D 캐릭터 생성에 중점을 두며, 제어 가능한 캐릭터 생성을 위해 필요한 이미지 프롬프트를 활용하지 못합니다. DreamBooth 기반 방법은 단일 입력 이미지에 과도한 적합으로 인해 강한 전면 뷰 편향이 발생하여 "야누스" 문제로 심각한 제한을 받습니다.

 

 

그림 2는 Anime3D 데이터셋의 예제 캐릭터를 네 가지 다른 카메라 뷰에서 보여주며, UNet의 표준 자세를 결정하는 능력을 확장하기 위해 훈련 중 이미지 쌍을 어떻게 구성하는지 설명합니다.

 

3 방법

이제 CharacterGen의 전체 프레임워크를 설명하겠습니다. 이 프레임워크는 임의의 포즈에서 2D 이미지를 사용하여 A-포즈 3D 캐릭터를 효율적으로 생성하는 것을 목표로 합니다. 먼저 섹션 3.1에서는 우리의 Anime3D 데이터셋을 소개하여 디퓨전 모델이 3D 공간을 이해하고 캐릭터의 포즈를 표준화하는 데 어떻게 데이터를 구성했는지 설명합니다. 섹션 3.2에서는 CharacterGen이 매우 일관된 멀티뷰 포즈 표준화 캐릭터 이미지를 생성하는 방법을 설명합니다. 마지막으로 섹션 3.3에서는 효율적인 3D 재구성 파이프라인을 설명합니다.

3.1 Anime3D 데이터셋

디퓨전 모델의 3D 캐릭터 이해 능력을 향상시키고 "야누스" 문제를 완화하기 위해, 우리는 13,746개의 스타일화된 캐릭터 서브젝트를 포함하는 Anime3D 데이터셋을 준비했습니다.

3.1.1 데이터 수집

기존의 대규모 3D 객체 데이터셋인 Objaverse나 OmniObject3D는 우리의 학습 목적에 충분한 3D 스타일화된 캐릭터를 포함하고 있지 않습니다. PAniC3D에서 영감을 받아, 우리는 먼저 VRoid-Hub에서 약 14,500개의 애니메이션 캐릭터를 수집한 후, 비인간형 데이터를 제거하여 13,746개의 캐릭터 모델을 남겼습니다.

3.1.2 데이터 처리

2D 디퓨전 모델을 미세 조정하기 위해 모든 객체를 이미지 형식으로 렌더링해야 합니다. 우리는 threevrm 프레임워크를 사용하여 이러한 캐릭터를 렌더링합니다. 먼저 "A-포즈" 캐릭터와 포즈가 있는 캐릭터를 얻어 표준 포즈와 임의 포즈 이미지 쌍을 생성합니다. A-포즈 캐릭터의 경우, 왼팔과 오른팔의 관절 회전을 Z축에서 45도로 설정하고, 왼쪽과 오른쪽 허벅지 상단을 Z축에서 6도로 설정합니다. 다른 모든 관절 매개변수는 그대로 둡니다. 포즈가 있는 캐릭터 설정의 경우, 우리는 Mixamo에서 10개의 인간 골격 애니메이션을 다운로드하여 해당 애니메이션 프레임을 임의로 선택하고 VRM 캐릭터 모델에 해당 동작을 적용합니다. 또한, 다양한 얼굴 표정을 생성하기 위해 입과 눈의 관절도 무작위로 설정합니다. 캐릭터 모델의 바운딩 박스를 [-0.5, 0.5]³로 정규화하고, 카메라 시야(FoV)를 40도로 설정하며, 카메라와 장면 원점 사이의 거리를 1.5로 설정합니다. 캐릭터 이미지는 주변 조명과 방향 조명으로 렌더링됩니다.

 

훈련 과정에서 우리는 네 개의 A-포즈 이미지와 하나의 포즈 이미지로 쌍을 만듭니다. 이는 정사각형 뷰의 네 개의 이미지가 3D 캐릭터의 외형 정보를 충분히 포함하고 있기 때문입니다. 따라서 모든 객체를 {0°, 90°, 180°, 270°}의 방위각과 0°의 고도각으로 렌더링하는 것이 자연스럽습니다. 모델의 공간적 신체 레이아웃 이해를 강화하기 위해 임의의 초기 방위각으로 세 개의 추가 그룹을 렌더링합니다. 또한, 일반화 가능한 재구성 모델을 미세 조정하기 위해 완전히 임의의 방위각과 고도각으로 네 개의 추가 뷰를 렌더링합니다.

 

그림 3

그림 3은 일관된 이미지의 네 가지 뷰를 생성하는 파이프라인을 보여주며, IDUNet이 로컬 픽셀 수준의 기능을 추출하여 멀티뷰 UNet을 강화하는 방법을 설명합니다. 여기서 "Q", "K" 및 "V"는 주의 메커니즘의 쿼리, 키 및 값 행렬을 나타냅니다.

 

-----------------------------------------------------------------------------------------------------------------------------------------------------------------

IDUNet은 "Image-Driven UNet"의 약자로, 3D 캐릭터 생성 작업에서 이미지 기반으로 동작하는 UNet 아키텍처를 의미합니다. UNet은 일반적으로 의료 영상 처리와 같은 분야에서 많이 사용되는 심층 신경망 구조로, 인코더-디코더 아키텍처를 통해 입력 이미지로부터 의미 있는 특징을 추출하고 이를 기반으로 출력 이미지를 생성하는 데 매우 효과적입니다.

 

주요 특징

  1. 로컬 픽셀 수준 특징 추출: IDUNet은 입력 이미지에서 로컬 픽셀 수준의 특징을 추출하여, 이미지 간의 일관된 특징을 유지합니다.
  2. 멀티뷰 이미지 생성: 추출된 특징을 기반으로 여러 뷰에서 일관된 이미지를 생성하여 3D 재구성 작업에 유리하게 작용합니다.
  3. 주의 메커니즘: 쿼리, 키, 값 행렬을 활용하여 주의 메커니즘을 구현함으로써, 중요한 특징에 집중하고 불필요한 정보를 무시하는 방식으로 작동합니다.

-----------------------------------------------------------------------------------------------------------------------------------------------------------------

 

3.2 멀티뷰 이미지 생성 및 포즈 표준화

이제 주어진 캐릭터 이미지로부터 매우 일관된 멀티뷰 이미지를 생성하는 방법을 살펴보겠습니다. 전체 프레임워크는 그림 3에 나와 있습니다. 우리는 IDUNet을 사용하여 입력 이미지의 패치 수준 외형 특징을 멀티뷰 디노이징 UNet으로 전송합니다. 또한 포즈 표준화 작업을 지원하기 위해 더 많은 캐릭터 레이아웃 정보를 제공하는 포즈 임베딩 네트워크를 도입합니다.

3.2.1 IDUNet

IDUNet의 목표는 원래 포즈된 이미지로부터 충분한 특징을 유지하고, 생성된 네 개의 뷰 사이에서 높은 일관성을 보장하는 것입니다. 이전 연구인 IP-Adapter는 디퓨전 UNet 구조에 어댑터 모듈을 추가합니다. 입력 이미지의 외형 정보는 입력 이미지 특징과 잠재 특징 간의 교차 주의 메커니즘을 통해 생성된 이미지로 전달됩니다. 그러나 실제로 우리는 IP-Adapter가 입력 이미지의 세부 텍스처를 완전히 포착하지 못한다는 것을 관찰했습니다. 이러한 방법은 조건 이미지의 전역 CLIP 임베딩만을 사용하기 때문에 이미지 인코딩 과정에서 픽셀 수준의 세부 사항을 잃어버려 일관성 없는 결과를 초래합니다.

조건 이미지의 특징을 더 잘 통합하기 위해, 우리는 IDUNet을 제안하여 생성 과정에서 픽셀 수준의 지침을 도입합니다. ControlNet에서 영감을 받아, IDUNet의 구조는 멀티뷰 UNet과 동일합니다. IDUNet은 "best quality"라는 고정된 텍스트 프롬프트를 사용하여 생성 과정에서 일반적인 지침을 제공합니다. ControlNet과 달리, 디노이징된 이미지와 조건 이미지의 모든 패치 간의 로컬 패치 수준 상호작용을 보장하기 위해, 단순히 두 이미지를 함께 추가하는 대신, 잠재 토큰과 조건 이미지 토큰 간의 교차 주의를 활용합니다.

 

IDUNet은 멀티뷰 UNet에 픽셀 수준의 특징을 제공하기 위해 사용되며, 입력 조건 이미지에 노이즈를 추가하면 3D 캐릭터의 텍스처 세부 사항이 크게 감소합니다. 반면, 전통적인 디노이징 UNet은 시간 단계에 따라 노이즈를 예측하기 위해 노이즈가 있는 이미지에 적용됩니다. 따라서 우리는 노이즈가 없는 입력 이미지를 인코딩하기 위해 직접적으로 VAE를 채택합니다.

 

3.2 멀티뷰 이미지 생성 및 포즈 표준화

이제 주어진 캐릭터 이미지로부터 매우 일관된 멀티뷰 이미지를 생성하는 방법에 대해 설명하겠습니다. 전체 프레임워크는 그림 3에 나와 있습니다. 우리는 IDUNet을 사용하여 입력 이미지의 패치 수준 외형 특징을 멀티뷰 디노이징 UNet으로 전송합니다. 또한 포즈 표준화 작업을 지원하기 위해 더 많은 캐릭터 레이아웃 정보를 제공하는 포즈 임베딩 네트워크를 도입합니다.

 

 

3.2.3 포즈 표준화

 

IDUNet과 결합된 우리의 멀티뷰 디퓨전 모델은 프롬프트 이미지의 세부 특징을 유지하면서 매우 일관된 정사영 뷰 이미지를 성공적으로 생성할 수 있습니다. 생성 과정에서 캐릭터 포즈 표준화를 달성하기 위해, 우리는 Anime3D 데이터셋의 이미지 쌍을 사용하여 두 UNet을 공동으로 훈련합니다. 그러나 추가적인 포즈 제약 없이 디퓨전 네트워크를 단순히 훈련하면 캐릭터 레이아웃이 잘못 배치되거나 관련 없는 신체 부위가 나타나는 문제가 발생할 수 있습니다. 이러한 문제를 해결하기 위해, 우리는 OpenPose를 사용하여 포즈 임베딩을 추가 조건으로 예측하여 디퓨전 모델에 캐릭터 레이아웃을 도입합니다. 생성된 임베딩은 잠재 노이즈에 직접 추가되어 캐릭터 관절과 생성된 캐릭터 레이아웃 간의 관계를 학습하는 데 도움을 줍니다. 캐릭터의 신체 형태가 다양하기 때문에 우리는 Anime3D 데이터셋에서 세 가지 다른 OpenPose 이미지 세트를 활용하고, CLIP 점수가 가장 높은 것을 추론 단계에서 입력 포즈 조건으로 선택합니다.

 

그림 4

그림 4는 생성된 멀티뷰 이미지로부터 최종 세밀한 캐릭터 메쉬를 생성하는 파이프라인을 보여줍니다. 첫 번째 단계에서는 딥 트랜스포머 기반 네트워크를 사용하여 조잡한 텍스처를 가진 캐릭터를 생성한 후, 텍스처 역투영 전략을 사용하여 생성된 메쉬의 외형을 향상시킵니다.

 

3.3 3D 캐릭터 생성

이제 멀티뷰 포즈 표준화 디퓨전 모델이 생성한 네 뷰 이미지를 사용하여 3D 캐릭터를 효율적으로 생성하는 방법을 설명하겠습니다. 그림 4에 나타난 것처럼, 우리는 3D 캐릭터 생성 작업을 위해 조잡-세밀 과정(coarse-to-fine process)을 채택합니다. 먼저 LRM의 설계를 따라 트랜스포머 기반 네트워크를 사용하여 캐릭터의 기하학과 조잡한 외형을 재구성합니다. 그 후, 생성된 고해상도 네 뷰 이미지를 사용하여 텍스처 품질을 신속하게 향상시키기 위해 텍스처 역투영 전략을 사용합니다. 마지막으로, 포아송 블렌딩을 이용하여 텍스처 맵의 이음새를 줄입니다.

3.3.1 조잡한 텍스처를 사용한 캐릭터 재구성

LRM에서 영감을 받아, 우리는 멀티뷰 디퓨전 모델이 생성한 네 뷰 이미지로부터 캐릭터를 효율적으로 재구성하기 위해 딥 트랜스포머 네트워크를 사용합니다. LRM은 다양한 3D 객체 생성을 가능하게 하기 위해 Objaverse 데이터셋을 사용하여 훈련되지만, 인간 캐릭터 레이아웃의 복잡성을 충분히 포착하지 못합니다. 재구성 네트워크의 일반적인 3D 객체와 스타일화된 캐릭터를 처리하는 능력을 유지하기 위해, 우리는 처음에 우리의 트랜스포머 네트워크를 Objaverse 데이터셋에서 사전 훈련한 후 Anime3D 데이터셋으로 미세 조정하여 인간 신체 구조에 대한 프라이어를 더 많이 도입합니다.

 

원래 LRM은 주로 NeRF 표현을 사용하여 훈련하도록 제안하지만, NeRF 모델에서 직접 기하학을 추출하면 표면 기하학에 노이즈가 발생할 수 있으며, 이는 후속 그래픽 파이프라인에서 캐릭터 메쉬를 사용하는 데 문제를 일으킬 수 있습니다. 대신, 우리는 재구성 네트워크에 대한 두 단계의 미세 조정 전략을 사용합니다. 첫 번째 단계에서는 LRM과 유사한 트리플레인 NeRF 표현을 사용하여 캐릭터의 조잡한 기하학과 외형을 설정합니다. 두 번째 단계에서는 재구성 네트워크의 디코더 모듈을 수정하여 밀도 필드 대신 서명 거리 함수(SDF)를 예측하도록 하여 CharacterGen이 더 매끄럽고 정밀한 표면 기하학을 달성할 수 있도록 합니다.

 

MSE 손실 외에도, 우리는 재구성 외형을 감독하기 위해 마스크 손실과 LPIPS 손실도 포함합니다. 재구성 모델이 입력된 네 뷰 이미지 내의 빈 공간을 구별할 수 있도록 도와주기 위해, 우리는 진실된 알파 마스크와 렌더링된 알파 마스크 간의 이진 교차 엔트로피 손실을 마스크 손실로 채택합니다. LPIPS 손실은 입력 이미지로부터 인지적 정보를 추출하는 데 사용됩니다. 훈련 목표는 식 4에 나와 있습니다.

 

 

-----------------------------------------------------------------------------------------------------------------------------------------------------------------

라플라시안 스무딩(Laplacian Smoothing)은 3D 모델링과 컴퓨터 그래픽스에서 메쉬의 표면을 부드럽게 하는 데 사용되는 기법입니다. 이 기법은 각 정점(vertex)의 위치를 주변 정점들의 위치의 평균으로 이동시켜 표면의 노이즈와 거친 부분을 줄이는 것을 목표로 합니다.

라플라시안 스무딩의 원리

라플라시안 스무딩은 정점의 새로운 위치를 계산할 때 라플라시안 연산자를 사용합니다. 라플라시안 연산자는 주어진 정점과 그 이웃 정점들 사이의 차이를 계산하여, 정점이 위치한 표면의 곡률을 부드럽게 하는 방향으로 이동시킵니다. 이를 통해 메쉬의 전체적인 매끄러움이 향상됩니다.

알고리즘 단계

  1. 이웃 정점 평균 계산: 각 정점의 새로운 위치는 그 정점의 이웃 정점들의 위치의 평균으로 계산됩니다.
  2. 새로운 위치 업데이트: 모든 정점에 대해 새로운 위치를 계산한 후, 이를 기존 위치와 대체합니다.
  3. 반복: 이 과정을 원하는 매끄러움 정도에 도달할 때까지 반복합니다.

 

특징

  • 단순함: 구현이 비교적 간단하며, 계산 비용이 낮습니다.
  • 효과적임: 메쉬의 노이즈를 줄이고 표면을 부드럽게 하는 데 효과적입니다.
  • 단점: 과도한 스무딩은 메쉬의 중요한 세부사항을 잃게 할 수 있습니다.

용도

  • 3D 모델링: 잡음이 많은 3D 스캔 데이터를 처리하여 매끄러운 표면을 얻기 위해 사용됩니다.
  • 컴퓨터 그래픽스: 모델의 표면을 부드럽게 하여 시각적으로 더 매끄럽고 자연스럽게 보이도록 합니다.
  • 과학적 시각화: 과학적 데이터의 시각화에서 노이즈를 줄이고 명확한 구조를 강조하는 데 사용됩니다.

라플라시안 스무딩은 이러한 다양한 용도에서 메쉬의 표면 품질을 개선하는 데 중요한 역할을 합니다.

 

-----------------------------------------------------------------------------------------------------------------------------------------------------------------

 

3.3.2 3D 캐릭터 정제

우리의 재구성 네트워크는 캐릭터의 3D 암묵적 표현을 빠르게 재구성할 수 있으며, DMTet [Shen et al. 2021]을 사용하여 재구성된 트리플레인(tri-plane)으로부터 최종 메쉬와 조잡한 UV 맵을 추출할 수 있습니다. 그러나 생성된 메쉬는 UV 언래핑 과정에서 외형 정보가 손실되기 때문에 텍스처 세부 정보가 부족합니다. 이 문제를 해결하기 위해, 생성된 네 뷰 이미지를 사용하여 생성된 텍스처 맵의 품질을 향상시킵니다. 이 단계에서 효율적인 래스터화(3D를 그리기 위한 방식)를 위해 NvDiffRast [Laine et al. 2020]를 렌더러로 사용합니다. 생성된 네 뷰 이미지는 텍스처 맵보다 해상도가 낮아 여러 텍셀이 동일한 이미지 픽셀에 투영될 수 있습니다. 차별화 가능한 렌더링 기반 최적화 동안 이러한 텍셀의 기울기가 노이즈가 됩니다. 입력 뷰의 희소성은 이러한 노이즈 텍셀을 수정하는 데 어려움을 가중시켜, 출력된 정제 텍스처 맵의 심각한 저하를 초래합니다. 이 문제를 회피하기 위해, 우리는 네 뷰 이미지를 텍스처 공간의 텍셀에 투영하고 깊이 테스트를 사용하여 가려진 텍셀을 제거합니다. 또한, 네 뷰 이미지를 메쉬에 직접 역투영하면 캐릭터의 몸 윤곽에서 노이즈 텍셀이 발생함을 알 수 있습니다. 네 개의 정사영 카메라 뷰 방향과 노멀 텍스처 맵의 내적을 계산합니다. 내적이 -0.2보다 큰 텍셀은 실루엣 주변의 노이즈를 제거하기 위해 무시됩니다. 여러 뷰에서 중첩되는 텍셀의 경우, 우리는 조잡한 텍스처에 가장 가까운 RGB 값을 가진 역투영 텍셀을 선택합니다. 그런 다음 포아송 블렌딩 [Pérez et al. 2003]을 사용하여 투영된 텍셀과 원본 텍셀을 결합하여 최종 텍스처의 이음새를 줄입니다.

 

-----------------------------------------------------------------------------------------------------------------------------------------------------------------

텍셀(texel)은 텍스처 맵(texture map)의 요소인 "텍스처 요소(texture element)"의 줄임말

-----------------------------------------------------------------------------------------------------------------------------------------------------------------

 

4 실험

4.1 구현 세부 사항

우리는 Anime3D 데이터셋을 50:1 비율로 훈련 세트와 테스트 세트로 나눕니다. Stable Diffusion 2.1 모델을 IDUNet과 멀티뷰 UNet의 기본 모델로 사용합니다. 훈련 과정은 8개의 NVIDIA A800 GPU에서 3일 동안 512 × 512 해상도의 이미지로, 추가로 2일 동안 768 × 512 해상도의 이미지로 수행됩니다. 각 훈련 단계에서 우리는 IDUNet과 멀티뷰 UNet을 공동으로 훈련합니다. 먼저 Anime3D에서 네 뷰 이미지 그룹과 하나의 조건 포즈 이미지를 샘플링합니다. 방위각 {0°, 90°, 180°, 270°}로 네 개의 이미지를 생성하기 위해 이 그룹을 0.8의 확률로 샘플링합니다. 또한, 3D 캐릭터의 공간적 이해를 강화하기 위해 다른 네 뷰 이미지 그룹도 훈련 단계에 포함합니다. 방위각이 [-90°, 90°] 범위인 전면 포즈 캐릭터 이미지를 샘플링합니다. 훈련 단계 동안 포즈 이미지는 IDUNet에 입력되고, 네 뷰 이미지는 멀티뷰 UNet에 전송됩니다.

 

트랜스포머 기반 재구성 모델을 미세 조정하기 위해, 먼저 NeRF 표현으로 50 에포크 동안 미세 조정한 후 SDF로 30 에포크 동안 추가 미세 조정합니다. 미세 조정 과정은 8개의 A800 GPU에서 1일이 소요됩니다. CharacterGen은 추론 단계에서 훈련이 필요하지 않기 때문에 전체 생성 파이프라인(네 개의 표준 포즈 이미지 생성, 3D 캐릭터 메쉬 재구성, 텍스처 맵 정제 포함)은 단일 GPU에서 실행할 수 있습니다.

 

표 1. 우리는 Anime3D의 테스트 분할에서 2D 멀티뷰 생성 및 3D 캐릭터 생성 방법의 정량적 메트릭을 보여주어 CharacterGen의 효과를 평가합니다.

 

4.2 결과 및 비교

우리는 CharacterGen의 효율성과 효과성을 평가하기 위해 2D 멀티뷰 캐릭터 이미지 생성과 3D 캐릭터 메쉬 생성 모두에 대해 실험을 진행했습니다.

 

그림 5: 다른 방법들과 우리 방법으로 생성된 네 개의 A-포즈 캐릭터 이미지를 비교합니다. 모든 예제의 방위각은 {0°, 90°, 180°, 270°}로 설정되어 있습니다.

 

4.2.1 2D 멀티뷰 생성

우리는 Anime3D 테스트 분할과 온라인 소스의 이미지를 사용하여 모델을 테스트하고, 우리의 결과를 Zero123 [Liu et al. 2023c] 및 SyncDreamer [Liu et al. 2023a]의 결과와 비교했습니다. 비교 결과는 그림 5에 나와 있습니다. 어려운 신체 포즈가 주어졌을 때, Zero123과 SyncDreamer는 생성된 이미지의 기하학 및 외형 정보를 충분히 유지하는 데 어려움을 겪습니다. 우리의 CharacterGen은 표준 포즈 보정(calibration)을 능숙하게 수행하여 네 가지 뷰 전반에 걸쳐 일관된 캐릭터 이미지를 생성하며, 이는 후속 캐릭터 메쉬 재구성 과정을 크게 향상시킵니다.

 

우리는 또한 Anime3D의 테스트 분할에서 모든 캐릭터 이미지를 대상으로 실험을 진행했습니다. 우리는 Anime3D에서 100 에포크 동안 기본 방법을 미세 조정하고, 표 1의 상단 부분에 품질 메트릭을 표시합니다. 우리의 보정된 A-포즈 이미지는 진실된 A-포즈 이미지와 비교되며, 다른 방법으로 생성된 이미지는 해당 포즈된 이미지와 비교됩니다. 결과는 CharacterGen의 뛰어난 생성 품질과 멀티뷰 디퓨전 모델과의 일관성을 평가합니다.

 

그림 6: 생성된 3D 캐릭터의 외형과 기하학을 다른 방법들과 비교합니다.

 

4.2.2 3D 캐릭터 생성

이 섹션에서는 이미지 프롬프트 3D 캐릭터 생성 방법과 우리의 생성된 3D 캐릭터를 비교합니다. ImageDream [Wang and Shi 2023]와 Magic123 [Qian et al. 2023]는 모두 SDS 기반 최적화를 사용합니다. TeCH [Huang et al. 2023b]는 ECON [Xiu et al. 2023]을 확장하고 DreamBooth [Ruiz et al. 2023]를 사용하여 이미지 프롬프트 생성을 달성합니다. 결과는 그림 6에 시각화되어 있습니다. 우리는 또한 Anime3D의 테스트 분할에서 3D 생성 결과에 대한 정량적 실험을 진행했습니다. 텍스처 품질 메트릭은 렌더링된 이미지와 네 개의 정사영 뷰 전반에 걸쳐 진실된 이미지와 비교하여 얻습니다. 우리는 생성된 메쉬의 기하학 품질을 평가하기 위해 챔퍼 거리(CD)를 메트릭으로 선택했습니다. CD를 계산하기 위해 메쉬를 [-0.5, 0.5]³로 정규화했습니다. 정량적 결과는 표 1의 하단 부분에 나와 있습니다.

 

-----------------------------------------------------------------------------------------------------------------------------------------------------------------

SDS 기반 최적화

SDS(Score Distillation Sampling) 기반 최적화는 최근 딥러닝 분야에서 텍스트에서 3D 오브젝트 생성, 이미지-프롬프트 3D 캐릭터 생성 등 다양한 작업에서 활용되는 기법입니다. 이 방법은 사전 훈련된 2D 디퓨전 모델로부터 3D 객체 생성을 안내하기 위해 사용됩니다. SDS 기반 최적화는 다음과 같은 주요 단계로 구성됩니다:

주요 개념

  1. 스코어 디스틸레이션 샘플링 (Score Distillation Sampling):
    • 사전 훈련된 2D 디퓨전 모델에서 학습된 점수(스코어)를 활용하여, 3D 객체의 텍스처와 기하학적 형태를 안내합니다.
    • 이 스코어는 디퓨전 모델이 이미지의 질을 판단하는 기준으로 사용됩니다.
  2. 2D 디퓨전 모델 활용:
    • 사전 훈련된 2D 디퓨전 모델은 이미지를 생성하는 과정에서 특정 패턴이나 특징을 학습합니다.
    • SDS 기반 최적화는 이 모델의 지식을 3D 생성 과정에 활용하여 더 일관되고 현실적인 3D 객체를 생성합니다.

최적화 과정

  1. 초기화:
    • 3D 모델의 초기 상태를 설정합니다. 이 초기 상태는 일반적으로 임의의 노이즈로 시작합니다.
  2. 디퓨전 모델로부터 스코어 추출:
    • 초기화된 3D 모델을 2D 이미지로 렌더링합니다.
    • 렌더링된 2D 이미지를 사전 훈련된 디퓨전 모델에 입력하여, 디퓨전 모델로부터 해당 이미지에 대한 스코어를 얻습니다.
  3. 스코어 디스틸레이션:
    • 디퓨전 모델로부터 얻은 스코어를 사용하여 3D 모델을 업데이트합니다.
    • 이 과정은 역전파(backpropagation)와 유사하며, 스코어가 높은 방향으로 3D 모델을 조정하여 점진적으로 더 나은 결과를 얻습니다.
  4. 반복:
    • 이 과정을 여러 번 반복하여 3D 모델을 점진적으로 개선합니다.
    • 각 반복(iteration)마다 3D 모델은 더 나은 품질의 2D 이미지로 렌더링되며, 이를 통해 디퓨전 모델의 스코어를 더 효과적으로 활용합니다.

응용 예시

  • 이미지-프롬프트 3D 생성: 사용자가 제공한 2D 이미지 또는 텍스트 설명을 기반으로 3D 객체를 생성합니다. SDS 기반 최적화는 이 과정에서 2D 이미지의 특징과 디테일을 효과적으로 반영합니다.
  • DreamFusion, Magic3D 등: 이러한 최신 연구들은 SDS 기반 최적화를 활용하여 고품질의 3D 객체를 생성하는데, 텍스처와 기하학적 형태의 세부 사항을 유지하면서 일관된 3D 모델을 만들어냅니다.

장점

  • 고품질 생성: 사전 훈련된 2D 디퓨전 모델의 지식을 활용하여 3D 객체의 품질을 높일 수 있습니다.
  • 일관성 유지: 2D 디퓨전 모델의 스코어를 통해 생성된 3D 객체의 일관성과 현실감을 유지할 수 있습니다.

-----------------------------------------------------------------------------------------------------------------------------------------------------------------

 

 

CharacterGen은 견고한 네 뷰 재구성 메커니즘 덕분에 "야누스" 문제를 효과적으로 피할 수 있음을 관찰할 수 있습니다. 우리의 생성된 3D 캐릭터 메쉬는 보이지 않는 신체 부위에서도 만족스러운 외형을 보여주며, 이는 Anime3D에서 풍부한 후면 뷰 및 측면 뷰 프라이어 덕분입니다. 다른 방법으로 생성된 대부분의 3D 캐릭터는 여러 메쉬 얼굴 결합 문제로 고통받으며, 이는 이러한 캐릭터를 리깅 및 애니메이션하는 데 극도로 어려움을 줍니다. CharacterGen은 어려운 포즈의 캐릭터로부터 표준 포즈 메쉬를 성공적으로 생성할 수 있어 후속 그래픽 응용에 유리합니다. 우리는 또한 Animate Anyone [Hu et al. 2023]에 의해 표준화된 A-포즈 캐릭터 이미지를 사용하여 다른 방법을 평가했습니다. 자세한 내용은 추가 자료를 참조하십시오.

 

그림 7: CharacterGen과 IP-Adapter-SDXL의 결과를 비교합니다.

 

4.2.3 IP-Adapter와의 비교

이전 연구 IP-Adapter [Ye et al. 2023]는 디퓨전 모델에 어댑터 모듈을 통합하여 이미지 프롬프트 생성 작업을 지원합니다. 우리는 IP-Adapter가 Stable Diffusion 2.1에 대한 사전 학습된 모델을 포함하지 않음을 발견했습니다. 대신, 우리는 100 에포크 동안 방위각 {0°, 90°, 180°, 270°}에 대해 4 뷰로 2×2 그리드 캐릭터 이미지를 생성하기 위해 SDXL 기반 모델을 훈련했습니다. 그리드 이미지는 SDXL의 표준 해상도인 1024×1024로 구성됩니다. 그런 다음, 우리는 공식 사전 학습된 IP-Adapter-SDXL을 기본 SDXL 모델에 통합하여 이미지 조건 멀티뷰 결과를 얻습니다. 시각화 결과는 그림 7에, 정량적 결과는 표 1에 나와 있습니다. IP-Adapter는 세부 외형 정보를 유지하지 못하고 올바른 캐릭터 레이아웃을 생성하지 못할 수 있는 반면, CharacterGen은 IDUNet을 통해 높은 일관성의 멀티뷰 캐릭터 이미지를 효과적으로 생성할 수 있음을 관찰할 수 있습니다.

 

표 2. 단일 3D 캐릭터를 생성하는 데 걸리는 시간. 모든 방법에 대해 모델 로딩 시간은 제외됩니다.

4.2.4 생성 속도

우리는 우리의 방법과 다른 이미지 프롬프트 3D 생성 방법에 의해 단일 3D 캐릭터 메쉬를 생성하는 데 필요한 시간을 비교했습니다. 비교 결과는 표 2에 자세히 나와 있습니다. 우리의 방법은 다른 대안들보다 훨씬 빠릅니다. SyncDreamer와 Zero123은 멀티뷰 이미지를 생성하는 데 사용됩니다. 이들의 시간 비용은 선택한 3D 재구성 방법에 따라 다릅니다. 기본 NeuS [Wang et al. 2021a] 재구성은 약 10분이 소요됩니다.

 

그림 8: 고정된 IDUNet이 프롬프트 이미지로부터 충분한 외형 정보를 추출하지 못하고 비슷하지 않은 이미지를 생성하는 것을 보여줍니다.

 

표 3: 사용자 연구 통계. 2D 멀티뷰 이미지와 3D 텍스처드 캐릭터 메쉬에 대한 투표 결과를 표시합니다.

4.4 소거 연구 (Ablation Study)

4.4.1 IDUNet

IDUNet의 공동 학습의 중요성을 증명하기 위해, 우리는 사전 학습된 Stable Diffusion 2.1 모델로 IDUNet을 동결한 상태에서 CharacterGen 네트워크를 학습시켰습니다. 생성된 네 뷰 이미지는 그림 8에 나와 있습니다. 결과는 생성된 이미지가 입력 이미지에서 충분한 특징을 유지하지 못하여 유사성이 감소함을 보여줍니다. 이는 깨끗한 포즈 이미지와 함께 IDUNet을 공동으로 미세 조정하여 옷과 얼굴 외형의 세부 사항을 추출하는 능력을 향상시키는 것이 필요함을 나타냅니다.

 

그림 9: 포즈 임베딩 네트워크가 없을 경우, 생성된 캐릭터가 잘못 배치될 수 있습니다.

 

4.4.2 포즈 임베딩 네트워크

포즈 임베딩 네트워크는 생성된 네 뷰 이미지에서 캐릭터 레이아웃을 유지하는 데 중요한 역할을 합니다. 우리는 포즈 임베딩 네트워크 없이 추가 이미지 세트를 생성하고, 대표적인 결과를 그림 9에 표시합니다. 포즈 임베딩 네트워크가 없을 경우, 생성된 캐릭터 이미지가 이미지의 가운데에 위치하지 않을 수 있음을 관찰할 수 있습니다. 또한, 레이아웃 지침의 부족은 일관되지 않은 옷 부분을 생성하여 이후 단계에서 3D 재구성에 문제를 일으킬 수 있습니다.

 

그림 10: 생성된 캐릭터를 리깅하고 이를 다운스트림 응용에서 3D 자산으로 활용합니다.

 

그림 11: CharacterGen의 애니메이션 3D 캐릭터와 ImageDream [Wang and Shi 2023]의 결과를 비교합니다.

4.5 응용

CharacterGen은 상세한 텍스처 맵을 가진 A-포즈 3D 캐릭터를 생성할 수 있어, 후속 리깅 프로세스를 간소화합니다. 우리는 AccuRig [actorcore 2023]를 사용하여 생성된 캐릭터 메쉬를 자동으로 리깅합니다. 리깅된 3D 캐릭터는 다양한 도메인에서 애니메이션 3D 자산으로 즉시 활용될 수 있습니다. 우리는 Warudo [HakuyaLabs 2023]에서 다양한 애니메이션 리깅된 모델을 렌더링하고, 일부 결과를 그림 10에 제시합니다.

 

A-포즈 캐릭터가 골격 리깅과 애니메이션 과정에 어떻게 도움이 되는지 더 잘 평가하기 위해, 우리는 CharacterGen과 ImageDream [Wang and Shi 2023]에 의해 생성된 두 개의 3D 캐릭터 메쉬를 리깅하고, 애니메이션된 캐릭터를 그림 11에 시각화합니다. 비 A-포즈 캐릭터는 심각한 메쉬 결합 문제를 겪고 신체 구조가 심하게 왜곡되는 반면, 우리의 A-포즈 캐릭터는 성공적으로 애니메이션될 수 있음을 관찰할 수 있습니다.

 

5 한계와 논의

우리의 방법이 임의의 포즈에서 단일 입력 이미지로부터 3D 캐릭터를 생성할 수 있지만, 여전히 몇 가지 한계가 존재합니다. 네 뷰 A-포즈 이미지 생성 단계에서, 캐릭터가 극단적인 포즈에 있거나 일반적이지 않은 뷰포인트에서 렌더링된 경우 충분한 정보를 유지하지 못할 수 있습니다.

 

미래 작업으로, 텍스처 정제 단계에 추가적인 비사진적 렌더링(NPR) 기술을 통합하면 생성된 캐릭터의 텍스처 품질을 더욱 향상시킬 수 있을 것입니다. 또한, 훈련된 멀티뷰 UNet 구조를 활용하여 SDS 최적화 방법을 통합함으로써 더 우수한 기하학적 품질의 3D 캐릭터 생성을 달성할 수 있을 것입니다.

6 결론

이 논문은 CharacterGen이라는 새로운 효율적인 이미지 프롬프트 3D 캐릭터 생성 프레임워크를 제안합니다. 우리는 파이프라인을 훈련시키기 위해 새로운 멀티 포즈, 스타일화된 캐릭터 데이터셋인 Anime3D를 컴파일했습니다. 우리의 설계에는 입력 조건 이미지로부터 패치 수준의 특징을 추출하여 멀티뷰 A-포즈 캐릭터 이미지 생성을 안내하는 IDUNet이 포함되어 있습니다. 이후, 트랜스포머 기반 네트워크를 사용하여 3D 캐릭터 메쉬를 재구성하고, 텍스처 역투영 정제 전략을 활용하여 재구성된 캐릭터 메쉬의 외형을 더욱 개선할 것을 제안합니다. 실험 결과 CharacterGen이 여러 후속 응용에 적합한 고품질의 3D 캐릭터를 효율적으로 생성할 수 있음을 보여줍니다.

감사의 글

이 연구는 국가 과학기술 주요 프로젝트(2021ZD0112902), 중국 국가 자연 과학 재단(Grant No. 62220106003), 그리고 칭화-텐센트 인터넷 혁신 기술 공동 연구소의 지원을 받았습니다. 저자들은 Ralph R. Martin, Yuan-Chen Guo, Yang-Guang Li에게 유익한 토론에 대해 감사의 뜻을 표합니다.