YOLOv10: 실시간 엔드투엔드 객체 감지#
2024년 5월에 출시된 YOLOv10은 Tsinghua University의 연구진이 Ultralytics Python package를 기반으로 개발했으며, 이전 YOLO 버전에서 발견된 후처리 및 모델 아키텍처의 문제를 해결하는 실시간 객체 감지의 새로운 접근 방식을 도입합니다. 비최대 억제(NMS)를 제거하고 다양한 모델 구성 요소를 최적화함으로써 YOLOv10은 출시 당시 상당히 줄어든 계산 오버헤드로 뛰어난 성능을 달성했습니다. NMS가 필요 없는 엔드투엔드 설계는 YOLO26에서 더욱 발전된 접근 방식의 기반을 마련했습니다.

Watch: How to Train YOLOv10 on SKU-110k Dataset using Ultralytics | Retail Dataset
개요#
실시간 객체 감지는 낮은 지연 시간으로 이미지 내 객체의 카테고리와 위치를 정확하게 예측하는 것을 목표로 합니다. YOLO 시리즈는 성능과 효율성의 균형 덕분에 이 연구 분야를 선도해 왔습니다. 그러나 NMS에 대한 의존성과 아키텍처의 비효율성으로 인해 최적의 성능을 달성하는 데 어려움이 있었습니다. YOLOv10은 NMS가 필요 없는 학습을 위한 일관된 이중 할당과 효율성 및 정확성을 함께 고려한 종합적인 모델 설계 전략을 도입하여 이러한 문제를 해결합니다.
아키텍처#
YOLOv10의 아키텍처는 이전 YOLO 모델의 강점을 바탕으로 하면서 몇 가지 핵심 혁신을 도입합니다. 모델 아키텍처는 다음 구성 요소로 이루어집니다.
- Backbone: feature extraction을 담당하는 YOLOv10의 backbone은 CSPNet(교차 단계 부분 네트워크)의 향상된 버전을 사용하여 그래디언트 흐름을 개선하고 계산 중복을 줄입니다.
- Neck: neck은 서로 다른 스케일의 feature를 집계하여 head로 전달하도록 설계되었습니다. 효과적인 멀티스케일 feature 융합을 위해 PAN(경로 집계 네트워크) 레이어를 포함합니다.
- One-to-Many Head: 학습 중 객체당 여러 예측을 생성하여 풍부한 지도 신호를 제공하고 학습 정확도를 향상합니다.
- One-to-One Head: 추론 중 객체당 가장 우수한 예측 하나만 생성하여 NMS의 필요성을 없애고, 이에 따라 지연 시간을 줄이며 효율성을 향상합니다.
주요 기능#
- NMS-Free Training: 일관된 이중 할당을 활용하여 NMS의 필요성을 없애고 inference latency를 줄입니다.
- 전체론적 모델 디자인: 경량화된 분류 헤드, 공간-채널 분리 다운샘플링, 순위 유도 블록 디자인을 포함하여 효율성과 정확성 양쪽 관점에서 다양한 구성 요소를 종합적으로 최적화합니다.
- Enhanced Model Capabilities: 대형 커널 convolutions과 부분 self-attention 모듈을 통합하여 상당한 계산 비용 없이 성능을 향상합니다.
모델 변형#
YOLOv10은 다양한 애플리케이션 요구 사항에 맞춰 여러 모델 스케일로 제공됩니다.
- YOLOv10n: 리소스가 극도로 제한된 환경을 위한 Nano 버전입니다.
- YOLOv10s: 속도와 정확성의 균형을 맞춘 Small 버전입니다.
- YOLOv10m: 범용 용도를 위한 Medium 버전입니다.
- YOLOv10b: 더 높은 정확성을 위해 width를 늘린 균형형 버전입니다.
- 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) 전략을 결합한 이중 라벨 할당을 채택하여 풍부한 감독과 효율적인 엔드투엔드 배포를 보장합니다. Ultralytics 예측 및 검증은 기본적으로 NMS가 포함된 일대다 헤드를 사용하며, NMS가 없는 헤드를 선택하려면 nms=False을 설정하십시오. 일관된 매칭 메트릭은 두 전략 간의 감독을 일치시켜 추론 중 예측 품질을 향상시킵니다.
종합적인 효율성-정확성 중심 모델 설계#
효율성 향상#
- Lightweight Classification Head: depth-wise separable convolution을 사용하여 classification head의 계산 오버헤드를 줄입니다.
- 공간-채널 분리 다운샘플링: 정보 손실과 연산 비용을 최소화하기 위해 공간 축소와 채널 변조를 분리합니다.
- Rank-Guided Block Design: 고유한 stage 중복성에 따라 block 설계를 조정하여 파라미터를 최적으로 활용합니다.
정확성 향상#
- Large-Kernel Convolution: receptive field를 확장하여 feature extraction 기능을 향상합니다.
- Partial Self-Attention (PSA): 최소한의 오버헤드로 전역 표현 학습을 향상하기 위해 self-attention 모듈을 통합합니다.
실험 및 결과#
YOLOv10은 COCO와 같은 표준 벤치마크에서 광범위하게 테스트되었으며, 우수한 성능과 효율성을 입증했습니다. 이 모델은 다양한 변형에서 최신 수준의 결과를 달성하며, 이전 버전 및 다른 최신 detector와 비교해 지연 시간과 정확성이 크게 향상되었음을 보여줍니다.
비교#

다른 최신 detector와 비교하면 다음과 같습니다.
- YOLOv10s / x는 유사한 정확성으로 RT-DETR-R18 / R101보다 1.8배 / 1.3배 빠릅니다.
- YOLOv10b는 동일한 정확성에서 YOLOv9-C보다 파라미터 수가 25% 적고 지연 시간이 46% 낮습니다.
- YOLOv10l / x는 1.8배 / 2.3배 적은 파라미터로 YOLOv8l / x보다 0.3 AP / 0.5 AP 우수합니다.
아래 수치는 YOLOv10 논문에 보고된 값으로, 해당 논문의 자체 프로토콜에 따라 측정되었으므로 Ultralytics 모델 페이지의 값과 직접 비교할 수 없습니다.
| 모델 | Params (M) | FLOPs (G) | mAPval 50-95 | 지연 시간 (ms) | Latency-forward (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 |
Params 및 FLOPs 값은 model.fuse() 이후의 fused model을 기준으로 하며, 이 과정에서 Conv 및 BatchNorm 레이어를 병합하고 auxiliary one-to-many detection head를 제거합니다. 사전 학습된 checkpoint는 전체 학습 아키텍처를 유지하므로 더 높은 수치를 보일 수 있습니다.
사용 예시#
YOLOv10으로 새로운 이미지를 예측합니다. Ultralytics Platform을 통해 cloud 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에 최적화된 다양한 모델을 제공합니다. 이러한 모델은 서로 다른 계산 요구 사항과 정확성 요구 사항을 충족하므로 광범위한 애플리케이션에 유연하게 활용할 수 있습니다.
| 모델 | 파일 이름 | 작업 | 학습 | 검증 | 추론 | 내보내기 |
|---|---|---|---|---|---|---|
| YOLOv10 | yolov10n.pt yolov10s.pt yolov10m.pt yolov10b.pt yolov10l.pt yolov10x.pt | Object Detection | ✅ | ✅ | ✅ | ✅ |
YOLOv10 내보내기#
YOLOv10에 도입된 새로운 연산으로 인해 현재 Ultralytics가 제공하는 모든 export format이 지원되는 것은 아닙니다. 다음 표에는 Ultralytics를 사용하여 YOLOv10에서 성공적으로 변환된 format이 정리되어 있습니다. YOLOv10에 대한 추가 format의 export 지원을 추가할 수 있다면 provide a contribution change를 위한 pull request를 자유롭게 생성해 주십시오.
| Export Format | Export Support | Exported Model Inference | 참고 |
|---|---|---|---|
| TorchScript | ✅ | ✅ | 표준 PyTorch 모델 format입니다. |
| ONNX | ✅ | ✅ | 배포를 폭넓게 지원합니다. |
| OpenVINO | ✅ | ✅ | Intel 하드웨어에 최적화되었습니다. |
| TensorRT | ✅ | ✅ | NVIDIA GPU에 최적화되었습니다. |
| CoreML | ✅ | ✅ | Apple 디바이스로 제한됩니다. |
| TF SavedModel | ✅ | ✅ | TensorFlow의 표준 모델 format입니다. |
| TF GraphDef | ✅ | ✅ | 레거시 TensorFlow format입니다. |
| LiteRT | ✅ | ✅ | 모바일, 임베디드 및 브라우저(LiteRT.js)에 최적화되었습니다. |
| TF Edge TPU | ✅ | ✅ | Google의 Edge TPU 디바이스 전용입니다. |
| PaddlePaddle | ❌ | ❌ | 중국에서 널리 사용되지만 글로벌 지원은 제한적입니다. |
| NCNN | ✅ | ❌ | torch.topk 연산자는 NCNN 런타임에서 지원되지 않습니다. |
결론#
YOLOv10은 이전 YOLO 버전의 단점을 해결하고 혁신적인 설계 전략을 도입하여 출시 당시 실시간 객체 감지의 새로운 기준을 세웠습니다. NMS가 필요 없는 접근 방식으로 YOLO 제품군에서 엔드투엔드 객체 감지를 선도했습니다. 성능이 향상되고 NMS가 필요 없는 추론을 지원하는 최신 Ultralytics 모델은 YOLO26을 참조하십시오.
인용 및 감사의 글#
광범위한 연구와 Ultralytics 프레임워크에 대한 중요한 기여를 해주신 Tsinghua University의 YOLOv10 저자분들께 감사드립니다:
@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 연구 논문과 GitHub 저장소를 참조하십시오.
FAQ#
Tsinghua University의 연구자들이 개발한 YOLOv10은 실시간 객체 감지를 위한 몇 가지 핵심 혁신을 도입합니다. 학습 중 일관된 이중 할당을 사용하고 모델 구성 요소를 최적화하여 계산 오버헤드를 줄이면서 뛰어난 성능을 구현함으로써 최대 억제(NMS)가 필요하지 않습니다. 아키텍처와 주요 기능에 대한 자세한 내용은 YOLOv10 개요 섹션을 참조하십시오.
간편한 추론을 위해 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()더 많은 사용 예제는 사용 예제 섹션을 참조하십시오.
YOLOv10은 다양한 사용 사례에 맞게 여러 모델 변형을 제공합니다:
- YOLOv10n: 리소스가 극도로 제한된 환경에 적합합니다
- YOLOv10s: 속도와 정확도의 균형을 제공합니다
- YOLOv10m: 범용 용도에 적합합니다
- YOLOv10b: 네트워크 폭을 늘려 더 높은 정확도를 제공합니다
- YOLOv10l: 계산 리소스를 사용하는 대신 높은 정확도를 제공합니다
- YOLOv10x: 최고의 정확도와 성능을 제공합니다
각 변형은 서로 다른 계산 요구 사항과 정확도 요구 사항에 맞게 설계되어 다양한 애플리케이션에 유연하게 사용할 수 있습니다. 자세한 내용은 모델 변형 섹션을 참조하십시오.
YOLOv10은 일관된 듀얼 할당(consistent dual assignments)으로 학습하여 일대일(one-to-one) 헤드가 객체당 하나의 최적의 예측을 생성하도록 하므로, 추론 시 비최대 suppression(NMS)이 필요하지 않습니다. Ultralytics 예측 및 검증은 기본적으로 NMS가 포함된 일대다(one-to-many) 헤드를 사용합니다. NMS가 없는 헤드를 선택하고 NMS 단계를 제외하려면
nms=False을 설정하세요. 자세한 설명은 Consistent Dual Assignments for NMS-Free Training 섹션을 참조하세요.YOLOv10은 TorchScript, ONNX, OpenVINO 및 TensorRT를 포함한 여러 내보내기 형식을 지원합니다. 그러나 새로운 연산으로 인해 Ultralytics에서 제공하는 모든 내보내기 형식이 현재 YOLOv10에서 지원되는 것은 아닙니다. 지원되는 형식과 내보내기 지침은 YOLOv10 내보내기 섹션을 참조하십시오.
YOLOv10은 정확도와 효율성 모두에서 이전 YOLO 버전과 다른 최신 기술 수준의 모델을 능가합니다. 예를 들어 YOLOv10s는 COCO 데이터셋에서 비슷한 AP를 유지하면서 RT-DETR-R18보다 1.8배 빠릅니다. YOLOv10b는 동일한 성능으로 YOLOv9-C보다 지연 시간이 46% 낮고 파라미터 수가 25% 적습니다. 자세한 벤치마크는 비교 섹션에서 확인할 수 있습니다.