"Learning High Fidelity Depths of Dressed Humans by Watching Social Media Dance Videos"
CVPR21 Best Paper Honorable Mentions로 꼽힌 두 논문중 하나이다.
다른 논문 하나는 "Exploring Simple Siamese Representation Learning"이며, stop gradient를 사용하는게 contribution.
application스러워 보이는 논문이 저렇게 좋은 영예로운 자리(?)에 올라서 궁금하니 한번 읽어보기로 했다.
주제만 보면 뭔가 기업에서 했을 것 같은데, 의외로 미네소타 대학에서 나온 논문이며 acknowledgement 보면 정부 과제를 따서 한 것 같다. 기업 관련일줄...
오... supervision 딴거 뭐 쓴거 있는지, 미리 정의된 human body 모형같은거 쓰는지도 궁금하다. 옷 입은거 땜에 어려우려나...
Abstract.
Dressed human geometry를 배우는데에 있어서, 3D GT geometry를 많이들 필요로 한다.
그래서 이 논문의 아이디어는 댄스 영상이 한 사람에게서 여러 시간에 정보를 얻을 수 있기 때문에, 이를 활용하면 다양한 appearance, clothing style, performances, identites를 배울 수 있다는 것이다.
그럼 어떻게 배웠을까? 일종의 self-supervised learning인데, local transformation이라는 방법을 사용해서, 다른 시간에서 뽑은 이미지를 가지고 warp 시키는 식으로 학습했다고 한다.
게다가 surface normal을 따라 depth도 같이 배우도록 joint training 했다는데, geometry consistency를 maximizing 함으로써 local texture, wrinkle, shade 등을 배울 수 있다고 한다.
이 모든 과정이 end-to-end 라는데?!
기존의 depth estimation, human shape recovery 접근 방식이 SOTA였는데, 이 논문이 (real, rendered images에서 모두) SOTA를 깼다고 말한다.
Introduction.
사람의 full body에서 local geometry(주름, 섬유의 질감 등)를 얻으려면 원래 40-500개의 카메라나 필요하다고 한다. 이정도 되는게 이제 제품화 할만한 렌더링 수준이었다고.* 그러니 당연히 우리 비전인들은 single view reconnstruction을 시도 했을건데, 역시나 데이터가 제한적이다. 아무래도 일일이 데이터로 만들려면 한계가 있으니... 학습이야 가능하겠지만 성능이 떨어진다.
그래서 이 논문에서는 비디오 데이터를 활용해 뽑은거다. 틱톡같은거 썼다는거지. 왜 춤 영상이냐?
- 일단 sequence 하나는 single person의 다양한 포즈를 담고 있다는 것
- 3D GT는 없으니 당연히 supervised learning은 안된다. 하지만 춤 영상은 semi-rigid structure이기 때문에, transformation을 estimation하는걸로 self-supervised learning이 가능한 것!
* 예를 들면 https://arxiv.org/pdf/1808.00362.pdf 이 논문. (SIGGRAPH 18)
요즘 많이 나오는 depth estimator들을 사용하면 scene geometry를 배울 수 있지만, 세세한 부분에서 종종 실패하기도 한다. 하지만 surface normals는 정교한 visual structure를 잘 배울 수 있다고 한다!
이 논문이 제안하는 HDNet: image - UV coordinate의 관계를 학습해서 intermediate surface normal를 배움.
이는 두 이미지에서의 geometry prediction의 self-consistency를 위해서 siamese(샴) 네트워크 구조를 가진다.
그래서, 최종적으로 contribution은 다음과 같다.
- TikTok dataset 릴리즈: 300편 이상의 댄스 비디오, 100K 이미지와 human mask, human UV coordinates
- 3D geometry를 하나의 이미지 -> 다른 이미지로 warp하는 수식을 새롭게 제안하였음
- HDNet 아키텍쳐
- real world imagery에서 굉장히 양적/질적으로 좋은 결과를 레포트 하고있다
Related Works
- Human Body Reconstruction
- Single View Depth Estimation
- Human 3D Datasets
Method
single image I가 주어지면, high fidelity depth를 reconstruction하는 것이 목적이다.
z=g(x;I) 이며, x는 xy location이고 z는 depth이므로 양수.
(1) Self-Supervised Human Depths from Videos
coordinate transform h(u) = x를 생각해보자. 이건 canonical human body surface coordinate (=u)에서 이미지의 x로 가는것.
그 UV surface가 어떤 특징을 가지고 있냐면, 바로 pose, clothes, appearance에 invariant하다는 것이다.
3D point p를 parameterize할건데, 이게 앞에서의 UV coordinate를 가지고 depth prediction하여 복원하여 얻는 것이다.
아래의 식인데, K는 카메라 intrinsic이고 ~는 homogeneous representation이며, x는 (u와 corresponding한) 이미지좌표의 픽셀 위치이다. i는 시간을 의미.
여기서 k번째 body part를 i번째 시간에서 j번째 time instant로 transform 할것이다.
W는 3D part based warping function, U_k는 k번째 body part의 UV 좌표이다. scene 전체가 아니라 body part로 한 이유중 하나는 파트 하나가 rigid transformation이 진행된다는 컨셉 때문인듯.
동시에 analogous warping도 일어나는데 이건 non-rigid tracking. 방금 얘기한 part 기반의 기법은 아니며, conssecutive frames에서 맵핑을 배우게 하는 것이다.
SE3 (Special Eucliean Transform)을 사용해서 W를 모델링했다. R, t는 rotation, translation.
가능한 transformation을 pre-define 했다는데. 이걸가지고 loss를 minimizing 하게 학습한다.
Vk는 UV 좌표계의 subset으로 전반적인 transformation을 표현하는 것.
뭔지 잘 모르겠지만 암튼 아래 이미지를 보면 더 명확해진다.
i의 depth를 계산해서, 파트를 j 이미지로 warp(pard based)하고, 그걸 bilinear interpolation 한 것을 구한다.
그리고 j에서 구한 depth를 가지고 두 가지 파트를 비교하여 least square가지고 학습.
geometric discrepancy는 아래와 같이 구한다.
(2) Joint Learning of surface normal and depth
surface normal, depth를 같이 학습해서 서로 도움되게 했다.
n=f(x;I) 이 surface normal을 추정할건데, n은 camera 좌표계에서의 unit surface normal vector representation이라고 한다.
참고로 surface normal은 3D point p(x)위치에서의 tangent plane에 수직인 curvature이다.
그럼 geometry consistency는 어떻게 보장하냐면, 이렇게 구한 surface normal과, depth estimation 한 것으로 유추한 surface normal 를 가지고 geometric error를 minimizing 해서 가능하다. post processing이 아닌 학습 과정에서 배우게 되는 것.
아래 보이는게 바로 surface normal이다.
(3) Network Design
학습은 어떻게 할까. 4개의 로스가 있다.
w, s는 방금 얘기한 self-consistency 로스이다.
나머지 두 로스는 추가데이터셋이 필요하다.
3D scanned dataset이 일부 (D_s) 있는데, GT depth Z(x)와 surface normal N(x)를 가지고 있다고 한다.
아키텍쳐는 아래 그림과 같다.
(4) Dataset
- 하나에 10-15초, 30 fps
- 300개 이상의 비디오 -> 100K 이상의 이미지
- single person video인것만 maunally 선별했다고함
Experiments
학습 Dataset은 2개.
- Render People (340 subjects from 3D scanned model)는 3D GT 존재. 34000개 이미지 사용
- TikTok Dataset, 10만개 이미지 사용
visualization 보면 되게 잘 되는 것 같다.
근데 의문 드는건, ablation에 L_w, L_s만 사용한게 없다는거다. 항상 L_z가 들어가있다.
역시 depth, surface normal을 배우기 위해서는 이에 대한 supervision이 꼭 필요했나보다. supervised learning 없이 하는거 다들 궁금해할텐데 결과가 없는거 봐선 잘 안된듯..
아무튼 Lz, Ls, Lw 모든 요소가 중요해보인다. 에러값도 그렇고, visualization을 보면 성능차이가 꽤 나보인다.
이런 관련분야 데이터셋 말고 걍 인터넷 이미지가지고 inference한 결과도 있다. generalization도 잘 되는듯.
앞으로 일주일에 2편은 자세하게 읽을테다.
다음 논문으로는 예전에 리뷰했던 (연구에 써먹으려다 결국에 드랍한) cycle consistency연구에서 더 업데이트된 버전이 있길래, 이것도 볼까 한다.
https://arxiv.org/pdf/2006.14613.pdf NeurIPS 20
'AIML 분야 > Depth, Camera Pose, VO, SLAM 등' 카테고리의 다른 글
[논문 읽기] Endo-Depth-and-Motion: Reconstruction and Tracking in EndoscopicVideos using Depth Networks and Photometric Constraints (1) | 2022.07.11 |
---|---|
쓰는 중이다 [Camera Pose Estimation] 최근 논문 하나 살펴볼까 (0) | 2021.09.10 |
대충 빠르게 읽어보는 KITTI dataset 논문 (0) | 2021.06.30 |
DF-VO 논문 리뷰 & 코드 셋업해보기 (0) | 2021.06.17 |
Video Odometry 연구 시작 - EndoSLAM 셋업해보자 (0) | 2021.05.04 |
댓글