ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [컴퓨터비전(이미지/영상)] Object Detection - Part1. Yolo 알고리즘 소개
    AI/컴퓨터비전 2022. 8. 1. 15:52
    반응형

    YOLO 개념?


     

    YOLO는 'You only look once'의 약자로 이미지를 그리드 시스템으로 분할하여 탐지하는 object detection 알고리즘이다. 그리드의 각 셀은 자체 내에서 detecting objects를 하는 역할을 한다.
    YOLO는 1-stage게열 알고리즘으로 속도와 정확성으로 인해 유명한 object detection 중 하나이다

    Object Detection 알고리즘 성능

    YOLO의 역사


    YOLOv5

    YOLOv4 출시 직후 Glenn Jocher는 Pytorch 프레임워크를 사용하여 YOLOv5를 도입했다.
    오픈 소스 코드 : GitHub

    저자Glenn Jocher
    출시: 2020년 5월 18일

    YOLOv4

    YOLO에 대한 원작자의 작업이 중단되면서 Alexey Bochoknovskiy, Chien-Yao Wang, Hong-Yuan Mark Liao가 YOLOv4를 출시했다.

    논문 : YOLOv4: Optimal Speed and Accuracy of Object Detection
    저자: Alexey Bochoknovskiy , Chien-Yao Wang 및 Hong-Yuan Mark Liao
    출시: 2020년 4월 23일

    YOLOv3

    YOLOv3는 YOLOv2 논문에서 개선되었으며 원래 저자인 Joseph Redmon과 Ali Farhadi가 기여했다.
    논문 : YOLOv3: An Incremental Improvement
    원본 YOLO 논문은 여기에서 호스팅 되었음.
    저자: Joseph Redmon 및 Ali Farhadi
    출시: 2018년 4월 8일

    YOLOv2

    YOLOv2는 YOLO의 원작자인 Joseph Redmon과 Ali Farhadi가 공동으로 개발한 것.
    논문 : YOLO9000:Better, Faster, Stronger.
    저자: Joseph Redmon 및 Ali Farhadi
    출시: 2016년 12월 25일

    YOLOv1

    YOLOv1은 Joseph Redmon의 연구 논문으로 발표되었다.
    논문 : You Only Look Once: Unified, Real-Time Object Detection
    저자: Joseph Redmon
    출시: 2015년 6월 8일

    YOLO 원리 - Grid cells?


    예측하고자 하는 이미지를 SxS 크기의 Grid cells로 나누고 각 cell마다 하나의 객체를 예측한다.
    그리고 미리 설정된 boundary boxes의 수를 통해 객체의 위치와 크기를 파악한다.
    이때, 각 cell마다 하나의 객체만을 예측할 수 있기 때문에 여러 객체가 겹쳐있으면 몇몇의 객체는 탐지를 못 하게 될 수 있다.

    Grid Cell의 예시

    각 Cell에서 객체를 예측하는 방법


    - 조건
    • B개의 bounding boxes를 예측하고, 각 box는 하나의 box confidence score를 가지고 있다.
    • 예측된 box 수에 관계없이 단 하나의 객체만 탐지한다.
    • C개의 conditional class probabilities를 예측한다.

    각 요소들에 대하여 상세히 살펴보면, 각 boundary box는 객체의 위치 (x, y), 객체의 크기 (w, h), box confidence score로 구성되어 총 5개의 인자를 가지고 있다.

    여기서 box confidence score는 box가 객체를 포함하고 있을 가능성(objectness)과 bounding box가 얼마나 정확한지를 반영한다.

    conditional class probabilities는 탐지된 객체가 어느 특정 클래스에 속하는지에 대한 확률이다.

    Grid Cell의 예측 원리

    각 score는 수학적으로 아래와 같이 정의된다. Class confidence score는 분류와 지역화(localization) 둘 다에 대한 confidence를 측정한다.
    각 상자에 대한 class별 confidence score를 제공합니다. 이 confidence score는 해당 class가 상자에 나타날 확률과 예측된 상자가 개체에 얼마나 잘 맞는지를 표현한다.
    YOLO 모델은 regression으로로 dectection를 모델링합니다. 이미지를 SxS grids로 나누고 각 grid cell은 B bounding boxes, 해당 boxes에 대한 confidence, C class probabilities를 예측한다.
    이러한 예측은 S x S x (B*5 + C) tensor로 표현된다.
    Grid Cell에 대한 probability와 Bounding Box와 해당 Confidence로 detection하는 과정
     
     
    예를 들어, PASCAL VOC를 평가하기 위해 7x7 grids, 2 bounding boxes(cell당 2개의 후보 bounding box를 지정), 20 classes를 사용했다고 하자.
    그러면 1 cell = 2(B) x 5(x, y, w, h, confidence) + 20(labelled classes) = 30 이므로 우리의 최종 출력 결과의 형태는 (7, 7, 30) tensor을 예측하는 문제가 된다.

    IoU(Intersection over Union)


     

    여기서 IoU에대한 부연 설명을 하자면, Intersection over Union은 object detector의 정확도를 측정하는데 이용되는 평가 지표이다. 알고리즘이 출력한 예측 바운딩 박스는 IoU를 이용해서 평가하는 것이다.
    아래 두가지가 주어진다면 Area of Overlap/Area of Union으로 계산이 된다.
    1. ground-truth bounding boxes(testing set에서 object 위치를 labeling 한것)
    2. prediceted bounding boxes (model이 출력한 object 위치 예측값)

    area of overlab은 prediceted bounding box와 ground-truth bounding box가 겹치는 부분이고, area of union은 predicted bounding box와 ground-truth bounding box를 둘러싸는 영역이다.

     

    머신러닝에서 classification 문제를 수행할 때에는 predicted class가 맞는지 틀렸는지 쉽게 확인이 가능하지만, object detection 문제에서는 predicted bounding box가 정확히 ground-truth bounding box와 일치하지 경우는 거의 없다.
    Model은 다양한 parameters(image pyramid scale, sliding window size, feature extraction method 등등)들이 존재한다.
    따라서 predicted bounding box가 ground-truth bounding box와 얼마나 일치하는지 측정하기 위한 평가 지표를 정의한 것이다.

    Network design


     

    CNN Architecture

    이제 YOLO의 주요 개념은 (7, 7, 30) 텐서를 예측하는 CNN 네트워크를 구축하는 것이다. CNN 모델은 spatial dimension을 1024개의 channel을 가진 7x7 dimension으로 줄인다. YOLO는 7x7x2 bounding box 예측을 만들기 위해 2개의 fully-connected layers를 통해 linear regression을 수행한다.

    결론적으로, YOLO는 24개의 convolutional layers와 2개의 fully-connected layers로 구성되어 있다. 몇몇 convolution layers는 1x1 커널을 사용해서 feature maps의 깊이를 줄이고 최종적으로 (7, 7, 30) 형태의 텐서를 만들어낸다.

    Loss function(손실 함수)


    YOLO는 각 grid cell마다 다수의 bounding boxes를 예측하지만 true positive에 대한 loss를 계산하기 위해 탐지된 객체를 가장 잘 포함하는 box 하나를 선택해야 한다. 이를 위해 ground truth와 IOU를 계산하여 가장 높은 IOU를 가진 하나를 선택한다. 이로써 크기나 가로, 세로 비율에 대해 더 좋은 예측 결과를 얻을 수 있다.

    YOLO는 loss를 계산하기 위해 예측과 ground truth 사이의 sum-squared error를 사용하며, loss function은 다음 세 가지로 구성된다.

    • classification loss
    • localization loss (errors between the predicted boundary box and the ground truth)
    • confidence loss (the objectness of the box)

    Classification loss

    객체가 탐지되었다면, 각 cell의 classification loss는 각 클래스의 class conditional probabilities의 squared error다. 위에 수식에서 볼 수 있듯이 객체가 탐지되지 않았다면 0이 된다.

    Localization loss

    localization loss는 예측된 boundary box의 위치와 크기에 대한 에러를 측정한다.

    마찬가지로, 객체가 탐지되지 않은 경우에 대해서는 loss 값을 계산하지 않는다. 수식을 살펴보면, 위치는 sum squared error를 그대로 적용하지만 크기에 대해서는 각 높이와 너비에 대해 루트 값을 씌워 계산했다. 이렇게 하는 이유는 절대 수치로 계산을 하게 되면 큰 box의 오차가 작은 box의 오차보다 훨씬 큰 가중치를 받게 된다. 예를 들어, 큰 box에서 4 픽셀 에러는 너비가 2 픽셀인 작은 box의 경우와 동일하게 된다. 따라서 YOLO는 bounding box 높이와 너비의 제곱근을 예측하게 된다. 추가적으로, 더 높은 정확도를 위해 λcoord (default: 5)를 loss에 곱해 가중치를 더 준다.

    Confidence loss

    객체가 탐지된 경우의 confidence loss function은 아래와 같으며,

    객체가 탐지되지 않은 경우는 loss function은 아래와 같다.

    둘의 다른 점은 객체가 탐지되지 않은 경우는 λnoobj (default: 0.5)에 의해 loss의 가중을 적게 한다는 점이다. 이렇게 하는 이유는 클래스 불균형 문제를 방지하기 위함이다. 사실 대부분의 box가 객체를 포함하고 있지 않은 경우가 더 많기 때문에 배경에 대한 가중을 줄이지 않는 경우 배경을 탐지하는 모델로 훈련될 수 있다.

    Final Loss

    최종 loss는 위의 모든 loss를 더한 것이다.

    Non-maximal suppression

    같은 객체에 대해 여러 개의 탐지(예측된 boundary boxes)가 있을 수 있다. 이것을 고치기 위해, YOLO는 더 낮은 confidence를 가진 중복된 것을 제거하는 non-maximal suppression을 적용한다.

    구현 방법은 다음과 같다.

    1. confidence score 순으로 예측을 정렬한다.
    2. 제일 높은 score에서 시작해서, 이전의 예측 중 현재 예측과 클래스가 같고 IOU > 0.5인 것이 있었으면 현재의 예측은 무시한다.
    3. 모든 예측을 확인할 때까지 Step 2를 반복한다.

     

    Reference

    https://docs.ultralytics.com/

    https://wdprogrammer.tistory.com/50

    https://ropiens.tistory.com/44

    https://deep-learning-study.tistory.com/402

     

     
    반응형

    댓글

Designed by Tistory.