You Only Look Once 논문 요약 및 정리

Mechboy·2024년 4월 11일

논문 분석

목록 보기
3/5

You Only Look Once: Unified, Real-Tim Object Detection 논문에 대한 정리 내용
논문 출저 : https://arxiv.org/abs/1506.02640

2025-01-28 1차 수정

요약

Introduction

  • 현재 감지 시스템은 Classifier를 재구현하여 사물 인식에 활용하고 있음. 즉 Classification으로 사물을 분류한뒤 위치와 사이즈를 평가하는 방식으로 되어있음
  • 최근의 접근접은 R-CNN과 같이 영역 접근 하는 방식으로 Potential bounding boex를 생성하고 Classifier를 실행 함. 그 후, 이미지 후처리를 통해 바운드 박스를 재정의하고 중복된 영역을 삭제하고 재 정의 된 박스를 기준으로 사물의 점수를 판단.
  • 복잡한 파이프 라인 구성으로 인해 처리속도가 느리고 최적화 하기 힘든 문제가 발생 했음

You only look once (YOLO)

  • 기존의 복잡한 R-CNN의 파이프라인을 단수화 시키고 단일 회귀 모델로 분류하기 위해서 Yolo 모델을 활용

  • Yolo는 CNN을 활용하여 박스를 바운딩 하고, 분류 된 박스를 분류하는 알고리즘을 한번에 구현함

YOLO 장점

    1. 처리속도가 빠름
      rame detection로 분류 자체를 단순화 시켰기 때문에 파이프라인을 복잡하게 짤 필요가 없음. Yolo로 Video에서 실행할 시 레이턴시가 대략 25ms로 우수함
    1. 모든 이미지 영역을 처리
      슬라이딩 윈도우와 영역 제안 기반 기술과는 달리 YOLO는 훈련 및 테스트 시에 이미지 전체를 볼 수 있으므로 클래스 및 외관에 대한 맥락정보를 암시적으로 획득이 가능함. 기존 R-CNN의 경우 배경을 잘못읽어 오인식이 되는 경우가 있는데 Yolo는 그런 부분이 없음
    1. 일반적인 사물의 특성을 학습
      실제 이미지와 그림을 학습시킬 때, 새로운 도메인이나 예상치 못한 입력에도 대응이 가능함

Unified Detection

  • 객체 검출의 별개 구성 요소들을 하나의 신경망으로 통합
  • 입력 이미지로 S×SS\times S 사이즈로 분리, 객체의 중심이 그리드 셀안에 위치 하면해당 그리드셀은 해당 객체를 감지하는 역할로 사용. 이미지 원본 크기에서 S×SS\times S 로 나눈 개별구간에서 오브젝트가 몇개가 있든 상관없이 대표적으로 하나만 선택된다고 보면된다.
  • 개별 그리드 셀은 Bounding Box 와 Confidence score를 예상. 이 스코어는 어떤 사물이 박스안에 들어있는지와 박스가 예상하는것이 얼마나 정확한지에 대해서 평가함.
    • 해당 논문에서는 Bounding Box가 2개가 사용
    • 각 그리드셀 하나당 B×5+ClassnumB\times5+Class_{num} 의 데이터가 저장 된다고 보면 된다.
    • 최종적으로 Class가 20개이고 바운딩 박스가 2개가 있다면, 2×5+202\times5+20 으로 총 30개의 텐서로 바운딩 박스의 정보를 평가한다고 보면 됨.
  • 이 스코어는 Pr(Object)IOUpredtruthPr(Object) * IOU_{pred}^{truth} 으로 표현됨. 사물이 없는 경우에는 0으로 표현
  • IOU는 예측된 바운딩 박스와 실제 객체의 교차 영역을 전체 영역으로 나눈값
  • confidence score를 예측된 상자와 실제 상자 사이의 IOU(Intersection over Union, IOU)와 같도록 설정

Bounding box

바운딩 박스는 아래의 5가지 예상치로 구성되어 있음

  • (x,y)(x,y) : 박스의 중심 좌표
  • width, height : 전체 이미지에서 상대적인 크기
  • confidence : 다른 박스들과 해당 박스의 상대적인 IOU

Grid cell

  • 각 그리드 셀은 조건부 클래스 확률 C로 표현함. 이 확률은 그리드셀에 해당 사물이 들어 있는 확률을 계산함
    Pr(ClassiObject)Pr(Class_i | Object)
  • 각 그리드셀당 확률의 집합으로 표현하고 Bounding Box의 수와 독립적으로 계산

Test

  • 조건부 클래스 확률과 각 박스의 confidence predction을 곱하여 개별박스의 class-specific confidence score를 계산함
  • 해당 클레스가 박스에 나타날 확률과 예측된 상자가 사물을 잘 맞는지데 대한 점수를 인코딩

Network Design

  • CNN으로 데이터를 구현 후 Pascal VOC 검출 데이터셋으로 평가 진행
  • 네트워크 초기 컨볼루션 레이어는 이미지의 특성을 추출하고 그 뒤 완전 연결 레이어에서 출력 확률과 좌표를 예측.
  • 해당 모델에는 24개의 CNN과 2개의 완전 연결 레이어가 있음
  • 객체의 빠른 검출을 위해 Fast YOLO로 훈련 더 적은 수의 CNN(9개)더 적은 수의 필터를 사용하는 신경망을 사용.
  • 네트워크 크기를 제외하고는 Yolo 및 Fast Yolo 간에 모든 훈련 및 테스트 매개변수는 전부 동일함
  • CNN에서 최종 출력은 77307*7*30 사이즈의 텐서로 출력. 각각의 그리드셀에서 2개의 바운딩 박스와 해당 바운딩 박스에 대한 클래스 확률 및 박스 좌표를 인코딩

Training

  • ImageNet 1000클래스 대회 데이터셋에서 컨볼루션 레이어 사전 훈련 진행
  • 훈련은 첫20개의 CNN을 사용한 후 mean pooling 레이어와 FNN 레이어로 이어짐
    (Figure3 에서 마지막 7730 Conn.Layer를 제외하고 트레이닝 한다고 보면 됨)

Model to perform detection

  • Ren 등의 사전 훈련된 네트워크에 컨볼루션 및 연결레이어를 추가 하면 성능이 향상 되는것을 확인
  • 4개의 컨볼루션 레이어와 2개의 랜덤으로 초기화된 완전 연결 레이어를 추가
  • 검출에서는 높은 이미지 해상도를 필요하여 228228228*228 size에서 448448448*448 size로 네트워크 입력 해상도를 보간하여 진행

final layer

  • 최종 레이어에서는 분류 확률과 바운딩 박스를 예상함
  • 바운딩 박스의 너비와 높이를 이미지의 너비와 높이로 정규화 하여 0~1사이의 값으로 변환
  • 바운딩 박스의 X및Y좌표를 특성 그리드 셀 위치의 오프셋으로 매개변수화 하여 0~1사이로 제한
  • 가중치는 leaky Relu 함수 사용

Optimize

  • 네트워크의 출력값의 Sum-squared error를 이용해서 최적화를 진행.
    • 장점
    1. Sum-squared error를 사용하는 이유는 최적화가 쉽다
    • 단점
    1. 평균 정밀도를 최대화 하기 어려운 문제가 발생함
    2. 위치 오차와 분류 오차를 동일 하게 가중
    3. 이미지의 대부분 셀은 사물을 포함하지 않기 때문에 confidence score를 0으로 밀어 버리는 문제가 있음. 이러한 문제 떄문에 학습 초기에는 그래디언트가 발산되어 학습 난이도 증가
  • 위의 단점을 해결 하기 위해 객체를 포함하지 않는 상자의 위치 예측 손실을 증가시켜 confidence prediction를 줄일려고 함
  • λcoordλ_{coord}λnoobjλ_{noobj}라는 두 개의 매개변수를 사용
    λcoord=5λ_{coord}=5λnoobj=5λ_{noobj}=5 로 세팅
  • 바운딩 박스의 사이즈와 관련 없이 동일하게 오류를 가중 시키는 문제가 발생. 큰 상자의 작은 편차가 작은 상자의 편차보다 덜 중요하다는것을 반영 해야됨.
  • 각 바운딩 박스의 너비와 높이 대신, 바운딩 박스의 제곱근으로 예측함

Yolo Multibounding box Predict

  • YOLO는 각 그리드 셀 당 여러 개의 바운딩 박스를 예측
  • 훈련 시에는 하나의 바운딩 박스는 하나의 사물만 인식하도록 하여야 함
  • 특정사물에서 IOU 값이 가장 높은 예측값을 가진 바운딩 박스 지정하도록 하여야함
  • 각 Predictor는 특정 size,aspect ratios, 사물의 클래스, 전반적인 추론을 상향 시켜줌

Loss function

  • 1iobj1_{i}^{obj}은 셀 i에 객체가 있으면 1로 표현
  • 1ijobj1_{i*j}^{obj} 은 셀 i의 j번째 바운딩 박스가 Predictor로 해당 클래스에 대한 예측에만 관여를 한다는것을 나타냄
  • 위의 두 상수를 사용하여 해당 클래스에 대해 관여가 되어 있을 경우에만 Bounding box error 좌표 오류에 대한 Loss function 연산을 진행

Trainning eporch

  • Pascal Voc 2007 및 2012의 훈련 및 검증 데이터 셋에서 약 135 에포크로 진행

    Batch size = 64
    momentum = 0.9
    decay = 0.0005

  • learning rate는 epoch에 따라 변경

    • 초기 epoch에서는 learning late를 10310^{-3}% 에서 10210^{-2}로 점진적으로 증가.
      (높은 학습률에서 시작하면 학습모델의 가중치가 발산을 하는것을 방지, 구체적인 epoch는 발산이 되지 않는 영역에서 지정할 필요가 있음)
    • learningrate=102learning rate = 10^{-2}, 75 epoch를 훈련
    • learningrate=103learning rate = 10^{-3}, 30 epoch로 훈련
    • learningrate=104learning rate = 10^{-4}, 30 epoch로 훈련
  • 과적합을 피하기 위해 Drop out과 데이터 증강을 사용

    • 초기 connected layter 이후 Dropout = 0.5
    • 이미지 학습셋 증강은
    1. 원본 이미지에서 최대 20% 까지의 범위에서 무작위 스케일링 및 변환을 진행
    2. HSV scale로 이미지를 변환하여 random하게 saturation과 value를 변환

inference

  • 테스트 이미지에 대한 검출과 예측은 단일 네트워크 평가만 필요합니다.
  • PASCAL VOC에서 네트워크는 이미지 당 98개의 바운딩 박스와 각 상자에 대한 클래스 확률을 예측합니다.
  • YOLO는 분류기 기반 방법과 달리 단일 네트워크 평가만 필요하므로 테스트 시에 속도에서 이점
  • S*S 그리드 분류은 바운딩 박스 예측에서 공간적 다양성을 제한함
  • 기본적으로 어떤 그리드 셀에 객체가 속하는지 명확하며 네트워크는 각 객체에 대해 하나의 상자만 예측
  • 일부 큰 객체나 여러 셀의 경계에 가까운 객체는 여러 셀에 의해 잘 로컬라이즈될 수 있습니다. 비 최대 억제를 사용하여 이러한 다중 검출을 수정할 수 있습니다.
  • R-CNN이나 DPM과 마찬가지로 성능에 중요하지는 않지만, non-maximal suppression는 mAP에 2-3%를 추가합니다.

Limitation of Yolo

    1. 각 그리드 셀이 2개의 상자를 예측하고 하나의 클래스만 가질 수 있기 때문에 바운딩 박스 예측에 강력한 공간 제약이 있음. 이로 인해서 모델이 예측할 수 있는 인근 객체의 수를 제한함. 작은 개체가 여러개 있는 이미지에서 분류에 약점을 보임
    1. 바운딩 박스를 기반으로 학습하기 때문에 새로운 이미지나 종횡비가 바뀌는 이미지에 대한 것에 대한 일반화에 어려움이 있음
    1. 손실 함수가 바운딩 박스 Size에 관련없이 동일하게 처리함. 작은 바운딩 박스에서 작은 오류의 영향이 커지는 문제가 있음
profile
imageprocessing and Data science

0개의 댓글