티스토리 뷰
이번 포스트에는 https://up-one-coding.tistory.com/11에서 언급된 합성곱 신경망(Convolution Neural Network)의 구조와 원리, 관련 용어를 2개의 포스트로 나누어 알아보겠습니다. 이번 포스트에서는 CNN의 등장 이유와 합성곱 연산이 이뤄지는 합성곱 계층에 대해 포스트 하겠습니다.
합성곱 신경망(Convolution Neural Network, CNN)은 기존 DNN(Deep Neural Network)의 구조에 합성곱 계층(Convolution layer)과 풀링 계층(Pooling layer)을 더해 만들어진 이미지 데이터 분석에 고성능을 가진 신경망 구조입니다. 그 이유는 주어진 이미지의 특징을 CNN의 합성곱 연산으로 쉽게 추출할 수 있기 때문입니다.
이미지 데이터는 주로 3차원(가로크기 X세로크기 XRGB 값)으로 표현됩니다. DNN(Deep Neural Network)의 구조로 이미지 데이터를 분석하기 위해서는 3차원의 데이터를 1차원으로 변환시켜 입력시켜야 하는데 이때 데이터의 특징이 소멸되는 문제점이 발생합니다. 이를 해결하기 위해서 기존 DNN(Deep Neural Network)의 구조에 합성곱 계층(Convolution layer)과 풀링 계층(Pooling layer)을 더하는 CNN을 사용하는 것입니다.
또한 이미지 데이터는 픽셀(Pixel) 값으로 표현되는데 인접한 공간의 픽셀 값은 유사한 패턴을 보입니다. CNN은 입력 데이터를 원본 이미지 그대로 받기 때문에 정보의 손실 없이 유사한 패턴을 그대로 사용할 수 있어 고성능을 산출할 수 있는 것입니다.
CNN은 합성곱 계층에서 합성곱 연산을 통해 원본 이미지 데이터의 특징을 압축해서 보여주는 Feature Map을 생성합니다. Feature Map은 이미지를 분류하는데 필요한 정보를 추출하는 역할을 합니다. 즉 CNN은 합성곱 연산을 반복하여 Input Image와 비슷한 Feature Map을 추출해 일정한 패턴을 학습하는 것입니다. 학습된 패턴으로 새로운 이미지 데이터를 분류할 수 있는 것입니다.
Feature Map의 값은 입력 데이터의 픽셀 값과 필터(Filter) 값(가중치)을 합성곱 하여 생성됩니다. 합성곱이란 픽셀 값과 가중치의 내적의 합을 구하는 연산 과정입니다. 필터(Filter)는 원본 이미지 데이터의 패턴을 찾아주는 역할을 하는 존재입니다. 예를 들어 3*3 원본 이미지와 2*2 필터가 있을 때 2*2의 Feature Map을 생성하는 것입니다.
Feature Map의 값은 Input Image와 Filter 각각의 위치에 맞게 합성곱 연산을 진행하면서 구해집니다. 예를 들어 (4*1+2*0+3*2+1*1)로 11을 구할 수 있습니다.
CNN은 원본 이미지 데이터의 특징을 소실 없이 분석하여 고성능을 산출하는 신경망이라고 언급하였습니다. 그 이유는 Filter의 값, 즉 가중치가 역전파를 이용해 최적의 값으로 추정되기 때문입니다. 또한 성능에 큰 영향을 끼치는 것이 Stride라는 개념입니다.
Stride는 Filter을 Input Image에 적용하는 위치의 간격입니다. 위의 예에서는 Stride 값을 1로 설정한 것입니다. Stride 값을 크게 설정하면 Input Image의 특징을 Filter가 놓칠 가능성이 크기 때문에 성능에 악영향을 끼칠 수 있습니다.
'딥러닝' 카테고리의 다른 글
오차역전파법(Backpropagation) (2) | 2024.07.16 |
---|---|
적대적 생성 신경망(GAN) (0) | 2024.07.11 |
RNN (Recurrent Neural Network) (0) | 2024.07.08 |
[3] LSTM(Long Short-Term Memory) (0) | 2024.06.27 |
[2] 합성곱 신경망 (CNN) PART2 (0) | 2024.06.24 |
- 파이썬 #시각화 #matplotlib
- python #deque #프로그래머스 #공 던지기 #문자열 계산하기 #코딩테스트
- #프로그래머스 #안전지대 #시뮬레이션
- # 프로그래머스 #연속된 부분수열의 합 #이중 포인터 #누적합
- #opencv #이미지 읽기 #이미지 제작 #관심영역 지정 #스레시홀딩
- #seq2seq #encoder #decoder #teacher forcing
- #tf idf
- seaborn #데이터시각화 #타이타닉
- randomforest #bagging #머신러닝 #하이퍼파라미터 튜닝
- # 할인행사 #counter #딕셔너리 #프로그래머스
- #자연어 처리 #정수 인코딩 #빈도 수 기반
- 머신러닝 #project #classification #dacon
- 자연어 처리 #정제 #정규표현식 #어간 추출 #표제어 추출
- #물고기 종류별 대어 찾기 #즐겨찾기가 가장 많은 식당 정보 출력하기 #mysql #programmers
- 로지스틱 회귀 #오즈비 #최대우도추정법 #머신러닝
- nlp #토큰화 #nltk #konply
- html #javascript #구구단 출력
- 프로젝트 #머신러닝 #regression #eda #preprocessing #modeling
- python #프로그래머스 #겹치는선분의길이
- #attention #deeplearning
- # 프로그래머스 # 카펫 # 완전탐색
- subquery #sql 코딩테스트
- #opencv #이미지 연산 #합성
- 머신러닝 #lightgbm #goss #ebf
- 머신러닝 #xgboost #
- 잘라서 배열로 저장하기 #2차원으로 만들기
- #python #프로그래머스 #외계어사전 #itertools #순열과조합
- pca #주성분분석 #특이값분해 #고유값분해 #공분산행렬 #차원의 저주
- python #프로그래머스 #리스트 #인덱싱
- 파이썬 #코딩테스트 #프로그래머스 #스택 #큐