https://shunsukesaito.github.io/PIFuHD/
https://www.youtube.com/watch?v=uEDqCxvF5yc
Abstract
image-based 3D human shape estimation은 Deep Neural Network의 등장으로 급격히 발전했다. 하지만, real world setting에서는 input image의 detail을 살리는데 어려움을 겪는데, 이 논문의 저자들은 이러한 어려움의 원인을 2가지 conflicting requirements에서 찾았다.
- Accurate predictions require large context, but precise predictions require high resolution
- Due to memory limitations in current hardware, previous approaches tend to take low resolution images as input to cover large spatial context, and produce less precise [or low resolution] 3D estimates as a result
이 문제를 이 논문에서는 end-to-end로 training이 가능한 multi-level architecture로 해결하려고 했다.
Coarse level은 image를 전체적으로 low resolution에서 본 다음 전체적인 reasoning에 focusing을 하는데 이 과정이 미세한 level에 context를 부여하게 된다고 한다.
이를 통해 이 논문에서는 SOTA를 달성했다고도 한다.
Introduction
Multi-view system에서 정확한 사람의 reconstruction은 지금 당장도 가능은 하지만, 엄격한 환경적 제약 [많은 카메라, 제어된 illumination 등]으로 인해 비싸고 deploy가 힘들기 때문에 전문적인 capture system에 의존하고 있다.
Deep learning을 사용하게 되면서 capacity는 증가했지만, 여전히 전문적인 capture system과 비교하면 성능이 낮은 편이였다.
이 작업의 목표는 single image에서 옷을 입고 있는 사람이나 사람의 표정, 손가락 등과 같이 detail을 요구하는 information을 충분한 resolution으로 high-fidelity 3D reconstruction을 하는 것이다. 이러한 detail을 복원하는 것은 이전 논문인 PIFu에서도 언급이 되었었지만 memory 용량을 굉장히 많이 차지하게 되고 graphic을 처리하는 작업 특성상 충분한 memory 용량이 필요하게 된다.
이러한 한계를 극복하기 위해 저자들은 2가지 camp로 한계점을 분류했다고 한다.
- Coarse-to-fine manner : 이 방식으로 decompose를 하게 되면 low-fidelity의 위로 high-frequency detail들이 emboss되게 된다. 이 접근 방식에서는 낮은 resolution으로 coarse shape를 얻는다. 그 뒤 surface normal이나 displacement로 표현된 detaail들은 Shape From Shading이나 Neural network안의 composition 같은 후처리 기법들로 추가된다고 한다.
https://cdlee479.tistory.com/8 - Emply high-fidelity models of humans to hallucinate plausible detail
이 두 방식 모두 detail하게 보이는 reconstruction을 수행하지만, input image에 주어져 있는 true detail을 faithful하게 복원하지는 않는다.
따라서 이 논문에서는 end-to-end multi-level framework를 사용해서 pixel-alogned 방식으로 clothed human의 3D geometry를 어떠한 후처리 기법 없이 원본 이미지와 유사한 detail을 reconstruct하려고 시도했다고 한다. 이 방식의 경우 어떠한 explicit geometric representation이 coarse level에서 사용되지 않기 때문에 coarse-to-fine level과 다르고, 그 대신에 implicitly encoded geometrical context가 geometry를 미리 explicit하게 결정하는 것 없이 higher level로 propagate 했다고 한다.
이 논문의 base는 이름에서도 알 수 있듯이 Pixel-Aligned Implicit Function [PIFu]이고, PIFu에 대한 설명은 이전 posting을 참고하길 바란다.
Pixel-aligned로 하게 되면 원초적인 방식으로 high-resolution input으로 부터 image feature와 전체적인 embedding을 이음매 없이 fuse할 수 있다.
마지막으로, 완전한 reconstruction을 하기 위해 앞모습에 대한 single image로는 알 수 없는 사람의 뒷모습에 대한 정보가 필요하다. Low resolution input의 경우 missing information은 smooth, blurred estimate를 야기할 뿐이기 때문에 이 논문에서는 backside normal을 만들기 위해 image-to-image translation을 leveraging함으로써 극복했다고 한다.
Main Contribution
- An end-to-end trainable coarse-to-fine framework for implicit surface learning for high-resolution 3D clothed human reconstruction at 1k image resolution
- a method to effectively handle uncertainty in unobserved regions such as the back, resulting in complete reconstructions with high detail
Related Work
Single-View 3D Human Digitization
최근에 소개된 PIFu의 경우 explicit하게 output space를 구분하지는 않지만, 주어진 3D location의 occupancy를 결정하는 함수를 regress한다. 이 방식의 경우 전체 output volume의 분류에 대한 정보를 유지하지 않고 high-fidelity 3D geometry를 reconstruct하기 때문에 강점이 있다. 게다가 global feature vector를 사용하는 implicit surface representation과는 달리 PIFu는 fully convolutional image feature를 사용해서 input image의 local detail을 reconstruct한다.
High-Resolution Synthesis in Texture Space
최근에 소개된 많은 연구들은 geometric, color detail을 estimate하는 texture map을 사용해서 high-quality 3D texture나 geometry를 reconstruct하려고하는 경향이 높다고 한다. 특히 Tex2Shape라는 논문에서는 unwrapped UV space에서 displacement를 regressing함으로써 high quality 3D geometry를 reconstruct 하려고 했다고 한다.
Tex2Shape: Detailed Full Human Body Geometry From a Single Image
하지만, 이러한 종류의 접근법의 경우 template mesh의 topology (예를 들어 다양한 헤어 스타일이나 옷 종류 등)와 UV parameterization을 위해 선택된 topology [예를 들어 visible seam artifacts around texture seams]에 의해 매우 제한적이라고 한다.
또한 최근의 연구들은 neural network 모델들을 최종 3D geometry output을 reconstruct하는데 사용되는 intermediate texture나 depth representation을 예측하기 위해 사용했다고 한다.
이 논문도 이러한 연구들 처럼 high quality / resolution의 synthetic human image를 생성하려고 했다고 한다.
Method
PIFu의 경우 512x512 resolution의 image를 input으로 하고 128x128의 low resolution feature embedding을 얻기 위해 설계되었다. 이것보다 더 높은 resolution을 갖는 output을 얻기 위해 이 논문에서는 fine module이 1024x1024의 high-resolution image들을 input으로 받아서 512x512의 high resolution image feature들로 encoding하는 pixel-aligned prediction module을 PIFu framework 위에 추가적으로 쌓아서 해결하려고 했다고 한다. Occupancy probability field를 예측하기 위해 첫 번째 모듈로 부터 3D embedding들을 사용한 것처럼 두 번째 module은 high-resolution field를 사용했다고 한다.
Pixel-Aligned Implicit Function
PIFu의 경우 이전 posting에서 자세히 설명했으니 간단히만 설명하자면, 3D human digitization은 dense 3D volume의 occupancy를 estimating하는 것이 목표가 되는데, 3D volume occupancy의 의미를 보면 3D space에 point들이 인간의 몸의 내부에 있는지 외부에 있는지로 구분하는 것이라고 생각을 하면 된다.
Target 3D space가 구분되어 있고 algorithm들이 각각의 voxel의 occupancy를 측정하는데 focusing이 되어있는 반면에 PIFu는 continuous camera space X에서 주어진 3D position의 binary occupancy만 예측을 해서 function f(X)를 예측하는 것이 목표이다.
PIFu는 이 예측 과정을 end-to-end 방식으로 neural network를 통해 진행을 한다.
이 방식의 경우 memory 효율이 좋고 target 3D volume을 위해 discretization이 필요하다.
조금 더 구체적으로 살펴보면 예측한 함수 f의 경우 처음으로 Pi[X]=x에서의 2 projected 2D location으로 부터 image feature Phi[x,I]를 뽑아낸 뒤 query 3D point X의 occupancy를 측정한다.
이를 식으로 나타내면 다음과 같다.
Limitations
PIFu와 다른 연구에서의 input size와 image feature resolution은 기껏해야 512x512 size와 128x128 resolution에 머물러 있는데 이는 계속 언급한 memory의 한계 때문이다.
더 중요한 것은, network의 receptive field가 holistic image를 커버하도록 설계가 되서 consistent depth inference를 위해 holistic reasoning을 사용할 수 있어야 한다. 따라서 bottom-up / top-down architecture의 반복이 일반적인 성능을 가진 robust 3D reconstruction을 수행하는데 중요한 역할을 했다.
이 방식이 network가 detail을 leverage하는데 도움이 되지만, input image와 feature embedding이 더 높은 resolution을 갖지 못하게 한다는 문제가 있다. 또한 이론상 PIFu의 continuous representation이 임의의 resolution에서 3D geometry를 표현할 수 있다고 알고 있지만, feature resolution에 의해 expressiveness의 boundary가 생겨버린다는 점도 한계점으로 존재한다.
따라서 holistic reasoning에 의해 얻는 robustness와 더 높은 resolution을 갖는 feature embedding에 의한 expressiveness의 균형을 맞출 더 효율적인 방식의 필요성을 느끼게 되었다고 한다.
Multi-Level Pixel-Aligned Implicit Function
더 높은 resolution을 갖는 input image를 사용하기 위해 512x512의 resolution을 갖는 PIFu를 upgrade해서 1024x1024 resolution의 input을 사용하기 위한 multi-level approach를 이 논문에서 제안했다.
- PIFu와 비슷한 coarse level은 downsampling된 512x512 image를 input으로 사용해서 global geometric 정보를 모으고 128x128 resolution을 갖는 backbone image feature를 만들어 낸다
- 그 뒤 1024x1024 resolution image를 input으로 가져서 더 detail한 부분에 focusing을 하는 fine level이 512x512 resolution을 갖는 backbone image feature를 뽑아내게 된다.
주목할 점은 fine level module이 절대적인 depth 값이 아니라 coarse level에서 뽑아낸 3D embedding feature를 사용한다는 점이다.
이 논문에서의 Coarse level의 경우 PIFu와 비슷하게 설계가 되었지만, 뒤에서 나올 Front-to-Back Inference라는 차이점이 존재한다.
Fine level은 다음과 같다.
가장 중요한 차이점은 receptive field가 전체 image를 커버하지는 못하지만, 이것의 fully convolutional architecture 때문에 networks는 random sliding window로 training 될 수 있고 원본 image의 resolution에서 infer가 가능해진다는 점이다.
결과적으로 Fine level이 3D embedding으로서의 첫 번째 pixel-aligned MLP로부터 얻은 feature들을 사용하기 때문에 전체적인 reconstruction quality가 낮아지지 않고, network design이 증가한 image의 resolution과 network 용량을 잘 leverage 한다면 성능이 증가하게 된다. 또한 fine nerwork의 경우 normalization도 필요 없어서 전체 image를 볼 필요도 없어지므로 image crop으로 training을 할 수 있게 된다. 이게 중요한 이유는 memory 용량을 신경 안쓰고 high-resolution image를 input으로 사용할 수 있기 때문이다.
Front-to-Back Inference
사람의 뒷모습의 정확한 geometry를 예측하는 것은 image에서 직접적으로 보이는 부분이 아니기 때문에 어렵다. 따라서 뒷모습은 무조건 MLP prediction network로 전체적으로 유추가 되어야한다. 그렇지 않으면 뒷모습 자체의 특징이 “ambiguous”, “multimodal”이기 때문에 3D reconstruction을 하게 되면 smooth해지고 featureless해진다.
따라서 이 inference 문제를 feature를 뽑아내는 단계로 이동시키면 network가 더 sharp한 geometry를 복원할 수 있을 것이라고 생각해서 image 공간에서 normal map을 예측하고 이 normal map을 pixel-aligned predictor의 feature로 줘봤다고 한다. Feature로 준 이후 3D reconstruction은 특정한 3D geometry를 infer하기 위해 guide되는데 이를 통해 MLP가 detail들을 만들어내기 쉬워진다.
저자들은 pix2pixHD network라는 것을 이용해서 image space에서 앞뒤의 normal을 예측한 뒤 RGB color를 예측한 normal map에 mapping 시켰다고 한다.
High-Resolution Image Synthesis and Semantic Manipulation with...
Loss Functions and Surface Sampling
보통 Loss 함수의 경우 L1 loss나 L2 loss를 주로 이용하는데, 이 논문에서는 sampling 된 point들에 Binary Cross Entropy loss를 적용했다고 한다.
PIFu에서처럼 uniform volume sample과 surface 주변에서 Gaussian perturbation을 이용한 importance sampling의 결합을 이용해 point들을 sampling 했다고 한다. 그리고 이 방식이 더 sharp한 결과를 만들어낸다고 한다.
Experiment
Dataset
500개의 high-resolutionn photogrammetry scan들을 갖고 있는 RenderPeople dataset을 이용하는데, 450개와 50개로 쪼개서 각각 train/test로 이용했다고 한다. 그리고 Segmentation mask가 필요하면 COCO를 이용해서 random background image augmentation을 진행해서 전처리의 필요성을 줄였다고도 한다.
Implementation Detail
Low-resolution과 high-resolution을 위한 image encoder는 stacked hourglass network를 batch normalization을 group normalization으로 수정해서 각각 4개, 1개씩 사용했다고 한다.
https://arxiv.org/abs/1603.06937
주목할 점은 fine image encoder가 더 큰 feature embedding resolution을 얻기 위한 downsampling 과정을 줄여줬다는 점이다.
- Feature dimension은 coarse level에서 128x128x256, fine level에서 512x512x16이다.
- Coarse-level image encoder에서의 MLP의 neuron 개수는 다음과 같다.
[272, 1024, 512, 256, 128, 1]
그리고 3, 4, 5번째 layer에는 skip connection도 존재한다고 한다. - fine-level image encoder에서의 MLP의 neuron 개수는 다음과 같다.
[272, 512, 256, 128, 1]
그리고 여기서는 2, 3번째 layer에 skip connection이 존재한다.
여기서 중요한 점은 두 번째 MLP가 첫 번째 MLP의 네 번째 layer의 output을 3D embedding으로 사용한다는 점이다.
Surface normal inference는 아래의 논문에서 제시된 4개의 downsampling layer가 있는 9개의 residual block을 가진 network architecture를 사용했고, 2개의 front/back normal을 예측하는 network를 위의 objective function으로 training 시켰다고 한다.
Perceptual Losses for Real-Time Style Transfer and Super-Resolution
이 식에서 VGG는 첨부한 논문에서 나오는 preceptual loss이고 l1은 predict와 true 사이의 l1 distance이다.
요론 결과가 나온다고 합니다ㅎ
PIFu와 PIFuHD 논문에 대한 review는 여기까지 입니다.
저도 처음 공부하는 6D Object Pose Estimation 분야라 미숙한 부분이 꽤 존재합니다.
틀린 부분에 대한 지적은 언제든 환영입니다.
감사합니다.