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 화 시켰다고 한다. 코드상으로는 다음과 같다.
여기서 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
'연구 > deep learning' 카테고리의 다른 글
[개념정리] 논문읽다보면 나오는 개념 permutation invariant (0) | 2021.09.26 |
---|---|
[GAN] mode collapse는 G와 D가 어떻게 학습될때 발생하는 문제인가? (0) | 2020.12.10 |
[occluded data] dataset에 occlusion 취하는법 (0) | 2020.11.04 |
[딥러닝 개념] input image를 normalize해서 넣는 이유 (0) | 2020.11.04 |
[딥러닝 개념] softargmax란? (0) | 2020.11.04 |