다음을 사용한 모델 예측 Ultralytics YOLO
소개
머신러닝과 컴퓨터 비전의 세계에서 시각적 데이터에서 의미를 찾아내는 과정을 '추론' 또는 '예측'이라고 합니다. Ultralytics YOLOv8 은 광범위한 데이터 소스에서 고성능 실시간 추론을 위해 맞춤화된 예측 모드라는 강력한 기능을 제공합니다.
Watch: Ultralytics YOLOv8 모델에서 출력을 추출하는 방법 사용자 지정 프로젝트용 모델.
실제 애플리케이션
제조 | 스포츠 | 안전 |
---|---|---|
차량 예비 부품 감지 | 축구 선수 감지 | 사람 낙상 감지 |
추론에 Ultralytics YOLO 을 사용하는 이유는 무엇인가요?
다양한 추론 요구에 맞는 YOLOv8 의 예측 모드를 고려해야 하는 이유는 다음과 같습니다:
- 다목적성: 이미지, 동영상, 라이브 스트림까지 추론할 수 있습니다.
- 성능: 정확도 저하 없이 실시간 고속 처리를 위해 설계되었습니다.
- 사용 편의성: 신속한 배포 및 테스트를 위한 직관적인 Python 및 CLI 인터페이스.
- 고도로 사용자 정의 가능: 특정 요구 사항에 따라 모델의 추론 동작을 조정할 수 있는 다양한 설정 및 매개변수.
예측 모드의 주요 기능
YOLOv8의 예측 모드는 강력하고 다용도로 사용할 수 있도록 설계되었습니다:
- 다양한 데이터 소스 호환성: 데이터가 개별 이미지, 이미지 모음, 동영상 파일, 실시간 동영상 스트림 등 어떤 형태이든 예측 모드가 지원합니다.
- 스트리밍 모드: 스트리밍 기능을 사용하여 다음과 같은 메모리 효율적인 제너레이터를 생성합니다.
Results
객체를 사용할 수 있습니다. 설정하여 이 기능을 사용하도록 설정합니다.stream=True
를 예측자의 호출 메서드에 추가합니다. - 일괄 처리: 여러 이미지 또는 비디오 프레임을 한 번에 일괄 처리하여 추론 시간을 더욱 단축할 수 있는 기능입니다.
- 통합 친화적: 유연한 API 덕분에 기존 데이터 파이프라인 및 기타 소프트웨어 구성 요소와 쉽게 통합할 수 있습니다.
Ultralytics YOLO 모델은 Python 목록 중 하나를 반환합니다. Results
객체 또는 메모리 효율적인 Python 생성기의 Results
객체를 stream=True
는 추론 중에 모델에 전달됩니다:
예측
from ultralytics import YOLO
# Load a model
model = YOLO('yolov8n.pt') # pretrained YOLOv8n model
# Run batched inference on a list of images
results = model(['im1.jpg', 'im2.jpg']) # return a list of Results objects
# Process results list
for result in results:
boxes = result.boxes # Boxes object for bounding box outputs
masks = result.masks # Masks object for segmentation masks outputs
keypoints = result.keypoints # Keypoints object for pose outputs
probs = result.probs # Probs object for classification outputs
obb = result.obb # Oriented boxes object for OBB outputs
result.show() # display to screen
result.save(filename='result.jpg') # save to disk
from ultralytics import YOLO
# Load a model
model = YOLO('yolov8n.pt') # pretrained YOLOv8n model
# Run batched inference on a list of images
results = model(['im1.jpg', 'im2.jpg'], stream=True) # return a generator of Results objects
# Process results generator
for result in results:
boxes = result.boxes # Boxes object for bounding box outputs
masks = result.masks # Masks object for segmentation masks outputs
keypoints = result.keypoints # Keypoints object for pose outputs
probs = result.probs # Probs object for classification outputs
obb = result.obb # Oriented boxes object for OBB outputs
result.show() # display to screen
result.save(filename='result.jpg') # save to disk
추론 소스
YOLOv8 는 아래 표와 같이 다양한 유형의 입력 소스를 처리하여 추론할 수 있습니다. 소스에는 정적 이미지, 비디오 스트림 및 다양한 데이터 형식이 포함됩니다. 이 표는 또한 각 소스를 스트리밍 모드에서 사용할 수 있는지 여부를 인수 stream=True
✅. 스트리밍 모드는 모든 프레임을 메모리에 로드하는 대신 결과 생성기를 생성하므로 동영상이나 라이브 스트림을 처리하는 데 유용합니다.
팁
사용 stream=True
를 사용하면 긴 동영상이나 대용량 데이터 세트를 처리하여 메모리를 효율적으로 관리할 수 있습니다. 언제 stream=False
를 사용하면 모든 프레임 또는 데이터 포인트에 대한 결과가 메모리에 저장되므로 큰 입력값의 경우 빠르게 합산되어 메모리 부족 오류가 발생할 수 있습니다. 반대로 stream=True
는 현재 프레임 또는 데이터 포인트의 결과만 메모리에 보관하는 제너레이터를 사용하여 메모리 소비를 크게 줄이고 메모리 부족 문제를 방지합니다.
출처 | 인수 | 유형 | 참고 |
---|---|---|---|
이미지 | 'image.jpg' |
str 또는 Path |
단일 이미지 파일. |
URL | 'https://ultralytics.com/images/bus.jpg' |
str |
이미지의 URL을 입력합니다. |
스크린샷 | 'screen' |
str |
스크린샷을 캡처합니다. |
PIL | Image.open('im.jpg') |
PIL.Image |
RGB 채널이 있는 HWC 형식입니다. |
OpenCV | cv2.imread('im.jpg') |
np.ndarray |
BGR 채널이 포함된 HWC 형식 uint8 (0-255) . |
numpy | np.zeros((640,1280,3)) |
np.ndarray |
BGR 채널이 포함된 HWC 형식 uint8 (0-255) . |
torch | torch.zeros(16,3,320,640) |
torch.Tensor |
RGB 채널이 있는 BCHW 포맷 float32 (0.0-1.0) . |
CSV | 'sources.csv' |
str 또는 Path |
이미지, 동영상 또는 디렉터리 경로가 포함된 CSV 파일입니다. |
동영상 ✅ | 'video.mp4' |
str 또는 Path |
MP4, AVI 등의 형식의 동영상 파일입니다. |
디렉토리 ✅ | 'path/' |
str 또는 Path |
이미지 또는 동영상이 포함된 디렉토리의 경로입니다. |
glob ✅ | 'path/*.jpg' |
str |
글로브 패턴을 사용하여 여러 파일과 일치시킵니다. 사용 * 문자를 와일드카드로 사용할 수 있습니다. |
YouTube ✅ | 'https://youtu.be/LNwODJXcvt4' |
str |
YouTube 동영상의 URL을 입력합니다. |
스트림 ✅ | 'rtsp://example.com/media.mp4' |
str |
RTSP, RTMP, TCP 또는 IP 주소와 같은 스트리밍 프로토콜용 URL입니다. |
멀티 스트림 ✅ | 'list.streams' |
str 또는 Path |
*.streams 텍스트 파일에 행당 하나의 스트림 URL, 즉 8개의 스트림이 배치 크기 8로 실행됩니다. |
다음은 각 소스 유형을 사용하는 코드 예제입니다:
예측 소스
이미지 파일에서 추론을 실행합니다.
현재 화면 콘텐츠에 대한 추론을 스크린샷으로 실행합니다.
URL을 통해 원격으로 호스팅된 이미지 또는 동영상에서 추론을 실행합니다.
Python 이미징 라이브러리(PIL)로 연 이미지에서 추론을 실행합니다.
OpenCV로 읽은 이미지에서 추론을 실행합니다.
널 배열로 표현된 이미지에서 추론을 실행합니다.
import numpy as np
from ultralytics import YOLO
# Load a pretrained YOLOv8n model
model = YOLO('yolov8n.pt')
# Create a random numpy array of HWC shape (640, 640, 3) with values in range [0, 255] and type uint8
source = np.random.randint(low=0, high=255, size=(640, 640, 3), dtype='uint8')
# Run inference on the source
results = model(source) # list of Results objects
PyTorch tensor 으로 표현된 이미지에 대해 추론을 실행합니다.
import torch
from ultralytics import YOLO
# Load a pretrained YOLOv8n model
model = YOLO('yolov8n.pt')
# Create a random torch tensor of BCHW shape (1, 3, 640, 640) with values in range [0, 1] and type float32
source = torch.rand(1, 3, 640, 640, dtype=torch.float32)
# Run inference on the source
results = model(source) # list of Results objects
CSV 파일에 나열된 이미지, URL, 동영상 및 디렉터리 모음에 대해 추론을 실행합니다.
동영상 파일에서 추론을 실행합니다. 다음을 사용하여 stream=True
를 사용하여 결과 객체 생성기를 생성하여 메모리 사용량을 줄일 수 있습니다.
디렉토리에 있는 모든 이미지와 동영상에 대해 추론을 실행합니다. 하위 디렉터리에서도 이미지와 동영상을 캡처하려면 글로브 패턴을 사용합니다. path/to/dir/**/*
.
글로브 표현식과 일치하는 모든 이미지와 동영상에 대해 추론을 실행합니다. *
문자.
from ultralytics import YOLO
# Load a pretrained YOLOv8n model
model = YOLO('yolov8n.pt')
# Define a glob search for all JPG files in a directory
source = 'path/to/dir/*.jpg'
# OR define a recursive glob search for all JPG files including subdirectories
source = 'path/to/dir/**/*.jpg'
# Run inference on the source
results = model(source, stream=True) # generator of Results objects
YouTube 동영상에서 추론을 실행합니다. 다음을 사용하여 stream=True
를 사용하여 결과 객체 생성기를 생성하여 긴 동영상의 메모리 사용량을 줄일 수 있습니다.
RTSP, RTMP, TCP 및 IP 주소 프로토콜을 사용하여 원격 스트리밍 소스에 대한 추론을 실행합니다. 하나의 스트림에 여러 개의 스트림이 제공되는 경우 *.streams
텍스트 파일을 입력하면 일괄 추론이 실행됩니다. 즉, 8개의 스트림이 배치 크기 8로 실행되고, 그렇지 않으면 단일 스트림이 배치 크기 1로 실행됩니다.
from ultralytics import YOLO
# Load a pretrained YOLOv8n model
model = YOLO('yolov8n.pt')
# Single stream with batch-size 1 inference
source = 'rtsp://example.com/media.mp4' # RTSP, RTMP, TCP or IP streaming address
# Multiple streams with batched inference (i.e. batch-size 8 for 8 streams)
source = 'path/to/list.streams' # *.streams text file with one streaming address per row
# Run inference on the source
results = model(source, stream=True) # generator of Results objects
추론 인수
model.predict()
는 기본값을 재정의하기 위해 추론 시 전달할 수 있는 여러 인수를 허용합니다:
예
추론 인수:
인수 | 유형 | 기본값 | 설명 |
---|---|---|---|
source |
str |
'ultralytics/assets' |
추론할 데이터 소스를 지정합니다. 이미지 경로, 동영상 파일, 디렉토리, URL 또는 실시간 피드용 디바이스 ID가 될 수 있습니다. 다양한 형식과 소스를 지원하므로 다양한 유형의 입력에 유연하게 적용할 수 있습니다. |
conf |
float |
0.25 |
탐지에 대한 최소 신뢰도 임계값을 설정합니다. 이 임계값보다 낮은 신뢰도로 탐지된 개체는 무시됩니다. 이 값을 조정하면 오탐지를 줄이는 데 도움이 될 수 있습니다. |
iou |
float |
0.7 |
비최대 억제(NMS)에 대한 교차점 초과(IoU) 임계값입니다. 값이 낮을수록 중복되는 상자를 제거하여 탐지 횟수가 줄어들어 중복을 줄이는 데 유용합니다. |
imgsz |
int or tuple |
640 |
추론할 이미지 크기를 정의합니다. 단일 정수일 수 있습니다. 640 를 사용하여 정사각형 크기 조정 또는 (높이, 너비) 튜플을 사용합니다. 적절한 크기 조정은 감지 정확도와 처리 속도를 향상시킬 수 있습니다. |
half |
bool |
False |
정확도에 미치는 영향을 최소화하면서 지원되는 GPU에서 모델 추론 속도를 높일 수 있는 반정확도(FP16) 추론을 활성화합니다. |
device |
str |
None |
추론할 장치를 지정합니다(예, cpu , cuda:0 또는 0 ). 사용자가 모델 실행을 위해 CPU, 특정 GPU 또는 기타 컴퓨팅 장치 중에서 선택할 수 있습니다. |
max_det |
int |
300 |
이미지당 허용되는 최대 감지 횟수. 모델이 한 번의 추론에서 감지할 수 있는 총 오브젝트 수를 제한하여 밀집된 장면에서 과도한 출력을 방지합니다. |
vid_stride |
int |
1 |
비디오 입력의 프레임 보폭. 동영상에서 프레임을 건너뛰어 시간 해상도를 희생하면서 처리 속도를 높일 수 있습니다. 값이 1이면 모든 프레임을 처리하고, 값이 클수록 프레임을 건너뜁니다. |
stream_buffer |
bool |
False |
비디오 스트림을 처리할 때 모든 프레임을 버퍼링할지 여부를 결정합니다(True ), 또는 모델이 가장 최근 프레임을 반환해야 하는지(False ). 실시간 애플리케이션에 유용합니다. |
visualize |
bool |
False |
추론 중에 모델 기능의 시각화를 활성화하여 모델이 '보고 있는 것'에 대한 인사이트를 제공합니다. 디버깅 및 모델 해석에 유용합니다. |
augment |
bool |
False |
예측을 위한 테스트 시간 증강(TTA)을 지원하여 추론 속도를 희생하면서 탐지 견고성을 향상시킬 수 있습니다. |
agnostic_nms |
bool |
False |
서로 다른 클래스의 겹치는 상자를 병합하는 클래스 무관 NMS(Non-Maximum Suppression)를 활성화합니다. 클래스 중복이 일반적인 다중 클래스 탐지 시나리오에 유용합니다. |
classes |
list[int] |
None |
클래스 ID 집합으로 예측을 필터링합니다. 지정된 클래스에 속하는 탐지만 반환됩니다. 다중 클래스 탐지 작업에서 관련 개체에 집중하는 데 유용합니다. |
retina_masks |
bool |
False |
모델에서 사용 가능한 경우 고해상도 세분화 마스크를 사용합니다. 이렇게 하면 세분화 작업의 마스크 품질을 향상시켜 더 세밀한 디테일을 제공할 수 있습니다. |
embed |
list[int] |
None |
특징 벡터 또는 임베딩을 추출할 레이어를 지정합니다. 클러스터링이나 유사도 검색과 같은 다운스트림 작업에 유용합니다. |
시각화 인수:
인수 | 유형 | 기본값 | 설명 |
---|---|---|---|
show |
bool |
False |
만약 True 를 클릭하면 주석이 달린 이미지 또는 동영상이 창에 표시됩니다. 개발 또는 테스트 중에 즉각적인 시각적 피드백을 받을 때 유용합니다. |
save |
bool |
False |
주석이 달린 이미지나 동영상을 파일로 저장할 수 있습니다. 문서화, 추가 분석 또는 결과 공유에 유용합니다. |
save_frames |
bool |
False |
동영상 처리 시 개별 프레임을 이미지로 저장합니다. 특정 프레임을 추출하거나 프레임별로 세부적으로 분석할 때 유용합니다. |
save_txt |
bool |
False |
탐지 결과를 다음 형식에 따라 텍스트 파일로 저장합니다. [class] [x_center] [y_center] [width] [height] [confidence] . 다른 분석 도구와의 통합에 유용합니다. |
save_conf |
bool |
False |
저장된 텍스트 파일에 신뢰도 점수를 포함합니다. 후처리 및 분석에 사용할 수 있는 세부 정보를 향상시킵니다. |
save_crop |
bool |
False |
탐지된 이미지를 잘라낸 이미지를 저장합니다. 데이터 세트 보강, 분석 또는 특정 개체에 대한 집중 데이터 세트 생성에 유용합니다. |
show_labels |
bool |
True |
시각적 출력에 각 감지 항목에 대한 레이블을 표시합니다. 감지된 개체에 대한 즉각적인 이해를 제공합니다. |
show_conf |
bool |
True |
각 탐지에 대한 신뢰도 점수를 라벨과 함께 표시합니다. 각 탐지에 대한 모델의 확실성에 대한 인사이트를 제공합니다. |
show_boxes |
bool |
True |
감지된 개체 주위에 경계 상자를 그립니다. 이미지 또는 비디오 프레임에서 물체를 시각적으로 식별하고 위치를 파악하는 데 필수적입니다. |
line_width |
None or int |
None |
경계 상자의 선 너비를 지정합니다. 만약 None 를 클릭하면 이미지 크기에 따라 선 너비가 자동으로 조정됩니다. 선명도를 위한 시각적 사용자 지정 기능을 제공합니다. |
이미지 및 비디오 형식
YOLOv8 는 ultralytics/data/utils .py에 지정된 대로 다양한 이미지 및 동영상 형식을 지원합니다. 유효한 접미사 및 예제 예측 명령은 아래 표를 참조하세요.
이미지
아래 표에는 유효한 Ultralytics 이미지 형식이 포함되어 있습니다.
이미지 접미사 | 예측 명령 예제 | 참조 |
---|---|---|
.bmp |
yolo predict source=image.bmp |
Microsoft BMP 파일 형식 |
.dng |
yolo predict source=image.dng |
Adobe DNG |
.jpeg |
yolo predict source=image.jpeg |
JPEG |
.jpg |
yolo predict source=image.jpg |
JPEG |
.mpo |
yolo predict source=image.mpo |
다중 사진 개체 |
.png |
yolo predict source=image.png |
휴대용 네트워크 그래픽 |
.tif |
yolo predict source=image.tif |
태그 이미지 파일 형식 |
.tiff |
yolo predict source=image.tiff |
태그 이미지 파일 형식 |
.webp |
yolo predict source=image.webp |
WebP |
.pfm |
yolo predict source=image.pfm |
휴대용 플로트맵 |
동영상
아래 표에는 유효한 Ultralytics 동영상 형식이 포함되어 있습니다.
비디오 접미사 | 예측 명령 예제 | 참조 |
---|---|---|
.asf |
yolo predict source=video.asf |
고급 시스템 형식 |
.avi |
yolo predict source=video.avi |
오디오 비디오 인터리브 |
.gif |
yolo predict source=video.gif |
그래픽 교환 형식 |
.m4v |
yolo predict source=video.m4v |
MPEG-4 파트 14 |
.mkv |
yolo predict source=video.mkv |
마트로스카 |
.mov |
yolo predict source=video.mov |
QuickTime 파일 형식 |
.mp4 |
yolo predict source=video.mp4 |
MPEG-4 파트 14 - 위키백과 |
.mpeg |
yolo predict source=video.mpeg |
MPEG-1 파트 2 |
.mpg |
yolo predict source=video.mpg |
MPEG-1 파트 2 |
.ts |
yolo predict source=video.ts |
MPEG 전송 스트림 |
.wmv |
yolo predict source=video.wmv |
Windows 미디어 비디오 |
.webm |
yolo predict source=video.webm |
WebM 프로젝트 |
결과 작업
모두 Ultralytics predict()
호출은 다음과 같은 목록을 반환합니다. Results
객체입니다:
결과
Results
객체에는 다음과 같은 속성이 있습니다:
속성 | 유형 | 설명 |
---|---|---|
orig_img |
numpy.ndarray |
원본 이미지가 덩어리 배열로 표시됩니다. |
orig_shape |
tuple |
(높이, 너비) 형식의 원본 이미지 모양입니다. |
boxes |
Boxes, optional |
감지 경계 상자가 포함된 박스 개체입니다. |
masks |
Masks, optional |
감지 마스크가 포함된 마스크 객체입니다. |
probs |
Probs, optional |
분류 작업에 대한 각 클래스의 확률을 포함하는 Probs 객체입니다. |
keypoints |
Keypoints, optional |
각 객체에 대해 감지된 키포인트가 포함된 키포인트 객체입니다. |
obb |
OBB, optional |
방향이 지정된 바운딩 박스를 포함하는 OBB 객체입니다. |
speed |
dict |
이미지당 밀리초 단위의 전처리, 추론 및 후처리 속도 사전입니다. |
names |
dict |
클래스 이름 사전입니다. |
path |
str |
이미지 파일의 경로입니다. |
Results
객체에는 다음과 같은 메서드가 있습니다:
방법 | 반환 유형 | 설명 |
---|---|---|
update() |
None |
결과 개체의 상자, 마스크 및 프로브 속성을 업데이트합니다. |
cpu() |
Results |
CPU 메모리에 있는 모든 텐서가 포함된 결과 객체의 복사본을 반환합니다. |
numpy() |
Results |
모든 텐서가 포함된 결과 객체의 복사본을 널 배열로 반환합니다. |
cuda() |
Results |
GPU 메모리에 있는 모든 텐서가 포함된 결과 오브젝트의 사본을 반환합니다. |
to() |
Results |
지정된 디바이스 및 dtype의 텐서가 포함된 결과 객체의 복사본을 반환합니다. |
new() |
Results |
동일한 이미지, 경로 및 이름을 가진 새 결과 개체를 반환합니다. |
plot() |
numpy.ndarray |
탐지 결과를 플로팅합니다. 주석이 달린 이미지의 널 배열을 반환합니다. |
show() |
None |
주석이 달린 결과를 화면에 표시합니다. |
save() |
None |
주석이 달린 결과를 파일에 저장합니다. |
verbose() |
str |
각 작업에 대한 로그 문자열을 반환합니다. |
save_txt() |
None |
예측을 txt 파일로 저장합니다. |
save_crop() |
None |
잘린 예측을 다음 위치에 저장합니다. save_dir/cls/file_name.jpg . |
tojson() |
str |
개체를 JSON 형식으로 변환합니다. |
자세한 내용은 Results
클래스 문서.
상자
Boxes
객체를 사용하여 바운딩 박스를 색인하고, 조작하고, 다른 형식으로 변환할 수 있습니다.
상자
다음은 표입니다. Boxes
클래스 메서드 및 속성(이름, 유형 및 설명 포함)을 포함합니다:
이름 | 유형 | 설명 |
---|---|---|
cpu() |
방법 | 개체를 CPU 메모리로 이동합니다. |
numpy() |
방법 | 객체를 널 배열로 변환합니다. |
cuda() |
방법 | 오브젝트를 CUDA 메모리로 이동합니다. |
to() |
방법 | 개체를 지정된 장치로 이동합니다. |
xyxy |
속성 (torch.Tensor ) |
상자를 xyxy 형식으로 반환합니다. |
conf |
속성 (torch.Tensor ) |
상자의 신뢰도 값을 반환합니다. |
cls |
속성 (torch.Tensor ) |
상자의 클래스 값을 반환합니다. |
id |
속성 (torch.Tensor ) |
상자의 트랙 ID를 반환합니다(가능한 경우). |
xywh |
속성 (torch.Tensor ) |
상자를 xywh 형식으로 반환합니다. |
xyxyn |
속성 (torch.Tensor ) |
원본 이미지 크기에 따라 정규화된 xyxy 형식의 상자를 반환합니다. |
xywhn |
속성 (torch.Tensor ) |
원본 이미지 크기로 정규화된 xywh 형식의 상자를 반환합니다. |
자세한 내용은 Boxes
클래스 문서.
마스크
Masks
객체를 사용하여 마스크를 인덱싱하고, 조작하고, 세그먼트로 변환할 수 있습니다.
마스크
다음은 표입니다. Masks
클래스 메서드 및 속성(이름, 유형 및 설명 포함)을 포함합니다:
이름 | 유형 | 설명 |
---|---|---|
cpu() |
방법 | CPU 메모리에서 tensor 마스크를 반환합니다. |
numpy() |
방법 | tensor 마스크를 널 배열로 반환합니다. |
cuda() |
방법 | GPU 메모리에 있는 마스크 tensor 를 반환합니다. |
to() |
방법 | 지정된 장치 및 dtype을 가진 tensor 마스크를 반환합니다. |
xyn |
속성 (torch.Tensor ) |
텐서로 표현된 정규화된 세그먼트의 목록입니다. |
xy |
속성 (torch.Tensor ) |
텐서로 표현된 픽셀 좌표의 세그먼트 목록입니다. |
자세한 내용은 Masks
클래스 문서.
키포인트
Keypoints
객체를 사용하여 좌표를 색인하고, 조작하고, 정규화할 수 있습니다.
키포인트
다음은 표입니다. Keypoints
클래스 메서드 및 속성(이름, 유형 및 설명 포함)을 포함합니다:
이름 | 유형 | 설명 |
---|---|---|
cpu() |
방법 | CPU 메모리에 있는 키포인트 tensor 를 반환합니다. |
numpy() |
방법 | 키포인트 tensor 를 널 배열로 반환합니다. |
cuda() |
방법 | GPU 메모리에 있는 키포인트 tensor 를 반환합니다. |
to() |
방법 | 지정된 장치 및 dtype을 사용하여 tensor 키포인트를 반환합니다. |
xyn |
속성 (torch.Tensor ) |
텐서로 표현된 정규화된 키포인트 목록입니다. |
xy |
속성 (torch.Tensor ) |
텐서로 표현된 픽셀 좌표의 키포인트 목록입니다. |
conf |
속성 (torch.Tensor ) |
사용 가능한 경우 키포인트의 신뢰도 값을 반환하고, 그렇지 않으면 없음입니다. |
자세한 내용은 Keypoints
클래스 문서.
Probs
Probs
객체를 사용할 수 있습니다. top1
그리고 top5
인덱스 및 분류 점수.
Probs
다음은 메서드와 속성을 요약한 표입니다. Probs
클래스:
이름 | 유형 | 설명 |
---|---|---|
cpu() |
방법 | CPU 메모리에 probs tensor 의 복사본을 반환합니다. |
numpy() |
방법 | probs tensor 의 사본을 널 배열로 반환합니다. |
cuda() |
방법 | GPU 메모리에 probs tensor 의 복사본을 반환합니다. |
to() |
방법 | 지정된 장치 및 dtype이 포함된 probs tensor 사본을 반환합니다. |
top1 |
속성 (int ) |
상위 1등급의 인덱스입니다. |
top5 |
속성 (list[int] ) |
상위 5개 클래스의 지표입니다. |
top1conf |
속성 (torch.Tensor ) |
상위 1등급의 자신감. |
top5conf |
속성 (torch.Tensor ) |
상위 5개 클래스의 자신감. |
자세한 내용은 Probs
클래스 문서.
OBB
OBB
객체를 사용하여 방향이 지정된 바운딩 박스를 색인하고, 조작하고, 다른 형식으로 변환할 수 있습니다.
OBB
다음은 표입니다. OBB
클래스 메서드 및 속성(이름, 유형 및 설명 포함)을 포함합니다:
이름 | 유형 | 설명 |
---|---|---|
cpu() |
방법 | 개체를 CPU 메모리로 이동합니다. |
numpy() |
방법 | 객체를 널 배열로 변환합니다. |
cuda() |
방법 | 오브젝트를 CUDA 메모리로 이동합니다. |
to() |
방법 | 개체를 지정된 장치로 이동합니다. |
conf |
속성 (torch.Tensor ) |
상자의 신뢰도 값을 반환합니다. |
cls |
속성 (torch.Tensor ) |
상자의 클래스 값을 반환합니다. |
id |
속성 (torch.Tensor ) |
상자의 트랙 ID를 반환합니다(가능한 경우). |
xyxy |
속성 (torch.Tensor ) |
가로 상자를 xyxy 형식으로 반환합니다. |
xywhr |
속성 (torch.Tensor ) |
회전된 상자를 xywhr 형식으로 반환합니다. |
xyxyxyxy |
속성 (torch.Tensor ) |
회전된 상자를 xyxyxyxy 형식으로 반환합니다. |
xyxyxyxyn |
속성 (torch.Tensor ) |
회전된 상자를 이미지 크기에 따라 정규화된 xyxyxyxy 형식으로 반환합니다. |
자세한 내용은 OBB
클래스 문서.
결과 플로팅
그리고 plot()
메서드의 Results
개체를 사용하면 감지된 개체(예: 바운딩 박스, 마스크, 키포인트, 확률)를 원본 이미지에 오버레이하여 예측을 쉽게 시각화할 수 있습니다. 이 메서드는 주석이 달린 이미지를 NumPy 배열로 반환하므로 쉽게 표시하거나 저장할 수 있습니다.
플로팅
from PIL import Image
from ultralytics import YOLO
# Load a pretrained YOLOv8n model
model = YOLO('yolov8n.pt')
# Run inference on 'bus.jpg'
results = model(['bus.jpg', 'zidane.jpg']) # results list
# Visualize the results
for i, r in enumerate(results):
# Plot results image
im_bgr = r.plot() # BGR-order numpy array
im_rgb = Image.fromarray(im_bgr[..., ::-1]) # RGB-order PIL image
# Show results to screen (in supported environments)
r.show()
# Save results to disk
r.save(filename=f'results{i}.jpg')
plot()
메서드 매개변수
그리고 plot()
메서드는 다양한 인수를 지원하여 출력을 사용자 정의할 수 있습니다:
인수 | 유형 | 설명 | 기본값 |
---|---|---|---|
conf |
bool |
탐지 신뢰도 점수를 포함하세요. | True |
line_width |
float |
경계 상자의 선 너비입니다. 다음과 같은 경우 이미지 크기에 따라 조정됩니다. None . |
None |
font_size |
float |
텍스트 글꼴 크기. 다음과 같은 경우 이미지 크기에 따라 조정됩니다. None . |
None |
font |
str |
텍스트 주석의 글꼴 이름입니다. | 'Arial.ttf' |
pil |
bool |
이미지를 PIL 이미지 객체로 반환합니다. | False |
img |
numpy.ndarray |
플로팅을 위한 대체 이미지. 다음과 같은 경우 원본 이미지를 사용합니다. None . |
None |
im_gpu |
torch.Tensor |
더 빠른 마스크 플로팅을 위한 GPU 가속 이미지. 모양: (1, 3, 640, 640). | None |
kpt_radius |
int |
그려진 키포인트의 반경입니다. | 5 |
kpt_line |
bool |
키포인트를 선으로 연결합니다. | True |
labels |
bool |
주석에 클래스 레이블을 포함합니다. | True |
boxes |
bool |
이미지에 경계 상자를 오버레이합니다. | True |
masks |
bool |
이미지에 마스크를 오버레이합니다. | True |
probs |
bool |
분류 확률을 포함합니다. | True |
show |
bool |
기본 이미지 뷰어를 사용하여 주석이 달린 이미지를 바로 표시합니다. | False |
save |
bool |
주석이 달린 이미지를 다음에서 지정한 파일에 저장합니다. filename . |
False |
filename |
str |
주석이 달린 이미지를 저장할 파일의 경로 및 이름(다음과 같은 경우) save 는 True . |
None |
스레드 안전 추론
여러 개의 YOLO 모델을 여러 스레드에서 병렬로 실행하는 경우 추론 중 스레드 안전성을 보장하는 것이 중요합니다. 스레드 안전 추론은 각 스레드의 예측이 격리되고 서로 간섭하지 않도록 보장하여 경쟁 조건을 피하고 일관되고 신뢰할 수 있는 출력을 보장합니다.
멀티 스레드 애플리케이션에서 YOLO 모델을 사용하는 경우 각 스레드에 대해 별도의 모델 객체를 인스턴스화하거나 스레드 로컬 저장소를 사용하여 충돌을 방지하는 것이 중요합니다:
스레드 안전 추론
스레드 안전 추론을 위해 각 스레드 내부에 단일 모델을 인스턴스화합니다:
from ultralytics import YOLO
from threading import Thread
def thread_safe_predict(image_path):
"""Performs thread-safe prediction on an image using a locally instantiated YOLO model."""
local_model = YOLO("yolov8n.pt")
results = local_model.predict(image_path)
# Process results
# Starting threads that each have their own model instance
Thread(target=thread_safe_predict, args=("image1.jpg",)).start()
Thread(target=thread_safe_predict, args=("image2.jpg",)).start()
YOLO 모델을 사용한 스레드 안전 추론에 대한 자세한 내용과 단계별 지침은 YOLO 스레드 안전 추론 가이드를 참조하세요. 이 가이드는 일반적인 함정을 피하고 멀티스레드 추론이 원활하게 실행되도록 하는 데 필요한 모든 정보를 제공합니다.
스트리밍 소스 for
-loop
다음은 OpenCV를 사용하는 Python 스크립트입니다(cv2
) 및 YOLOv8 를 사용하여 비디오 프레임에 대한 추론을 실행합니다. 이 스크립트는 필요한 패키지를 이미 설치했다고 가정합니다(opencv-python
그리고 ultralytics
).
포-루프 스트리밍
import cv2
from ultralytics import YOLO
# Load the YOLOv8 model
model = YOLO('yolov8n.pt')
# Open the video file
video_path = "path/to/your/video/file.mp4"
cap = cv2.VideoCapture(video_path)
# Loop through the video frames
while cap.isOpened():
# Read a frame from the video
success, frame = cap.read()
if success:
# Run YOLOv8 inference on the frame
results = model(frame)
# Visualize the results on the frame
annotated_frame = results[0].plot()
# Display the annotated frame
cv2.imshow("YOLOv8 Inference", annotated_frame)
# Break the loop if 'q' is pressed
if cv2.waitKey(1) & 0xFF == ord("q"):
break
else:
# Break the loop if the end of the video is reached
break
# Release the video capture object and close the display window
cap.release()
cv2.destroyAllWindows()
이 스크립트는 동영상의 각 프레임에 대해 예측을 실행하고 결과를 시각화하여 창에 표시합니다. 'Q'를 눌러 루프를 종료할 수 있습니다.
생성 2023-11-12, 업데이트 2024-05-03
저자: glenn-jocher (18), UltralyticsAssistant (1), Burhan-Q (1), plashchynski (1), tensorturtle (1), AyushExel (1), Laughing-q (1)