One-Step Object Detection _ YOLOv5
DataScience/ComputerVision

One-Step Object Detection _ YOLOv5

728x90

YOLO

출처 - https://andrey-koleda.medium.com/merry-christmas-and-yolov5-with-object-tracking-9c6399d23c94

YOLO는 You Only Look Once의 약자로 Object Detection One-Step 분야의 대표적인 모델이다. 처음 One-Step 방법을 고안해 속도를 높힘으로써 실시간으로 Object Detection이 가능하게 만들었다.

 

현재 YOLO, YOLOv3, YOLOv5, YOLOX, YOLOv7 등 많은 버전의 YOLO모델이 나왔지만, 제일 정보가 많고 대중적인 YOLOv5모델을 사용해서 학습을 진행해볼 예정이다.(다음 포스팅 확인)

 

- YOLOv5 github 주소

https://github.com/ultralytics/yolov5

 

GitHub - ultralytics/yolov5: YOLOv5 🚀 in PyTorch > ONNX > CoreML > TFLite

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

github.com

 

YOLO 특징 및 장단점

YOLO의 가장 큰 특징은 이미지를 한개의 모델로 분류예측을 진행한다는 것이다. YOLO 이전의 R-CNN은 이미지를 여러장으로 분할하고, VGGNet기반의 CNN모델을 이용해 이미지를 분석한다. 그리고 ROI를 찾아서 Bounding Box를 그린 뒤 분류모델을 학습하는 방법을 사용하기 때문에 시간이 오래걸린다는 단점이 있다.이 문제를 YOLO가 해결해주는 방법론으로 제시되었다. 하지만 성능면에서는 R-CNN이 우수하기 때문에 높은 성능은 아니더라도 준수한 성능으로 Real Time Object Detection을 할 때 주로 사용된다.

 

위 그림에서처럼 Faster R-CNN보다 성능(mAP)는 낮지만 속도(FPS)는 훨씬 높은것을 확인할 수 있다.

YOLO는 작은 게체를 찾는 문제에 대해서 특히 낮은 성능을 나타낸다. 그렇기 때문에 본인의 데이터에 맞는 모델을 선택적으로 사용하는것을 추천한다.

YOLOv5 Model

YOLOv5 모델에는 모델 내 네트워크의 크기에 따라서 선택해서 사용할 수 있는데

위 그림을 확인하면 YOLOv5s ~  YOLOv5x로 모델의 크기를 비교해서 본인 데이터와 성능에 맞게 사용하면 된다. 

데이터가 많은데 너무 무거운 모델을 사용해버리면 성능은 올라가겠지만 시간이 너무 오래 걸린다.

  • 모델이 가벼우면 Real Time Object Detection시 물체를 잘 인지하지 못함(성능이 낮음)
  • 모델이 무거우면 Real Time Object Detection시 버벅거리는 현상 발생

모델을 어떤것을 쓰느냐에 따라서 위 문제가 발생할 수 있기때문에 잘 선택해서 사용하기

공식 Github 홈페이지에 나와있는 모델별 성능 비교표인데 COCO 데이터로 실험을 진행하고 결과를 표로 나타낸 것이다.

결과를 확인하면 다른 모델에 비해 YOLO가 짧은 학습시간으로 높은 성능의 결과를 얻은것을 볼 수 있다.

(YOLO Good!)

 

다음 포스팅에 데이터를 직접 YOLO로 학습하는 코드를 작성하겠다.

Reference

- https://byul91oh.tistory.com/321

- https://github.com/ultralytics/yolov5

 

 

 

 

 

728x90