[Week 8]

chelseey·2025년 4월 28일

ResNet

신경망의 깊이를 증가시키면서도 성능 저하를 방지하기 위해
Residual(잔차) 개념을 도입한 것

Residual이 필요한 이유

신경망의 깊이가 너무 깊은 모델은 오히려 성능이 나빠지는 현상이 발생할 수 있음

깊이 56층인 모델이 오히려 20층보다 성능이 더 나쁨

ResNet의 해결책: Residual Block + Shortcut

블록(block)

여러 계층(layer)을 묶어 놓은 하나의 단위(unit)
ResNet : 블록들을 여러 개 반복해서 쌓은 것

계층이 늘어날수록 각 합성곱 층(conv layer)의 필터 수(filter channels)도 늘어나고, 그 결과 파라미터 수가 기하급수적으로 증가

bottleneck block

  • 기본 블록 (ResNet-34)
    3×3 합성곱 두 겹으로 이루어져 있고, 채널 수가 그대로 유지됨.
    블록 하나당 파라미터가 많음 → 깊어질수록 부담이 커짐.

  • 병목 블록 (ResNet-50)
    1×1 합성곱으로 먼저 채널 수를 줄여(down-projection)
    핵심인 3×3 합성곱을 가볍게 실행한 뒤
    다시 1×1 합성곱으로 원래 채널 수를 복원(up-projection)
    → 블록당 파라미터가 크게 줄어들음

Identity mapping (shortcut, skip connection)

입력 x가 어떤 함수를 통과하더라도 다시 x라는 형태로 출력되도록 함 (⊕)
블록 내부 합성곱을 통과한 F(x)와 x를 합산하여 H(x)=F(x)+xH(x)=F(x)+x를 만듦

다운샘플(downsample)

feature map 크기를 줄이기 위한 것 (≈풀링)

블록 중간에 채널 수나 공간 해상도(shape)가 바뀌면 (ex. 64채널 → 128채널)
입력의 형태와 블록 출력의 형태이 달라져
아이덴티티 매핑(identity mapping) : x + F(x)를 할 수 없음
→ 다운샘플이 필요

프로젝션 숏컷 (합성곱 블록)

입력 텐서 x가 들어오면
메인 경로(Main path) 와
숏컷 경로(Shortcut path) 로 동시에 분기됨

  • 숏컷 경로 (프로젝션)
    입력 x가 바로 넘어오는 일반 아이덴티티 매핑과 달리,
    1×1 conv + BN 을 적용해서 채널 수를 맞추고
    메인 경로 출력과 덧셈이 가능하도록 동일한 형태로 변환

객체 인식을 위한 신경망

객체 인식

객체 인식 = 여러 객체에 대한 분류 + 각 객체 위치 검출

  • 분류(Classification): 이미지 내에 어떤 객체들이 있는지 판별

  • 위치 검출(Localization): 해당 객체들이 이미지에서 어디에 있는지
    바운딩 박스(bounding box) 형태로 표시

1단계 vs 2단계 객체 인식

R-CNN

과거엔 슬라이딩 윈도우가 널리 쓰였으나, 계산 비용 때문에
선택적 탐색을 통한 region proposal이 표준이 됨

R-CNN : CNN + 후보 영역 알고리즘

R-CNN 파이프라인

  1. 이미지 입력
    전체 이미지를 네트워크에 넣는 대신,

  2. 후보 영역(region proposals) 생성
    선택적 탐색 알고리즘으로 약 2,000개 영역을 뽑아냄

  3. 크롭 & 워핑(cropping & warping)
    각 후보 영역을 잘라내어 (227×227) 크기로 리사이즈

  4. CNN 특성(feature) 추출
    각 워핑된 패치에 CNN(ex. AlexNet) 을 적용하여 고차원 특성 벡터 추출

  5. 영역별 분류(region classification)
    추출된 특성 벡터에 SVM 등 전통적 분류기를 적용해 “고양이? 사람? 자동차?” 등 레이블 예측

  6. 결과 통합
    각 영역마다 확신도가 높은 결과를 모아 최종 바운딩 박스와 클래스 결정

선택적 탐색(selective search) 과정

1단계: 초기 영역 생성 (sub-segmentation)

각각의 객체가 영역 한개에 할당될 수 있도록 많은 초기 영역을 생성.
입력된 이미지를 영역 여러개로 분할

2단계: 작은 영역들의 통합 (region merging)

1단계에서 나눈 영역들을 비슷한 영역으로 통합

  • 유사도 측정: 색상, 질감 등 기준으로 이웃 영역 간 유사도를 계산
  • 탐욕적 병합(greedy merging): 가장 유사도가 높은 영역 쌍을 계속 합침
  • 반복: 원하는 크기·스케일까지 병합을 계속 수행

3단계: 후보 영역(bounding box) 생성

2단계에서 통합된 이미지들을 기반으로 후보 영역(바운딩 박스)를 추출

공간 피라미드 풀링 (Space Pyramid Pooling, SPP)

Fast R-CNN

RoI(Region of Interest) 풀링을 도입해,
이전의 SPP 기반 방식보다 효율적으로 동작

  • 계산 효율성: R-CNN처럼 후보마다 전체 CNN을 다시 돌리지 않고,
    한 번의 conv(feature map) 후에 RoI 풀링만 수행

  • 모델 단순화: SPP의 복잡한 concat 과정을 없애고,
    하나의 RoI 풀링 레이어로 대체

  • 실용성: 여전히 고정 크기의 특징을 유지하면서,
    다양한 크기·비율의 후보 박스를 처리 가능

RoI 풀링(RoI Pooling)

크기가 다른 특성 맵의 영역마다 스트라이드를 다르게
최대 풀링을 적용하여 결괏값 크기를 동일하게 맞추는 방법

Faster R-CNN

Region Proposal Network(RPN)을 CNN 합성곱층 바로 뒤에 붙여,
후보 영역 생성(region proposal)을 외부 CPU가 아닌
네트워크 내부(GPU)에서 동시에 처리하도록 만든 방법

RPN (Region Proposal Network)

특징 맵을 입력받아, sliding-window 방식으로 작은 윈도우를 훑으며
각 위치마다 여러 개(anchor) 크기·비율의 후보 박스에 대한
객체/배경 분류용 스코어(objectness score)와
바운딩 박스 회귀용 오프셋 (regression offsets)을 동시에 예측

  • 객체/배경 분류용 스코어
    각 앵커마다 “객체가 있을 확률 vs 배경일 확률” 이진 분류
  • 바운딩 박스 회귀용 오프셋
    각 앵커를 “실제 객체 경계”에 맞춰 미세 조정하기 위한 출력

앵커(anchor)

이 위치에서 이 크기·비율의 박스를 제안하라는 참고(reference) 박스
슬라이딩 윈도우 하나에 대해 k개의 앵커를 설정

이미지 분할을 위한 신경망

이미지 분할 : 신경망을 훈련시켜 이미지를 픽셀 단위로 분할하는 것
→ 이미지에 포함된 객체 추출

완전 합성곱 네트워크

완전연결층의 한계 : 이미지 크기에 제약이 있고, 공간적 위치 정보가 사라짐

→ 완전연결층을 1×1 합성곱 레이어로 대체
: 공간 정보 보존 + 입력 크기 자유

합성곱 & 역합성곱 네트워크

합성곱 네트워크의 한계

  • CNN은 여러 단계의 합성곱 + 풀링을 거치며
    해상도(H×W)가 점점 낮아짐

  • 이후 업샘플링(Upsampling)으로 원래 크기를 복원하더라도
    세부 정보가 사라져 버림

합성곱 & 역합성곱 네트워크 구조

일반 CNN(합성곱 네트워크)
: 입력→256×256→128×128→64×64→… 해상도가 반절로 떨어짐

오른쪽: 역합성곱 네트워크
: 합성곱 결과를 역방향(upsampling)으로 되돌리며
Unpooling 또는 Deconv 층을 거쳐 원본 해상도로 복원

역합성곱(deconvolution) 동작 원리

  • 제로 패딩(Zero–padding)
    입력(feature map) 각 픽셀 주위에 0을 끼워 넣어
    해상도를 한 단계 키울 grid를 만듦

  • 합성곱 연산 수행
    grid 위에 필터(커널)를 적용하여,
    패딩된 영역까지 포함한 출력을 계산

→ 원본보다 해상도가 더 커진 출력(feature map) 생성

U-Net

sliding window 기반 패치 처리의 비효율과
“컨텍스트(큰 영역 이해)” vs “로컬라이제이션(정확한 위치 파악)”의 tradeoff를 극복

슬라이딩 윈도우 방식의 문제

  • 기존 슬라이딩 윈도우
    : 앞에서 처리한 영역을 뒤 패치에서도 다시 반복 검증 → 속도 저하

  • U-Net
    : 이미 처리된 위치는 건너뛰고(skip) 다음 필요한 패치만 인식
    → 슬라이딩 윈도우보다 훨씬 속도가 빠름

컨텍스트 vs. 로컬라이제이션 트레이드오프

컨텍스트(넓은 시야)는 커야 이미지 전체 맥락을 이해하지만
너무 큰 범위는 세부 위치를 놓치고,
너무 작은 패치는 맥락이 부족하며 반복 연산이 많아 느림

지역화 (localization)

이미지 안에 객체 위치 정보를 출력해 주는 것

U-Net의 전체 구조 : 수축 경로, 확장 경로

입력

크기 256×256×1(흑백 또는 단일 채널) 영상

수축 경로 (인코더)

컨텍스트(넓은 시야) 학습

다음을 반복 :

  • 3×3 Conv + ReLU ×2
  • Max Pooling(2×2) 으로 해상도 절반(가로·세로 ↓), 채널은 2배
  • Dropout(0.5) 일부 블록에 적용

확장 경로 (디코더)

로컬라이제이션(정밀한 경계) 복원

바닥 단계(16×16, 1024 채널)에서 시작해,

  • Up-Conv(2×2) 으로 해상도 2배(↑), 채널 ↓ 절반
  • 스킵 연결로 수축 경로의 대응 레이어 출력을 채널 축으로 concat
  • 3×3 Conv + ReLU ×2

PSPNet

완전연결층의 한계를 극복하기 위해 피라미드 풀링 모듈을 추가

훈련 과정

  • 해당 그리드 크기(1X1, 2x2, 3x3, 6x6)로 max pooling
  • 1×1 합성곱으로 채널 수를 Cin/4C_{in}/4 정도로 줄임
  • Bilinear interpolation으로 원본 H×WH×W 크기로 업샘플링

양선형 보간법

보간(interpolation) : 디지털 영상의 빈 픽셀(표본화되지 않은 위치)에
값을 채워 넣어, 부드러운 영상을 만드는 기법

선형 보간(linear interpolation): 1차원 축(한 방향)에 대해서만
두 점 사이를 직선으로 보간

양선형 보간(bilinear interpolation): 2차원 영역(사각형) 내에서,
X축 방향 보간 → 그 결과에 대해 Y축 방향 보간을 연속 수행

DeepLabv3/DeepLabv3+

완전연결층의 단점을 보완하기 위해 Atrous 합성곱을 사용하는 네트워크

인코더–디코더 구조

인코더(Encoder)

  • 표준 CNN 백본에서 마지막 몇 개의 풀링(stride) 레이어를 제거해
    (feature map 해상도 유지)
  • ASPP(Atrous Spatial Pyramid Pooling) 모듈을 적용
  • 이들 피처를 다시 concatenate → 채널을 줄이는 1×1 conv

디코더(Decoder)

  • 인코더 출력과 초반부(백본의 낮은 레벨) feature map을
  • 4× bilinear upsampling 후 연결(concat)
  • 이어서 3×3 conv 몇 겹 → 최종 4× upsampling → 픽셀 단위 분할 결과

Atrous 합성곱

필터 커널 사이에 구멍을 띄워 놓고 연산하는 방식

dilation rate r 값에 따라 구멍의 크기가 바뀜:

  • r=1: 일반 3×3 conv와 동일(구멍 없음)
  • r=2: 필터 요소 사이에 한 칸씩 건너뛰어 연산
    → 수용 영역(receptive field) 확장
  • r=3: 두 칸씩 건너뛰어 더 넓은 문맥 포착

효과

Pool/Conv의 스트라이드를 줄여 다운샘플링 억제
→ 해상도를 유지하면서도 수용 영역은 일반 CNN보다 4× 더 넓게 확보

수용 영역(receptive field)

영상에서 특정 위치에 있는 픽셀들은
그 주변에 있는 일부 픽셀과 연관성은 높지만,
거리가 멀어질수록 그 영향은 감소

→ 수용영역 : 영상 전체 영역에 대해 서로 동일한 중요도를 부여하여
처리하는 대신, 특정 범위를 한정해서 처리하여 효과적으로 훈련을 수행하는 것

0개의 댓글