[논문 리뷰] You Only Look Once: Unified, Real-Time Object Detection (YOLO)

SimBa's avatar
Feb 10, 2025
[논문 리뷰] You Only Look Once: Unified, Real-Time Object Detection (YOLO)
  • bounding box prediction과 class probability를 하나의 네트워크에 합침
  • whole detection pipeline이 singel network → end-to-end로 최적화 가능
  • 매우 빠름 (실시간으로 1초당 45개의 frame 처리 가능)
  • SOTA detection system과 비교했을 때, YOLO가 더 많은 localization error를 만들지만, 배경에 대해 flase positive는 덜 발생시킴
  • YOLO는 object의 일반적인 표현을 더 잘 학습
  • DPM과 R-CNN을 포함한 다른 detection method보다 더 뛰어남
 
 

1. Introduction

  • object detection을 위한 빠르고 정확한 알고리즘은 특별한 센서 없이 컴퓨터가 차를 운전하고, 보조 장치가 인간 운전자에게 실시간 풍경정보를 제공
  • 최근의 detction system은 classifier가 detection을 수행하게 함
    • DPM(deformable parts models) : 전체 이미지에서 sliding window에서 classifier 작동
    • R-CNN
      • potential bounding boxes 생성
      • proposed boxes에 대해 classifier 적용
      • post-processing으로 bounding box 정제
      • 중복된 detection 제거
      • 다른 object에 기반하여, boxes에 대해 rescore
      • → 각각의 개별적인 요소를 따로 학습시켜야하기 때문에 느리고 최적화하기 힘듦
  • single regression problem으로 object detection 고안
    • images pixel부터 bounding box 조정과 class probability까지 한번에!
    • 이미지에서 어떤 객체가 어디에 존재하는지를 한번에 알 수 있음
  • YOLO
    • 모든 이미지에 대해 학습 → detection 수행을 직접적으로 최적화
    • YOLO는 빠름
      • 복잡한 pipeline이 필요하지 않음 → test 시에 single neural network만 수행하면 됨
    • 기존의 실시간 시스템보다 평균적으로 정확도가 약 2배 높음
    • 예측을 할 때, 전체적으로(globally) 고려
      • sliding window처럼 region proposal-based techniques 사용 X
      • 학습과 테스트 시에, 전체 이미지를 봄 → 클래스와 생김새에 대해 contextual 정보를 인코딩
      • top detection method인 Fast R-CNN은 larget context를 보지 못함 → background patch에서 실수를 많이 함
      • YOLO는 Fast R-CNN과 비교했을 때, backgroud error 발생 횟수가 약 절반임9
    • YOLO는 객체의 일반적인 표현을 학습
      • 넓은 범위(wide margin)을 학습 → DPM과 R-CNN과 같은 방법의 detection 능력을 능가
    • YOLO는 실시간으로 객체를 탐지하지만, SOTA detection system보다는 정확도가 낮음
    • notion image
 
 

2. Unified Detection

  • object detection의 분리 되어 있었던 요소를 single neural network로 합침
  • 전체 이미지에서 bounding box를 예측하기 위해 feature 활용 → 모든 bounding box에 대해 모든 class를 동시에 확인 및 예측 (즉, 이미지에 있는 모든 객체에 대해 전역적으로 추론)
  • 평균적으로 높은 정확도를 유지하면서 실시간으로 예측이 가능하며, end-to-end trainaing이 가능
  • 과정
    • input image를 (S, S) grid로 나눔 → 객체가 그리드 셀의 가운데에 위치 → 해당 그리드 셀은 object detecion을 하게 됨
    • 각 grid cell은 다음과 같은 정보를 예측
      • B개의 bounding box (bounding box 좌표, confidence score)
        • confidence score = (객체가 있을 확률) * IOU((predicted box & ground truth 교집합)/(predicted box & ground truth 합집합))
        • 만약, 해당 cell 안에 object가 없음 → confidence score = 0
        • 해당 cell 안에 object가 있음 → confidence score이 “(predicted box와 ground truth 의 교집합) / (predicted box와 ground truth의 합집합) “ (IOU)와 같아지도록 하고자 함
        • bounding box는 5개로 구성됨 (, confidence)
      • C개의 class probability
        • : 각 객체가 특정 클래스에 속할 확률
        • bounding box의 개수에 상괎없이 class probability는 1개만 예측
        • C = labeled class 개수
    • test time때, conditional class probability와 개별 box confidence prediction 곱함
    • notion image
    • 위의 공식을 통해 class-specific confidence score을 알 수 있음
    • 이와 같이 구한 class-specific confidence score는 box에 해당 class가 출현했을 확률과 prediction box가 object에 얼마나 잘 맞는지를 둘 다 인코딩
      • 인코딩 공식
      • notion image
notion image
 

2.1 Network Design

  • initial Conv layer : 이미지로부터 특징 추출
  • fc layer : 확률과 좌표 예측 결과
  • architecture
    • 24개의 Conv layer과 2개의 fc layer
    • (3, 3) Conv layer 이후에는 feature space를 줄이기 위해 (1, 1) Conv laye로 변경
    • (224, 224) input image에 대해 ImageNet classification task로 사전학습 → 이후, detection을 위해 해상도를 2배
    • notion image
  • Fast YOLO : 24개 대신 9개의 Conv layer 사용 & 각 layer에도 원래보다 더 적은 filter 사용
  • (S * S) grid로 (7 * 7)로 나누었고, 각 grid cell에서 bounding box는 2개 추출 test data였던 PASCAL VOC가 20개의 labelled class를 갖고 있음(S=7, B=2, C=20) → output = (7, 7, 30)
 

2.2 Training

  • ImageNet 1000-class dataset에 대해 사전학습
    • 처음 20개 conv layer → average pooling → fc layer
  • detection을 위해 model 변형
    • 사전학습 시 사용했던 model + 4개의 conv layer추가 → 2개의 fc layer
    • 추가된 layer : randomly initialized weights
    • detectiton은 fine-grained visual information 필요 → (224, 224)였던 input 해상도를 (448, 448)로 올림
    • final layer은 class probability와 bounding box coordinates를 모두 예측해야 함
      • bounding box width & height : 이미지 전체 width, height로 나누어서, 좌표값이 [0,1] 범위 내에 있도록 정규화
      • bounding box x, y 좌표 : grid cell 위치를 기준으로 offset 형태로 표현 → [0,1] 범위 내로 제한
      • 💡
        [offset 형태로 표현]
        notion image
        notion image
      • final layer의 linear activation function를 사용하며, 나머지 layer에서는 Leaky ReLu(non-linear) 사용
      • notion image
    • sum-squared error(SSE)
      • 최적화하기 쉬움
      • 예측값과 실제값 간의 차이를 제곱하여 모두 더한 값
    • SSE의 단점 1
      • SSE는 목표로 하는 average precision을 극대화하는 것과 완전히 일치하지 않음
      • SSE는 localization error과 classification error을 동일하게 가중치를 두고 처리 → 아래의 이유 때문에 localization error와 classification error을 동일하게 가중치를 두고 처리하는 것이 항상 옳은 것은 아님
      • 많은 grid cell은 실제 객체를 포함하지 않기 때문에 이들의 confidence score이 0에 가까워짐 → 객체가 있는 cell들의 gradient가 약해지게 되며, 결국 모델의 불안정성을 초래하며 발산하게
    • 해결방안 1
      • 해당 box에 객체가 없을 경우, bounding box 좌표에 대한 loss는 증가, confidence prediction에 대한 loss 는 감소
    • SSE의 단점 2
      • large box와 small box에 대해 가중치를 동일하하게 둠
      • 하지만, 우리는 large box에서는 small box에서보다 더 작은 표준편차를 써야함
    • 해결방안 2
      • bounding box의 width와 height의 제곱근 예측
  • YOLO는 하나의 grid cell에 대해 여러 개의 bounding box를 예측
    • 그런데, 우리는 각 객체에 대해 하나의 bounding box predictor만 보고 싶을 수 있음
    • ground truth에 대해 현재 가장 높은 IOU 값을 가진 predictor에게 “reponsible”을 부여
      • 각 predictor는 현재 예측 값과 실제 객체의 겹침 정도(IOU)가 가장 큰 예측에 대해서만 책임을 짐 → 각 predictor는 서로 다른 객체 크기, 비율, 객체 클레스에 대해 더 잘 예측
      • predictor가 특정한 객체의 특성에 맞춰 훈련됨
      • 예를 들어, 작은 객체를 잘 찾는 predictor가 있고, 큰 객체를 잘 찾는 predictor가 있을 수 있음 → 각각의 predictor가 특정 크기나 클래스에 대해 특화(specialized)되면, 전체 모델이 더 정확하게 객체를 탐지할 수 있음
      • 각 predictor가 특화되면, 다양한 크기나 형태의 객체를 더 잘 예측할 수 있음 → 전체 모델의 recall 개선
  • 다음과 같은 multi-part loss function을 최적화
    • notion image
      notion image
  • batch size = 64
  • drop out layer rate = 0.5
  • data augmentation : random scaling, translation
  • PASCAL VOC는 98개의 bounding box 예측
 

2.3 Limitations of YOLO

  • 각각의 그리드 셀에 대해 2개의 box와 한 개의 클래스만 예측할 수 있음 → 한계점….. → 모델이 예측할 수 있는 주변 객체의 개수에 제약을 줌
  • 따라서, 이 모델은 집단으로 나오는 작은 객체를 탐지하는 것을 어려워 함
  • bounding box를 예측하는 것을 학습 → 일반화시키기 어려움
 
 

3. Comparison to Other Detection Systems

  • 보통의 detection pipeline
    • input image로부터 robust feature 추출 → feature space에서 classifier 이나 localizers 이 사용됨
  • 위와 같은 detection pipeline과 YOLO의 차이점
    • Deformable Parts Models(DPM)
      • 객체 탐지를 위해 sliding window 방식을 사용
      • DPM은 정적인 특징을 추출하고, 영역을 분류하며, 높은 점수를 받은 영역에 대해 bounding box를 예측하는 등의 작업을 개별적으로 수행하는 분리된 파이프라인을 사용
      • YOLO는 위와 같이 분리된 작업을 하나의 CNN으로 대체
        • feature extraction, bounding box prediction, non-maximal suppression, and contextual reasoning 을 동시에 시행
        • 정적인 특징과 달리, YOLO는 특징을 직접 학습하며, detection task에 대해 최적화
        • DPM보다 더 빠르고 정확함
    • R-CNN
      • sliding window 대신 resgion proposal 사용
      • Selective Search 알고리즘이 potential bounding box 생성 → CNN이 특징을 추출 → SVM(서포트 벡터 머신)이 해당 박스들의 점수를 매김 → linear 모델이 바운딩 박스를 보정하며, 비최대 억제(Non-Max Suppression, NMS) 기법을 통해 중복된 검출을 제거
      • 하지만, R-CNN은 위와 같은 복잡한 파이프라인을 모두 독립적으로 조정해야 함 → 느림
      • YOLO는 potential bounding box를 추출하고, 이 박스들에 대해 conv feature을 이용해서 점수를 매긴다는 것이 비슷하지만, 위와 같은 복잡한 과정을 하나의 최적화된 모델로 구현했으며, 이미지 당 98개라는 더 훨씬 적은 bounding box를 추출 → 더 빠름
      • 💡
        [Selective Search]
        • 객체가 있을 법한 region proposal을 생성하는 알고리즘
        • 이미지를 작은 영역들로 분할 → 유사한 영역을 합쳐서 점점 큰 영역을 생성 → 최종적으로 객체가 있을 법한 bounding box들을 생성
        • 즉, 이미지의 픽셀을 분석해서 “여기가 객체일 가능성이 높다!”라고 판단되는 영역을 선택
         
        [SVM (Support Vector Machine)]
        • 평면을 기준으로 “객체 0 vs. 객체 X” 를 판별하는 모델 (이진 선형 분류)
         
        [NMS(Non-Max-Supression (NMS)]
        • 중복 제거 알고리즘
        • 같은 객체를 여러 개 검출했을 때, 가장 좋은 bounding box 만 남기고 나머지는 제거하는 과정
        • bounding box를 confidence score 기준으로 정렬 → 가장 높은 cofidence score를 가진 박스 선택 → 이 박스와 겹치는 다른 박스들을 IoU 값 기준으로 제거 → 남은 bounding box 중에서 다시 반복
    • Other Fast Detector
      • Fast & Faster R-CNN은 R-CNN의 속도를 높이기 위해 Selective Search 대신 신경망을 사용 → 하지만, 실시간 객체 탐지를 위해서는 여전히 속도가 느림
      • YOLO는 구조상 하나의 CNN으로 작업이 이루어지기에 속도도 빠르고, 다양한 객체를 동시에 탐지할 수도 있음
    • Deep MultiBox
      • YOLO와 MultiBox 둘 다 bounding box를 예측하기 위해 CNN을 사용
      • 하지만, MultiBox는 general object detection은 불가능 (즉, 더 큰 detection pipeline의 일부분임) → 이와 반대로, YOLO는 완전한 detection syste임
    • OverFeat
      • OverFeat는 sliding window detection을 효율적으로 수행하며, 여전히 분리된 시스템임. 또한, detection이 아닌, localization을 위해 최적화
      • DPM과 마찬가지로 예측을 할 때, local information만 고려 → global context는 추론할 수 없음
    • MultiGrasp
      • 예측하기 위해 하나의 객체만 포함하고 있는 하나의 graspable region만 있으면 됨
      • 객치의 위치, 크기, 바운더리도 필요 없음. grasping하기에 적합한 영역만 찾으면 됨
      • 하지만, YOLO는 bounding box와 class probability까지 예측
       
 
Share article

심바