본문 바로가기

인공지능

Convolutional Neural Networks 기초

CNN (Convolutional Neural Networks) 구조

 

 

Convolution(합성곱) Layer

이미지는 높이 x 너비 x 채널의 3차원 텐서로 표현될 수 있다. RGB 이미지의 경우, 채널은 3이 된다.

 

합성곱 연산 과정

Filter

하나의 합성곱 계층에는 입력 이미지의 채널 개수만큼 필터가 존재한다. 채널이 3이면 필터의 개수도 3이 되는 것이다.

각 채널에 할당된 필터를 적용함으로써 합성곱 계층의 출력 이미지가 생성된다.

 

입력 이미지에 filter를 적용하는 방법

 

Stride

이미지에 필터를 적용할 때는 필터의 이동량을 의미하는 스트라이드를 설정해야 한다.

스트라이드가 1이면 필터가 1칸씩, 2이면 필터가 2칸씩 이동한다. 스트라이드 값이 커질수록 입력 이미지를 훑는 횟수가 적어지므로 결과 feature map의 크기는 작아진다.

 

Padding

입력 이미지에 합성곱 연산을 수행하면, 출력 이미지의 크기는 입력 이미지의 크기보다 작아지게 된다. 그러면서 이미지 가장자리에 위치한 픽셀들의 정보는 점점 사라지게 된다.

이런 문제를 해결하기 위해 패딩을 이용한다.

 

패딩은 입력 이미지의 가장자리에 특정 값으로 설정된 픽셀들을 추가함으로써 입력 이미지와 출력 이미지의 크기를 같거나 비슷하게 만든다.

이미지의 가장자리에 값이 0인 픽셀을 추가하는 것을 zero-padding이라고 하며, CNN에서는 주로 zero-padding을 사용한다.

 

이 그림은 stride=1과 zero-padding을 적용하였더니 출력 이미지의 크기가 입력 이미지의 크기와 같게 유지되는 것을 볼 수 있다.

 

Pooling Layer

이미지의 크기를 유지한 채 Fully Connected layer로 가게 된다면 연산량이 기하급수적으로 늘어날 것이다.

적당히 크기도 줄이고, 특정 featrue도 강조할 수 있어야 하는데, 그 역할을 pooling layer가 한다.

 

Pooling 방법에는 총 3가지가 있다.

1. Max Pooling

2. Average Pooling

3. Min Pooling

 

CNN에서는 주로 Max Pooling을 사용한다.

Pooling layer는 Convolution layer와 비교했을 때, (1) 학습 대상 파라미터가 없고 (2) 행렬의 크기가 감소하고 (3) 채널 수 변경이 없다.

 

CNN이 처리해야 하는 이미지의 크기가 크게 줄어들기 때문에 Neural Network의 모델 파라미터 또한 크게 감소한다. 따라서 Pooling layer를 이용함으로써 CNN의 학습 시간을 절약할 수 있고, 오버 피팅 문제도 완화할 수 있다.

 

Dropout Layer

부가적으로 사용되는 레이어로 인한 학습의 오버피팅을 막기 위해 네트워크 유닛의 일부만 동작하고 일부는 동작하지 않도록 하는 방법이다.

 

 

Fully Connected Layer

FC layer에는 2가지 종류의 layer가 있다.

 

1. Flatten Layer : 입력 데이터의 shape 변경만 수행한다.

2. Softmax Layer : classification을 수행한다.

 

참고

https://keeper.tistory.com/5

 

CNN[합성곱 신경망] 개념, 모델구조

CNN (Convolutional Neural Networks) CNN은 딥러닝에서 주로 이미지나 영상 데이터를 처리할 때 쓰이며 이름에서 알 수 있다시피 Convolution이라는 전처리 작업이 들어가는 Neural Network 모델을 말한다. CNN의..

keeper.tistory.com

https://rubber-tree.tistory.com/entry/%EB%94%A5%EB%9F%AC%EB%8B%9D-%EB%AA%A8%EB%8D%B8-CNN-Convolutional-Neural-Network-%EC%84%A4%EB%AA%85

 

[딥러닝 모델] CNN (Convolutional Neural Network) 설명

저번 포스팅에서는 딥러닝의 모델별 특징에 대해 알아보았습니다. 2021.07.10 - [SW programming/Computer Vision] - AI, 머신러닝, 딥러닝 이란? 그리고 딥러닝 모델 종류 그리고 이번 포스팅에서는 그 중 Compu

rubber-tree.tistory.com

http://taewan.kim/post/cnn/

 

CNN, Convolutional Neural Network 요약

Convolutional Neural Network, CNN을 정리합니다.

taewan.kim

https://www.analyticsvidhya.com/blog/2022/03/basics-of-cnn-in-deep-learning/

 

Basics of CNN in Deep Learning - Analytics Vidhya

In this article, you will learn about some basics of CNN which are a type of feed-forward artificial neural network.

www.analyticsvidhya.com

https://medium.com/@amarbudhiraja/https-medium-com-amarbudhiraja-learning-less-to-learn-better-dropout-in-deep-machine-learning-74334da4bfc5

 

Learning Less to Learn Better — Dropout in (Deep) Machine learning

In this post, I will primarily discuss the concept of dropout in neural networks, specifically deep nets, followed by an experiment …

medium.com