합성곱 신경망
합성곱 신경망의 등장
- 기존 신경망의 문제점
- 순방향 신경망의 펼쳐진 1차원 벡터 형태에서는 모니터의 특징을 찾기가 쉽지않음(공간 데이터를 1차원으로 전환하면 형상 정보가 분산되기 때문에 패턴을 찾기 어려워짐)
- 이미지 내의 특정한 영역에 대해 원래의 이미지가 가지는 기하적 관계를 유지한채로 살펴보는 것이 필요
- 합성곱 신경망 :
- 컨벌루션 계층 : 컨벌루션 연산을 통해 이미지의 특정한 영역을 각각의 특징으로 변환
- 서브 샘플링 계층 : 플링 연산을 통해 이미지의 크기를 줄여 특징의 이동에 대한 위치 불변성 부여
- 합성곱신경망(CNN; Convolutional Neural Network
– 합성곱 신경망은 이미지 처리에 탁월한 성능을 보이는 신경망이다. 다층 퍼셉트론은 이미지 처리에서 한계를 보인다.
– 완전히 상호연결된(dense) DNN에서는 층이깊어질수록 학습효과가 감소하는경향이있으며,특히 이미지의 분류를 수행할 때 원래
데이터의 형상이 무시된다는 문제가있다.
– 합성곱 신경망은 데이터가 가진 부분들의 특징들의 패턴을 학습하는 알고리즘으로 컴퓨터 비전 분야에서 많이 활용된다.
– 대표적으로 이미지 분류(Image Classification), 객체 탐지(Object Detection), 스타일 전이(Style Transfer) 등이 있다.
– 합성곱신경망은 합성곱(convolution)과 풀링(pooling)을 통해 이미지 데이터의 형상정보를 유지하면서 학습하여 이미지 인식 및
이미지 처리의 성능을 높인 신경망이다. (이미지의 어떤 영역에 어떠한 특징과 패턴이 있는지 파악) - 합성곱 신경망의 구성
- 합성곱층(convolutional layer) -> 활성화 함수 적용 -> 풀링층(pooling layer)이 반복된 후에 완전히 상호 연결된 결합 은닉층이 추가된 형태가 되며, 최종적으로 출력층이 배치된다.
- 합성곱 연산은 기하학적 특징을 최적화하는 가중치를 학습하는 FEATURE LEARNING 층[(CONV)와 플링층(POOLIN) 반복]과, 분류를 위해서 하는 CLASSFICATION 하는 분류층으로 구성해야만 한다.
- 합성곱층 :
- 이미지 데이터의 특성을 추출하는 역할
- 합성곱 연산을 의미하는 CONV와 합성곱 연산의 결과는 활성화 함수 ReLU를 지나며 이 두 정을 합성곱층이라고함
- 플링층
- 합성곱층을 지나온 정보를 다시 POOL이라는 구간에서 풀링연산을 수행함
- 추출된 특성 정보를 축소하는 역할
- 출력층 직전의 은닉층 : 2차원 이상의 형상 특성 정보들을 1차원 형태로 변환/전개하는 역할을 수행함
합성곱 신경망의 구성(필터, 커널)
- 합성곱 연산(Convolution operation)
- 합성곱 연산이란 입력 이미지에 대하여 정방형 크기(3X3, 5X5)를 가지는 필터(또는 컬러)를 사용하여 가중치를 주고 입력 이미지에 대한 특성을 추출하는 방법이다.
- 합성곱 연산을 통해 추출된 이미지를 특성맵(feature map)이라고 하며, 이렇게 추출된 특성맵을 딥러닝 모델에 사용하면 훨씬 더 좋은 성능을 보인다.
- 필터 행렬을 이미지의 처음부터 끝까지 차례로 훑으면서 겹쳐지는 부분의 각 이미지와 커널의 원소의 값을 곱해서 모두 더한 값을 출력으로 한다.
- 합성곱 연산(컨볼루션) : 현재 p5 위치의 픽셀 값을 필터가 적용된 이미지의 p로 바꾸는 연산. 수식과 같이 필터와 원본 이미지의 대응되는 값들을 서로 곱한 뒤에 모두 더하여 새로운 이미지의 픽셀값 p를 구하는 것
- 필터를 통해 이미지를 변형하는 것은 그림과 같은 방식을 사용
- 필터는 F로 표시된 작은 크기의 파란색 행렬이며, 이 영역을 원본 이미지에 덮었을 때 필터가 덮이는 영역을 표시하는 부분 행렬 R
합성곱 연산과 특성맵
- 하나의 필터만으로는 이미지의 특징을 다양하게 추출할 수 없음
- 그림과 같이 32개의 필터를 모델의 파라미터로 두고 학습한다고 가정했을 때, 이미지 하나에 대해 모두 32장의 특징 추출 결과를 얻으며 특성맵(feature map)이라 함
합성곱과 필터
- 이미지 처리 관점에서의 합성곱은 일종의 필터링(filtering) 또는 마스킹(masking) 기능이다.
다수의 채널을 가질 경우의 합성곱 연산
- 컬러 이미지는 하나의 채널이 아니라 다수의 채널로 구성된 이미지
- 그 외의 다양한 이유로 이미지를 표현할 때, 2차원 행렬 하나가 아니라 복수로 제공될 수 있으며 이런 다중채널(multi-channel) 이미지에 대해 합성곱 신경망 모델이 필터를 적용하는 방식은 그림과 같음
합성곱 신경망의 구성(스트라이드)
- 스트라이드는 입력 데이터에 필터가 적용될 때 필터가 이동하는 간격이다. 다시 말하면 미끄러지는 배열의 간격을 조절하는 것이다.
- 스트라이드 값이 클수록 출력의 공간적 크기가 작아지므로 일반적으로는 스트라이드를 1과 같이 작은 간격으로 지정한다.
- 필터의 적용횟수는 필터의 크기 자체보다는 스트라이드 값에 의해서 더 영향을 받게 된다.
- 사용자가 지정할 수 있다. 대부분 1일 때 성능이 가장 좋다
합성곱 신경망 수행시 문제점과 해결방안(패딩과 폴링)
- 패딩
- 패딩은 합성곱 수행을 할 때, 입력 데이터의 주변 픽셀을 특정 값으로 채워 늘리는 것이다. 즉 원본 배열의 양 끝에 빈 원소를 추가하는 것이다.
- 패딩을 하지 않으면 데이터의 공간적 크기가 층을 지날 때마다 점점 작아져서 가장자리의 정보가 소실된다.
- 패딩을 함으로써 현재 층의 입력 데이터의 공간적 크기가 유지된 상태로 출력을 다음 층으로 전달할 수 있다.
- 일반적으로 가장자리에 0을 채우는 제로 패딩이 주로 사용된다.
a. 밸리드 패딩
- 원본 배열에 패딩을 추가하지 않고 미끄러지는 배열이 원본 배열의 끝까지 갈 때까지 교차 상관을 수행
- 패딩의 결과로 얻는 배열의 크기는 항상 원본배열보다 작다
- 원본 배열의 각 원소가 연산에 참여하는 정도(횟수)가 다르다
b. 풀 패딩(full padding)
- 원본 배열의 모든 원소가 연산에 동일하게 참여할 수 있도록 원본 배열의 양 끝에 가상 원소를 추가
- 0을 추가하는 경우 제로 패딩이라고함
c. 세임 패딩(same padding)
- 출력 배열의 길이가 원본 배열의 길이가 같아지도록 원본 배열에 제로 패딩을 추가하는 것
- 합성곱 신경망의 경우, 대부분 **세임 패딩**을 사용함
- 풀링
- 풀링이란 특성 맵을 스캔하며 최댓값을 고르거나 평균값을 계산하는 것을 말한다
- 풀링 레이어는 추출된 특성 맵에 대해 다운 샘플링하여 이미지의 크기를 줄이는 레이어이다.
- 합성곱 층을 통과한 특성 맵에 대해 다운 샘플링하여 이미지의 크기를 줄이는 레이어이다.
- 합성곱 층을 통과한 특성맵이 풀링층을 통과하면 또 다른 특성 맵이 만들어진다.
- 이미지 축소를 통해 연산량을 감소한다는 점과 과대적합을 방지할 수 있다.
- 최대 풀링, 평균 풀링, 최소 풀링이 있으며 일반적으로는 최대 풀링을 사용한다.
- 또한, 풀링 적용 크기는 스트라이드 값과 동일하게 설정한다.(예를 들어 스트라이드가 2이면 풀링은 2 X 2 이다.
- 최대 풀링
픽셀의 값을 일부 변경하여도 최대값 풀링의 결과는 잘 바뀌지 않음- 이동 불변성이라하며, 이동 불변성을 가진 모델을 강건한(ROBUST) 모델이라고 함
- ConvD ; 합성곱신경망
- filters : 필터의 개수
- Maxpooling(2,2), strides = 2)
- keras.layers.Conv2D(kernel_size = (3,3), padding = 'same', filters = 64,
합성곱 신경망 모델의 성공
- 합성곱 신경망 모델이 각광을 받게 된 계기는 2012년 이미지넷의 경진대회에서 합성망 신경망 구조로 AlexNet이 압도적 성적으로 우승한 일
- 이 경진대회는 흔히 ILSVRC라고 부르며, 이는 이미지넷 대규모 시각 인지 경진대회의 머릿글자
'머신러닝 및 딥러닝 > 딥러닝' 카테고리의 다른 글
객체탐지와 합성곱 신경망 (0) | 2023.02.27 |
---|---|
합성곱 신경망 데이터 증강(ImageDataGenerator 사용하기) (0) | 2023.02.23 |
전이학습 이론 (0) | 2023.02.23 |
딥러닝 실습(모델세부설정) (0) | 2023.02.22 |
인공신경망과 퍼셉트론 이론 (0) | 2023.02.21 |