Ultralytics YOLOv8 살펴보기
개요
Ultralytics에서 2023년 1월 10일에 출시한 YOLOv8은 정확도와 속도 면에서 최첨단 성능을 제공합니다. 이전 YOLO 버전의 발전을 기반으로 구축된 YOLOv8은 광범위한 애플리케이션에서 다양한 객체 감지 작업에 이상적인 선택이 되도록 하는 새로운 기능과 최적화를 도입했습니다.
참고: Ultralytics YOLOv8 모델 개요
YOLOv8의 주요 기능
- 고급 백본 및 Neck 아키텍처: YOLOv8은 최첨단 백본 및 Neck 아키텍처를 사용하여 특징 추출 및 객체 감지 성능을 향상시킵니다.
- 앵커 프리 스플릿 Ultralytics 헤드: YOLOv8은(는) 앵커 프리 스플릿 Ultralytics 헤드를 채택하여 앵커 기반 접근 방식에 비해 더 나은 정확도와 보다 효율적인 감지 프로세스에 기여합니다.
- 최적화된 정확도-속도 균형: 정확도와 속도 간의 최적 균형을 유지하는 데 중점을 둔 YOLOv8은(는) 다양한 애플리케이션 영역에서 실시간 객체 감지 작업에 적합합니다.
- 다양한 사전 훈련된 모델: YOLOv8은(는) 다양한 작업 및 성능 요구 사항을 충족하는 다양한 사전 훈련된 모델을 제공하므로 특정 사용 사례에 적합한 모델을 더 쉽게 찾을 수 있습니다.
지원되는 작업 및 모드
YOLOv8 시리즈는 컴퓨터 비전의 특정 작업에 특화된 다양한 모델을 제공합니다. 이러한 모델은 객체 감지에서 인스턴스 분할, 포즈/키포인트 감지, 방향 객체 감지 및 분류와 같은 보다 복잡한 작업에 이르기까지 다양한 요구 사항을 충족하도록 설계되었습니다.
YOLOv8 시리즈의 각 변형은 각 작업에 최적화되어 높은 성능과 정확도를 보장합니다. 또한 이러한 모델은 추론, 유효성 검사, 훈련 및 내보내기를 포함한 다양한 작동 모드와 호환되므로 배포 및 개발의 다양한 단계에서 사용할 수 있습니다.
모델 | 파일 이름 | 작업 | 추론 | 검증 | 훈련 | 내보내기 |
---|---|---|---|---|---|---|
YOLOv8 | yolov8n.pt yolov8s.pt yolov8m.pt yolov8l.pt yolov8x.pt |
객체 탐지 | ✅ | ✅ | ✅ | ✅ |
YOLOv8-seg | yolov8n-seg.pt yolov8s-seg.pt yolov8m-seg.pt yolov8l-seg.pt yolov8x-seg.pt |
인스턴스 분할 | ✅ | ✅ | ✅ | ✅ |
YOLOv8-pose | yolov8n-pose.pt yolov8s-pose.pt yolov8m-pose.pt yolov8l-pose.pt yolov8x-pose.pt yolov8x-pose-p6.pt |
포즈/키포인트 | ✅ | ✅ | ✅ | ✅ |
YOLOv8-obb | yolov8n-obb.pt yolov8s-obb.pt yolov8m-obb.pt yolov8l-obb.pt yolov8x-obb.pt |
방향 감지 | ✅ | ✅ | ✅ | ✅ |
YOLOv8-cls | yolov8n-cls.pt yolov8s-cls.pt yolov8m-cls.pt yolov8l-cls.pt yolov8x-cls.pt |
분류 | ✅ | ✅ | ✅ | ✅ |
이 표는 특정 작업에서의 적용 가능성과 추론, 검증, 훈련 및 내보내기와 같은 다양한 작동 모드와의 호환성을 강조하여 YOLOv8 모델 변형에 대한 개요를 제공합니다. 이는 YOLOv8 시리즈의 다재다능함과 견고성을 보여주며, 컴퓨터 비전의 다양한 애플리케이션에 적합하도록 합니다.
성능 지표
성능
감지 문서에서 COCO로 훈련된 이러한 모델의 사용 예시를 참조하십시오. 여기에는 80개의 사전 훈련된 클래스가 포함됩니다.
모델 | 크기 (픽셀) |
mAPval 50-95 |
속도 CPU ONNX (ms) |
속도 A100 TensorRT (ms) |
파라미터 (M) |
FLOPs (B) |
---|---|---|---|---|---|---|
YOLOv8n | 640 | 37.3 | 80.4 | 0.99 | 3.2 | 8.7 |
YOLOv8s | 640 | 44.9 | 128.4 | 1.20 | 11.2 | 28.6 |
YOLOv8m | 640 | 50.2 | 234.7 | 1.83 | 25.9 | 78.9 |
YOLOv8l | 640 | 52.9 | 375.2 | 2.39 | 43.7 | 165.2 |
YOLOv8x | 640 | 53.9 | 479.1 | 3.53 | 68.2 | 257.8 |
600개의 사전 훈련된 클래스를 포함하는 Open Image V7에서 훈련된 이러한 모델의 사용 예시는 Detection Docs를 참조하십시오.
모델 | 크기 (픽셀) |
mAPval 50-95 |
속도 CPU ONNX (ms) |
속도 A100 TensorRT (ms) |
파라미터 (M) |
FLOPs (B) |
---|---|---|---|---|---|---|
YOLOv8n | 640 | 18.4 | 142.4 | 1.21 | 3.5 | 10.5 |
YOLOv8s | 640 | 27.7 | 183.1 | 1.40 | 11.4 | 29.7 |
YOLOv8m | 640 | 33.6 | 408.5 | 2.26 | 26.2 | 80.6 |
YOLOv8l | 640 | 34.9 | 596.9 | 2.43 | 44.1 | 167.4 |
YOLOv8x | 640 | 36.3 | 860.6 | 3.56 | 68.7 | 260.6 |
분할 문서에서 COCO로 훈련된 이러한 모델의 사용 예시를 참조하십시오. 여기에는 80개의 사전 훈련된 클래스가 포함됩니다.
모델 | 크기 (픽셀) |
mAPbox 50-95 |
mAPmask 50-95 |
속도 CPU ONNX (ms) |
속도 A100 TensorRT (ms) |
파라미터 (M) |
FLOPs (B) |
---|---|---|---|---|---|---|---|
YOLOv8n-seg | 640 | 36.7 | 30.5 | 96.1 | 1.21 | 3.4 | 12.6 |
YOLOv8s-seg | 640 | 44.6 | 36.8 | 155.7 | 1.47 | 11.8 | 42.6 |
YOLOv8m-seg | 640 | 49.9 | 40.8 | 317.0 | 2.18 | 27.3 | 110.2 |
YOLOv8l-seg | 640 | 52.3 | 42.6 | 572.4 | 2.79 | 46.0 | 220.5 |
YOLOv8x-seg | 640 | 53.4 | 43.4 | 712.1 | 4.02 | 71.8 | 344.1 |
1000개의 사전 훈련된 클래스가 포함된 ImageNet에서 훈련된 이러한 모델의 사용 예는 분류 문서를 참조하십시오.
모델 | 크기 (픽셀) |
acc top1 |
acc top5 |
속도 CPU ONNX (ms) |
속도 A100 TensorRT (ms) |
파라미터 (M) |
FLOPs (B) at 224 |
---|---|---|---|---|---|---|---|
YOLOv8n-cls | 224 | 69.0 | 88.3 | 12.9 | 0.31 | 2.7 | 0.5 |
YOLOv8s-cls | 224 | 73.8 | 91.7 | 23.4 | 0.35 | 6.4 | 1.7 |
YOLOv8m-cls | 224 | 76.8 | 93.5 | 85.4 | 0.62 | 17.0 | 5.3 |
YOLOv8l-cls | 224 | 76.8 | 93.5 | 163.0 | 0.87 | 37.5 | 12.3 |
YOLOv8x-cls | 224 | 79.0 | 94.6 | 232.0 | 1.01 | 57.4 | 19.0 |
COCO 데이터셋으로 학습된 모델의 사용 예시는 포즈 추정 문서를 참고하세요. 'person'이라는 사전 학습된 클래스 1개가 포함되어 있습니다.
모델 | 크기 (픽셀) |
mAPpose 50-95 |
mAPpose 50 |
속도 CPU ONNX (ms) |
속도 A100 TensorRT (ms) |
파라미터 (M) |
FLOPs (B) |
---|---|---|---|---|---|---|---|
YOLOv8n-pose | 640 | 50.4 | 80.1 | 131.8 | 1.18 | 3.3 | 9.2 |
YOLOv8s-pose | 640 | 60.0 | 86.2 | 233.2 | 1.42 | 11.6 | 30.2 |
YOLOv8m-pose | 640 | 65.0 | 88.8 | 456.3 | 2.00 | 26.4 | 81.0 |
YOLOv8l-pose | 640 | 67.6 | 90.0 | 784.5 | 2.59 | 44.4 | 168.6 |
YOLOv8x-pose | 640 | 69.2 | 90.2 | 1607.1 | 3.73 | 69.4 | 263.2 |
YOLOv8x-pose-p6 | 1280 | 71.6 | 91.2 | 4088.7 | 10.04 | 99.1 | 1066.4 |
DOTAv1으로 학습된 모델의 사용 예시는 방향이 지정된 객체 감지 문서를 참고하세요. 15개의 사전 학습된 클래스가 포함되어 있습니다.
모델 | 크기 (픽셀) |
mAP테스트 50 |
속도 CPU ONNX (ms) |
속도 A100 TensorRT (ms) |
파라미터 (M) |
FLOPs (B) |
---|---|---|---|---|---|---|
YOLOv8n-obb | 1024 | 78.0 | 204.77 | 3.57 | 3.1 | 23.3 |
YOLOv8s-obb | 1024 | 79.5 | 424.88 | 4.07 | 11.4 | 76.3 |
YOLOv8m-obb | 1024 | 80.5 | 763.48 | 7.61 | 26.4 | 208.6 |
YOLOv8l-obb | 1024 | 80.7 | 1278.42 | 11.83 | 44.5 | 433.8 |
YOLOv8x-obb | 1024 | 81.36 | 1759.10 | 13.23 | 69.5 | 676.7 |
YOLOv8 사용 예시
이 예제에서는 간단한 YOLOv8 학습 및 추론 예제를 제공합니다. 이러한 모드 및 기타 모드에 대한 전체 설명서는 예측, 학습, 유효성 검사 및 내보내기 문서 페이지를 참조하십시오.
아래 예제는 객체 감지를 위한 YOLOv8 Detect 모델에 대한 것입니다. 추가 지원 작업은 분할, 분류, OBB 문서 및 포즈 문서를 참조하십시오.
예시
PyTorch 사전 훈련된 *.pt
모델과 구성 *.yaml
파일을 다음으로 전달하여 YOLO()
python에서 모델 인스턴스를 생성하는 클래스:
from ultralytics import YOLO
# Load a COCO-pretrained YOLOv8n model
model = YOLO("yolov8n.pt")
# Display model information (optional)
model.info()
# Train the model on the COCO8 example dataset for 100 epochs
results = model.train(data="coco8.yaml", epochs=100, imgsz=640)
# Run inference with the YOLOv8n model on the 'bus.jpg' image
results = model("path/to/bus.jpg")
모델을 직접 실행하는 데 사용할 수 있는 CLI 명령은 다음과 같습니다.
# Load a COCO-pretrained YOLOv8n model and train it on the COCO8 example dataset for 100 epochs
yolo train model=yolov8n.pt data=coco8.yaml epochs=100 imgsz=640
# Load a COCO-pretrained YOLOv8n model and run inference on the 'bus.jpg' image
yolo predict model=yolov8n.pt source=path/to/bus.jpg
인용 및 감사의 말씀
Ultralytics YOLOv8 간행물
Ultralytics는 모델의 빠른 진화로 인해 YOLOv8에 대한 공식 연구 논문을 발표하지 않았습니다. 정적인 문서를 만드는 대신 기술을 발전시키고 사용하기 쉽게 만드는 데 주력하고 있습니다. YOLO 아키텍처, 기능 및 사용법에 대한 최신 정보는 GitHub 저장소 및 문서를 참조하십시오.
YOLOv8 모델 또는 이 저장소의 다른 소프트웨어를 작업에 사용하는 경우 다음 형식을 사용하여 인용하십시오.
@software{yolov8_ultralytics,
author = {Glenn Jocher and Ayush Chaurasia and Jing Qiu},
title = {Ultralytics YOLOv8},
version = {8.0.0},
year = {2023},
url = {https://github.com/ultralytics/ultralytics},
orcid = {0000-0001-5950-6979, 0000-0002-7603-6750, 0000-0003-3783-7069},
license = {AGPL-3.0}
}
DOI는 아직 보류 중이며 사용 가능하게 되면 인용에 추가될 예정입니다. YOLOv8 모델은 AGPL-3.0 및 Enterprise 라이선스에 따라 제공됩니다.
FAQ
YOLOv8은(는) 무엇이며 이전 YOLO 버전과 어떻게 다른가요?
YOLOv8은 고급 기능을 통해 실시간 객체 감지 성능을 향상시키도록 설계되었습니다. 이전 버전과 달리 YOLOv8은 앵커 프리(anchor-free) 분할 Ultralytics 헤드, 최첨단 백본 및 넥 아키텍처를 통합하고 최적화된 정확도-속도 균형을 제공하므로 다양한 애플리케이션에 이상적입니다. 자세한 내용은 개요 및 주요 기능 섹션을 확인하십시오.
다양한 컴퓨터 비전 작업에 YOLOv8을(를) 어떻게 사용할 수 있나요?
YOLOv8은 객체 감지, 인스턴스 분할, 포즈/키포인트 감지, 방향 객체 감지 및 분류를 포함한 광범위한 컴퓨터 비전 작업을 지원합니다. 각 모델 변형은 특정 작업에 최적화되어 있으며 추론, 유효성 검사, 학습 및 내보내기와 같은 다양한 작동 모드와 호환됩니다. 자세한 내용은 지원되는 작업 및 모드 섹션을 참조하십시오.
YOLOv8 모델의 성능 지표는 무엇인가요?
YOLOv8 모델은 다양한 벤치마킹 데이터 세트에서 최첨단 성능을 달성합니다. 예를 들어 YOLOv8n 모델은 COCO 데이터 세트에서 37.3의 mAP(평균 정밀도)와 A100 TensorRT에서 0.99ms의 속도를 달성합니다. 다양한 작업 및 데이터 세트에 대한 각 모델 변형에 대한 자세한 성능 지표는 성능 지표 섹션에서 확인할 수 있습니다.
YOLOv8 모델을 어떻게 훈련하나요?
YOLOv8 모델 학습은 Python 또는 CLI를 사용하여 수행할 수 있습니다. 다음은 COCO8 데이터 세트에서 100 epoch 동안 COCO 사전 학습된 YOLOv8 모델을 사용하여 모델을 학습하는 예입니다.
예시
from ultralytics import YOLO
# Load a COCO-pretrained YOLOv8n model
model = YOLO("yolov8n.pt")
# Train the model on the COCO8 example dataset for 100 epochs
results = model.train(data="coco8.yaml", epochs=100, imgsz=640)
yolo train model=yolov8n.pt data=coco8.yaml epochs=100 imgsz=640
자세한 내용은 학습 문서를 참조하십시오.
YOLOv8 모델의 성능을 벤치마킹할 수 있나요?
예, YOLOv8 모델은 다양한 내보내기 형식에서 속도 및 정확도 측면에서 성능을 벤치마킹할 수 있습니다. PyTorch, ONNX, TensorRT 등을 사용하여 벤치마킹할 수 있습니다. 다음은 Python 및 CLI를 사용하여 벤치마킹하는 예제 명령입니다.
예시
from ultralytics.utils.benchmarks import benchmark
# Benchmark on GPU
benchmark(model="yolov8n.pt", data="coco8.yaml", imgsz=640, half=False, device=0)
yolo benchmark model=yolov8n.pt data='coco8.yaml' imgsz=640 half=False device=0
자세한 내용은 성능 지표 섹션을 확인하십시오.