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

이영락·2024년 8월 7일

CV & NLP 논문 리뷰

목록 보기
3/14

YOLO

참고자료


https://m.blog.naver.com/kisooofficial/223068590035

🏖️ 0 | Abstract


📢 기존의 multi-task(classification) 문제를 하나의 회귀(regression) 문제로 재정의.
  • YOLO 연구진은 객체 검출(object detection)에 새로운 접근방식을 적용.
  • 기존의 multi-task(classification) 문제를 하나의 회귀(regression) 문제로 재정의.
  • YOLO는 이미지 전체에 대해서 하나의 신경망(a single neural network)이 한 번의 계산만으로 bounding box와 클래스 확률(class probability)을 예측.
    • bounding box란 객체의 위치를 알려주기 위해 객체의 둘레를 감싼 직사각형 박스를 말함.
    • 클래스 확률이란 bounding box로 둘러싸인 객체가 어떤 클래스에 해당하는지에 관한 확률을 의미.
  • 객체 검출 파이프라인이 하나의 신경망으로 구성되어 있으므로 end-to-end 형식
  • YOLO의 통합된 모델을 굉장히 빠름(1초에 45 프레임 처리, Fast YOLO는 1초에 155 프레임 처리)

🏖️ 1 | Introduction


📢 object detection = `Single Regression Problem` 로 재정의.
  • straight from image pixels to bounding box coordinates and class probabilities (하나의 파이프라인)

  • trains on Full Images and directly optimizes dectection performance

  • Human visual system

    = Fast & Accurate

    • drive cars without specialized sensors, enalbe assistive devices
    • unlock potential for general purpose, responsive robotic systems
  • instance에 대한 분류기를 테스트 이미지의 다양한 위치와 스케일에서 평가

    = Slow & Hard(trained sepearately)
    • ex1 ) DPM : 분류기를 이미지 전체에서 균일하게 분포된 위치에서 실행하는 슬라이딩 윈도우
    • ex2 ) R-CNN은 지역 제안 방법을 사용하여 먼저 이미지에서 potential bounding box를 생성한 후, proposed box에서 분류기를 실행
  • https://blog.kakaocdn.net/dn/lqVvp/btqKv79n5Pr/lJJ0EoK0sb8kVrLShiMo7k/img.png

    https://blog.kakaocdn.net/dn/cL9cKl/btqKy788QMR/5ftoDDCloELFQGonSHkY31/img.gif

    YOLO의 장점

    1. 빠르다
      • 회귀 문제로 전환하였지만 복잡한 파이프라인 필요가 없음
    2. 예측할 때 image의 전체적인 부분에 대해 추론
      • classifier 방식(sliding window랑 region proposal-based technique)과 다름
      • Fast R-CNN의 경우에는 주변 배경에 대한 부분을 놓칠 수 있음
      • YOLO는 Fast R-CNN보다 50% 정도 수준의 background errors
    3. 일반화 성능이 매우 좋음(generalizable representation)
      • DPM과 R-CNN 같은 최첨단 탐지 방법보다 성능이 뛰어남
      • 새로운 도메인이나 예상치 못한 입력에 적용될 때도 성능 저하가 적음

    YOLO의 단점

    1. 정확도가 떨어짐!
      • 작은 객체를 정확하게 위치 지정하는 데 어려움을 겪음

    🏖️ 2 | Unified dectection


    YOLO

    :객체 검출의 개별 요소를 단일 신경망(single neural network)으로 통합한 모델

    • 각각의 bounding box를 예측하기 위해 이미지 전체의 특징을 활용 & 모든 클래스의 모든 bounding box 예측

        →  높은 정확성을 유지하면서 end-to-end 학습과 실시간 객체 검출이 가능

    YOLO는

    1) 입력 이미지(input images)를 S x S 그리드(S x S grid)로 나눔.

    2) 객체의 중심이 그리드 셀에 속하면, 해당 그리드 셀이 그 객체를 탐지

    (If the center of an object falls into a grid cell, that grid cell is responsible for detecting that object.)

    3) 각 그리드 셀은 B개의 경계 상자와 해당 상자의 신뢰도(confidence)를 예측.

    🫠 신뢰도?

    신뢰도(confidence score)는 모델이 bounding box에 객체가 있을 확률과 예측된 box가 얼마나 정확한지(ground truth와의 IOU)로 정의됨.

    https://blog.kakaocdn.net/dn/b7S5mF/btqKAA3AndN/CrPQJ4uUVDk1fptSufZ4B1/img.png

    경계 상자는 5개의 예측값(x, y, w, h, confidence)으로 구성

    (x, y): 그리드 셀 내의 경계 상자 중심, w와 h: 이미지 전체에 대한 상대적 크.

    https://blog.kakaocdn.net/dn/bnW22H/btqKuFlpsH7/cGHmZZsP0DJqQkR45GHZ01/img.png

    이는 그리드 셀 안에 객체가 있다는 조건 하에 그 객체가 어떤 클래스(class)인지에 대한 조건부 확률이다.

    https://blog.kakaocdn.net/dn/EWU74/btqKC95t54c/VH2dRhLcG2DX0TOg9TRFTK/img.png

    이 score는 bounding box에 특정 클래스(class) 객체가 나타날 확률(=Pr(Class_i))예측된 bounding box가 그 클래스(class) 객체에 얼마나 잘 들어맞는지(fits the object)(=IOU_pred^truth)를 나타낸다. (These scores encode both the probability of that class appearing in the box and how well the predicted box fits the object.)

    https://blog.kakaocdn.net/dn/pAZ1u/btqKwRZyvs0/rh9WqALOSVg9md4V9Dbmmk/img.png

    2. 1. Network Design

    https://blog.kakaocdn.net/dn/bcD1Ts/btqKBPsHQGp/Ku8dlxjrsyWFbcjv6XMnqk/img.png

    모델의 구조

    • 하나의 CNN(Convolutional Neural Network) 이용, 평가 방법은 PASCAL VOC 객체 탐지 데이터 셋으로 함
      • 컨볼루션 계층(convolutional layer) : 이미지로부터 특징을 추출
      • 전결합 계층(fully-connected layer) : 클래스 확률과 bounding box의 좌표(coordinates)를 예측
    • 24 CNN으로 feature extraction 하고 fully connected layers로 output( 7 x 7 x 30의 예측 텐서(prediction tensors)) 확률을 예측함
      • Fast YOLO의 경우에는 24가 아니라 9개만 사용
    • GoogleNet 모델에 영감을 받음(이건 이미지 분류)
      • GoogleNet과 다른 점은 inception으로 1 x 1 축소 계층(reduction layer)과 3 x 3 컨볼루션 계층의 결합을 사용

    2. 2. Training

    • Convolution Layer 사전 학습:
      • 처음 20개의 합성곱 층을 average poolingfully connected 층과 함께 사전 학습
      • 4개의 합성곱 층과 2개의 fully connected 층을 추가 (파라미터 랜덤 초기화)
      • 입력 크기를 224x224에서 448x448로 증가시킴(탐지 과정에서 세밀한 시각 정보가 필요)
    • 최종 층:
      • Bounding box의 확률과 객체 종류를 동시에 예측
      • Bounding box의 폭과 높이를 정규화 (normalizing)하여 0과 1 사이의 값으로 변환
      • 활성화 함수로 선형 활성화 함수 사용
    • 손실 함수:
      • 합-제곱 오차(SSE, Sum-Squared Error)를 사용
      • SSE의 문제점:
        • 최적화가 매우 쉽지만, localization error와 classification error를 동일하게 취급
        • 대부분의 이미지에서 많은 그리드가 객체를 포함하지 않음
          • 이로 인해 confidence가 0에 수렴하고, 모델의 불안정성이 증가
        • Bounding box의 크기가 다름에도 불구하고 오류를 동일하게 계산
      • 해결책:
        • Bounding box 예측 오류와 confidence 오류를 줄이기 위해 두 개의 파라미터 λcoord와 λnoobj를 사용 (λcoord = 5, λnoobj = 0.5)
    • 학습 환경
      • Epochs: 135 (PASCAL VOC 2007, 2012 데이터셋 사용)
      • Batch size: 64
      • Momentum: 0.9
      • Decay: 0.0005
      • Learning rate:
        • 초기 몇 에포크 동안 0.001에서 0.01로 증가
        • 75 에포크 동안 0.01 유지
        • 다음 30 에포크 동안 0.001 유지
        • 마지막 30 에포크 동안 0.0001 유지
      • Dropout: 0.5 (첫 번째 완전 연결 층 뒤에 사용)
      • Augmentation:
        • 이미지 크기를 원본의 최대 20%까지 랜덤 스케일링 및 변환
        • HSV 색 공간에서 최대 1.5배 노출 및 채도 조정

    https://mblogthumb-phinf.pstatic.net/MjAyMzA0MDhfMTMw/MDAxNjgwOTMwNjk0NzA3.59XU_ebAnWxXw8OhQHdGyw5MYQUmjZztu-coC8CIc2sg.7skO16mxK0UhL4tUmWCoTEjbjaIOQjk3XdV43NMQVzcg.PNG.kisooofficial/image.png?type=w800

    https://mblogthumb-phinf.pstatic.net/MjAyMzA0MDhfMjYz/MDAxNjgwOTMwNzA5ODU0.8spCK0SNH_lQVMI7jXYbS6nDpz6eQ57R2NpP6zYahJsg.Jk_hGQCvDIos1O2Fbrom8D4LpicnjBPZ92D244B18F4g.PNG.kisooofficial/image.png?type=w800

    2. 3. Inference

    • 객체를 탐지 → 하나의 network evaluation만 요구
      • PASCAL VOC : 98개의 bounding box와 각각 probabilities를 예측
    • 장점 : 하나의 single network만 요구 → 빠르다
    • 단점 : 하나의 객체를 여러 그리드 셀이 동시에 검출하는 경우 존재
      • 다중 검출(multiple detections) : 객체의 크기가 너무 커서 그리드 셀 경계에 인접하는 경우 (하나의 그리드 셀이 아닌 여러 그리드 셀에서 예측 가능성 있음)
      • 해결? non-maximal suppression이라는 방법을 통해 mAP를 2~3%가량 향상시킴

    2. 4. Limitations of YOLO

    1. 공간적 제약(spatial constraints)을 야기

    : '하나의 그리드 셀은 오직 하나의 객체만 검출하므로 하나의 그리드 셀에 두 개 이상의 객체가 붙어있다면 이를 잘 검출하지 못하는 문제'

    예를 들어, 새 떼와 같이 작은 물체가 몰려 있는 경우 공간적 제약 때문에 객체 검출이 제한적일 수밖에 없다.

    하나의 그리드 셀은 오직 하나의 객체만 검출하는데 여러 객체가 몰려있으면 검출하지 못하는 객체도 존재하는 것이죠.

    1. 새로운 종횡비(aspect ratio, 가로 세로 비율)를 마주하면 고전.

    2. 큰 bounding box와 작은 bounding box의 loss에 대해 동일한 가중치를 둠.

      부정확한 localization 문제 : 큰 bounding box에 비해 작은 bounding box가 위치 변화에 따른 IOU 변화가 더 심함.


    🏖️ 3 | Comparison to Other Detection Systems


    객체 탐지(Object Detection)는 컴퓨터 비전에서 중요한 문제.

    객체를 탐지하는 과정은 입력 이미지에서 중요한 특징을 추출하는 것에서 시작.

    Classifier or Localizer가 슬라이딩 윈도우 방식으로 전체 이미지 또는 이미지의 일부 영역을 검사

    Deformable Parts Models (DPM)

    • 방식: 슬라이딩 윈도우 접근법 사용
    • 특징:
      • 정적인 피처(static features) 추출
      • 지역(region) 분류
      • 경계 상자(bounding box) 예측
    • 차이점: 이러한 모든 과정들이 독립적인 파이프라인으로 분리되어 있다. 반면, YOLO는 이러한 파이프라인을 하나의 신경망으로 통합하여 특징 추출, 경계 상자 예측, 비최대 억제(non-maximal suppression) 등을 동시에 처리한다. 결과적으로 YOLO는 DPM보다 더 빠르고 정확하다.

    R-CNN (Region-Based Convolutional Neural Networks)

    • 방식: 지역 제안(region proposals) 방법 사용
    • 과정:
      • Selective Search로 잠재적 경계 상자 생성
      • CNN으로 특징 추출
      • SVM으로 경계 상자의 점수 매김
      • 선형 모델(linear model)로 경계 상자 조정
      • 비최대 억제로 중복된 탐지 제거
    • 문제점: 각 단계가 독립적으로 수행되므로, 최적화가 어렵고 속도가 매우 느림 (이미지 하나 처리하는 데 40초 이상 소요)
    • 차이점: YOLO는 단일 신경망을 사용하여 이러한 모든 절차를 통합적으로 수행하며, 각 그리드 셀에 공간적 제약을 두어 중복된 탐지를 줄임. 또한, R-CNN은 한 이미지당 약 2000개의 경계 상자를 예측하는 반면, YOLO는 98개의 경계 상자만 예측.

    Other Fast Detectors

    : Fast R-CNNFaster R-CNN은 R-CNN을 보완하여 속도를 개선한 모델이다.

    • Selective Search 대신 지역 제안을 위한 신경망을 사용한다.
    • YOLO와의 차이점: YOLO는 복잡한 파이프라인을 사용하지 않고, 단일 신경망으로 모든 단계를 수행하여 실시간 처리가 가능하도록 설계되었다.

    Deep MultiBox

    : CNN을 사용하여 관심 영역(regions of interest)을 예측.

    • 여전히 큰 탐지 파이프라인의 일부분으로 남아 있으며, 이미지 패치 분류를 추가로 필요.
    • YOLO와의 차이점: YOLO는 완전한 탐지 시스템으로 작동.

    OverFeat

    : CNN을 사용하여 로컬라이제이션과 탐지를 수행한다.

    • 독립적인 로컬라이저로 최적화되며, 글로벌 컨텍스트를 고려하지 못하므로 많은 후처리(post-processing)를 필요함.
    • YOLO와의 차이점: YOLO는 글로벌 컨텍스트를 고려하며, 단일 모델로 탐지 과정을 통합.

    MultiGrasp

    : 단순한 작업인 grasp detection을 위한 모델.

    • 단일 객체에 대해 graspable한 영역을 예측.
    • YOLO와의 차이점: YOLO는 다중 객체와 클래스에 대한 경계 상자와 클래스 확률을 예측.

    실험 결과

    YOLO는 PASCAL VOC 2007 데이터셋에서 다른 실시간 객체 탐지 시스템과 비교하여 성능을 평가한다. YOLO는 다른 실시간 탐지 시스템보다 두 배 이상 정확하며, VGG-16을 사용한 모델은 더 높은 정확도를 제공하지만, 실시간 성능을 희생한다. YOLO는 Fast R-CNN과 결합하여 성능을 향상시킬 수 있으며, 새로운 도메인에서도 잘 일반화된다.

    profile
    AI Engineer / 의료인공지능

    0개의 댓글