[이미지처리바이블] 5.1장 객체 탐지: two-stage detector

Changh2·2025년 5월 22일
0

이미지처리바이블

목록 보기
6/7

[이미지 처리 바이블] 교재 5장을 기반으로 작성되었습니다.


5.1 two-stage detector

객체 탐지: 이미지 내의 여러 객체를 정확하게 식별하고, 위치를 찾는 작업
>> 이를 위한 방법 중 하나가 two-stage detector (두 개의 주요 단계로 구성됨)

  1. 영역 제안
    - 이미지 내에서 객체가 존재할 가능성이 있는 영역들을 추출함
  2. 분류 + 바운딩 박스 회귀
    - 위의 단계에서 추출된 영역들 내의 객체를 분류하고,
      객체의 위치를 나타내는 바운딩 박스를 조절함

>> one-stage detector 보다 정확도 ⬆, 처리 속도 ⬇


5.1.1 R-CNN

> 객체 탐지 분야에서 큰 변화를 가져온 알고리즘 중 하나
> 기존의 방법들은 슬라이딩 윈도우 접근법으로 모든 영역을 독립적으로 평가했으나,
   R-CNN은 이미지의 관심 영역을 먼저 식별하고, 이를 CNN을 통해 분류하도록 설계함

영역 제안

> 기존의 연산량이 많은 슬라이딩 윈도우 방식을 해결하는 방법

R-CNN의 영역 제안 절차는 이와 같음

1. 초과 분할

    - 많은 수의 지역별 segment(분할)을 생성함

2. 계층적 그룹화

    - 위에서 생성된 segment들을 그룹화함

3. 전략의 다양화

    - segment를 병합할때 여러 전략을 동시에 사용함 (색상 유사성, 질감 패턴 등)

4. 필터링 제안

    - 사이즈 기반 필터링: 너무 작거나 큰 영역 제안은 제외됨
    - 다양성 최대화: 서로 비슷한 영역 제안 중 하나만 선택함
    - 제안 수 제한: 최종적으로 약 2,000개의 영역 제안만을 선택함
    >> 위의 필터링을 거쳐 가장 유용한 제안만을 선택하는 단계


CNN을 활용한 특징 추출

> R-CNN은 선택적 검색으로 추출된 영역 제안들을 AlexNet 구조의 CNN을 통해 분석함
> Conv 층 - 이미지의 지역적인 특징 학습
> FCN 층 - 이미지의 전역적인 정보 학습


SVM을 활용한 분류

> R-CNN은 객체 탐지의 마지막 단계로 Support Vector Machine 분류기를 사용해
   각각의 영역 제안을 특정 객체 클래스로 분류함

SVM은 마진(margin)을 최대한으로 하며 공간을 둘로 나누는 초평면을 찾는 것을 목표로 함.
>> 이로 인해 일반적인 분류기보다 과적합을 방지할 수 있음


바운딩 박스 회귀

R-CNN에서 바운딩 박스 회귀의 타깃은 4개의 값을 가지며, 각각은 GT(Ground Truth, 바운딩 박스)와 영역 제안 간의 상대적인 변화를 나타냄

아래의 수식으로 타깃값을 계산함

P=(Px,Py,Pw,Ph)\quad \quad \quad \quad \quad \quad P=(P_x, P_y, P_w, P_h)    :  영역 제안의 중심 좌표, 너비, 높이
G=(Gx,Gy,Gw,Gh)\quad \quad \quad \quad \quad \quad G=(G_x, G_y, G_w, G_h)  :  GT의 중심 좌표, 너비, 높이

tx=GxPxPw,ty=GyPyPht_x = \frac{G_x - P_x}{P_w}, \quad t_y = \frac{G_y - P_y}{P_h}
tw=log(GwPw),th=log(GhPh)t_w = \log\left(\frac{G_w}{P_w}\right), \quad t_h = \log\left(\frac{G_h}{P_h}\right)

tx,ty,tw,th\quad \quad \quad \quad \quad \quad t_x, t_y, t_w, t_h    :  바운딩 박스 회귀를 통해 얻고자 하는 보정된 값


NMS와 IoU

바운딩 박스 회귀로 여러 개의 박스가 동일한 객체에 중복되어 생성될 수 있음
> 이를 처리하기 위해서 사용되는 것이 NMS(Non-Maximum Suppression)

[NMS의 작동 방식]
1. 모든 바운딩 박스를 객체 점수(신뢰도)에 따라 내림차순으로 정렬
2. 사용자가 설정한 임계치 이상의 점수를 가진 바운딩 박스를 선택
3. 선택된 경계 상자와 중복되는 다른 모든 경계 상자를 제거

이때 중복되는 정도를 나타내는 점수는 IOU(Intersection over Union) 값을 기준으로 함
보통 IoU = 0.5 를 넘어가는 경우 겹치는 박스로 설정


5.1.2 Fast R-CNN과 Faster R-CNN

> R-CNN에서 연구를 거듭하며 이를 계승한 Fast R-CNN, Faster R-CNN이 등장함

Fast R-CNN의 주요 개선점

가장 두드러지는 개선점 중 하나는 RoI(Region of Interest) 풀링

RoI 풀링

R-CNN은 각각의 제안된 영역에 대해 독립적으로 CNN을 통과시키기 때문에 처리 시간이 오래 걸렸음

Fast R-CNN은 모든 제안 영역을 개별적으로 모델에 넣지 않고
먼저 CNN을 통해 특징 맵을 생성한 후 , 특징 맵에서 제안받은 영역을 따로 분리하여 분류함
하지만 출력되는 특징맵이 입력 이미지에 비해 축소되는 문제가 있었고,
그로 인해 탐지하고자 하는 관심 영역(RoI) 또한 그만큼 작아지게 됐음
>> 이 때문에 RoI 좌표가 정수형이 아닌 실수형으로 표현되는 문제가 생김

이러한 문제를 RoI 풀링을 통해 해결함


Faster R-CNN의 주요 개선점

영역 제안 방식의 변화: 영역 제안 네트워크(RPN)

Faster R-CNN에서는 영역 제안 방식을 선택적 영역 알고리즘을 사용하지 않고,
영역 제안 네트워크, 즉 RPN(Region Proposal Network)를 사용함

앵커 박스

Fast R-CNN 처럼 CNN의 특징맵에서 영역 제안을 진행하는데,
여기서 Faster R-CNN의 RPN은 여러 사이즈와 비율을 가진 사각형 박스인 "앵커 박스"를 사용해 이미지의 모든 위치에 대해 정의함

[RPN에서 앵커 박스의 작업]

1. 이진 분류(Objectness 점수)
   - Objectness 점수는 특정 앵커가 객체를 포함할 확률을 의미
   - RPN에서는 각 앵커가 배경(Negative)인지 객체(Positive)인지 구분하기 위해 이 점수를 사용

2. 바운딩 박스 회귀
   - 앵커박스의 좌표와 실제 객체의 좌표의 오차값인 오프셋(offset)을 사용해 바운딩 박스 조정


profile
Shoot for the moon! 🔥

0개의 댓글