이 요약은 AI가 원문을 분석해 생성했습니다. 정확한 내용은 원문 기준으로 확인하세요.
핵심 요약
하드코딩된 4개의 필터와 Max Pooling, Softmax를 사용하여 특정 캐릭터 이미지를 분류하는 CNN 모델을 NumPy로 구현했다.
배경
대학 프로젝트의 일환으로 PyTorch나 TensorFlow 같은 프레임워크 대신 NumPy만을 사용하여 이미지 특징 추출부터 역전파 학습까지 직접 구현한 코드를 공유했다.
의미 / 영향
프레임워크의 추상화된 기능 뒤에 숨겨진 CNN의 작동 원리를 NumPy 구현을 통해 명확히 이해할 수 있다. 특히 수동 필터 설계는 딥러닝 이전의 전통적인 컴퓨터 비전 방식과 현대 신경망의 결합 가능성을 보여준다.
실용적 조언
- 이미지 처리 시 PIL의 resize와 convert('RGB')를 사용하여 입력 데이터의 규격을 통일하면 행렬 연산 시 차원 불일치 오류를 방지할 수 있다.
- 학습률(lr)과 초기 가중치 범위를 조정하여 Softmax 확률값이 발산하지 않도록 관리하는 것이 중요하다.
섹션별 상세
작성자는 수평 엣지, 대각선, 십자가 형태의 3x3 필터 4개를 직접 정의하여 이미지 특징을 추출했다. 입력 이미지 패치와 필터의 원소별 곱셈 결과 중 최댓값을 취하는 방식으로 합성곱과 풀링을 결합하여 처리한다. 이 과정을 통해 64x64 크기의 RGB 이미지는 필터링을 거쳐 압축된 특징 벡터로 변환된다.
python
def apply_layer(X, F):
"""Applies your custom Conv (element-wise) and 2x2 MaxPool [cite: 9, 11, 13, 15]"""
h, w, c = X.shape
out = np.zeros((h // 2, w // 2, c))
for i in range(0, h - 2, 2):
for j in range(0, w - 2, 2):
for k in range(c):
patch = X[i:i+3, j:j+3, k]
if patch.shape == (3, 3):
out[i//2, j//2, k] = np.max(patch * F)
return out하드코딩된 필터를 적용한 후 2x2 Max Pooling을 수행하는 커스텀 레이어 구현
학습 루프에서는 48차원의 특징 벡터를 입력받아 4개의 클래스로 분류하는 단일 레이어 신경망 구조를 채택했다. 가중치 W는 4x48 행렬로, 편향 b는 4차원 벡터로 초기화되어 Softmax 활성화 함수를 통해 각 클래스별 확률을 계산한다. 예측값과 실제 레이블 간의 오차를 기반으로 경사 하강법을 적용하여 매 에포크마다 파라미터를 업데이트한다.
python
logits = np.dot(W, z) + b
probs = np.exp(logits) / np.sum(np.exp(logits))
# Gradient
error = probs - y_labels[idx]
dW += np.outer(error, z)
db += error
W -= lr * (dW / 4)
b -= lr * (db / 4)Softmax 연산 및 역전파를 통한 가중치(W)와 편향(b) 업데이트 로직
데이터 로딩 단계에서는 4명의 캐릭터(Monika, Natsuki, Sayori, Yuri)별로 4장씩 총 16장의 이미지를 사용한다. 이미지는 64x64 크기로 리사이징되며 255로 나누어 정규화 과정을 거친다. 각 캐릭터는 4차원 원-핫 인코딩(One-hot encoding) 형태의 정답 레이블로 매핑되어 학습에 활용된다.
실무 Takeaway
- 하드코딩된 필터를 사용하면 학습 없이도 이미지의 특정 기하학적 특징(엣지, 대각선 등)을 즉각적으로 추출할 수 있다.
- NumPy의 np.outer와 np.dot 연산을 활용하여 프레임워크 없이도 기본적인 신경망의 순전파 및 역전파 메커니즘을 구현 가능하다.
- 작은 데이터셋(16장)에서도 적절한 특징 추출과 Softmax 분류기를 결합하면 특정 도메인 이미지에 대한 분류 학습이 이루어짐을 확인했다.
언급된 도구
NumPy추천
행렬 연산 및 신경망 로직 구현
PIL추천
이미지 로딩 및 전처리
AI 분석 전체 내용 보기
AI 요약 · 북마크 · 개인 피드 설정 — 무료
출처 · 인용 안내
원문 발행 2026. 05. 02.수집 2026. 05. 02.출처 타입 REDDIT
인용 시 "요약 출처: AI Trends (aitrends.kr)"를 표기하고, 사실 확인은 원문 보기 기준으로 진행해 주세요. 자세한 기준은 운영 정책을 참고해 주세요.