만사경영(샤인피플)

합성곱 신경망(CNN)과 컴퓨터 비전에 대해 본문

경영/AI 솔루션(HR)

합성곱 신경망(CNN)과 컴퓨터 비전에 대해

샤인피플 2024. 5. 30. 15:21
반응형

안녕하세요, 오늘은 CNN(합성곱 신경망)에서 제일 기초가 되는 활동의 개념과 쓰임새를 알아볼게요

1. convolution과 pooling 작업이 있어야 CNN이다.

Convolutional Neural Networks (CNN)에서 convolution과 pooling은 이미지의 특징을 추출하고 요약하는 데 사용되는 주요 연산입니다. 쉽게 설명하면 다음과 같습니다.

1. Convolution (합성곱)
- convolution은 이미지의 특정 패턴이나 특징을 인식하는 과정입니다.
- 작은 크기의 필터(커널)가 이미지 위를 슬라이딩하며 이동합니다.
- 필터와 이미지의 겹치는 부분끼리 곱한 후 모두 더해 새로운 값을 만듭니다.
- 이렇게 만들어진 출력을 특징 맵(feature map)이라고 합니다.
- 서로 다른 필터를 사용하면 에지, 텍스처, 모양 등 다양한 특징을 추출할 수 있습니다.
- 직관적으로는 이미지에서 중요한 부분만 걸러내는 역할을 한다고 볼 수 있습니다.

2. Pooling (풀링)
- pooling은 추출된 특징 맵의 크기를 줄이는 과정입니다. 
- 일반적으로 Max Pooling이나 Average Pooling을 사용합니다.
- 특징 맵을 일정 크기의 영역으로 나누고, 각 영역에서 최댓값 또는 평균값을 선택합니다.
- 선택된 값들로 새로운 축소된 특징 맵을 만듭니다.
- pooling을 통해 특징 맵의 크기가 줄어들므로 계산량을 감소시킬 수 있습니다.
- 또한 이미지의 작은 변화에 강건한 특징을 만드는 효과가 있습니다.
- 쉽게 말해 이미지의 핵심 정보는 유지하면서 크기를 줄이는 방법이라 할 수 있습니다.

CNN에서는 convolution과 pooling을 여러 번 반복하여 단계적으로 이미지의 특징을 추출하고 요약합니다. 초기 층에서는 선, 모서리 같은 저수준 특징을 추출하고, 후반부 층으로 갈수록 물체의 부분이나 전체 모양 같은 고수준 특징을 추출하게 됩니다. 이렇게 계층적으로 특징을 학습하는 것이 CNN이 이미지 인식에서 뛰어난 성능을 보이는 핵심 원리라 할 수 있습니다.

 

2. 간단한 수학식으로 설명해볼게요.

convolution과 pooling을 수학식으로 표현하면 다음과 같습니다.

1. Convolution (합성곱)
- I를 입력 이미지, K를 필터(커널), * 를 convolution 연산자라 할 때, 출력 이미지 O는 다음과 같이 계산됩니다.

O(i, j) = (I * K)(i, j) = ∑ ∑ I(i+m, j+n) K(m, n)

- 이때 (i, j)는 출력 이미지의 픽셀 좌표, (m, n)은 필터의 좌표를 나타냅니다.
- 즉, 출력 이미지의 각 픽셀값은 입력 이미지의 해당 위치를 중심으로 필터 크기만큼의 영역과 필터를 요소별로 곱한 후 모두 더해 구합니다.

2. Pooling (풀링)
- P를 pooling 함수, S를 stride(보폭)라 할 때, 출력 특징 맵 O는 다음과 같이 계산됩니다.

O(i, j) = P(I(i*S : i*S+S, j*S : j*S+S))

- Max Pooling의 경우, P는 해당 영역에서 최댓값을 선택하는 함수입니다.
- Average Pooling의 경우, P는 해당 영역의 평균값을 계산하는 함수입니다.
- (i, j)는 출력 특징 맵의 픽셀 좌표를 나타내며, S는 한 번에 이동하는 픽셀 수(stride)를 의미합니다.
- 예를 들어 2x2 Max Pooling에서는 입력 특징 맵을 2x2 크기의 영역으로 나누고, 각 영역에서 최댓값을 선택하여 출력 특징 맵을 만듭니다.

위의 수학식은 convolution과 pooling의 기본적인 동작을 나타낸 것으로, 실제 CNN에서는 이런 연산을 3차원 이상의 텐서(tensor)에 대해 수행하며, 편향(bias)항이나 활성화 함수(activation function) 등이 추가되기도 합니다. 또한 convolution 연산에서는 필터를 180도 회전한 상태로 적용하는 것이 일반적이나, 여기서는 이해를 돕기 위해 단순화하여 설명하였습니다.

 

3. 해당 수학식을 이미지로 설명하면?

네, 그림을 통해 convolution과 pooling을 설명해 보겠습니다.

1. Convolution (합성곱)
```
입력 이미지 (4x4)         필터 (3x3)           출력 이미지 (2x2)
1 2 3 4                               1 0 1               8  12
5 6 7 8                               0 1 0               18 24
9 10 11 12                          1 0 1
13 14 15 16
```
- 입력 이미지 위를 필터가 슬라이딩하면서 겹치는 부분끼리 요소별로 곱하고 더합니다.
- 예를 들어 출력 이미지의 (0, 0) 위치의 값 8은 다음과 같이 계산됩니다:
  (1x1 + 2x0 + 3x1 + 5x0 + 6x1 + 7x0 + 9x1 + 10x0 + 11x1 = 8)
- 필터를 한 칸씩 이동하면서 같은 연산을 반복하여 2x2 출력 이미지를 얻습니다.

2. Max Pooling (최대 풀링)
```
입력 특징 맵 (4x4)         출력 특징 맵 (2x2)
1 2 3 4                             6 8
5 6 7 8                            14 16
9 10 11 12
13 14 15 16
```
- 입력 특징 맵을 2x2 크기의 영역으로 나누고, 각 영역에서 최댓값을 선택합니다.
- 예를 들어 왼쪽 상단 영역에서는 6이 최댓값이므로 출력 특징 맵의 (0, 0) 위치에 6이 저장됩니다.
- 영역을 2칸씩 이동(stride=2)하면서 같은 연산을 반복하여 2x2 출력 특징 맵을 얻습니다.

3. Average Pooling (평균 풀링)
```
입력 특징 맵 (4x4)         출력 특징 맵 (2x2)
1 2 3 4                           3.5 5.5
5 6 7 8                         11.5 13.5
9 10 11 12
13 14 15 16
```
- Max Pooling과 같이 입력 특징 맵을 2x2 크기의 영역으로 나누지만, 각 영역에서 평균값을 계산합니다.
- 예를 들어 왼쪽 상단 영역의 평균은 (1+2+5+6)/4 = 3.5이므로, 출력 특징 맵의 (0, 0) 위치에 3.5가 저장됩니다.

이와 같이 convolution은 이미지의 특징을 추출하고, pooling은 특징 맵의 크기를 줄이는 역할을 합니다. CNN에서는 이런 연산을 여러 층에 걸쳐 반복하여 이미지의 계층적 특징을 학습하게 됩니다.

 

4. 활용 용도

CNN에서 convolution과 pooling을 반복적으로 수행하여 추출된 이미지의 계층적 특징은 다양한 분야에서 활용될 수 있습니다. 대표적인 예로는 다음과 같은 것들이 있습니다.

1. 이미지 분류 (Image Classification)
- CNN은 이미지를 입력받아 그 이미지가 어떤 범주에 속하는지 분류하는 데 널리 사용됩니다.
- 예를 들어 손글씨 숫자 인식, 얼굴 인식, 물체 인식 등의 문제에 활용될 수 있습니다.

2. 객체 탐지 (Object Detection)
- CNN을 이용하여 이미지 내의 특정 객체의 위치와 범주를 탐지할 수 있습니다.
- 자율주행차에서 보행자나 신호등을 탐지하는 데 사용되는 것이 대표적인 예입니다.

3. 시맨틱 분할 (Semantic Segmentation)
- 이미지의 모든 픽셀을 의미 있는 범주로 분할하는 작업으로, CNN이 핵심적인 역할을 합니다.
- 의료 영상에서 종양 부위를 자동으로 분할하거나, 위성 이미지에서 도로, 건물 등을 구분하는 데 활용됩니다.

4. 이미지 캡셔닝 (Image Captioning)
- CNN으로 추출한 이미지 특징을 바탕으로 그 이미지를 설명하는 문장을 생성하는 작업입니다.
- 시각 장애인을 위한 보조 기술이나 이미지 검색 엔진 등에 활용될 수 있습니다.

5. 스타일 전이 (Style Transfer)
- 한 이미지의 스타일을 다른 이미지에 적용하여 새로운 이미지를 생성하는 기술로, CNN이 핵심적인 역할을 합니다.
- 예술 작품의 스타일을 일상의 사진에 적용하거나, 애니메이션 제작에 활용될 수 있습니다.

6. 이상 탐지 (Anomaly Detection)
- 정상 데이터로 학습된 CNN 모델을 이용하여 입력 이미지가 정상인지 이상인지 판단할 수 있습니다.
- 제조업에서 불량품을 탐지하거나, 의료 영상에서 질병을 진단하는 데 활용될 수 있습니다.

이 외에도 CNN은 영상 분석, 행동 인식, 얼굴 검출 및 인식, 자연어 처리 등 다양한 분야에서 사용되며, 컴퓨터 비전과 인공지능 발전에 핵심적인 역할을 하고 있습니다.

 

감사합니다.

반응형