ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Object Detection] YOLO v1: You Only Look Once: Unified, Real-Time Object Detection 번역 및 정리 (1)
    Paper review/Object Detection 2021. 4. 27. 19:25
    반응형

    https://arxiv.org/abs/1506.02640

     

    주요 기여:

    - 속도 측면에서 획기적으로 개선하여 Real time object detection이 가능하게 함

    - 기존 2-stage task로 수행되던 R-CNN 계열 알고리즘에서 벗어나 처음으로 1-stage 네트워크 제안.

     

    0. Abstract

    Object detection에 대한 새로운 접근법 YOLO를 제안한다. Object detection의 이전 방법에서는 classifier를 활용하여 detection을 수행한다. 본 논문은 bounding box와 class probability를 하나의 회귀 문제로 재정의해 두 task를 동시에 수행한다. 1-stage 네트워크로 개선됨에 따라 detection에 대한 end-to-end 최적화가 가능하다.

     

    본 모델은 매우 빠르다. 45 fps로 이미지를 실시간으로 처리한다. 더 경량화된 Fast YOLO는 다른 실시간 detector의 두 배의 mAP를 달성하면서도 155 fps로 처리한다. YOLO는 기존 모델에 비해 더 많은 localization error를 발생시키지만 background error는 2배 이상 감소시켰다. 마지막으로 YOLO는 object의 매우 일반적인 feature를 학습한다. natural 이미지에서 artwork 이미지와 같은 다른 도메인으로의 일반화가 다른 detector보다 훨씬 잘된다.

     

     

    1. Introduction

    인간은 이미지를 흘끗 만 봐도 이미지 안에 어떤 물체가 있는지, 어디에 있는지, 어떻게 상호작용하는지 바로 알 수 있다. 인간의 시각 시스템은 빠르고 정확하여, 우리가 거의 의식적으로 생각을 하지 않고 운전과 같은 복잡한 작업을 수행할 수 있게 한다. 이러한 object detection이 존재한다면 자율주행 자동차 기술도 매우 발전할 것이다.

     

    현재 detection 시스템은 classifier의 용도를 변경하여 detector를 구성한다. 

     

    R-CNN 계열은 region proposal 방법을 통해 bounding box를 생성하고, 해당 box에서 classification을 수행한다. 이후 bounding box regression과 NMS를 수행한다. 이러한 단계들은 독립적으로 훈련되기 때문에 속도가 느리고 최적화가 어렵다.

     

    본 논문은 인간과 같이 object detection을 하나의 회귀 문제로 재구성하여 1-stage task로 개선한다. YOLO는 아래 그림과 같이 하나의 convolutional network가 여러 bounding box와 해당 bounding box의 클래스 확률을 동시에 예측한다.

    YOLO detection 시스템. 

     

    YOLO는 기존 2-stage에 비해 몇 가지 이점이 존재한다.

     

    1. YOLO는 매우 빠르다.

    : 기존 2-stage task를 하나의 회귀 문제로 재정의 함으로써 동영상을 실시간으로 처리할 수 있게 만들었다.

     

    2. YOLO는 예측을 할 때 이미지에 대해 global 하게 다룬다.

    : 기존 selective search나 region proposal처럼 먼저 객체의 위치를 찾는 방법과 달리 object detection을 수행하는 동안 전체 이미지를 다뤄서, class와 주변 정보까지 학습한다. 이를 통해 Faster R-CNN에 비해 background error를 2배 이상 줄였다. ( *backgorund error: 배경에 반점이나 노이즈가 있을 때 이것을 물체라고 잘못 인식하는 것)

     

    3. YOLO는 object의 일반적인 feature를 학습한다.

    : natural image dataset에서 학습한 후 artwork (미술품, 그림 이미지)에서 테스트했을 때, DPM이나 R-CNN보다 월등히 뛰어나다. 일반적인 feature를 학습하기 때문에 새로운 이미지에 더 robust 하다.

     

    하지만 YOLO는 최신 object detection 모델에 비해 정확도가 떨어진다. 이미지에서 object를 빠르게 검출할 수 있지만 특히, 작은 object에 대해 검출 정확도가 떨어진다. 실험을 통해 속도와 정확성의 tradeoff를 자세히 조사한다.

     

     

    2. Unified Detection

    Object detection 과정을 단일 신경망으로 통합한다. 전체 이미지의 feature을 통해 각 bounding box를 예측하고, 동시에 bounding box를 모든 class에 걸쳐 예측한다. 전체 프로세스는 다음과 같이 시각화할 수 있다.

     

    1. 입력이미지를 S x S 그리드로 나눈다. 논문 속에서 S는 7로 설정한다. Object의 중심 좌표가 특정 grid cell에 속하면 해당 grid cell에서 해당 object를 탐지한다. 

    input image를 S x S gird로 나눈다. (S=7)


    2. 각 grid cell은 B개의 bounding box와 해당 box의 confidence score를 예측한다. 논문 속에서 B는 2로 설정한다. Confidence score는 box에 object가 포함되어있는지, 얼마나 ground-truth와 일치하는지를 나타낸다. 식은 다음과 같다. (
    Object가 존재하는 경우(=object의 중심 좌표가 해당 cell에 속하는 경우) Pr(Object)=1, 존재하지 않는 경우 Pr(Object)=0이다.

    이때, IoU는 Intersection over Union으로 두 box가 겹치는 비율을 의미한다. IoU의 식은 다음과 같다. Box의 크기에 상관없이 0부터 1 사이의 값을 가져 자동으로 정규화해주는 특징이 있다.

    각 bounding box는 x, y, w, h와 confidence score 총 5개의 값으로 구성된다. x, y는 그리드 셀의 경계를 기준으로 box의 중심 좌표를 나타낸다. w, h는 각각 box의 너비와 높이를 나타낸다.

    각 bounding box에 대해 x, y, w, h, confidence score 5차원. 2개의 bounding box이므로 총 10차원.

     

    3. 각 grid cell에 대한 C개의 Conditional Class Probability를 예측한다. C는 class 개수를 의미하고 논문에서 C는 20이다. Conditional Class Probability는 cell안에 object가 존재할 때, 특정 class일 확률을 의미한다. feature map은 bounding box의 예측값(10차원)과 20차원의 Conditional Class Probability 값으로 구성된다.

     

    4. Test 시 앞에서 구한 confidence score와 conditional class probability를 곱하여 class-specific confidence score를 얻는다. 이는 box에 특정 클래스가 나타날 확률과 예측 box가 ground-truth와 얼마나 일치하는 지를 의미한다.

    한 개의 bounding box에 대해 20차원의 class-specific confidence score이 나오고 이러한 20차원이 7*7*2개가 나온다.

     

    5. 98개의 class-specific confidence score에 대해 각 20개의 클래스를 기준으로 NMS 작업을 걸쳐 object에 대한 class 및 bounding box location을 결정한다. Class별로 구해진 score에서 임계값을 넘지 못하는 box는 0으로 만든 후 score를 내림차순으로 정렬한다.

    정렬된 score에서 NMS를 통해 가장 score가 높은 bounding box를 획득한다.

    NMS란 Non Maximum Suppression로 Ground-Truth와 IoU값이 가장 높은 bounding box를 제외하고 겹치는 box는 모두 제거하는 방법이다. NMS과정을 시각화하면 다음과 같다.

     

    2.1. Network Design

    본 모델은 convolution network로 구현하고 PASCAL VOC dataset에서 평가한다. 네트워크의 상위 layer는 이미지에서 feature를 추출하는 convolution layer이고, FC layer는 class 확률과 bounding box를 예측한다.

     

    YOLO는 이미지 분류를 위한 GoogleNet 모델을 응용했다. 24개의 conolution layer와 2개의 fully connected layer로 구성되어 있다. GoogleNet의 인셉션 구조(신경망 안에 대신, 단순히 1x1 reduction layer와 3x3 convolution layer를 사용한다.

     

    YOLO의 최종 출력은 7 × 7 × 30 tensor이다.

    GoogleNet 아키텍쳐
    YOLO v1 아키텍쳐

    YOLO보다 더 빠른 object detection을 위한 Fast YOLO 또한 학습한다. Faste YOLO는 기존 24개였던 conv layer를 9개로 줄이고 더 적은 filter를 가진 신경망을 사용한다. 다른 설정은 동일하다.

     

    2.2. Training

    ImageNet 1000-class competition dataset에서 pretrain 한다. Pretrain을 위해 첫 20개의 convolution layer와 average  pooling, FC layer를 사용한다. 해당 모델은 ImageNet 2012 validation dataset에서 88% 정확도를 달성한다. 본 논문에서는 모든 train과 inference를 위해 Darknet 프레임 워크를 사용한다.그런 다음 훈련된 모델을 변환하여 detection을 수행한다. 무작위로 초기화된 가중치를 가진 네 개의 convolution layer와 두 개의 FC layer를 추가한다. detection에는 이미지 해상도가 높아야 하기 때문에 input 해상도를 224 x 224에서 448 x 448로 증가시킨다.

     

    본 모델의 최종 layer는 class probability와 bounding box를 모두 예측한다. x, y는 셀에 대해, w, h는 input 이미지에 대해 정규화하여 모두 0 ~ 1 사이의 값을 갖도록 한다.

     

    최종 layer에 선형 활성화 함수를 사용하고 다른 모든 layer는 다음과 같은 leaky ReLU를 사용한다.

    leaky ReLU 공식

    최종 출력에서 SSE(Sum-Squared-Error)에 대해 최적화한다. SSE가 최적화 하기 쉽기때문에 사용하지만 이는 mAP를 최대화하는 최종 목표와 완벽하게 일치하지 않는다. localization loss와 classification loss의 가중치를 동등하게 부여하는 것은 이상적이지 않을 수 있으나 SSE 최적화 loss에서는 이 두 loss에 대해 동일한 가중치를 부여한다. 또한 많은 grid cell에 대해 object가 없다. object가 없다면 confidence score가 0이 되고 0이 되도록 학습이 될것이다. 이는 모델의 불안정성을 초래한다.

     

    이를 해결하기 위해 bounding box 예측에서 loss 가중치를 늘리고 object를 포함하지 않는 box에 대한 confidence loss에 대해 가중치를 줄인다. 이를 각각  λ_coord=5, λ_noobj=0.5로 설정했다.

     

    SSE는 큰 box와 작은 box의 loss에 대해 가중치를 동일하게 부여한다. 큰 box의 변화에 비해 작은 box의 변화에 더 민감하다는 것을 반영하기 위해 너비와 높이에 제곱근을 취했다. 너비와 높이에 제곱근을 처리함으로써 증가율을 감소시켜 loss에 대한 가중치를 감소시키는 효과가 있다.

     

    YOLO는 grid cell 당 여러 개의 bounding box를 예측한다. Train 단계에서는 하나의 bounding box 예측이 하나의 object에 대한 책임이 있어야 한다. 따라서 하나의 object에 대해 가장 높은 IoU 값을 가지는 하나의 bounding box만 선택해야 한다. 이렇게 학습된 bounding box predictor는 특정 크기, 가로-세로 비율, object class를 더 잘 예측하여 recall을 향상시킨다.

    학습 중에 다음과 같은 multi-part loss function을 최적화한다.

    YOLO v1의 loss function

    1_obj_i는 object가 존재하는 cell i를 의미하고, 1_obj_ij는 object가 존재하는 cell i의 j번째 예측 bounding box j를 의미하고, 1_noobj_ij는 object가 존재하지 않는 cell i의 bounding box j를 의미한다.

     

    Loss function은 해당 grid cell에 object가 있는 경우에만 classification error에 패널티를 준다(따라서 앞에서 설명한 조건부 클래스 확률). 또한 예측 변수가 ground truth box (즉, grid cell 셀에서 예측 변수 중 IoU가 가장 높은 경우)에 대해 "responsible"인 경우에만 bounding box coordinate error에 패널티를 준다.

     

    즉,

    첫번째 줄 식: Object가 존재하는 cell i의 predictor bounding box j에 대해, x와 y의 loss를 계산.

    두번째 줄 식: Object가 존재하는 cell i의 predictor bounding box j에 대해, w와 h의 loss를 계산.

         (큰 box에 대해서는 small deviation을 반영하기 위해 제곱근을 취한 후, sum-squared error를 한다.(같은 error라        도 larger box의 경우 상대적으로 IOU에 영향을 적게 준다.))

    세번째 줄 식: Object가 존재하는 grid cell i의 predictor bounding box j에 대해, confidence score의 loss를 계산.
    네번째 줄 식: Object가 존재하지 않는 grid cell i의 bounding box j에 대해, confidence score의 loss를 계산.
    마지막 줄 식: (5) Object가 존재하는 grid cell i에 대해, conditional class probability의 loss 계산.

         (Correct class c: pi(c)pi(c)=1, otherwise: pi(c)pi(c)=0)

     

    PASCAL VOC 2007과 2012의 train 및 validation dataset에 대해 약 135 epochs에 걸쳐 네트워크를 학습한다. 2012 test 시 train을 위한 VOC 2007 test data도 포함되어 있다. Train 중 batch size=64, momentum=0.9, decay=0.0005를 사용한다.

     

    Learning rate는 다음과 같다. 첫 번째 epoch의 경우 우리는 learning rate를 0.001에서 0.01로 서서히 높인다. 높은 learning rate로 시작하면 gradient explosion이 발생한다. 우리는 75ephos는 0.01, 30ephos는 0.001, 30ephos는 0.0001로 학습한다.

     

    Overfitting을 피하기 위해 dropout과 광범위한 data augmentation을 사용한다. 첫 번째 connected layer 이후 rate=0.5인 dropout layer는 layer 간의 co-adaptation을 방지한다. Data augmentation를 위해 원래 이미지 크기의 최대 20%에 해당하는 random scaling 및 random tranlation을 적용한다. 또한 HSV 색 공간에서 이미지의 노출과 포도를 최대 1.5배까지 임의로 조정한다.

     

     

     

     

     

    References

    curt-park.github.io/2017-03-26/yolo/

    bkshin.tistory.com/entry/%EB%85%BC%EB%AC%B8-%EB%A6%AC%EB%B7%B0-YOLOYou-Only-Look-Once

    www.youtube.com/watch?v=L0tzmv--CGY

    반응형

    댓글

Designed by Tistory.