🧠 1. CNN의 핵심 연산, 직접 경험해보기
이전 글에서 우리는 CNN(합성곱 신경망)의 기본 구조를 살펴봤다.
오늘은 그 핵심인 합성곱(Convolution) 과 풀링(Pooling) 연산이 실제로 어떻게 작동하는지,
직관적으로 이해할 수 있도록 예시와 함께 실습 형태로 알아본다.
CNN의 강점은 이미지 속 특징을 자동으로 추출한다는 점이다.
그 중심에 있는 합성곱과 풀링은 “이미지 속 중요한 부분만 뽑아내고 압축하는 과정”이다.

🔹 2. 합성곱(Convolution) 연산의 원리
합성곱은 이미지의 작은 영역(커널, kernel) 을 움직이며 특징을 추출하는 과정이다.
커널은 일종의 작은 창(window)으로, 픽셀의 패턴을 탐색한다.
예를 들어, 3×3 크기의 커널을 생각해보자.
커널이 이미지 위를 한 칸씩 이동하면서 각 위치의 픽셀과 곱셈 후 더한 값을 새로운 이미지로 만든다.
이 결과를 특징 맵(Feature Map) 이라고 한다.
📘 핵심 포인트
- 커널은 엣지(Edge), 윤곽선, 패턴 등을 탐지하는 역할을 한다.
- CNN은 여러 개의 커널을 사용하여 다양한 특징을 동시에 학습한다.
- 합성곱 연산 후에는 ReLU 활성화 함수를 적용해 비선형성을 추가한다.
💡 예시
밝은 부분과 어두운 부분의 경계(엣지)를 찾는 커널을 적용하면,
새로운 Feature Map에는 이미지의 윤곽선이 두드러지게 나타난다.
🔹 3. 스트라이드(Strides)와 패딩(Padding)
- 스트라이드(Strides): 커널이 이동하는 간격을 의미한다.
예를 들어, stride=1이면 한 칸씩 이동하지만, stride=2면 두 칸씩 건너뛴다.
→ 스트라이드가 클수록 Feature Map의 크기가 작아진다. - 패딩(Padding): 이미지의 가장자리를 보존하기 위해 여백을 추가하는 기법이다.
→ “SAME Padding”은 원래 크기를 유지하고, “VALID Padding”은 여백 없이 축소한다.
이 두 요소는 CNN의 출력 크기와 학습 효율을 결정하는 중요한 파라미터다.
🔹 4. 풀링(Pooling) 연산의 원리
풀링은 Feature Map의 크기를 줄이는 과정이다.
즉, 가장 중요한 특징만 남기고 세부적인 노이즈를 제거하는 단계다.
대표적인 방식은 Max Pooling 이다.
- 일정 영역(예: 2×2)에서 가장 큰 값을 선택한다.
- 가장 강하게 반응한 특징을 남기기 때문에,
약간의 위치 변화나 회전에도 인식 성능이 유지된다.
📘 예시
2×2 영역마다 최댓값을 취하면,
Feature Map의 크기는 절반으로 줄어들고 주요 특징만 남는다.
이로써 모델은 계산량을 줄이면서도 불변성(Invariance) 을 확보한다.
🔹 5. 간단한 실습 예시 (개념적)
아래는 4×4 이미지에 2×2 커널을 적용하는 예이다.
| 입력 이미지 | 커널(엣지 탐지)출력 | Feature Map |
| 1 2 3 0 | 1 -1 | 2 1 |
| 0 1 2 3 | -1 1 | 1 0 |
이런 단순 연산을 여러 층으로 반복하면,
CNN은 이미지의 세부 패턴에서부터 전체적인 구조까지 자동으로 학습하게 된다.
🔹 6. 합성곱 + 풀링의 흐름 요약
1️⃣ 입력 이미지 → 2️⃣ 합성곱(특징 추출) → 3️⃣ ReLU(비선형성) → 4️⃣ 풀링(크기 축소)
이 과정을 반복하면서 CNN은 점점 더 추상적인 특징을 학습한다.
🚗 7. 자율주행에서의 예시 적용
자율주행 카메라 영상에서 CNN은 다음과 같은 특징을 추출한다.
- 합성곱층: 차선, 도로 경계선, 차량 형태 인식
- 풀링층: 노이즈 제거, 불필요한 세부 정보 축소
- 최종 분류층: 보행자, 차량, 신호등 등으로 분류
CNN이 단순한 영상 필터가 아니라,
“도로의 의미를 이해하는 뇌”로 작동하는 이유가 여기에 있다.
✨ 8. 정리하며
오늘은 CNN의 핵심 연산인 합성곱과 풀링을 직접 이해해보았다.
이 두 과정은 단순히 픽셀을 계산하는 것이 아니라,
이미지의 의미를 학습하는 과정이다.
다음 단계에서는 실제 CNN을 이용해
차량/보행자 이미지를 분류하는 실습을 진행할 것이다.
📅 다음 글 예고:
👉 [Day 63: 차량/보행자 이미지 분류 CNN 구현]
“실제 데이터를 통해 CNN 모델을 구축하고, 자율주행의 눈을 직접 만들어보자!”
'자율주행' 카테고리의 다른 글
| Day 64: RNN, LSTM 개념 학습 (0) | 2025.10.30 |
|---|---|
| Day 63: 차량/보행자 이미지 분류 CNN 구현 (0) | 2025.10.29 |
| Day 61: CNN 기본 구조 이해 (0) | 2025.10.27 |
| Day 60: 논문 리뷰 + 학습 정리 (0) | 2025.10.26 |
| Day 59: Localization & Mapping 종합 프로젝트 (0) | 2025.10.25 |