AI

[AI] Neural Network에게 이미지는 어떻게 보일까? (기본기 - Andrew Ng의 Neural Networks and Deep Learning 정리)

rubrub 2026. 9. 6. 02:54

DEEP LEARNING FUNDAMENTALS ④ · CNN · COMPUTER VISION

Neural Network에게
이미지는 어떻게 보일까?

사람에게 사진은 고양이, 자동차, 얼굴이다. 하지만 Neural Network에게 이미지는 처음에는 그저 숫자가 빼곡히 들어 있는 Tensor일 뿐이다.

THE CORE IDEA OF CNN
```
작은 Filter로 이미지를 훑는다.
Edge를 찾고,
Edge를 조합해 Part를 찾고,
Part를 조합해 Object를 찾는다.
```

Andrew Ng Deep Learning Specialization의 네 번째 Course인 Convolutional Neural Networks는 Fully Connected Network에서 벗어나 이미지의 공간 구조를 적극적으로 활용하는 방법을 배운다.

현재 Course 4의 4주 구성 ``` Week 1 · Foundations of CNN
Edge Detection · Convolution · Padding · Stride · Volume Convolution · Pooling · Why Convolution?

Week 2 · Deep Convolutional Models
Classic Networks · ResNet · 1×1 Convolution · Inception · MobileNet · EfficientNet · Transfer Learning · Data Augmentation

Week 3 · Object Detection
Localization · Sliding Window · Bounding Box · IoU · NMS · Anchor Box · YOLO · U-Net · Transposed Convolution

Week 4 · Special Applications
Face Recognition · One-shot Learning · Siamese Network · Triplet Loss · Neural Style Transfer · 1D/3D Convolution ```

먼저 전체 지도를 보자

``` WEEK 1 Convolution Edge · Filter Padding · Stride WEEK 2 Deep CNN ResNet · Inception MobileNet · EfficientNet WEEK 3 Detection YOLO · IoU · NMS U-Net · Segmentation WEEK 4 Applications Face Style Transfer Pixel → Local Feature → Representation → Detection / Recognition / Generation ```

WEEK 1

이미지 전체를 한 번에 보지 말고, 작은 조각부터 보자

1,000×1,000 RGB 이미지를 Fully Connected Network에 넣는다고 생각해보자.

1,000 × 1,000 × 3 = 3,000,000 Inputs

첫 Hidden Layer에 Neuron이 1,000개만 있어도 Weight가 약 30억 개 필요하다.

3,000,000 × 1,000 = 3,000,000,000

너무 크다.

더 중요한 문제가 하나 있다. Fully Connected Layer는 이미지에서 “서로 가까이 있는 Pixel은 서로 관련이 있다”는 사실을 특별히 활용하지 않는다.

CNN의 아이디어는 간단하다.

이미지 전체와 한 번에 연결하지 말고, 작은 Filter로 Local Pattern부터 찾자.

1. Edge Detection부터 시작한다

다음과 같은 6×6 흑백 이미지가 있다고 하자.

10  10  10   0   0   0
10  10  10   0   0   0
10  10  10   0   0   0
10  10  10   0   0   0
10  10  10   0   0   0
10  10  10   0   0   0

왼쪽은 밝고 오른쪽은 어둡다. 가운데에 수직 Edge가 있다.

여기에 다음 3×3 Filter를 사용해보자.

 1   0  -1
 1   0  -1
 1   0  -1

Filter를 이미지의 왼쪽 위에 올리고, 같은 위치끼리 곱한 뒤 전부 더한다.

Image patch:

10  10  10
10  10  10
10  10  10


Filter:

 1   0  -1
 1   0  -1
 1   0  -1


Result:

10×1 + 10×0 + 10×(-1)
+10×1 + 10×0 + 10×(-1)
+10×1 + 10×0 + 10×(-1)

= 0

이 영역은 모두 비슷하게 밝아서 Edge가 없다.

Filter를 가운데 경계로 옮기면:

10  10   0
10  10   0
10  10   0

×

 1   0  -1
 1   0  -1
 1   0  -1


= 10 + 0 + 0
 +10 + 0 + 0
 +10 + 0 + 0

= 30
값이 크게 튀었다.
Filter가 “밝은 영역 → 어두운 영역”으로 변하는 수직 Edge를 발견한 것이다.
``` Input Image 3×3 Filter 곱하고 더한다 1개의 출력값 Filter 이동 반복 Feature Map ```

2. 출력 크기는 왜 작아질까?

입력 크기가 n×n, Filter가 f×f라고 하자.

Padding과 Stride 없이 Filter를 움직이면 출력 크기는:

(n - f + 1) × (n - f + 1)

예를 들어:

Input = 6×6
Filter = 3×3
6 - 3 + 1 = 4

따라서 Output은 4×4다.

3. Padding: 이미지 테두리를 보호하자

Convolution을 여러 번 하면 이미지가 계속 작아진다.

6×6
↓ 3×3 Conv
4×4
↓ 3×3 Conv
2×2
↓
더 이상 적용하기 어려움

더구나 이미지 가장자리 Pixel은 가운데 Pixel보다 Filter에 포함되는 횟수가 적다.

그래서 이미지 주변에 0을 붙인다.

0  0  0  0  0
0  1  2  3  0
0  4  5  6  0
0  7  8  9  0
0  0  0  0  0

Padding 크기를 p라고 하면 출력 Dimension은:

n + 2p - f + 1

3×3 Filter에서 입력과 출력 크기를 같게 만들고 싶다면 보통 p=1.

6 + 2×1 - 3 + 1 = 6
Valid Convolution → Padding 없이 크기가 줄어든다.
Same Convolution → 적절한 Padding으로 공간 크기를 유지한다.

4. Stride: 한 칸씩 가지 말고 두 칸씩 가자

지금까지 Filter를 한 Pixel씩 이동했다. 이 이동 간격이 Stride다.

s=2라면:

Position:

(0,0)
   ↓ +2
(0,2)
   ↓ +2
(0,4)

다음 Row도 2칸 이동

Padding과 Stride를 모두 포함한 일반적인 출력 크기:

floor((n + 2p - f) / s) + 1

예제

Input n  = 7
Filter f = 3
Padding p = 1
Stride s  = 2
floor((7 + 2 - 3) / 2) + 1
= 3 + 1
= 4

Output은 4×4.

5. 실제 이미지는 2D가 아니라 Volume이다

RGB 이미지는:

Height × Width × Channels

예를 들어:

64 × 64 × 3

Filter 역시 Channel 전체를 관통해야 한다.

Filter = 3 × 3 × 3

중요한 규칙:

Filter의 Channel Depth는 Input Channel Depth와 반드시 같아야 한다.

6. Filter 하나가 Output Channel 하나를 만든다

Filter가 하나면 Feature Map도 하나다.

서로 다른 Filter 10개를 사용하면?

Output Channel = 10
``` Input 32×32×3 10 Filters 3×3×3 각 Filter가 다른 Pattern 학습 Output 30×30×10 ```

7. CNN Parameter 수를 계산해보자

Input Channel이 3이고, Filter가 3×3, Filter 개수가 10개라고 하자.

Filter 하나의 Weight:

3 × 3 × 3 = 27

Bias 하나를 추가하면:

27 + 1 = 28

Filter가 10개:

28 × 10 = 280 Parameters

이미지 크기가 100×100이든 1,000×1,000이든 이 Convolution Layer의 Parameter는 여전히 280개다.

이것이 CNN이 강력한 중요한 이유다. 같은 Filter Parameter를 이미지의 모든 위치에서 공유한다.

8. 왜 Convolution이 효과적인가?

Parameter Sharing 어떤 Edge Detector가 이미지 왼쪽에서 유용하다면 오른쪽에서도 유용할 가능성이 높다. 같은 Filter를 위치마다 재사용한다.
```
Sparsity of Connections Output 하나가 Input 전체와 연결되지 않는다. 작은 Local Region만 본다.
```

9. Pooling: 중요한 정보만 압축한다

대표적인 것은 Max Pooling.

Input:

1   3   2   4
5   6   1   2
7   2   8   1
3   4   2   9

2×2 Filter, Stride 2 Max Pooling:

max(1,3,5,6) = 6

max(2,4,1,2) = 4

max(7,2,3,4) = 7

max(8,1,2,9) = 9


Output:

6   4
7   9

Max Pooling에는 학습해야 할 Parameter가 없다.

공간 해상도는 줄지만 강하게 활성화된 Feature는 남긴다. 계산량과 메모리도 함께 줄어든다.
WEEK 1 MENTAL MODEL
Filter가 작은 영역을 본다.
→ Pattern을 발견한다.
→ 같은 Filter를 전체 Image에서 재사용한다.
→ 여러 Filter가 여러 Feature Map을 만든다.
→ Pooling으로 공간을 압축한다.

WEEK 2

CNN을 깊게 쌓으면 새로운 문제가 생긴다

CNN Layer를 여러 개 쌓으면 점점 더 복잡한 Feature를 배울 수 있다.

Pixels
↓
Edges
↓
Textures
↓
Parts
↓
Objects

하지만 Network를 무작정 깊게 만든다고 학습이 잘되는 것은 아니다.

1. ResNet: 그냥 건너뛰는 길을 만들어준다

일반적인 Layer는:

a⁽ˡ⁾ → Layer → a⁽ˡ⁺¹⁾ → Layer → a⁽ˡ⁺²⁾

Residual Block은 입력을 뒤쪽으로 바로 보내는 Shortcut Connection을 추가한다.

``` a[l] Conv ReLU Conv F(a[l]) + Shortcut / Skip Connection a[l+2] = g(F(a[l]) + a[l]) ```
a⁽ˡ⁺²⁾ = g(F(a⁽ˡ⁾) + a⁽ˡ⁾)

여기서 중요한 것은 Network가 전체 Mapping을 새로 배우는 대신 Residual F(a), 즉 입력에서 얼마나 수정해야 하는지를 학습할 수 있다는 점이다.

왜 이게 도움이 될까?

추가 Layer가 아무것도 배울 필요가 없다면:

F(a) ≈ 0

그러면:

a⁽ˡ⁺²⁾ ≈ g(a⁽ˡ⁾)

Identity Mapping과 비슷하게 동작할 수 있다.

추가 Layer가 최소한 기존 성능을 크게 해치지 않는 Mapping을 학습하기 쉬워지면서 매우 깊은 Network의 Optimization을 훨씬 수월하게 만든다.

2. 1×1 Convolution: 1 Pixel만 보는데 무슨 의미가 있을까?

처음 보면 가장 이상한 연산 중 하나다.

Filter Size가 1×1이라면 공간적으로는 Pixel 하나밖에 보지 않는다.

하지만 Channel 방향으로는 전체를 본다.

Input Pixel at (h,w):

[ channel1,
  channel2,
  channel3,
  ...
  channel192 ]

1×1×192 Filter가 이 Channel들을 가중합한다.

1×1 Conv는 공간 크기는 그대로 두면서 Channel을 섞거나 줄이거나 늘릴 수 있다.

예:

28×28×192
↓ 32개의 1×1 Filter
28×28×32

Channel Dimension이 192에서 32로 크게 줄었다.

3. Inception: Filter Size를 사람이 하나 고르지 말자

어떤 Layer에서는 1×1이 좋을까? 3×3이 좋을까? 5×5가 좋을까? Pooling이 좋을까?

Inception의 아이디어는:

전부 해보고 결과를 Concatenate하자.
Input ``` 1×1 Conv 3×3 Conv 5×5 Conv Pooling Concatenate Channel 방향으로 결합 ```

4. MobileNet: Convolution을 두 단계로 쪼개자

Standard Convolution은 공간과 Channel Mixing을 한 번에 수행한다.

MobileNet은 이를:

Depthwise Convolution
+
Pointwise 1×1 Convolution

으로 분리한다.

Standard Conv 연산량의 핵심 항

DK² × M × N × DF²

여기서:

D_K = Kernel Size
M   = Input Channels
N   = Output Channels
D_F = Feature Map Size

Depthwise Separable Conv는:

Depthwise:
DK² × M × DF²
Pointwise:
M × N × DF²

Standard Conv 대비 비율을 정리하면 대략:

1/N + 1/DK²

Kernel 3×3, Output Channel 256이라면:

1/256 + 1/9 ≈ 0.115

이상적인 연산량 비교에서는 Standard Conv의 약 11.5% 수준까지 내려갈 수 있다는 직관을 준다.

5. EfficientNet: Network를 키울 때 무엇을 키울까?

Model Capacity를 키우는 방법은 적어도 세 가지다.

Depth
Layer를 더 많이 쌓기
```
Width
Channel을 더 많이 사용
Resolution
더 큰 이미지를 입력
```

EfficientNet의 핵심 아이디어는 셋 중 하나만 무작정 키우기보다 Depth, Width, Resolution을 균형 있게 Scaling하는 것이다.

depth      = α^φ
width      = β^φ
resolution = γ^φ

원 논문에서는 대략적인 계산량 증가를 통제하기 위해 α·β²·γ² ≈ 2 같은 제약을 둔다.

6. Transfer Learning: CNN을 처음부터 학습하지 않아도 된다

ImageNet 같은 대규모 데이터에서 이미 학습된 CNN을 가져와 마지막 Layer만 새로운 Task에 맞게 바꿀 수 있다.

Pretrained CNN

Edge
↓
Texture
↓
Shape
↓
Object Feature
↓
[기존 Classification Head 제거]
↓
우리 Task용 Head 추가

데이터가 적다면 초기 Layer를 Freeze하고 마지막 부분만 학습할 수도 있다.

데이터가 충분하다면 전체 Network를 Fine-tuning할 수도 있다.

7. Data Augmentation

이미지에는 자연스럽게 적용할 수 있는 변형이 많다.

Original
↓
Horizontal Flip
Random Crop
Rotation
Color Shift
Brightness
Scale

핵심은 Label을 바꾸지 않는 범위에서 Training Distribution을 다양하게 만드는 것이다.

WEEK 3

“고양이다”에서 “고양이가 여기 있다”로

Image Classification:

이 이미지에는 자동차가 있다.

Object Detection:

자동차가 있고, 위치는 여기다.

1. Object Localization

Bounding Box를 네 개 숫자로 표현할 수 있다.

bx, by, bh, bw

예를 들어 전체 이미지를 0~1 좌표로 표현하면:

bx = 0.50
by = 0.55

bw = 0.40
bh = 0.30

Bounding Box의 중심과 크기를 나타낼 수 있다.

2. IoU: 두 Box가 얼마나 겹치는가?

IoU = Intersection Area / Union Area

예를 들어:

Prediction Box Area = 100
Ground Truth Area   = 120

Intersection = 80

Union
= 100 + 120 - 80
= 140
IoU = 80 / 140 ≈ 0.571

3. Non-max Suppression: 자동차 하나에 Box가 10개 나오면?

Detection Model은 같은 Object 주변에 여러 Box를 제안할 수 있다.

Box A: confidence 0.95
Box B: confidence 0.91
Box C: confidence 0.82
Box D: confidence 0.30

NMS는:

1. 가장 Confidence가 높은 Box 선택

2. 그 Box와 IoU가 매우 높은
   중복 Box 제거

3. 남은 Box 중 가장 높은 것 선택

4. 반복
Non-max라는 이름은 가장 높은 Score의 Box는 남기고 주변의 낮은 Score 후보를 억제한다는 의미다.

4. Anchor Box: 같은 위치에 서로 다른 Shape가 있을 수 있다

한 Grid Cell 안에 사람과 자동차가 함께 있을 수 있다.

사람은 세로로 길고, 자동차는 가로로 길다.

Anchor 1

▯
Tall Box
Person-like
```
Anchor 2

▭
Wide Box
Car-like
```

여러 Anchor Box를 두면 한 위치에서 여러 형태의 Object 후보를 표현할 수 있다.

5. YOLO: You Only Look Once

예전 Detection Pipeline은 이미지의 여러 Region을 반복적으로 검사하는 방식이 많았다.

YOLO의 핵심 아이디어는 Detection을 하나의 Neural Network Prediction 문제로 통합하는 것이다.

``` Object center가 속한 Cell이 예측 책임 각 Grid Cell Output Objectness bx, by, bw, bh Class Probabilities + Anchor별 Prediction ```

YOLO는 전체 이미지를 한 Network에 넣어 Bounding Box와 Class Probability를 직접 예측한다는 통합된 접근으로 유명해졌다.

6. Detection과 Segmentation은 무엇이 다를까?

Task Output
Classification이 이미지가 무엇인가?
Localization하나의 Object가 어디 있는가?
Detection여러 Object와 Bounding Box
Semantic SegmentationPixel마다 Class를 예측

Segmentation은 Rectangle 하나가 아니라 모든 Pixel에 Label을 붙인다.

7. Transposed Convolution: 작아진 Feature Map을 다시 키운다

일반적인 CNN은:

256×256
↓
128×128
↓
64×64
↓
32×32

처럼 공간 크기를 줄이며 고차원 Feature를 만든다.

그런데 Segmentation 결과는 원본 Pixel과 비슷한 Resolution으로 돌아와야 한다.

그래서 Feature Map을 다시 키우는 연산이 필요하다.

Downsampling의 반대 방향으로
공간 Resolution을 복원한다.

단순한 1D 직관에서 Transposed Conv 출력 크기는 상황에 따라 대략:

(n - 1)s - 2p + f

실제 Framework에서는 output padding, dilation 등의 설정에 따라 세부 공식이 확장된다.

8. U-Net: Context도 필요하고 위치 정보도 필요하다

Segmentation에는 두 가지가 동시에 필요하다.

Context

이 Pixel 주변에 무엇이 있는가?
전체적으로 어떤 Object인가?
```
Localization

정확히 어느 Pixel까지가 Object인가?
```
``` U-Net High Resolution Down Bottleneck Up Segmentation Skip Connection: 고해상도 위치 정보 전달 Encoder: Context 압축 · Decoder: Resolution 복원 Skip Connection: 잃어버리기 쉬운 세밀한 공간 정보 전달 ```

WEEK 4

얼굴을 “분류”하지 말고 거리로 표현하자

1. Face Verification vs Recognition

Problem 질문
Verification “이 사람이 주장한 A가 맞는가?” 1:1 문제
Recognition “Database의 수많은 사람 중 누구인가?” 1:K 문제

2. One-shot Learning 문제

일반 Classification은 Class마다 많은 Example을 원한다.

그런데 출입 시스템에 새로운 직원이 등록됐다. 사진이 딱 한 장뿐이다.

Employee A → 1 image
Employee B → 1 image
Employee C → 1 image

직원 한 명 추가될 때마다 전체 Classification Network를 다시 학습할 수는 없다.

그래서 질문을 바꾼다.

“이 두 얼굴이 얼마나 비슷한가?”

3. Siamese Network: 얼굴을 Vector로 바꾼다

CNN 함수 f(x)가 얼굴 이미지를 Embedding Vector로 변환한다고 하자.

Face Image → CNN → f(x)

같은 사람이라면 Embedding Distance가 작아야 한다.

||f(x₁) - f(x₂)||² → 작게

다른 사람이라면 커야 한다.

||f(x₁) - f(x₂)||² → 크게

4. Triplet Loss

세 장의 이미지를 사용한다.

A · Anchor
기준 얼굴

P · Positive
Anchor와 같은 사람

N · Negative
Anchor와 다른 사람

원하는 관계:

d(A,P) + α < d(A,N)

즉 같은 사람은 가까워야 하고, 다른 사람은 최소 Margin α만큼 더 멀어야 한다.

L = max(
||f(A)-f(P)||²
- ||f(A)-f(N)||²
+ α,
0)

숫자로 보자

d(A,P) = 0.3
d(A,N) = 0.9
margin α = 0.2


Loss
= max(0.3 - 0.9 + 0.2, 0)

= max(-0.4, 0)

= 0

이미 충분히 잘 분리되어 있으므로 Loss가 없다.

반대로:

d(A,P) = 0.6
d(A,N) = 0.7
α = 0.2

Loss
= max(0.6 - 0.7 + 0.2, 0)

= 0.1

Positive와 Negative가 충분히 떨어져 있지 않다. Network는 Embedding Space를 수정해야 한다.

이 부분은 현대 AI Engineer에게 특히 익숙하다. ``` 얼굴을 Vector로 만들고 Distance를 비교한다는 사고방식은 Text Embedding과 Vector Search를 이해할 때도 매우 비슷한 Mental Model을 제공한다.

다만 Face Embedding과 Text Embedding은 학습 목적과 모델 구조가 다르며, 단순히 같은 기술이라고 볼 수는 없다. ```

이제 Network로 그림을 그려보자: Neural Style Transfer

세 이미지가 있다.

기호 의미
CContent Image
SStyle Image
GGenerated Image

목표는:

C의 내용은 유지하면서
S의 스타일을 가진 G를 만든다.

5. CNN Layer마다 보는 것이 다르다

Early Layer
→ Edge / Simple Texture

Middle Layer
→ Shape / Pattern

Deep Layer
→ Object-level Representation

이 특성을 이용해 Content와 Style을 서로 다른 방식으로 측정할 수 있다.

6. Content Cost

어떤 중간 Layer의 Activation이 Content Image와 Generated Image에서 비슷하면 두 이미지의 내용도 비슷하다고 볼 수 있다.

Jcontent(C,G)
∝ ||a⁽ᶜ⁾ - a⁽ᴳ⁾||²

Generated Image의 Activation이 Content Image의 Activation과 멀어질수록 Cost가 커진다.

7. 그런데 Style은 어떻게 숫자로 만들까?

아주 재미있는 부분이다.

Style은 특정 위치에 정확히 무엇이 있느냐보다, 어떤 Feature들이 서로 함께 활성화되는가로 볼 수 있다.

Activation을 다음처럼 펼친다고 하자.

A : nC × (nHnW)

Channel 간 Correlation을 계산하는 Gram Matrix:

G = A Aᵀ

Gᵢⱼ는 Feature i와 Feature j가 이미지 전체에서 얼마나 함께 활성화되는지를 나타낸다.

예를 들어:

Feature 1 = 세로 방향 Texture
Feature 2 = 주황색 Pattern

G[1,2]가 크다

→ 세로 Texture와 주황색이
  이미지에서 자주 함께 나타남
Style을 “Pixel 위치”가 아니라 Feature 간 통계적 Correlation으로 표현하는 셈이다.

8. Style Cost

Style Image의 Gram Matrix와 Generated Image의 Gram Matrix 차이를 줄인다.

Jstyle(S,G)
∝ ||Gram(S) - Gram(G)||²

실제 Style Transfer에서는 여러 Layer의 Style Cost를 가중합할 수 있다.

9. 최종 Objective

J(G)
= α Jcontent(C,G)
+ β Jstyle(S,G)

여기서 흥미로운 점:

Neural Network Weight를 학습하는 게 핵심이 아니다.

이미 학습된 CNN을 Feature Extractor로 사용하고, Generated Image G 자체의 Pixel 값을 Gradient Descent로 바꾼다.

G = random image

repeat:

    content_cost = ...
    style_cost   = ...

    total_cost = ...

    gradient = dJ/dG

    G = G - learning_rate × gradient
Course 1에서는 Weight를 최적화했다.
Neural Style Transfer에서는 Image 자체를 Optimization Variable로 놓는다.

10. Convolution은 이미지 전용이 아니다

2D Convolution은 이미지에 자연스럽지만, 같은 아이디어를 다른 차원으로 일반화할 수 있다.

Convolution 예
1DTime Series · Audio · Sequence
2DImage
3DCT/MRI Volume · 3D Spatial Data

금융/Enterprise AI에서는 CNN을 어디서 만날까?

금융 AI Engineer가 직접 고양이 분류기를 만들 일은 많지 않을 수 있다. 하지만 Vision Pipeline 자체는 생각보다 가까이에 있다.

Use Case Vision 문제
스캔 문서Document Layout · OCR 전처리
계약서/신청서Table · Checkbox · Stamp · Signature Detection
신분증Document Detection · Image Quality
BiometricFace Verification
보험 이미지Damage Detection / Segmentation
Enterprise Insight ``` 특히 문서 AI에서는 OCR 이후의 LLM만 볼 것이 아니라 문서가 이미지에서 Text/Tables/Layout으로 변환되는 Vision/Ingestion Layer도 품질 병목이 될 수 있다.

RAG Error Analysis에서 “정답 문서가 있는데 검색이 안 됐다”고 생각했지만, 실제로는 Table이나 Text가 OCR 단계에서 누락된 경우도 충분히 발생할 수 있다. ```

Face Recognition처럼 생체정보를 다루는 시스템은 단순 Accuracy 문제를 넘어 Privacy, Consent, Data Retention, Access Control, Bias/Fairness, Audit, Regulatory Requirement를 함께 검토해야 한다.

CNN을 배우면 Transformer도 조금 다르게 보인다

Transformer 시대에 CNN을 배우는 것이 오래된 기술 공부처럼 보일 수 있다.

하지만 CNN이 던진 질문들은 지금도 중요하다.

CNN에서 배우는 것 더 넓은 AI 개념
Local Receptive Field어떤 입력끼리 Interaction시킬 것인가?
Parameter Sharing구조적 Inductive Bias
Residual ConnectionDeep Transformer에서도 핵심 Building Block
Embedding DistanceRepresentation Learning · Vector Search
Encoder / Decoder다양한 Representation Architecture

Course 4 수식 치트시트

# Convolution Output Size

n_out =
floor((n + 2p - f) / s) + 1


# Conv Layer Shape

Input:
n_H × n_W × n_C_prev

Filter:
f × f × n_C_prev

Number of filters:
n_C

Output:
n_H_new × n_W_new × n_C


# Conv Parameters

parameters =
(f × f × n_C_prev + 1) × n_C


# Residual Block

a[l+2] =
g(F(a[l]) + a[l])


# MobileNet Depthwise Separable Conv

Standard:
D_K² × M × N × D_F²

Depthwise:
D_K² × M × D_F²

Pointwise:
M × N × D_F²


# IoU

IoU =
Intersection / Union


# Face Embedding Distance

d(x1,x2) =
||f(x1) - f(x2)||²


# Triplet Loss

L =
max(
  ||f(A)-f(P)||²
  - ||f(A)-f(N)||²
  + margin,
  0
)


# Neural Style Transfer

J(G) =
α J_content(C,G)
+ β J_style(S,G)


# Gram Matrix

Gram(A) =
A Aᵀ

Computer Vision 문제를 보면 무엇부터 떠올릴까?

어떤 Output이 필요한가? ``` Classification Image → Class Detection Class + Box Segmentation Pixel → Class Similarity Image → Embedding CNN / Transfer Learning YOLO 계열 등 U-Net 계열 등 Metric Learning 문제 정의가 달라지면 Output Tensor와 Loss도 달라진다. ```

CNN에서 가장 많이 헷갈리는 것

Convolution Filter는 사람이 직접 정하는가?

초기 Edge Detection 예제에서는 사람이 만든 Filter를 사용해 직관을 배우지만, 실제 CNN의 Filter Weight는 대부분 Backpropagation으로 학습한다.

Filter 수와 Output Channel 수가 왜 같은가?

Filter 하나가 하나의 Feature Map을 만들기 때문이다. Filter 64개면 Output Channel도 64개다.

Pooling도 Weight를 학습하는가?

일반적인 Max/Average Pooling에는 학습 Parameter가 없다.

1×1 Conv는 아무 의미 없는 연산 아닌가?

공간적으로는 한 위치만 보지만 Channel 전체를 결합한다. Channel Mixing과 Dimension Reduction에 매우 유용하다.

ResNet의 Skip Connection에는 Parameter가 없는가?

Input과 Output Shape이 같으면 Identity Shortcut을 그대로 사용할 수 있다. Dimension이 다르면 Projection 등을 사용해 Shape을 맞추는 경우가 있다.

Detection과 Segmentation 중 무엇이 더 좋은가?

우열의 문제가 아니다. Bounding Box가 필요한지 Pixel-level Mask가 필요한지 Task 요구사항이 다르다.

Triplet Loss의 핵심은 얼굴인가?

핵심은 얼굴 자체보다 Embedding Space에서 Positive는 가깝게, Negative는 멀게 만드는 Metric Learning 사고방식이다.

18문제로 Course 4 이해도 체크

  1. 6×6 Input에 3×3 Filter, Padding 0, Stride 1이면 Output Size는?
  2. Padding을 사용하는 두 가지 주요 이유는?
  3. floor((n+2p-f)/s)+1의 각 기호는 무엇인가?
  4. RGB Input에 적용하는 Filter의 Channel Depth가 3이어야 하는 이유는?
  5. Filter가 64개면 Output Channel은 몇 개인가?
  6. CNN에서 Parameter Sharing은 무엇을 의미하는가?
  7. Max Pooling에는 학습 Parameter가 있는가?
  8. Residual Block에서 Shortcut Connection이 학습을 쉽게 만드는 직관은?
  9. 1×1 Convolution이 Channel Dimension을 줄일 수 있는 이유는?
  10. Inception Module이 여러 Filter Size를 병렬로 사용하는 이유는?
  11. Depthwise Separable Convolution은 Standard Conv를 어떤 두 단계로 나누는가?
  12. EfficientNet에서 함께 Scaling하는 세 Dimension은?
  13. IoU가 1이면 무엇을 의미하는가?
  14. NMS가 필요한 이유는?
  15. Anchor Box가 여러 개 필요한 이유는?
  16. U-Net의 Skip Connection은 Encoder의 어떤 정보를 Decoder에 전달하는가?
  17. Triplet Loss에서 A, P, N은 각각 무엇인가?
  18. Neural Style Transfer에서 Gram Matrix는 무엇을 표현하는가?

Course 4를 한 장면으로 기억하자

THE CNN MENTAL MODEL
```
Convolution은 작은 영역에서 Pattern을 찾는다.
Parameter Sharing으로 같은 Pattern Detector를 어디서나 재사용한다.
Pooling / Stride는 공간을 압축한다.
Deep CNN은 Edge → Part → Object Representation을 만든다.
Residual Connection은 깊은 Network를 학습하기 쉽게 만든다.
Detection은 Class와 위치를 함께 찾는다.
Segmentation은 Pixel마다 의미를 붙인다.
Metric Learning은 이미지를 Embedding Space의 거리로 바꾼다.
```

Course 1에서는 모든 Neuron이 이전 Layer의 모든 값을 보는 Fully Connected Network를 배웠다.

Course 4에서는 처음으로 데이터의 구조 자체를 Architecture에 반영하는 것이 얼마나 강력한지 보게 된다.

이미지에서는 가까운 Pixel끼리 관계가 강하다는 Locality, 같은 Pattern이 위치를 바꿔서도 나타날 수 있다는 특성이 있다.

CNN은 이 구조를 Parameter Sharing과 Local Connectivity라는 형태로 Network에 넣는다.

ONE LINE REVIEW
```
CNN의 핵심은 단순히 “이미지에 좋은 Neural Network”가 아니라,
데이터의 구조를 이용해 훨씬 효율적인 Representation을 학습하는 방법이다.
```

References

  • DeepLearning.AI / Coursera — Convolutional Neural Networks
  • He et al. — Deep Residual Learning for Image Recognition
  • Szegedy et al. — Going Deeper with Convolutions
  • Howard et al. — MobileNets: Efficient Convolutional Neural Networks for Mobile Vision Applications
  • Tan & Le — EfficientNet: Rethinking Model Scaling for Convolutional Neural Networks
  • Redmon et al. — You Only Look Once: Unified, Real-Time Object Detection
  • Ronneberger et al. — U-Net: Convolutional Networks for Biomedical Image Segmentation
  • Schroff et al. — FaceNet: A Unified Embedding for Face Recognition and Clustering
  • Gatys et al. — Image Style Transfer Using Convolutional Neural Networks

※ 현재 공식 Course 4의 4개 Module을 기준으로 학습 순서를 재구성했다. 강의 Transcript를 옮긴 것이 아니라 Convolution 수식, Matrix/Volume Shape, ResNet·MobileNet·YOLO·U-Net·Triplet Loss·Neural Style Transfer의 직관과 숫자 예제, Enterprise AI 연결을 추가한 학습용 Deep Dive다.