본문 바로가기

AI

논문- You Only Look Once

Abstract

  • 기존 연구에서와 달리 object detection을 회귀 문제로 구성. 이미지 전체를 한 번에 분석하여 바운딩 박스와 클래스 확률을 에측
  • 전체 탐지 파이프라인이 하나의 뉴럴 네트워크 상에서 이루어지기 때문에 탐지 퍼포먼스의 최적화가 가능
  • 초당 45 프레임의 속도로 객체 탐지가 가능함
  • 조금 더 작은 모델인 Fast YOLO의 경우 155프레임의 속도로 객체 탐지가 가능

1. Introduction

  • 기존 R-CNN과 같은 방식은 느리고 비효율적. 이는 모든 물체들이 독립적으로 학습되기 때문임.
    • Object가 존재할 것으로 추정되는 곳에 잠재적 bounding box 생성
    • classifier로 bounding box 분류
    • 겹치는 bounding box를 제거하기 위한 후처리
    • 해당 scene에 존재하는 다른 object들에 대한 box들 재평가

  • YOLO의 단일 convolution 네트워크에서는 다중 물체들에 대한 multiple bounding box와 class 확률 계산을 동시에 진행한다.
  • 다른 realtime system들의 두배 이상의 mAP(mean Average Precision)를 기록함
    • precision: 모델이 true로 예측한 것들 중 실제 true인 비율
      • in object detection: 모델이 검출한 obejct 중 ground truth object의 비율
    • recall: 실제 true 라벨들 중 모델이 true로 예측한 비율
      • in object detection: 전체 ground truth object들 모델이 검출에 성공한 object 비율

 

  • IoU: 모델이 검출한 bounding box와 ground truth가 곂치는 부분의 비율. 특정 threshold를 넘긴 predict bounding box에 대해서 TP로 판단.

  • PR Curve: confidence score에 대한 threshold 값이 변화함에 따른 Precision과 Recall의 변화량을 나타낸 그래프이다. object detection에서 confidence score는 IoU가 된다.
  • AP: PR Curve의 밑 면적을 의미
  • mAP: object detection은 여러개의 클래스가 존재하는데 mAP는 각 클래스들의 AP의 평균을 나타낸다.
  • YOLO는 이미지를 global하게 보기 때문에 기존 Fast-RCNN과 같이 작은 패치 단위로 이미지를 보던 방법에 비해 절반 이하의 background error를 기록
  • 물체의 일반화된 특성을 잘 파악하기 때문에 학습은 자연 이미지로, 테스트는 아트워크로 하여도 잘 작동하는 모습을 보여줌
  • 작은 물체에 대해서는 여전히 detection을 어려워함

2. Unified Detection

  • 이미지 전체의 feature를 통해서 bounding box를 예측하며 모든 클래스에 대한 bounding box를 즉각적으로 예측한다.
  • 각 box는 $(x,y,w,h)$로 표현되며 각각 중심의 좌표와 너비, 높이를 표현한다.
  • 인풋 이미지를 S x S의 grid cell로 나눈 후 물체의 중심이 grid cell에 포함되는 경우 해당 grid cell이 object detection을 진행한다.

  • grid cell은 최대 $B$개의 bounding box(이하 B-box)와 confidence score를 계산하는데, 여기서 confidence score는 B-box 내에 객체가 해당 경계 상자에 있을 확률과 그 B-box가 실제 객체와 얼마나 잘 맞아 떨어지는 지를 나타낸다.
    • Confidence Score: $PR(Object) * IOU^{truth}_{pred}$
      • $PR(Object):$ grid cell 내부에 물체가 존재할 확률
      • $IOU^{truth}_{pred}:$ Ground Truth와 B-box가 겹치는 정도
      • cell 내부에 물체가 없다면 이는 0이된다.($PR(Object)=0$) 그렇지 않다면 IOU에 따라 값이 결정됨
      • 목표는 confidence score가 Ground Truth의 IOU와 동일한 값을 갖게 하는 것이다.
    • Conditional Class Probabilities: $Pr(Classi |Object)$
      • 특정 grid cell 내에 객체가 있을 때, 이것이 특정 클래스에 속할 확률
      • 하나의 grid cell은 속한 B-box의 수에 관계없이 하나의 클래스에 대한 확률만을 계산함

2.1 Network Design

  • 1 x 1 Conv 레이어를 통해서 필터 차원을 축소하는 기법을 사용함 이를 통하여 파라미터 수를 줄이는 식으로 사용
    • ex) (110 x 110 x 192) 인풋 데이터를 채널 수 128의 (1 x 1) conv 레이어를 거치면 (110 x 110 x 128) 차원으로 변경됨.

2.2 Training

  • B-box의 크기를 이미지의 높이와 너비에 대해서 normalized하여 0~1 사이의 값을 갖게함
  • B-box의 중심$(x,y)$는 해당 box가 포함되는 grid cell을 기준으로 상대적으로 표현된다. 좌상단이 (0,0), 우하단이 (1,1)로 표현된다. 만일 box의 중심이 어떠한 grid cell의 우측 하단에 위치한다면 (0.8, 0.7)과 같이 표현된다.

  • Activation Function으로는 Leaky ReLU가 사용됨
  • Loss Function으로는 sum-squared error를 사용하였으나 이는 객체 탐지에서 중요한 여러 유형의 오류(예: 경계 상자(localization) 오류와 분류(classification) 오류)를 같은 비중으로 다루기에 결과적으로 이는 최적화의 초점이 잘못 맞춰질 수 있는 문제를 야기함
    • 이미지의 grid cell의 대부분에는 물체가 존재하지 않는다. 이는 대부분의 grid cell의 confidence score가 0이 됨을 의미하는데, 결국 객체가 없는 셀의 손실이 학습에 더 큰 영향을 주게 된다.
    • 이를 위해 두 개의 안정화 파라미터 $λ_{coord}=5$ , $λ_{noobj}=0.5$를 도입함.
    • $λ_{coord}=5$: 경계 상자 좌표 예측의 Loss를 더 중요하게 취급하기 위해 경계 상자 관련 Loss에 5배의 가중치를 부여
    • $λ_{noobj}=0.5$: 객체가 없는 셀에서의 신뢰도 손실을 줄이기 위해 가중치를 0.5배로 설정
  • 큰 B-box와 작은 B-box 사이에서의 Loss의 경우에도 동일한 비중으로 처리되는데, 일반적으로 작은 B-box에서의 좌표 변화가 큰 B-box에서의 좌표 변화보다 큰 영향을 미치므로 B-box의 (w,h)에 대해서 제곱근을 적용한 값을 예측하도록 학습함.

  1. 좌표 손실 (Localization Loss) - 경계 상자의 중심 (x, y)

  • 목적: 경계 상자의 중심 좌표 xy의 예측 값과 실제 값의 차이를 줄이는 것
  • $λ_{coord}=5$로 설정하여 좌표에 대한 Loss가 학습에 많이 반영되도록 설정
  1. 좌표 손실(Localization Loss) - 경계 상자의 너비와 높이(w,h)

  • 목적: w, h에 대한 손실을 줄이는 것
  • w와 h에 제곱근을 적용하여 작은 B-box에서의 작은 변화가 큰 B-box에서의 작은 변화보다 크게 반영이 될 수 있도록 설정
  1. 객체 존재에 대한 신뢰도 손실 (Confidence Loss) - 객체가 있는 경우

  • $C_i:$ 예측된 경계 상자가 객체를 포함하고 있을 확률을 의미.
  • $\hat{C}_i:$ 객체가 존재하면 1, 존재하지 않으면 0
  1. 객체가 없는 셀에 대한 신뢰도 손실 (Confidence Loss) - 객체가 없는 경우

  • $λ_{noobj}=0.5$로 설정하여 객체가 없는 셀에 대해서는 학습에 적은 영향을 미치도록 설정함
  • $1^{noobj}_{ij}:$ 객체가 없는 경우에만 활성화됨
  1. 클래스 확률 손실 (Classification Loss)  

  • 실제 클래스와 예측 클래스 비교
  • $p_{i}(c):$ i번 grid cell에서 예측한 클래스 c의 확률.
  • $\hat{p}_{i}(c):$ 실제 클래스 c의 확률 (0 또는 1)
  • $1^{obj}_{ij}:$ 객체가 있는 경우에만 클래스 확률 loss를 계산

 

  • Dataset: Pascal VOC 2007 / 2012
  • batch size =64, momentum = 0.9, decay = 0.0005로 학습함. 총 135 에포크
  • 첫 에포크에서 learning rate를 1e-3에서 1e-2로 서서히 올림. 75 에포크 까지 1e-2로 학습
  • 추후 30 에포크는 1e-3으로, 나머지는 1e-4로 학습
  • 과적합 방지를 위해 첫 connected layer 뒤에 0.5의 drop out을 적용

2.3 Inference

non-maximal suppression

  • 큰 크기등으로 인하여 여러 셀에 걸쳐있는 객체의 경우 여러 개의 B-box가 하나의 객체를 탐지할 수 있다. 이로 인해 중복 탐지가 발생할 수 있는데, 이를 (non-maximal suppression, 이하 NMS)를 통해서 해결함.
  • 여러 B-box가 동일한 객체를 탐지한 경우 가장 Confidence Score가 높은 box 하나만을 선택하고 나머지는 제거함
  • 이로 인해 mAP가 2~3% 정도 개선됨

2.4 Limitation of YOLO

  • 고정된 수의 B-box를 가지고 있어 비정상적으로 긴 객체나 작은 객체와 같은 다양한 형태의 객체 탐지에 어려움

4.2 VOC 2007 Error Analysis

  • 배경 탐지나 클래스 비교에서는 좋은 성능을 보여주나, 물체의 위치 탐지에서는 부족한 모습을 보여줌