【Paper】 YOLO (You Only Live Once) V1 V2 V3 핵심정리

One Stage Detector의 시작이라고 할 수 있는 Yolo, SSD에 대해서 다시 공부하고 정리해본다.

YOLO (You Only Live Once)

1. Yolo의 이해

drawing

  • V3의 abstract에서 COCO dataset에 대해서 0.5 IOU를 기준으로 하면 RetinaNet보다 성능도 좋고 빠르다고 변명하고 있다.
  • RetinaNet의 장점 - 작은 Object에 대해서도 Bounding Box Object Detection을 잘 수행한 한다는 것을 할 수 있다.
  • Version에 따른 특징
    • Version1 : 빠른 Detection 시간. 그러나 낮은 정확도. 그 뒤 SSD가 더 좋은 성능과 속도
    • Version2 : 수행시간과 성능 모두 개선. SSD보다 빠르지만 성능은 아주 조금 개선
    • Version3 : 수행시간은 조금 느려졌으나 성능은 대폭 개선

2. YOLO Version 1

  • 학습 절차
    1. 어떤 입력 이미지 크기든 상관없이, 이미지를 S x S Grid Cell(7 x 7)로 나눈다.
    2. 하나의 Cell이 하나의 Object에 대한 Detection을 수행한다.
    3. 각 Grid Cell이 2개의 Bounding Box 후보를 기반으로 Object의 Bounding Box를 예측한다.
      (Anchor Box 기반은 아니다. Cell을 기반으로 한다. 2개의 Box를 활용해 Cell의 Classificatino, Box 추측을 수행한다.)

drawing

  • 위 이미지 설명
    • S x S x (B x 5 + C) : S x S = 7 x 7 , B = bounding box + Confidence Score(아래의 값이 학습 위한 GT) , C = Class 갯수
    • Confidence Score : (Object 인지, 아닌지에 대한 확률 = Objectness Score) x (Grid Cell에 대한 Bounding Box와 GT Box와의 IOU값) 이 나오도록 학습된다.
    • bounding box : x, y, w, h 는 Grid Cell에 대한 예측되 나와야 하는 Bounding Box 좌표값이다.
    • 20개의 Class에 대한 Softmax값이 나오도록 학습되는 값이다. Bounding Box가 2개인데 (20개 Class)x2 인 40개가 있는게 아니고 20개만 있다. 그 이유는 한 Grid Cell에 대해서 한 Object만 Detect하겠다는 의지를 담고 있다. (Yolo V1의 단점이라고 할 수 있다. Version2에서 바뀐다.)

drawing

  • 위 이미지 설명
    • 위위 이미지의 흐름을 통해서 첫번째 보라색 박스의 결과가 추출 된다.
    • 가운데 위 : 7 x 7 x 2 개의 bounding box값 [or에 대한 offset값], Confidence 값
    • 가운데 아래 : Class에 대한 20개 Softmax값에 대해, 가장 큰 확률값을 가지는 Object probability 값.
    • NMS 과정을 거쳐, 오른쪽 최종 결과를 추출한다. (NMS 과정 정리 이전 게시물)
      <NMS 과정>
      1. 높은 confidence를 가지는 Bbox를 정렬
      2. 높은 Confidence Score의 Box부터 겹치는 다른 Box를 모두 조사하여 특정 IOU 이상인 Box를 모두 제거 한다(IOU Threshold > 0.4, [주의] 이 값이 낮을 수록 많은 Box가 제거 된다. )
      3. 위의 과정을 반복해서 최종적으로 남은 Box만 return 한다.
  • YOLO v1 문제점
    • Detection 시간은 빠르나 성능은 떨어짐. 특히 작은 물체에 대한 성능 나쁨.
    • Anchor Box를 사용하지 않으므로, 어떤 힌트가 없다. Cell에 대해서 Bounding Box를 단순 예측 한다.
      • 추가 보충 설명 : Anchor box하고 유사한 후보 box를 사용하기는 한다. 7x7 형태의 Grid Cell 마다 중심점 만으로는 오보젝트의 형태를 제대로 예측하기 어렵습니다. 후보 bounding box와 같이 일정한 bounding box 형태가 일단 있어야 합니다. 그리고 이 후보 bounding box와 Ground Truth bounding box 간의 offset값을 학습할 수 있어야 합니다. 결국은 학습된 offset값에 기반해서 새로운 이미지 오브젝트의 offset을 예측하는 것입니다. anchor box도 이와 비슷한 방식이지만, V1은 많은 anchor box가 기준이 되는 게 아니라 개별 Grid Cell이 기준이 되어서 후보 bounding box와 GT Bounding box의 offset을 학습하기 때문에 anchor box 기반 예측이라고 간주하기가 조금은 어렵다.
    • 하나의 Cell에서 하나의 Object만 예측하므로, 겹친 Object는 Detect하지 못한다.

3. YOLO Version 2

  • 핵심 특징
    1. Darknet 19
    2. Grid Cell 당 Anchor Box 수 : 5
    3. Anchor box 사용 - 결정 방법 : K-means Clustering. Anchor box 크기와 ratio를 정하는 방법. GT Box를 그룹핑 한 후, 그것을 이용해서 Anchor box 크기와 ratio 결정.
    4. Output Peature Map 크기 : 13 x 13
    5. Batch Normaliztion 을 적극적으로 활용하기 시작
    6. High Resolution Classifier : 처음에 Input 224 x 224로 학습하다가, input 448 x 448로 Fine tuning 하여 성능향상을 얻음.
    7. 서로 다른 크기의 Image들 섞어서 배치하여 작은 Object도 Detect할 수 있도록 노력.

drawing

  • Network 구조도
    • Version 1에서 사용되던 Fully connected 구조가 사라짐

drawing

  • Anchor Box
    • 1개의 Cell에서 여러개의 Anchor를 통해 개별 Cell에서 여러개 Object Detection이 가능해졌다. 이전에는 Cell 중심 Detection이었다면, 이제는 Anchor 중심 Detecion을 수행한다.
    • K-Means Clustering 을 통해 데이터 세트의 GT의 크기와 Ratio에 대해서 군집화 분류를 하고, 학습에 사용할 Anchor Box의 크기와 Ratio를 선정했다.
    • 위의 사진을 보면 K-Means Clustering의 결과로 5개 색깔의 묶음이 나왔다. 1묶음이 1개의 Anchor Box의 평균사이즈가 되어 총 5개의 Anchor box를 Yolo2에서 사용한다.

drawing

  • Output
    • 13 x 13 의 최종 Feature Map에는 5개의 Anchor Box에 대한 정보가 들어가 있다.
    • 1개의 Anchor box에 대해서 25개의 정보를 가진다. 4(bounding box regression) + 1(Objectness Score x IOU)) + 20(class softmax)

3. YOLO Version 3

drawing

  • 핵심 정리
    • DarkNet 53 : ResNet을 사용하면 속도가 느린것을 할 수 있다. ResNet과 같이 Classification에서 사용하는 Backbone을 사용하는게 아니라, 실시간성을 높이기 위해서 자신들만의 Classification Baxkcone인 Darknet을 만드는 것을 알 수 있다. (Bn Ops/BFLOP/s 를 보아도 수행 성능이 좋음을 확인할 수 있다.)
    • Grid Cell 당 Anchor Box 수 : Output Feature map 당 3개. 서로 다른 크기와 스케일로 총 9개
    • Anchor box 사용 - 결정 방법 : K-means Clustering
    • Output Peature Map 크기 : 13 x 13, 26 x 26, 52 x 52 (3개의 다른 크기의 Ouput - Multi Scale Detection 가능)
    • Feature Map Scalling 기법 : FPN(Feature Pyramid Network)

drawing

  • 주요 특징
    • FPN와 유사한 기법을 적용하여 3개의 Feature Map Output에서(13x13 26x26 52x52), 각각 3개의 서로 다른 크기의 scale을 가진 anchor box로 Detection
    • Darknet 53 을 통해서 좀 더 강한 Sementic한 Feature Map추출
    • Multi Labels (사람 - 여성 - 빨간 옷 입음 - 커피 듬 이런 것) 예측하기 위해 Softmax가 아닌 Sigmoid 기반의 Logistic Regression Classifier로 개별 Object의 Multi labels 예측
    • 수행 속도는 Version2보다는 줄었지만 수행 성능을 높아 졌다.

drawing

  • 네트워크 구조도
    • input은 416 x 416 의 이미지가 들어간다. 원본이미지가 이것보다 크면 그 이미지를 Resize한다.
    • Skip Connection 과 Upsampling(초록색)이 적극적으로 활용되는 것을 볼 수 있다.
    • 82번 Layer에서 나오는 결과가 13 x 13 -> Anchor 3개 사용. 1번 2번 3번
    • 94번 Layer에서 나오는 결과가 26 x 26 -> Anchor 3개 사용. 4번 5번 6번
    • 106번 Layer에서 나오는 결과가 52 x 52 -> Anchor 3개 사용. 7번 8번 9번
    • 구조도를 보면 모르겠지만, 구조도 모양을 조금 바꾸면 FPN과 똑같다.
      Feature Pyramid Network 사진도 간략히 참고해 놓음.

drawing

  • Ouput
    • Output된 결과가 Box 하나당 4(bounding box regression) + 1(Objectness Score x IOU) + 80(class Logistic 값)이다.
    • Box는 총 9개니까 (4 x 1 x 80) x 9 의 ouput feature map depth
    • Multi Scale Detection에서 좋은 성능을 내었다.
  • Training
    • Multi-scale Training : 다양한 크기의 이미지를 배치로써 학습시킨다.
    • Data Augmentation 적극 이용

drawing

  • Location Prediction(아래 사진)
    • b는 ground True와 동일하게 내가 예측해야하는 박스의 크기와 좌표
      = 이게 Inference에서 최종 Output으로 나와야 한다. (아직 헷갈림)
    • c는 Anchor 박스의 좌표
    • p는 Anchor 박스의 크기
    • t는 offset 값 = 신경망의 역할 (아직 헷갈림)
    • 좌표 offset으로 0~1사이 값인 시그모이드 값 사용. Cell의 중심으로 부터bounding box가 너무 옮겨지지 않도록 해야한다.
    • Objectness Score = object이냐 아니냐 확률 x GT와 나의 최종 예측 boundingbox와의 IOU 이 나와야 한다.

drawing

  • Logistic Classifier 사용
    • Softmax사용하지 않음. 20개의 class가 있다면 다 합쳐서 1이 나오게 하는 softmax값 사용하지 않는다.
    • 보통은 Logistic Classifier 값(0.3, 0.6, 0.7)를 Softmax로 바꾸는데 (0.26, 0.35, 0.39) 이런 행동을 하지 않는다.
    • 그래서 사진과 같이 woman 이면서 person일 수 있다고 할 수 있다. = Multi Labels 예측 가능.
  • 결론
    • coco에서 IOU를 0.5~0.95를 사용하지 않고, 0.5만 고려한다면 Yolo3는 성능이 RetinaNet과 비슷하면서 속도가 굉장히 빠르다.
    • Focal Loss 를 사용해봤지만, 성능 향상을 그리 많이 되지 않았다. (이미 Focal Loss가 추구하는 방향이 Yolo에 들어가 있으므로)
    • RetinaNet은 Focal Loss와 FPN를 적극적으로 활용하고 있는 것은 안다.

drawing


© All rights reserved By Junha Song.