CNN 가즈아~!
*.jpg
, *.png
등의 확장자를 가진 파일Pictures Elements
) 로 이루어진 2차원 데이터형태 변환
ex> crop(잘라내기) / rotate(회전) / resize(사이즈 재정의) / shearing(전단 변환) / rescale(비율 변환)
색상 변환
ex> brightness(밝기 조절) / contrast(대조 변환) / grayscale(흑백 변환)
필터
ex> sharpening / blur / edge-detection
Python의 경우 Pillow
혹은 OpenCV
로 이미지 전처리 가능
2차원의 5 X 5 이미지 데이터와 3 X 3 커널(필터)이 있다고 할 때
아래와 같은 연산이 진행됨
# stride: 1
result[0][0] =
image[0][0] * kernel[0][0] +
image[0][1] * kernel[0][1] +
image[0][2] * kernel[0][2] +
image[1][0] * kernel[1][0] +
... +
image[2][2] * kernel[2][2]
result[0][1] =
image[0][1] * kernel[0][0] +
image[0][2] * kernel[0][1] +
image[0][3] * kernel[0][2] +
... +
image[2][3] * kernel[2][2]
...
이런 연산 방식을 convolution 연산이라고 하며
이미지 데이터와 커널의 convolution 연산을 통해 나온 결과 => feature map
학습 가능한 커널들로 이루어진 Layer
layer와 layer 내부 커널을 통해 이미지의 특정 feature를 추출할 수 있음
-> 특정 feature를 추출하도록 커널 학습 가능
Hyperparameter
- stride
: 커널의 이동 폭
- padding
: 이미지의 padding
(convolution 연산 수행시 feature map 크기가 줄어듦을 방지)
하나의 커널이 픽셀 간 정보를 보며, 이미지 전체 영역을 학습하기 때문에 이미지 특징을 잘 뽑아낼 수 있음
커널이 가진 parameter를 이미지의 모든 영역에서 공유하기 때문에
FC Layer에 비해 parameter 수가 현저히 적으며 과적합 방지에 유리함
Convolution 또한 선형 연산이기 때문에 비선형성을 추가하기 위해 활성화 함수(주로 ReLU
) 를 사용
역할 : Feature Map 사이즈를 줄여서 Parameter 개수를 줄이는 것 -> 과적합 조절
이미지나 Feature Map을 겹치지 않는 영역으로 분할한 후
각 영역의 최대값 / 평균값 을 계산하여 새로운 Feature Map을 구성
( MaxPooling / Average Pooling)
일반적으로 Max Pooling 을 사용
Feature Map의 채널이 여러 개인 경우 각 채널 별로 Pooling 연산 수행
Global Average Pooling / Global Max Pooling
: 전체 Feature Map에서 하나의 평균값 / 최대값 을 계산
=> 여기선 Global Average Pooling을 많이 사용
Input Layer
- (Convolutional Layer
- ... - Pooling Layer
) (repeat) - Dense Layer
- ... - Output Layer
LeNet(1990) => 우편번호 인식을 위한 모델
AlexNet(2012) => imageNet challenge 우승 -> 기존 모델 성능을 큰 폭으로 상회
=> 딥러닝 모델 학습에 GPU를 활용
VGGNet(2014) => 커널 사이즈를 모두 3 x 3으로 통일
parameter 수 증가를 억제하면서 모델 층을 더 많이 쌓을 수 있게 됨
(층이 많을수록 성능이 향상됨)
ResNet(2015) => layer 개수를 최대 152개로 늘림
=> 이전 모델의 문제 : layer 개수가 많아지면 역전파시 vanishing gradient(기울기 소실) 문제 발생
=> residual connection 으로 해결
🤷♀️ Residual Connection ?
convolutional layer을 우회하는 연결
=> 입력 feature map이 우회로를 통과하여 convolutional layer의 feature map과 더해짐
=> 기울기가 항상 1 이상이 되어 기울기 소실 문제 해결
출처: 엘리스 학습 자료 및 강의