YOLOv10: 실시간 엔드투엔드 객체 감지
YOLOv10 기반으로 구축된 UltralyticsPython 패키지를 기반으로 구축된 YOLO 실시간 객체 감지에 대한 새로운 접근 방식을 도입하여 이전 YOLO 버전에서 발견된 후처리 및 모델 아키텍처의 결함을 모두 해결합니다. 비최대 억제NMS를 제거하고 다양한 모델 구성 요소를 최적화함으로써 YOLOv10 계산 오버헤드를 크게 줄이면서 최첨단 성능을 달성합니다. 광범위한 실험을 통해 여러 모델 규모에 걸쳐 정확도와 지연 시간의 우수한 절충점을 입증했습니다.

참고: Ultralytics 사용하여 SKU-110k 데이터 세트에서 YOLOv10 학습하는 방법 | 리테일 데이터 세트
개요
실시간 물체 감지는 짧은 지연 시간으로 이미지에서 물체의 범주와 위치를 정확하게 예측하는 것을 목표로 합니다. YOLO 시리즈는 성능과 효율성 사이의 균형으로 인해 이 연구의 선두에 서 있습니다. 그러나 NMS 대한 의존도와 아키텍처의 비효율성이 최적의 성능을 저해해 왔습니다. YOLOv10 NMS 훈련을 위한 일관된 이중 할당과 전체적인 효율성-정확도 중심의 모델 설계 전략을 도입하여 이러한 문제를 해결합니다.
아키텍처
YOLOv10 아키텍처는 이전 YOLO 모델의 강점을 기반으로 몇 가지 주요 혁신을 도입했습니다. 모델 아키텍처는 다음과 같은 구성 요소로 이루어져 있습니다:
- Backbone: 특징 추출을 담당하는 YOLOv10의 backbone은 gradient 흐름을 개선하고 계산 중복성을 줄이기 위해 CSPNet(Cross Stage Partial Network)의 향상된 버전을 사용합니다.
- Neck: Neck은 다양한 규모의 특징을 집계하여 헤드로 전달하도록 설계되었습니다. 효과적인 다중 스케일 특징 융합을 위해 PAN(Path Aggregation Network) 레이어를 포함합니다.
- One-to-Many Head: 풍부한 지도 신호를 제공하고 학습 정확도를 향상시키기 위해 학습 중에 객체당 여러 예측을 생성합니다.
- 일대일 헤드: 추론 중에 개체당 하나의 최적 예측을 생성하여 NMS 필요하지 않으므로 지연 시간을 줄이고 효율성을 개선합니다.
주요 기능
- NMS 교육: 일관된 이중 할당을 활용하여 NMS 필요성을 없애고 추론 지연 시간을 줄입니다.
- 총체적 모델 설계: 경량 분류 헤드, 공간-채널 분리 다운 샘플링 및 순위 기반 블록 설계를 포함하여 효율성 및 정확도 관점에서 다양한 구성 요소를 포괄적으로 최적화합니다.
- 향상된 모델 기능: 큰 커널 컨볼루션 및 부분적 self-attention 모듈을 통합하여 상당한 계산 비용 없이 성능을 향상시킵니다.
모델 변형
YOLOv10 다양한 애플리케이션 요구 사항을 충족할 수 있도록 다양한 모델 스케일로 제공됩니다:
- YOLOv10n: 리소스가 매우 제한된 환경을 위한 Nano 버전입니다.
- YOLOv10s: 속도와 정확도의 균형을 유지하는 소형 버전입니다.
- YOLOv10m: 범용으로 사용되는 중간 버전입니다.
- YOLOv10b: 더 높은 정확도를 위해 폭이 증가된 균형 잡힌 버전입니다.
- YOLOv10l: 증가된 계산 리소스 비용으로 더 높은 정확도를 제공하는 대형 버전입니다.
- YOLOv10x: 최대 정확도와 성능을 위한 초대형 버전입니다.
성능
YOLOv10 정확도와 효율성 측면에서 이전 YOLO 버전 및 기타 최신 모델보다 성능이 뛰어납니다. 예를 들어, YOLOv10s는 COCO 데이터 세트에서 비슷한 AP 사용하는 RT-DETR 1.8배 빠르며, YOLOv10b는 동일한 성능의 YOLOv9 지연 시간이 46% 짧고 파라미터 수가 25% 더 적습니다.
성능
지연 시간은 T4 GPU에서 TensorRT FP16으로 측정되었습니다.
| 모델 | 입력 크기 | APval | FLOPs (G) | 지연 시간 (ms) |
|---|---|---|---|---|
| YOLOv10n | 640 | 38.5 | 6.7 | 1.84 |
| YOLOv10s | 640 | 46.3 | 21.6 | 2.49 |
| YOLOv10m | 640 | 51.1 | 59.1 | 4.74 |
| YOLOv10b | 640 | 52.5 | 92.0 | 5.74 |
| YOLOv10l | 640 | 53.2 | 120.3 | 7.28 |
| YOLOv10x | 640 | 54.4 | 160.4 | 10.70 |
방법론
NMS 교육을 위한 일관된 이중 할당
YOLOv10 풍부한 감독과 효율적인 엔드투엔드 배포를 보장하기 위해 훈련 중에 일대다 및 일대일 전략을 결합한 이중 레이블 할당을 사용합니다. 일관된 매칭 메트릭은 두 전략 간의 감독을 조정하여 추론 중 예측의 품질을 향상시킵니다.
전체 효율성 - 정확도 기반 모델 설계
효율성 향상
- 경량 분류 헤드: Depth-wise separable convolution을 사용하여 분류 헤드의 계산 오버헤드를 줄입니다.
- 공간-채널 분리 다운샘플링: 공간 축소 및 채널 변조를 분리하여 정보 손실과 계산 비용을 최소화합니다.
- 순위 기반 블록 설계: 고유한 스테이지 중복성을 기반으로 블록 설계를 조정하여 최적의 파라미터 활용을 보장합니다.
정확도 향상
- 대형 커널 컨볼루션: 특징 추출 능력을 향상시키기 위해 수용 영역을 확대합니다.
- 부분적 Self-Attention (PSA): Self-Attention 모듈을 통합하여 최소한의 오버헤드로 글로벌 표현 학습을 향상시킵니다.
실험 및 결과
YOLOv10 다음과 같은 표준 벤치마크에서 광범위하게 테스트되었습니다. COCO와 같은 표준 벤치마크에서 광범위한 테스트를 거쳐 우수한 성능과 효율성을 입증했습니다. 이 모델은 다양한 변종에 걸쳐 최첨단 결과를 달성하여 이전 버전 및 기타 최신 탐지기에 비해 지연 시간과 정확도가 크게 향상되었습니다.
비교

다른 최첨단 검출기와 비교:
- YOLOv10s / x는 비슷한 정확도에서 RT-DETR-R18 / R101보다 1.8× / 1.3× 더 빠릅니다.
- YOLOv10b는 동일한 정확도에서 YOLOv9 파라미터 수가 25% 더 적고 지연 시간이 46% 더 짧습니다.
- 1.8배 / 2.3배 적은 매개 변수로 0.3 AP / 0.5 AP YOLOv10l / x가 YOLOv8l / x보다 성능 향상
성능
다음은 다른 최신 모델과 YOLOv10 변형을 자세히 비교한 것입니다:
| 모델 | 파라미터 (M) | FLOPs (G) | mAPval 50-95 | 지연 시간 (ms) | 지연 시간-forward (ms) |
|---|---|---|---|---|---|
| YOLOv6.0-N | 4.7 | 11.4 | 37.0 | 2.69 | 1.76 |
| Gold-YOLO-N | 5.6 | 12.1 | 39.6 | 2.92 | 1.82 |
| YOLOv8n | 3.2 | 8.7 | 37.3 | 6.16 | 1.77 |
| YOLOv10n | 2.3 | 6.7 | 39.5 | 1.84 | 1.79 |
| YOLOv6.0-S | 18.5 | 45.3 | 44.3 | 3.42 | 2.35 |
| Gold-YOLO-S | 21.5 | 46.0 | 45.4 | 3.82 | 2.73 |
| YOLOv8s | 11.2 | 28.6 | 44.9 | 7.07 | 2.33 |
| YOLOv10s | 7.2 | 21.6 | 46.8 | 2.49 | 2.39 |
| RT-DETR-R18 | 20.0 | 60.0 | 46.5 | 4.58 | 4.49 |
| YOLOv6.0-M | 34.9 | 85.8 | 49.1 | 5.63 | 4.56 |
| Gold-YOLO-M | 41.3 | 87.5 | 49.8 | 6.38 | 5.45 |
| YOLOv8m | 25.9 | 78.9 | 50.6 | 9.50 | 5.09 |
| YOLOv10m | 15.4 | 59.1 | 51.3 | 4.74 | 4.63 |
| YOLOv6.0-L | 59.6 | 150.7 | 51.8 | 9.02 | 7.90 |
| Gold-YOLO-L | 75.1 | 151.7 | 51.8 | 10.65 | 9.78 |
| YOLOv8l | 43.7 | 165.2 | 52.9 | 12.39 | 8.06 |
| RT-DETR-R50 | 42.0 | 136.0 | 53.1 | 9.20 | 9.07 |
| YOLOv10l | 24.4 | 120.3 | 53.4 | 7.28 | 7.21 |
| YOLOv8x | 68.2 | 257.8 | 53.9 | 16.86 | 12.83 |
| RT-DETR-R101 | 76.0 | 259.0 | 54.3 | 13.71 | 13.58 |
| YOLOv10x | 29.5 | 160.4 | 54.4 | 10.70 | 10.60 |
사용 예시
YOLOv10 새로운 이미지를 예측합니다:
예시
from ultralytics import YOLO
# Load a pre-trained YOLOv10n model
model = YOLO("yolov10n.pt")
# Perform object detection on an image
results = model("image.jpg")
# Display the results
results[0].show()
# Load a COCO-pretrained YOLOv10n model and run inference on the 'bus.jpg' image
yolo detect predict model=yolov10n.pt source=path/to/bus.jpg
사용자 지정 데이터 세트에 대한 YOLOv10 학습용:
예시
from ultralytics import YOLO
# Load YOLOv10n model from scratch
model = YOLO("yolov10n.yaml")
# Train the model
model.train(data="coco8.yaml", epochs=100, imgsz=640)
# Build a YOLOv10n model from scratch and train it on the COCO8 example dataset for 100 epochs
yolo train model=yolov10n.yaml data=coco8.yaml epochs=100 imgsz=640
# Build a YOLOv10n model from scratch and run inference on the 'bus.jpg' image
yolo predict model=yolov10n.yaml source=path/to/bus.jpg
지원되는 작업 및 모드
YOLOv10 모델 시리즈는 고성능 객체 감지에 최적화된 다양한 모델을 제공합니다. 이 모델은 다양한 계산 요구 사항과 정확도 요구 사항을 충족하므로 다양한 애플리케이션에 다용도로 사용할 수 있습니다.
| 모델 | 파일 이름 | 태스크 | 추론 | 검증 | 훈련 | 내보내기 |
|---|---|---|---|---|---|---|
| YOLOv10 | yolov10n.pt yolov10s.pt yolov10m.pt yolov10l.pt yolov10x.pt | 객체 감지 | ✅ | ✅ | ✅ | ✅ |
YOLOv10 내보내기
YOLOv10 도입된 새로운 작업으로 인해 현재 Ultralytics 제공하는 모든 내보내기 형식이 지원되는 것은 아닙니다. 다음 표에는 YOLOv10 Ultralytics 사용하여 성공적으로 변환된 형식이 요약되어 있습니다. YOLOv10 추가 형식의 내보내기 지원을 추가하기 위한 기여 변경 사항을 제공할 수 있는 경우 언제든지 풀 리퀘스트를 열어 주세요.
| 내보내기 형식 | 내보내기 지원 | 내보낸 모델 추론 | 참고 사항 |
|---|---|---|---|
| TorchScript | ✅ | ✅ | 표준 PyTorch 모델 형식입니다. |
| ONNX | ✅ | ✅ | 배포에 널리 지원됩니다. |
| OpenVINO | ✅ | ✅ | Intel 하드웨어에 최적화되었습니다. |
| TensorRT | ✅ | ✅ | NVIDIA GPU에 최적화되었습니다. |
| CoreML | ✅ | ✅ | Apple 장치로 제한됩니다. |
| TF SavedModel | ✅ | ✅ | TensorFlow의 표준 모델 형식입니다. |
| TF GraphDef | ✅ | ✅ | 레거시 TensorFlow 형식입니다. |
| TF Lite | ✅ | ✅ | 모바일 및 임베디드에 최적화되었습니다. |
| TF Edge TPU | ✅ | ✅ | Google의 Edge TPU 장치에만 해당됩니다. |
| TF.js | ✅ | ✅ | 브라우저 사용을 위한 JavaScript 환경입니다. |
| PaddlePaddle | ❌ | ❌ | 중국에서 인기가 높으며, 글로벌 지원은 적습니다. |
| NCNN | ✅ | ❌ | 레이어 torch.topk 존재하지 않거나 등록되지 않았습니다. |
결론
YOLOv10 이전 YOLO 버전의 단점을 해결하고 혁신적인 설계 전략을 통합하여 실시간 물체 감지의 새로운 표준을 제시합니다. 낮은 계산 비용으로 높은 정확도를 제공하는 이 제품은 제조, 소매, 자율 주행 차량을 포함한 다양한 실제 애플리케이션에 이상적인 선택입니다.
인용 및 감사의 말씀
광범위한 연구와 중요한 공헌을 한 칭화대학교의 YOLOv10 저자들에게 감사의 말씀을 전합니다. Ultralytics 프레임워크에 크게 기여해 주신 칭화대학교의 저자분들께 감사드립니다:
@article{THU-MIGyolov10,
title={YOLOv10: Real-Time End-to-End Object Detection},
author={Ao Wang, Hui Chen, Lihao Liu, et al.},
journal={arXiv preprint arXiv:2405.14458},
year={2024},
institution={Tsinghua University},
license = {AGPL-3.0}
}
자세한 구현, 아키텍처 혁신 및 실험 결과는 칭화대학교 팀의 YOLOv10 연구 논문과 GitHub 리포지토리를 참조하세요.
FAQ
YOLOv10 무엇이며 이전 YOLO 버전과 어떻게 다른가요?
칭화대학교 연구진이 개발한 YOLOv10 실시간 객체 감지에 몇 가지 주요 혁신 기술을 도입했습니다. 훈련 중에 일관된 이중 할당을 사용하여 비최대 억제NMS가 필요하지 않으며, 모델 구성 요소를 최적화하여 계산 오버헤드를 줄이면서 뛰어난 성능을 제공합니다. 아키텍처와 주요 기능에 대한 자세한 내용은 YOLOv10 개요 섹션에서 확인하세요.
YOLOv10 사용하여 추론 실행을 시작하려면 어떻게 해야 하나요?
쉽게 추론하기 위해 Ultralytics YOLO Python 라이브러리 또는 명령줄 인터페이스CLI를 사용할 수 있습니다. 다음은 YOLOv10 사용해 새로운 이미지를 예측하는 예시입니다:
예시
from ultralytics import YOLO
# Load the pre-trained YOLOv10n model
model = YOLO("yolov10n.pt")
results = model("image.jpg")
results[0].show()
yolo detect predict model=yolov10n.pt source=path/to/image.jpg
더 많은 사용 예제는 사용 예제 섹션을 방문하십시오.
YOLOv10 어떤 모델 변형을 제공하며 사용 사례는 무엇인가요?
YOLOv10 다양한 사용 사례를 충족하기 위해 여러 가지 모델 변형을 제공합니다:
- YOLOv10n: 리소스가 매우 제한된 환경에 적합합니다.
- YOLOv10s: 속도와 정확도의 균형을 유지합니다.
- YOLOv10m: 범용으로 사용됩니다.
- YOLOv10b: 폭이 증가하여 정확도가 더 높습니다.
- YOLOv10l: 계산 리소스가 많이 소모되는 고정밀도 버전입니다.
- YOLOv10x: 최대 정확도 및 성능
각 변형은 다양한 계산 요구 사항과 정확도 요구 사항을 충족하도록 설계되어 다양한 애플리케이션에 다용도로 사용할 수 있습니다. 자세한 내용은 모델 변형 섹션을 살펴보십시오.
YOLOv10 NMS 접근 방식은 어떻게 성능을 개선하나요?
YOLOv10 훈련에 일관된 이중 할당을 사용함으로써 추론 중 비최대 억제NMS가 필요하지 않습니다. 이 접근 방식은 추론 대기 시간을 줄이고 예측 효율성을 향상시킵니다. 또한 이 아키텍처에는 추론을 위한 일대일 헤드가 포함되어 있어 각 객체가 하나의 최상의 예측을 얻도록 보장합니다. 자세한 설명은 NMS 학습을 위한 일관된 이중 할당 섹션을 참조하세요.
YOLOv10 모델의 내보내기 옵션은 어디에서 찾을 수 있나요?
YOLOv10 TorchScript, ONNX, OpenVINO, TensorRT 비롯한 여러 내보내기 형식을 지원합니다. 그러나 새로운 작업으로 인해 현재 Ultralytics 제공하는 모든 내보내기 형식이 YOLOv10 지원되는 것은 아닙니다. 지원되는 형식에 대한 자세한 내용과 내보내기 지침은 YOLOv10 내 보내기 섹션을 참조하세요.
YOLOv10 모델의 성능 벤치마크는 어떻게 되나요?
YOLOv10 정확도와 효율성 모두에서 이전 YOLO 버전 및 기타 최신 모델보다 성능이 뛰어납니다. 예를 들어, YOLOv10s는 COCO 데이터 세트에서 비슷한 AP 사용하는 RT-DETR 1.8배 더 빠릅니다. YOLOv10b는 동일한 성능의 YOLOv9 지연 시간이 46% 짧고 매개변수가 25% 더 적습니다. 자세한 벤치마크는 비교 섹션에서 확인할 수 있습니다.