글 작성자: 만렙개발자

 

YOLO V5가 공개되었습니다!

 

 

YOLO는 You Only Look Once라는 이름으로, one-stage object detection 딥러닝 기법으로 매우 빠른 속도의 추론 과정으로 2016년에 큰 충격을 안겨주었었습니다. 저는 증강/가상현실을 전공으로 대학원에서 연구하고 있던 시기였기에, 실시간 물체 인식은 매우 중요한 기반 기술중에 하나였죠. YOLO가 세상에 가져다준 충격도 어마어마 했지만, 제 개인에게 가져다준 영향력은 더욱 컸습니다.

 

Darknet이라는 친숙하지 않은 프레임워크 기반이었기에 많은 이들이 사용을 어려워했으나, 다른 프레임워크들로도 구현이되면서 더 유명해지기 시작했습니다. YOLO v4와 v5는 오리지널 YOLO의 저자와 다른 이가 연구개발하였으며, v5는 pytorch를 사용하여 iOS에 적용할 수 있다는 것까지 얘기합니다.  그런데 논문은 아직 공개가 안되었네요; 사실 YOLOv5를 공개한 사람은, YOLOv3를 pytorch로 implementation한 사람과 동일인입니다. 그 때에도 iOS 적용에 대한 얘기를 했는데, 그의 연장선 느낌으로 iOS를 들먹인 것 같습니다.

 

 

https://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

먼저 v3와 v4에 관한 영상을 함께 보시죠. (YOLO가 처음 나왔을 때에는 007 영화를 예제로 보여주었었죠)

 

 

v5의 예제 영상은 다음과 같습니다. (v3, v4에서 사용된 영상을 찾지 못했습니다.ㅠ)

 

 

위의 영상은 제가 예제 코드를 통해서 직접 inference한 것입니다. inference 코드는 다음 블로그 글을 참조해주세요!

[분류 전체보기] - YOLO v5 모델로 Object Detection(객체 인식) inference(추론) 해보기 - 미드 office parkour 예제 동영상

 

YOLO v5 모델로 Object Detection(객체 인식) inference(추론) 해보기 - 미드 office parkour 예제 동영상

YOLOv5에 대한 자세한 소개는 이전 글을 참조해주시고, 이 포스트에서는 추론 과정에 대해서 다루고자 합니다. [분류 전체보기] - YOLO v5 공개! 개념, 이론, 논문 대신에 iOS...? YOLO v5 공개! 개념, 이론

lv99.tistory.com

 

YOLOv4는 2020년 4월에 Alexey Bochkovskiy가 발표하였고,

YOLOv5는 2020년 6월에 Glenn Jocher가 발표하였습니다. (5월에 SOTA를 찍었습니다.)

 

둘 모두 YOLO의 기존 저자와는 다른 사람입니다. 새로운 시대를 맞이하게 된 것이죠. 정확도 측면에서는 EfficientDet(현재의 SOTA)이나 다른 방법에 비해서 상대적으로 안좋지만, 속도 측면에서는(아래 실험 결과는 V100 기준입니다.) 압도적으로 좋습니다. 그런데 YOLOv5는 조금의 논란이 있습니다. 잘 구현되고, 다양한 최신의 기법이 많이 적용되었지만, 기존의 YOLO가 가진 색을 많이 잃어버렸다는 평이 있죠. (그럴거면 왜 YOLO라는 이름을 지었냐는 의미인 것 같습니다.) 사실 구현된 것을 보고 추론할 뿐이고, 논문은 아직 공개가 안되었습니다. 따라서 결과적으로 구현된 것만 보고서 판단할 수 밖에 없는 시점입니다.

 

YOLO v5는 4가지의 모델로 소개되었습니다. 

YOLOv5s, YOLOv5m, YOLOv5l, YOLOv5x로 간단하게 small, medium, large, xlarge로 이름지어져 있습니다.

backbone이나 head는 모두 동일하지만, depth_multiple(model depth multiple)과 width_multiple(layer channel multiple)이 다릅니다. large가 1.0으로 기준이 되는 크기로 생각하시면 좋습니다.

YOLOv5s는 (0.33, 0.50), YOLOv5m은 (0.67, 0.75), YOLOv5l은 (1.0, 1.0), YOLOv5x는 (1.33, 1.25)의 비율입니다. 그에 따른 성능 비교는 아래와 같습니다.

 

현재 해당 리포지토리는 오픈소스로 개발되고있기 대문에, 예고없이 수정 또는 삭제될 수 있는 점을 유의하여 주세요! 

 

coreML을 통해 YOLOv5 모델을 사용할 수 있습니다.

 

YOLOv5 예제 학습 코드(스크립트) 튜토리얼은 다음의 글을 참조해주세요!

 

[분류 전체보기] - YOLOv5 학습 예제 코드 (튜토리얼) - 마스크 쓰고 있는/안 쓴 얼굴(사람) 찾기

 

YOLOv5 학습 예제 코드 (튜토리얼) - 마스크 쓰고 있는/안 쓴 얼굴(사람) 찾기

YOLOv5는 x(x-large), l(large), m(medium), s(small)의 4종류로 구성됩니다. 자세한 내용은 이전 글을 참조해주시고, 이 포스트에서는 학습 코드(스크립트)에 대해서 다루고자 합니다. [분류 전체보기] - YOLO v5

lv99.tistory.com

 

현재 Kaggle에서 Global Wheat Detection이라는 Competition이 진행중에 있습니다. Object Detection을 사용하는 대회이기 때문에, YOLO 역시 사용이 많이되고 있습니다. 현재 EfficientDet에 Pseudo-labeling과 OOF, WBF, TTA, Mixup 등이 사용된 것이 좋은 성능을 보이고 있습니다. 몇일 전에 YOLO v5를 적용한 notebook이 등장했는데, 학습에 관련된 코드는 없고, inference 코드만 있습니다. 100 epoch 정도 학습하였는데, 현재 공개된 EfficientDet을 사용한 것과 비슷한 성능을 보이고 있습니다. (Pre-trained model을 사용하기는 하지만) 적은 데이터셋에 적용하는 것은 YOLO v5도 막강한 것으로 볼 수 있을 것 같습니다. 저도 직접 학습을 해보려 합니다! :) 기대해주세요!

 

https://www.kaggle.com/orkatz2/yolov5-fake-or-real-single-model-l-b-0-73

 

YoloV5 fake or real [Single Model] L.B>0.73

Explore and run machine learning code with Kaggle Notebooks | Using data from multiple data sources

www.kaggle.com

*update

제가 위이ㅡ 코드로 학습을 진행해보는 중인데, tensorboard를 보면 아래와같은 진행이 이루어집니다 :)