반응형
내 맘대로 Introduction
주제는 관심에서 벗어나도 한참 벗어났지만, 3D dense correspondence라는 관점에서 참고할 만할까 해서 읽은 22년도 논문. 어떻게 하면 효과적으로 semantic embedding을 할 수 있을지 고민한 논문으로 embedding space 상의 거리로 correspondence를 찾아낸다.
뭔가 이것저것 들어가있지만 결국 이것도 VAE와 95% 동일하다. 입력으로 들어간 N point와 별개로 중간에 query point가 따로 들어간다는게 차이일 뿐 거의 동일하다. 서로 다른 shape의 object를 대상으로 하다보니 mutual correspondence가 애초에 불가능하고, 그렇기 때문에 query point로 지정해서 correspondence를 풀고자 한 것 같다. 없으면 없다고 하게 하려고.
그리고 GT가 없는 대상이다보니 unsupervised가 주 초점이라 좀 포커스가 분산되어있는 느낌.
메모
풀고자 하는 문제는 object A, object B의 각 위치 p, q 간의 일치도를 계산할 수 있는 latent space를 구축하는 것이다. |
데이터 -> latent를 1대1 대응으로 콕 집는 방식으로해왔으나 이번에는 uncertainty를 포함한 mapping으로 풀어보겠다는게 차이 -> AE 대신 VAE를 활용해보겠다는 컨셉으로 넘어간 느낌. |
|
일단은 Self recon 과정에서 embedding space를 구축하는 것을 기본으로 하고 이 때 gaussian 형태로 latent mapping을 한다. (sigma를 uncertainty로 쓰도록) 이후 같은 카테고리 object끼리 pair로 묶어서 latent를 기준으로 서로 교체해가면서 loss (recon, normal 비교) 를 걸어주는 식의 unsupervised + self-supervised다. |
Encoder는 이 당시 point processing 정석 pointnet을 썼고 처음부터 VAE가 아니라 AE처럼 latent z 먼저 deterministic하게 뽑고 이 z + query 를 다시 semantic embedding + uncertainty로 mapping하는 방식이다. query가 추가된 이후부터 보면 VAE랑 비슷함. |
이게 지금도 통용되는 논리인지는 모르겠으나 구조적으로 MLP 3개 이상을 쓰면 encoder 성능이 떨어진다고 해서 3겹만 쓰되 N개 (마치 head를 여러개 두는 식)으로 사용해서 연산을 늘렸다. |
|
뒤에 decoder가 붙어야 self recon loss가 가능하기 때문에 뒤에 붙임 decoder 없으면 E(A), E(B)를 비교하는 식인데 이러면 연산량이 너무 많이 들어서 학습 capacity가 부족한 문제도 있음. |
SCAN에서 N개 sample해서 쓰는 것. 이게 inside인지 outside인지 계산해서 0, 1 labeling도 해둠. k 파트로 나눈 것 별로 . |
어느 파트에 속하는지를 상징하는 occupancy |
point cloud vs reconstructed point cloud |
self 아니고 이제 pair 단위로 볼때 loss |
약간의 트릭이 있는데 object A, B 간의 occupancy embedding 값을 서로 swap해서 reconstruction 함 그리고는 cloest point 기준으로 비교 (chamfer distance) 같은 query에 대해서 같은 occupancy embedding이 나왔어야 하고, 그 기준으로 chamfer distance를 비교했다면 값이 작았을 것 |
|
나머지는 비슷한 컨셉을 normal 이나 point에도 옮긴 것 결과사진은 크게 볼 필요없으므로 생략. |
반응형