Computer vision - YOLO(YOLOv5)

Ann Jongmin·2025년 1월 20일

Computer vision

목록 보기
2/3

YOLO:

  • YOLO (You Only Look Once)는 객체 검출 분야에서 널리 알려진 실시간 알고리즘이다.
  • YOLO는 "한 번만 보고 판단한다 (You Only Look Once)"는 뜻으로, 이미지 전체를 한 번에 처리하여 객체를 검출하는 모델이다.

YOLO의 핵심 아이디어:

  • 이미지 분할: 입력 이미지를 S×S 그리드로 나눈다.
  • 각 그리드 셀 역할: 각 셀은 그 영역에 객체의 중심이 존재한다면 해당 객체를 인식하고, 바운딩 박스와 클래스 확률을 예측한다.
  • 단일 신경망: 이미지 전체를 한 번에 네트워크에 입력하여 모든 객체의 위치와 종류를 동시에 예측한다.

YOLO의 동작 방식 (단순화)

  1. 입력 이미지를 CNN(합성곱 신경망)에 넣는다.
  2. 특징 추출: CNN은 이미지의 특징을 추출해 고수준 표현을 만든다.
  3. 그리드 예측: 마지막 출력층은 S×S 그리드 셀별로 여러 개의 예측을 수행한다.
    각 셀은 여러 개의 바운딩 박스 후보와 그 박스에 대한 신뢰도(confidence), 그리고 객체가 어떤 클래스에 속하는지 예측한다.
  4. 결과 처리: 모든 셀의 예측을 모아서, 높은 신뢰도를 가진 바운딩 박스들을 추리고, 겹치는 박스들을 제거(NMS: Non-Maximum Suppression)하여 최종 객체 검출 결과를 얻는다.

YOLO의 장점

  • 속도: 전체 이미지를 한 번에 처리하기 때문에 매우 빠르다. 실시간 객체 검출에 적합하다.
  • 전체 문맥 이해: 이미지 전체를 보고 예측하기 때문에, 주변 환경(context)을 고려한 객체 인식이 가능하다.

YOLO의 단점

  • 작은 객체 검출 어려움: 그리드 셀 크기 제한 때문에 작은 객체나 근접한 객체의 구별이 어려울 수 있다.
  • 정확도: 일부 상황에서 두 단계 접근 방식(two-stage)인 Faster R-CNN보다 정확도가 떨어질 수 있다.

YOLOv5 모델을 사용하여 커스텀 데이터셋으로 객체 검출을 학습하고, 추론을 수행

Repository clone

git clone https://github.com/MachuEngine/object-detection-using-yolo.git

Requirements

pip install requirements.txt

학습

python train.py --img 640 --batch 16 --epochs 3 --data data/coco128.yaml --weights yolov5s.pt

추론

python detect.py --weights yolov5s.pt --img 640 --conf 0.25 --source data/images/bus.jpg

object detect

yolov5 원본 레포지토리

https://github.com/ultralytics/yolov5

profile
AI Study

0개의 댓글