[AI 인공지능 머신러닝 딥러닝/Python | PyTorch] - 인스톨! 파이토치 강의 소개
인스톨! 파이토치 강의 소개
혁펜하임 PyTorch 강의 오리엔테이션 요약혁펜하임 채널의 '[PyTorch] 0강. 오리엔테이션' 영상은 채널 5주년 기념으로 '인스톨! 파이토치' 강의를 소개하는 내용입니다. 강의자는 최근 출간한 '이론
inner-game.tistory.com

합성곱 신경망(Convolutional Neural Network)은 이미지를 인식하고 분류하는 데 특화된 딥러닝 아키텍처입니다. 컨볼루션 레이어는 네트워크가 이미지를 이해할 수 있도록 유용한 특징(feature)을 학습하는 핵심 구성 요소입니다.[^1][^2]
필터(filter) 또는 커널(kernel)은 k×k 크기의 텐서로, 입력 이미지를 스캔하면서 컨볼루션 연산을 수행합니다. 이 과정에서 필터는 edge, vertical line, horizontal line, bends와 같은 이미지의 다양한 특징을 추출합니다. 각 레이어의 필터는 랜덤하게 초기화되지만, 학습을 통해 점점 더 의미 있는 특징을 추출하는 필터로 진화합니다.[^3][^1]
컨볼루션 연산을 수행하면 출력 피처맵의 크기가 점점 작아집니다. 패딩은 입력 이미지의 가장자리에 추가 픽셀(보통 0)을 덧붙여 출력 크기를 조절하는 기법입니다.[^4][^5][^1]
패딩의 주요 역할은 다음과 같습니다:[^5]
스트라이드는 필터가 입력 이미지를 스캔할 때 이동하는 간격을 의미합니다. 스트라이드가 1이면 한 칸씩 이동하고, 2이면 두 칸씩 건너뛰며 이동합니다. 스트라이드를 증가시키면 출력 피처맵의 크기가 작아지는 다운샘플링(downsampling) 효과가 발생합니다.[^6][^5][^1]
입력 크기 n×n, 필터 크기 f×f, 패딩 p, 스트라이드 s일 때, 출력 피처맵의 크기는 다음과 같이 계산됩니다:[^7][^6]
출력 크기 = ((n + 2p - f) / s + 1) × ((n + 2p - f) / s + 1)
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)
CNN의 중요한 특성 중 하나는 위치 불변성(translation invariance)입니다. 이는 입력 이미지에서 객체의 위치가 변하더라도 동일하게 인식할 수 있는 능력을 의미합니다. 예를 들어, 고양이가 이미지의 왼쪽에 있든 오른쪽에 있든 상관없이 "고양이"로 분류할 수 있어야 합니다.[^8]
실제로 CNN은 구조적으로 완전한 translation invariance를 가지지는 않습니다. 하지만 학습 과정을 통해 이러한 불변성을 "학습"할 수 있습니다. ImageNet과 같은 대규모 데이터셋에서 사전 학습(pretraining)을 거치면, 네트워크는 위치 변화에 강건한 표현을 학습하게 됩니다.[^9]
CNN은 컨볼루션 필터를 통해 지역적 특징(local feature)을 추출합니다. 이미지의 특정 영역에 존재하는 패턴을 감지하고, 이러한 지역적 특징들을 조합하여 전체적인 객체를 인식합니다. 이미지를 무작위로 섞으면 이러한 공간적 구조가 파괴되어 CNN의 성능이 크게 저하됩니다.[^8]
흥미롭게도 CNN은 이미지 경계 효과를 활용하여 절대적 공간 위치를 인코딩할 수 있습니다. 이미지는 유한한 크기를 가지기 때문에 경계 근처에서 컨볼루션을 수행할 때 특별한 패턴이 발생하며, 네트워크는 이를 학습하여 위치 정보를 파악할 수 있습니다.[^10]
피처맵(Feature Map)은 컨볼루션 레이어를 거친 후 생성되는 출력으로, 입력 이미지에서 추출된 특징들을 시각적으로 표현합니다. 각 필터는 서로 다른 특징을 감지하며, 이를 통해 다양한 피처맵이 생성됩니다.[^3]
CNN의 레이어 구조는 계층적 특징 학습을 수행합니다:[^3]
PyTorch에서 중간 레이어의 피처맵을 시각화하는 방법은 다음과 같습니다:[^11][^12]
CAM은 모델이 특정 클래스를 예측할 때 입력 이미지의 어느 영역에 주목하는지 시각화하는 기법입니다. 이를 통해 모델의 의사결정 과정을 이해하고, 모델이 올바른 특징을 학습했는지 검증할 수 있습니다.[^11]
CNN 내부를 시각화하면 다음과 같은 이점이 있습니다:
CNN의 컨볼루션 레이어는 패딩과 스트라이드를 통해 출력 크기를 제어하며, 필터를 사용해 이미지의 계층적 특징을 추출합니다. 위치 불변성과 지역적 특징 추출 능력 덕분에 CNN은 이미지 인식에서 탁월한 성능을 발휘합니다. 피처맵 시각화를 통해 모델 내부를 들여다보면 딥러닝에 대한 직관을 키우고, 더 나은 모델을 설계할 수 있습니다.
[AI 인공지능 머신러닝 딥러닝/Python | PyTorch] - 인스톨! 파이토치 8강 | 이미지 데이터 증강 완벽 가이드: 기본부터 Albumentations까지
인스톨! 파이토치 8강 | 이미지 데이터 증강 완벽 가이드: 기본부터 Albumentations까지
[AI 인공지능 머신러닝 딥러닝/Python | PyTorch] - 인스톨! 파이토치 강의 소개 인스톨! 파이토치 강의 소개혁펜하임 PyTorch 강의 오리엔테이션 요약혁펜하임 채널의 '[PyTorch] 0강. 오리엔테이션' 영상
inner-game.tistory.com