https://www.youtube.com/watch?v=Exn-C6Fvxt0&t=4s
Motivation
๋์์ด๋๊ฐ ๊ฒ์ ์ ์์ ํ์ํ 3d mesh๋ฅผ ์ ์ํ๊ธฐ ์ํด์๋ ๋ง์ ์๊ฐ์ด ํ์ํฉ๋๋ค. ๊ฒ์ ๊ฐ๋ฐ์๋ค ๋ํ ๋์์ด๋๊ฐ ์๊ฐ ๋ด์ asset์ ์ ์ํ์ง ๋ชปํ๊ฑฐ๋, ํ์ ๋์์ด๋๊ฐ ์์ด ์์ ์คํ ์ด์์ ์ํ๋ 3d assets์ ๊ตฌํ์ง ๋ชปํด ์ด๋ ค์์ ๊ฒช๊ธฐ๋ ํฉ๋๋ค.
text ๋ฅผ ์ ๋ ฅํด 2d image๋ฅผ ์์ฑํด๋ด๋ AI๊ฐ ๋ฑ์ฅํ๋ฉด์ ์ด๋ฌํ ๊ธฐ์ ์ ์ด์ฉํด text ๋ฅผ ์ ๋ ฅํด 3d mesh๋ฅผ ์์ฑํด๋ผ ์ ์๋ค๋ฉด ๊ฒ์ ์ฐ์ ์ ํฐ ๋์์ด ๋ ๊ฒ ๊ฐ์ ์ด ํ๋ก์ ํธ๋ฅผ ์์ํ๊ฒ ๋์์ต๋๋ค.
Target Paper
https://github.com/ashawkey/stable-dreamfusion
What is DreamFusion?
DreamFusion์ text๋ฅผ ์ ๋ ฅ ๋ฐ์ 3d mesh๋ฅผ ์์ฑํด๋ Generative AI์ ๋๋ค. DreamFusion์ process๋ ํฌ๊ฒ 2๊ฐ์ง ๊ณผ์ ์ผ๋ก ๋๋์ด ๋ณผ ์ ์์ต๋๋ค.
-
Diffusion Model
: Text to Image Generation
์์ฑ ๋ชจ๋ธ์ ์ผ์ข ์ผ๋ก ์ ๋ ฅ ๋ฐ์ดํฐ๋ก๋ถํฐ ๋ ธ์ด์ฆ๋ฅผ ์กฐ๊ธ์ฉ ์ถ๊ฐํ๋ฉด์ ์ต์ข ์ ์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ์์ ํ ๋ ธ์ด์ฆ๋ก ๋ง๋ญ๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ด๋ก๋ถํฐ ์ ์ฐจ ๋ ธ์ด์ฆ๋ฅผ ์ ๊ฑฐํด๊ฐ๋ฉฐ, ๋ฐ์ดํฐ๋ฅผ ๋ณต์ํด๋๊ฐ๋ ๊ณผ์ ์ ํ์ตํฉ๋๋ค.
๊ทธ ์ค Latent Diffusion Model์ Pixel space์์ ํ์ต์ ์งํํ๋ ๊ธฐ์กด Diffusion model๊ณผ๋ ๋ฌ๋ฆฌ ๋์ฑ ์ ์ฐจ์์ธ Latent space๋ก ์ด๋ฏธ์ง๋ฅผ ์๋ฒ ๋ฉํด ๋ ธ์ด์ฆ๋ฅผ ์ ๊ฑฐํ๋ฉฐ ํ์ตํฉ๋๋ค. ์ด๋ฅผ ํตํด ๋น ๋ฅธ ์๋์ ์ ๋น์ฉ์ผ๋ก ๋ค์ํ ์ด๋ฏธ์ง๋ฅผ ์์ฑํฉ๋๋ค.
-
NeRF
: Image to 3D Mesh Generation
๋ค์ํ ๊ด์ ์์์ ์ด๋ฏธ์ง ์ ๋ ฅ์ผ๋ก๋ถํฐ ๊ฐ์์ 3D ๊ณต๊ฐ์์ ์์ ์์ ์๋ RGB ๊ฐ๊ณผ Density ๊ฐ์ ๊ฐ์ง ์ ๋ค์ ํฉํ๋ฉด์ ํน์ ๊ด์ ์์์ View๋ฅผ ๋ ๋๋งํฉ๋๋ค. ์ด View์ ์๋ณธ 2D ์ด๋ฏธ์ง ์ฌ์ด์ ์ฐจ์ด๋ฅผ ์ต์ํํ๋ฉฐ ํด๋น 3D ๊ณต๊ฐ์ ๊ตฌ์ฑํ๋ ๋ชจ๋ ์ขํ์ RGB, Density๊ฐ์ ์ถ์ ํ๊ณ ์ต์ข ์ ์ผ๋ก 3D ๋ณต์์ ํ์ตํฉ๋๋ค.
์ด๋, 2D image์์ 3D data๋ฅผ ์ ์์ฑํ๋๊ฐ์ ๋ํ ์งํ๊ฐ ํ์ํฉ๋๋ค. ์ด ๋ ผ๋ฌธ์์๋ SDS๋ผ๋ object function์ ์ ์ํฉ๋๋ค. ์ด object function์์์๋, NeRF๊ฐ ์์ฑํ๊ณ ์๋ 3D ๋ฐ์ดํฐ(ํน์ ๊ทธ๊ฒ์ ๋ ๋๋ง ๊ฒฐ๊ณผ๋ฌผ)์ Volume์ด ์ ๋ง ๊ทธ ๋ฌผ์ฒด์ ๋ํ ์ ๋ณด๋ฅผ ์ ๋ฐ์ํ๊ณ ์๋์ง๋ฅผ Diffusion Model์๊ฒ ๊ฒ์ฌ๋ฅผ ๋ฐ๋ ๊ตฌ์กฐ๋ก ์ ์๋์ด ์์ต๋๋ค. ์๋ ๊ทธ๋ฆผ์๋ ์ด ์ ์ฒด์ ์ธ ๊ณผ์ ์ ๋ํ Overview๊ฐ ๋ด๊ฒจ์์ต๋๋ค.
What is the problem of DreamFusion?
์ด๊ธฐ ๋ชฉํ๋ ๊ฐ๋ฐ์ ์ฌ์ฉํ ์ ์๋ 3D mesh๋ฅผ ๋๊ตฌ๋ ์์ฝ๊ฒ ์์ฑํ๋๋ก ํ๋ ๊ฒ์ด์์ต๋๋ค. ๊ทธ๋ฌ๋ DreamFusion์ด ์๊ตฌํ๋ Computational Cost๋ ๊ต์ฅํ ๋์์ต๋๋ค. ์ด๋ก ์ธํด ํ์ํ ๋งํผ ์ถฉ๋ถํ ์ฐ์ฐ์ ํ์ง ๋ชปํ๊ณ ์์ํ ๊ฒ๊ณผ ๋ค๋ฅธ low qualiy์ ๊ฒฐ๊ณผ๋ฌผ์ด ๋์ค๊ฒ ๋์์ต๋๋ค.
(์ด๋ค ๋ชจ๋ธ์ธ์ง ์๋ณ์ ๊ฐ๋ฅํ์ง๋ง ์ค์ ๋ก ์ฌ์ฉํ๊ธฐ์ ํ๋ฆฌํฐ๊ฐ ๋จ์ด์ง๋ค.)
Analysis & Solution
๊ฐ์ ๋ฐฉํฅ์ ์ ํ๊ธฐ ์ํด ๊นํ๋ธ๋ฅผ ๋น๋กฏํ ๊ฐ์ข ์ปค๋ฎค๋ํฐ์์ ์ต๊ทผ ์ด๋ฃจ์ด์ง๊ณ ์๋ ์ฐ๊ตฌ๋ค์ ์ดํด๋ณด์์ต๋๋ค. Text ๊ธฐ๋ฐ 3d generation์ ์ง์ํด์ ๋ฐ์ ํด๋๊ฐ๊ณ ์๋ ๋ถ์ผ๋ก ํ๋ฐํ ๋ ผ์๊ฐ ์ด๋ฃจ์ง๊ณ ์์์ต๋๋ค. ๊ทธ ์ค Dreamfusion ์ ํ์ฒ๋ฆฌ๋ฅผ ํ๋ ๋ค์ํ ๊ฐ์ ๋ฐฉ๋ฒ๋ค๋ ์์์ต๋๋ค. ์ฌ๊ธฐ์์ ์ธ์ฌ์ดํธ๋ฅผ ์ป์ด Dreamfusion ์ผ๋ก ์ ์ํ 3D mesh์ ํ์ฒ๋ฆฌ๋ฅผ ํตํ ํ์ง ๊ฐ์ ์ผ๋ก ๋ฐฉํฅ์ฑ์ ์ก์ ํ๋ก์ ํธ๋ฅผ ์งํํ์์ต๋๋ค.
์์ฑ๋ 3D mesh์ ๊ฒฐ๊ณผ๋ฌผ์ด low quality๋ก ๋ณด์ด๋ ์ด์ ๋ฅผ ๋ค์๊ณผ ํฌ๊ฒ ๋๊ฐ์ง๋ก ๋ถ์ํ์ต๋๋ค.
- mesh๊ฐ ๊ฐ์ง๋ ๊ฑฐ์น ํ๋ฉด
- ํ ์ค์ฒ์ noise๋ฅผ ์ถฉ๋ถํ ์ ๊ฑฐํ์ง ๋ชปํด ๊ฐ์์ฑ์ด ๋จ์ด์ง๋ ๊ฒ
์ด ๋๊ฐ์ง ๋ฌธ์ ์ ์ด์ ์ ๋ง์ถ์ด ํ์ฒ๋ฆฌ ์๊ณ ๋ฆฌ์ฆ์ ํตํด ํ์ง๊ฐ์ ์ ํ์์ต๋๋ค
์๋ ์ฌ์ง์ post-processing pipeline์ ์ ๊ณผ์ ์ ๋ด์ overview์ ๋๋ค.
Subdivision
: Loop Subdivision
- ๋ฐ๋ณต์ ์ผ๋ก ์๋ก์ด faces & vertexes๋ฅผ ๋ง๋ค์ด๋์ผ๋ก์จ Resolution์ ๋์ด๋ ์๊ณ ๋ฆฌ์ฆ
- Effect : ์ด์ด์ง๋ Remeshing ๊ณผ์ ์์ Resolution์ด ๋จ์ด์ง๋ ๊ฒ์ ๋๋นํด vertices upsampling
- Reference : โSmooth Subdivision Surfaces Based on Trianglesโ, Charles Loop
Remeshing
: Isometric Remeshing
- Edge๋ฅผ ๋ถํ ํ๊ฑฐ๋ ์ ๊ฑฐํจ์ผ๋ก์จ, ๋ถ๊ท์นํ ๋ชจ์์ ์ผ๊ฐํ๋ค์ ์ ์ผ๊ฐํ์ ๊ฐ๊น๊ฒ ๋ฐ๊พธ๋ ์๊ณ ๋ฆฌ์ฆ
- Effect : ๋์์ ํน์ง์ ์ ์งํ๋ฉด์, ๊ฑฐ์น ํ๋ฉด์ smoothingํ๋ ํจ๊ณผ
- Reference : โGeneric remeshing of 3D triangular meshes with metric-dependent discrete Voronoi Diagramsโ, IEEE 2008
Laplacian Smoothing
- mesh์ ๊ฐ vertex์ ๋ํด ๋ผํ๋ผ์์ ์ฐ์ฐ์๋ฅผ ๊ณ์ฐ
- ๋ผํ๋ผ์์ ์ฐ์ฐ์: ๋ฉ์ฌ์ ๊ตฌ์กฐ์ ์ฐ๊ฒฐ์ฑ์ ๋ํ๋ด๋ ํ๋ ฌ๋ก, ๊ฐ ์ ์ ์ ์ด์๊ณผ์ ๊ด๊ณ๋ฅผ ๋ฐ์ํ๋ค. ์ ์ ๊ณผ ์ด์ ์ ์ ๊ฐ์ ๊ฑฐ๋ฆฌ ๋๋ ๊ฐ์ค์น๋ฅผ ์ฌ์ฉํ์ฌ ์ฐ์ฐ์๋ฅผ ๊ณ์ฐํ๋ค.
- Smoothing Iteration
- ๋ผํ๋ผ์์ ์ฐ์ฐ์๋ฅผ ์ฌ์ฉํ์ฌ ๊ฐ ์ ์ ์ ์์น๋ฅผ ํ์ฌ ์์น์ ์ธ์ ํ ์ ์ ์ ํ๊ท ๊ฐ์ผ๋ก ์ ๋ฐ์ดํธ
- ์ ๋ฐ์ดํธ๋ ์ ์ ์์น๋ก mesh๋ฅผ ์ ๋ฐ์ดํธ
- mesh์ ํ์ฌ ์ํ๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ๋ค์ iteration์์ ์ฌ์ฉ๋ ๋ผํ๋ผ์์ ์ฐ์ฐ์๋ฅผ ์ ๋ฐ์ดํธ
- mesh์ ๊ฐ vertex์ ๋ํด ๋ผํ๋ผ์์ ์ฐ์ฐ์๋ฅผ ๊ณ์ฐ
- Effect : ์ด์ vertex์ ํ๊ท ๊ฐ์ผ๋ก ํ์ฌ vertex๋ฅผ updateํ๋ฉฐ ๋ชจ๋ vertex๋ฅผ ์ํํ๋ iteration์ ๋๋ฉด์ ๋งค๋ํ ํํ์ ์ป์ ์ ์๋ค.
- Reference : โImproved Laplacian Smoothing of Noisy Surface Meshes" J. Vollmer, R. Mencl, and H. Muller*
DDMP
- Input : ๋จ์ผ noisyํ mesh ๋ฐ smoothing๋ mesh
- Process : 2๊ฐ์ GCN(PosNet, NormNet)์ ์ฌ์ฉํด, ์๋ก ์ํธ์์ฉํ๋ฉฐ mesh๋ฅผ denoising
- Effect :
- ์ฌ์ ํ๋ จ๋ฐ์ดํฐ๋ Noise๊ฐ ์๋ ์๋ณธ mesh์์ด๋, noisyํ ๋ฐ์ดํฐ๋ก๋ถํฐ ํํ ๋ฐ ๋ํ ์ผ์ ์ต๋ํ ๋ณด์กดํ๋ ๋ฐฉ์์ผ๋ก denoising๊ฐ๋ฅ. (self-prior)
- noisy level์ ๋ฐ๋ผ ์๋์ผ๋ก denoising step์ ์ง์ ํ ํ์๊ฐ ์์.
- Reference : โLearning Self-prior for Mesh Denoising using Dual Graph Convolutional Networksโ,ย ECCV2022*
- Upscaling: ESPCN(Efficient Sub-Pixel Convolutional Neural Network)
- Texture ์ฒ๋ฆฌ ์ ํ์ง(ํน์ง)๋ณด์กด์ ์ํ ์์
- Denoising : Non Local Mean Filter
- Color Quantization : K-Means Clustering
- ๊ฐ์์ฑ ๋ณด์์ ์ํ ๊ธฐ์
- Pixel๋ค์ Color๊ฐ์ K-Means Clustering์ ํตํด ์ ๋ ฌ
- Unreal Engine 5
- CUDA
- PyTorch
- Python