연구/deep learning (8) 썸네일형 리스트형 [딥러닝] DGCNN, EdgeConv 에서 point 들을 graph 화 하는법 EdgeConv 는 graph convolution 의 일종이라고 볼 수 있다.( graph convolution 의 연산방법 종류는 여러가지 있으며 한가지로 특정되지 않는다.) 우선 EdgeConv 가 나온 배경부터 살펴보자면 PointNet 처럼 point cloud 를 분석하는 네트워크에서 사용하기 위해 고안됐다. 그런데 point cloud 는 연결관계가 정의되지 않은 점 데이터의 집합이기 때문에 preprocessing 을 거치지 않으면 graph convolution 하는것이 불가능하다. 따라서 기존의 PointNet 같은 방법들은 point 들간의 구조적인 관계를 고려하지 못하는 단점이 있었는데 EdgeConv 은 이를 해결하기 위해 제안되었다. EdgeConv 은 point cloud 처럼.. [개념정리] 논문읽다보면 나오는 개념 permutation invariant permutation invariant 란 무엇인가? 에 대해서 간단히 설명한 글이 있어서 링크를 첨부합니다. https://blog.naver.com/PostView.naver?isHttpsRedirect=true&blogId=qbxlvnf11&logNo=221659870504 머신 러닝에서 permutation invariant의 의미 permutation invariant "예비 개발자" - 출처 permutation invariant: a model that produces th... blog.naver.com [GAN] mode collapse는 G와 D가 어떻게 학습될때 발생하는 문제인가? mode collapse는 G가 계속 똑같은 모양의 data를 출력해내는 문제를 말한다. 이 문제는 G가 제대로 학습한게 아니라 D를 속이는데에만 최적화되게 학습된 형태를 말한다. 그렇다면 어떻게 제대로 학습되지도 않았는데 Discriminator를 속일 수 있었을까? 정답은 애초에 D가 global optima로 수렴하지 않았기 때문이다. 어떠한 이유로 D가 local minima에 빠졌거나 학습이 제대로 이루어 지지 않았기 때문에 G의 속임수를 잘 판별하지 못하게 되고 그로 인해 G도 더이상 의미있는 gradient를 뽑아 낼 수 없었기 때문에 학습이 멈춰버린 것이다. [occluded data] dataset에 occlusion 취하는법 논문을 구현하려다 보면 dataset이 간혹 이런 내용이 나온다. 데이터셋 자체에서 occlude가 취해져 있는 것도 있으나 이 논문에서는 training을 위해 직접 데이터에 occlusion작업을 해주었다. 처음 봤을 때 어떻게 occlusion을 취했는지 의문이 들었다. 그냥 임의의 patch모양으로 pixel에 0을 취해서 까만 사각형을 만들어버리면 되나?? 그런식의 occlusion도 있겠지만 적절한 방법은 아니라고 교수님께서 말씀하셨다. 대신 적절한 방법은 이미지에 직접 다른 segmentation된 이미지를 추가하거나 아래 github처럼 프로그램을 사용하여 segmentation된 이미지를 추가하게끔 하는 것이다. github.com/isarandi/synthetic-occlusion [딥러닝 개념] input image를 normalize해서 넣는 이유 normalize한다는게 무슨 말일까? 논문을 보다보니 이런 내용이 있었다. batch normalization으로 feature map들을 정규화한다는 말은 들었는데 input image부터 정규화한다는 말은 처음 들었다. 그런데 간단하게 생각해서 둘다 비슷한 말이라고 생각하면 된다. 그렇다면 image를 정규화하는 이유는 뭘까? 당연히 성능이 더 좋게 나왔으니까... 일반적으로 image의 각 pixel값들은 0~255의 값을 가지는데 이를 가장 간단하게는 그냥 255로 나누어서 0~1의 값을 가지도록 하는 경우도 있고, 위의 논문일부처럼 mean, variance를 가지고 정규화하는 경우도 있다. batch normalization에서나 input image normalization에서나 이유는 같.. [딥러닝 개념] softargmax란? 딥러닝 신경망을 공부하다보면 softargmax라는 개념이 종종 등장하기도 하고, 그냥 넘겨 지나갈 수 있으나 막상 이 논문을 구현하고자 한다면 가볍게 넘어갈 수 없다. 심지어는 어떤 논문에서는 softargmax에 대한 언급을 꽤 많이 하는 경우도 더러 있기 때문에 이번 기회에 확실히 이해하고자 한다. softargmax를 알기 전에 argmax를 이해하자. argmax는 input집합중에서 가장 큰 값의 index를 output으로 내보내는 함수라고 보면 된다. 그게 1차원일수도 있고, 2차원 이미지일 수도 있다. 만약 2차원 이미지를 argmax에 넣는다면 이미지에서 가장 pixel값이 큰 좌표가 나올 것이다.(pixel이 아니라 좌표가 나온다는 점에 주의해야 한다.) 여기서 중요한 점은 index.. [파라미터 수 계산법] conv layer 파라미터 계산법 convolution layer 간단 설명 컨볼루션 연산을 하게 되면 input 의 1개의 channel에 대해서는 1개의 convolution filter로만 연산하게 된다. 따라서 해당 filter가 강조하고자 하는 특징이 활성화돼서 output channel로 나가게 된다. 그렇기 때문에 여러개의 convolution filter를 사용해서 연산하는건데 이런 과정을 거치면 output channel여러개는 각각 서로 다른 특징에 대해서 활성화 된다. 예시 human pose estimation을 위해 convolution을 적용할것이고 하나의 convolution layer를 거치고 난 output channel들을 살펴본다고 가정하자. 이 때 output channel들은 서로 다른 특징에 대해 .. [개념] SGD간단 개념 정리 SGD는 Stochastic Gradient Descent의 준말로 batch gradient descent와 대비되는 개념이다. Stochastic Gradient Descent : 전체 data를 가지고 한번의 loss function을 계산하는게 아니라 batch단위로 loss function을 계산. 장점 : 1. 이로인해 loss function을 여러번 빨리 계산할 수 있다 2. local minima에 쉽게 빠지지 않는다. 즉, global minima를 찾을 확률이 높다. 반대로 BGD는 한번 loss를 계산할 때 마다 전체 data를 이용하여 계산하기 때문에 계산량이 많고 오래걸린다. Batch Gradient Descent는 이름때문에 SGD와 개념이 헷갈릴 수 있지만 여기서 Batch.. 이전 1 다음