๐ฅDSL 23-2 ๋ชจ๋ธ๋ง ํ๋ก์ ํธ ์ฐ์ํ ์ ์ ๐ฅ
ํ๋ก์ ํธ ๊ฒฐ๊ณผ๋ฌผ๋ก ๊ตฌ์ฑํ ๋ฉํ๋ฒ์ค ์ ์ํ์ ๋๋ฌ์ค์ธ์!
โช๏ธ๐ผ๏ธ ๋ฉํ๋ฒ์ค ์ ์ํ
์ฐ์ธ๋ํ๊ต ๋ฐ์ดํฐ์ฌ์ด์ธ์ค ํํ Data Science Lab 9๊ธฐ & 10๊ธฐ,
Team CV_B,
๊น์์ง | ๋ฐ์์ฐ | ์คํ์ง | ์์ ๋ฏผ |
๐๏ธ ๋ฐํ ์์ โ ์ถํ ์ถ๊ฐ ์์
๐ ๋ฐํ ์๋ฃ
Data Science Lab 23-2 ๋ชจ๋ธ๋ง ํ๋ก์ ํธ์์ ์ ๋ณด์ธ CV_B ํน๋ณ์ ์ ์ค์ ์ฌ๋ฌ๋ถ์ ํ์ํฉ๋๋ค!
์ด๋ฒ ์ ์๊ฐ ํน๋ณํ ์ด์ ๋
์ฒซ ๋ฒ์งธ, ์ผ์์ ์ธ ํ๊ฒฝ์ ํ๊ฐ๋ค์ ํํ์ผ๋ก ์ฌํด์ํ๋ค๋ ๊ฒ,
๋ ๋ฒ์งธ, ์ด๋ฅผ 3D๋ก ๊ตฌํํ์ฌ ์
์ฒด๊ฐ์ ๋ถ์ด๋ฃ์๋ค๋ ๊ฒ์
๋๋ค.
์ ์๋ ์ํ ์์ฑ์ ํ์ดํ๋ผ์ธ์ ๋ฐ๋ผ ๋ค์์ ๋ ์ฝ๋๋ก ๊ตฌ์ฑ๋์ด ์์ต๋๋ค.
- AdaIN์ ํตํ ๊ณ ์ ๊ณผ์ ๋ง๋จ
- NeRF๋ฅผ ํตํด ์ด์๋ ์ ์ฒด
์๋์ ๊ด๋๊ฐ ์ฌ๋ฌ๋ถ์ ์ดํด๋ฅผ ๋์ธ ํด์ค์ ์ค๋นํ์ผ๋, ํจ๊ป ๋๋ฌ๋ณด์๊ฒ ์ต๋๋ค!
- Style Transfer ๋ชจ๋ธ AdaIN(Adaptive Instance Normalization)
- 3D view๋ฅผ ์์ฑํ๋ ๋ชจ๋ธ NeRF(Neural Radiance Fields)
๋ฅผ ํ์ฉํด, ๊ธฐ์กด NeRF ๋ฐ์ดํฐ์ ์ ํํ์ ์ ํ๊ณ 3D๋ก ๊ตฌํํ๋ ํ๋์ ํ์ดํ๋ผ์ธ์ ์์ฑํ์์ต๋๋ค.
-
NeRF LLFF(Local Light Field Fusion)
- ์ผ์ ๊ฑฐ๋ฆฌ์์ front-facing
- ๊ณ ํด์๋
- 8๊ฐ์ scene
style transfer ๋ชจ๋ธ์ธ AdaIN ์ Adaptive Instance Normalization์ ์ฝ์๋ก,
adaptive๋ผ๋ ์ด๋ฆ์ฒ๋ผ ๋ฏธ๋ฆฌ ํ์ตํ์ง ์์ ์ด๋ฏธ์ง์ ๋ํด์๋ transfer๊ฐ ๊ฐ๋ฅํฉ๋๋ค.
๊ธฐ์กด CIN(Conditional Instance Normalization)์ learned parameter
์คํ์ผ ์ด๋ฏธ์ง์ ํ๊ท ๊ณผ ๋ถ์ฐ์ด๋ผ๋ ํต๊ณ๋์ผ๋ก ๋์ฒดํ์ฌ
- ํ์ต์์ผ์ผ ํ ํ๋ผ๋ฏธํฐ๋ฅผ ์ค์ด๋ฉด์
- ์์์ ์คํ์ผ์ ๋ํด์๋ ์ ์ฉ ๊ฐ๋ฅํ ๋ชจ๋ธ์ ๊ตฌ์ถํ์ต๋๋ค.
๐ฏQ. style transfer๋ฅผ ์ํด AdaIN ์ ์ ํํ ์ด์ ?
โ ์ด๋ฒ ํ๋ก์ ํธ๋ฅผ ํตํ ์ต์ข
์ ์ธ ๋ชฉํ๋ style transfer์ NeRF ๋ชจ๋ธ์ ํฉ์ณ end-to-end๋ก
์คํ์ผ๋ง๋ ์ด๋ฏธ์ง์ 3D view๋ฅผ ์์ฑํ ์ ์๋ ๋ชจ๋ธ์ ๊ตฌ์ถํ๋ ๊ฒ์
๋๋ค.
- NeRF์ ๊ตฌ๋ ์๊ฐ์ด ์ค๋ ๊ฑธ๋ฆฌ๋ ๋งํผ style transfer ๊ณผ์ ์ ์ต๋ํ ๊ฐ์ํ
(์์์ ์ด๋ฏธ์ง์ ๋ํด์๋ ๊ตฌ๋ ๊ฐ๋ฅํ๋ฉด์ GAN์ฒ๋ผ heavyํ์ง ์์ AdaIN ์ ํ) - Style-GAN ๋ฑ style transfer GAN ๋ด๋ถ์์ ํต์ฌ์ ์ธ ์คํ์ผ๋ง ์๋ฌด ๋ด๋นํ๋ ๊ฒ๋ ์ฌ์ค์ AdaIN
NeRF ๋ 9๊ฐ์ FC layer๋ก ๊ตฌ์ฑ๋(MLP) 3D view synthesis ๋ชจ๋ธ์
๋๋ค.
view synthesis๋ ๋ช ๊ฐ์ ์์ ์์ ์ดฌ์๋ ๋ถ์ฐ์์ ์ด๋ฏธ์ง๋ก๋ถํฐ ์์ง ๋ชปํ๋ ์์ ์์์ ๋ชจ์ต์ ์ถ์ธกํ์ฌ
์ด๋ฏธ์ง๊ฐ ์ฐ์์ ์ผ๋ก ๊ตฌ์ฑ๋ ์ ์๋๋ก ํ๋ ๊ธฐ์ ์
๋๋ค.
์ผ๋ถ ์์ ์์์ 2D ์ด๋ฏธ์ง๋ง ์ฃผ์ด์ ธ๋, ๋๋จธ์ง ์์ ์์์ ์ด๋ฏธ์ง๋ค์ ์์ฑํด๋ผ ์ ์๊ธฐ ๋๋ฌธ์
์ด๋ค์ ๋ชจ๋ ํฉ์น๋ฉด ๋ฌผ์ฒด๋ฅผ ์
์ฒด์ ์ผ๋ก ๋ณด๋ ๊ฒ๊ณผ ๊ฐ์ ํจ๊ณผ๋ฅผ ์ป์ ์ ์๋ ๊ฒ์
๋๋ค.
- input: ๋ฌผ์ฒด์ ์์น ์ ๋ณด (x, y, z), ๋ฐฉํฅ ์ ๋ณด (
$\theta, \phi$ )
In our model...,- ์์น ์ ๋ณด (x, y, z): stylized ์ด๋ฏธ์ง์ ๊ฐ
- ๋ฐฉํฅ ์ ๋ณด (
$\theta, \phi$ ): ๊ธฐ์กด NeRF ๋ฐ์ดํฐ์ (LLFF)์ ๊ฐ
- output: (์๋กญ๊ฒ ์์ฑํ๊ณ ํ view์์์) ๋ฌผ์ฒด์ RGB๊ฐ, density๊ฐ(ํฌ๋ช ๋์ ์ญ์)
- ์๋กญ๊ฒ ์์ฑํ๊ณ ํ view๋ก๋ถํฐ ๋ฌผ์ฒด๋ฅผ ํฅํด ray ๋ฐ์ฌ
- ray ์์ ์ฌ๋ฌ ํฌ์ธํธ sampling โ ๊ฐ ํฌ์ธํธ์์์ output ์์ธก
- ์ฒ์ 8๊ฐ FC layer: ์์น ์ ๋ณด (x, y, z)๋ง ํต๊ณผ์์ผ density ์์ธก
- ๋ง์ง๋ง 1๊ฐ FC layer: ๋ฐฉํฅ ์ ๋ณด (
$\theta, \phi$ )๋ฅผ ํฉ์ณ RGB ์์ธก
(1) Positional Encoding
5์ฐจ์์ ์ ์ฐจ์ input โ ๊ณ ์ฐจ์์ผ๋ก ๋งคํ, high-frequency ์ ๋ณด ๋ณด์กด
(2) Volume Rendering
๋ชจ๋ธ์ output์ธ ํ ray์์ ์ฌ๋ฌ sample ํฌ์ธํธ์์์ RGB, density๊ฐ์ ํ๋์ pixel๋ก ๋ณํฉ
.mp4๋ฅผ .gif๋ก ๋ณํํ์ฌ ์
๋ก๋ํ๋ ๊ณผ์ ์์ ๋ถ๋์ดํ๊ฒ ํ์ง ์ ํ๊ฐ ๋ฐ์ํ์ฌ
์๋ณธ์ ๋ฉํ๋ฒ์ค ์ ์ํ์์ ํ์ธ ๋ถํ๋๋ฆฝ๋๋ค!
input | output |
---|---|
input | output |
---|---|
-
-
๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ค์น ๋ฌธ์ ๋ก Colmap ์ฌ์ฉ ์คํจ
colmap์ ํตํด ์นด๋ฉ๋ผ ๋งค๊ฐ๋ณ์๋ฅผ ์ง์ ์ป๋ ๋ฐ ์คํจํ์ฌ ๊ธฐ์กด ๋ฐ์ดํฐ์ ์ positional encoding ๋ณ์ ํ์ฉ -
๋ชจ๋ธ size
Tensorflow ๊ธฐ๋ฐ ๊ณต์ ์ฝ๋์ ๋ชจ๋ธ ์ฌ์ด์ฆ ๋ฐ ๋ฐ์ดํฐ์ ์ด ์ปค์ PyTorch ๋ฒ์ ์ผ๋ก ์ฌ์ค๊ณ, ์๋ฒ ํ์ฉ ํ์ต
-
-
- end-to-end ๋ชจ๋ธ๋ก ์์ฑํ๊ธฐ ์ํ ์์ ์งํ ์ค
- ๋ณด๋ค ๋ฐ์ ๋ ๋ฒ์ ์ NeRF ์ฌ์ฉํ์ฌ ๋ชจ๋ธ ๊ณ ๋ํ
- ์ง์ ์ดฌ์ํ ์ด๋ฏธ์ง๋ก๋ ํ์ต ์์
(end-to-end๋ก ์์ฑํ๋ ์์ ๋ง๋ฌด๋ฆฌ ์ดํ ์ถ๊ฐ ์์ )
python run.py --config configs.txt
- main (์ค์ ๊ตฌ๋ํ๋ ํ์ผ)
main.py
- model (๋ชจ๋ธ ๋ด๋ถ ๊ตฌ์กฐ ํ์ผ)
encoder.py
decoder.py
- data (์ฌ์ฉํ ๋ฐ์ดํฐ or ๋ฐ์ดํฐ ์์ฑ ํ์ผ) (์์์ ๋๋ค! ๊ฐ ํ์ ํ๋ก์ ํธ ํ์ผ ๊ตฌ์กฐ์ ๋ฐ๋ผ ์์ ๋กญ๊ฒ ์์ฑํด์ฃผ์ธ์)