본문 바로가기

반응형

연구

(58)
[pytorch] register_buffer 란? register_buffer 로 layer를 등록하면 어떤 특징이 있는가? 1. optimizer가 업데이트하지 않는다. 2. 그러나 값은 존재한다(하나의 layer로써 작용한다고 보면 된다.) 3. state_dict()로 확인이 가능하다. 4. GPU연산이 가능하다. 따라서 네트워크를 구성함에 있어서 네트워크를 end2end로 학습시키고 싶은데 중간에 업데이트를 하지않는 일반 layer를 넣고 싶을 때 사용할 수 있다. 참고 사이트 : discuss.pytorch.org/t/what-is-the-difference-between-register-buffer-and-register-parameter-of-nn-module/32723/6
[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..
[개념정리] orthogonal 하다는 것의 의미? orthogonal, 선형 독립, 선형 종속 같은 개념이 나오지만 이 글에서는 최대한 수학적인 설명이 아닌, 개념적 설명위주로 하겠다. 두 특성이 orthogonal하다는 것은 두 특성이 독립이다 라는 개념안에 포함되는 개념이다. 즉, A와 B가 orthogonal하면 반드시 독립인 관계이지만, A와B가 독립이라고해서 반드시 orthogonal한것은 아니라는 뜻. 그렇다면 두 특성이 독립이라는 것은 무슨말일까? 두 특성 A, B가 선형 종속이 아니라는 소리인데 이 말은 또 무슨말인가?? 두 특성이 종속관계이면 완전히 대체가 가능하다. 즉, A와 B를 둘다 쓸 필요없이 둘중 하나만 쓰면 된다는것. 예를 들어 회사에서 김대리가 박사원의 모든 일을 커버할 수 있으면 두 관계는 종속이라고 할 수 있겠다. 이제 ..
[Error] IndexError: invalid index of a 0-dim tensor. Use `tensor.item()` in Python or `tensor.item<T>()` in C++ to convert a 0-dim tensor to a number IndexError로 다음과 같은 에러가 발생했다. 깃허브에 있는 예전 코드를 가져올 때 발생할 수 있는 에러인데 pyTorch의 버전이 0.5 보다 크면 발생할 수 있다고 한다. 이 에러는 단순히 0 차원 텐서가 유효하지 않기 때문에 발생하는 에러다. data[0] --> data 로 바꿔주면 해결된다. 주석처럼 돼있는걸 주석 아래줄로 바꾸면 된다. 참고 사이트 : github.com/NVIDIA/flownet2-pytorch/issues/113
[논문정리] (AlexNet) ImageNet Classification with Deep ConvolutionalNeural Networks 이 포스트는 현재 수정중입니다. 요약 내용정리 눈여겨볼점: 1. ReLU 사용 2. GPU병렬 사용 3. Normalization 기법 4. overlapping pooling 5. overfitting을 피하기 위한 dropout 사용
[연구 기록] FAN코드와 내 코드를 비교하며 알게된 점 FAN코드는 Bulat의 How far are we from solving the 2D & 3D Face Alignment problem? 논문의 코드이다. 이 논문은 2D,3D face alignment에서 유명한 논문이며 이 논문의 코드와 내 코드의 비교는 의미있다고 할 수 있다. 아래에서 개인적으로 가장 중요하다고 생각하는건 학습 option 설정, Randomness통제, 각 option에 따른 기능 구현이다. 비교사항 논문 코드 내 코드 log 기록 객체화시켜서 각 기능을 구현했다. 구체적이다. learning rate, train cost, train error, val cost, val error를 epoch 마다 기록했다(loss나 성능관련된건 train, test 할 것 없이 다 기록한 ..

반응형