본문 바로가기

연구/deep learning

[딥러닝] DGCNN, EdgeConv 에서 point 들을 graph 화 하는법

반응형

EdgeConv 는 graph convolution 의 일종이라고 볼 수 있다.( graph convolution 의 연산방법 종류는 여러가지 있으며 한가지로 특정되지 않는다.)

 

우선 EdgeConv 가 나온 배경부터 살펴보자면 PointNet 처럼 point cloud 를 분석하는 네트워크에서 사용하기 위해 고안됐다. 그런데 point cloud 는 연결관계가 정의되지 않은 점 데이터의 집합이기 때문에 preprocessing 을 거치지 않으면 graph convolution 하는것이 불가능하다. 따라서 기존의 PointNet 같은 방법들은 point 들간의 구조적인 관계를 고려하지 못하는 단점이 있었는데 EdgeConv 은 이를 해결하기 위해 제안되었다.

 

EdgeConv 은 point cloud 처럼 graph 가 아닌 데이터를 graph 화 시킨 후, 그 안에서 graph convolution 하는 연산이라고 생각하면 직관적으로 이해가 잘 되리라 생각한다.

 

여기서 의문인것은 어떻게 graph 화를 시키는가? 였는데 논문에서나 코드로나 확인해보면 kNN 군집화 알고리즘을 이용해서 graph 화 시켰다고 한다. 코드상으로는 다음과 같다.

이미지 출처 : https://github.com/WangYueFt/dgcnn/blob/e96a7e26555c3212dbc5df8d8875f07228e1ccc2/pytorch/model.py#L30

 

GitHub - WangYueFt/dgcnn

Contribute to WangYueFt/dgcnn development by creating an account on GitHub.

github.com

 

여기서 get_graph_feature 를 사용하면 point 들이 graph 화 되는데, 코드를 보기 싫으테니 간단한 설명을 적어놓도록 하겠다.

graph 가 되는 과정은 knn이라는 함수만 보면 되는데 들어온 point 들의 feature 들을 보고서 서로 유사한 feature 인지 유사하지 않은 feature 인지를 계산한다(L24).

계산을 마치면 서로 feature 가 유사한 point 20개 까지는 이웃이라고 간주한다(L26).

 

이런 간단한 계산을 통해 연결관계가 없던 point 들은 graph 화 시켰고, MLP를 통해 각 node 간의 관계를 조사하는 EdgeConv 를 수행할 수 있게된다 !!

 

 

EdgeConv 이란 :

https://arxiv.org/pdf/1801.07829.pdf

 

반응형