본문 바로가기

python 시작하기

python YOLO

728x90
반응형

이전 까지 저희는 OpenCV를 이용해서만 객체를 탐지 했지만, OpenCV말고도 YOLO라는 라이브러리가 있습니다.

 

YOLO

  • 실시간 처리 : YOLO는 매우 빠르며, GPU를 활용할 경우 초당 수십 프레임을 처리할 수 있어 실시간 객체 탐지에 적합
  • 단일 신경망 구조 : 이미지 전체를 한 번에 처리하여 객체를 탐지하는 단일 신경망 구조를 사용함, 이는 이미지 분할이나 여러 영역에 대해 여러 번 처리하는 기존 알고리즘과 비교했을 때 큰 장점임
  • 높은 정확도 YOLO는 빠른 속도뿐만 아니라 높은 정확도로 객체를 탐지할 수 있음

YOLO 모델을 이용한 객체 탐지

  • YOLO(You Only Look Once)는 한 번의 전처리로 이미지 내 모든 객체 후보를 동시에 탐지하는 모델
  • Darknet 기반의 cfg, weights, 그리고 클래스 이름 파일(.names)을 사용
  • 출력 레이어명 확인 후, 해당 레이어로 net.forward(later_names) 호출
  • 결과로 bounding box 좌표, 신뢰도, 클래스 ID가 출력
  • 신뢰도가 일정 기준(예: 0.5) 이상인 경우만 박스 표시

작동 원리

  1.  이미지 분할 : 입력 이미지가 S * S크기의 그리드 셀로 분할
  2.  바운딩 박스 예측 : 각 그리드 셀은 최대 B개의 바운딩 박스를 예측하며, 각 바운딩 박스는 위치 (x,y), 너비, 높이, 그리고 객체일 확률(confidence score)을 포함
  3.  클래스 확률 : 각 그리드 셀은 예측된 객체가 특정 클래스에 속할 확률을 계산
  4.  최종 결과 : 바운딩 박스의 객체 확률과 클래스 확률을 곱하여 각 바운딩 박스에 해당하는 최종 객체 및 위치를 결정

자 이제 실습에 앞서 YOLO를 설치해야 겠죠?

설치 : pip install ultralytics

임포트 : from ultralytics import YOLO

 

실습. YOLO TEST

  • YOLO 라이브러리를 import 합니다.
  • YOLO('yolov8n.pt')을 선언합니다.
  • imge를 읽어옵니다. imread
  • model.predict(source=image, save = False, save_txt = False, conf = 0.5)을 입력합니다.
    • conf는 신뢰도 입니다.
  • 결과 시각화는 result[0].plot()을 선언하고 cv2로 이미지를 출력하는 방식과 동일합니다.

 

YOLO는 OpenCV랑 같이 사용되니 따로 학습하기 위해서 올려둡니다!!!;)

오늘도 같이 공부하시느라 수고 많으셨습니다!!!!!!

반응형