Padding을 하는 이유는 1. 영상에서 말씀하신 것처럼, Layer를 통과할 수록 이미지가 계속 작아지는 것을 방지하기 위함. ( 계속 작아지면 깊은 layer에 도착했을 때 input의 크기가 너무 작아져서 진행하기 어려움) 2. Input의 가운데 값은 필터가 여러번 검사하는 것에 비해, 모서리 값은 적게 검사하기 때문에, 이를 방지하기 위함. ( 패딩을 쓰지 않을 경우 3*3 filter 인 경우 가운데는 9번, 왼쪽 끝 꼭짓점은 1번 --- 이렇게 filter를 통과하는 횟수가 차이가 남) 라고 하네요.
Andrew교수님의 동영상, CS231n 강의도 보았지만 짧은 영어로 인해 어려움이 많았는데 너무 쉽게 잘 성명해주셔서 고맙습니다. 이번 강의에서 2분 정도에서 첫번째 CONV계층을 이미지에서 잘라낸 영역이라고 말씀하셨는데 커널을 이용해 전체 이미지를 convolution 연산한 결과(특정 특징이 잘 나타난 이미지) 맵이라는 표현이 정확하지 않나요?
+Seunghyun Lee 맞습니다. 그렇게 표현하는 것이 더 정확할것 같습니다. 한 값을 뽑을대 이미지의 특정 부분을 보고 뽑는다는 이야기를 제가 좀 혼돈되게 한것 같습니다. 전체 점이 모인 하나의 activation멥은 "전체 이미지를 convolution 연산한 결과"입니다. 다른 분들도 참고 하시길... 감사합니다.
교수님 좋은 강의 감사합니다. 처음 32*32*3 image에서 깊이 3의 의미가 rgb를 표현하기 위한 부분이라고 생각했을때, 뒤에 activation map의 깊이 6, 10 들은 rgb를 더 확대해서 표현하기 위함인가요 아니면 rgb와는 다른 속성을 표현하기 위함인가요?(강의 의미상으로는 '다른 필터' 라고 말씀하신걸로 보아선 activation map 을 구성하는 각 레이어들이 다 다른 속성을 의미하는것 같기도 합니다만..) 그리고 depth를 굳이 처음 이미지 32*32*3 의 3으로 유지하지 않고 6, 10으로 '임의로' 늘려 나가거나 줄여나갈 수 있는 이유가 무엇인지도 궁금합니다!
안녕하세요 14분 30초에 질문있어서 글 남깁니다. 앞서 필터를 설정할 때 이미지가 컬러이기 때문에 레이어 크기 중 뒤에 3을 곱했는데, Activation maps 설정 시 28x28x6을 하는데 이 때 레이어를 6개를 사용하는거라면 컬러 이미지를 고려해주는 것이 아닌건가요? 그리고 그렇다면 앞선 필터의 경우는 레이어가 3개인 건가요? (5x5레이어가 3개인 경우)
안녕하세요 교수님. 질문 있습니다. 제가 이해하기로는 32 x 32 x 3 input image를 5 x 5 x 3 filter로 (stride = 1) filtering를 한다고 하면 하나의 28 x 28 의 2차원 output이 생성 되고 이러한 2차원의 output 을 여러 개 만들어서 그것을 activation map 이라고 하는 것으로 이해하였습니다. 만약 그렇다면 보통 image의 값은 rgb로 표현해서 3차원 벡터로 알고 있는데 5 x 5 x 3 filter로 filtering 된 하나의 28 x 28 의 2차원 output은 (필터 방법에 따라 다르겠지만) input image의 rgb를 모두 고려한 output 이라고 볼 수 있는지요? 강의 정말 잘 보고 있습니다. 좋은 강의 감사합니다
네 맞아요 자세한건 ruclips.net/video/bNb2fEVKeEo/видео.html ppt자료 출처의 영상을 보시면 아시겠지만, 5x5x3필터는 총 75개의 weights를 가지고 1개의 bias를 가집니다.(1개인지 75개인지 확실하지 않음) 즉 이 중에 5x5x1 weights는 R에 해당나머지 5x5x2 weights는 GB에 해당합니다. 그리고 이 필터는 한번 움직일 때마다 하나의 점을 만듭니다. (5x5x3번 "Wx+b"를 해서 1개의 점을 만듭니다) 총 28x28-1번 움직여서. 결과로 나올 28x28 output을 만들게 됩니다.
영상을 보고 약간 이해가 안가 질문 드립니다. 이미지를 필터링 할 수록 input 이미지보다 output이미지가 계속 작아져서 Convolution을 사용한다는건 알겠습니다. Convolution을 사용해서 input 이미지 사이즈와 output사이즈가 같아지는건 이해가 가는데... input 이미지와 output 이미지 사이즈는 같지만 서로 픽셀값은 달라서 근본적으로 다른이미지 아닌가요??? 물론 일정한 수를 Convolution했기때문에 전체적으로 형태정도는 비슷하겠지만요.. CNN에서 Convolution을 통해 어떤식으로 학습하나요?? 제가 컴퓨터 관련 전공은 아니고 방사선 전공인대 여기서도 Convolution개념이 나오는대 제가 배우는 곳은 CT영상을 처리할때 Convolution에서 특정 부위 픽샐값을 잘보게 한다로 배워깄했는데... 제가 배운건 흑과백인 CT영상이고 이건 실제 RGB 이미지라 햇갈리네요..
질문이 조금 이해가 어렵긴 합니다만, 말씀하신걸 정리해보면 1. conv를 해주면 input이 filter를 통해 계산되며 가로세로는 작아지게 됩니다. 2. 하지만 padding을 사용하면 input과 filter로 conv한 결과의 가로세로가 같아지게 만들수도 있겠지요. 이렇게 conv를 거치면 더이상 이미지 데이터는 아니게 됩니다. 이미지에서 필터를 통해서 어떤 특성을 추출한 값들이 되는 것이지요. 이렇게 이미지를 CNN 끝까지 나가면 이것은 고양이다, 강아지다 라는 식으로 정의한 라벨을 맞추는지 보게 되고, 이게 틀리다면 backpropagation 을 통해 필터의 값들 (=weight)들을 조금씩 조정해 가면서 학습시키게 됩니다.
하나의 필더(5 x 5 x 3 filter)에 x1~x75 에 W를 곱할 때 w의 갯수가 75개 될텐데, w1~w75 까지는 다 같은 숫자일지 아니면 75가지가 다 다를 수 있는지 궁금합니다. 만약 후자라면 하나에 필더에 사용되는 W라는 웨이트가 하나의 숫자가 아닌 Array 개념이라고 생각하면 될까요?
교수님 한가지 궁금한 점이 있어서 글 남깁니다. 간단한 부분인데 조금 헷갈려서요. conv_net에서는 convolution 연산하는 부분과 마지막 Full connected NN 부분으로 나눌 수 있는 것 같은데요.위 두 부분 모두 optimization으로 cost를 감소시켜 주는 건가요? CNN의 특징을 알기 위해 여러가지 파라미터를 바꾸어 보는 중 의문이 생겨서 질문 남깁니다.
혹시 이 문제에 대해서 답변해주실 수 있는 분이 계실까요 ? 영상에서 설명된 Zero Padding은 ' 이미지가 작아지는걸 막아주는 좋은 방법이지만, 그만큼 영상의 정보를 희석시키지 않을까 ' 라는 생각이 들었습니다. Image 테두리 부분의 데이터들은 Filter내 0들로 인해서 그들의 Feature가 약해지게 되지 않을까 생각이 듭니다. 이로 인해서 Layer가 깊어질 수록 테두리 부터해서 내부로 점점 '0'이 전파되게 되고, Image내에 존재하지 않고 인위적으로 Padding한 '0' 때문에 이미지가 훼손되지 않을까 생각이 듭니다. 혹시 Zero Padding말고 다른 Padding방법이 있는지, 그리고 이미지의 내용들을 온전히 보전하는 Padding 방법은 없는지 궁금합니다.
padding을 실행시키지 않을 경우 최외곽 이외에 가상의 padding영역을 만들어 이곳에 random한 값(0~255)이 들어가게 됩니다. 즉, 노이즈와 같은 형태로 들어가죠 feature는 보통 가장 큰 값을 가장 유효한 값으로 생각합니다(max pooling이 왜 픽셀 값이 가장 큰 값을 택하는지 생각해보시면 됩니다.) 따라서 noise에 의해서 255와 같은 큰 값이 섞여서 들어가면 convolution을 연산하는 과정에서 noise에 의해 연산된 그 결과 픽셀이 아주 중요한 feature로써 '착각'되게 됩니다. 사실상 테두리 값은 그렇게 큰 의미를 가지지 않는데 말이죠.
32*32*3 이미지를 Padding 하면 34*34*3 이미지가 될것이고 이걸 5*5*3으로 필터링하면 출력은 (34-5)/1 +1 이니 30*30이 되겠습니다. 이걸 여섯개의 다른 Weight를 가진 필터로 작업하니 Activation map은 30*30*6이 됩니다. 이걸 10개의 5*5*6 이라는 필터로 돌리면(이때는 padding이 없다고 보면) (30-5)/1 + 1 = 26*26의 출력이 10개 필터로 되니 26*26*10이 되겠습니다. 제가 틀린 부분이 있으면 이야기 주십시오.
Hyunseok Jeong 제 생각엔 padding 을 사용한다면 1개가 아니라, 2개의 padding(zero pad with 2)을 사용할 듯 합니다. ((32+2*2)-5)/1 - 1 = 32 padding을 사용하는 목적 중 하나는 그림이 작아지는 것을 방지하는 하는 것이니깐요. 그리고.. 제가 알아듣기로는 질문하신분의 요지는 padding의 적용이 아니라.. 첫번째 Conv에서 두번째 Conv로 이동할 때, 필터가 구체적으로 어떻게 적용되는지를 묻고있는 것 같습니다.
Padding을 하는 이유는
1. 영상에서 말씀하신 것처럼, Layer를 통과할 수록 이미지가 계속 작아지는 것을 방지하기 위함.
( 계속 작아지면 깊은 layer에 도착했을 때 input의 크기가 너무 작아져서 진행하기 어려움)
2. Input의 가운데 값은 필터가 여러번 검사하는 것에 비해, 모서리 값은 적게 검사하기 때문에, 이를 방지하기 위함.
( 패딩을 쓰지 않을 경우 3*3 filter 인 경우 가운데는 9번, 왼쪽 끝 꼭짓점은 1번 --- 이렇게 filter를 통과하는 횟수가 차이가 남)
라고 하네요.
이 강의 정말 사랑스럽네요
Andrew교수님의 동영상, CS231n 강의도 보았지만 짧은 영어로 인해 어려움이 많았는데 너무 쉽게 잘 성명해주셔서 고맙습니다.
이번 강의에서 2분 정도에서 첫번째 CONV계층을 이미지에서 잘라낸 영역이라고 말씀하셨는데 커널을 이용해 전체 이미지를 convolution 연산한 결과(특정 특징이 잘 나타난 이미지) 맵이라는 표현이 정확하지 않나요?
+Seunghyun Lee 맞습니다. 그렇게 표현하는 것이 더 정확할것 같습니다. 한 값을 뽑을대 이미지의 특정 부분을 보고 뽑는다는 이야기를 제가 좀 혼돈되게 한것 같습니다. 전체 점이 모인 하나의 activation멥은 "전체 이미지를 convolution 연산한 결과"입니다. 다른 분들도 참고 하시길... 감사합니다.
@@hunkims 그럼 그렇게 전체연산하여 나온 이미지가 하나의 "깊이"라는 말씀이신가요
ruclips.net/video/YRhxdVk_sIs/видео.html
혹시 공부하시는 다른 분들을 위해서 대댓글 답니다.
위 동영상 6:30부터 필터링이 어떻게 특정 이미지 부분의 특징을 잡아내는지 설명해주네요!
교수님 좋은 강의 감사합니다.
처음 32*32*3 image에서 깊이 3의 의미가 rgb를 표현하기 위한 부분이라고 생각했을때,
뒤에 activation map의 깊이 6, 10 들은 rgb를 더 확대해서 표현하기 위함인가요 아니면 rgb와는 다른 속성을 표현하기 위함인가요?(강의 의미상으로는 '다른 필터' 라고 말씀하신걸로 보아선 activation map 을 구성하는 각 레이어들이 다 다른 속성을 의미하는것 같기도 합니다만..) 그리고 depth를 굳이 처음 이미지 32*32*3 의 3으로 유지하지 않고 6, 10으로 '임의로' 늘려 나가거나 줄여나갈 수 있는 이유가 무엇인지도 궁금합니다!
CONV를 통해 나온 값들은 더이상 RGB와는 상관이 없다고 보셔도 될 것 같습니다.
필터를 통해 이미지의 특성들을 추출해낸 것이고, 필터를 더 많이 사용했다면 더 다양한 특성들을 추출했다 보시면 될 듯 합니다.
감사합니다! 이해갔습니다 ㅎㅎ
정말 감사합니다. 강의 보고 많은 도움이 되었습니다.
안녕하세요 14분 30초에 질문있어서 글 남깁니다.
앞서 필터를 설정할 때 이미지가 컬러이기 때문에 레이어 크기 중 뒤에 3을 곱했는데,
Activation maps 설정 시 28x28x6을 하는데 이 때 레이어를 6개를 사용하는거라면 컬러 이미지를 고려해주는 것이 아닌건가요?
그리고 그렇다면 앞선 필터의 경우는 레이어가 3개인 건가요? (5x5레이어가 3개인 경우)
안녕하세요 교수님. 질문 있습니다.
제가 이해하기로는
32 x 32 x 3 input image를 5 x 5 x 3 filter로 (stride = 1) filtering를 한다고 하면 하나의 28 x 28 의 2차원 output이 생성 되고
이러한 2차원의 output 을 여러 개 만들어서 그것을 activation map 이라고 하는 것으로 이해하였습니다.
만약 그렇다면
보통 image의 값은 rgb로 표현해서 3차원 벡터로 알고 있는데
5 x 5 x 3 filter로 filtering 된
하나의 28 x 28 의 2차원 output은 (필터 방법에 따라 다르겠지만) input image의 rgb를 모두 고려한 output 이라고 볼 수 있는지요?
강의 정말 잘 보고 있습니다. 좋은 강의 감사합니다
저도 똑같이 이해했습니다.
네 맞아요 자세한건
ruclips.net/video/bNb2fEVKeEo/видео.html
ppt자료 출처의 영상을 보시면 아시겠지만,
5x5x3필터는 총 75개의 weights를 가지고 1개의 bias를 가집니다.(1개인지 75개인지 확실하지 않음)
즉 이 중에 5x5x1 weights는 R에 해당나머지 5x5x2 weights는 GB에 해당합니다.
그리고 이 필터는 한번 움직일 때마다 하나의 점을 만듭니다. (5x5x3번 "Wx+b"를 해서 1개의 점을 만듭니다)
총 28x28-1번 움직여서.
결과로 나올 28x28 output을 만들게 됩니다.
@@asdfzxcvasdf663 1개의 bias 맞습니다.
머신러닝... 한참을 헤매고 다녔는데.. 감사합니다. a-z 가 여기에 있네요.
+Lee SanGu ㅎㅎ 좋게 봐주셔서 감사합니다. 다른 분들에게도 많이 알려주세요.
영상을 보고 약간 이해가 안가 질문 드립니다. 이미지를 필터링 할 수록 input 이미지보다 output이미지가 계속 작아져서 Convolution을 사용한다는건 알겠습니다. Convolution을 사용해서 input 이미지 사이즈와 output사이즈가 같아지는건 이해가 가는데... input 이미지와 output 이미지 사이즈는 같지만 서로 픽셀값은 달라서 근본적으로 다른이미지 아닌가요??? 물론 일정한 수를 Convolution했기때문에 전체적으로 형태정도는 비슷하겠지만요.. CNN에서 Convolution을 통해 어떤식으로 학습하나요??
제가 컴퓨터 관련 전공은 아니고 방사선 전공인대 여기서도 Convolution개념이 나오는대 제가 배우는 곳은 CT영상을 처리할때 Convolution에서 특정 부위 픽샐값을 잘보게 한다로 배워깄했는데... 제가 배운건 흑과백인 CT영상이고 이건 실제 RGB 이미지라 햇갈리네요..
질문이 조금 이해가 어렵긴 합니다만, 말씀하신걸 정리해보면
1. conv를 해주면 input이 filter를 통해 계산되며 가로세로는 작아지게 됩니다.
2. 하지만 padding을 사용하면 input과 filter로 conv한 결과의 가로세로가 같아지게 만들수도 있겠지요.
이렇게 conv를 거치면 더이상 이미지 데이터는 아니게 됩니다.
이미지에서 필터를 통해서 어떤 특성을 추출한 값들이 되는 것이지요.
이렇게 이미지를 CNN 끝까지 나가면 이것은 고양이다, 강아지다 라는 식으로 정의한 라벨을 맞추는지 보게 되고, 이게 틀리다면 backpropagation 을 통해 필터의 값들 (=weight)들을 조금씩 조정해 가면서 학습시키게 됩니다.
그렇군요 정리 고맙습니다.
하나의 필더(5 x 5 x 3 filter)에 x1~x75 에 W를 곱할 때 w의 갯수가 75개 될텐데, w1~w75 까지는 다 같은 숫자일지 아니면 75가지가 다 다를 수 있는지 궁금합니다. 만약 후자라면 하나에 필더에 사용되는 W라는 웨이트가 하나의 숫자가 아닌 Array 개념이라고 생각하면 될까요?
좋은 강의 감사합니다.
교수님 한가지 궁금한 점이 있어서 글 남깁니다. 간단한 부분인데 조금 헷갈려서요. conv_net에서는 convolution 연산하는 부분과 마지막 Full connected NN 부분으로 나눌 수 있는 것 같은데요.위 두 부분 모두 optimization으로 cost를 감소시켜 주는 건가요? CNN의 특징을 알기 위해 여러가지 파라미터를 바꾸어 보는 중 의문이 생겨서 질문 남깁니다.
CONV의 필터값(=weight)과 FC의 weight 모두 optimization을 통해 최적화 하게 되고, 최종 cost 함수를 통해 나오는 값을 minimize 하겠습니다.
그림을 전체적으로 훑을때 같은 컨볼류션 벡터로 팩터를 뽑아내나요?
그렇게 한 컨볼루션벡터로 전체적으로 훑어서 나온걸 한개의 "깊이"로 보는건가요
혹시 이 문제에 대해서 답변해주실 수 있는 분이 계실까요 ?
영상에서 설명된 Zero Padding은
' 이미지가 작아지는걸 막아주는 좋은 방법이지만, 그만큼 영상의 정보를 희석시키지 않을까 '
라는 생각이 들었습니다.
Image 테두리 부분의 데이터들은 Filter내 0들로 인해서 그들의 Feature가 약해지게 되지 않을까 생각이 듭니다.
이로 인해서 Layer가 깊어질 수록 테두리 부터해서 내부로 점점 '0'이 전파되게 되고,
Image내에 존재하지 않고 인위적으로 Padding한 '0' 때문에 이미지가 훼손되지 않을까 생각이 듭니다.
혹시 Zero Padding말고 다른 Padding방법이 있는지, 그리고 이미지의 내용들을 온전히 보전하는 Padding 방법은 없는지 궁금합니다.
Partial Convolution based Padding 이란 방법이 있습니다.
padding을 실행시키지 않을 경우 최외곽 이외에 가상의 padding영역을 만들어 이곳에 random한 값(0~255)이 들어가게 됩니다. 즉, 노이즈와 같은 형태로 들어가죠
feature는 보통 가장 큰 값을 가장 유효한 값으로 생각합니다(max pooling이 왜 픽셀 값이 가장 큰 값을 택하는지 생각해보시면 됩니다.)
따라서 noise에 의해서 255와 같은 큰 값이 섞여서 들어가면 convolution을 연산하는 과정에서 noise에 의해 연산된 그 결과 픽셀이 아주 중요한 feature로써 '착각'되게 됩니다. 사실상 테두리 값은 그렇게 큰 의미를 가지지 않는데 말이죠.
이건 머신러닝보다는 이미지처리에 가까운 내용인 것 같네요.
감사합니다.
많은 도움 되었습니다.
교수님 궁금한게 있어서 여쭤봅니당 CNN, RNN예를 이미지로 들어주셔서 그런데 저런 뉴럴도 숫자 데이터에도 적용이 가능한건가요?
넵. 숫자 데이타도 사용가능합니다.
15:33 초 부분이 헷갈렸는데 반복해서 보다 보니 겨우 이해가 됩니다. -ㅂ-);;
교수님, 32x32x3 image에, 6개의 filter를 사용하고, padding 사용한다면, (32x32x3) image가 6개가 생기는데, 그 뒤에 다시 10개를 filter를 사용하면, ( 32x32x3x6) 개가 10개가 생기는 것으로 이해 하면 되는지요?
32*32*3 이미지를 Padding 하면 34*34*3 이미지가 될것이고
이걸 5*5*3으로 필터링하면 출력은 (34-5)/1 +1 이니 30*30이 되겠습니다.
이걸 여섯개의 다른 Weight를 가진 필터로 작업하니 Activation map은 30*30*6이 됩니다.
이걸 10개의 5*5*6 이라는 필터로 돌리면(이때는 padding이 없다고 보면)
(30-5)/1 + 1 = 26*26의 출력이 10개 필터로 되니 26*26*10이 되겠습니다.
제가 틀린 부분이 있으면 이야기 주십시오.
Hyunseok Jeong
제 생각엔 padding 을 사용한다면 1개가 아니라, 2개의 padding(zero pad with 2)을 사용할 듯 합니다. ((32+2*2)-5)/1 - 1 = 32 padding을 사용하는 목적 중 하나는 그림이 작아지는 것을 방지하는 하는 것이니깐요.
그리고.. 제가 알아듣기로는 질문하신분의 요지는 padding의 적용이 아니라.. 첫번째 Conv에서 두번째 Conv로 이동할 때, 필터가 구체적으로 어떻게 적용되는지를 묻고있는 것 같습니다.
cho heechang
저도 그 부분이 헷깔렸는데..
parse.ele.tue.nl/cluster/2/CNNArchitecture.jpg
해당 페이지의 그림을 보고 나름대로의 결론을 내렸습니다.
Only limit is your imagination. Big hero에서 나온말인가요.
질문있습니다.
이미지 레이어 32×32×3 에서 마지막 3은 rgb 수치를 나타내신 건가요?
대신 답변 죄송하지만 RGB 값 맞습니다 !
필터를 사용해서 사진을 나눈뒤에 그거를 값으로 바꾼다고 했는데 어떻게 사진이 값(숫자)로 되나요???
2020.12.17 영상 시청
-> CNN 내용 더 공부하기!!
필터도 학습하는건가요?
넵. 필터도 학습하게 됩니다.
5