SYDLAB_inha/Paper Reviews

[CoreNet] 3D Pose Transfer with Correspondence Learning and Mesh Refinement

빈그레 2024. 3. 19. 15:54

 

 

 

Correspondence Module

 

input :  source mesh와 target mesh의 vertex coordinates

 

1. shape Correspondence 찾기 ( identity와 pose mesh 사이 )

point cloud convolution으로 feature extraction

Extraction한 feature 기반으로 matching cost 계산하기 -> optimal matchign matrix 찾는 방향으로 cost 최소화하기

** matching cost : correspondence에 드는 연산 및 기타 요구조건들

//feature 기반으로 matching matrix 생성 

 

2. correspondence module's output

correspondence 맞춰서 pose mesh를 변형해서 coarse warped mesh 생성 

  ->두 input의 연결성 고려해서 coarse하게 변형하기

 

output : warped coarse mesh

 

Refine module

 

input : warped coarse mesh

 

1. elastic instance normalizatiopn residual blocks으로 warped output을 refin한다.

 

*** Elastic instance normalization( ElaIN )

: 기존의 조건부 정규화( conditional normalization) 기법을 개선한 것

 

*** Conditional normalization

: 신경망이 input data의 특정 조건에 따라 동작을 조정할 수 있도록 한 기법이다. 

GAN 이나 style transfer와 같은 작업에서 사용되며, 데이터에 특정한 특성을 적용할 때 유용하다.

( input 조건에 따라 평균과 분산을 조정한다. 예를 들어 input data가 여러 개의 카테고리에 속할 경우, 각 카테고리에 대해 고유한 평균과 분산을 적용한다. 이를 통해 모델은 카테고리별로 다른 특성을 배우고, 다양한 결과를 생성한다. )

 

*** Batch Normalization

: 각 layer에서의 input의 평균과 분산을 구하여, 모든 input data에 대해 동일한 평균과 분산을 사용한다.

 

 

- Elastic Instance Normalization (ElaIN)

[previous]
기존 conditional normalization layer는 외부 데이터로만 de-normalizaiton parameter 계산
-> original feature들의 일관성(consistency)과 연속성(connectivity)을 손상시킨다.

[proposed]
original feature들의 통계와 학습된 파라미터들을 혼합

correspondence module의 output인 warped mesh는 원하는 것보다는 평평하게 만들어졌지만,
그럼에도 pose는 명확히 표현하고 있음
그러므로 identity feature map으로 refine만 하면 됨!


*** activation value ( 활성화 값 )
: 신경망에서의 출력값으로, weight와 bias를 포함한 입력값을 받아서, 하나의 출력값을 생성한다.
 이 출력값이 activation값이다. 

*** 1x1 convolution

identity feature map에 대해 1x1 convolution layer 거치기
-> 상수를 곱하는 것 처럼 보이나, pointwise convolution으로 더 많은 연결성을 부여한다.

1.채널 간 정보 통합(Channel Mixing): 1x1 컨볼루션이 여러 입력 채널로부터 정보를 결합하여 새로운 채널을 생성할 수 있습니다. 이는 각 위치에서 여러 채널의 정보를 선형적으로 조합하는 것을 가능하게 하여, 네트워크가 채널 간의 상호작용을 학습하도록 돕습니다.

2.차원 축소(Dimensionality Reduction): 입력 채널이 많을 경우, 1x1 컨볼루션을 사용하여 출력 채널의 수를 줄일 수 있습니다. 이는 계산량을 줄이는 동시에 정보를 요약하는 데 도움을 줍니다.

3.비선형성 추가(Increasing Non-linearity): 1x1 컨볼루션 레이어 후에 비선형 활성화 함수(예: ReLU)를 적용함으로써, 네트워크의 비선형 학습 능력을 향상시킬 수 있습니다.
//아, convolution 이후로 set로 activation function도 지나야하니까 

4.각 값들에게 독립적으로 가중치 적용



identity feature 가져와서 1x1 convolution layer 거치게하고, 이후로 fully-connected layer를 2개 거치게 함
-> 여기서 결정도니 값은 정규화의 매개변수로 사용된다.

 

 

 

Supervised learning

 

supervise learning으로 입력 데이터와 그에 상응하는 gt를 모델에게 제공한다.

이 경우, 3D pose 전송을 위해 source mesh와 target mesh가 주어지고, 두 메시간의 pose transfer를 학습하며, 주어진 source mesh를 target mesh의 pose로 변환하는 방법을 학습한다.

 

reconsturction loss, edge loss로 total loss가 결정되고, 이는 gt mesh와 model이 생성한 mesh 간의 차이를 최소화하는 방향으로 모델을 최적화한다. 

 

 

Convolution 구조 ( 2D vs 3D )

 

 

  1. CNN (Convolutional Neural Networks):
    • CNN은 주로 2D 이미지 데이터를 처리하는 데 사용됩니다.
    • CNN에서 컨볼루션 연산은 이미지의 픽셀 그리드에 적용됩니다. 이는 이미지 데이터가 일정한 그리드 구조를 가지고 있으며, 이웃하는 픽셀 간의 공간적 관계가 명확하다는 가정 하에 진행됩니다.
    • 컨볼루션 필터(커널)는 이미지 전체에 걸쳐 슬라이딩 윈도우 방식으로 적용되며, 각 위치에서 필터와 입력 이미지의 요소별 곱(element-wise multiplication)을 수행한 후 결과를 합산합니다.
    • 이 과정은 이미지의 지역적 특징을 추출하며, 이러한 특징은 계층적으로 구성되어 복잡한 패턴을 인식할 수 있습니다.
  2. 포인트 클라우드 컨볼루션:
    • 3D 포인트 클라우드 데이터는 불규칙한 구조를 가지고 있으며, 포인트 클라우드 내의 각 점은 공간에서의 위치를 나타내는 좌표를 가지고 있습니다.
    • 포인트 클라우드 데이터는 규칙적인 그리드 구조를 가지고 있지 않기 때문에, 전통적인 CNN 컨볼루션을 직접 적용하기 어렵습니다.
    • 포인트 클라우드 컨볼루션은 이러한 불규칙성을 처리할 수 있도록 설계되었습니다. 점들의 공간적인 이웃 관계를 고려하여 컨볼루션 연산을 적용하며, 이는 종종 K-최근접 이웃(K-Nearest Neighbors) 알고리즘 또는 그래프 기반 접근 방식을 통해 결정됩니다.
    • 이 방식은 각 점의 로컬 이웃을 고려하여 특징을 추출하며, 3D 공간에서의 구조적 패턴을 학습할 수 있게 합니다.

 

convolution 연산이라 할지라도 2D에서 쓰는 cNN이랑은 다른 구조를 갖고 있다.

 

[point cloud convolution layer]

1.각 point에 대해 공간적으로 가까운 이웃을 찾는다. (위치 정보 기반으로 ) 

//일반적으로 k-nn을 사용하여 k값을 설정해야한다. (몇개의 이웃정보를 활용할지) 16,32가 일반적

2. point와 이웃 point간의 상대적인 위치와 속성 값들을 활용하여 local pattern을 인식한다. 

 ( 그 지역이 어떤 특징을 갖는지 )

3. point들로부터 추출된 특징을 집계하여, point에 대한 새로운 고차원 feature 생성한다.

 

- filter(kernel)

1. weight function

: 각 point와 그 이웃간의 상대적 위치를 고려한 'weight function'이 filter의 역할을 한다. 주로 point간의 거리에 따라 가중치를 달리하며, 이웃 포인트들의 특성을 평균하는 방식으로 작동..!
-> 한 point와 그 point의 이웃 point들까지의 거리를 weight에 반영하여 다 더해서 k값으로 나눠서 평균내기

2. dynamic kernel

: 각 point마다 동적으로 kernel을 생성하는 방식이 사용된다. 이는 포인트의 local 구조에 따라 kernel의 형태가 달라지며, 이를 통해 데이터의 불규칙성을 처리한다.

3.그래프 기반 convolution

: point cloud를 그래프로 해석하고 이 그래프에서의 convolution 연산을 적용

 

+ ) kernel 모양이 불규칙하고 비정형적