YOLO로 프로젝트를 진행하며, 다양한 YOLO 버전이 있음을 알게 되었다.

2020년에 들어서 새로 등장한 YOLO 버전만 3개..

 

가장 근본인 YOLO부터 YOLOv3, 가장 최근의 PP-YOLO 까지

YOLO 버전에 대해서 알아보고 어떤 버전을 선택하는 것이 제일 좋을지 작성해본다.


YOLO란?

YOLO는 real time object detection에 사용되는 알고리즘이다.

Josept Redmon이 2015년에 yolov1 논문을 발표하고 공개했다.

각 이미지를 S x S 개의 그리드로 분할하고, 각 그리드의 신뢰도를 계산한다.

처음에는 객체와 동떨어진 그리드가 설정되지만, 신뢰도를 계산하여 위치를 조정함으로써

가장 높은 객체인식 정확성을 가지는 그리드를 얻는다.

신뢰도는 주변의 그리드를 합쳐 높이고, 이후 임계값을 설정해 불필요한 부분을 제거한다.

 

YOLOv3

  • 2018년 4월 출시했다. 백본 아키텍쳐 Darknet 53을 기반으로 만들어져 있으며,
    YOLO를 만든 Josept Redmon이 발표했다.
  • 하지만 Josept Redmon은 YOLOv3을 마지막으로 더이상 개발하지 않는다고 밝혔다.

YOLOv4

  • 2020년 4월 출시했다. v3에 비해 AP, FPS가 각각 10%, 12% 증가했다.
  • v3와 다른 개발자인 AlexeyBochkousky가 발표했다.
  • v3에서 다양한 딥러닝 기법(WRC, CSP ...) 등을 사용해 성능을 향상시켰다.
  • CSPNet 기반의 backbone(CSPDarkNet53)을 설계하여 사용했다.

v3와 v4 비교

 

YOLOv5

  • 2020년 6월 출시했다. v4에 비해 낮은 용량과 빠른 속도를 가지고 있다. (성능은 비슷하다)
  • YOLOv4와 같은 CSPNet 기반의 backbone을 설계하여 사용했다. 
  • YOLOv3를 PyTorch로 implementation한 GlennJocher가 발표했다.
  • Darknet이 아닌 PyTorch 구현이기 때문에, 이전 버전들과 다르다고 할 수 있다.
  • 처음 출시될 때 논문이 함께 출시되지 않았고, 이름을 YOLOv5로 하는것에 대한 논란이 있다.

학습 속도 비교
용량 비교
YOLO 버전 비교

 

PP-YOLO

  • 가장 최근인 2020년 7월 출시됐다. YOLOv4보다 정확도가 속도가 더 높다.
  • 바이두의 과학자 ShingLong등에 의해 작성됐다. 
  • v3모델을 기반으로 하지만, Darknet3백본을 ResNet백본으로 교체했고 오픈소스 깊이 학습 플랫폼인 PaddlePaddle에 바탕을 두고 있다.

v3, v4, pp 비교

 

결론

이번 포스팅의 주제는 결국 어떤 YOLO 버전을 선택해야 하는가? 였다.

 

YOLOv4는 v5에 비해 느리게 동작하지만 FPS성능을 최적화 할 수 있고,

YOLOv5는 v4에 비해 더 쉽게 환경을 구성하고, 구현할 수 있다는 특징이 있다.

 

결과적으로 목적에 따라 다른 버전을 사용하는 것이 좋으며

연구 및 엔지니어들이 사용할 용도로는 Darknet의 YOLOv4가 더 효율적일 것 같고

실용적인 측면에서 빠르게 구현하고자 하는 개발자라면 PyTorch의 YOLOv5가 더 좋을 것이라고 생각한다. 

 

PP도 YOLOv4보다 성능이 좋다고 하는데, 정보가 부족해 선택하기가 애매해다..

 

참고자료

towardsdatascience.com/yolo-v4-or-yolo-v5-or-pp-yolo-dad8e40f7109

 

YOLO v4 or YOLO v5 or PP-YOLO?

What are these new YOLO releases in 2020? How do they differ? Which one should I use?

towardsdatascience.com

blog.roboflow.com/yolov4-versus-yolov5/

 

Responding to the Controversy about YOLOv5

We appreciate the machine learning community's feedback, and we're publishing additional details on our methodology.(Note: On June 14, we've incorporated updates from YOLOv4 author Alexey Bochkovskiy, YOLOv5 author Glenn Jocher, and others in the community

blog.roboflow.com

github.com/ultralytics/yolov5

 

ultralytics/yolov5

YOLOv5 in PyTorch > ONNX > CoreML > iOS. Contribute to ultralytics/yolov5 development by creating an account on GitHub.

github.com

+ Recent posts