YOLOv10: 실시간 종단 간 객체 감지#
2024년 5월에 출시된 YOLOv10은 Ultralytics Python 패키지를 기반으로 칭화대학교 연구진이 개발했으며, 이전 YOLO 버전에서 발견된 후처리 및 모델 아키텍처의 결함을 모두 해결하는 새로운 실시간 객체 탐지 방식을 도입합니다. 비최대 억제(NMS)를 제거하고 다양한 모델 구성 요소를 최적화함으로써, YOLOv10은 출시 당시 계산 오버헤드를 크게 줄이면서도 뛰어난 성능을 달성했습니다. NMS를 사용하지 않는 엔드투엔드 설계는 YOLO26에서 더욱 발전한 접근 방식을 개척했습니다.

시청: Ultralytics를 사용하여 SKU-110k 데이터셋으로 YOLOv10을 학습하는 방법 | 소매 데이터셋
개요#
실시간 객체 감지는 낮은 지연 시간으로 이미지 내 객체의 범주와 위치를 정확하게 예측하는 것을 목표로 합니다. YOLO 시리즈는 성능과 효율성의 균형 덕분에 이 연구 분야를 선도해 왔습니다. 그러나 NMS에 대한 의존성과 비효율적인 아키텍처가 최적의 성능을 저해해 왔습니다. YOLOv10은 NMS-free 학습을 위한 일관된 이중 할당과 효율성 및 정확도를 종합적으로 고려한 모델 설계 전략을 도입해 이러한 문제를 해결합니다.
아키텍처#
YOLOv10 아키텍처는 이전 YOLO 모델의 강점을 기반으로 몇 가지 핵심 혁신을 도입합니다. 모델 아키텍처는 다음 구성 요소로 이루어집니다.
- 백본: YOLOv10의 백본은 feature extraction을 담당하며, CSPNet (Cross Stage Partial Network)의 개선된 버전을 사용해 gradient flow를 향상시키고 계산 중복을 줄입니다.
- 넥: 넥은 서로 다른 스케일의 feature를 통합해 헤드로 전달하도록 설계되었습니다. 효과적인 멀티스케일 feature fusion을 위해 PAN (Path Aggregation Network) 레이어를 포함합니다.
- One-to-Many 헤드: 학습 중 객체당 여러 예측을 생성해 풍부한 지도 신호를 제공하고 학습 정확도를 높입니다.
- 일대일 헤드: 추론 중 각 객체에 대해 최적의 예측 하나만 생성하여 NMS가 필요하지 않도록 함으로써 지연 시간을 줄이고 효율성을 높입니다.
주요 기능#
- NMS 없는 학습: 일관된 이중 할당을 활용하여 NMS가 필요하지 않도록 하고 추론 지연 시간을 줄입니다.
- 종합적인 모델 설계: 경량 분류 헤드, 공간-채널 분리 다운샘플링, 순위 기반 블록 설계를 포함하여 효율성과 정확도 관점에서 다양한 구성 요소를 종합적으로 최적화합니다.
- 향상된 모델 기능: 대규모 커널 합성곱과 부분 셀프 어텐션 모듈을 적용하여 상당한 계산 비용 증가 없이 성능을 개선합니다.
모델 변형#
YOLOv10은 다양한 애플리케이션 요구 사항을 충족하기 위해 여러 모델 규모로 제공됩니다:
- YOLOv10n: 리소스가 매우 제한된 환경을 위한 나노 버전입니다.
- YOLOv10s: 속도와 정확도의 균형을 맞춘 소형 버전입니다.
- YOLOv10m: 범용으로 사용할 수 있는 중형 버전입니다.
- YOLOv10b: 정확도를 높이기 위해 너비를 늘린 균형형 버전입니다.
- YOLOv10l: 계산 리소스가 더 많이 필요한 대신 정확도가 높은 대형 버전입니다.
- YOLOv10x: 정확도와 성능을 극대화한 초대형 버전입니다.
성능#
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은 학습 중 일대다 및 일대일 전략을 결합하는 이중 레이블 할당을 적용하여 풍부한 감독 학습과 효율적인 엔드투엔드 배포를 보장합니다. Ultralytics의 예측 및 검증은 기본적으로 NMS를 사용하는 일대다 헤드를 사용합니다. NMS 없는 헤드를 선택하려면 nms=False을 설정합니다. 일관된 매칭 지표는 두 전략 간의 감독 학습을 정렬하여 추론 중 예측 품질을 높입니다.
종합적인 효율성-정확도 중심 모델 설계#
효율성 향상#
- 경량 분류 헤드: 깊이별 분리 합성곱을 사용하여 분류 헤드의 계산 오버헤드를 줄입니다.
- 공간-채널 분리 다운샘플링: 정보 손실과 계산 비용을 최소화하기 위해 공간 축소와 채널 변조를 분리합니다.
- 순위 기반 블록 설계: 각 단계의 내재적 중복성에 따라 블록 설계를 조정하여 파라미터를 최적으로 활용합니다.
정확도 향상#
- 대규모 커널 합성곱: 수용 영역을 확장하여 특징 추출 능력을 높입니다.
- 부분 셀프 어텐션 (PSA): 오버헤드를 최소화하면서 전역 표현 학습을 개선하는 셀프 어텐션 모듈을 적용합니다.
실험 및 결과#
YOLOv10은 COCO와 같은 표준 벤치마크에서 광범위하게 테스트되어 뛰어난 성능과 효율성을 입증했습니다. 모델은 다양한 변형 전반에서 최첨단 결과를 달성했으며, 이전 버전 및 다른 최신 탐지기와 비교해 지연 시간과 정확도가 크게 향상되었습니다.
비교#

다른 최첨단 탐지기와 비교하면 다음과 같습니다:
- YOLOv10s / x는 비슷한 정확도에서 RT-DETR-R18 / R101보다 각각 1.8배 / 1.3배 빠릅니다.
- YOLOv10b는 동일한 정확도에서 YOLOv9-C보다 파라미터 수가 25% 적고 지연 시간이 46% 짧습니다.
- YOLOv10l / x는 YOLOv8l / x보다 파라미터 수가 각각 1.8배 / 2.3배 적으면서 AP가 0.3 / 0.5 높습니다.
아래 수치는 YOLOv10 논문에 보고된 값으로, 자체 프로토콜에 따라 측정되었으므로 Ultralytics 모델 페이지의 값과 직접 비교할 수 없습니다:
| 모델 | 파라미터 (M) | FLOPs (G) | mAP검증 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 | 38.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.3 | 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.1 | 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.2 | 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 |
model.fuse() 이후 Conv 및 BatchNorm 레이어를 병합하고 보조 일대다 탐지 헤드를 제거한 융합 모델의 파라미터 및 FLOPs 값입니다. 사전 학습된 체크포인트는 전체 학습 아키텍처를 유지하므로 더 높은 수치를 보일 수 있습니다.
사용 예시#
Ultralytics Platform을 통해 클라우드 GPU에서 모델을 학습할 수도 있습니다. YOLOv10으로 새 이미지에 대해 예측하려면 다음을 수행합니다:
from ultralytics import YOLO
# 사전 학습된 YOLOv10n 모델 로드
model = YOLO("yolov10n.pt")
# 이미지에서 객체 탐지 수행
results = model("image.jpg")
# 결과를 표시합니다
results[0].show()사용자 지정 데이터셋에서 YOLOv10을 학습하려면 다음을 수행합니다:
from ultralytics import YOLO
# YOLOv10n 모델을 처음부터 로드
model = YOLO("yolov10n.yaml")
# 모델 학습
model.train(data="coco8.yaml", epochs=100, imgsz=640)지원 작업 및 모드#
YOLOv10 모델 시리즈는 고성능 객체 탐지에 최적화된 다양한 모델을 제공합니다. 이 모델들은 서로 다른 계산 요구 사항과 정확도 요건을 충족하므로 다양한 애플리케이션에 유연하게 활용할 수 있습니다.
| 모델 | 파일 이름 | 작업 | 학습 | 검증 | 추론 | 내보내기 |
|---|---|---|---|---|---|---|
| YOLOv10 | yolov10n.pt yolov10s.pt yolov10m.pt yolov10b.pt yolov10l.pt yolov10x.pt | 객체 탐지 | ✅ | ✅ | ✅ | ✅ |
YOLOv10 내보내기#
YOLOv10에 새 작업이 도입되어 현재 Ultralytics에서 제공하는 모든 내보내기 형식을 지원하지는 않습니다. 아래 표에는 Ultralytics를 사용해 YOLOv10용으로 변환하는 데 성공한 형식이 나와 있습니다. YOLOv10의 추가 형식 내보내기 지원을 위해 변경 사항을 기여할 수 있다면 자유롭게 풀 리퀘스트를 제출해 주세요.
| 내보내기 형식 | 내보내기 지원 | 내보낸 모델 추론 | 참고 |
|---|---|---|---|
| TorchScript | ✅ | ✅ | 표준 PyTorch 모델 형식입니다. |
| ONNX | ✅ | ✅ | 배포에 널리 지원됩니다. |
| OpenVINO | ✅ | ✅ | Intel 하드웨어에 최적화되어 있습니다. |
| TensorRT | ✅ | ✅ | NVIDIA GPU에 최적화되어 있습니다. |
| CoreML | ✅ | ✅ | Apple 기기로 제한됩니다. |
| TF SavedModel | ✅ | ✅ | TensorFlow의 표준 모델 형식입니다. |
| TF GraphDef | ✅ | ✅ | 레거시 TensorFlow 형식입니다. |
| TF Edge TPU | ✅ | ✅ | Google의 Edge TPU 기기 전용입니다. |
| LiteRT | ✅ | ✅ | 모바일, 임베디드 및 브라우저(LiteRT.js)에 최적화되어 있습니다. |
| PaddlePaddle | ❌ | ❌ | 중국에서 널리 사용되지만, 전 세계적인 지원은 제한적입니다. |
| NCNN | ✅ | ❌ | NCNN 런타임은 torch.topk 연산자를 지원하지 않습니다. |
결론#
YOLOv10은 이전 YOLO 버전의 단점을 해결하고 혁신적인 설계 전략을 도입하여 출시 당시 실시간 객체 탐지의 새로운 기준을 세웠습니다. NMS 없는 접근 방식은 YOLO 제품군에서 엔드투엔드 객체 탐지를 선도했습니다. 성능이 개선되고 NMS 없는 추론을 지원하는 최신 Ultralytics 모델은 YOLO26을 참조하세요.
인용 및 감사의 글#
광범위한 연구와 Ultralytics 프레임워크에 대한 중요한 기여를 해 주신 칭화대학교의 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}
}자세한 구현 내용, 아키텍처 혁신 및 실험 결과는 칭화대학교 팀의 YOLOv10 연구 논문과 GitHub 저장소를 참조하세요.
자주 묻는 질문#
칭화대학교 연구진이 개발한 YOLOv10은 실시간 객체 탐지에 몇 가지 핵심 혁신을 도입했습니다. 학습 중 일관된 이중 할당을 사용하고 모델 구성 요소를 최적화하여 계산 오버헤드를 줄이면서 성능을 높이며, 이를 통해 비최대 억제(NMS)가 필요하지 않도록 합니다. 아키텍처와 주요 기능에 대한 자세한 내용은 YOLOv10 개요 섹션을 참조하세요.
간편하게 추론하려면 Ultralytics YOLO Python 라이브러리 또는 명령줄 인터페이스(CLI)를 사용할 수 있습니다. 다음은 YOLOv10을 사용해 새 이미지를 예측하는 예시입니다:
예제from ultralytics import YOLO # 사전 학습된 YOLOv10n 모델을 로드합니다 model = YOLO("yolov10n.pt") results = model("image.jpg") results[0].show()더 많은 사용 예시는 사용 예시 섹션을 참조하세요.
YOLOv10은 다양한 사용 사례에 적합하도록 여러 모델 변형을 제공합니다:
- YOLOv10n: 리소스가 매우 제한된 환경에 적합합니다
- YOLOv10s: 속도와 정확도의 균형을 맞춥니다
- YOLOv10m: 범용으로 사용할 수 있습니다
- YOLOv10b: 너비를 늘려 정확도를 높였습니다
- YOLOv10l: 계산 리소스가 더 많이 필요하지만 정확도가 높습니다
- YOLOv10x: 정확도와 성능을 극대화합니다
각 변형은 서로 다른 계산 요구 사항과 정확도 요구 사항에 맞게 설계되어 다양한 애플리케이션에 유연하게 적용할 수 있습니다. 자세한 내용은 모델 변형 섹션을 참조하세요.
YOLOv10은 일관된 이중 할당 방식으로 학습하여 일대일 헤드가 객체마다 가장 적합한 예측 하나를 출력하므로 추론 시 비최대 억제(NMS)가 필요하지 않습니다. Ultralytics의 예측과 검증은 기본적으로 NMS를 적용하는 일대다 헤드를 사용합니다. NMS 프리 헤드를 선택하고 NMS 단계를 생략하려면
nms=False을 설정하세요. 자세한 설명은 NMS 프리 학습을 위한 일관된 이중 할당 섹션을 참조하세요.YOLOv10은 TorchScript, ONNX, OpenVINO, TensorRT 등 여러 내보내기 형식을 지원합니다. 하지만 새로운 연산이 사용되므로 현재 Ultralytics에서 제공하는 모든 내보내기 형식이 YOLOv10을 지원하는 것은 아닙니다. 지원 형식과 내보내기 방법에 대한 자세한 내용은 YOLOv10 내보내기 섹션을 참조하세요.
YOLOv10은 정확도와 효율성 면에서 이전 YOLO 버전과 다른 최첨단 모델보다 우수한 성능을 보입니다. 예를 들어 YOLOv10s는 COCO 데이터셋에서 비슷한 AP를 달성하면서 RT-DETR-R18보다 1.8배 빠릅니다. YOLOv10b는 동일한 성능을 내면서 YOLOv9-C보다 지연 시간이 46% 짧고 파라미터 수가 25% 적습니다. 자세한 벤치마크는 비교 섹션에서 확인할 수 있습니다.