참고

  1. roboflow yolov8 관련

  2. ultralytics yolov5 아키텍쳐 문서



논문의 세세한 내용보다는 네트워크 구조 등을 정리해야지..


YOLOv8



YOLO의 흐름

  1. YOLO
    • 24 CNN, 2FC, leakyReLU
  2. YOLOv2
    • Darknet-19, Batch Normalization 적용, Anchor box 사용, Multi-scale training
  3. YOLOv3
    • Efficient backbone, SPP (Spatial Pyramid Pooling)
  4. YOLOv4
    • Mosaic data augmentation, anchor-free detection
  5. YOLOv5
    • 수정된 CSPDarknet53 backbone 사용, SPPF 사용, 다양한 data augmentation 사용
  6. YOLOv6
    • RepVGG backbone 사용, self-distillation, VariFocal, SIoU, GIoU 사용
  7. YOLOv7
    • pre-trained 된 backbone 사용 안함, Pose estimation과 같은 추가적인 task 실행



YOLOv8 architecture

Yolov8의 전체적인 대략적인 구조

3

출처


위의 전체적인 구조를 자세히 살펴보면 아래와 같음

1

출처


Conv

4

출처

conv2d, BatchNorm2d, SiLU 가 연속되어있는 모듈


C2f

2

출처

Yolov5에서 사용했던 C3 모듈이 아닌 C2f 모듈 사용

Conv 모듈과 Bottleneck 구조를 거치는 모듈

Conv 모듈과 Bottleneck의 output을 concat했기 때문에 정보 손실을 줄일 수 있음


Bottleneck 구조는 아래와 같음

5

출처


Decoupled Head

Anchor free 모델

One-head 에 비해 속도와 AP 성능이 좋음

Class error를 구하는 branch와 box에 대한 error를 구하는 branch로 나뉨


6



Training

Loss

\[L_{Total}=\lambda_{bbox}\cdot L_{bbox}+ \lambda_{cls}\cdot L_{cls}+\lambda_{cls}\cdot L_{cls}+\lambda_{dfl}\cdot L_{dfl}\]
  • $L_{bbox}$ : Bounding box loss
    • IoU 기반의 Loss 사용
  • $L_{cls}$ : Class loss
  • $L_{dfl}$ : Bounding box loss
    • Distribution Focal Loss
    • 더 정확한 위치를 측정하기 위해 사용
    • 필수 사항은 아님