JSP's Deep learning

[Paper Review - Object Detection] 6. YOLOv3 : An Incremental Improvement 본문

Paper Review/Object Detection

[Paper Review - Object Detection] 6. YOLOv3 : An Incremental Improvement

_JSP_ 2023. 2. 26. 00:50

1. 요약

  • YOLOv3는 Residual 기법이 적용된 DarkNet-53 구조를 사용하였다.
  • 클래스 분류에 Logistic classifiers를 사용하였다.
  • K-means 클러스터링을 통해서 Bounding box priors을 구성했다.
    (Bounding box priors에 대해서는 뒤에서 설명한다)
  • 3-scales feature map을 사용하여 feature을 추출한다.
  • YOLOv3는 YOLOv2와 비교했을 때, 작은 객체에 대한 탐지 성능이 향상되었다.

 

2. 용어정리

1) Linear activation

[출처] https://towardsdatascience.com/activation-functions-neural-networks-1cbd9f8d91d6

  • f(x) = cx의 식을 가지는 선형 활성화 함수
  • 다중 출력이 가능하다.
  • 미분 값이 상수이기 때문에 오차역전파를 통한 학습이 불가능하다는 특징이 존재한다.

2) Upsampling

  • Deconvolution 과정으로, CNN을 거쳤던 feature을 거치기 전 상태로 되돌리는 연산을 수행한다.
  • pooling layer를 복원하는 방법
    • Nearest Neighbor Unpooling : 복원을 진행할 때, 값을 단순히 복제한다.
    • Bed of Nails Unpooling : 복원을 진행할 때, 정해진 위치에만 값을 저장하고 나머지는 0으로 만든다.
    • Max Unpooling : 복원을 진행할 때, Max pooling된 위치를 기억하여 그 위치에 값을 복원하고 나머지는 0으로 만든다.

[출처] https://analysisbugs.tistory.com/104

  • 행렬연산을 통해 복원하는 방법(Transpose Convolution)
    • 예시) padding = 0, stride = 1, kernel = 3 x 3 일 때의 복원

[출처] https://analysisbugs.tistory.com/104

3) Feature pyramid networks

[출처] https://herbwood.tistory.com/18

  • Convolution network에서 지정한 layer 별로 feature map을 추출하여 사용하는 network로 여러 해상도를 가지는 feature map을 사용하여 추론을 진행한다.

4) Focal loss

[출처] https://gaussian37.github.io/dl-concept-focal_loss/

  • One-stage 객체 탐지 모델 학습 시, Class 불균형 문제를 해결하기 위한 손실함수 (Back-ground ↑vs. object↓)
    • One-stage 객체 탐지 모델에서 각각이 학습에 주는 영향은 작지만 수가 압도적으로 많아 최종적으로 큰 영향을 끼치는 easy negative loss가 존재한다. 이를 해결하기 위해서 Hard negative example에는 큰 가중치를 주고, Easy negative example에는 더 작은 가중치를 반영하는 Focal loss function이 사용된다.

 

3. YOLOv3

1) Bounding box prediction

Bounding box coordinate prediction

  • YOLOv3는 Dimension clusters로 생성된 Anchor boxes을 사용하여 bounding box 좌표 예측을 수행한다.
  • Box의 좌표 중점 x, y에 대해서 offsets을 사용하며, box 좌표는 다음의 식으로 정의된다.

=> 최종적으로 예측하는 box 좌표는 (t_x, t_y, t_w, t_h)이다.

  • x, y에 대해서 offsets을 사용하는 이유는 다음과 같다.

[출처] Joseph Redmon. Ali Farhadi. YOLOv3: An Incremental Improvement. IN CVPR, 2018.

Objectness score prediction

  • YOLOv3는 추론할 때, 각 box마다 logistic regression을 이용하여 Objectness score을 예측한다.
  • 학습을 진행할 때는 추론 시와 다르게, IOU threshold = 0.5로 설정하고 Ground-truth box와 가장 많이 겹치는 box = 1, 그 외의 box는 무시하는 방식으로 수행한다.

2) Class Prediction

  • YOLOv3는 객체에 대한 클래스를 예측할 때, 각 클래스마다 독립적인 logistic classifiers(이진분류기)을 사용하여 클래스를 예측한다.
  • 이러한 방식을 취하는 이유는 Open Images 데이터셋과 같은 복잡한 도메인을 가진 데이터을 다루기 수월하기 때문이다.
    (Open Images Dataset : Woman, Person과 같은 overlaps labels가 다수 존재하는 dataset)
  • 또한, Logistic classifiers을 사용하여 기존 Softmax의 문제점(반드시 하나의 class를 가진다고 가정하는 문제)을 개선할 수 있다.

  • 이 뿐만 아니라, Multi-Labeling도 수행할 수 있다.

3) YOLOv3 architecture와 특징

YOLOv3 구조

  • 3-scales features에서 각각 예측을 진행한다.

  • 출력층에서 각각의 scales의 feature맵을 concat하면서 최종 출력을 만들어낸다.

Bounding box priors

  • YOLOv3에서는 9개의 clusters3개의 scales을 임의로 선택하고 clusterscale 간 균등하게 나누는 방식으로 Bounding box priors을 구성한다.
    (, 9개의 clusters3-scales feature map에 맞게 각각 scales을 적용하여 구성)
  • Ex. COCO dataset9cluster (feature map3개 씩) : (10x13), (16x30), (33x23), (30x61), (62x45), (59x119), (116x90), (156x198), (373x326)

Feature maps 각 cell별 구성

4) Feature Extractor

Feature Extractor Network

  • YOLOv3는 이미지의 feature을 추출하는 네트워크로 DarkNet-53을 사용하였다.
  • DarkNet-53은 YOLOv2DarkNet-19의 방식을 hybrid한 방법으로 Residual network stuff가 사용되었다.
  • 또한, '53'은 총 53개의 Convolution layer가 사용되었다는 뜻이다.

[ 출처 ] Joseph Redmon. Ali Farhadi. YOLOv3: An Incremental Improvement. IN CVPR, 2018.

5) 학습

학습방법

  • Full size의 image에 대해 학습 (단순히 Full size image만 사용하고 다른 기법들은 사용하지 않음)
  • Multi-Scale training 적용하고, data augmentation, batch normalization 등 사용하였다.
  • Darknet neural network framework로 학습과 테스트를 진행하였다.

YOLOv3의 Loss function 분석

4. 실험 및 문제점 분석

1) 실험

Backbone Network 별 성능 비교 (입력 이미지 사이즈 : 256 x 256)

[출처] Joseph Redmon. Ali Farhadi. YOLOv3: An Incremental Improvement. IN CVPR, 2018.

  • DarkNet-53은 ResNet-101보다 좋은 성능, 빠른 속도를 가진다.

COCO dataset에 대한 모델 성능 비교

[출처] Joseph Redmon. Ali Farhadi. YOLOv3: An Incremental Improvement. IN CVPR, 2018.

  • YOLOv3는 SSD 보다 빠르고 정확하다. (by COCO metric)
  • RetinaNet보다 정확성은 떨어지지만 속도는 3.8 빠르다.
  • Small object detection에 대해서 YOLOv2에 비해 성능이 향상되었다.

Object Detection models의 속도-mAP50 그래프

[ 출처 ] Joseph Redmon. Ali Farhadi. YOLOv3: An Incremental Improvement. IN CVPR, 2018.

  • 당시 state-of-art 모델과 비교했을 때, 속도와 정확성 모두 우수하다.

2) 문제점 분석

Linear Activation 사용시  문제점

  • 문제점
    • Logistic activation 대신 linear activation을 사용하여 offset x, y 예측하니 mAP가 하락하는 문제가 발생
  • 사용이유 추측
    • 다중 출력이 가능한 linear activation 사용으로 모델의 사이즈를 줄이고자 함.
    • , 속도를 더 향상시키고 모델을 단순화 하기 위함.
  • 문제 발생 이유 추측
    • linear activationback-propagation이 불가능 즉, 학습이 불가능하다.=> 오차↑mAP
    • 또한 Residual 기법을 적용하는 이유가 더 깊은 네트워크를 구성하여 feature을 더 잘 추출하기 위함인데 Linear activation을 사용하면 이러한 이점을 활용하지 못하게 된다.

Focal Loss 사용 시 문제점

  • 문제점
    • Objectbackground의 데이터가 불균형하기 때문에 이를 해결하기 위해서 Focal loss을 사용했으나, 오히려 mAP가 하락.
  • 문제 발생 원인 추측
    • YOLOMulti-part loss function을 사용하고 있다. 따라서 loss function밸런싱하려면 Classification 뿐만 아니라, coordinates, objectness에 대한 밸런싱도 함께 고려해야한다. 그렇기에 classification밸런싱하는 것은 오히려 언밸런싱하게 만드는 요소가 될 수 있다.

Dual IOU Threshold 사용 시 문제점

  • 문제점
    • Faster R-CNN와 같이 복수의 IOU Threshold 사용해보았으나, 성능의 하락이 있었다.
  • 사용 이유 추측
    • Faster R-CNN에서 Anchor boxes을 사용했기 때문에 그와 마찬가지로 같은 IOU Threshold 방식을 사용
  • 문제 발생 이유 추측
    • Faster R-CNN은 실험을 통해서 최적의 Anchor boxes scales 설정 => 이에 맞는 IOU Threshold 설정하였다.
    • YOLOv3은  k-means을 통해서 최적의 Anchor boxes scales 설정 + 3-scales feature map 사용
    • 따라서, Faster R-CNN과 같은 방식을 적용하면 오차가 발생할 수 밖에 없다.

Reference

[1] Joseph Redmon. Ali Farhadi. YOLOv3: An Incremental Improvement. IN CVPR, 2018.

[2] 김정섭. https://www.youtube.com/watch?v=jqykPH3jbic

Comments