ML || DL/이론

[Coursera] DLS_C4W3: Object Detection

junmukbap98 2023. 10. 7. 16:36

1. Object Localization

  • Image classification: 입력 이미지가 무엇인지 분류하는 것
  • Image localization: classification + 객체 (object)의 위치 (bounding box)까지 prediction
    *Classification과 Localization은 한 개의 이미지에 한 개의 object가 있다고 가정
  • Object detection: 입력 이미지 내의 multiple object의 classification + localization

  • Classification with localization
    : localization 알고리즘 개요와 target label $y$


2. Landmark Detection

: 얼굴의 윤곽선을 검출하여 표정을 인식하거나, 인간의 pose key points를 검출하여 pose detection


3. Object Detection

: 한 이미지 내에서 여러 객체들을 classification + localization

Car detection example

 

(1) Sliding windows detection
: 이미지를 sliding 하는 모든 사각형 (window) 영역에 대해 ConvNet을 통과시켜서 자동차인지 아닌지 classification

  • 단점: computational cost (이미지의 수많은 영역을 crop 한 후, ConvNet을 통해 각각 prediction)
    • 큰 stride 사용 -> ConvNet을 통과하는 window의 수는 줄어들지만, 성능이 저하됨
    • 작은 stride 사용 -> 너무 많은 computational cost를 야기함

  • Convolutional implementation of sliding windows
    : sliding windows를 convolution으로 구현하기에 앞서, FC layer를 convolutional layer로 바꾸는 방법을 설명한다.

sliding windows를 convolution으로 구현하기 위해서, padding을 먼저 한다.

4가지 입력에 대해서 독립적인 forward propagation을 하는 것이 아니라, 네 가지 경우를 한 번의 ConvNet으로 계산한다. 

- 단점: sliding window의 위치가 object와 딱 맞지 않은 경우, bounding box의 위치가 부정확할 수 있다.

 

(2) Bounding box predictions
: 위의 부정확한 bounding box 문제를 해결할 수 있는 알고리즘 중 하나는 YOLO 알고리즘이다. 

 

YOLO (You Only Look Once): 이미지를 몇 개의 grid cell로 나눈다. 그다음, object의 mid point가 포함된 grid cell에 해당 object를 할당한다. 그다음 grid안에 물체가 있을 확률($P_c$), bounding box($b_x, b_y, b_h, b_w$), 각 class에 대한 확률 ($C_1, C_2, C_3$)을 prediction

  • 장점: 좀 더 정확한 bounding box를 예측할 수 있다.
  • 단점: 하나의 grid cell에 한 개 이상의 object가 포함되어 있으면 잘 동작하지 않는다. (하지만, 이런 경우 좀 더 fine 한 grid cell을 사용하면 어느 정도 해결할 수 있다. e.g., 19x19 grid cells)

기본적으로 YOLO는 위와 같은 프로세스를 통해 bounding box를 예측한다. 

하지만, 이런 기본적인 processing만 수행했을 때 두 가지 문제점이 존재한다.

 

  • 알고리즘이 같은 물체를 여러 번 detection 하는 문제
    : object는 하나의 mid point만을 가지고 있기 때문에 하나의 grid cell에만 할당되어야 한다. 하지만 실제로는 근처 모든 cell에 대해서 classification & localization을 수행하여, mid point 근처의 cell도 object를 predict 하는 경우가 발생한다. 따라서, 한 object에 대해 여러 개의 bounding box가 예측될 수 있다. 
    --> 이는
     Non-max suppression을 통해 해결 가능하다. 

  • 한 개의 grid cell에서 여러 개의 object가 있을 경우
    : 이런 경우, 두 개의 detection 모두 출력하는 것은 불가능하므로 둘 중에 하나만 골라서 출력해야 하는 문제가 발생한다.
    --> Anchor box 도입해서 이러한 문제를 해결한다. 

(좌) 알고리즘이 같은 물체를 여러번 detection (우) 한 개의 grid cell에서 여러개의 object detection

 

 

(3) Non-max suppression (NMS)

: grid 안에 object가 있을 확률 $P_c$를 기준으로 가장 큰 수를 가지는 (most confident) bounding box만을 남기고 나머지 bounding box를 suppression 한다. NMS 알고리즘은 아래와 같이 동작한다.

<NMS algorithm>

- $P_c$가 특정 threshold (0.6) 보다 작은 bounding box는 버린다.

While there are any remaining boxes:

    - 남은 bounding box들 중 가장 큰 $P_c$를 가지는 box를 고린다.

    - 위에서 고른 box와 남은 box들의 IoU를 계산해서, IoU가 특정 threshold (0.5) 이상인 것들은 버린다. 

 

즉 $P_c$가 최댓값이 아닌 bounding box들을 suppression 한다.

 

*IoU (Intersection Over Union) = size of 두 bounding box의 교집합 / size of 두 bounding box의 합집합

 

 

(4) Anchor boxes

: grid를 finer 하게 선택하면, 둘 이상의 물체가 하나의 grid cell에 포함될 확률이 적어지긴 하지만, 발생할 수 있는 문제이다. 이를 해결하기 위해서 Anchor box를 활용한다. 

 

위의 그림과 같이 한 grid cell에 보행자와 자동차가 겹쳐있는 경우, Anchor box 두 개를 설정한다. (*여기에서는 2개로 설정하지만, 더 많이 사용할 수도 있다.)

이런 경우에는, anchor box1, 2 각각에 대한 예측을 한다. 따라서 y의 차원이 2배 (16차원)이 된다. 

즉, 하나의 grid cell에 대한 anchor box도 같이 선택을 해주는 것이다. (이때, object의 shape과 높은 IoU를 가지는 anchor box가 선택된다.) 

 

예를 들어,

- grid cell에 보행자와 자동차가 모두 있는 경우: labe $y=[1, b_x, b_y, b_h, b_w, 1, 0, 0, 1, b_x, b_y, b_h, b_w, 0, 1, 0]$

- grid cell에 자동차만 있는 경우:  labe $y=[0, ?, ?, ?, ?, ?, ?, ?, 1, b_x, b_y, b_h, b_w, 0, 1, 0]$가 된다. 이때, ?에는 noise 값이 예측되고 어차피 loss를 계산할 때 사용되지 않는다. 

 

(5) YOLO algorithm

  • target $y$는 (#grid_h, #grid_w, # anchors $\times$ (5+#classes))의 크기를 갖게 된다.
  • input image -> ConvNet -> Output (#grid_h, #grid_w, # anchors $\times$ (5 + # classes))

<YOLO algorithms>

- 각 grid cell에 대해 # anchors 개의 bounding box를 예측한다.

- (Non-max suppression) low $P_c$를 가지는 grid cell을 삭제한다.

- 각 class에 대해 NMS를 반복해서, final prediction을 생성한다. 

 

==> 이미지 내의 모든 object들이 검출된다.