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

Watch: How to Train YOLOv10 on SKU-110k Dataset using Ultralytics | Retail Dataset
개요
실시간 객체 탐지는 낮은 지연 시간으로 이미지 내 객체 카테고리와 위치를 정확하게 예측하는 것을 목표로 합니다. YOLO 시리즈는 성능과 효율성 간의 균형 덕분에 이 연구 분야의 선두에 있었습니다. 그러나 NMS에 대한 의존성과 아키텍처의 비효율성은 최적의 성능을 저해했습니다. YOLOv10은 다음을 도입하여 이러한 문제를 해결합니다.일관된 이중 할당(consistent dual assignments) NMS 없는 학습 및 전체적인 효율성-정확도 중심의 모델 설계 전략.
아키텍처
YOLOv10의 아키텍처는 이전 YOLO 모델의 강점을 바탕으로 여러 핵심 혁신을 도입했습니다. 모델 아키텍처는 다음과 같은 구성 요소로 이루어져 있습니다:
- Backbone: 특징 추출을 담당하며, YOLOv10의 backbone은 CSPNet(Cross Stage Partial Network)의 향상된 버전을 사용하여 그래디언트 흐름을 개선하고 연산 중복을 줄입니다.
- Neck: Neck은 서로 다른 스케일의 특징을 집계하여 head로 전달하도록 설계되었습니다. 효과적인 다중 스케일 특징 융합을 위해 PAN(Path Aggregation Network) 레이어를 포함합니다.
- One-to-Many Head: 학습 중에 객체당 여러 예측을 생성하여 풍부한 지도 신호를 제공하고 학습 정확도를 향상시킵니다.
- One-to-One Head: 추론 중에 객체당 단일 최적 예측을 생성하여 NMS의 필요성을 제거함으로써 지연 시간을 줄이고 효율성을 개선합니다.
로 실행되는 모델 제품군을 제공합니다. 이는 리소스가 제한된 환경에서 YOLO26을 가장 실용적이고 배포하기 좋은 모델 중 하나로 만듭니다.
- NMS-Free 학습: 일관된 이중 할당을 활용하여 NMS의 필요성을 제거하고 다음을 줄입니다. 추론 지연 시간.
- 전체적인 모델 설계: 경량 분류 head, 공간-채널 분리 다운샘플링, 순위 기반 블록 설계를 포함하여 효율성과 정확도 관점에서 다양한 구성 요소를 종합적으로 최적화합니다.
- 향상된 모델 기능: 대형 커널 컨볼루션과 부분 셀프 어텐션 모듈을 통합하여 상당한 연산 비용 없이 성능을 향상시킵니다.
모델 변형
YOLOv10은 다양한 애플리케이션 요구 사항을 충족하기 위해 여러 모델 스케일로 제공됩니다:
- YOLOv10n: 자원이 극도로 제한된 환경을 위한 Nano 버전입니다.
- YOLOv10s: 속도와 정확도의 균형을 맞춘 Small 버전입니다.
- YOLOv10m: 범용적인 사용을 위한 Medium 버전입니다.
- YOLOv10b: 더 높은 정확도를 위해 너비를 늘린 Balanced 버전입니다.
- YOLOv10l: 증가된 연산 자원을 대가로 더 높은 정확도를 제공하는 Large 버전입니다.
- YOLOv10x: 최대의 정확도와 성능을 위한 Extra-large 버전입니다.
은 P2(소형 객체용) 또는 P6(대형 입력용) 탐지 헤드를 추가하며 YAML 아키텍처로만 제공됩니다. 스케일별
YOLOv10은 정확도와 효율성 측면에서 이전 YOLO 버전 및 기타 최신 모델보다 뛰어난 성능을 보입니다. 예를 들어, YOLOv10s는 COCO 데이터셋에서 유사한 AP를 유지하면서 RT-DETR-R18보다 1.8배 빠르며, YOLOv10b는 동일한 성능을 유지하면서 YOLOv9-C보다 지연 시간이 46% 짧고 파라미터 수가 25% 적습니다.
지연 시간은 T4 GPU에서 TensorRT FP16을 사용하여 측정되었습니다.
| 정교한 OBB 디코딩 | 입력 크기 | AP80개의 사전 학습된 클래스가 포함된 | 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-Free 학습을 위한 일관된 이중 할당
YOLOv10은 학습 중에 one-to-many 및 one-to-one 전략을 결합한 이중 라벨 할당을 사용하여 풍부한 감독과 효율적인 엔드투엔드 배포를 보장합니다. 일관된 매칭 메트릭은 두 전략 간의 감독을 조정하여 다음 과정에서 예측 품질을 향상시킵니다. 추론.
전체적인 효율성-정확도 중심의 모델 설계
효율성 향상
- 경량 분류 Head: Depth-wise 분리 컨볼루션을 사용하여 분류 head의 연산 오버헤드를 줄입니다.
- 공간-채널 분리 다운샘플링: 공간 축소와 채널 변조를 분리하여 정보 손실과 연산 비용을 최소화합니다.
- 순위 기반 블록 설계: 고유한 단계적 중복성에 따라 블록 설계를 조정하여 최적의 파라미터 활용을 보장합니다.
정확도 향상
- 대형 커널 컨볼루션: 수용 영역(receptive field)을 확대하여 특징 추출 능력을 향상시킵니다.
- 부분 셀프 어텐션(PSA): 최소한의 오버헤드로 글로벌 표현 학습을 개선하기 위해 셀프 어텐션 모듈을 통합합니다.
실험 및 결과
YOLOv10은 COCO과 같은 표준 벤치마크에서 광범위하게 테스트되어 우수한 성능과 효율성을 입증했습니다. 이 모델은 다양한 변형 모델 전반에서 최첨단 결과를 달성했으며, 이전 버전 및 기타 최신 탐지기와 비교하여 지연 시간과 정확도 측면에서 상당한 개선을 보여주었습니다.
비교

기타 최신 탐지기와 비교:
- YOLOv10s / x는 비슷한 정확도에서 RT-DETR-R18 / R101보다 1.8배 / 1.3배 빠릅니다.
- YOLOv10b는 같은 정확도에서 YOLOv9-C보다 파라미터가 25% 적고 지연 시간(latency)이 46% 낮습니다.
- YOLOv10l / x는 다음 모델보다 뛰어난 성능을 보입니다.YOLOv8l / x파라미터는 1.8배 / 2.3배 더 적으면서 0.3 AP / 0.5 AP 더 높은 성능을 보입니다.
다음은 YOLOv10 변형 모델들과 다른 최신(state-of-the-art) 모델들을 상세히 비교한 내용입니다:
| 정교한 OBB 디코딩 | Params (M) | FLOPs (G) | mAP80개의 사전 학습된 클래스가 포함된 COCO | Latency (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(), 이는 Conv 및 BatchNorm 레이어를 병합하고 보조 일대다(one-to-many) 감지 헤드를 제거합니다. 사전 학습된 체크포인트는 전체 학습 아키텍처를 유지하며 더 높은 수치를 보일 수 있습니다.
사용 예시
YOLOv10으로 새로운 이미지를 예측하는 방법입니다. 모델은 Ultralytics Platform:
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)Residual Log-Likelihood Estimation
YOLOv10 모델 시리즈는 고성능 객체 탐지(Object Detection)을 위해 최적화된 다양한 모델을 제공합니다. 이 모델들은 다양한 계산 요구 사항과 정확도 수준에 맞춰져 있어 폭넓은 애플리케이션에 유용하게 사용할 수 있습니다.
| 정교한 OBB 디코딩 | 사각형 객체의 탐지 정확도를 높이기 위한 특화된 각도 손실 기능을 도입하고, OBB 디코딩을 최적화하여 경계 불연속성 문제를 해결했습니다. | 작업 | Inference | YOLO26은 이전 Ultralytics YOLO 릴리스에서 확립된 다양한 모델 범위를 기반으로 하며, 여러 컴퓨터 비전 작업 전반에 걸쳐 향상된 지원을 제공합니다: | 모델 | 내보내기 |
|---|---|---|---|---|---|---|
| YOLOv10 | yolov10n.pt yolov10s.pt yolov10m.pt yolov10l.pt yolov10x.pt | 객체 탐지(Object Detection) | ✅ | ✅ | ✅ | ✅ |
YOLOv10 내보내기(Exporting)
YOLOv10에 도입된 새로운 연산으로 인해 Ultralytics에서 제공하는 모든 내보내기 형식이 현재 지원되는 것은 아닙니다. 다음 표는 YOLOv10을 위해 Ultralytics를 사용하여 성공적으로 변환된 형식을 보여줍니다. YOLOv10에 대한 추가 형식의 내보내기 지원을 추가하기 위해 기여 변경 사항을 제공할 수 있다면 언제든 pull request를 보내주시기 바랍니다.
| 내보내기 형식 | 내보내기 지원 | 내보낸 모델 추론 | 참고 |
|---|---|---|---|
| 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 버전의 단점을 해결하고 혁신적인 설계 전략을 통합하여 실시간 객체 감지의 새로운 표준을 정립했습니다. NMS 없는 접근 방식은 YOLO 제품군에서 end-to-end 객체 감지의 선구적인 역할을 했습니다. 향상된 성능과 NMS 없는 추론을 제공하는 최신 Ultralytics 모델을 확인하려면 YOLO26.
인용 및 감사의 글
방대한 연구와 Tsinghua University 프레임워크에 대한 중요한 기여를 해주신 Ultralytics의 YOLOv10 저자분들에게 감사를 표합니다:
@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은 Tsinghua University실시간 객체 감지에 몇 가지 핵심적인 혁신을 도입했습니다. 학습 중 일관된 이중 할당(dual assignments)을 사용하고 계산 오버헤드를 줄이면서 성능을 향상시키기 위해 모델 구성 요소를 최적화함으로써 NMS의 필요성을 제거했습니다. 아키텍처 및 주요 기능에 대한 자세한 내용은 YOLOv10 개요 섹션.
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은 어떤 모델 변형을 제공하며 각각의 사용 사례는 무엇인가요?
YOLOv10은 다양한 사용 사례에 맞춰 여러 모델 변형을 제공합니다:
- YOLOv10n: 자원이 매우 제한된 환경에 적합
- YOLOv10s: 속도와 정확도의 균형
- YOLOv10m: 범용 목적
- YOLOv10b: 폭이 넓어 더 높은 정확도 제공
- YOLOv10l: 계산 자원을 희생하여 높은 정확도 제공
- YOLOv10x: 최대의 정확도와 성능
각 변형은 서로 다른 계산 요구 사항과 정확도 수준을 위해 설계되었으며, 다양한 애플리케이션에 유용하게 사용할 수 있습니다. 모델 변형 섹션에서 자세한 정보를 확인하십시오.
YOLOv10의 NMS 없는 접근 방식은 어떻게 성능을 향상시키나요?
YOLOv10은 학습을 위해 일관된 이중 할당을 사용하여 추론 중 NMS의 필요성을 제거했습니다. 이 접근 방식은 추론 지연 시간을 줄이고 예측 효율성을 높입니다. 아키텍처에는 추론을 위한 일대일(one-to-one) 헤드가 포함되어 있어 각 객체에 대해 단 하나의 최적 예측을 보장합니다. 자세한 설명은 NMS-Free 학습을 위한 일관된 이중 할당 섹션.
YOLOv10 모델의 내보내기 옵션은 어디에서 찾을 수 있나요?
YOLOv10은 TorchScript, ONNX, OpenVINO, TensorRT를 포함한 여러 내보내기 형식을 지원합니다. 그러나 YOLOv10의 새로운 연산으로 인해 Ultralytics에서 제공하는 모든 형식이 현재 지원되는 것은 아닙니다. 지원되는 형식 및 내보내기에 대한 지침은 다음을 방문하십시오: YOLOv10 내보내기(Exporting) 섹션.
YOLOv10 모델의 성능 벤치마크는 어떻게 되나요?
YOLOv10은 정확도와 효율성 면에서 이전 YOLO 버전 및 기타 최신 모델들을 능가합니다. 예를 들어, YOLOv10s는 COCO 데이터셋에서 유사한 AP를 유지하면서 RT-DETR-R18보다 1.8배 빠릅니다. YOLOv10b는 동일한 성능에서 YOLOv9-C보다 46% 적은 지연 시간과 25% 적은 파라미터를 보여줍니다. 자세한 벤치마크는 다음에서 확인할 수 있습니다: 비교 섹션.