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) 이상인 경우만 박스 표시
작동 원리
- 이미지 분할 : 입력 이미지가 S * S크기의 그리드 셀로 분할
- 바운딩 박스 예측 : 각 그리드 셀은 최대 B개의 바운딩 박스를 예측하며, 각 바운딩 박스는 위치 (x,y), 너비, 높이, 그리고 객체일 확률(confidence score)을 포함
- 클래스 확률 : 각 그리드 셀은 예측된 객체가 특정 클래스에 속할 확률을 계산
- 최종 결과 : 바운딩 박스의 객체 확률과 클래스 확률을 곱하여 각 바운딩 박스에 해당하는 최종 객체 및 위치를 결정
자 이제 실습에 앞서 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랑 같이 사용되니 따로 학습하기 위해서 올려둡니다!!!;)
오늘도 같이 공부하시느라 수고 많으셨습니다!!!!!!

반응형
'python 시작하기' 카테고리의 다른 글
python 윈도우 창을 띄워보자 (1) | 2025.01.15 |
---|---|
python Folium (0) | 2025.01.10 |
python OpenCV를 활용하여 얼굴 탐지를 해보자 (0) | 2025.01.10 |
python OpenCV 컨투어 탐지 (0) | 2025.01.09 |
python OPEN CV를 더욱 깔끔하게 전 처리 해보자! (1) | 2025.01.08 |