| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | |||||
| 3 | 4 | 5 | 6 | 7 | 8 | 9 |
| 10 | 11 | 12 | 13 | 14 | 15 | 16 |
| 17 | 18 | 19 | 20 | 21 | 22 | 23 |
| 24 | 25 | 26 | 27 | 28 | 29 | 30 |
| 31 |
- 컴퓨터사이언스
- mysql
- SQL
- 데베
- 코테
- 데이터
- coding
- 개발자
- Python
- 자료구조
- Data_Structure
- 데이터베이스
- 컴퓨터공학
- code
- adaptive remeshing
- 대학생
- db
- CS
- LeetCode
- GNN
- meshgraphnet
- 오블완
- sort
- DS
- Leet Code
- Mesh
- Database
- 티스토리챌린지
- CNN
- 코딩테스트
- Today
- Total
sy1214ei 님의 블로그
[논문리뷰] MeshNet: Mesh Neural Network for 3D shape Representation 본문
[논문리뷰] MeshNet: Mesh Neural Network for 3D shape Representation
sy1214ei 2024. 12. 27. 03:20https://arxiv.org/abs/1811.11424
MeshNet: Mesh Neural Network for 3D Shape Representation
Mesh is an important and powerful type of data for 3D shapes and widely studied in the field of computer vision and computer graphics. Regarding the task of 3D shape representation, there have been extensive research efforts concentrating on how to represe
arxiv.org
+ 코드: https://github.com/iMoonLab/MeshNet
GitHub - iMoonLab/MeshNet: MeshNet: Mesh Neural Network for 3D Shape Representation (AAAI 2019)
MeshNet: Mesh Neural Network for 3D Shape Representation (AAAI 2019) - iMoonLab/MeshNet
github.com
1 Introduction
- Mesh 데이터 처리의 어려움
- 3D 데이터를 다루는 데 있어 메쉬 데이터 처리는 매우 복잡하고 도전적인 작업이다.
- MeshNet에서는 이러한 복잡성을 줄이기 위해 face(면)를 기본 단위로 보고, face 간의 관계를 connection으로 정의했다.
- Face와 Connection의 정의
- Face는 메쉬 데이터의 하나의 면을 나타내는 기본 단위이다.
- Connection은 같은 edge(선)를 공유하는 face 간의 관계를 의미한다.
- 예를 들어, 두 face가 동일한 선(edge)을 공유한다면, 이 둘은 connection으로 연결된 것이다.
- MeshNet의 모델 설계
- MeshNet은 face를 기반으로 특징(feature)을 추출하도록 설계되었다.
- 이를 통해 3D 데이터의 분류(classification)와 검색(retrieval) 작업에서 우수한 성능을 보였다.
- Polygon Face 사용의 의의
- 이 논문에서는 polygon face(다각형 면)를 기본 단위로 사용했다.
- 이는 메쉬 데이터의 구조를 더 효율적이고 직관적으로 처리할 수 있는 설계로, 가장 중요한 의미를 가진다.
3. Method
3.1 Overall Design of MeshNet
- Mesh 데이터란 무엇인가?
- Mesh 데이터는 vertex(정점), edge(선), face(면)으로 이루어진 집합체이다.
- MeshNet에서는 특별히 triangular face(삼각형 면)만 고려한다.
- 삼각형 면은 3D 메쉬에서 가장 기본적인 단위로, 구조를 단순하게 처리할 수 있기 때문이다.
- 왜 Mesh 데이터를 사용하려고 하는가?
- 3D 데이터를 표현하는 방법은 다양하지만, Mesh 데이터를 선택한 이유는 다음과 같다:
- Volumetric grid / Multi-view 방식의 한계
- Volumetric grid나 multi-view 방식은 메쉬 데이터가 가진 불규칙성(irregularity)을 반영하지 못한다.
- 이는 자연적인 특성을 무시한다는 단점으로 이어진다.
- Point cloud 방식의 한계
- Point cloud 데이터는 상호 샘플링(random sampling) 과정에서 모호성(ambiguity)이 생긴다.
- 즉, 점들의 집합만으로는 충분히 명확한 3D 구조를 나타내기 어렵다.
- Volumetric grid / Multi-view 방식의 한계
- 3D 데이터를 표현하는 방법은 다양하지만, Mesh 데이터를 선택한 이유는 다음과 같다:
- MeshNet의 차별화된 설계
- MeshNet은 메쉬 데이터의 local structure를 효과적으로 캡처하기 위해 "explicit connection relationship(명시적인 연결 관계)"를 활용한다.
- 기존 방식은 nearest neighbors를 단순히 이용했지만, MeshNet은 메쉬의 구조적 관계를 적극적으로 반영해 지역적 구조와 자연 정보를 효과적으로 보존한다.
- 이 설계는 메쉬 데이터를 더 잘 이해하고 처리하는 데 큰 기여를 한다.
[MeshNet의 아이디어]
- Face를 단위로 사용
- Mesh 데이터의 조직(data organization)을 단순화하기 위해 face만을 단위(unit)로 사용한다.
- Connection 정의: 하나의 face가 다른 face와 edge(선)를 공유하면 두 face 간에 연결(connection)이 있다고 본다.
- 장점
- 하나의 삼각형 face는 보통 3개 이상의 face와 연결될 수 있어 connection relationship을 간단하게 처리할 수 있다.
- 데이터의 불규칙성(disorder) 문제를 face 단위에서 처리하고, 대칭 함수(symmetric function)로 해결할 수 있다. 이 방식은 PointNet의 접근 방식과 유사하다.
- Face는 vertex(정점)나 edge(선)보다 더 많은 정보를 포함하고 있어 직관적으로 유리하다.
- Face의 특징(feature)를 나누어 분석
- Mesh 데이터를 단순히 point data처럼 다루는 것이 아니라, face가 point보다 더 많은 정보를 가진다는 점에 주목한다.
- 특징 분할
- Face는 point-unit 데이터와 다르며, face-unit 데이터로 봐야 한다.
- 따라서 face의 특징(feature)을 spatial feature(위치적 특징)와 structural feature(구조적 특징)로 나누어 본다.
- Spatial feature: 한 점(point)이 어디에 있는지를 나타내는 정보.- Where you are for a point
- Structural feature: Face가 어떤 형태를 가지고 있는지를 나타내는 정보.-What you look like for a face
[데이터 정의]
- Face Information: 면 정보
- Center: face의 중심점 좌표.
- 삼각형 면의 세 꼭짓점(vertex)의 평균 위치를 중심점으로 정의한다.
- Corner: 중심점에서 각 vertex(꼭짓점)으로 향하는 벡터.
- 중심점에서 세 꼭짓점으로 향하는 벡터를 계산하여 각 면의 구조를 나타낸다.
- Normal: 단위 법선 벡터(unit normal vector).
- face의 방향성을 나타내는 벡터로, face의 표면이 어느 쪽을 향하고 있는지 알려준다.
- Center: face의 중심점 좌표.
- Neighbor Information: 이웃 정보
- Neighbor Index: 연결된 face들의 index(인덱스).
- 각 face는 edge를 공유하는 최대 3개의 이웃 face를 가진다.
- 만약 연결된 face가 없는 경우, 그 자리는 자기 자신의 index로 채운다.
- 예: 삼각형 면이 2개의 이웃 face와 연결되어 있다면, 나머지 하나는 자기 자신의 index로 대체한다.각 face에 연결된 이웃 face들의 정보를 나타낸다.
- 이 정보는 face 간의 연결 관계를 나타내며, 메쉬의 구조적 특성을 학습하는 데 중요하다.
- Neighbor Index: 연결된 face들의 index(인덱스).

[모델구조]

- Structural Descriptor:
- Neighbor 정보, 법선 벡터(normal), face 중심을 입력으로 받아 여러 convolution 과정을 거친다.
- Face Kernel Correlation과 Face Rotate Convolution을 통해 구조적 특성을 학습한다.
- Spatial Descriptor:
- Face의 중심(center) 정보를 입력으로 받아 **MLP(다층 퍼셉트론)**를 통해 위치적 특성을 추출한다.
- Global Feature Pooling:
- 모든 face-level feature를 통합(pooling)하여 전역적(global) 특징으로 변환한다.
MeshNet은 입력 데이터를 처리하여 각 face의 spatial feature(위치 정보)와 structural feature(구조 정보)를 추출한 뒤, 이들을 통합하여 global한 특징을 학습하는 방식으로 동작한다.
- 입력데이터: 각 face의 초기 값으로 구성된 리스트
- 초기 값은 spatial descriptor와 structural descriptor 두 블록으로 나뉜다.
- Feature Extraction
- 두개의 블록 (spatial descriptor, structural descriptor)을 통과하며, 각 face의 초기값에서 spatial feature과 structural feature을 추출한다.
- Neighbor 정보의 Aggregation
- Neighboring Information을 결합(aggregate)하여 각 face의 정보를 강화한다.
- 이 과정을 위해 Mesh Convolution Block(MeshConv)을 사용한다.
- MeshConv는 각 face와 연결된 neighbor face 정보를 기반으로 새로운 feature를 계산한다.
- 같은 face에 대해서는 동일한 parameter를 공유하며 연산이 이루어진다.
- 두 종류의 입력(spatial feature, structural feature)을 받아 새로운 feature를 출력한다.
- Global Feature 생성
- 모든 face에서 추출된 feature를 통합하여 전역적 특징(global feature)을 만든다.
- 이를 위해 pooling function을 적용하여 face-level feature들을 전체 메쉬 수준의 feature로 변환한다.
- Global feature는 메쉬 전체의 특성을 나타내며, 최종적으로 분류(classification)나 검색(retrieval)과 같은 작업에 사용된다.
- 모든 face에서 추출된 feature를 통합하여 전역적 특징(global feature)을 만든다.
- Fig 구조 설명
- Structural Descriptor
- Neighbor 정보, 법선 벡터(normal), face 중심을 입력으로 받아 여러 convolution 과정을 거친다.
- Face Kernel Correlation과 Face Rotate Convolution을 통해 구조적 특성을 학습한다.
- Spatial Descriptor
- Face의 중심(center) 정보를 입력으로 받아 MLP를 통해 위치적 특성을 추출한다.
- Global Feature Pooling
- 모든 face-level feature를 pooling하여 global 특징으로 변환한다.
- Structural Descriptor
- 아키텍처 동작원리
- 입력데이터
- 입력은 메쉬 데이터의 각 face에 대한 초기값으로 구성된다.
- 이 데이터는 spatial descriptor와 structural descriptor로 나뉘어 처리된다.
- Descriptor 처리
- Spatial Descriptor
- Center 정보를 기반으로 MLP을 사용해 spatial feature을 추출한다.
- 출력 차원은 n×64 (n은 face의 개수).
- Structural Dscriptor
- Neighbor Index, Normal, Corner 정보를 활용해 structural feature을 추출한다.
- Face Kernel Correlation과 Face Rotate Convolution이라는 두 가지 처리 과정을 통해 각 face의 구조적 관계를 학습한다.
- 최종적으로 MLP를 사용해 n×131 크기의 구조적 특징을 생성한다.
- Spatial Descriptor
- Mesh Convolution (Mesh Conv)
- Neighbor 정보 Aggregation
- Mesh Convolution 블록은 각 face의 특징(spatial + structural)과 이웃 face의 정보를 통합한다.
- 두 종류의 입력(spatial feature와 structural feature)을 받아 새로운 feature를 출력한다.
- 같은 face에 대해서는 동일한 파라미터를 공유하며, 이웃 face 간의 관계를 학습한다.
- Mesh Conv 블록 구성
- 첫 번째 Mesh Conv 블록:
- 입력: n×131 구조적 특징과 n×64 공간적 특징.
- 출력: n×256
- 두 번째 Mesh Conv 블록:
- 입력: 이전 블록의 출력 n×256
- 출력: n×512
- 첫 번째 Mesh Conv 블록:
- Neighbor 정보 Aggregation
- Global Feature 생성
- 마지막으로 각 face에서 추출된 특징들을 pooling 함수에 통합하여 global 특징을 생성한다.
- Pooling 함수는 모든 face-level 특징을 하나로 요약한다.
- 최종적으로 1×1024 크기의 글로벌 특징을 만든다.
- 마지막으로 각 face에서 추출된 특징들을 pooling 함수에 통합하여 global 특징을 생성한다.
- Output Scores
- 글로벌 특징은 또 다른 MLP를 통과하여 출력 점수(output scores)를 생성한다.
- 이 점수는 분류(classification) 또는 검색(retrieval) 작업에 사용된다.
- 글로벌 특징은 또 다른 MLP를 통과하여 출력 점수(output scores)를 생성한다.
- 입력데이터
3.2 Spatial and Structural Descriptor
- Spatial Descriptor
- Face의 중심점(center value)을 입력으로 사용해 초기 공간적 특징(spatial feature)을 추출한다.
- Shared MLP를 적용해 간단한 처리 과정을 거친다.
- Structural Descriptor I: Face Rotate Convolution
- Face의 corner vectors를 사용해 face의 내부 구조를 학습한다.
- Face의 세 꼭짓점 간의 관계(v1,v2,v3)를 수식(g)으로 정의해 구조적 특징을 추출한다.


이 과정은 일반적인 "translation(이동)" 대신 rotation(회전) 개념을 적용한 컨볼루션 연산 방식이다. Face의 꼭짓점 벡터들, 즉 v1,v2,v3 사이에서 회전을 수행하며 각 벡터 쌍에 대해 연산을 진행한다.
Fig 4에 나온 것처럼, 각 커널은 face를 돌면서 각 쌍의 벡터(v1,v2, v2,v3, v3,v1)에 대해 반복적으로 연산을 수행하게 된다.
이때 사용되는 함수 f(⋅,⋅)는 각 벡터 쌍의 관계를 학습하는 공유된 커널(shared kernel)로, 모든 face에서 동일하게 사용되기 때문에 연산이 일관되며 효율성을 가지게 된다. K1개의 커널이 존재하므로, 다양한 패턴을 포착할 수 있는 능력을 가지게 된다. (K1의 개수는 CNN 필터의 개수와 유사하다고 볼 수 있다.)
컨볼루션 연산이 끝난 후에는, 각 face의 결과를 평균화하는 average pooling 과정을 거치게 된다. 이 pooling은 face의 각 꼭짓점 처리 순서가 결과에 영향을 미치지 않도록 설계된다. 다시 말해서, face를 처리할 때 꼭짓점의 순서(예: v1,v2,v3)가 바뀌더라도 동일한 결과를 얻을 수 있게 된다.
마지막으로, pooling 결과를 신경망(shared MLP)으로 보내 최종적인 출력 feature를 생성하게 된다. 이때 출력 feature의 차원은 K2로 정의된다. 즉, Face Rotate Convolution은 face의 구조적 특징을 벡터 쌍 관계로부터 추출하고, 이 특징을 순서에 영향을 받지 않도록 조정한 후, 더 높은 수준의 표현(feature)을 만들어내는 과정을 포함하고 있다.
[Code]

'[Paper Review]' 카테고리의 다른 글
| [Paper Review] Learning Mesh-Based Simulation with Graph Networks_Shape Tracking (3) | 2025.01.11 |
|---|---|
| [Paper Review] Learning Mesh-Based Simulation with Graph Networks_이모저모 (0) | 2025.01.11 |
| [논문리뷰 Based] MeshGraphNet이 무엇인가? (0) | 2024.12.27 |
| [논문리뷰] Learning Mesh-Based Simulation with Graph Networks (0) | 2024.12.27 |
| [논문리뷰] MeshCNN: A Network with an Edge (0) | 2024.12.26 |