본문 바로가기
PyTorch/머신러닝

Convolutional neural network, CNN, 합성곱 신경망

by monkey_buddy 2023. 7. 13.

CNN이란 인간의 시신경 구조를 모방한 기술로 이미지를 인식하기 위한 패턴을 찾는데 매우 효과적이다.

 

CNN은 input layer, output layer 그리고 그 사이의 여러  hidden layer로 구성되어있습니다.

이러한 layer는 해당 데이터의 고유한 feature를 학습하기 위함으로 데이터를 변형시키는 연산을 수행합니다.

가장 일반적인 3가지 계층으로는 Convolution layer, ReLU(Activate) layer, Pooling layer가 있습니다.

 

Convolution layer: 컴퓨터는 이미지의 객체를 인식할 때, 다른 배경에서의 동일한 객체를 다른 객체로 인식한다.

이러한 오류를 해결하기 위해 사용하는 것이 Convolution layer이다.

이미지보다 작은 사이즈의 커널이라는 필터를 사용하여 특징을 추출해낸다.

 

위의 이미지는 2x2 사이즈를 가진 커널이 죄측에서 우측으로, 위에서 아래로 한 칸씩 이동(stride 1x1)하며 feature map을 만들어내는 모습입니다. 이처럼 작업을 수행하면 4x4의 크기를 가진 원래 이미지가 3x3으로 줄어들게 되는 현상이 발생하게 됩니다.

 

이를 해결하기 위한 대안으로 Padding이라는 개념이 나오게 됩니다.

32x32인 이미지에 커널사이즈 3x3, stride 1x1로 feature map을 추출하면 사이즈가 28x28로 줄어들게 될 것입니다. 이를 해결하기 위해서 위와같이 zero padding을 하면 원본 이미지의 사이즈 그대로 feature map을 추출할 수 있습니다.

 

 

https://nafizshahriar.medium.com/what-is-convolutional-neural-network-cnn-deep-learning-b3921bdd82d5

 

'PyTorch > 머신러닝' 카테고리의 다른 글

Multinomial Classification(다중분류)  (0) 2023.07.12
Logistic Regression(Binary Classification)  (0) 2023.07.11
Linear Layer  (0) 2023.07.04
Linear regression  (0) 2023.06.27