Group Study (2024-2025)/Machine Learning 심화

[ML 심화] 6주차 스터디 - YOLO

withyou__ 2024. 11. 12. 15:27

[Paper Review] You Only Look Once

Introduction

  • 이미지가 클래스에 속할 확률
  • 이미지 클래스 뿐만 아니라 어디에 위치하는 지에 대한 물체의 위치
  • 이미지 내 멀티 오브젝트 파악 가능
    • 고양이 강아지 각각 예측 가능
    • 클래스에 속할 확률

1- stage vs 2 - stage

  •  1-stage
    • localization과 classification을 동시에 수행하여 결과를 얻음
    • 이미지 내 모든 위치를 물체의 잠재영역으로 보고 각 후보영역에 대해 class 예측
  • 2-stage
    • localization을 하고 classification을 하는 방식으로 순차적으로 수행하여 결과를 얻음
    • region proposal을 통해 후보 object 위치를 먼저 제안하고 object의 클래스를 예측한다는 차이점 존재

You Only Look Once : Unified, Real-Time Object Detection

제목에서 의미 파악 가능

  1. You Only Look Once = 전체 이미지 보는 횟수가 1번이라는 것
  2. Unified = classification & localization 단계가 단일화되었다는 것 (one-stage 방식)
  3. Real - Time = 속도가 개선되었다는 것

Main contribution

  1. object detection을 regression problem으로 관점을 전환함
  2. 하나의 신경망으로 classfication과 localization을 예측함
  3. DPM, RCNN 모델보다 속도를 개선
  4. 여러 도메인에서 object detection 가능
  • 여러가지 단계로 이루어지던 것을 모두 원 스테이지로 통합했다는 것이 가장 큰 의미
  • 이미지 전체로 얻은 feature map 을 활용해서 바운딩 박스와 모든 클래스에 대한 확률 계산
  • input 이미지를 SxS 그리드로 나누고 그것을 이제 박스 리그레션 하는 하나의 스테이지와 각 그리드 셀마다 클래스 확률 맵을 계산하는 것이 병렬적으로 수행

Google Net

  • 주로 사용한 모델의 구조
  • 앞에 총 20개의 conv 레이어는 1000개 클래스 이미지넷을 활용하여 pretrained됨
  • 이후 4개의 conv 레이어와 2개의 fully connected layer를 추가로 붙여서 PASCAL VOC 데이터에 대해서 fine-tuned하는 과정을 거
  • conv 레이어를 많이 쌓으면 많이 쌓을수록 연산 양이 점점 증가하여 중간에 노란색으로 표시된 것처 리덕션 레이어를 삽입하여 연산 양을 감소시킴

Training Stage

앞에서는 YOLO 모델에서 어떻게 아웃풋을 내는지에 대해서 다뤘다면 이제는 이 과정을 어떻게 학습할 것인지에 대해 다룰 것

특정 물체에 대해서 리스펀스블한 셀을 먼저 찾아야됨

→ Groundtruth 박스의 중심이 위치하는 셀로 할당

따라서 위의 사진의 하늘색 박스가 강아지라는 물체를 예측하는데 리스펀스블한 셀이 되는 것

  • 인퍼런스 단계에서는 욜로가 굉장히 여러 개의 바운딩 박스를 예측하는 것으로 나타났지만 학습을 할 땐 딱 하나만 사용
  • 선정 기준은 IOU를 활용
    • 학습 단계에서 groundtruth와 iou가 가장 높은 예측 박스 하나만을 사용해서 학습을 진행
  • 1obj 라고 써져있는 스칼라 값을 통해서 cell i에서 responsible한 j번째 바운딩 박스를 표시하여 loss function에 반영
  • 그림 설명
    • 사진에 있는 남색 박스와 노란색 박스는 conv layer를 통해 우리가 얻어 예측한 바운딩 박스를 의미함
    • 우리는 두 개를 모두 사용하는 것이 아니라 빨간색 박스와 겹치는 비율이 가장 높은, 즉 iou가 가장 높은 바운딩 박스 1개만을 사용하게됨
    • 그럼 이미지에서 볼 수 있다시피 노란색 박스와 빨간색 박스가 겹치는 부분이 많으므로 학습에 노란색 박스만 사용

Loss Function

  • 트레이닝 단계에서 사용하는 loss function은 mean-square error를 활용
  • 요약하자면 그리드 셀에 오브젝트가 존재하는 경우 - 오차와 프리딕터 박스로 선정된 경우의 오차만을 학습함

Experiment1

  • 욜로라는 모델의 성능과 속도를 비교한 것
  • pascal voc 2007이라는 데이터 활용하여 진행
  • 소프트웨어의 경우 fast yolo가 가장 빨랐음
  • 성능의 경우에는 faster-rcnn이 가장 좋았음

Experiment2

  • YOLO와 Fast R-CNN을 비교해서 각각 어느 부문에서 에러율이 높은지를 분석한 것
  • 욜로 같은 경우에는 페스트모델보다 백그라운드 에러는 훨씬 감소함 → 백그라운드에 아무것도 없는데 있다고 할 확률을 줄였다는 것

Experiment3

  • YOLO가 도메인의 robust한 detection 알고리즘이다라는 것을 이 실험을 통해 알 수 있음
  • 피카소 데이터 셋과 피폴 아트 데이터를 활용하여 사람을 찾아내는 people detection task를 진행

Limitation

  • 작은 물체에 대해서 탐지 성능 낮음
    • object가 크면 바운딩 박스간의 iou 값의 차이가 커져서 적절한 predictor를 선택할 수 있긴 하지만 object가 작으면 근소한 차이로 predictor가 결정되기 때문
  • 일반화된 지식이랑은 다르게 object 비율이 달라지면 detection 성능이 낮아짐

 

[Paper Review] YOLO9000: Better, Faster, Stronger

Main contribution

논문에서는 2가지의 모델을 제안

  1. YOLOv2를 제안: v1의 단점을 개선하여 연산을 빠르게 하고 정확도는 높임
  2. YOLO9000를 제: detection dataset의 적은 class 개수로 인한 예측 가능한 클래스의 개수를 증가시킴
    1. classification dataset과의 joint training을 통해 존재하지 않는 object class에 대한 예측도 가능해짐
  3. 새로운 classification network인 Darknet-19를 통해 성능을 향상시키고자 하였음

YOLOv2

Better

정확도를 올리기 위한 방법

  • batch normalization
    • 논문에서는 모든 conv layer 뒤에 batch normalization을 추가->이를 통해 mAP 값이 2% 정도 향상
    • 또한 overfitting 없이 기타 regularization 방법이나 dropout을 제거가능해짐
  • high resolution classifier
    • YOLO v1 모델은 Darknet을 224x224 크기로 pre-train시켰지만 detection task 시에는 448x448 크기의 이미지를 입력으로 사용
    • → 이는 네트워크가 object detection task를 학습하면서 동시에 새로운 입력 이미지의 resolution(해상도)에 적응해야 함을 의미함
    • YOLO v2 모델은 처음부터 Darknet을 448x448 크기로 pre-train시켜 네트워크가 상대적으로 높은 해상도의 이미지에 적응할 시간을 제공하고 이를 통해 mAP 값이 4% 정도 향상됨
  • convolutional with Anchor Boxes
    • YOLO v2에서는 anchor box를 도입하며, 이 과정에서 네트워크를 수정
      • anchor box를 사용하면 mAP 값이 감소하지만 recall 값이 상승하고, 이는 모델이 더 향상될 여지가 있음 나타냄
    • Object detection task에서 recall 값이 높다는 것은 모델이 실제 객체의 위치를 예측한 비율이 높음을 의미→ YOLO v1이 recall 값이 낮은 이유는 region proposal 기반의 모델에 비해 이미지 당 상대적으로 적은 수의 bounding box를 예측하기 때문 / 하지만 YOLO v2에서 anchor box를 통해 더 많은 수의 bounding box를 예측하면서 실제 객체의 위치를 보다 잘 포착하게 되고 이를 통해 recall 값이 상승하게 됨
  • dimension clusters
    • 기존에는 anchor box의 크기와 aspect ratio를 사전에 미리 정의했음 → 하지만 논문의 저자는 만약 네트워크가 더 좋은 조건으로 학습을 시작하기 위해 더 나은 사전 조건을 선택한다면 detection 성능이 향상될 것이라고 봄
    • 이를 위해 k-means clustering을 통해 최적의 prior을 탐색하는 방법을 제시함
    • 이 때 데이터 셋에 있는 모든 ground truth box의 width, height 값을 사용하여, k-means clustering 수행함
    • 일반적인 k-means clustering의 경우 유클리안 거리(Euclidean distance)를 통해 centroid와 sample간의 거리를 계산하지만 이러한 distance metric을 사용할 경우 큰 bounding box는 작은 box에 비해 큰 error를 발생시키는 문제가 발생됨
    • 하지만 box의 크기와 무관하게 선택한 prior이 좋은 IoU 값을 가지도록 하기 위해서 논문의 저자는 새로운 distance metric을 사용함
    • → 이는 box와 centroid의 IoU값이 클수록 겹치는 영역이 크기 때문에 거리가 가깝다는 점을 나타냄
  • direct location prediction

      • grid cell에 상대적인 위치 좌표를 예측하기로 함
      • 예측하는 위치의 범위가 정해짐으로써 네트워크는 안정적으로 학습을 진행하는 것이 가능해짐
      • Dimension clustering을 통해 최적의 prior를 선택하고 anchor box 중심부 좌표를 직접 예측함으로서 recall값이 5% 정도 향상가능
    • fine-grained features
    • multi-scale training
      • 다양한 입력 이미지를 사용하여 네트워크를 학습시킴으로써 모델을 좀 더 강력하도록 함 

Faster

detection 속도를 향상시키기 위한 방법

Darknet-19

YOLO v2는 Darknet-19라는 독자적인 classification 모델을 backbone network로 사용

  • YOLO v2의 Darknet-19는 마지막 layer에 global average pooling을 사용하여 fc layer를 제거하여 파라미터 수를 감소시키고, detection 속도를 향상시킴

YOLO9000

stronger

더 많은 범위의 class를 예측하기 위한 방법