DreamMat: High-quality PBR Material Generation with Geometry- and Light-aware Diffusion Models
Paper: https://arxiv.org/abs/2405.17176 Project Page: https://zzzyuqing.github.io/dreammat.github.io/ Github: https://github.com/zzzyuqing/DreamMat
DreamMat: High-quality PBR Material Generation with Geometry- and Light-aware Diffusion Models논문에 대한 나의 생각Abstract1. Introduction3. Method3.1. Overview3.2 Material Representation3.3 Distillation Loss for Material Generation3.4 Geometry- and Light-aware Diffusion Model3.5 Material Generation4. Experiment4.1 Implementation Details5. Limitation and Conclusion5.1 Limitation
논문에 대한 나의 생각
- PBR 문제에 대해 생각해보기 좋은 Paper
- 장점
- PBR Material 생성 문제에 대해서 깊이 고민해 본 흔적이 많다
- BRDF/SVBRDF나 Rendering 파이프라인 설명 등 고전 Graphics 지식이 많이 등장한다.
- PBR Representation에 대해서도 많은 고민이 있었을 것 같다.
- Material parameter를 학습하고, 이를 Sampling하여 Texture를 생성하므로, Occlusion 문제에서 자유로울 것.
- 단점
- 퀄리티는 한번 코드를 돌려봐야겠지만, 시간이 20분이나 걸린다는 점
- Contribution은 Light-ControlNet 학습 정도밖에 못줄 것 같다는 점..?
- 사실 Representation 부분은 기존 지식의 서술이었고
- CSD Loss의 경우에도 기존 방법에 Negative 잘먹는 키워드들을 보충한 정도라고 보여지는데..
- 과연 SDS / CSD 등 Diffusion을 Loss로 활용하는 기법들이 주류로 지속될까?에 대한 의문이 있다.
- 퀄리티 측면: Over-Saturation 없애기 쉽지 않을 것 같음 (부자연스러움)
- 속도 측면: Optimization 해야하므로, 시간 줄이기 쉽지 않을 것임.
Abstract
최근 2D Diffusion Model의 발전을 통해 raw mesh에 대한 appearance, 즉 Texture를 생성할 수 있게 되었다. 이러한 방법들은 RGB texture를 만들어내는데, 이때 원치 않는 shading effect가 함께 baked되는 경우가 잦다. PBR(Physically Based Rendering) Material을 만들어 내는 것이 보다 이상적인 솔루션일텐데, 기존 방법들은 부정확한 material decomposition으로 어려움을 겪고 있다. Albedo에 shading 효과가 들어가 있는 등 말이다. DreamMat은 text로 부터 PBR Material을 생성하는 방법론이며, 기존 2D diffusion model이 최종 shading 컬러에 대해서만 학습이 되어 material decomposition에 어려움을 겪는다는 점을 해결하고자 한다. 이를 위해 새로운 light-aware 2D diffusion model을 fine-tune하였고, albedo에서 shading effect를 없앨 수 있었다.
1. Introduction
기존 방법들(TEXTure 등)은 PBR 대응이 안된다. Fantasia3D는 되긴 되는데, albedo에 shading이 남아있다. PBR material 생성에는 몇가지 어려움이 있는데, 첫번째로 직접 material generation network를 training하는 것은 높은 퀄리티의 3D PBR 데이터셋 부족으로 인해 어렵다. 대안으로서 Fantasia3D처럼 training free하게 2D diffusion모델을 distilling하여 material decomposition 하는 방법, 즉 이미 생성된 것에서 PBR을 분리해내려는 시도는 albedo에 shading이 남는 등의 한계가 있다. 그것은 material decomposition task의 ill-posed 특성. 즉, 1개의 유일한 정답이 존재하지 않는다는 성격 때문이다.
본 논문에서는 diffusion distillation framework의 맥락에서 material decomposition task의 ill-posed 특성에 대해 심층 분석을 시도한다. Diffusion 모델은 최종적으로 자연스러운 RGB 이미지를 생성하도록 훈련되었기 때문에,결과 이미지에는 알 수 없는 환경광(environment light)과 재질(materials)로 부터 비롯된 shading이 적용된다. Fantasia3D에서는 이를 해결하고자 diffusion 모델을 distill할 때, 단일 환경광으로 고정해보았는데 최종 diffusion 생성 이미지가 해당 환경광과 consistent하지 않는 경우가 있어 부정확한 material로 이어졌다고 논문은 분석한다.
이러한 분석에 근거하여 DreamMat은 두가지 관점을 key idea로 제시한다. 첫번째로, distillation process에서 랜덤한 HDR 이미지를 환경광으로 선택하여 모델이 object의 material을 추정하는데 집중하도록 만든다. 두번째로, 새로운 geometry/light aware diffusion model을 제시하는데, 주어진 환경광에 consistent하게 이미지가 생성되도록 훈련되었다. Fig 3.c를 보면 untextured mesh에 입혀진 shading과 일치하게 shading이 적용된 것을 볼 수 있다. 이러한 새로운 geometry/light aware diffusion 모델을 distillation하여, DreamMat은 정확하게 materials를 생성할 수 있다. Contribution을 정리하자면 아래와 같다.
- Geometry/Light aware diffusion model을 제시함
- Text를 기반으로 특정 mesh에 대한 High-quality PBR Materials (Albedo / Roughness / Metallic)을 생성할 수 있는 새로운 Framework를 제시함
3. Method
3.1. Overview
BRDF에 대한 짧은 조사
BRDF(Bidirectional Reflectance Distribution Function)는 BTDF(Transmittance) / BSDF(Scattering)와 더불어 물체와 빛이 어떻게 상호작용 하는지를 설명하는 함수이다. BRDF의 경우, 빛이 물체에 부딪혔을 때 어떤 방향으로 얼마나 반사되는지를 나타낸다. PBR workflow에서 사실적인 표현을 위해 매우 중요하다고 한다.
BRDF는 입사각 벡터, 표면 위의 점, 반사각 벡터를 파라미터로 받으면 주어진 반사각으로 반사될 확률을 리턴하는 함수다. 식은 이며, 들어오는 빛의 근원 방향 , 빛의 시청자 방향 이 입력이다.
SVBRDF(Spatially Varying Bidirectional Reflectance Distribution Function)의 경우이러한 BRDF 식에 물체 표면 위의 위치 를 추가로 받는다.
결론적으로, BRDF나 SVBRDF는 물체와 빛의 상호작용(그 중에서도 반사되는 확률)에 대한 함수이고, BRDF와 SVBRDF의 특징은 아래와 같다
- BRDF: 물체 표면 전체에 걸쳐 균일한 반사 특성을 가정. 즉, 표면의 모든 지점에서 동일한 반사 특성을 갖음.
- SVBRDF: 물체 표면의 각 지점마다 다른 반사 특성을 가질 수 있음. 이는 실제 물체의 복잡한 표면 특성을 더 정확하게 표현할 수 있게 해줌.
간략한 그림은 아래와 같다
텍스쳐가 없는 메시와 텍스트 프롬프트가 주어졌을 때, DreamMat의 목표는 SVBRDF(Spatially Varying Bidirectional Reflectance Distribution Function) Material을 생성하는 것이다. 먼저 SVBRDF 재질을 표현하기 위해, hash-grid 기반의 representation을 사용하여 SVBRDF 매개변수를 저장하고, 이를 통해 메시를 렌더링한다.
이후, 렌더링된 이미지에 노이즈를 추가하고 Diffusion에 전달, hash-grid representation을 학습하기 위한 distillation loss를 얻는다. Bake된 조명과 그림자를 피하기 위해, Geometry/Light aware diffusion model을 활용한다. 생성된 Material은 메시의 제공된 또는 추출된 UV 맵 상에서 정의된 재질 맵으로 내보낼 수 있다.
3.2 Material Representation
이번 절에서는 논문에서 활용된 material representation과 이를 어떻게 image로 렌더링했는지를 소개한다. 논문에서는 Instant-NGP에 소개된 hash-grid 기반의 representation을 활용했는데, simplified Disney BRDF의 represent를 위해서다. 어떤 포인트 에서 albedo , roughness , metalness 을 포함한 BRDF 파라미터 값은 다음과 같이 계산된다.
여기서 는 해당 material parameter 를 가진 hash-grid-based representation이다. 궁극적으로는 주어진 object 표면 상의 모든 point 에 대한 BRDF parameter를 계산하기 위해서, 를 학습하는 것이 목표이다.
렌더링 방정식에 대한 내용
렌더링 방정식에 따르면, point 에서 방향으로의 color 은 아래와 같다.
여기서 는 입력 환경광을 나타내며, n은 normal 방향이다. 그리고 BRDF(함수) 는 Cook-Torrance microfacet specular shading model로 정의되며 아래 수식과 같다.
여기서 D, G, F는 각각 GGX, 법선(normal) 분포 함수(NDF), geometric attenuation and Fresnel term이다. 자세한건 아래를 참고
Cook-Torrance microfacet specular shading model에 대한 짧은 조사
(Perplexity 검색 결과)
Cook-Torrance microfacet specular shading model은 물리 기반 렌더링(PBR)에서 널리 사용되는 반사 모델입니다. 이 모델의 주요 특징과 개념을 쉽게 설명하면 다음과 같습니다:
- 미세면(Microfacet) 이론:
- 물체의 표면을 매우 작은 거울 조각들(미세면)의 집합으로 간주합니다.
- 이 미세면들의 방향과 분포가 물체의 전반적인 반사 특성을 결정합니다.
- 세 가지 주요 함수:
- Distribution 함수(D): 미세면들의 방향 분포를 나타냅니다. 표면의 거칠기를 표현합니다.
- Geometry 함수(G): 미세면들 사이의 그림자와 가림 효과를 계산합니다.
- Fresnel 함수(F): 빛이 표면에 부딪힐 때 반사되는 양을 계산합니다.
- 계산 방식:
- 최종 반사 강도 =
- : 입사각, : 반사각
- 물리적 정확성:
- 에너지 보존 법칙을 준수합니다.
- 실제 물리 현상을 더 정확하게 모사합니다.
- 다양한 재질 표현:
- 금속, 플라스틱, 유리 등 다양한 재질의 반사 특성을 표현할 수 있습니다.
- 성능과 품질의 균형:
- 실시간 렌더링에 적합한 수준의 계산 복잡도를 가집니다.
- 높은 시각적 품질을 제공합니다.
이 모델은 복잡해 보이지만, 실제 물리 현상을 근사하여 더 사실적인 렌더링 결과를 제공합니다. 게임 엔진이나 3D 그래픽 소프트웨어에서 널리 사용되어 현실감 있는 이미지를 만들어냅니다.
또한, 렌더링 방정식을 diffuse와 specular 요소로 분리하기 위해 importance-based Monte Carlo(MC) sampling 전략을 도입했다는 내용이 나오는데, 렌더링 방법론 쪽 설명이 왜이렇게 긴 것인지는 잘모르겠다. 자세한건 논문 참고.
3.3 Distillation Loss for Material Generation
Material representation은 처음에 랜덤하게 초기화되고, SDS(Score-Distillation) Loss를 통해 학습된다. 현재 material representation을 렌더링한 이미지 에 대해 노이즈 를 더해 를 얻는다. 그 다음 텍스트 프롬프트 를 함께 condition하여, diffusion model로 를 얻는다. 생성된 이미지와 기존 렌더링된 이미지의 차이 이 distillation loss 이며, 아래의 gradient로 를 학습시킨다.
Diffusion model을 통해 를 로 생성(Denoising)하면서, 는 보다 주어진 텍스트 프롬프트에 일치할 것이다. 그러므로 그 차이에 해당하는 를 최소화하는 것은 렌더링된 이미지를 주어진 텍스트 프롬프트에 align시키게 된다. 그러므로 위의 식은 렌더링을 주어진 텍스트와 일치시키기 위해서 점진적으로 material parameter 를 최적화 해나간다. (당연한 이야기를..)
저자들은 CSD(Classifier Score Distillation) Loss라는 SDS 변형을 채택했는데, 위의 그림처럼 SDS Loss보다 성능이 좋다고 한다. 식은 아래와 같은데, “oversaturated” / “ugly” / “underexposed” / “overexposed” 등의 negative prompt를 추가로 줬다는 얘기같다. (CSD 자체가 sds에서 cfg 컨셉을 쓸 수 있게 한 것 같다. 그래서 negative prompt를 줄 수 있고, 엄선한 negative prompt를 주었더니 더 잘된다는 이야기 인듯)
3.4 Geometry- and Light-aware Diffusion Model
저자들은 Geometry / Light condition을 줄 수 있는 ControlNet을 추가하여 Stable Diffusion 모델을 파인튜닝했다고 한다. 위의 Figure에서와 같이 Geometry condition은 Normal과 Depth이다. Light condition을 위해서는 사전 정의된 material을 활용했는데, 하얀색의 albedo color와 여러 Roughness/Metallic 조합이다. 이를 다양한 조명에서 렌더링했고, 이것이 Light ControlNet의 입력으로 제공되었다. 최종적으로 Objaverse 데이터셋을 활용하여 ControlNet을 fine-tunning 했다고 한다. (이미 Normal/Depth는 있으니, Light만 했겠지?) 결론적으로 Geometry와 Light에 Consistent한 이미지가 생성된다고 한다. Contribution은 Light ControlNet 학습 정도에 있을 것 같다.
3.5 Material Generation
이번 장에서는 DreamMat의 material generation process를 정리한다. Fig 4에서 볼 수 있듯, 주어진 input mesh에 대해 먼저 128개의 random viewpoint에 대해 5개의 랜덤 조명을 적용하여 계산해둔다. 각각의 distillation step에서는 랜덤한 viewpoint와 환경광에서 material representation을 렌더링한다. 다음으로는 diffusion을 태운뒤에 CSD loss를 계산하여 material representation의 parameter를 학습한다. CSD 이외로는 material smoothness loss를 적용하는데, 이 Loss는 material(roughness, metallic, albedo)들을 smoothing하는 용도라고 한다.
최종적으로는 Engine에서 활용할 수 있도록 학습된 material representation 를 샘플링하여 UV Map으로 구성한다.
4. Experiment
4.1 Implementation Details
Geometry- and Light-aware ControlNet은 Objaverse LVIS 서브셋으로 학습되었다고 하며, Diffusion model은 SD-2.1, 8개의 V100으로 학습했다고 한다.
5. Limitation and Conclusion
5.1 Limitation
- metallic과 roughness가 부정확할 수 있음
- 투명이나, 강한 반사 등과 같은 재질은 표현하지 못한다. 이는 BRDF 모델이 그러한 복잡한 material을 표현하지 못하기 때문이라고,
- 또한, 환경 맵에서 오는 직접적인 빛만 고려하고, 객체 자체에서 반사된 간접적인 빛은 고려하지 않기 때문에, 고반사성 물체의 경우 material이 부정확하게 나타날 수 있다
- 약 20분이 소요되어 시간이 오래걸린다.