본문 바로가기

AI & Data Science

CNN

728x90
반응형

CNN)

CNN은 Convolutional Neural Network의 약자로, 이미지, 비디오, 음성 등과 같은 다양한 유형의 데이터를 처리하고 분류하는 데 사용되는 딥러닝 모델입니다. CNN은 이미지 분류, 객체 감지 및 분할, 얼굴 인식, 자율 주행 등 다양한 분야에서 활용됩니다.

CNN은 주로 Convolutional Layer, Pooling Layer, Fully Connected Layer로 구성됩니다.

CNN은 기본적으로 Convolution layer -> Pooling layer-> FC layer 순서로 진행이 된다.

 

<CNN의 순서도>

  • Convolutional Layer: Convolutional Layer는 이미지의 특징을 추출하는 데 가장 중요한 역할을 한다. 각각의 Convolutional Layer는 여러 개의 필터(또는 커널)를 가지고 있으며, 각 필터는 이미지에서 특정한 특징을 찾아낸다. 필터는 일종의 sliding window로 이미지를 훑으며, 겹치는 부분마다 값을 곱한 후 모두 더하여 하나의 값으로 표현된다. 이러한 필터를 통해 이미지의 특징을 추출하고, 이를 다음 계층으로 전달한다.

<Convolution Layer>

위 그림에서는 6개의 필터가 사용 됐다. 따라서 6개의 특징을 추출하게 되고 6개의 feature map을 갖는다.

<filter(kernel)의 작동 원리>

위처럼 주어진 커널로 이미지를 움직이면서 특징값을 추출한다. 이를 특정 filter에 부합하는 feature 정보를 얻었다고 볼 수 있다.

 

<edge filter>

전체 이미지를 천천히 순회하다 보면 conv filter의 edge 부분과 일치하는 영역에서 굉장히 높은 값을 얻을 수 있다.

CNN은 Edge 부터 인식해서 순차적으로 나아간다.

 

처음에는 convultion filter 역시 초기값 설정을 통해 무작위로 분포하게 되지만, 학습을 통해서 아래의 오른쪽과 같이 완성된 edge filter로 만들어지게 된다.

  • Pooling Layer: Pooling Layer는 이미지를 다운샘플링하는 데 사용된다. 일반적으로 Max Pooling이 가장 많이 사용된다. Max Pooling은 특정 영역 내에서 가장 큰 값을 선택하여 다음 계층으로 전달합니다. 이를 통해 이미지 크기를 줄이고, 계산 비용을 줄이면서 이미지의 중요한 정보를 보존한다.

<Pooling>

Pooling을 수행하고 나면 이미지의 크기는 작아진다. 그러나 convolution filter의 크기는 여전히 유지된다. 따라서 이전 이미지의 크기에 비해서 filter가 커졌기 때문에 edge 정보뿐만 아니라 사람의 얼굴을 예시로 들면 눈, 코, 입 같은 추상적인 정보를 추출할 수 있게 됐다.

 

 

보통 layer가 뒤에 있을수록 filter의 총 개수가 많아진다. 처음에는 이미지가 크기 때문에 적은 수의 convolution filter로 계산을 하는 경우에도 많은 연산양이 필요하다. 또한 첫 번째 layer에서 추출할 edge 정보는 굉장히 단순한 구조로 되어 있다. 그러나 process가 진행될수록 점점 이미지가 복잡해지기 때문에 더 많은 특징을 추출할 필요가 있다.

  • Fully Connected Layer: Fully Connected Layer는 추출된 이미지 특징에 기초하여 최종적으로 분류를 수행하는 데 사용됩니다. 이 계층에서는 앞선 Convolutional Layer와 Pooling Layer에서 추출한 특징을 벡터 형태로 변환하고, 이를 인풋으로 받아 분류 결과를 출력하는 출력층으로 전달합니다.
  • 이때 1차원 데이터를 입력데이터로 사용해야 하기 때문에 flatten을 수행해준다.

 

<FC Layer의 역할>

FC Layer는 결국 입력 이미지의 시각정보를 최대한 유지해오면서, 유사한 feature map을 통해서 최종적으로 classification을 해준다.

 

이렇게 각각의 계층들은 이미지의 특징 추출, 다운샘플링, 분류 등의 작업을 수행하며, 서로 연결되어 이미지에서 높은 수준의 추상화된 특징을 추출할 수 있다.

이러한 연관성은 Convolutional Layer와 Pooling Layer를 통해 이미지에서 특징을 추출하고, Fully Connected Layer를 통해 분류를 수행하는 과정에서 나타낸다. Convolutional Layer에서 추출된 특징은 Pooling Layer를 거쳐 다운샘플링되고, Fully Connected Layer에서 벡터 형태로 변환된 후 분류를 수행한다. 이러한 과정을 통해 이미지에서 추출된 특징과 분류 결과가 서로 연결된다.

 

출처: https://89douner.tistory.com/57

 

3. CNN(Convolution Neural Network)는 어떤 구조인가요?

안녕하세요~ 이번글에서는 Convolution Neural Network(CNN)의 기본구조에 대해서 알아보도록 할거에요. CNN은 기본적으로 Convolution layer-Pooling layer-FC layer 순서로 진행이 되기 때문에 이에 대해서 차근차

89douner.tistory.com

 

CIFAR-10)

CIFAR-10은 32x32 픽셀 크기의 10개 클래스로 구성된 이미지 데이터셋이다. 이 데이터셋은 비행기, 자동차, 새, 고양이, 사슴, 개, 개구리, 말, 배, 트럭과 같은 일상적인 사물을 분류하는 데 사용된다. CIFAR-10은 기계 학습 분야에서 분류 알고리즘을 평가하는 데 자주 사용된다.

import tensorflow as tf
from tensorflow.keras import datasets, layers, models

# Load CIFAR-10 dataset
(train_images, train_labels), (test_images, test_labels) = datasets.cifar10.load_data()

# Normalize pixel values to be between 0 and 1
train_images = train_images / 255.0
test_images = test_images / 255.0
728x90
반응형