CNN의 기본 구조 완전 정복: Convolution, Pooling, Fully Connected Layer 📷🧠
여러분, 이미지 하나만 던져주면 "고양이야 개야?"를 맞히는 인공지능,
어떻게 그렇게 똑똑할 수 있을까요?
바로 이걸 가능하게 하는 비밀이 합성곱 신경망(CNN)의 기본 구조에 있습니다!

안녕하세요!
인공지능과 딥러닝에 관심이 많은 여러분께 오늘은 합성곱 신경망(CNN)의 기본 구조를 친절하게, 아주 쉽게 설명해드리려 해요. 특히 처음 딥러닝을 접하는 분들도 "아, 이래서 CNN이 이미지 인식에 강하구나!" 하고 고개를 끄덕이게 될 거예요.
이 글 하나면 Convolution, Pooling, Fully Connected Layer라는 단어가 더는 낯설지 않게 느껴질 겁니다 😊
자, 그럼 천천히, 함께 배워볼까요?
목차
1. CNN 기본 구조란? 🧠
딥러닝을 처음 접하면 CNN이라는 단어가 굉장히 자주 등장하죠. CNN(Convolutional Neural Network)은 이미지나 영상처럼 공간적 구조를 가진 데이터를 처리하는 데 특화된 신경망 구조입니다. 이미지 분류, 얼굴 인식, 자율주행, 의료 영상 분석 등 다양한 분야에서 이미 널리 쓰이고 있어요.
그럼 CNN의 기본 구조는 어떻게 생겼을까요? 일반적으로 다음과 같은 3가지 핵심 구성 요소로 이루어져 있습니다:
- 합성곱 층 (Convolution Layer) – 이미지에서 특징을 추출하는 역할을 해요.
- 풀링 층 (Pooling Layer) – 불필요한 정보를 줄이고 중요한 특징만 남겨주는 요약 담당!
- 완전 연결층 (Fully Connected Layer) – 마지막 결과값을 도출하는 역할을 하죠.
이 세 가지 층이 조합되어 CNN은 로우(raw) 이미지 데이터를 이해하고, 그 안의 복잡한 패턴을 점점 더 추상화해갑니다. 특히 중간에 여러 개의 Convolution + Pooling 층이 반복되면서, 낮은 단계에서는 선(line)이나 모서리(edge)를, 높은 단계에서는 고양이 귀, 사람 눈처럼 의미 있는 구조까지 인식하게 돼요.
🖼️ 왜 CNN이 이미지에 강할까?
일반적인 신경망(Fully Connected Network)은 입력값을 1차원 벡터로 변환한 뒤 계산을 수행합니다. 하지만 이미지는 2차원 구조를 가지고 있기 때문에, 그 구조를 무시하면 중요한 공간 정보가 사라질 수 있어요.
CNN은 그걸 보완해줘요! 각 이미지의 공간 구조를 그대로 살려서 작은 영역 단위로 패턴을 분석하니까, 눈이나 입, 귀 같은 세부 정보를 정확히 포착할 수 있는 거죠.
📌 요약: CNN 기본 구조의 핵심
| 구성 요소 | 기능 | 비유 |
|---|---|---|
| Convolution Layer | 이미지의 특징을 추출 (엣지, 패턴 등) | 돋보기로 이미지 세밀하게 살펴보기 |
| Pooling Layer | 중복 제거, 계산량 줄임 | 요점만 요약 정리하기 |
| Fully Connected Layer | 최종 결과를 도출 | 판단하고 결론 내리기 |
이제 대략적인 틀이 잡히셨죠? 다음 파트에서는 "Convolution Layer"가 정확히 어떤 역할을 하는지, 어떻게 작동하는지를 예제로 풀어볼게요!
2. Convolution Layer란 무엇인가? 📐
합성곱 층(Convolution Layer)은 CNN에서 가장 핵심이 되는 구성 요소예요. 이미지의 로우 데이터로부터 중요한 특징을 추출해내는 역할을 하죠. 쉽게 말해, 이미지를 잘게 나눠서 눈, 코, 입 같은 세부적인 패턴을 찾아내는 탐색자라고 할 수 있어요.
🧩 필터(Filter)와 커널(Kernel), 이게 뭐야?
필터 혹은 커널이라고 부르는 작은 행렬이 Convolution Layer의 주인공이에요. 이 필터는 이미지 위를 슬라이딩하면서 일정 영역을 분석합니다. 각 위치에서 이미지와 필터의 곱을 계산한 뒤 합산해 새로운 값을 만들죠. 이 과정이 바로 합성곱(convolution)입니다.
예를 들어, 3x3 크기의 필터를 생각해볼게요. 이 필터는 이미지의 3x3 영역을 한 번에 살펴보며 그 안에서 의미 있는 특징을 찾아냅니다. 이런 식으로 필터는 엣지(edge), 라인(line), 텍스처 같은 패턴을 자동으로 학습하게 돼요.
| 개념 | 설명 | 비유 |
|---|---|---|
| 필터(Filter) | 이미지에 적용할 가중치 행렬 | 돋보기 같은 역할 |
| 합성곱 | 필터를 슬라이딩하며 이미지와 연산 | 사진을 조각조각 분석하기 |
| 스트라이드 | 필터가 이동하는 간격 | 계단 하나씩 오르기 or 두 칸씩 건너뛰기 |
📍 필터 여러 개 쓰면 뭐가 좋을까?
실제로는 하나의 필터만 쓰지 않아요. 여러 개의 필터를 동시에 적용해서 다양한 시각으로 이미지를 바라보게 하죠. 어떤 필터는 세로선을, 어떤 필터는 둥근 곡선을 감지하도록 훈련됩니다.
그리고 그 결과는 Feature Map (특징 맵)이라는 새로운 이미지처럼 저장되는데요, 이것들이 쌓이고 쌓이면서 CNN은 점점 더 복잡한 특징을 인식하게 되는 거예요.
🛠️ Orange에서 필터 구조 체험해보기
Orange Data Mining에서는 직접 Convolution 연산을 설정할 수는 없지만, Image Analytics 애드온을 통해 이미지의 시각적 특징 추출을 체험할 수 있어요. Image Embedding 위젯을 사용하면 SqueezeNet 등의 사전학습 모델로부터 특징 벡터를 추출하고, 그것을 분류기로 넘겨보는 방식으로 구조를 이해할 수 있답니다.
이제 Convolution Layer의 핵심은 확실히 잡으셨죠? 그럼 다음은 이 특징들을 더 똘똘하게 정리해주는 Pooling Layer로 넘어가 볼까요? 🏊
3. Pooling Layer로 특징만 쏙쏙! 🏊
Convolution Layer가 이미지를 세밀하게 분석하는 탐색자라면, Pooling Layer는 정보를 깔끔하게 요약해주는 요약가예요. CNN에서 이 층은 너무너무 중요한 역할을 해요. 왜냐하면 계산량을 줄이고, 과적합을 방지하며, 핵심 특징만 남기기 때문이죠!
🧂 Pooling은 어떤 방식으로 동작할까?
Pooling Layer는 이미지나 특징 맵에서 일정 영역을 잘라내고, 그 영역의 값을 하나로 요약합니다. 마치 요리할 때 재료를 썰어 작게 다지는 것처럼요.
가장 흔히 쓰이는 방식은 Max Pooling과 Average Pooling 두 가지입니다. 간단히 정리해볼게요.
| 종류 | 설명 | 효과 |
|---|---|---|
| Max Pooling | 영역 내에서 가장 큰 값만 선택 | 두드러진 특징 강조 |
| Average Pooling | 영역의 평균값을 계산 | 전체적인 정보 유지 |
이렇게 Pooling을 거치면 이미지 크기는 작아지지만, 중요한 정보는 남고, 덜 중요한 정보는 사라져요. 그 결과 CNN은 훨씬 빠르고 안정적으로 학습할 수 있게 되는 거죠.
📉 이미지 해상도가 줄어드는 이유는?
Pooling을 하면 이미지의 너비와 높이가 줄어듭니다. 예를 들어 2x2 Max Pooling을 하면, 4개의 픽셀을 하나의 픽셀로 줄이는 셈이죠. 이렇게 하면 연산량이 줄고, 과적합 위험도 낮아집니다.
하지만 너무 많이 줄이면 정보 손실이 생길 수 있으므로, 적절한 균형이 중요해요.
🍊 Orange에서는 어떻게 확인할 수 있을까?
Orange의 Image Embedding 기능을 이용하면, 이미지를 임베딩한 후 Pooling과 유사한 정보 축소 결과를 간접적으로 확인할 수 있어요. 임베딩된 벡터는 이미 Pooling 처리가 포함된 사전 학습 CNN을 거친 결과이기 때문에, 그 흐름을 이해하는 데 도움이 됩니다.
이제 이미지 속에서 가장 중요한 정보만 쏙쏙 추려주는 Pooling에 대해 알게 되었죠? 다음은 CNN의 마지막 퍼즐, Fully Connected Layer에 대해 알아볼 시간입니다 💡
4. Fully Connected Layer의 역할 💡
이제 이미지의 특징을 추출하고 요약하는 과정을 마쳤어요. 그럼 마지막으로 해야 할 일은 뭘까요? 바로 ‘판단’이죠. CNN에서 이 결정의 순간을 담당하는 층이 바로 Fully Connected Layer (FC Layer)입니다.
🧠 완전 연결층은 어떤 일을 하나요?
Fully Connected Layer는 앞에서 얻은 특징 벡터를 받아서 최종적으로 클래스(class)를 예측해요. 예를 들어 ‘고양이인지 개인지’ 같은 걸 결정하죠. 이름 그대로 모든 뉴런이 서로 연결되어 있어서, 기존에 학습한 모든 정보들을 조합해서 결과를 도출해낼 수 있어요.
그래서 CNN의 끝단에는 일반적인 인공신경망(MLP)이 붙어 있다고 생각해도 무방해요. 그동안 추출한 패턴들을 종합해서, “이건 고양이다!” 혹은 “강아지가 맞아!”라는 최종 판단을 내리는 거죠.
🎯 출력층과 소프트맥스(Softmax)의 조합
Fully Connected Layer의 마지막은 보통 Softmax 함수로 마무리돼요. 이 함수는 출력값들을 확률로 변환해주기 때문에, 모델이 어느 클래스에 가장 자신 있는지를 보여줘요. 예를 들어 출력이 [0.01, 0.95, 0.04] 라면, 두 번째 클래스(예: 고양이)에 95% 확신이 있다는 뜻이죠!
| 구성 요소 | 역할 | 설명 |
|---|---|---|
| Fully Connected Layer | 특징 벡터를 받아 예측값 생성 | 모든 노드가 서로 연결된 구조 |
| Softmax | 출력값을 확률로 변환 | 가장 가능성 높은 클래스를 선택 |
👀 Orange로 최종 결과 해석해보기
Orange에서는 Image Embedding + Logistic Regression이나 Neural Network 위젯을 조합해 사용하면, FC Layer의 역할을 시각적으로 확인할 수 있어요. 예측 결과는 Confusion Matrix로 성능을 점검할 수 있고, 정확도가 낮은 클래스는 Feature Scoring을 활용해 재해석할 수도 있답니다!
지금까지 CNN의 마지막 결정 구조인 Fully Connected Layer까지 마스터했어요! 그럼 이제까지 배운 Convolution, Pooling, FC Layer를 전체적으로 어떻게 연결해서 동작하는지 흐름으로 정리해볼 차례예요. 🔁
5. CNN의 전체 흐름은 이렇게 간다 🔁
자, 지금까지 Convolution → Pooling → Fully Connected라는 구성 요소들을 하나씩 배웠어요. 이제 이 세 가지가 어떻게 하나로 연결되어 이미지 → 정답으로 나아가는지를 순서대로 정리해볼게요!
📊 CNN 데이터 처리 흐름 요약
- 1단계: 입력 이미지 수용 – 예: 고양이 이미지 (28x28 픽셀, RGB 등)
- 2단계: Convolution Layer – 필터를 이용해 특징 추출 (엣지, 질감 등)
- 3단계: Pooling Layer – 특징 맵 크기 축소, 중요한 정보만 보존
- 4단계: (필요시 여러 층 반복) – Convolution + Pooling 반복 → 점점 고차원 특징 추출
- 5단계: Fully Connected Layer – 평탄화(flatten) 후 예측값 도출
- 6단계: Softmax – 확률화된 결과로 최종 분류 (예: 고양이일 확률 0.95)
🧠 이렇게 생각하면 쉬워요!
CNN은 마치 사람의 시선처럼 점점 넓게, 추상적으로 이미지를 바라보는 구조예요. 처음에는 선과 색을 보고, 그다음엔 코, 눈 같은 구조를, 마지막엔 “이건 고양이!”라고 판단하는 전체 흐름이죠.
🖥️ Orange에서의 워크플로우 예시
Orange에서는 Image Embedding → Classifier → Test & Score 조합이 CNN 구조의 흐름을 대체할 수 있어요. 사전학습된 CNN(SqueezeNet 등)을 이용해 이미지 특징을 벡터화한 뒤, 분류기(Logistic Regression, Neural Network 등)를 통해 결과를 예측합니다.
Test & Score 위젯으로 정확도, 정밀도, 재현율을 확인하고, Confusion Matrix를 통해 어떤 이미지가 틀렸는지도 알 수 있어요. 이건 CNN 내부 구조를 직접 구성하진 않지만, CNN의 전체 흐름을 실감 나게 체험할 수 있는 좋은 방법입니다!
CNN의 흐름이 이제 좀 감이 오시죠? 😄 그럼 마지막으로 Orange를 활용해 이 구조를 직접 실습해보는 방법도 함께 알아보죠!
6. Orange에서 CNN 구조 따라하기 👩💻
이제 CNN의 기본 구조를 이해했으니, 직접 따라 해보는 시간이죠! Orange에서는 딥러닝 모델을 직접 구성하지는 않지만, 사전 훈련된 CNN을 활용한 이미지 분류 실습이 가능합니다. 이미지 데이터를 불러오고, 특징을 추출한 뒤 분류하는 과정을 워크플로우 형태로 체험해볼 수 있어요.
🧪 실습: 고양이 vs 개 이미지 분류하기
- 1단계:
Import Images위젯으로 고양이와 개 이미지 데이터셋 불러오기 - 2단계:
Image Embedding위젯 사용 → 사전학습된 SqueezeNet 모델로 특징 벡터 추출 - 3단계:
Data Table로 벡터 확인 - 4단계:
Logistic Regression또는Neural Network로 학습 - 5단계:
Test & Score로 모델 평가 - 6단계:
Confusion Matrix로 결과 시각화
이 실습은 CNN의 Convolution → Pooling → FC Layer 흐름을 내장한 사전 모델(SqueezeNet)을 통해 실제로 체험하는 방식이에요. 별도 코딩 없이 이미지 특징을 추출하고 분류하는 경험을 할 수 있으니, 초보자에게 딱이죠!
🎯 실습 팁: 성능 향상하려면?
- 이미지 수 늘리기: 더 많은 데이터를 사용할수록 모델은 더 잘 배워요!
- 데이터 다양화: 해상도, 각도, 배경이 다양한 이미지 사용
- 정확도 외 지표도 확인: Precision, Recall, F1-score도 함께 분석!
이제 여러분도 CNN 구조가 실제로 어떻게 동작하고, 어떻게 실습에 적용되는지 이해 + 체험까지 마쳤어요. 👏 이 흐름을 익히면 전이 학습이나 모델 튜닝까지 도전할 수 있는 기반이 되는 거죠!
🧩 마무리하며: CNN 구조, 이제 완전히 이해되셨죠? 🎉
여기까지 함께 달려오신 여러분, 정말 고생 많으셨어요! 😊
CNN의 핵심 구조인 Convolution Layer → Pooling Layer → Fully Connected Layer를 차근차근 이해하고, 실제 이미지 분류 실습까지 체험해봤어요. 이 구조는 단순히 이론으로 끝나는 게 아니라, 우리가 사용하는 AI 기술의 중심을 이루고 있답니다.
이제는 CNN을 단순히 ‘이미지 처리하는 똑똑한 알고리즘’이 아니라, 하나하나의 층이 어떤 일을 하고 왜 필요한지까지 이해하게 되셨죠? 그게 바로 여러분이 이제 초보 딥러닝러에서 한 걸음 나아갔다는 증거예요. 👣
다음 시간에는 CNN을 활용한 실전 이미지 분류 실습(MNIST, CIFAR-10)을 통해 진짜 모델을 구축하고 테스트해볼 거예요. 기대되시죠? 그럼, 우리는 다음 글에서 다시 만나요! 🙌
'OrangeDataMining' 카테고리의 다른 글
| 활성화 맵(Feature Map)과 패딩(Padding)의 개념과 원리 (0) | 2025.05.04 |
|---|---|
| CNN의 핵심 개념, 필터와 커널 완벽 이해하기 (0) | 2025.05.04 |
| 합성곱 신경망(CNN) 개요 및 활용 (0) | 2025.05.03 |
| 과적합 방지 기법 완전 정복: Regularization, Dropout, Early Stopping (0) | 2025.05.03 |
| 학습률(Learning Rate)과 경사 하강법(Gradient Descent)의 모든 것 (1) | 2025.05.03 |