* Convolution (합성곱)
- 두 함수 또는 배열을 서로 겹치며 곱하고, 그 결과를 적분 또는 합산하는 연산
* CNN (Convolutional Neural Network; 합성곱 신경망)
- 이미지 인식, 영상 분석, 객체 탐지 등 시각적 데이터를 처리하는데 탁월한 성능을 보이는 딥러닝 모델
- 신경망이 데이터의 공간적 구조를 인식하고, 이를 기반으로 특징을 학습할 수 있도록 설계
* Convolution Layer (합성곱 층)
- 입력 데이터에 작은 Filter(=Kernel=Mask)를 적용 후 Convolution을 수행하여 유용한 특징을 나타내는 Feature Map 을 출력
- 입력 이미지의 좌상단부터 우하단까지 Sliding 하며, 두 행렬 간의 Element 별 곱셉을 수행한 후 합하여 값을 출력
* Filter ( 필터 = Kernel (커널) = Mask (마스크))
- 특정 패턴을 인식하는 역할
- 대칭성을 위해 보통 홀수로 크기를 지정
: 3x3 필터는 작은 지역을 공간적 패턴을 학습하는데 효과적
: 1x1 필터는 차원 축소 및 비선형 변환을 수행하며, 연산량을 줄이면서 표현력을 높이는데 사용
* Padding (패딩)
- 합성곱 연산으로 출력 Feature Map 의 크기가 줄어드는 것을 방지하거나, 특정한 출력 크기를 유지하기 위해 사용
- 입력 이미지의 가장자리에 추가적인 픽셀(보통 0)을 채워 넣는 작업
* Stride (스트라이드)
- 필터가 입력 이미지 위를 이동하는 간격
- 1인 경우 1 픽셀씩 이동
: 스트라이드가 커지면 필터가 더 빠르게 이동하므로 Feature Map 의 크기가 더 작아짐
* Feature Map (특징 맵)
- 입력 이미지에 필터를 적용하여 얻는 출력 데이터를 의미
: 예로, 이미지의 특징(모서리, 질감, 색상 등)을 부각시킨 새로운 2차원 배열
- Ow (출력 크기 가로) = (W - F + 2P) / S + 1
- Oh (출력 크기 세로) = (H - F + 2P) / S + 1
: W, H - 입력 이미지의 너비와 높이
: F - 필터의 크기
: P - 패딩 크기
: S - 스트라이드
* Pooling Layer (풀링 층)
- Feature Map 의 공간적 크기를 줄여주는 역할
- 신경망의 계산 복잡도를 줄이고, 과적합을 방지 등
: 중요한 정보는 유지하면서 크기를 축소시켜 연산량을 줄이기 위해 사용
* Max Pooling (최대 풀링)
- 주어진 Window 내에서 가장 큰 값을 선택하여 출력
: 이미지의 특징이 강조되고, 작은 변동의 영향이 줄어듦
* Average Pooling (평균 풀링)
- 주어진 Window 내의 값들의 평균을 계산하여 출력
: 전체적인 흐름이나 배경 정보를 유지하는데 유리
* Fully Connected Layer (완전연결 층)
- 추출된 Feature Map 을 종합하여 최종 예측 결과를 도출
: 모든 입력 뉴런이 모든 출력 뉴런과 연결됨
- 2차원 텐서로 입력을 받는다.
: 합성곱 층과 풀링층을 사용하여 추출된 Feature Map 은 4차원 텐서이다. 따라서, 2차원 텐서로 변환 필요
(Flatten 함수 이용)
- 여러 개의 FC Layer 거쳐서 최종 예측 값을 결정
: 이미지 분류 문제에서는 Sigmoid 혹은 Softmax 활성화 함수를 통해 각 클래스에 대한 확률을 출력
: 이미지 점수 문제에서는 활성화 함수를 사용하지 않음
* Transfer Learning (전이 학습)
- 이미 학습된 모델을 활용하여 새로운 작업에 적응시키는 기법
: 주로 대규모 데이터 세트에서 학습된 CNN 모델 (ImageNet, VGG, ResNe, Inception 등) 을 활용함
: 기존 모델의 가중치를 Freeze 하고 (Conv Layer 는 재사용. 새로운 데이터에서 특징 추출하는 역할만 수행),
새로 학습할 데이터 세트에서 마지막의 분류 계층 (FC Layer)의 가중치만 재학습
- Fine-Tuning 은 전이학습의 한 단계
: 기존에 학습된 모델의 일부를 새로운 데이터에 맞게 재학습 시키는 과정 (Conv Layer 도 일부 재학습)
: 새로운 데이터 세트가 원래 데이터 세트와 크게 다르지 않건, 더 나은 성능이 필요할 때 주로 사용
* ILSVRC (ImageNet Large Scale Visual Recognition Challenge, 2010~2017)
- 컴퓨터 비전 분야에서 가장 권위 있는 대회였으나, 사람의 인식 에러율이라고 알려진 5%보다 더 낮은 2.3% 에러율을 가진
SENet 등장으로 인해 2017년을 마지막으로 대회가 중단됨
* AlexNet (2012)
- 기존 방식과 다르게 CNN 을 사용하여 큰 성능 개선을 이뤄냄 (최초의 딥러닝 기반 이미지 분류 네트워크)
- 5개의 Conv Layer 와 3개의 FC Layer, 총 8개로 구성
: ReLU 활성화 함수를 사용하여 비선형성을 도입하고, 모델의 학습 속도를 크게 향상
: Dropout 기법을 도입하여 모델의 과적합을 방지하여 일반화 성능을 향상
: GPU 를 사용하여 대규모 데이터 셋을 빠르게 처리하고 학습시간을 단축
- 단점
: 파라미터가 많고 계산 비용이 큼
* VGG Net (Visual Geometry Group, 2014)
- VGG 에서 개발한 모델로 깊이 있는 네트워크 구조 (VGG16, VGG19) 를 통해 이미지 인식 성능을 크게 향상
: 여러 개의 연속된 Conv Layer 를 사용하여 복잡한 패턴을 학습할 수 있도록 함
: 모든 Conv Layer 는 3x3 필터를 사용, Pooling Layer 는 2x2 필터를 사용하여 신경망 복잡도를 줄이고 깊이를 증가시킴
- 단점
: 매우 큰 모델 사이즈
: 메모리 및 계산 Cost 가 큼
* ResNet (Residual Networks, 2015)
- MS Research 에서 발표한 딥러닝 모델로 깊이를 효율적으로 확장할 수 있도록 Residual Learning 도입
- 단점
: 파라미터 수가 여전히 많음
* Residual (잔차)
- 입력(x)과 출력의 차이
: F(x) = H(x) - x
* Residual Learning (잔차 학습)
- 딥러닝에서 신경망이 원하는 출력(H(x))을 학습하는 대신, 잔차를 학습하도록 하는 방식
: 깊은 네트워크에서 Degradtaion Problem (성능 저하 문제) 완화
- 기존 방식
: x -> H(x) 를 직접 맵핑하도록 학습
- 개선 방식
: x -> F(x) 를 학습
// F(x) 만 0으로 만들어주면 항등 함수가 되는데 이게 학습이 더 쉽다
// 최종 출력으로 F(x) + x 를 사용
* Residual Block (잔차 블록)
- 입력 값을 네트워크의 여러 층을 통과시킨 후, 원래의 입력값과 더하는 구조를 가진 딥러닝 네트워크의 기본 단위
: 기본 구성 요소는 2개의 3x3 Conv Layer 를 가지고 있으며 입력값과 출력을 더하는 shortcut 연결을 포함
* Identity Mapping
- 입력값을 어떤 변환 없이 그대로 출력으로 전달하는 함수 또는 경로를 의미
: h(x)=x와 같은 항등함수
* Skip connections (=Shortcut connection = residual connection; 스킵 연결)
- 이전 층의 출력을 여러 층을 건너뛰어(스킵해서) 이후 층의 입력에 직접 더하거나 연결하는 구조
: 학습이 제대로 이뤄지지 않더라도 최소 이전 수준의 성능 유지
: 역전파 과정에서 기울기가 소실 문제를 완화시켜 깊은 층까지 전달
* 응용 분야
- Single Object
1. Classification
2. Classification + Localization
- Multiple Objects
3. Object Detection
4. Segmentation
* Classification (분류)
- 이미지에서 객체의 종류를 인식하는 기술
* Localization
- 이미지 내에서 객체가 위치한 영역 (Bounding Box) 을 식별
* Bounding Box (바운딩 박스)
- 객체의 위치를 나타내는 직사각형
: (x_min, y_min, x_max, y_max)
* Object Detection (객체 탐지)
- 이미지나 비디오에서 특정 객체를 인식하고 그 위치를 탐지하는 기술
= Classfication + Localization
- One-Stage
: 객체의 위치와 클래스를 한 번이 전파로 동시에 예측하는 방법
: YOLO (You Only Look Once), SSD (Single Shot MultiBox Detector), RetinaNet 등
- Two-Stage
: 객체 탐지 파이프라인을 두 단계로 나누어 처리하는 방법
: R-CNN (Regions with CNN features), Fast R-CNN, Faster R-CNN 등
* Semantic Segmentation (의미론적 분할)
- 이미지의 각 픽셀에 대해 해당 픽셀이 어떤 클래스에 속하는지 분류
: 각 객체들을 정확히 구분하는 것이 목표
* Encoding (인코딩)
- CNN 모델의 여러 합성곱 및 Pooling Layer 를 통해 이미지가 점점 작은 크기의 FeatureMap 으로 다운샘플링 되는 과정
: 즉, 점점 더 추상적이고 중요한 Feature를 추출하고 공간정보를 압축하는 과정을 의미
: 이미지의 전체적인 문맥을 파악하게 되지만 공간적 해상도는 낮아짐
- 일반적으로 깊이가 깊어질수록 채널은 많아지고 너비와 높이는 줄어든다
: 서로 다른 각각의 필터들은 특정 Feature 값을 추출하도록 학습됨
* Decoding (디코딩)
- 업샘플링을 디컨볼루션 (Transposed Convoution) or 인터폴레이션 (Interpolation) 기법을 사용하여 수행하는 과정
1. 이미지의 공간적 해상도를 복원
: 업샘플링된 FeatureMap 은 다수의 채널(N = 클래스 개수)로 구성된 벡터 형태로 표현되어 있음
2. 따라서, Softmax 함수를 사용하여 각 픽셀이 속하는 클래스의 확률을 계산하여 픽셀 단위의 클래스 예측을 수행
3. 이를 바탕으로 Sementation Map (분할 맵) 생성
- 대표적인 모델로는, FCN (Fully Convolutional Networks), U-Net, DeepLab, PSPNet 등이 있다
* Upsampling (업샘플링)
- 다운샘플링된 FeatureMap 을 원래 크기로 복원하는 과정
* Super-Resolution (SR; 초해상도)
- 저해상도 이미지를 고해상도 이미지로 변환하는 기술
: 세부사항을 복원하고 더 높은 해상도로 확대할 때 이미지의 품질을 유지하거나 개선
- SISR, MISR, VSR 로 구분
* SISR (Single Image Super-Resolution; 단일 이미지 초해상도)
- 하나의 저해상도 이미지를 입력받아 고해상도 이미지를 출력
* MISR (Multi-Image Super-Resolution; 다중 이미지 초해상도)
- 여러 장의 저해상도 이미지를 입력받아, 각 이미지에서 서로 다른 정보를 통합하여 고해상도 이미지를 출력
: 다양한 각도나 시간대에 찍힌 저해상도 이미지를 결합하여 더 많은 세부 정보를 추출
* VSR (Video Super-Resolution; 비디오 이미지 초해상도)
- 비디오의 여러 프레임을 활용하여 고해상도 프레임을 생성함
: 시간적 정보 (이전 및 이후 프레임 정보) 를 사용하여 공간적 해상도를 개선
'SW > AI (인공지능)' 카테고리의 다른 글
ViTs (Vision Transformers) (0) | 2025.06.22 |
---|---|
Transformer (트랜스포머) (0) | 2025.06.22 |
Overfitting (과대적합) (0) | 2025.06.22 |
ANN (Artificial Neural Network; 인공신경망) (0) | 2025.06.21 |
Dying ReLU Problem (0) | 2025.06.21 |