C.W.K.
Stream
Lesson 01 of 06 · published

Conv2D 해부 — filter, stride, padding

~13 min · conv2d, filter, stride, padding

Level 0Level 0
0 XP0/78 lessons0/17 achievements
0/100 XP to next level100 XP to go0% complete

컴퓨터 비전을 바꾼 단일 layer

Convolutional layer는 이미지 처리 네트워크의 핵심 빌딩 블록. 행렬곱 잠시 잊고 — 작은 창을 이미지 위에 슬라이드하는 거 생각해.

Filter (kernel)는 작은 행렬 — 보통 3×3 또는 5×5 — 가 입력 위를 슬라이드. 각 위치에서 local patch와 원소별 곱하고 합산. 전체 이미지 슬라이드하면 2D feature map 나와. filter 32개의 Conv2D는 32개 다른 filter 적용 → feature map 32개 쌓아.

핵심 통찰: weight 공유. 같은 3×3 filter가 모든 위치에 적용. 이게 CNN에 translation invariance (고양이가 좌상단이든 우하단이든 detector 작동)랑 극단적 파라미터 효율 줘. 3 채널 입력의 Conv2D(64, 3)(3×3×3 + 1) × 64 = 1,792 파라미터 — 같은 spatial 데이터 만지는 Dense layer보다 훨씬 적음.

Padding 규칙: 'same'은 zero-pad해서 출력 spatial size = 입력. 'valid'는 pad 안 해서 출력이 kernel_size - 1만큼 줄어.

Code

Conv2D full signature·python
from keras import layers

conv = layers.Conv2D(
    filters=64,                # number of output feature maps
    kernel_size=3,             # 3x3, or (3, 5) for rectangular
    strides=(1, 1),
    padding='same',            # 'same' (preserve) or 'valid' (shrink)
    activation='relu',
    dilation_rate=(1, 1),      # >1 for atrous/dilated conv
    groups=1,                  # = input_channels for depthwise conv
    use_bias=True,
    kernel_initializer='glorot_uniform',
    kernel_regularizer=None,
)

# Shape rules:
# Input:  (batch, height, width, channels) — channels_last
# Output: (batch, new_h, new_w, filters)
# 'same' + stride=1: new_h = input_h
# 'same' + stride=2: new_h = ceil(input_h / 2)
# 'valid' + stride=1: new_h = input_h - kernel_size + 1

External links

Progress

Progress is local-only — sign in to sync across devices.
이 페이지에서 버그를 발견하셨거나 피드백이 있으세요?문제 신고

댓글 0

🔔 답글 알림 (로그인 필요)
로그인댓글을 남기려면 로그인해 주세요.

아직 댓글이 없어요. 첫 댓글을 남겨보세요.