YOLOv10: 실시간 엔드투엔드 객체 탐지#
2024년 5월에 출시되고 Tsinghua University 연구원들이 Ultralytics Python 패키지를 기반으로 구축한 YOLOv10은 이전 YOLO 버전들의 후처리와 모델 아키텍처 결함을 해결하는 실시간 객체 검출을 위한 새로운 접근 방식을 소개합니다. 비최대억제(NMS)를 제거하고 다양한 모델 컴포넌트를 최적화함으로써, YOLOv10은 출시 당시 크게 감소된 연산 오버헤드로 우수한 성능을 달성했습니다. NMS가 필요 없는 엔드투엔드 디자인은 YOLO26에서 더욱 발전된 접근 방식을 선도했습니다.

Watch: How to Train YOLOv10 on SKU-110k Dataset using Ultralytics | Retail Dataset
개요#
실시간 객체 검출은 낮은 지연 시간으로 이미지 내의 객체 카테고리와 위치를 정확하게 예측하는 것을 목표로 합니다. YOLO 시리즈는 성능과 효율성의 균형 덕분에 이 연구 분야의 최전선에 있어 왔습니다. 그러나 NMS에 대한 의존성과 아키텍처 비효율성은 최적의 성능을 저해해 왔습니다. YOLOv10은 NMS 없는 학습을 위한 일관된 이중 할당(consistent dual assignments)과 전반적인 효율성-정확성 중심의 모델 설계 전략을 도입하여 이러한 문제를 해결합니다.
아키텍처#
YOLOv10의 아키텍처는 이전 YOLO 모델들의 강점을 바탕으로 여러 핵심 혁신을 도입했습니다. 모델 아키텍처는 다음과 같은 구성 요소로 이루어져 있습니다:
- Backbone: feature extraction을 담당하며, YOLOv10의 백본은 그래디언트 흐름을 개선하고 연산 중복성을 줄이기 위해 CSPNet(Cross Stage Partial Network)의 개선된 버전을 사용합니다.
- Neck: 서로 다른 스케일의 특징을 집계하여 헤드로 전달하도록 설계되었습니다. 효과적인 다중 스케일 특징 융합을 위해 PAN(Path Aggregation Network) 레이어를 포함합니다.
- One-to-Many Head: 학습 중 객체당 여러 개의 예측을 생성하여 풍부한 지도 신호를 제공하고 학습 정확도를 향상시킵니다.
- One-to-One Head: 추론 중 객체당 단 하나의 최적 예측을 생성하여 NMS의 필요성을 제거함으로써 지연 시간을 줄이고 효율성을 개선합니다.
주요 특징#
- NMS-Free Training: 일관된 이중 할당을 활용하여 NMS의 필요성을 없애고 inference latency를 줄입니다.
- Holistic Model Design: 경량 분류 헤드, 공간-채널 분리 다운샘플링, 순위 기반 블록 설계를 포함하여 효율성과 정확도 관점에서 다양한 구성 요소를 종합적으로 최적화합니다.
- Enhanced Model Capabilities: 대형 커널 convolutions 및 부분 자기 주의(partial self-attention) 모듈을 통합하여 상당한 연산 비용 없이 성능을 향상합니다.
모델 버전#
YOLOv10은 다양한 애플리케이션 요구에 맞게 여러 모델 규모로 제공됩니다:
- YOLOv10n: 리소스가 극도로 제한된 환경을 위한 Nano 버전.
- YOLOv10s: 속도와 정확도의 균형을 맞춘 Small 버전.
- YOLOv10m: 범용적인 사용을 위한 Medium 버전.
- YOLOv10b: 더 높은 정확도를 위해 너비를 늘린 균형 잡힌 버전.
- YOLOv10l: 계산 리소스 증가를 감수하고 더 높은 정확도를 제공하는 Large 버전.
- YOLOv10x: 최대 정확도와 성능을 위한 Extra-large 버전.
성능#
YOLOv10은 정확성과 효율성 측면에서 이전 YOLO 버전 및 기타 최첨단 모델을 능가합니다. 예를 들어, YOLOv10s는 COCO 데이터셋에서 유사한 AP를 유지하면서 RT-DETR-R18보다 1.8배 더 빠르며, YOLOv10b는 동일한 성능에서 YOLOv9-C보다 지연 시간이 46% 더 낮고 파라미터가 25% 더 적습니다.
지연 시간은 T4 GPU에서 TensorRT FP16으로 측정되었습니다.
| 모델 | 입력 크기 | APval | FLOPs (G) | 지연 시간 (ms) |
|---|---|---|---|---|
| [YOLOv10n][1] | 640 | 38.5 | 6.7 | 1.84 |
| [YOLOv10s][2] | 640 | 46.3 | 21.6 | 2.49 |
| [YOLOv10m][3] | 640 | 51.1 | 59.1 | 4.74 |
| [YOLOv10b][4] | 640 | 52.5 | 92.0 | 5.74 |
| [YOLOv10l][5] | 640 | 53.2 | 120.3 | 7.28 |
| [YOLOv10x][6] | 640 | 54.4 | 160.4 | 10.70 |
방법론#
NMS 없는 학습을 위한 일관된 이중 할당#
YOLOv10은 풍부한 감독과 효율적인 종단간 배포를 보장하기 위해 학습 중에 일대다(one-to-many) 및 일대일(one-to-one) 전략을 결합한 이중 라벨 할당을 채택합니다. 일관된 매칭 메트릭은 두 전략 간의 감독을 정렬하여 inference 중 예측 품질을 향상합니다.
전반적인 효율성-Accuracy 중심의 모델 설계#
효율성 향상#
- Lightweight Classification Head: 깊이별 분리 가능한 컨볼루션(depth-wise separable convolutions)을 사용하여 분류 헤드의 계산 오버헤드를 줄입니다.
- Spatial-Channel Decoupled Down sampling: 정보 손실과 계산 비용을 최소화하기 위해 공간 축소와 채널 변조를 분리합니다.
- Rank-Guided Block Design: 고유한 단계적 중복성을 기반으로 블록 설계를 조정하여 최적의 파라미터 활용을 보장합니다.
정확도 향상#
- Large-Kernel Convolution: receptive field를 확장하여 피처 추출 능력을 향상합니다.
- Partial Self-Attention (PSA): 최소한의 오버헤드로 전역 표현 학습을 개선하기 위해 셀프 어텐션 모듈을 통합합니다.
실험 및 결과#
COCO와 같은 표준 벤치마크에서 광범위하게 테스트된 YOLOv10은 우수한 성능과 효율성을 입증했습니다. 이 모델은 다양한 변형(variant) 전반에서 최첨단 결과를 달성하며, 이전 버전 및 기타 동시대 검출기와 비교하여 지연 시간과 정확성에서 상당한 개선을 보여줍니다.
비교#

다른 최첨단 탐지기들과 비교했을 때:
- YOLOv10s / x는 유사한 정확도로 RT-DETR-R18 / R101보다 1.8배 / 1.3배 빠릅니다
- YOLOv10b는 동일한 정확도에서 YOLOv9-C보다 파라미터가 25% 적고 지연 시간이 46% 더 낮습니다
- YOLOv10l / x는 YOLOv8l / x보다 0.3 AP / 0.5 AP 우수하며, 파라미터는 1.8배 / 2.3배 더 적습니다.
YOLOv10 변형 모델들과 다른 최첨단 모델들의 상세 비교는 다음과 같습니다:
| 모델 | 파라미터 (M) | FLOPs (G) | mAPval 50-95 | 지연 시간 (ms) | 지연 시간-순방향 (ms) |
|---|---|---|---|---|---|
| YOLOv6-3.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-3.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-3.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-3.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 |
파라미터 및 FLOPs 값은 Conv 및 BatchNorm 레이어를 병합하고 보조 일대다(one-to-many) 탐지 헤드를 제거하는 model.fuse() 이후의 융합된 모델 기준입니다. 사전 학습된 체크포인트는 전체 학습 아키텍처를 유지하므로 더 높은 수치를 나타낼 수 있습니다.
사용 예제#
YOLOv10으로 새로운 이미지를 예측하려면 다음을 참고하세요. 모델은 Ultralytics Platform을 통해 클라우드 GPU에서 학습할 수도 있습니다:
from ultralytics import YOLO
# Load a pretrained YOLOv10n model
model = YOLO("yolov10n.pt")
# Perform object detection on an image
results = model("image.jpg")
# Display the results
results[0].show()사용자 지정 데이터셋에서 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)지원되는 작업 및 모드#
YOLOv10 모델 시리즈는 고성능 Object Detection에 최적화된 다양한 모델을 제공합니다. 이 모델들은 다양한 연산 요구 사항과 정확성 요구 사항을 충족하여 광범위한 애플리케이션에서 다용도로 활용될 수 있습니다.
| 모델 | 파일 이름 | 작업 | 학습 | 검증 | 추론 | 내보내기(Export) |
|---|---|---|---|---|---|---|
| YOLOv10 | yolov10n.pt yolov10s.pt yolov10m.pt yolov10l.pt yolov10x.pt | 객체 탐지 | ✅ | ✅ | ✅ | ✅ |
YOLOv10 내보내기#
YOLOv10으로 도입된 새로운 연산으로 인해, Ultralytics가 제공하는 모든 내보내기(export) 포맷이 현재 지원되는 것은 아닙니다. 아래 표는 Ultralytics를 사용하여 YOLOv10으로 성공적으로 변환된 포맷을 보여줍니다. YOLOv10에 대한 추가 포맷의 내보내기 지원을 제공할 수 있는 변경 사항(contribution change)을 기여할 수 있다면 언제든지 풀 리퀘스트(pull request)를 열어 주세요.
| 내보내기 형식 | 내보내기 지원 | 내보낸 모델 추론 | 참고 |
|---|---|---|---|
| TorchScript | ✅ | ✅ | 표준 PyTorch 모델 포맷입니다. |
| ONNX | ✅ | ✅ | 배포를 위해 널리 지원됨. |
| OpenVINO | ✅ | ✅ | Intel 하드웨어에 최적화됨. |
| TensorRT | ✅ | ✅ | NVIDIA GPU에 최적화됨. |
| CoreML | ✅ | ✅ | Apple 기기로 제한됨. |
| TF SavedModel | ✅ | ✅ | TensorFlow의 표준 모델 포맷입니다. |
| TF GraphDef | ✅ | ✅ | 레거시 TensorFlow 형식. |
| LiteRT | ✅ | ✅ | 모바일, 임베디드 및 브라우저(LiteRT.js) 환경에 최적화되었습니다. |
| TF Edge TPU | ✅ | ✅ | Google의 Edge TPU 기기 전용. |
| PaddlePaddle | ❌ | ❌ | 중국에서 널리 사용됨; 글로벌 지원은 적음. |
| NCNN | ✅ | ❌ | Layer torch.topk not exists or registered |
결론#
YOLOv10은 이전 YOLO 버전의 단점을 해결하고 혁신적인 설계 전략을 통합함으로써 출시 당시 실시간 객체 검출의 새로운 표준을 세웠습니다. NMS 없는 접근 방식은 YOLO 패밀리에서 종단간(end-to-end) 객체 검출의 선구자가 되었습니다. 향상된 성능과 NMS 없는 추론(inference)을 제공하는 최신 Ultralytics 모델은 YOLO26을 참고하세요.
인용 및 감사의 글#
Tsinghua University의 YOLOv10 저자들이 Ultralytics 프레임워크에 대한 광범위한 연구와 중요한 기여를 해주신 것에 대해 감사를 표합니다:
@inproceedings{wang2024yolov10,
title={YOLOv10: Real-Time End-to-End Object Detection},
author={Wang, Ao and Chen, Hui and Liu, Lihao and Chen, Kai and Lin, Zijia and Han, Jungong and Ding, Guiguang},
booktitle={Advances in Neural Information Processing Systems},
doi = {10.52202/079017-3429},
url = {https://proceedings.neurips.cc/paper_files/paper/2024/file/c34ddd05eb089991f06f3c5dc36836e0-Paper-Conference.pdf},
volume={37},
pages={107984--108011},
year={2024}
}상세한 구현, 아키텍처 혁신 및 실험 결과는 Tsinghua University 팀이 작성한 YOLOv10 research paper와 GitHub repository를 참고하시기 바랍니다.
FAQ#
Tsinghua University의 연구진이 개발한 YOLOv10은 실시간 객체 검출에 여러 가지 핵심 혁신을 도입합니다. 이 모델은 학습 중에 일관된 이중 할당과 최적화된 모델 컴포넌트를 채택하여 연산 오버헤드를 줄이면서 우수한 성능을 발휘하며, 비최대억제(NMS)의 필요성을 없애줍니다. 아키텍처와 주요 기능에 대한 자세한 내용은 YOLOv10 overview 섹션을 확인하세요.
간편한 추론을 위해 Ultralytics YOLO Python 라이브러리나 명령 줄 인터페이스(CLI)를 사용할 수 있습니다. 다음은 YOLOv10을 사용하여 새로운 이미지를 예측하는 예시입니다:
예시from ultralytics import YOLO # Load the pretrained YOLOv10n model model = YOLO("yolov10n.pt") results = model("image.jpg") results[0].show()더 많은 사용 예시를 보려면 Usage Examples 섹션을 방문하세요.
YOLOv10은 다양한 사용 사례를 충족하기 위해 여러 모델 변형을 제공합니다:
- YOLOv10n: 리소스가 매우 제한된 환경에 적합
- YOLOv10s: 속도와 정확도의 균형
- YOLOv10m: 범용 목적
- YOLOv10b: 폭을 늘려 정확도 향상
- YOLOv10l: 계산 리소스를 소모하지만 높은 정확도
- YOLOv10x: 최대의 정확도와 성능
각 변형은 다양한 연산 요구 사항과 정확성 요구 사항에 맞춰 설계되어 다양한 애플리케이션에 다용도로 활용될 수 있습니다. 자세한 내용은 Model Variants 섹션을 살펴보세요.
YOLOv10은 학습을 위해 일관된 이중 할당을 채택함으로써 추론(inference) 중 비최대억제(NMS)의 필요성을 없앱니다. 이 접근 방식은 추론 지연 시간을 줄이고 예측 효율성을 향상합니다. 아키텍처에는 추론을 위한 일대일 헤드도 포함되어 있어 각 객체가 단 하나의 최적 예측을 얻도록 보장합니다. 자세한 설명은 Consistent Dual Assignments for NMS-Free Training 섹션을 참고하세요.
YOLOv10은 TorchScript, ONNX, OpenVINO, TensorRT를 포함한 여러 내보내기 포맷을 지원합니다. 그러나 새로운 연산으로 인해 Ultralytics가 제공하는 모든 내보내기 포맷이 현재 YOLOv10용으로 지원되는 것은 아닙니다. 지원되는 포맷과 내보내기 지침에 대한 자세한 내용은 Exporting YOLOv10 섹션을 방문하세요.
YOLOv10은 정확성과 효율성 모두에서 이전 YOLO 버전 및 기타 최첨단 모델을 능가합니다. 예를 들어, YOLOv10s는 COCO 데이터셋에서 유사한 AP를 유지하면서 RT-DETR-R18보다 1.8배 더 빠릅니다. YOLOv10b는 동일한 성능에서 YOLOv9-C보다 지연 시간이 46% 더 낮고 파라미터가 25% 더 적습니다. 상세한 벤치마크는 Comparisons 섹션에서 확인할 수 있습니다.