YOLO:
- YOLO (You Only Look Once)는 객체 검출 분야에서 널리 알려진 실시간 알고리즘이다.
- YOLO는 "한 번만 보고 판단한다 (You Only Look Once)"는 뜻으로, 이미지 전체를 한 번에 처리하여 객체를 검출하는 모델이다.
YOLO의 핵심 아이디어:
- 이미지 분할: 입력 이미지를
S×S 그리드로 나눈다.
- 각 그리드 셀 역할: 각 셀은 그 영역에 객체의 중심이 존재한다면 해당 객체를 인식하고, 바운딩 박스와 클래스 확률을 예측한다.
- 단일 신경망: 이미지 전체를 한 번에 네트워크에 입력하여 모든 객체의 위치와 종류를 동시에 예측한다.
YOLO의 동작 방식 (단순화)
- 입력 이미지를
CNN(합성곱 신경망)에 넣는다.
- 특징 추출:
CNN은 이미지의 특징을 추출해 고수준 표현을 만든다.
- 그리드 예측: 마지막 출력층은
S×S 그리드 셀별로 여러 개의 예측을 수행한다.
각 셀은 여러 개의 바운딩 박스 후보와 그 박스에 대한 신뢰도(confidence), 그리고 객체가 어떤 클래스에 속하는지 예측한다.
- 결과 처리: 모든 셀의 예측을 모아서, 높은 신뢰도를 가진 바운딩 박스들을 추리고, 겹치는 박스들을 제거(
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