7 분 소요

본 글은 스탠포드 대학 CS231n Lecture 11(Detection and Segmentation) 강의 내용을 바탕으로 정리한 내용이다. 개인 공부 목적으로 작성하였으며, 설명 오류나 오탈자에 대한 피드백을 환영한다.

원본 링크 : cs231n.stanford.edu 한글 번역 링크 : aikorea.org - cs231n 강의 링크 : youtube - 2017 Spring (English)

  • 이 글에서 다루는 것
    • 컴퓨터 비전 태스크 개요: Image Classification, Semantic Segmentation, Object Detection, Instance Segmentation
    • 시맨틱 분할(Semantic Segmentation): 슬라이딩 윈도우의 한계, 합성곱 기반 접근, Fully Convolutional Network(FCN) 및 Downsampling/Upsampling 구조
    • 객체 인식(Object Detection) 기초: Classification과 Localization, 2D Bounding Box 파라미터 및 멀티태스크 손실(Multitask Loss)
    • 다중 객체 인식과 영역 제안: 슬라이딩 윈도우 문제점과 Selective Search를 통한 Region Proposals
    • 2-Stage 검출기 발전사: R-CNN, Fast R-CNN과 RoI Pooling/Align, Faster R-CNN과 영역 제안 네트워크(RPN, Anchor Box)
    • 1-Stage 검출기: 단일 단계 종단간 검출 모델인 YOLO(You Only Look Once)의 기본 동작 원리

Image Classification

  • Computer vision의 핵심 태스크인 Image Classification은 주어진 후보 라벨 집합에서 입력 이미지가 어떤 범주에 속하는지 예측하는 작업이다.

  • Computer vision의 태스크는 이미지 분류를 넘어 공간적 정보를 다루는 Semantic Segmentation, Object Detection, Instance Segmentation 등으로 확장된다1.
  • 먼저 semantic segmentation 부터 살펴본다.

Semantic Segmentation

  • Semantic Segmentation은 이미지 내에 있는 객체들을 의미 있는 단위(클래스)로 분할하는 작업을 말한다2.
    • 개별 인스턴스를 구분하지 않고 동일한 범주에 속하는 모든 픽셀에 동일한 레이블을 할당한다.
  • 각 학습 이미지에 대해 각 픽셀은 의미 범주(semantic category)로 레이블이 지정된다. (그림의 왼쪽)
    • input : 이미지
    • output : 픽셀별 범주를 나타내는 2D 클래스 맵이다.
  • 테스트 시에는 새로운 입력 이미지의 모든 픽셀을 범주별로 분류한다. (그림의 오른쪽)

sliding window

  • 이미지 한 장을 분류하기 위해 작은 패치 단위의 sliding window 기법을 적용하면, 주변 문맥(context) 정보가 부족하여 분류 정확도가 떨어진다.
    • 즉, 모든 영역을 잘라 패치마다 독립적인 CNN 순전파를 거쳐 중심 픽셀을 추론한다면 중복 연산이 반복되어 매우 비효율적이다.

convolution

  • 슬라이딩 윈도우의 중복 연산을 줄이고 특징(feature)을 재사용하기 위해 전체 이미지를 한 번에 처리하는 합성곱(convolution) 신경망이 제안되었다.
  • 전체 이미지를 전달해 특징 맵을 추출하고, 그 위에서 분할을 수행하여 전체 해상도의 segmentation 맵을 출력한다.
  • 하지만 분류 모델처럼 완전 연결 계층(FC layer)을 적용할 경우 입력 이미지 해상도에 종속되며, 공간 차원이 붕괴되어 픽셀 위치 정보가 소실되는 한계가 있다.

Fully Convolutional Layer

  • 다운샘플링 없이 합성곱 계층만으로 네트워크를 구성하여 모든 픽셀을 한 번에 예측하는 FCN(Fully Convolutional Network) 방식이다.
  • 이 방법은 특징 맵을 공유하므로 각 윈도우 패치마다 독립적인 순전파를 수행할 필요가 없다3.
  • 완전 합성곱 아키텍처를 통해 특징을 재사용하고 전역 픽셀에 대한 예측을 한 번에 도출할 수 있다.
  • 그러나 원본 이미지의 고해상도를 유지한 채 다층 합성곱을 수행하면 메모리 사용량과 연산 비용이 급증하는 문제가 발생한다.

  • 이러한 고해상도 연산 부담을 해소하기 위해 네트워크 내부에 다운샘플링(Downsampling)과 업샘플링(Upsampling)을 결합한 인코더-디코더 구조를 도입한다.
  • 다운샘플링(인코더) 단계는 스트라이드 합성곱이나 풀링을 통해 공간 차원을 축소하여 연산 비용을 절감하고 수용 영역(receptive field)을 넓혀 고수준 의미를 추출한다.
  • 업샘플링(디코더) 단계는 전치 합성곱(Transposed Convolution)이나 언풀링(Unpooling)을 통해 축소된 특징 맵을 원래 입력 이미지 해상도로 복원한다.
  • 이 구조를 통해 원본 해상도에서 모든 합성곱을 수행하지 않고도 계산 효율을 유지하면서 깊은 계층의 의미 특징을 학습할 수 있다.

시맨틱 분할이 이미지의 모든 픽셀에 대해 클래스를 예측하는 작업이라면, 이제 이미지 내 개별 객체들의 위치(바운딩 박스)를 특정하고 클래스를 식별하는 객체 인식(Object Detection) 태스크를 살펴본다.

Object Detection

  • Object Detection은 이미지 내 모든 물체를 탐색하여 각각의 클래스를 분류하고 위치 좌표를 출력하는 태스크이다4.
  • 객체의 클래스를 식별하는 분류(Classification)와 위치를 특정하는 국소화(Localization)를 동시에 수행한다.
  • Localization : 이미지 내 단일 객체의 바운딩 박스 위치를 특정하는 작업
  • Detection : 이미지 내 다수 객체의 위치를 특정하고 각 범주를 분류하는 작업5

  • 단일 객체 국소화의 경우 2D 바운딩 박스를 회귀(Regression) 문제로 예측한다.
    • 바운딩 박스(Bounding Box)는 $(X,Y,W,H)$ 또는 $(X_1,Y_1,X_2,Y_2)$ 4개의 파라미터로 정의된다.
      • $(X,Y,W,H)$에서 $(X,Y)$는 중심 좌표(또는 좌상단 좌표)를 나타내며, $(W,H)$는 상자의 너비와 높이를 의미한다.
  • 멀티태스크 손실(Multitask Loss): 분류 손실과 위치 회귀 손실의 규모(magnitude)를 균형 있게 결합하기 위해 가중치 합(weighted sum)으로 최적화한다.
    • 손실 함수: $\mathcal{L}{\text{total}} = \mathcal{L}{\text{cls}}(\text{Softmax}) + \lambda \mathcal{L}_{\text{loc}}(L_2)$

Multiple Object Detection

  • 이미지에 포함된 객체의 수가 고정되어 있지 않고 가변적이므로, 단순 고정 차원의 출력 회귀만으로는 다중 객체 검출을 해결하기 어렵다.

  • 다중 객체를 찾기 위해 슬라이딩 윈도우 방식을 적용할 경우, 이미지 전체에 걸쳐 다양한 위치, 크기(스케일), 종횡비(aspect ratio)를 갖는 모든 윈도우마다 분류기를 적용해야 하므로 계산 비용이 비현실적으로 높아진다.

  • 모든 가능한 위치를 전수 조사하는 대신, 객체가 존재할 확률이 높은 후보 영역(RoI)을 추출하는 기법을 영역 제안(Region Proposal)이라고 한다.
  • 전통적인 영역 제안 방법으로는 색상, 질감, 명암 등의 유사성을 기반으로 계층적 영역 병합을 수행하는 Selective Search 알고리즘이 널리 활용되었다.

R-CNN

  • R-CNN은 입력 이미지에서 Selective Search를 사용해 약 2,000개의 관심 영역(RoI)을 추출한다.
  • 각 제안 영역을 동일한 크기(예: $224 \times 224$)로 변형(warp/crop)하여 CNN 모델에 입력한다.
  • CNN을 통해 추출된 특징 벡터를 바탕으로 선형 서포트 벡터 머신(SVM)을 학습시켜 클래스를 분류하고, 바운딩 박스 회귀를 통해 위치를 보정한다.
  • 그러나 이미지 1장당 약 2,000번의 CNN 순전파를 독립적으로 수행해야 하므로 추론 및 학습 시간이 매우 길다는 한계가 있다.

Slow R-CNN

  • 이미지를 영역별로 자르기 전에 전체 이미지를 단 1회 CNN에 통과시키고, 도출된 합성곱 특징 맵에서 영역을 잘라내는 아이디어가 발전하였다.
  • 특징 맵을 공유하는 이 방식은 현대 딥러닝 기반 2D 객체 검출 모델들의 기본 설계 철학으로 자리 잡았다6.

Fast R-CNN

  • Fast R-CNN은 이미지 자르기 후 매번 CNN을 통과시키는 기존 R-CNN 방식 대신, 전체 이미지를 CNN에 먼저 통과시켜 특징 맵을 생성한 후 후보 영역에 해당하는 합성곱 특징을 잘라내어(crop & pool) 크기를 조정한다.
    • 이를 통해 단일 이미지를 처리할 때 무거운 합성곱 연산을 수천 번 반복하는 중복을 피할 수 있다.
  • Fast R-CNN은 역전파가 특징 추출 계층까지 전달되는 종단간(End-to-End) 학습 구조를 채택하였다. 자르기 및 크기 조정은 입력 이미지가 아닌 특징 맵 위에서 직접 수행된다.

Cropping Features: RoI Pool

  • RoI Pool : 임의 크기의 제안 영역을 고정된 차원의 특징 벡터로 변환하는 연산이다.
    • 목표 : 특징 맵에서 후보 영역을 추출하고, 후속 완전 연결 계층(FC layer)이 처리할 수 있도록 고정 크기 텐서(예: $7 \times 7$ 또는 $2 \times 2$)로 축소한다.
  • 특징 맵 상의 후보 영역 좌표를 부동소수점에서 정수 격자로 반올림(quantization)하여 배치한다.
  • 해당 영역을 목표 차원의 격자로 균등 분할한 뒤, 각 빈(bin)마다 최대 풀링(Max Pooling)을 적용하여 고정 크기 출력을 생성한다.
    • 입력 영역의 크기가 서로 달라도 결과 벡터는 항상 동일한 크기를 유지한다.
    • 그러나 좌표 반올림 과정에서 양자화 오차가 발생하여 공간적 정렬(spatial alignment)이 어긋날 수 있다.

Cropping Features: RoI Align

  • RoI Pool의 좌표 반올림으로 인한 공간 정보 왜곡을 해결하기 위해 Mask R-CNN에서 RoI Align이 제안되었다.
  • RoI Align은 영역의 경계와 샘플링 빈을 정수로 양자화하지 않고 부동소수점 좌표 그대로 유지한다.
  • 각 빈 내부의 4개 샘플링 지점에서 쌍선형 보간법(Bilinear Interpolation)을 적용해 연속적인 특징 값을 정확히 계산한 뒤 풀링을 수행한다.
  • 이를 통해 특징 맵과 실제 객체 위치 간의 정렬 오차를 제거하여, 작은 물체 검출 및 정밀한 픽셀 단위 분할 성능을 개선한다.

R-CNN vs Fast R-CNN

  • Fast R-CNN은 공유 합성곱 백본(backbone)을 활용해 전체 이미지에 대한 특징 맵을 1회만 계산함으로써 처리 효율을 높였다.
  • 학습 단계에서 Fast R-CNN은 R-CNN 대비 약 10배 빠르며, 테스트 단계에서는 약 20배 빠른 처리 속도를 보인다.
  • 그러나 Fast R-CNN 역시 영역 제안 단계에서는 여전히 CPU 기반의 Selective Search를 사용한다.
  • 이미지 1장당 전체 2.3초 중 Selective Search 영역 제안에만 약 2초가 소요되고, 제안 영역 분류에는 0.32초만 소요되므로 전체 추론 파이프라인의 병목이 영역 제안 단계에 머물러 있다.

Faster R-CNN (1)

  • Faster R-CNN은 영역 제안 단계의 속도 병목을 해결하기 위해 개발되었다.
    • 외부 CPU 알고리즘인 Selective Search 대신, 합성곱 특징 맵을 직접 활용하여 네트워크 내부에서 후보 영역을 예측하는 내장형 RPN(Region Proposal Network)을 도입하였다.

Region Proposal Network

  • RPN의 핵심 설계는 사전 정의된 앵커 박스(anchor box) 세트를 활용하는 것이다.
    • 앵커 박스는 특징 맵의 각 위치마다 서로 다른 스케일과 종횡비(aspect ratio)를 갖도록 정의된 기준 상자이다.
    • 슬라이딩 윈도우의 전수 조사 방식과 달리 사전에 정의된 대표 위치, 크기, 비율을 기반으로 샘플링되므로 검사 대상 후보 영역 수가 제한적이다.
  • 앵커는 자연 이미지에서 객체가 주로 등장하는 영역 비율을 포괄하며, 모든 입력 이미지에 대해 동일한 앵커 구성을 공유한다.
  • RPN은 특징 맵 위를 작은 합성곱 계층으로 슬라이딩하며 각 앵커 위치에 객체가 존재하는지 여부(객체성 점수, Objectness Score)와 바운딩 박스 오프셋을 예측한다.
    • 특징 맵의 각 지점은 해당 좌표를 중심으로 배치된 앵커 박스들의 객체 포함 여부를 평가하는 수용 영역 역할을 수행한다.

Faster R-CNN (2)

  • Faster R-CNN의 전체 추론 및 학습 흐름은 다음과 같다.
    • RPN 단계의 분류/회귀 손실 2개와 최종 Fast R-CNN 단계의 분류/회귀 손실 2개를 합산한 총 4개의 멀티태스크 손실로 최적화한다.
  1. 입력 이미지가 CNN을 통과하여 전체 이미지에 대한 특징 맵을 생성한다.
  2. RPN이 특징 맵에서 객체성 점수가 높은 후보 영역(region proposal)을 예측한다.
  3. RPN이 예측한 후보 영역에 대해 물체 존재 여부 분류와 앵커 좌표 보정 회귀를 수행한다.
  4. 선별된 후보 영역에 대해 RoI Pooling을 적용하여 고정 크기 특징 벡터를 추출하고, FC 계층을 거쳐 최종 클래스 분류와 바운딩 박스 회귀를 진행한다.

  • 계산 효율성 측면에서 Faster R-CNN은 이미지당 약 0.2초 수준으로 처리할 수 있어 Fast R-CNN 대비 약 10배의 속도 향상을 보인다.

  • 객체 검출 모델은 구조적 파이프라인에 따라 1-Stage와 2-Stage 검출기로 분류된다7.
    • 객체 검출은 객체의 위치를 특정하는 Localization과 범주를 식별하는 Classification 문제를 해결해야 한다.
    • 1-Stage : 두 문제를 단일 신경망에서 동시에 예측하는 방식 (추론 속도가 빠르며 실시간 처리에 유리함, 예: YOLO, SSD, RetinaNet)
    • 2-Stage : 영역 제안과 분류 및 위치 보정을 순차적으로 수행하는 방식 (추론 속도는 상대적으로 느리지만 검출 정밀도가 우수함, 예: R-CNN, Fast R-CNN, Faster R-CNN)
  • Faster R-CNN은 특징 추출 및 영역 제안(1단계) 후 각 제안 영역을 개별 분류·정제(2단계)하는 대표적인 2-Stage 객체 검출기이다.
  • 단일 단계 검출기는 영역 제안 단계를 생략하고 직접 박스를 예측하여 추론 속도를 극대화하는 방향으로 발전하였다.

Others

  • YOLO(You Only Look Once)는 입력 이미지를 $S \times S$ 그리드로 분할하여 단일 순전파로 위치와 클래스를 동시에 예측하는 1-Stage 검출기이다.
  • 각 그리드 셀마다 사전 정의된 다수의 바운딩 박스를 기준으로 좌표 오프셋과 신뢰도 점수(Confidence Score)를 예측한다.
  • 동시에 각 그리드 셀의 조건부 클래스 확률을 예측하여 최종 바운딩 박스별 클래스 점수를 도출한다.
  • YOLO는 별도의 영역 제안 단계 없이 단일 신경망의 1회 순전파(single forward pass)로 모든 경계 상자와 클래스를 출력하므로 실시간 처리에 적합하다.

핵심 정리

  • Semantic Segmentation과 FCN: 픽셀 수준에서 범주를 예측하며, 고해상도 연산 부담을 해소하기 위해 특징 맵을 다운샘플링하여 깊게 학습한 뒤 업샘플링으로 원래 해상도를 복원하는 완전 합성곱 구조를 사용한다.
  • Classification vs Localization: 이미지 내 단일 객체를 감지할 때는 범주 예측을 위한 분류 손실(Softmax)과 바운딩 박스 회귀를 위한 위치 손실($L_2$ Loss)을 결합한 멀티태스크 손실을 최적화한다.
  • Region Proposal과 Selective Search: 슬라이딩 윈도우의 비효율성을 극복하기 위해 객체가 존재할 만한 후보 영역을 약 2,000개 수준으로 압축 추출하는 기법이다.
  • R-CNN의 한계: 추출된 각 RoI에 대해 독립적으로 CNN 순전파를 수천 번 반복해야 하므로 학습 및 추론 속도가 매우 느리다.
  • Fast R-CNN의 특징 맵 공유: 전체 이미지를 CNN에 먼저 통과시켜 특성 맵을 단 1회 추출한 후, RoI Pooling을 통해 후보 영역에 대한 고정 크기 특징 벡터를 잘라내어 중복 순전파 연산량을 절감했다.
  • Faster R-CNN과 RPN: 외부 Selective Search 대신 네트워크 내부에서 앵커 박스를 기반으로 후보 영역을 예측하는 Region Proposal Network를 도입해 병목을 제거하고 End-to-End 고속 검출을 달성했다.
  • 1-Stage vs 2-Stage Detector: 2-stage(R-CNN 계열)는 영역 제안과 분류를 순차 진행하여 정확도가 높고, 1-stage(YOLO 등)는 단일 순전파로 바운딩 박스와 클래스를 동시 예측하여 실시간 처리에 적합하다.

한계 및 트레이드오프

  • 정확도와 추론 속도의 상충관계: Faster R-CNN과 같은 2-Stage 검출기는 영역 제안과 영역별 특징 정제를 거쳐 높은 검출 정확도를 제공하지만 다단계 파이프라인 구조로 인해 실시간 처리가 어렵다. 반면 YOLO와 같은 1-Stage 검출기는 초당 프레임 수(FPS)가 높아 실시간 검출이 가능하지만, 작은 객체(small object)나 서로 겹쳐 있는 밀집 객체 검출에서 상대적으로 위치 오차가 발생하기 쉽다.
  • RoI Pooling의 양자화 오차: RoI Pooling은 연속형 좌표의 제안 영역을 이산 격자로 투영할 때 반올림(rounding) 양자화를 거치며 원본 위치와의 불일치가 발생한다. 이러한 위치 왜곡은 픽셀 정밀도가 중요한 고해상도 세부 분할 태스크에서 성능 저하를 야기하므로 RoI Align과 같은 보간 기법이 필수적이다.
  • 시맨틱 분할의 공간 해상도 손실: FCN 구조의 다운샘플링은 넓은 수용 영역(receptive field)을 확보하는 장점이 있지만, 계층이 깊어질수록 고주파 에지 및 경계 정보가 비가역적으로 소실된다. 단순 전치 합성곱 기반 디코더만으로는 미세한 물체 경계선을 정밀하게 복원하기 어려워 스킵 연결(Skip Connection)이나 정교한 후처리 기법과의 결합이 요구된다.

References

댓글남기기