no image
Computational Imaging
🔑 Computational Imaging, Training data, Advanced loss functionsComputational ImagingComputational Photography이미지 생성과 처리에 컴퓨팅 기술을 추가하는 분야기존의 사진 촬영 방법에 컴퓨터 알고리즘을 결합하여 새로운 방식으로 이미지를 생성하고 개선하는 방법을 제시In-Camera Pipeline (카메라 내 파이프라인)In-camera pipeline은 카메라가 이미지를 캡처할 때 처리하는 단계센서 데이터 캡처: 카메라 센서가 빛을 감지하여 디지털 신호로 변환원시 데이터 처리: 센서에서 받은 원시 데이터를 처리하여 이미지로 변환노이즈 제거: 이미지에서 노이즈를 제거하여 품질을 향상시킴화이트 밸런스 조정: 색 온도를 조..
2025.01.16
no image
Object Detection & R-CNN
🔑 Detection, One-stage Detector, Two-stage Detector, Instance segmentation, R-CNNObject DetectionClassification + Box localizationObject detection architecturesTwo-stage detector : R-CNNRegion-based Convolutional Neural NetworkRegion Proposal (후보 영역 추출)입력 이미지를 받으면, 먼저 Selective Search와 같은 기법을 사용해 이미지에서 객체가 있을 가능성이 있는 후보 영역(Region Proposal)을 수천 개 생성이미지 내에 객체가 존재할 가능성이 높은 영역을 미리 추정하는 과정Feature Ex..
2025.01.15
no image
Semantic Segmentation
🔑 Semantic SegmentationSemantic segmentation이미지의 각 픽셀을 특정 카테고리로 분류하는 작업→ 이미지의 픽셀 단위에서 의미론적 의미를 이해하고 분류하는 데에 중점, 객체의 인스턴스는 구분하지 않음인스턴스 무시Semantic segmentation에서는 객체의 인스턴스(예: 특정 사람 또는 특정 자동차)가 아닌, 객체의 종류(즉, 카테고리)만을 고려함 → 같은 종류의 여러 객체가 구분되지 않음ex) 이미지에 두 명의 사람이 있을 때, 두 사람을 개별적으로 구분하는 것이 아니라, "사람"이라는 카테고리로 모든 픽셀을 분류Semantic segmentation architecturesFully Convolutional Networks (FCN)semantic segmen..
2025.01.14
ViT & GAN
🔑 CV 이론, ViT, GANViT visualizationSelf-attention layer visualizationVision Transformer(ViT)에서 Self-Attention Layer Visualization은 모델이 이미지 데이터를 처리할 때 어떤 부분에 주목하고 있는지를 시각화하는 방법ViT는 이미지를 패치(patch)로 나누어 입력으로 사용하고, 이를 통해 이미지의 전역적 특성을 학습하는데, Self-Attention 메커니즘은 이 과정에서 중요한 역할Self-Attention ViT에서는 이미지가 작은 패치들로 나누어지며, 각 패치는 입력 토큰으로 변환됨 Self-Attention 메커니즘은 이 패치들이 서로 어떤 관계를 가지고 있는지를 학습한다쿼리(Query), 키(K..
2025.01.14
no image
CNN (Convolution Neural Network)
🔑 CV 이론, CNNCNN (Convolution Neural Network)CNN은 컨볼루션을 이용한 인공 신경망 모델다차원 배열 데이터 처리에 특화된 모델로 데이터의 공간적 정보를 유지하면서 배열 데이터 정보를 다음 레이어로 보낼 수 있어 이미지 (3차원 배열) 분야에서 적극 활용 Convolutional layer필터는 이미지를 통과하여 한 번에 몇 Pixel(NxN)을 스캔하고 각 형상이 속하는 클래스를 예측하는 형상 맵을 만든다 Pooling layer (downsampling)가장 중요한 정보를 유지하는 동시에, 각 피쳐의 정보량을 줄임 (보통 여러 개의 회전이 있다?) Fully Connected layer 완전 연결 계층한 층(layer)의 모든 뉴런이 그 다음 층(layer)의 모든 ..
2025.01.13



Computational Imaging

Computational Photography

  • 이미지 생성과 처리에 컴퓨팅 기술을 추가하는 분야
  • 기존의 사진 촬영 방법에 컴퓨터 알고리즘을 결합하여 새로운 방식으로 이미지를 생성하고 개선하는 방법을 제시

In-Camera Pipeline (카메라 내 파이프라인)

In-camera pipeline카메라가 이미지를 캡처할 때 처리하는 단계

  1. 센서 데이터 캡처: 카메라 센서가 빛을 감지하여 디지털 신호로 변환
  2. 원시 데이터 처리: 센서에서 받은 원시 데이터를 처리하여 이미지로 변환
  3. 노이즈 제거: 이미지에서 노이즈를 제거하여 품질을 향상시킴
  4. 화이트 밸런스 조정: 색 온도를 조정하여 자연스러운 색상으로 만듦
  5. 노출 조정: 밝기를 조절하여 최적의 노출을 제공
  6. 샤프닝 및 색상 보정: 이미지의 선명도와 색상을 조정

Computational Photography: Adding Computation into the Imaging Pipeline

Computational photography는 전통적인 카메라 파이프라인에 알고리즘컴퓨터 비전 기술을 추가하여, 이미지 생성과 처리를 향상시키는 접근 방식인데, 이는 단순히 하드웨어의 성능을 개선하는 것을 넘어서, 소프트웨어적으로 이미지를 처리하는 방법도 변화시킴

  • HDR (High Dynamic Range) Imaging: 다양한 노출로 촬영된 여러 이미지를 결합하여 넓은 범위의 명암을 표현할 수 있는 이미지를 생성
  • Image Stitching: 여러 장의 사진을 합쳐서 넓은 범위의 파노라마 이미지를 만듦
  • Computational Refocusing: 사진을 찍은 후, 초점을 조절할 수 있는 기술
  • Low-light Enhancement: 어두운 환경에서도 선명하고 밝은 이미지를 생성하기 위해 복잡한 알고리즘을 사용

응용 분야

  • Low light image enhancement / Denoising
  • Super-resolution
  • Deblurring
  • High dyanmic range imaging
  • Stylization
  • Colorization 흑백 → 컬러
  • 이미지 복원 (Image Restoration): 손상된 이미지를 복구하거나, 노이즈를 제거하고 화질을 개선하는 작업
  • 이미지 개선 (Image Enhancement): 이미지를 더 선명하고, 색상과 밝기를 조정하여 시각적으로 더 매력적으로 만드는 작업
  • 3D 모델링: 2D 이미지에서 3D 형태를 재구성하여, 가상 현실이나 증강 현실에서 활용할 수 있는 3D 모델을 생성




 

Training data in computational imaging

Case 1 : Image Denoising

  • 이미지의 노이즈를 제거하여 선명하고 깨끗한 이미지를 복원하는 과정
    • 노이즈는 이미지 품질을 저하시키고, 특히 저조도 환경에서 더 두드러지게 나타날 수 있음

Camere noise

  • Pre-ADC Noise:
    • 이미지를 디지털로 변환하기 전, 즉 아날로그 신호 단계에서 발생하는 노이즈를 의미 → 저조도 조건에서는 이 노이즈가 더욱 두드러짐
  • Signal-dependent Noise (신호 의존 노이즈)
    • Photon shot noise광자(photon) 수의 변동으로 인해 발생하는 노이즈
      • 이는 양자화(quantization)와는 관련이 없으며, 물리적 현상으로 인해 생기는 노이즈
      • 저조도 환경에서는 광자가 적게 들어오기 때문에, 광자 수의 변동이 더 큰 영향을 미치게 되어 노이즈가 증가함
      • 이 노이즈는 신호 강도에 비례하여 발생하기 때문에, 밝은 부분에서는 노이즈가 덜 눈에 띄지만, 어두운 부분에서는 더 두드러지게 된다
  • Signal-Independent Noise (신호 독립 노이즈)
    • Read Noise
      • Read noise는 이미지 센서가 신호를 읽을 때 발생하는 노이즈
      • 센서의 전기적 특성에서 비롯되며, 신호의 강도와 관계없이 일정한 양의 노이즈를 추가
      • 이 노이즈는 센서의 읽기 과정에서 항상 발생하므로, 저조도에서도 일정하게 나타난다
    • Quantization Noise
      • Quantization noise는 아날로그 신호를 디지털로 변환할 때 발생하는 노이즈
      • 변환 과정에서 아날로그 신호의 연속적인 값을 디지털 값으로 변환하면서 발생하는 오차
      • 디지털 비트 깊이와 관련이 있으며, 비트 깊이가 낮을수록 더 많은 양의 노이즈가 발

 

Noise Model

  • 이미지에서 발생하는 노이즈를 수학적으로 표현하는 방법
  • Gaussian noise는 가장 일반적으로 사용되는 노이즈 모델로, 이미지의 품질을 저하시킬 수 있음

 

Gaussian Noise

  • 정규 분포를 따르는 노이즈로 통계적으로 가장 많이 발생하며 실제 상황에 잘 맞는 모델임
  • 수학적으로 단순하고 분석 및 처리가 쉬워서 가장 널리 사용되는 노이즈 모델

 

Mathematical Model

  1. 노이즈 모델:
    • 이미지의 노이즈를 수학적으로 표현할 때, 노이즈 없는 원본 이미지 x에 가우시안 노이즈 n이 추가되어 손상된 이미지 y를 형성
    • y = x + n
      • y = 노이즈가 추가된 이미지
      • x = 노이즈가 없는 원본 이미지
      • n = 가우시안 노이즈
  2. Gaussian Noise Distribution
  • Gaussian noise n은 정규 분포를 따름
    • 즉, 노이즈 n은 평균이 0이고, 분산이 $σ^{2}$인 정규 분포 N(0, $σ^{2}$)를 따른다
  • 정규 분포: n ~ N(0, $σ^{2}$)
  • $σ^{2}$ = 노이즈의 분산 → 노이즈의 강도를 결정. 분산이 클수록 노이즈의 강도가 강해진다

 

가우시안 노이즈의 확률 밀도 함수

  • $σ^{2}$ = 노이즈의 분산, n = 노이즈 값



Case 2 : Image super resolution

Image super resolution

  • Super resolution(초해상도)은 저해상도 이미지를 입력으로 받아 고해상도 이미지로 복원하는 기술
  • 이미지의 디테일을 향상시키고, 픽셀 수를 증가시켜 더 선명하고 정밀한 이미지를 생성하는 것을 목표로 함

 

Synthetic data generation

  • 실제 데이터를 사용하지 않고, 특정 목적에 맞는 인공 데이터를 생성하는 과정
  • 기계 학습이나 컴퓨터 비전에서 훈련 데이터를 확보하기 어려울 때 많이 사용
  1. 고해상도 자연 이미지 수집
    • 먼저, 고해상도 이미지들을 수집 → 이러한 이미지들은 원본 데이터로 사용되며, 이후 저해상도 이미지를 생성하기 위한 출발점
  2. 저해상도 이미지 생성
    • 고해상도 이미지를 다운샘플링(down-sampling)하여 저해상도 이미지를 생성
      • 다운샘플링은 이미지의 픽셀 수를 줄여 해상도를 낮추는 것
      • 이는 다양한 방법으로 수행될 수 있지만, 일반적으로 양큐빅 보간법(bicubic interpolation)과 같은 보간 기법이 사용된

 

주의점: 다운샘플링의 한계

  • 다운샘플링의 비정확성:
    • 다운샘플링은 실제 카메라가 이미지를 캡처할 때 수행하는 모든 복잡한 과정을 정확히 모사하지 않음.
      • 저해상도 이미지로 변환되면서 고해상도 이미지의 중요한 피쳐를 온전히 반영하지 않게 될 수 있다는 것이 단점이라는 말!
    • ex) 카메라에서 발생하는 노이즈, 렌즈의 비네팅, 색상 왜곡 등은 단순한 수학적 보간으로는 재현할 수 없음
  • 바이큐빅(양큐빅) 보간법 (Bicubic Interpolation)
    • 입력 이미지의 16개 인접 픽셀을 고려하여 새로운 픽셀 값을 계산
    • 그러나 이는 카메라의 실제 물리적 동작을 정확히 반영하지 않기 때문에, 원본 고해상도 이미지의 특성을 모두 보존하지 못할 수 있

 

RealSR

  • RealSRSuper Resolution(SR) 모델을 훈련시키기 위해, 보다 현실적인 훈련 데이터를 생성하는 방법 → 실제 카메라의 이미징 시스템을 모사한다!
    • 기존의 단순한 다운샘플링 방식 대신, 실제 카메라의 작동 방식을 모사하여 보다 현실적인 저해상도-고해상도 이미지 쌍을 만들어낸다
  • 실제 카메라를 이용해서 최대한 실제적인 데이터 취득을 시도함

실제 DSLR 카메라의 이미징 시스템을 얇은 렌즈 모델(Thin Lens)로 모사함.

→ 카메라 렌즈의 물리적 특성을 수학적으로 표현하며, 이를 통해 현실적인 저해상도 이미지를 생성

얇은 렌즈 모델은 렌즈의 초점 거리(f), 물체와 렌즈 사이의 거리(u), 이미지 센서와 렌즈 사이의 거리(v) 간의 관계를 나타내는 수식으로 정의

  • f: 렌즈의 초점 거리
  • u: 물체와 렌즈 사이의 거리
  • v: 이미지 센서와 렌즈 사이의 거리

실제 카메라에서 발생하는 포커싱, 왜곡, 심도, 노이즈 등 다양한 물리적 효과를 고려하여 보다 실제적인 저해상도 이미지를 생성할 수 있다

 

RealSR의 장점

  1. 현실성 향상: 실제 카메라의 이미징 시스템을 모사하여, 더 현실적인 저해상도 이미지를 생성할 수 있음 → SR 모델의 실제 성능을 높이는 데 도움이 됨
  2. 정밀한 훈련 데이터: 얇은 렌즈 모델을 사용하여 생성된 훈련 데이터는 기존 방법보다 정밀하고 세부적인 특징을 반영 → 모델이 더 나은 화질을 복원할 수 있게 됨

저해상도(LR)와 고해상도(HR) 쌍을 만듦 → 단순히 해상도 차이만 두고 생성하는 것보다, 카메라의 초점 거리(focal length)를 다르 촬영하면, 더 현실적인 차이를 반영할 수 있게 된다

  • 초점 거리가 짧을수록(광각 렌즈) 더 넓은 영역이 촬영되지만, 디테일이 상대적으로 줄어듦
  • 초점 거리가 길수록(망원 렌즈) 더 좁은 영역을 확대하여 촬영하지만, 더 많은 디테일을 포착



Case 3 : Image deblurring

  • deblurring은 블러(blur)로 인해 손상된 이미지를 복원하는 과정을 의미
  • 블러는 이미지가 흐릿해지거나 왜곡되는 현상으로, 주로 카메라 흔들림이나 객체의 움직임으로 인해 발생
  • Motion Blur (모션 블러):
    • 원인: 카메라가 흔들리거나 촬영하는 동안 객체가 움직이는 경우 발생
    • 특징: 블러가 이미지에서 특정 방향으로 길게 늘어나는 현상 등
      • ex) 움직이는 차량의 바퀴가 길게 늘어나 보임… 샤샤샥
  • Lens Blur (렌즈 블러):
    • 원인: 초점이 맞지 않아 발생 (지금 과정에서는 자세히 안 다룬다!)
    • 특징: 렌즈의 초점이 맞지 않아 이미지의 특정 부분이 흐릿해지거나 부드럽게 나타남

 

Deblurring 과정

  1. 블러 모델링
    • 블러 유형 파악: 먼저, 이미지에서 발생한 블러의 유형을 파악 → 모션 블러의 경우, 블러의 방향과 길이를 모델링할 수 있어야 함
    • 블러 커널 추정: 블러를 복원하기 위해, 블러의 커널(kernel)을 추정 → 커널은 블러가 적용된 방식과 패턴을 나타낸다
  2. 복원 알고리즘 적용:
    • 역블러 필터: 블러 커널을 알고 있거나 추정한 경우, 역블러 필터(deblurring filter)를 사용하여 블러를 제거
    • 최적화 기술: 역블러 필터를 적용하기 전에, 최적화 기술을 사용하여 블러 커널을 정확히 추정 → 이는 이미지의 선명도를 복원하는 데 중요
  3. 후처리:
    • 노이즈 제거: 디블러링 과정에서 노이즈가 추가될 수 있으므로, 노이즈를 줄이기 위한 후처리 단계를 포함할 수 있음
    • 세부 조정: 복원된 이미지의 품질을 개선하기 위해 추가적인 세부 조정을 수행

 

Deblurring 방법

  1. 데이터 기반 방법:
    • 딥러닝 접근법: CNN(Convolutional Neural Networks)이나 GAN(Generative Adversarial Networks)을 활용하여 블러를 제거하고 선명한 이미지를 복원
  2. 모델 기반 방법:
    • 복원 필터링: 전통적인 접근법으로, 복원 필터(restoration filters)를 사용하여 블러를 제거하는 방법 → 블러의 커널을 알고 있는 경우 효과적
  3. 주파수 도메인 방법:
    • 푸리에 변환: 이미지의 주파수 도메인에서 블러를 제거하는 방법으로, 블러의 주파수 특성을 분석하고 이를 반전시켜 복원

 

고속 촬영 카메라를 사용한 현실적인 데이터 획득 방법

  • 여러 개의 짧은 노출 프레임을 촬영하여 긴 노출 효과를 만들어내고, 이를 처리하여 실제적인 블러를 얻는 기술
  • 블러를 시뮬레이션하고 이해하는 데에 유용
  1. 고속 촬영 카메라 사용:
    • 고속 촬영 카메라(예: GoPro)를 사용하여 매우 빠른 프레임 속도로 이미지를 촬영한다. 이 카메라는 짧은 노출 시간 동안 많은 수의 프레임을 캡처할 수 있다.
  2. 짧은 노출 프레임 촬영:
    • 카메라는 짧은 노출 시간을 사용하여 이미지의 선명한 장면을 여러 번 촬영한다. 이로 인해 각 프레임이 선명한 세부 사항을 담고 있지만, 블러가 없는 상태로 캡처된다
  3. 긴 노출 이미지 생성:
    • 촬영된 짧은 노출 프레임들을 합산하여 긴 노출 이미지를 생성한다. 이 과정에서 여러 프레임의 정보가 합쳐져서 블러가 포함된 이미지를 만든다
  4. 비선형 카메라 응답 함수(CRF) 적용:
    • 생성된 블러 이미지에 대해 비선형 카메라 응답 함수(Camera Response Function, CRF)를 적용하여 신호를 픽셀 값으로 변환한다. CRF는 카메라 센서의 비선형 응답을 보정하는 함수
  5. 블러 축적 과정:
    • 여러 개의 짧은 노출 프레임을 축적하여 긴 노출 효과를 얻는 이 과정에서 이미지의 움직임이나 초점 불량에 의한 블러가 자연스럽게 반영된다

 

RealBlur

  • 이미지 복원 및 슈퍼 해상도(Super-Resolution) 분야에서 사용되는 실제적인 블러(Blur) 데이터 생성 방법
  • 실제 이미지에서 블러를 시뮬레이션하여 훈련 데이터를 생성하는 데 중점
  • RealBlur의 목표는 실제적인 블러 현상을 모델링하여 훈련 데이터를 생성하는 것으로, 이 훈련 데이터는 블러를 포함한 이미지와 블러가 없는 원본 이미지를 포함하여, 모델이 블러를 효과적으로 제거할 수 있도록 학습시키는 데 사용한다



'Study - AI > Computer Vision' 카테고리의 다른 글

Object Detection & R-CNN  (0) 2025.01.15
Semantic Segmentation  (0) 2025.01.14
ViT & GAN  (0) 2025.01.14
CNN (Convolution Neural Network)  (0) 2025.01.13



Object Detection

Classification + Box localization





Object detection architectures


Two-stage detector : R-CNN

Region-based Convolutional Neural Network

  1. Region Proposal (후보 영역 추출)
    • 입력 이미지를 받으면, 먼저 Selective Search와 같은 기법을 사용해 이미지에서 객체가 있을 가능성이 있는 후보 영역(Region Proposal)을 수천 개 생성
      • 이미지 내에 객체가 존재할 가능성이 높은 영역을 미리 추정하는 과정
  2. Feature Extraction and Classification (특징 추출 및 분류)
    • 각 후보 영역을 CNN(Convolutional Neural Network)에 통과시켜, 각 영역의 특징을 추출
    • 추출된 특징을 이용해 각 후보 영역이 어떤 클래스(예: 사람, 자동차, 개 등)에 속하는지 분류
    • 각 후보 영역의 위치를 조금 더 정확하게 조정하기 위해 경계 박스 회귀를 수행
  3. Output (출력)
    • 최종적으로 객체의 클래스와 위치(경계 박스)를 출력

장점

R-CNN은 각 후보 영역에 대해 정밀한 분류를 수행하기 때문에 정확도가 높음


단점

많은 후보 영역을 각각 CNN에 통과시켜야 하기 때문에 계산량이 매우 많고, 속도가 느리다



One-stage detector : YOLO

  1. Single Forward Pass (단일 단계 처리)
    • 이미지를 그리드로 나누고, 각 그리드 셀이 해당 영역에서 객체가 있는지를 예측
    • 각 그리드 셀은 객체가 있을 확률과 그 객체의 클래스, 그리고 객체의 경계 박스를 동시에 예측
  2. Output (출력)
    • 전체 이미지에 대해 한 번의 네트워크 통과만으로, 모든 객체의 위치와 클래스를 예측

장점

매우 빠름 → 전체 이미지를 한 번에 처리하기 때문에 실시간 객체 탐지에 적합


단점

속도가 빠른 대신, 작은 객체나 복잡한 이미지에서는 정확도가 떨어질 수 있음. 특히, 객체가 그리드 셀 경계를 넘어 있을 때 탐지가 어려울 수 있다



One-stage detector vs Two-stage detector

One-stage detector

단일 단계: 전체 이미지 처리 및 탐지 (Single Step Detection)

  • 이미지를 여러 개의 그리드 셀로 나누고, 각 셀이 담당하는 영역에서 객체가 있는지를 예측
  • 각 셀은 해당 영역 내에서 객체의 클래스와 위치(경계 박스)를 동시에 예측
  • YOLO는 전체 이미지를 한 번에 보고, 동시에 객체의 위치와 클래스 정보를 예측하는 원 스테이지 디텍터
  • 한 번에 처리: 이미지 전체를 보고 객체 탐지 및 위치 예측
  • 매우 빠른 처리 속도
  • 상대적으로 정확도는 낮을 수 있음 (특히 작은 객체에 대해)

Two-stage detector

  • 첫 번째 단계: 후보 영역 추출 (Region Proposal)

    • Selective Search 등의 알고리즘을 사용해 입력 이미지에서 잠재적인 객체가 있을 만한 후보 영역(Region Proposals)을 여러 개 생성
      • 이 후보 영역들은 객체가 있을 가능성이 높은 이미지의 작은 부분
  • 두 번째 단계: 후보 영역 분류 및 경계 박스 회귀 (Classification and Bounding Box Regression)

    • 각 후보 영역을 CNN(합성곱 신경망)에 입력하여 특징을 추출하고, 이를 사용해 객체가 어떤 클래스에 속하는지 분류

    • 각 후보 영역의 경계 박스 위치를 정밀하게 조정(회귀)하여 객체의 정확한 위치를 예측

      먼저 후보 영역을 생성한 후, 이를 각각 CNN에 통과시켜 객체를 탐지하는 두 단계를 거치기 때문에 투 스테이지 디텍터

  • 두 단계로 나뉘어 처리: 후보 영역 생성 → 후보 영역 분류 및 위치 조정

  • 일반적으로 더 높은 정확도

  • 계산량이 많아 속도가 느림



Class imbalance problem 클래스 불균형 문제

  • 객체 탐지에서 발생하는 문제로, 원 스테이지 디텍터(YOLO, SSD 등)들이 이 문제에 취약한 편

  • 이미지 내에서 실제로 객체가 존재하는 앵커 박스(양성 앵커 박스)보다 객체가 없는 앵커 박스(음성 앵커 박스)가 훨씬 더 많음

    • ex) 한 이미지에 객체가 10개밖에 없더라도 앵커 박스는 수천 개가 될 수 있음. 대부분의 앵커 박스는 객체가 없는 음성 앵커 박스
  • 모델이 학습할 때, 음성 앵커 박스가 너무 많아 모델이 음성 앵커 박스를 잘 분류하는 데 집중하게 되고, 상대적으로 양성 앵커 박스의 분류에는 덜 민감해짐 → 모델의 성능이 저하될 수 있음

  • 앵커 박스 Anchor Box

    앵커 박스는 객체 탐지 모델이 이미지에서 다양한 크기와 모양의 객체를 찾아내기 위해 사용하는 사전 정의된 사각형들

    앵커 박스는 이미지를 나눈 그리드 셀 위에 겹쳐서 여러 크기와 비율의 사각형 모양으로 미리 설정됨

    1. 이미지에 사각형 격자(그리드)를 씌운다
      • 모델은 이미지 전체를 여러 개의 작은 사각형 셀로 나눈다
        • 이 사각형들이 격자 모양으로 배열되어 있다고 생각할 것
    2. 각 그리드 셀에 여러 개의 앵커 박스를 설정한다
      • 각 그리드 셀 위에 여러 개의 사각형 박스를 겹쳐놓음. 이 박스들은 크기와 모양이 다 다름
    3. 앵커 박스가 객체를 찾는 방법
      • 모델은 이 앵커 박스들이 이미지에서 실제 객체와 얼마나 잘 맞는지(겹치는 정도)를 평가
      • 만약 이미지에 있는 객체의 위치와 모양이 어떤 앵커 박스와 잘 맞는다면, 그 앵커 박스는 "양성(positive)"으로 분류
      • 반대로, 객체와 거의 맞지 않는 앵커 박스는 "음성(negative)"으로 분류

Focal Loss

클래스 불균형 문제를 해결하기 위해 개발된 손실 함수

  • Improved Cross Entropy Loss (개선된 교차 엔트로피 손실 함수):
    • Focal Loss는 기본적으로 교차 엔트로피 손실을 기반으로 함. 교차 엔트로피 손실은 분류 문제에서 많이 사용하는 손실 함수로, 예측과 실제 클래스 간의 차이를 측정
    • Focal Loss는 이 교차 엔트로피 손실을 개선하여, 모델이 학습할 때 특정 문제를 더 잘 다루도록 만든다
  • Deal with Class Imbalance (클래스 불균형 문제를 다룸):
    • 클래스 불균형은 음성(객체가 없는) 샘플이 양성(객체가 있는) 샘플보다 훨씬 많은 상황을 의미하는데, Focal Loss는 모델이 음성 샘플에만 치우쳐 학습하지 않도록 함
    • Over-weights Hard or Misclassified Examples (어려운 예제나 잘못 분류된 예제에 더 높은 가중치를 부여):
      • Focal Loss는 모델이 잘못 분류한 예제들이나, 분류하기 어려운 예제들에 대해 더 큰 가중치를 부여함
        • ex) 모델이 특정 객체를 제대로 인식하지 못하면, Focal Loss는 해당 예제에 대해 더 많은 학습이 이루어지도록 유도
    • Down-weights Easy Examples (쉬운 예제에는 낮은 가중치를 부여):
      • 반대로, 이미 잘 분류된(쉬운) 예제들에 대해서는 가중치를 줄여, 모델이 이미 잘 처리하는 데이터에 너무 많은 자원을 쓰지 않도록

RetinaNet

  • 원 스테이지 네트워크 → RetinaNet은 객체 탐지를 한 번의 과정으로 수행해 속도가 빠름!

Feature Pyramid Networks (FPN) + class/box prediction branches

  • Feature Pyramid Networks (FPN)
    • FPN은 이미지의 여러 스케일에서 객체를 탐지하기 위해 사용되는 네트워크 구조
    • FPN은 이미지에서 다중 스케일 피처를 추출하여, 작은 객체부터 큰 객체까지 다양한 크기의 객체를 효과적으로 탐지할 수 있도록 해줌
    • 이는 기본적으로 기존의 CNN에서 나온 특징 맵(feature map)을 여러 레벨로 쌓아 올려, 각 레벨에서 객체를 탐지할 수 있게 한다
  • Class/Box Prediction Branches (클래스/박스 예측 분기)
    • RetinaNet은 각 피라미드 레벨에서 두 가지 분기를 사용
      1. 클래스 예측 분기 (Classification Branch):이 분기는 이미지의 특정 위치에서 어떤 클래스가 있는지를 예측
        1. ex) 특정 위치에 사람이 있는지, 자동차가 있는지를 분류
      2. 박스 예측 분기 (Box Regression Branch):이 분기는 이미지 내에서 객체의 경계 박스를 예측함 → 객체의 정확한 위치를 나타내는 사각형의 좌표를 예측
    • 이 두 가지 분기는 FPN에서 생성된 특징 맵을 기반으로 하며, 모델이 객체의 위치와 클래스를 동시에 예측할 수 있게 함

RetinaNet의 특징

  • Focal Loss:

    RetinaNet은 Focal Loss를 사용하여 클래스 불균형 문제를 효과적으로 해결!

    이는 모델이 어려운 예제에 집중하고, 클래스 불균형으로 인해 발생할 수 있는 문제를 줄여줌. 이로 인해 원 스테이지 디텍터임에도 불구하고 높은 정확도를 달성 가능

  • Feature Pyramid Networks (FPN):

    FPN을 통해 이미지의 다양한 스케일에서 객체를 탐지할 수 있게 되어, 작은 객체나 큰 객체 모두에서 좋은 성능을 보여준다

RetinaNet은 원 스테이지 객체 탐지 모델로, Focal Loss와 Feature Pyramid Networks (FPN)을 결합하여 높은 정확도와 빠른 속도를 동시에 달성. FPN은 이미지의 여러 스케일에서 객체를 탐지할 수 있게 하며, 클래스와 박스를 동시에 예측하는 분기를 사용해 객체의 위치와 클래스를 정확하게 예측함






Instance segmentation

Instance segmentation = Semantic segmentation + distinguishing instances

Instance segmentation은 이미지에서 개별 객체를 식별하고 각 객체의 단위 경계를 정확하게 구분하는 작업

  • 세맨틱 세그멘테이션 (Semantic Segmentation):
    • 세맨틱 세그멘테이션은 이미지의 각 픽셀을 특정 클래스에 할당하는 작업
      • ex) 이미지에서 모든 "사람" 픽셀을 동일한 색상으로 칠해 사람이라는 것을 표시하는 것
    • 하지만 이 방법은 같은 클래스에 속하는 여러 객체(예: 여러 명의 사람)를 구분하지는 않음. 모든 사람이 같은 색상으로 칠해지기 때문에, 개별 객체를 구분할 수 없다
  • 인스턴스 세그멘테이션 (Instance Segmentation):
    • 인스턴스 세그멘테이션은 세맨틱 세그멘테이션을 확장하여, 같은 클래스에 속하는 객체들도 개별적으로 구분하는 작업
      • ex) 여러 명의 사람이 있는 이미지에서 각 사람을 각각 다른 색상으로 표시해, 서로 다른 객체임을 명확히 구분할 수 있음
    • 즉, 세맨틱 세그멘테이션을 수행한 후, 그 결과를 바탕으로 같은 클래스에 속하는 객체들 사이의 경계를 구분해주는 과정이 추가된 것



Mask R-CNN

객체 탐지와 인스턴스 세그멘테이션을 동시에 수행하는 딥러닝 모델

  • Faster R-CNN을 기반으로 하고 Mask Branch를 더한 것

  • 객체의 경계 상자 뿐만 아니라 각 객체의 정확한 픽셀 단위 마스크도 예측할 수 있음

  • Faster R-CNN

    • Faster R-CNN투 스테이지 객체 탐지 모델로, 이미지에서 객체의 위치(경계 상자)를 예측하고, 그 경계 상자 안에 어떤 객체가 있는지를 분류
    1. Region Proposal Network (RPN)
      • 이미지에서 객체가 있을 만한 위치(후보 영역, Region Proposal)를 제안하는 네트워크로, RPN이 제안한 후보 영역들은 이후 단계에서 더 정확히 분류되고, 경계 상자가 조정
    2. ROI Pooling 및 클래스/박스 예측
      • 제안된 후보 영역에 대해, 어떤 클래스의 객체인지 분류하고, 경계 상자(박스)를 더 정확하게 조정
  1. Region Proposal

    • Faster R-CNN과 동일하게, Region Proposal Network (RPN)을 통해 이미지에서 객체가 있을 가능성이 있는 후보 영역을 제안
  2. ROI Align

    • Mask R-CNN은 ROI Pooling 대신 ROI Align이라는 방법을 사용. ROI Align은 후보 영역의 좌표를 보다 정확하게 처리하여, 픽셀 단위로 더 정밀한 결과를 얻을 수 있게 한3다

    • RoI Align이란?

      • RoI AlignMask R-CNN에서 사용되는 기술로, 픽셀 단위의 정밀한 정보를 유지하여 객체 탐지와 인스턴스 세그멘테이션의 정확성을 높이는 역할

      • RoI Align은 RoI Pooling의 개선된 버전으로, 픽셀 단위의 정밀한 위치 정보가 필요할 때 사용

        RoI Pooling vs. RoI Align

      1. RoI Pooling

        • RoI Pooling은 Faster R-CNN에서 사용되는 기법으로, Region of Interest (RoI), 즉 객체 후보 영역을 고정된 크기로 변환하는 방법
        • RoI Pooling은 후보 영역을 그리드로 나누고, 각 그리드 셀에서 최대값을 추출하여 고정된 크기의 출력 피처 맵을 생성 → 이 과정에서 위치 정보의 손실이 발생할 수 있음
          • RoI Pooling은 후보 영역을 비슷한 크기의 셀로 나누어, 각 셀에서 가장 큰 값을 선택함으로써 정보의 손실을 일으킬 수 있음
      2. RoI Align

        • RoI Align은 RoI Pooling의 문제를 해결하기 위해 제안된 기법으로, 픽셀 단위로 정확한 위치 정보를 유지할 수 있도록 설계
        • RoI Align은 후보 영역을 작은 격자(grid)로 나누지 않고, 직접적으로 픽셀 값을 보간하여 정밀한 피처를 추출함. 이때, bilinear interpolation을 사용하여 각 RoI의 피처 맵을 더 정밀하게 샘플링
        • RoI Align은 격자 나누기를 사용하지 않고, 입력 피처 맵에서 실제 픽셀 위치를 참조하여 더 정확한 결과를 제공

        RoI Align의 작동 과정

      3. 후보 영역의 정확한 위치 계산

        • RoI Align은 후보 영역의 좌표를 직접적으로 활용하여, 픽셀 단위로 정확한 위치를 보정함. 이는 격자 셀을 사용하는 대신, 더 정밀한 정보를 보장
      4. Bilinear Interpolation (양선형 보간법)

        • RoI Align은 격자 셀 내의 값을 보간하여, 각 RoI의 특징을 보다 세밀하게 추출. 이 과정은 픽셀 단위의 세밀한 위치 정보를 유지한다
      5. 피처 추출

        • 각 후보 영역에서 정확한 피처 맵을 추출하고, 이를 통해 더 정밀한 객체 인식과 분류를 수행

        왜 RoI Align이 중요한가?

      • 정밀한 객체 탐지: RoI Align은 픽셀 단위로 정확한 위치 정보를 유지할 수 있어, 객체의 모양과 경계를 더 정확히 추정할 수 있음
      • 인스턴스 세그멘테이션: 인스턴스 세그멘테이션에서는 객체의 형태를 정확히 추출하는 것이 중요. RoI Align은 이 과정에서 정보 손실을 줄여줌.
  3. 클래스/박스 예측

    • 제안된 영역에 대해 Faster R-CNN과 동일하게, 객체의 클래스와 경계 상자를 예측함
  4. 마스크 예측

    • Mask Branch가 각 객체에 대한 픽셀 단위의 바이너리 마스크(객체가 있는 부분은 1, 없는 부분은 0)를 예측 → 이 마스크는 객체의 형태를 정확히 추출하는 데 사용됨



DensePose R-CNN

DensePose R-CNN = Faster R-CNN + 3D surface regression branch

  • DensePose R-CNNFaster R-CNN3D 표면 회귀(branch)를 추가하여, 2D 이미지에서 3D 표면의 정확한 매핑을 수행하는 모델
  • *2D 이미지를 기반으로 *인체의 3D 표면을 매핑하여, 인체의 3D 자세를 추정하는 모델

  1. Faster R-CNN:
    • Faster R-CNN은 객체 탐지를 위한 모델로, 이미지에서 객체의 위치(경계 상자)와 클래스(객체 종류)를 예측
  2. 3D 표면 회귀(3D surface regression)(branch):
    • DensePose R-CNN은 객체의 2D 이미지를 기반으로 객체의 3D 표면을 예측
    • 2D 이미지에서 인체의 3D 표면(예: 인체의 피부 표면)을 매핑하여, 인체의 각 부분이 3D 공간에서 어떻게 나타나는지를 추정
    • 이를 통해, 2D 이미지를 통해 인체의 3D 자세를 추정할 수 있음

작동 방식

  • DensePose R-CNN은 먼저 이미지에서 객체를 찾고(기본적인 Faster R-CNN 단계), 인체 표면의 3D 좌표를 추정하여, 2D 이미지에서 3D 표면의 세부적인 디테일을 제공



Mesh R-CNN

Mesh R-CNN = Faster R-CNN + 3D surface regression branch

  • Mesh R-CNNFaster R-CNN3D 표면 회귀(branch)를 추가하여, 3D 메쉬 형식으로 객체의 표면을 예측하는 모델
  • 2D 이미지에서 객체의 3D 메쉬를 예측하여, 객체의 정밀한 3D 표면을 생성하는 모델

  1. Faster R-CNN:
    • 기본적으로 Faster R-CNN을 사용하여 객체의 위치와 클래스 정보를 예측
  2. 3D 표면 회귀(branch):
    • Mesh R-CNN은 3D 메쉬를 예측
      • 메쉬는 3D 객체의 표면을 구성하는 다각형(삼각형 등)의 집합
    • 이 모델은 객체의 표면을 3D 메쉬 형태로 생성하여, 보다 상세하고 정밀한 3D 표면 모델을 제공

작동 방식

  • Mesh R-CNN은 먼저 이미지에서 객체를 탐지하고(기본적인 Faster R-CNN 단계), 각 객체에 대해 3D 메쉬를 예측하여, 객체의 정확한 3D 형태를 생성
  • 이 메쉬는 3D 공간에서 객체의 표면을 나타내는 삼각형의 집합



'Study - AI > Computer Vision' 카테고리의 다른 글

Computational Imaging  (0) 2025.01.16
Semantic Segmentation  (0) 2025.01.14
ViT & GAN  (0) 2025.01.14
CNN (Convolution Neural Network)  (0) 2025.01.13



Semantic segmentation

이미지의 각 픽셀을 특정 카테고리로 분류하는 작업

→ 이미지의 픽셀 단위에서 의미론적 의미를 이해하고 분류하는 데에 중점, 객체의 인스턴스는 구분하지 않음

인스턴스 무시

  • Semantic segmentation에서는 객체의 인스턴스(예: 특정 사람 또는 특정 자동차)가 아닌, 객체의 종류(즉, 카테고리)만을 고려함 → 같은 종류의 여러 객체가 구분되지 않음
    • ex) 이미지에 두 명의 사람이 있을 때, 두 사람을 개별적으로 구분하는 것이 아니라, "사람"이라는 카테고리로 모든 픽셀을 분류





Semantic segmentation architectures

Fully Convolutional Networks (FCN)

  • semantic segmentation 작업을 위한 첫 번째 end-to-end 네트워크 아키텍처
    • 이미지의 각 픽셀을 분류하여 세밀한 의미론적 정보를 제공
  1. End-to-End 아키텍처
    • FCN은 입력 이미지부터 최종 세그멘테이션 맵까지 모든 과정이 네트워크 내에서 직접적으로 연결된 구조를 가짐
    • 중간 단계에서 별도의 데이터 전처리나 후처리 없이, 입력 이미지가 네트워크를 통과하여 최종 출력이 생성됨
  2. 입력 이미지 크기
    • 변동 크기: FCN은 임의의 크기를 가진 이미지를 입력으로 받을 수 있음 → 이미지의 해상도가 다양한 상황에서도 유연하게 대응할 수 있음을 의미
  3. 출력 세그멘테이션 맵
    • 해상도 유지 : 네크워크는 입력 이미지의 크기에 맞춰 세그멘테이션 맵을 출력. 원본 이미지의 크기와 동일한 해상도의 출력 맵을 생성하여, 이미지의 각 픽셀에 대해 클래스를 할당

FCN의 작동 과정

  1. 이미지 입력: 임의의 크기의 이미지를 네트워크에 입력
  2. 특징 추출: 여러 개의 합성곱 레이어를 통해 이미지의 특징을 추출
  3. 업샘플링: 낮은 해상도의 특징 맵을 업샘플링하여 원본 이미지 크기와 동일한 크기로 변
  4. 세그멘테이션 맵 생성: 최종적으로 각 픽셀에 대해 카테고리를 할당하여 세그멘테이션 맵을 출력


Fully Connected vs Fully Convolutional

  1. 완전 연결층(Fully connected layer): 고정된 차원의 벡터를 출력하고, 공간 좌표를 버린다
    • 작동 방식: 완전 연결층에서는 입력 데이터의 모든 특징이 네트워크의 모든 뉴런과 연결됨. 결과적으로 각 뉴런은 입력 데이터의 모든 요소를 고려하여 출력을 생성한다
    • 출력 형태: 고정된 크기의 벡터(1차원 배열)임
      • ex) 이미지 분류 문제에서는 클래스 수에 맞춰 고정된 크기의 벡터가 출력
    • 공간 좌표: 이 층은 입력 이미지의 공간적 정보를 고려하지 않는다. 즉, 입력 이미지의 위치나 형태에 대한 정보를 잃어버리며, 공간 좌표를 모두 버린다
    • 용도: 주로 이미지 분류와 같은 문제에서 최종적으로 클래스 확률을 출력하는 데 사용된다
  2. 완전 합성곱층(Fully convolutional layer): 공간 좌표를 유지하면서 분류 맵을 출력
    • 작동 방식: 합성곱 층에서는 입력 데이터의 공간적 구조를 유지하면서 특징을 추출하고, 각 픽셀 위치에서 지역적인 정보만을 고려하여 연산을 수행함
    • 출력 형태: 공간 좌표를 가지는 분류 맵
      • 입력 이미지의 각 픽셀에 대해 클래스 레이블을 할당한 결과를 얻을 수 있습음
    • 공간 좌표: 완전 합성곱층은 입력 데이터의 공간적 정보를 보존하며, 공간 좌표를 유지한다. 이는 이미지의 세밀한 위치 정보를 고려할 수 있음을 의미함
    • 용도: 주로 semantic segmentation과 같은 작업에서 사용
      • 입력 이미지의 각 픽셀에 대해 클래스 레이블을 예측해야 하므로 공간적 정보를 유지하는 것이 중요

Fully Connected Layer (완전 연결층)

  • 작동 방식: 완전 연결층은 입력 데이터의 모든 뉴런이 다음 레이어의 모든 뉴런과 연결
    • flattening 단계에서 2D 이미지 데이터를 1D 벡터로 변환한 후, 완전 연결층은 이 벡터를 입력으로 받아 각 뉴런에 가중치와 편향을 적용하여 최종 출력을 생성
  • 출력: 단일 벡터로서, 각 뉴런이 이미지 전체를 요약하는 정보를 출력

1x1 Convolution Layer

  • 작동 방식: 1x1 합성곱층은 1x1 크기의 필터를 사용하여 각 위치의 특징 벡터를 새로운 벡터로 변환
    • 공간적인 구조(위치)를 유지하면서도 각 위치의 특징을 독립적으로 변환하는 방식
    • 입력 특징 맵의 각 위치에서 채널 간 결합을 수행. → 공간적 차원(H, W)은 변하지 않고, 채널 수만 변한다
  • 출력: 입력 특징 맵의 각 위치에서 동일한 크기의 특징 벡터를 출력

  • 입력 특징 맵이 H x W x N의 크기를 가지며, 여기서 HW는 각각 높이와 너비, N은 입력 채널 수
  • 1x1 합성곱의 각 필터는 1 x 1 x N 크기 → 이 필터는 1x1 크기로 공간적 정보를 다루지는 않지만, 각 위치에서 N개의 입력 채널에 대해 가중합을 수행
  • M개의 필터가 있다면, 각 필터는 입력 특징 맵의 각 위치(H x W)에서 N차원 벡터와 곱해지며, 이를 통해 새로운 출력 채널을 생성함
    • M개의 필터를 적용한 후, 결과로 얻어지는 출력 특징 맵은 H x W x M의 크기를 가지게 된다
    • 각 위치에서 N개의 입력 채널이 M개의 필터 각각에 의해 결합되므로, 출력 채널의 수는 M

1x1 합성곱층은 합성곱 특징 맵의 모든 특징 벡터를 분류

1x1 합성곱층만 많이 쌓는다고 하면?

  • 예측된 스코어 맵이 많이 저해상도가 된다는 한계가 있다?
    • 더 넓은 수용 영역(receptive field)을 가지기 위해, 여러 공간 풀링 레이어가 사용되기 때문?
    • 업샘플링으로 스코어맵의 해상도를 높여 해결 가능!

피쳐 맵 자체가 이미 해상도가 많이 낮아지고 피쳐 디멘션만 커진 구조

풀링 레이어나 스트라이드가 있는 컨볼루션을 거치면서 이미지의 중심 피쳐만 두고 해상도가 감소하게 되는데, 이 1 x 1 컨볼루션은 해상도에 영향을 주지 않아서 결과적으로 스코어 맵이 저해상도인 채로 나오게 된다?


업샘플링 Upsampling

작은 활성화 맵(activation map)을 원본 이미지 크기로 확장하는 과

  • 언풀링(Unpooling): 언풀링은 주로 풀링 층에서 사용된 인덱스 정보를 기반으로 원래 크기로 복원하는 방법
    • 최대 풀링(max pooling) 후에 언풀링을 사용하면, 최대 값이 있었던 위치에 다시 값을 복원.
    • 그러나 이는 비선형적인 방법이기 때문에, 고해상도의 세밀한 세부 사항을 복원하기에는 한계가 있을 수 있음
  • 전치 합성곱(Transposed Convolution): 전치 합성곱, 또는 업샘플링 합성곱(upsampling convolution)은 입력 데이터에 대한 합성곱 연산을 역으로 적용하는 방법
    • 이미지의 해상도를 증가시키며, 필터를 사용하여 고해상도 이미지를 생성
    • 전치 합성곱은 대개 많은 파라미터와 계산량을 필요로 하지만, 고해상도의 세밀한 정보를 생성하는 데 효과적
  • 업샘플링과 합성곱(Upsample and Convolution): 먼저 업샘플링을 통해 입력 데이터의 크기를 늘리고, 그 후에 합성곱을 적용하여 세부 사항을 보강하는 방식
    • 전치 합성곱보다 연산이 덜 복잡할 수 있으며, 보다 제어된 방식으로 해상도를 증가시킬 수 있음

FCN의 특징

  • FCN은 빠르다. 다른 작업으로 만든 구성 요소에 의존하지 않는 종단 간 (end-to-end) 아키텍처를 갖추고 있다는 점에서 빠름
    • FCN은 이미지 분할과 같은 작업을 수행할 때, 입력 이미지에 대해 전체적으로 합성곱 연산을 적용하여 직접 예측을 수행함.
    • 전통적인 방법에서 필요했던 여러 전처리 및 후처리 단계가 줄어들어 모델의 속도가 빠르다! 모든 연산이 네트워크 내부에서 이루어지기 때문에, 각 구성 요소가 독립적으로 조정되거나 설계되지 않아도 됨
  • FCN은 정확하다. 특징 표현(feature representation)과 분류기(classifier)가 함께 최적화된다는 점에서 정확도가 높음
    • FCN은 네트워크가 입력 이미지를 처리하고, 다양한 수준의 특징을 추출하며, 최종적으로 분류를 수행
    • 특징 표현과 분류가 동시에 학습되고 최적화되기 때문에, 이미지의 세부 사항을 잘 반영할 수 있어서 더 정확한 예측 가능
    • 전통적인 방법에서처럼 별도로 특징 추출과 분류기를 훈련시키는 것과 비교하여, 이 통합된 접근 방식이 더 높은 정확도를 제공함



U-Net

  • 진행 방식이 U 모양이라 U-Net
  • fully convolution networks 기반으로 구축되어 FCN의 특성을 공유함
  • 입력 이미지로부터 픽셀 단위의 출력 맵을 예측하는 데에 주력
    • 수축 경로(contracting path)에서 얻은 특징 맵들을 연결하여 밀집된 맵을 예측
    • FCN의 스킵 연결과 유사
  • 더 정밀한 분할 결과를 생성함
  • 수축 경로(contracting path)확장 경로(expanding path)로 구성된 대칭적인 아키텍처
    • 수축 경로에서는 이미지를 점점 더 작은 해상도의 특징 맵으로 압축하면서 중요한 정보(특징)를 추출하고, 확장 경로에서는 이 특징 맵들을 다시 큰 해상도로 확장하며 밀집된 예측 맵(dense map)을 생성
    • 수축 경로에서 생성된 특징 맵들을 확장 경로로 전달할 때, 중간중간의 특징 맵들을 직접 연결(concatenation)하는 방식이 사용 → FCN에서의 스킵 연결(skip connections)과 유사
      • 이를 통해 더 정밀한 이미지 분할 결과를 얻을 수 있고, U-Net은 특히 의료 영상 처리나 위성 이미지 처리와 같은 영역에서 성능이 좋다

  1. 수축 경로(contracting path)

    • 시작점에서 최저점까지 우하향
    • Conv Layers + Pooling: 먼저, 입력 이미지는 여러 개의 합성곱(Convolution) 층과 최대 풀링(Max Pooling) 층을 거쳐 점차적으로 해상도가 줄어들고, 특징이 추출
      • 이미지가 점점 작아지면서 더 많은 채널을 가지는 특징 맵들이 생성
    • 이 경로는 FCN의 다운샘플링(downsampling) 단계와 유사하며, U의 왼쪽 절반에 해당
  2. 최저점 (Bottleneck)

    • 수축 경로의 마지막 단계는 해상도가 가장 낮은 특징 맵을 생성하는 부분
      • 네트워크의 가장 깊은 레벨이며, U의 바닥에 해당
    • 여기서도 합성곱과 풀링이 적용
  3. 확장 경로(expanding path)

    • Upconv Layers: 확장 경로에서는 반대로 해상도가 다시 커지도록 업샘플링(Upsampling)을 수행
      • 업샘플링: 입력을 확장해서 더 높은 해상도의 출력으로 변환하는 과정으로, 풀링의 반대 역할
    • 이 경로는 U의 오른쪽 절반에 해당
  4. 스킵 연결 (Skip Connections)

    • 수축 경로에서 생성된 특징 맵들이 확장 경로의 대응되는 단계로 직접 연결(concatenate)된다
    • 스킵 연결은 정보를 잃지 않고 잘 보존할 수 있게 해어, 최종 출력에서 더 정확한 분할 결과를 얻을 수 있게 해줌
  5. 최종 출력 (Final Output)

    • 업샘플링된 특징 맵은 다시 합성곱 층을 통해 최종 분할 결과, 즉 각 픽셀이 어떤 클래스에 속하는지를 나타내는 밀집된 맵으로 변환



'Study - AI > Computer Vision' 카테고리의 다른 글

Computational Imaging  (0) 2025.01.16
Object Detection & R-CNN  (0) 2025.01.15
ViT & GAN  (0) 2025.01.14
CNN (Convolution Neural Network)  (0) 2025.01.13



ViT visualization

Self-attention layer visualization

  • Vision Transformer(ViT)에서 Self-Attention Layer Visualization은 모델이 이미지 데이터를 처리할 때 어떤 부분에 주목하고 있는지를 시각화하는 방법

  • ViT는 이미지를 패치(patch)로 나누어 입력으로 사용하고, 이를 통해 이미지의 전역적 특성을 학습하는데, Self-Attention 메커니즘은 이 과정에서 중요한 역할

    Self-Attention

    ViT에서는 이미지가 작은 패치들로 나누어지며, 각 패치는 입력 토큰으로 변환됨

    Self-Attention 메커니즘은 이 패치들이 서로 어떤 관계를 가지고 있는지를 학습한다

    1. 쿼리(Query), 키(Key), 값(Value) 벡터 생성: 각 패치에 대해 쿼리, 키, 값 벡터가 생성. 이는 패치 간의 연관성을 계산하는 데 사용
    2. 유사도 계산: 각 쿼리 벡터와 모든 키 벡터 간의 유사도를 계산 → 이 유사도는 두 패치가 얼마나 관련 있는지를 나타내며, 주로 내적(dot product)을 통해 계산
    3. 가중치 계산 및 값 벡터 가중합: 유사도를 기반으로 가중치를 계산하고, 각 패치에 대한 최종 출력을 얻기 위해 이 가중치를 값 벡터에 곱한 후 가중합을 한다.
      1. 이 과정에서 모델은 중요한 패치에 더 높은 가중치를 할당

주로 어텐션 맵(attention map)을 시각화하는 방식

  1. 어텐션 맵 생성
  • Self-Attention 메커니즘을 통해 계산된 가중치 행렬이 어텐션 맵의 기초
    • 이 행렬은 각 패치가 다른 패치와 얼마나 관련 있는지를 나타내며, 이를 통해 이미지 내 패치 간의 상호작용을 이해할 수 있음
    • 예를 들어, 특정 패치에 대해 다른 모든 패치와의 관계를 시각화할 수 있음. 이 관계는 이미지의 다른 부분이 특정 패치와 얼마나 연관되어 있는지를 보여준다!
  1. 어텐션 맵 해석
  • 어텐션 맵을 시각화하면, 모델이 이미지의 어떤 부분에 집중하고 있는지 알 수 있음.
    • 예를 들어, 사람이 있는 이미지에서 모델이 사람의 얼굴이나 몸에 더 높은 어텐션 값을 할당하는 것을 볼 수 있음 → 모델이 사람을 인식하기 위해 이 부분에 더 집중하고 있음을 나타낸다!



입력 토큰 vs CLS 토큰

1. 입력 토큰

  • 정의: 입력 토큰은 ViT 모델에 입력으로 사용되는 이미지 패치들이 변환된 벡터
  • 생성 과정: 이미지를 작은 패치들(예: 16x16 픽셀)로 나눈 후, 각 패치는 선형 변환(즉, 임베딩) 과정을 통해 고정된 크기의 벡터로 변환 → 이 벡터들이 ViT의 입력 토큰이 된다
  • 역할: 입력 토큰들은 ViT에서 서로 간의 관계를 학습하는 Self-Attention 메커니즘에 의해 처리됨.이 토큰들 간의 상호작용을 통해 모델은 이미지의 전역적 특징을 학습

2. CLS 토큰

  • 정의: CLS 토큰(Classification Token)은 ViT의 입력에 추가되는 토큰
    • 모델이 이미지 전체의 표현(representation)을 학습하고, 이를 기반으로 최종 클래스 예측을 수행하기 위해 사용
  • 생성 과정: ViT의 입력에는 패치로 나눈 이미지들로부터 생성된 입력 토큰들과 함께, 맨 앞에 CLS 토큰이 추가된다
    • CLS 토큰은 일반적으로 학습 가능한 임베딩 벡터로 초기화
    • 이미지의 패치와 무관하게 모델이 분류 작업을 위해 학습하는 임베딩 벡터로, 처음엔 빈 벡터 같은 걸로 설정되었다가 학습 과정에서 모델에 의해 조정되는 형태
  • 역할:
    • 전역 정보 집약: Self-Attention 레이어를 거치면서, CLS 토큰은 이미지 전체의 전역 정보를 집약하게 된다. Self-Attention 메커니즘은 모든 토큰 간의 관계를 학습하며, 특히 CLS 토큰은 다른 모든 입력 토큰들과 상호작용하여 이미지 전체를 대표하는 벡터로 변환됨
    • 분류 작업: ViT의 마지막 레이어에서는 이 CLS 토큰을 사용하여 이미지의 최종 클래스를 예측. CLS 토큰은 이미지의 중요한 정보를 모두 포함하고 있으므로, 이를 통해 모델이 최종 예측을 수행할 수 있음

특징 CLS 토큰 입력 토큰
역할 이미지 전체를 대표하는 벡터로 사용 이미지 패치의 개별 표현을 담당
위치 입력 시 맨 앞에 추가됨 이미지 패치마다 하나씩 존재
주요 사용 목적 최종 클래스 예측을 위한 전역 표현 학습 Self-Attention을 통해 이미지 패턴 학습
학습 방식 학습 가능한 임베딩 벡터로 초기화됨 각 패치를 임베딩한 벡터로 구성

CLS 토큰은 ViT에서 이미지 전체의 정보를 집약하여 최종 분류를 수행

입력 토큰들은 이미지의 각 패치를 나타내는 반면, CLS 토큰은 이 모든 정보를 결합하여 최종적인 분류 결과를 얻기 위한 역할

두 토큰은 ViT의 Self-Attention 메커니즘 내에서 상호작용하며, 모델이 이미지의 중요한 특징을 효과적으로 학습하도록 돕는다

Self-Attention은 일반적으로 Multi-Head Attention으로 확장된다

Multi-Head Attention은 여러 개의 독립적인 Self-Attention 헤드를 사용하여 입력 데이터의 다양한 부분을 동시에 처리하고, 각 헤드는 서로 다른 표현 공간에서 Self-Attention을 수행하여 다양한 정보를 추출

  • 여러 개의 헤드는 이미지의 다양한 부분에 서로 다른 관심을 가질 수 있음
    • 하나의 헤드는 이미지의 배경에 집중하고, 다른 헤드는 객체에 집중…
  • 시각화에서 각 헤드가 다른 위치에 집중하는 모습을 색상으로 구분할 수 있음

→ Multi-Head Attention은 다양한 관점을 동시에 고려해서 다양한 부분에 집중해 서로 다른 의미적 지역을 학습할 수 있게 함





Conclusion

GAN(Generative Adversarial Network) dissection

GAN 모델이 학습하는 과정에서 생성되는 해석 가능한 표현(interpretable representation)을 분석하고 활용하는 방법

→ GAN이 학습하는 과정에서 어떻게 해석 가능한 정보를 발견하고 활용하는지!


1. 자발적으로 형성되는 해석 가능한 표현:

  • 학습 과정에서의 표현: GAN의 학습 과정에서, 생성기(generator)는 다양한 특성(예: 얼굴의 표정, 배경, 조명 등)을 조절하는 다양한 잠재 공간(latent space) 표현을 학습
    • 주로 고차원 잠재 공간에서 자발적으로 형성되며, 이는 모델이 다양한 데이터의 특성을 캡처할 수 있도록 한다
  • 해석 가능한 표현: 학습 과정 중에 생성기는 잠재 벡터(latent vector)의 특정 방향이 이미지의 특정 속성(예: 웃는 얼굴, 안경 착용 등)을 나타내는 것을 발견할 수 있음
    • 해석 가능한(interpretative) 표현으로, 생성된 이미지의 특정 특성을 조절하는 데 사용될 수 있음

2. 분석 및 조작 응용:

  • 분석적 활용: 해석 가능한 표현은 GAN의 내부 작동 방식을 이해하는 데 유용하다
    • ex) 어떤 잠재 벡터의 방향이 이미지에서 특정 객체의 크기나 색상 변화를 유도하는지를 분석 가능 → GAN의 동작을 분석하고, 모델이 학습한 표현이 실제로 무엇을 의미하는지를 보여줌
  • 조작적 활용: 이러한 해석 가능한 표현은 이미지 조작 및 생성 작업에서 유용하게 사용
    • ex) 얼굴 이미지를 생성하는 GAN에서 특정 방향의 잠재 벡터를 조정하면, 생성된 얼굴의 나이, 감정, 헤어스타일 등을 변경 가능 → 사용자는 생성된 이미지의 속성을 세밀하게 조정

사용 예시

  • 이미지 조작: StyleGAN과 같은 GAN 모델에서는 잠재 공간의 특정 방향이 얼굴의 표정, 나이, 헤어스타일 등을 조절하는 데 사용될 수 있음.
  • 데이터 분석: GAN을 통해 생성된 이미지를 분석하여, 잠재 벡터가 어떻게 이미지의 속성을 조절하는지를 알 수 있다. 다양한 잠재 벡터 값을 실험하여 어떤 값이 특정 특성(예: 행복한 표정, 특정 배경 색상 등)에 영향을 미치는지를 확인



'Study - AI > Computer Vision' 카테고리의 다른 글

Computational Imaging  (0) 2025.01.16
Object Detection & R-CNN  (0) 2025.01.15
Semantic Segmentation  (0) 2025.01.14
CNN (Convolution Neural Network)  (0) 2025.01.13



CNN (Convolution Neural Network)

CNN은 컨볼루션을 이용한 인공 신경망 모델

다차원 배열 데이터 처리에 특화된 모델로 데이터의 공간적 정보를 유지하면서 배열 데이터 정보를 다음 레이어로 보낼 수 있어 이미지 (3차원 배열) 분야에서 적극 활용

 

Convolutional layer

필터는 이미지를 통과하여 한 번에 몇 Pixel(NxN)을 스캔하고 각 형상이 속하는 클래스를 예측하는 형상 맵을 만든다

 

Pooling layer (downsampling)

가장 중요한 정보를 유지하는 동시에, 각 피쳐의 정보량을 줄임 (보통 여러 개의 회전이 있다?)

 

Fully Connected layer 완전 연결 계층

한 층(layer)의 모든 뉴런이 그 다음 층(layer)의 모든 뉴런과 연결된 상태를 의미

1차원 배열의 형태로 평탄화된 행렬을 통해 이미지를 분류하는데 사용되는 계층

Fully connected layer을 Dense layer이라고도 한다. 위의 코드에서는 Flatten을 통해 흑백 이미지, 2자원 벡터의 행렬을 1자원 배열로 평탄화 하고, ReIu함수로 뉴런을 활성화하고 softmax함수로 이미지를 분류하는 것까지가 FuIly connected layer라고 할 수 있다.

 

Fully connected input layer (평탄화)

이전 레이어의 출력을 평탄화하여 다음 스테이지의 입력이 될 수 있는 단일 벡터로 변환

 

The first fully connected layer

이미지 분석의 입력을 취하여 정확한 라벨을 예측하기 위해 가중치를 적용

 

Fully connected output layer

각 라벨에 대한 최종 확률을 제공합

 

AlexNet

Conv-Pool-LRN-Conv-Pool-LRN-Conv-Conv-Conv-Pool-FC-FC-FC




 

CNN architectures for image classification

image classification을 위한 CNN architecture 들에 대한 설명

(Stride 1의 K×K conv. filter와 P×P 의 pooling layer가 있다고 가정)

  • VGGNet은 AlexNet에 존재하던 large conv. filter를 다수의 33 convolutional layer로 변경함으로써, receptive field size를 유지할 수 있었다.
    • 주로 작은 3*3 conv 필터를 여러 층에 걸쳐 사용해서 receptive field를 확장함
    • 작은 필터를 사용하여 더 깊은 네트워크를 구성하는 것이 큰 필터를 사용하는 것보다 성능이 뛰어나다?
  • VGGNet은 AlexNet과 달리 LRN (Local Reponse Normalization)을 사용하지 않는다
    • 대신 배치 정규화 같은 거 쓴다
  • AlexNet 대비 더 깊은 레이어층을 구성하여 성능 향상에 도움을 줄 수 있다
    • VGGNet, ResNet 등의 네트워크는 AlexNet보다 더 깊은 레이어를 통해 성능을 향상시킴
  • AlexNet은 ReLU activation function과 dropout regularization을 사용
    • AlexNet은 ReLU 활성화 함수와 드롭아웃을 사용하여 학습 효율을 높이고 과적합을 방지
  • Pooling layer 내의 한 pixel의 receptive field는 (P+K−1)×(P+K−1)으로 계산할 수 있다?
    • Pooling 레이어의 한 픽셀의 receptive field는 주로 그 픽셀의 위치와 주변 픽셀에 영향을 받긴 하지만 Pooling layer 자체가 receptive field를 증가시키는 역할을 하지는 않음
    • Conv 레이어에 의해 receptive field가 확장되며, Pooling은 그동안 쌓인 receptive field를 요약하는 역할 → 정확한 receptive field 크기를 계산하려면 Conv 레이어의 영향을 고려해야 함

 

Receptive Field의 정의

Receptive field는 신경망에서 특정 뉴런이 입력 이미지의 어느 부분을 보는지 나타내는 개념

네트워크의 출력에 있는 특정 뉴런이 입력 이미지에서 참조하는 영역의 크기

→ CNN에서 한 픽셀의 receptive field는 해당 픽셀이 입력 이미지의 어느 영역에 대응하는지를 의미

  • Pooling layer의 각 픽셀의 receptive field는 단순히 해당 레이어의 파라미터만으로 계산되지 않으며, 이전 convolutional layers와 pooling layers의 연속적인 효과에 따라 결정

 

Convolution Layer와 Pooling Layer의 역할

  • Convolution Layer: 각 레이어가 입력의 작은 영역(필터 크기)에 대해 계산을 수행하며, 여러 레이어를 거치면서 receptive field가 점점 커짐 → 각 픽셀이 점점 더 넓은 입력 영역을 보게 된다
  • Pooling Layer: 일반적으로 Max Pooling 또는 Average Pooling을 사용하여 인접한 픽셀을 하나의 값으로 요약함.
    • pooling 레이어는 입력 특성을 압축하고, 네트워크의 불변성을 강화하는 역할
    • Pooling 자체는 receptive field를 크게 증가시키지 않으며, 주로 크기를 줄인다

 

Receptive Field 계산 방법

한 픽셀의 receptive field 크기는 Convolution 레이어와 Pooling 레이어의 크기, stride, padding 등 여러 요소에 따라 달라진다

  • Convolution 레이어: receptive field를 K×K 필터를 적용하면 receptive field가 넓어짐
  • Pooling 레이어: Pooling 레이어는 receptive field를 더욱 넓히는 데 기여하지는 않지만 이미지의 크기를 줄이면서 전체적으로 네트워크가 인지하는 영역을 더 넓게 만듦
  • Pooling 레이어에서 픽셀의 receptive field는 그 전 레이어에서 결정된 receptive field와 연관이 있으며, 단순히 (P+K−1)×(P+K−1)로 계산되지는 않음
    • 정확히 계산하려면 Pooling 레이어, Conv 레이어의 영향을 모두 고려해야 함
    • Pooling은 receptive field를 줄이지는 않지만, 픽셀의 수를 줄이면서 각 픽셀에 대한 receptive field는 이전 레이어의 receptive field에 기반하여 증가하게 된다

 

Convolutional Layer의 Receptive Field

Convolutional Filter의 영향:

  • K×K 크기의 convolutional filter가 stride 1로 작동하면, 입력 이미지의 각 위치에 대해 K×K 크기의 영역을 탐색

→ Convolutional layer의 각 유닛은 입력 이미지에서 K×K 영역을 본다

 

Pooling Layer의 Receptive Field

Pooling Layer의 영향:

  • P×P 크기의 pooling layer는 입력으로 주어진 영역을 P×P 블록으로 나누고, 각 블록에 대해 하나의 값을 출력 (예: Max Pooling의 경우 최대값).

→ pooling layer의 각 유닛은 그 이전 단계(Convolutional Layer)의 P×P 영역을 참

 

결합된 Receptive Field

  1. 결합된 Receptive Field 계산:
    • Pooling layer의 각 유닛이 참조하는 P×P 영역은 사실상 그 이전 단계의 receptive field
    • Convolutional Layer와 Pooling Layer의 receptive field를 결합해서 계산해 보면, Pooling Layer의 각 유닛이 참조하는 실제 입력 이미지의 영역은 P×P 블록의 각 픽셀이 참조하는 영역의 합이라고 볼 수 있다?
  2. (P+K−1)×(P+K−1)의 의미:
    • 여기서 말하는 (P+K−1)×(P+K−1)은 Pooling layer에서 각 유닛이 입력 이미지에서 참조하는 전체 영역의 크기를 나타내려는 것
      • P는 pooling layer가 보는 영역의 크기
      • K−1은 각 P×P 영역에서 convolutional filter가 적용될 때 추가로 커버되는 영역
    • 이 공식은 Convolutional Layer와 Pooling Layer의 조합으로 인해 Pooling Layer의 각 유닛이 입력 이미지에서 참조하는 영역의 크기를 표현하려는 것

(P+K−1)×(P+K−1) 공식은 Pooling Layer에서 각 유닛이 입력 이미지에서 참조하는 영역의 크기를 나타내며, Convolutional Layer와 Pooling Layer의 조합으로 인해 이와 같은 receptive field가 결정

이 계산은 입력 이미지의 특정 영역에 대해 Pooling Layer의 각 유닛이 얼마나 넓은 영역을 보고 있는지를 보여준다?

 

예시

  • K=3, P=2
    • Convolutional Layer의 각 유닛은 3×3 영역을 참조
    • Pooling Layer에서 2×2 블록을 적용한다고 할 때, 이 블록은 Convolutional Layer의 2×2 유닛을 참조
    • 그러므로, Pooling Layer에서 2×2 블록의 각 유닛이 실제 입력 이미지에서 커버하는 영역은 (2+3−1)×(2+3−1)=4×4
    •  

 

그럼 Pooling layer 내의 한 pixel의 receptive field는 (P+K−1)×(P+K−1)으로 계산할 수 있는가?

  • P+K−1이라는 식은 특정 조건 하에서만 사용될 수 있으며, 일반적인 경우에는 적용되지 않는다
  • convolutional layer의 K×K 필터와 P×P pooling layer가 단일 계층으로 결합되었을 때 적용될 수 있고, 일반적인 경우에는 적용되지 않음
    • 문제의 보기처럼 stride가 1이고 단일 convolution 레이어를 가지면서 pooling 레이어도 stride가 1일 때 → 단 풀링 레이어가 컨볼루션 레이어 바로 뒤에 있어야 함
  • 네트워크의 전체적인 구조(여러 레이어의 조합)를 고려해야 실제 receptive field를 정확히 계산할 수 있다!@

→ 일반적인 CNN 구조에서는 그 공식이 적용되지 않으며, 여러 레이어를 고려한 복잡한 계산이 필요함!





 

Analysis of model behaviors

Embedding feature analysis

모델의 어떤 레이어에서 추출하느냐에 따라 로우 레벨부터 하이 레벨까지의 특징을 모두 추출해서 분석 가능

t-SNE (t-distributed stochastic neighbor embedding)

맥시멀리 액티베이팅 패치

  1. 분석하고자 하는 특정 채널 선택
  2. 준비된 이미지 샘플 DB를 이용해 액티베이션 맵을 추출
  3. 맥스 값에 해당하는 영역의 패치를 뜯어냄 → 이 패치는 어떤 영역의 피쳐를 가지고 가는가?

I = 이미지

argmax = 최적화되는 대상

f(I) = 특정 클래스에 대한 스코어 (ex. 강아지라면 강아지에 대한 소프트맥스 값 등)

f(I)라 되어 있는 이 입력만 최적화?

Gradient ascent

  1. 초기 입력 이미지를 통해 특정 클래스 스코어 추출
  2. 로스 함수를 맥시마이즈 하는 방향으로 그래디언트를 발생시켜 역전파 → 이때 모델은 fix 하고 나서 수정하지 않음 → 인풋 이미지에 대해서만 최적화 하도록 역전파
  3. 입력 이미지 업데이트
  4. 1~3을 수렴할 때까지 반복(스코어를 맥시마이즈하는 방향으로)

특정 채널을 최대화 하는 방식으로도 할 수 있다?



CAM

Class Activation Mapping

CNN(Convolutional Neural Network) 모델이 이미지 분류를 할 때 특정 클래스에 대해 모델이 주목한 이미지의 영역을 시각화하는 방법

맨 마지막 레이어를 풀리 커넥티드(FC) 레이어 대신 Global average pooling(GAP) layer를 삽입

→ 정확히는 풀리 커넥티드 레이어가 GAP 레이어와 결합된 형태로 존재한다.

 

GAP 글로벌 평균 풀링 레이어

1. 글로벌 평균 풀링(GAP) 레이어

구조 및 동작 원리

  • GAP 레이어는 각 특징 맵(feature map)의 전체 공간에 대해 평균을 계산하여 단 하나의 값으로 축소한다
  • 예를 들어, 입력으로 7x7 크기의 특징 맵이 있다면, GAP 레이어는 이 7x7 크기의 모든 값을 평균 내어 하나의 값을 출력함
  • 이 과정은 각 특징 맵을 하나의 숫자로 축소하므로, 마지막 합성곱 층의 출력이 512개의 7x7 크기 특징 맵이라면 GAP 레이어는 512개의 숫자를 출력하게 된다.

장점

  • 모델 파라미터 감소: GAP 레이어는 단순히 평균을 내는 작업을 수행하므로, 학습해야 할 추가적인 파라미터가 없음. 이는 모델의 복잡성을 줄이고 과적합(overfitting)을 방지하는 데 도움을 준다
  • 위치 정보 유지: GAP 레이어는 전체 특징 맵의 정보(공간 정보 포함)를 하나의 값으로 요약하지만, 특징 맵의 전반적인 내용은 반영되므로 특정 클래스와 연관된 중요한 패턴을 잘 보존할 수 있음

 

2. 풀리 커넥티드(FC) 레이어

구조 및 동작 원리

  • FC 레이어는 각 뉴런이 이전 층의 모든 뉴런과 연결된 형태로, 입력 데이터의 모든 요소에 가중치를 적용하여 출력을 생성
  • 예를 들어, 7x7 크기의 특징 맵을 FC 레이어에 입력하려면 먼저 이를 평탄화(flatten)해야 함. 그러면 7x7 크기의 특징 맵이 49개의 값으로 펼쳐지며, 이 값들은 FC 레이어의 입력으로 사용
  • FC 레이어는 학습을 통해 각 입력 값에 대한 최적의 가중치를 찾고, 이를 통해 클래스 예측을 수행

장점

  • 복잡한 결정 경계 학습: FC 레이어는 모든 입력과 출력이 연결되어 있기 때문에, 매우 복잡한 비선형 관계를 학습할 수 있음.. 이는 모델이 매우 세밀한 분류 작업을 수행할 수 있게 해준다

단점

  • 모델 파라미터 증가: FC 레이어는 많은 수의 가중치를 학습해야 하므로, 네트워크의 파라미터 수가 크게 증가함. 이는 모델의 복잡성을 높이고 과적합의 위험을 증가시킬 수 있음
  • 공간 정보 손실: FC 레이어는 입력을 평탄화하여 사용하기 때문에, 이미지의 공간적 구조나 위치 정보를 잃게 됨. 이는 이미지 분석에서는 중요한 단점이 될 수 있음

 

기본 CNN 구조

  • 일반적인 CNN 모델에서는 합성곱 층(convolutional layers) 뒤에 풀리 커넥티드 레이어(fully connected layer)가 연결. 이 풀리 커넥티드 레이어는 모든 입력 뉴런과 출력 뉴런이 연결된 구조로, 마지막 합성곱 층의 출력 특징 맵(feature map)을 한 줄로 펼친(flatten) 후 이들을 클래스별로 분류하는 역할을 한다

CAM의 구조적 특징

  • CAM에서는 마지막 풀리 커넥티드 레이어 대신 글로벌 평균 풀링(GAP) 레이어를 사용. GAP 레이어는 각 특징 맵의 공간 정보를 평균화하여 하나의 값으로 축소
  • 이렇게 만들어진 각 특징 맵의 평균값들은 특정 클래스의 예측에 대한 입력으로 사용된다. 이 과정에서 풀리 커넥티드 레이어가 완전히 제거되는 것은 아니며, 다만, GAP 레이어의 출력이 각 클래스에 해당하는 가중치와 곱해져 최종 클래스 점수를 계산

가중치의 역할

  • CAM에서의 클래스 점수는 GAP 레이어에서 출력된 값(평균값)에 클래스별로 학습된 가중치를 곱해 계산. 이 가중치는 기존의 풀리 커넥티드 레이어에 있던 가중치와 유사한 역할을 하며, 각 특징 맵이 특정 클래스에 얼마나 중요한지를 반영

 

왜 GAP 레이어를 사용하는가? 풀리 커넥티드 레이어와 비교했을 때 장점

1. 모델의 해석 가능성 향상

  • 직접적인 클래스 활성화 맵 생성: GAP 레이어는 각 특징 맵의 평균을 계산하여 직접적으로 클래스 활성화 맵을 생성하는 데 사용된다. 이를 통해 모델이 예측을 내릴 때 어떤 이미지 영역에 주목했는지를 명확하게 시각화할 수 있음. 모델의 예측 과정이 더욱 투명해지고, 사용자가 모델이 왜 특정 결정을 내렸는지 이해하기가 쉬워진다

2. 모델 복잡도 감소

  • 파라미터 수 감소: GAP 레이어는 입력을 단순히 평균 내는 작업을 수행하기 때문에 학습해야 할 파라미터가 없음. 반면에 FC 레이어는 많은 가중치를 학습해야 하므로 모델의 복잡성이 증가하게 된다. GAP 레이어를 사용하면 모델의 전체 파라미터 수가 줄어들어 학습 과정이 간소화되고, 과적합(overfitting) 위험이 줄어든다

3. 공간 정보의 유지

  • 위치 정보 보존: GAP 레이어는 각 특징 맵의 평균을 내어 출력하기 때문에, 원래의 특징 맵에 담긴 공간적 정보를 어느 정도 유지할 수 있음. 반면, FC 레이어는 입력을 평탄화하여 공간적 구조를 무시하게 된다. GAP 레이어를 사용하면 이미지의 패턴이나 객체 위치에 대한 정보가 보존되어, 모델이 이미지의 중요한 부분을 잘 활용할 수 있음

4. 과적합 위험 감소

  • 더 적은 파라미터로 학습: GAP 레이어는 FC 레이어보다 학습해야 할 파라미터가 훨씬 적기 때문에, 훈련 데이터에 과도하게 맞추는 과적합의 위험이 낮아진다. 이는 특히 훈련 데이터가 제한적일 때 유리하며, 모델의 일반화 성능을 향상시킬 수 있음

5. 모델의 간소화

  • 간단하고 효과적인 구조: GAP 레이어는 구조가 단순하기 때문에 구현이 쉽고, 모델을 간소화할 수 있음. 이는 모델을 더 쉽게 유지보수하고, 다양한 하드웨어에서 실행하기 쉽게 만들어 준다
  1. 특징 맵 추출: 이미지가 CNN을 통과하면서 마지막 합성곱 층에서 다양한 특징 맵(feature map)들이 생성
  2. 클래스별 가중치: 각 클래스에 대해 학습된 완전 연결층(fully connected layer)의 가중치가 있고, 이 가중치는 각 특징 맵이 해당 클래스 예측에 얼마나 중요한지를 나타냄
  3. 특징 맵 가중합: 특정 클래스에 대해 각 특징 맵에 가중치를 곱한 후, 이들의 가중합을 계산하여 클래스 활성화 맵을 만든다. 이 맵은 모델이 해당 클래스에 대해 주목한 이미지의 영역을 나타낸다
  4. 시각화: 최종적으로, 이 클래스 활성화 맵을 원본 이미지에 중첩시켜 시각화. 이를 통해 어떤 이미지 영역이 해당 클래스의 예측에 중요한 역할을 했는지 확인할 수 있음
  • 단점: 네트워크 아키텍처의 변형과 재학습이 필요하다
    • CAM은 특정 구조를 요구하기 때문에 글로벌 평균 풀링 층이 있는 모델에서만 적용할 수 있음. 이 때문에 기존의 CNN 구조를 수정해야 하거나, 제한된 모델에서만 CAM을 사용할 수 있다는 단점

 

Grad-CAM

Gradient-weighted Class Activation Mapping

CNN(Convolutional Neural Network) 모델이 이미지에 대해 내린 예측의 근거를 시각화하는 방법

Grad-CAM은 이미지의 특정 부분이 모델의 예측에 얼마나 기여했는지를 확인하기 위해 사용

  • Grad-CAM의 주요 아이디어는 모델의 마지막 합성곱(convolutional) 층을 활용하는 것.
    • 합성곱 층은 이미지에서 위치 정보와 패턴을 보존하면서 특징을 추출하는 역할을 하므로, 이 층의 활성화 맵(activation map)을 통해 모델이 이미지의 어느 부분을 주목했는지를 알 수 있음
  1. 특정 클래스에 대한 예측 점수: 특정 클래스(예: '고양이'가 존재하는지 여부)에 대한 모델의 예측 점수를 계산
  2. 이 클래스 점수에 대한 입력 이미지의 그래디언트 계산: 이 클래스에 대한 예측 점수를 기준으로 입력 이미지의 각 픽셀에 대한 그래디언트를 계산. 이 그래디언트는 모델이 이 클래스의 예측에 얼마나 민감한지를 표현
  3. 특정 합성곱 층의 출력 활성화 맵: 그래디언트를 이용해 마지막 합성곱 층의 출력 활성화 맵을 가중합(weighted sum)한다
    1. 이를 통해 모델이 예측 시 주목한 이미지의 위치 정보를 얻을 수 있음
  4. 결과 시각화: 최종적으로 얻은 맵을 원본 이미지에 중첩하여 시각화
    1. 이 시각화 결과를 통해 모델이 예측에 있어 이미지의 어떤 부분을 주로 사용했는지 알 수 있음

Grad-CAM에서의 ReLU

알고리즘 마지막 단계에서 ReLU 함수를 적용함

  • 클래스에 대한 중요도를 나타내는 가중 합을 계산하는 것이 목적인데 ReLU 활성화 함수를 적용하면 음수 값을 제거하고 양수 값만 남길 수 있기 때문에, 모델이 특정 클래스에 긍정적으로 기여하는 특징들만 강조할 수 있음

CAM의 단점을 보완하기 위해 Grad-CAM이 개발

Grad-CAM은 모델 구조에 대한 제약이 적으며, 마지막 합성곱 층에서 활성화 맵과 클래스에 대한 그라디언트를 결합하여 보다 유연하게 모델의 예측 근거를 시각화할 수 있음

'Study - AI > Computer Vision' 카테고리의 다른 글

Computational Imaging  (0) 2025.01.16
Object Detection & R-CNN  (0) 2025.01.15
Semantic Segmentation  (0) 2025.01.14
ViT & GAN  (0) 2025.01.14