학습한 내용
1. CNN이란?
CNN은 Convolutional Neural Networks의 약자로 딥러닝에서 주로 이미지나 영상 데이터를 처리할 때 쓰이며 이름에서 알수있다시피 Convolution이라는 전처리 작업이 들어가는 Neural Network 모델입니다.
CNN을 사용하게 된 계기
- DNN(Deep Neural Network)의 문제점에서부터 출발합니다. 일반 DNN은 기본적으로 1차원 형태의 데이터를 사용합니다.
- 때문에 (예를들면 1028x1028같은 2차원 형태의)이미지가 입력값이 되는 경우, 이것을 flatten시켜서 한줄 데이터로 만들어야 하는데 이 과정에서 이미지의 공간적/지역적 정보(spatial/topological information)가 손실되게 됩니다.
- 또한 추상화과정 없이 바로 연산과정으로 넘어가 버리기 때문에 학습시간과 능률의 효율성이 저하됩니다.
DNN 문제를 해결하기 위한 방법
- CNN은 이미지를 날것(raw input) 그대로 받음으로써 공간적/지역적 정보를 유지한 채 특성(feature)들의 계층을 빌드업합니다. CNN의 중요 포인트는 이미지 전체보다는 부분을 보는 것, 그리고 이미지의 한 픽셀과 주변 픽셀들의 연관성을 살리는 것입니다.
2. CNN 주요 컨셉
1. Convolution의 작동 원리
-> 위와 같이 5x5의 matrix로 표현된 이미지 입력값이 있다고 가정, CNN에는 필터(커널)가 존재
이 하나의 필터를 이미지 입력값에 전체적으로 훑어준다고 생각하면 됩니다.
즉, 우리의 입력값 이미지의 모든 영역에 같은 필터를 반복 적용해 패턴을 찾아 처리하는 것이 목적
-> 이미지 위에 이 필터를 이용해 연산처리를 해주는 것, 이 연산처리는 matrix와 matrix간의 Inner Product
2. Zero padding
- Convolution처리를 보면 5x5크기의 이미지에 필터처리를 해주었더니 결과값의 크기가 3x3로 줄어들었다는 것을 알 수 있다. 즉 손실되는 부분이 발생한다는 뜻 -> 0로 구성된 테두리를 이미지 가장자리에 감싸 준다.
3. Stride
- Stride는 쉽게 말해 필터를 얼마만큼 움직여 주는가에 대한 것
- stride값이 1일경우 필터를 한칸씩 움직여 준다고 생각
4. The Order-3 Tensor 3차원 형성의 합성곱 연산
실습 1 - CNN In Pytorch 실습
Convolution Layers
- Conv1d(Text-CNN에서 많이 사용)
- Conv2d (이미지 분류에서 많이 사용)
- Conv3d (3d 모델에서 많이 사용)
Parameters
Conv2d(in_channels, out_channels, kernel_size, stride=1, padding=0, dilation=1, groups=1, bias=True, padding_mode='zeros')
- in_channels: 입력 채널 수을 뜻합니다. 흑백 이미지일 경우 1, RGB 값을 가진 이미지일 경우 3을 가진 경우가 많습니다.
- out_channels: 출력 채널 수을 뜻합니다.
- kernel_size: 커널 사이즈를 뜻합니다. int 혹은 tuple이 올 수 있습니다.
- stride: stride 사이즈를 뜻합니다. int 혹은 tuple이 올 수 있습니다. 기본 값은 1입니다.
- padding: padding 사이즈를 뜻합니다. int 혹은 tuple이 올 수 있습니다. 기본 값은 0입니다.
- padding_mode: padding mode를 설정할 수 있습니다. 기본 값은 'zeros' 입니다. 아직 zero padding만 지원 합니다.
- dilation: 커널 사이 간격 사이즈를 조절 합니다.
- groups: 입력 층의 그룹 수을 설정하여 입력의 채널 수를 그룹 수에 맞게 분류 합니다. 그 다음, 출력의 채널 수를 그룹 수에 맞게 분리하여, 입력 그룹과 출력 그룹의 짝을 지은 다음 해당 그룹 안에서만 연산이 이루어지게 합니다.
- bias: bias(편향) 값을 설정 할 지, 말지를 결정합니다. 기본 값은 True 입니다.
Bias -> 예측값과 실제 정답과의 차이의 평균
Shape
코드
>> 결과
학습한 내용 중 어려웠던 점 또는 해결못한 것들
딱히 없다
해결방법 작성
학습 소감
강의에서 배우는 거는 기본적인 것들이니까 심화 내용은 직접 찾아봐야겠다.