Problem Solving with Algorithms

728x90
반응형

[AI 인공지능 머신러닝 딥러닝/Python | PyTorch] - 인스톨! 파이토치 강의 소개

 

인스톨! 파이토치 강의 소개

혁펜하임 PyTorch 강의 오리엔테이션 요약혁펜하임 채널의 '[PyTorch] 0강. 오리엔테이션' 영상은 채널 5주년 기념으로 '인스톨! 파이토치' 강의를 소개하는 내용입니다. 강의자는 최근 출간한 '이론

inner-game.tistory.com

 

 

 

인스톨! 파이토치

 

7-1강. 합성곱 신경망(CNN) 컨볼루션 레이어 이론부터 구현까지

컨볼루션 연산의 핵심 개념

합성곱 신경망(Convolutional Neural Network)은 이미지를 인식하고 분류하는 데 특화된 딥러닝 아키텍처입니다. 컨볼루션 레이어는 네트워크가 이미지를 이해할 수 있도록 유용한 특징(feature)을 학습하는 핵심 구성 요소입니다.[^1][^2]

필터와 커널

필터(filter) 또는 커널(kernel)은 k×k 크기의 텐서로, 입력 이미지를 스캔하면서 컨볼루션 연산을 수행합니다. 이 과정에서 필터는 edge, vertical line, horizontal line, bends와 같은 이미지의 다양한 특징을 추출합니다. 각 레이어의 필터는 랜덤하게 초기화되지만, 학습을 통해 점점 더 의미 있는 특징을 추출하는 필터로 진화합니다.[^3][^1]

패딩(Padding)

컨볼루션 연산을 수행하면 출력 피처맵의 크기가 점점 작아집니다. 패딩은 입력 이미지의 가장자리에 추가 픽셀(보통 0)을 덧붙여 출력 크기를 조절하는 기법입니다.[^4][^5][^1]

패딩의 주요 역할은 다음과 같습니다:[^5]

  • 경계 정보 보존: 이미지 가장자리 픽셀도 충분히 처리되어 정보 손실 방지
  • 출력 크기 제어: 원하는 출력 피처맵 크기 유지
  • 깊은 네트워크 구축: 레이어를 거칠수록 크기가 급격히 줄어드는 것을 방지

스트라이드(Stride)

스트라이드는 필터가 입력 이미지를 스캔할 때 이동하는 간격을 의미합니다. 스트라이드가 1이면 한 칸씩 이동하고, 2이면 두 칸씩 건너뛰며 이동합니다. 스트라이드를 증가시키면 출력 피처맵의 크기가 작아지는 다운샘플링(downsampling) 효과가 발생합니다.[^6][^5][^1]

출력 크기 계산 공식

입력 크기 n×n, 필터 크기 f×f, 패딩 p, 스트라이드 s일 때, 출력 피처맵의 크기는 다음과 같이 계산됩니다:[^7][^6]

출력 크기 = ((n + 2p - f) / s + 1) × ((n + 2p - f) / s + 1)

PyTorch 구현 예시

import torch.nn as nn

# 입력 채널 3, 출력 채널 64, 커널 크기 3×3
# 패딩 1, 스트라이드 1
conv_layer = nn.Conv2d(in_channels=3, out_channels=64, 
                       kernel_size=3, stride=1, padding=1)

7-2강. 이렇게 섞었는데 어떻게...???

Translation Invariance와 CNN

CNN의 중요한 특성 중 하나는 위치 불변성(translation invariance)입니다. 이는 입력 이미지에서 객체의 위치가 변하더라도 동일하게 인식할 수 있는 능력을 의미합니다. 예를 들어, 고양이가 이미지의 왼쪽에 있든 오른쪽에 있든 상관없이 "고양이"로 분류할 수 있어야 합니다.[^8]

CNN의 구조적 특성

실제로 CNN은 구조적으로 완전한 translation invariance를 가지지는 않습니다. 하지만 학습 과정을 통해 이러한 불변성을 "학습"할 수 있습니다. ImageNet과 같은 대규모 데이터셋에서 사전 학습(pretraining)을 거치면, 네트워크는 위치 변화에 강건한 표현을 학습하게 됩니다.[^9]

Local Feature의 중요성

CNN은 컨볼루션 필터를 통해 지역적 특징(local feature)을 추출합니다. 이미지의 특정 영역에 존재하는 패턴을 감지하고, 이러한 지역적 특징들을 조합하여 전체적인 객체를 인식합니다. 이미지를 무작위로 섞으면 이러한 공간적 구조가 파괴되어 CNN의 성능이 크게 저하됩니다.[^8]

경계 효과(Boundary Effects)

흥미롭게도 CNN은 이미지 경계 효과를 활용하여 절대적 공간 위치를 인코딩할 수 있습니다. 이미지는 유한한 크기를 가지기 때문에 경계 근처에서 컨볼루션을 수행할 때 특별한 패턴이 발생하며, 네트워크는 이를 학습하여 위치 정보를 파악할 수 있습니다.[^10]

7-3강. CNN 모델 내부 뜯어서 Feature Map을 직접 봤더니...

Feature Map이란?

피처맵(Feature Map)은 컨볼루션 레이어를 거친 후 생성되는 출력으로, 입력 이미지에서 추출된 특징들을 시각적으로 표현합니다. 각 필터는 서로 다른 특징을 감지하며, 이를 통해 다양한 피처맵이 생성됩니다.[^3]

레이어별 특징 추출 패턴

CNN의 레이어 구조는 계층적 특징 학습을 수행합니다:[^3]

  • 초기 레이어: 에지(edge), 색상, 단순한 질감 같은 저수준(low-level) 특징 추출
  • 중간 레이어: 모서리, 곡선, 패턴의 조합 같은 중간 수준 특징 추출
  • 깊은 레이어: 얼굴, 물체의 부분 등 고수준(high-level) 특징 추출

Feature Map 시각화 방법

PyTorch에서 중간 레이어의 피처맵을 시각화하는 방법은 다음과 같습니다:[^11][^12]

  1. 모델의 중간 출력 추출: 특정 레이어의 출력을 가져옴
  2. Activation Map 시각화: 각 필터가 활성화되는 패턴 확인
  3. Deconvolution: 역방향으로 거슬러 올라가 입력의 어느 부분이 해당 특징을 활성화시켰는지 확인[^12]

Class Activation Mapping (CAM)

CAM은 모델이 특정 클래스를 예측할 때 입력 이미지의 어느 영역에 주목하는지 시각화하는 기법입니다. 이를 통해 모델의 의사결정 과정을 이해하고, 모델이 올바른 특징을 학습했는지 검증할 수 있습니다.[^11]

시각화의 실용적 가치

CNN 내부를 시각화하면 다음과 같은 이점이 있습니다:

  • 모델 디버깅: 잘못 학습된 필터나 레이어를 발견
  • 해석 가능성: 블랙박스처럼 여겨지는 딥러닝 모델의 작동 원리 이해
  • 성능 개선: 어떤 특징이 중요한지 파악하여 모델 구조 개선
  • 신뢰성 향상: 의료, 자율주행 등 critical한 분야에서 모델 검증

결론

CNN의 컨볼루션 레이어는 패딩과 스트라이드를 통해 출력 크기를 제어하며, 필터를 사용해 이미지의 계층적 특징을 추출합니다. 위치 불변성과 지역적 특징 추출 능력 덕분에 CNN은 이미지 인식에서 탁월한 성능을 발휘합니다. 피처맵 시각화를 통해 모델 내부를 들여다보면 딥러닝에 대한 직관을 키우고, 더 나은 모델을 설계할 수 있습니다.

 

 

 

 

다음 글

[AI 인공지능 머신러닝 딥러닝/Python | PyTorch] - 인스톨! 파이토치 8강 | 이미지 데이터 증강 완벽 가이드: 기본부터 Albumentations까지

 

인스톨! 파이토치 8강 | 이미지 데이터 증강 완벽 가이드: 기본부터 Albumentations까지

[AI 인공지능 머신러닝 딥러닝/Python | PyTorch] - 인스톨! 파이토치 강의 소개 인스톨! 파이토치 강의 소개혁펜하임 PyTorch 강의 오리엔테이션 요약혁펜하임 채널의 '[PyTorch] 0강. 오리엔테이션' 영상

inner-game.tistory.com

 

728x90
반응형
반응형

공유하기

facebook twitter kakaoTalk kakaostory naver band
250x250