YOLO
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
'DataScience > ComputerVision' 카테고리의 다른 글
YOLOv5 코드 구현 _ Traffic Sign Dataset (1) | 2023.01.06 |
---|---|
ObjectDetection이란? 기술, 알고리즘 연혁 알아보기 (0) | 2023.01.04 |
DL _ CNN을 활용한 MNIST 손글씨 분류(VGGNet, ResNet) (0) | 2021.11.26 |