[2016] YOLOv1

Seong Woong Kim·2023년 5월 16일
0

Paper Review

목록 보기
6/7

논문 제목 : You Only Look Once: Unified, Real-Time Object Detection
저자 : Joseph Redmon, Santosh Divvala, Ross Girshick, Ali Farhadi
연도 : 2016 (version 5)




1. Background


YOLO v1 모델이 나오기 전, 기존 R-CNN 계열의 모델들은 Two-Stage Detector 방식을 취했습니다.

💡 Two Stage Detection 💡

물체의 위치를 찾는 Localization과 물체의 클래스 확률을 예측하는 Classification을 별도로, 순차적으로 수행되는 방법론

  • 병목 현상이 발생하여 detection 속도가 느려집니다.
  • 파이프라인이 복잡하기 때문에 당연히 학습과 예측이 느려지고 최적화도 느려집니다
  • 정확도는 올라가지만 시간이 오래 소요됩니다.

YOLO v1 저자는 논문에서 DPM(Deformable Part Model)에서 사용하는 sliding window 방식과 R-CNN 계열의 region proposal의 비효율성을 언급하면서 One-Stage Detection 방식을 제안합니다.

💡 One Stage Detection 💡

localization과 classification을 하나의 문제로 정의하여 network가 동시에 두 task를 수행하도록 설계하는 방법론

  • image pixels부터 bounding box coordinates and class probabilities까지 straight하게 진행된다고 저자는 말합니다.
  • 복잡한 파이프라인이 아니라 간단한 파이프라인으로 구성되게 됐습니다.
    • 하나의 Network 구조로 되어 있어 end-to-end 방식을 사용할 수 있습니다.
  • 두 문제를 한꺼번에 처리하기 때문에 속도는 빠르지만 정확도 면에서 떨어집니다.

💥 속도와 정확도는 trade-off 관계 💥


저자는 YOLO v1의 Extremeley fast speed를 언급합니다.

  • real-time image processing에서 45fps를 달성하고, smaller version인 Fast YOLO에선 155fps를 달성했다고 합니다.
  • 다른 real-time detectors와 비교하여 mAP가 2배 향상됐다고 합니다.

또한, YOLO v1은 localization error을 더 많이 발생시키지만, 배경에 대해 틀린 검출을 할 가능성은 적다고 합니다.

마지막으로, YOLO v1는 객체의 일반화할 수 있는 표현(general representations of objects)들을 학습하기 때문에 DPM과 R-CNN과 다르게 다른 일반적인 도메인에서도 성능이 좋다고 합니다.


좀 더 자세히 살펴보겠습니다.




2. YOLOv1


2-1. Unified Detection


YOLO v1은 별도의 region proposals를 사용하지 않고 전체 이미지를 입력하여 사용합니다.

YOLO v1에서는 end-to-end 방식으로 하나의 convolution network를 거쳐서 마지막 feature map에서 bounding box와 class를 예측합니다.


동작하는 방식은 다음과 같습니다.

1. 이미지를 SxS 의 그리드로 분할합니다. (논문에서는 S = 7)

  • 이 그리드의 크기가 최종 feature tensor의 heightheight, widthwidth가 됩니다.

  • grid cell당 1개의 객체가 할당되었습니다. 나머지 grid cell은 객체를 예측하는데 참여할 수 없음을 의미합니다.

  • 여기서 객체의 중심이 특정 grid cell에 위치한다면, 해당 grid cell은 그 객체를 detect하도록 할당(responsible for)됩니다.


2. 각각의 grid cell은 B개의 bounding box와 해당 bounding box에 대한 confidence score를 예측합니다.

💡 Confidence Score 란? 💡

  • 해당 bounding box에 객체가 포함되어 있는지 여부와, box가 얼마나 정확하게 ground truth box를 예측했는지를 반영하는 수치입니다.
  • confidence는 Confidence = Pr(Object)IOUpredtruthPr(Object) * IOU^{truth}_{pred}로 계산합니다.
    • grid cell에 객체가 존재하지 않을 시에 Pr(Object)Pr(Object)는 0이 되어 confidence score는 0이 됩니다.
    • 객체가 존재하면 Pr(Object)Pr(Object)는 1이 되고 IoU와 곱해져 confidence score는 IoU가 됩니다.

각각의 bounding box는 box의 좌표 정보(x, y, w, h)confidence score라는 5개의 예측값을 가집니다.

  • (x, y) : Bounding box의 중심점을 의미하며, grid의 범위에 대한 상대값으로 표현됨
  • (w, h) : w,h는 Bounding box의 너비와 높이로써 전체 이미지에 대해 상대값으로 표현됨
  • confidence score

💡 하나의 bounding box는 하나의 객체만을 예측하며, 하나의 grid cell은 하나의 bounding box를 학습에 사용합니다. 💡

  • 예를 들어 grid cell별로 B개의 bounding box를 예측한다고 할 때, confidence score가 가장 높은 1개의 bounding box만 학습에 사용하는 것입니다.

3. 각 grid cell은 Bounding Box 외에도 class 확률을 예측합니다.

Conditional Class Probability(확률)는 분류한 클래스의 확률입니다.

각 grid cell은 C개의 conditional class probabilities인
Pr(ClassiObject)Pr(Classi | Object) 를 예측합니다.

  • 특정 grid cell에 배경이 아니라 객체가 존재한다고 가정했을 때, 특정 ClassClass ii일 확률인 조건부 확률값입니다.
  • bounding box 수와 상관없이 하나의 grid cell마다 하나의 조건부 확률을 예측합니다.
    • bounding box별로 class probabilities를 예측하는 것이 아니라 grid cell별로 예측

💡 배경을 예측했다면 확률은 0이 됩니다.

최종적으로 Pr(Object)IOUPr(Object) * IOU 로 물체가 있을 확률과 실제 물체의 bounding box와 예측 bounding box와의 iou를 곱해서 YOLO의 Confidence Score를 구하게 됩니다. 💡


4. non-max suppression을 거쳐서 최종 바운딩박스를 선정합니다.

최종적으로 예측값은 (S x S x (B * 5 + C)) 크기의 tensor를 갖습니다.

  • 모델의 최종 feature map은 7 x 7 x 30의 사이즈를 가지고 있게 됩니다.
  • 이것을 49개의 영역의 grid cell로 보고 각 grid cell에서 2개의 bounding box와 class를 예측을 하게 된다.

💡 논문에서는 S = 7, B = 2, C = 20를 사용하여 7 X 7 X 30 tensor를 갖습니다. (PASCAL VOC 데이터셋을 사용하여 학습하였기에 class의 수가 20개)💡

  • 7 x 7 x 30 의 의미는 다음과 같습니다.
    7 x 7 x 30 = S x S x (5 x B + C)
    S = feature size 7
    5 = (center_x, center_y, w, h, confidence score)
    B = number of boxes 2
    C = classes 20 (PASCAL VOC dataset)

👉🏻 이미지를 7x7 grid로 나누고 각 grid cell은 2개의 bounding box와 해당 box의 confidence score, 그리고 C개의 class probabilities를 예측합니다.
👉🏻 즉, 이미지별 예측값의 크기는 7 x 7 x (2 x 5 + 20)입니다.

이와 같은 과정을 통해 bounding box의 위치와 크기, 그리고 class에 대한 정보를 동시에 예측하는 것이 가능해집니다.



2-2. Architecture

YOLO v1 모델은 앞서 살펴본 최종 예측값의 크기인 7x7x30에 맞는 feature map을 생성하기 위해 DarkNet이라는 독자적인 Convolutional Network을 설계합니다.

YOLO v1은 GoogLeNet의 네트워크 구조를 모티브로 하였고, 24개의 convolutional layer와 2개의 fully connected layer로 이루어져 있습니다.

  • GoogLeNet의 inception을 가져와 1x1 conv를 활용하여 연산량을 줄이려고 하였고 그 외의 모든 conv layer에서는 3x3 filter만 사용했습니다.

역할에 따라 네트워크 구조는 크게 3가지로 나눌 수 있습니다.

Pretrained Network

GoogLeNet을 이용하여 ImageNet 1000-class dataset을 사전에 학습한 결과를 Fine-Tuning한 네트워크를 말합니다.

이 네트워크는 20개의 Conv Layer로 구성되어 있습니다.

입력 데이터는 448 x 448 x 3 shape으로 넣어주어야 합니다.


Reduction Network

보통 네트워크는 깊을 수록 더 많은 특징을 학습하기 때문에 정확도가 높아지는 경향이 있습니다.

하지만 Conv Layer를 통과할 때 사용하는 Filter 연산이 수행시간을 많이 잡아 먹기 때문에 무작정 네트워크를 깊게 쌓기에는 부담이 됩니다.

이 문제를 해결하기 위해 ResNet, GoogLeNet 등의 기법이 제안되었습니다.

Reduction Layer는 GoogLeNet이 처음 제안한 1x1 convolution의 기법을 응용하여 연산량은 감소하면서 층은 깊게 쌓는 방식을 이용했습니다.


Training Network

Pre-trained Network에서 학습한 feature를 이용하여 Class probability와 Bounding box를 학습하고 예측하는 네트워크입니다.

이렇게 학습된 모델로 예측을 하게되면 YOLO의 예측 모델은 S x S x (B * 5 + C) 개의 파라미터를 결과로 출력이 됩니다.


이 49개의 grid에 2개씩 Bounding Box가 생성되므로 총 98의 BB(Bounding Box)가 계산되며, 98개의 Class Specific Confidence Score를 얻을 수 있습니다.

이 98개의 Class Specific Confidence Score에 대해 각 20개의 클래스를 기준으로 non-maximum suppression을 하여, Object에 대한 Class 및 bounding box Location를 결정합니다.


2-3. Loss Function

기존 R-CNN 계열의 모델이 classification, localization task에 맞게 서로 다른 loss function을 사용했던 것과 달리 YOLO v1 모델은 regression 시 주로 사용되는 SSE(Sum of Squared Error)를 사용합니다.

위의 그림에서 볼 수 있듯이 Localization loss, Confidence loss, Classification loss의 합으로 구성되어 있습니다.


Localization loss

λcoordλcoord : 많은 grid cell은 객체를 포함하지 않아 confidence score가 0이 되어 객체를 포함하는 grid cell의 gradient를 압도하여, 모델이 불안정해질 수 있습니다.

  • λcoordλcoord는 이러한 문제를 해결하기 위해 객체를 포함하는 cell에 가중치를 두는 파라미터입니다.
  • 논문에서는 λcoordλcoord=5로 설정합니다.

S2S2 : grid cell의 수(=7x7=49)

BB : grid cell별 bounding box의 수(=2)

1ijobj1^{obj}_{ij} : i번째 grid cell의 j번째 bounding box가 객체를 예측하도록 할당(responsible for)받았을 때 1, 그렇지않을 경우 0인 index parameter입니다.

  • obj는 객체가 탐지된 바운딩 박스를 말합니다.(가장 높은 IOU를 갖고 있는 바운딩박스), 이 수식은 i번째 grid에서 j번째 객체를 포함한 바운딩박스를 의미합니다.

grid cell에서는 B개의 bounding box를 예측하지만 그 중 confidence score가 높은 오직 1개의 bounding box만을 학습에 사용합니다.

xi,yi,wi,hixi,yi,wi,hi: ground truth box의 x, y 좌표와 width, height. 여기서 크기가 큰 bounding box의 작은 오류가 크기가 작은 bounding box의 오류보다 덜 중요하다는 것을 반영하기 위해 wi,hi값에 루트를 씌어주게 됩니다.

x^i,y^i,w^i,h^i\hat xi,\hat y i,\hat wi,\hat hi : 예측 bounding box의 x, y 좌표, width, height

Object가 존재하는 grid cell i의 predictor bounding box j에 대해, x와 y의 loss를 계산합니다.

정답 좌표랑 예측 좌표 차이를 제곱하여 error를 계산하게 됩니다.

Object가 존재하는 grid cell i의 predictor bounding box j에 대해, w와 h의 loss를 계산합니다.

  • 큰 box에 대해서는 small deviation을 반영하기 위해 제곱근을 취한 후, sum-squared error를 합니다.
  • 같은 error라도 larger box의 경우 상대적으로 IOU에 영향을 적게 줍니다.



Confidence Loss

λnoobjλ_{noobj} : 앞서 언급한 객체를 포함하지 않는 grid cell에 곱해주는 가중치 파라미터입니다.

  • 논문에서는 λnoobjλ_{noobj}=0.5로 설정했습니다.
  • λobj=5λ_{obj}=5로 설정한 것에 비해 상당히 작게 설정하여 객체를 포함하지 않은 grid cell의 영향력을 줄였습니다.

1ijnoobj1^{noobj}_{ij}: i번째 grid cell의 j번째 bounding box가 객체를 예측하도록 할당(responsible)받지 않았을 때 1, 그렇지 않을 경우 0인 index parameter입니다.

CiC_i : 객체가 포함되어 있을 경우 1, 그렇지 않을 경우 0

C^i\hat C_i: 예측한 bounding box의 confidence score

객체를 포함한 바운딩 박스에 대한 confidence error 입니다.

  • Object가 존재하는 grid cell i의 predictor bounding box j에 대해, confidence score의 loss를 계산합니다.

객체를 포함하지 않은 바운딩박스에 대해 confidence error를 계산합니다.

  • Object가 존재하지 않는 grid cell i의 bounding box j에 대해, confidence score의 loss를 계산합니다.



Classification Loss

pi(c)pi(c) : 실제 class probabilities

p^i(c)\hat pi(c) : 예측한 class probabilities

p(c)p(c) 클래스 확률에 대한 error입니다.

객체를 포함한 바운딩박스에 대해서만 계산합니다.

  • Object가 존재하는 grid cell i에 대해, conditional class probability의 loss 계산합니다.

classification error에 대한 부분으로 생각할 수 있습니다.




3. Conclusion

다음은 YOLO v1 모델의 장단점을 소개하며 마무리하려 합니다.


3-1. Advantages

기존 object detectors들과 비교하여 저자들이 언급한 YOLOv1의 큰 장점 3가지가 있습니다.

빠른 속도

학습 파이프라인이 기존의 detection 모델들에 비해 간단하기 때문에 학습과 예측의 속도가 매우 빠릅니다.

YOLO v1 모델은 base network의 경우 45fps, 경량화한 fast version의 network는 150fps의 결과를 보여 매우 빠른 detection 속도를 보입니다. 실시간으로 0.0025 이하의 지연시간(latency)를 가지며 객체를 detect하는 것이 가능하다고 합니다.


전체 이미지를 인지하여 맥락 정보(contextual information)을 학습

sliding window 방식이나 region proposal 기반의 모델과는 달리 YOLO v1 모델은 모든 학습 과정이 이미지 전체를 통해 일어나기 때문에 단일 대상의 특징뿐 아니라 이미지 전체의 맥락을 학습하게 됩니다.

  • class와 객체 출현에 대한 contextual information까지 이용할 수 있습니다.
  • 이를 통해 배경 영역을 객체로 인식하는 False Positive 오류를 Fast R-CNN 모델보다 상대적으로 덜 범한다고 합니다.

💡 Comparision wtih Faster R-CNN 💡


다른 도메인에서 좋은 성능

YOLO v1 모델은 일반화 가능한 표현(representations)를 학습하여 새로운 도메인이나 예상치 못한 입력 이미지에 대해 상대적으로 강건한 모습을 보입니다.

  • 대상의 일반적인 특징을 학습하기 때문에 다른 영역으로의 확장에서도 뛰어난 성능을 보입니다.

💡 새로운 이미지나 새로운 도메인에 적용할 때, DPM, R-CNN 같은 detection 방법을 크게 능가합니다.

자연 이미지(natural image)로 학습한 후 그림(artwork)에서 test를 진행해도 다른 모델들 보다 좋은 성능을 보인다고 논문에서는 말하고 있습니다. 💡



3-2. Disadvantages


각 grid cell은 하나의 클래스만을 예측

각 grid cell의 bounding box는 하나의 객체만을 예측하기 때문에 같은 grid cell 내에 있는 여러 객체를 탐지하지 못합니다.

당시 state-of-the-art 모델보다 정확도 측면에서 약간 부족한 성능을 보입니다.

YOLO는 1개의 grid cell당 1개의 class만 취급하기 때문에 2개 이상의 물체들의 중심이 한 grid cell에 모여있더라도 한가지의 class만 예측할 수 있습니다.

  • 새 떼와 같은 작은 물체들이 모여있을때 감지를 하지 못하게 됩니다.

어려운 일반화

일정한 비율의 bbox로만 예측을 하다보니 색다른 비율을가진 물체에 대한 예측이 좋지 못합니다.

  • 바운딩 박스 형태가 data를 통하여 학습되므로, 새로운/독특한 형태의 바운딩박스의 경우 정확히 예측하지 못합니다.

작은 bbox의 loss와 큰 bbox의 loss를 동일하게 처리

큰 상자의 작은 움직임에 비해 작은 상자의 작은 움직임은 훨씬 더 큰 영향을 끼치기 때문입니다.




📔 References

  1. https://arxiv.org/abs/1506.02640
  2. https://visionhong.tistory.com/15
  3. https://daje0601.tistory.com/203
  4. https://herbwood.tistory.com/13
  5. https://deep-learning-study.tistory.com/430
profile
성장과 연구하는 자세를 추구하는 AI 연구개발자

0개의 댓글