머신러닝,딥러닝/tensorflow

lec11 ConvNet 의 conv 레이어 만들기

mcdn 2021. 1. 25. 16:49
반응형

convoutional network 

고양이 실험에서 착안 

뉴런이 작용하는 거 각각 담당하는게 있어 보임 

 

각 이미지를 레이어 만들어냄 relu pool 을 계속 겹쳐 만듬 

한 레이어로부터 단계적으로 어떻게 일어나는지 이야기해보도록 하겠음 

 

이미ㅈ를 우선 이렇게 벽이 만들어짐 

고양이 실현에서 우선 이미지 한 부분을 처리하려고 한다. 

이 작은 블락을 필터라고 한다. 필터 크기는 우리가 정의할 수 있다. 현재는 5*5 

저 빨간 블락은 궁극적으로 한 값을 만들어낸다. 

한개의 값으로

어떻게 만들어낼 수 있는가? 

 

우리가 예전부터 사용했던 wx + b를 이용해서 만든다 

w가 뭐냐? weight 지 

하나의 숫자로 만들어낸다. 

relu로 하면 relu한거 

똑같은 필터를 가지고 다른 블락도 본다. 

같은 값으로 모든 블락을 처리. 그렇게 되면 몇개의 값이 나오는가? 

 

7*7 사이즈의 이미지에서 3 * 3 필터를 뽑아낸다면 

한칸씩 옮기기 때문에 stride = 1 한 칸 씩 움직인다는 뜻 

그렇게 되면 5번 갈 수 있다. 

 

 

stride = 2 면 3*3 아웃풋이 나온다. 

output size : (N - F ) / stride = 1 

7 - 3 / 1 + 1 = 5 

stride 3은 할 수 없다. 

보통 패딩이라는 개념을 사용한다. 

그림이 급격히 작아지는 것을 방지, 

pad with 1 pixel border ? 

9*9 크기가 되므로 대입해보면 7 * 7 이 된다. 

패딩을 해서 출력과 인풋의 사이즈가 같게 만듬 보통 

필터를 다른 필터를 만들어서 하나더 만들어낸다. 

이것을 6개를 적용해서 만듬 

convolution layer에 적용하면 (? ? 6)이 된다. 

 

10개의 두께가 된다. 

이 weight varaible 개수는? 

5 * 5 * 3? 

랜덤하게 적용한다. 처음에는 그리고 학습 

 

 

========================================

 

아까 차 이미지 해석할 때 relu pool 있었다. 

 

 

pooling layer(sampling)

한 레이어만 뽑아낸다. 이걸 

resize (sampling) 사이즈가 작아진다. 

그리고 이걸 또 쌓는다. 

 

예를 들어보자 max pooling 

필터 개념 2*2 다. stride = 2 두칸씩 옮겨져서 본다. 

4개가 출력된다. 

필터는 보통 max pooling 이라는 가장 큰 값을 Number로 도출 

이렇게 처리하는게 풀링 

 

relu 는 conv 아웃풋을 넣으면 되고.. 

그럼 어떻게 쌓아? 이건 우리가 알아서 하면 된다. 

마지막에 pooling 하게 되면 

3*3*10 이였으면 이걸 원하는 만큼 일반적인 neuralnetwork softmax 이용해서 구성하면 된다. 

 

이것이 어떻게 동작하는지 이 사이트 가면 알 수 있다. 

 

 

========================================

 

이번에는 응용 사례에 대해서 배우자 

convolutional network 

 

case study : LeNet -5 

lecun 교수님 

손글씨를 보면 5*5 stride 1 을 이용 

6개의 레이어 28 & 28 

subsampling 

14 * 14 

쭉 가면 굉장히 심플하고 이해하기 쉬운 사례 

 

 

case study : Alexnet 

이미지 경신대회에서 1등 ?? 

96개 필터 11*11*3 필터 stride  4 

55 * 55 * 96 output volume 

35k 파라미터 

그다음은 풀링 레이어 

 

계속 이어진다 

 

깊고 복잡하지만 하나씩 보면 작동 단계 알 수 있다.

normalization layer 이건 최근들어 잘 사용하지 않는다 

 

최종 값을 4096 출력 만듬 이걸 

그리고 마지막에는 1000개 로 만듬 

relu를 처음 사용... 

7개를 만들고 합쳤다. 한개씩은 18% 오류가 15% 줄였다. 

굉장히 사람들을 놀라게 했던.. 그런 사례 

case study : google net 

inception module 

컨보셔널 하고 풀링하고 인셉션 ㅋㅋㅋ 

 

창의적 

최강자 사람은 5%가 최저인데 그걸 능가한다. 

 

resnet 152 레이어 ㅋㅋㅋㅋㅋ

옆에 그림 봐 

학습 fastforward 개념을 사용했다. 

자세히보면 그냥 뛰어넘는다. 깊지 않은 느낌 

왜 잘 되는지는 다 이해하지는 못하고 있다. 

 

yoon kim 한국 분 박사님 

textd에다가 클래스파이 해봤다. 

convolutional nn 

알파고 역시 conv 사용했다. 

nature 논문 

어렵다 

5개는 zero pad 23 * 23 이미지. kfilter 5 *5 stride 1 등 

오늘 배운 내용 이해할 수 있다. 

 

 

 

 

 

 

 

 

 

 

반응형