콘텐츠로 건너뛰기

YOLOv10: 실시간 엔드투엔드 객체 감지

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

NMS 없는 교육을 위한 YOLOv10 일관된 이중 할당



Watch: Ultralytics | 리테일 데이터셋을 사용하여 SKU-110k 데이터셋에서 YOLOv10을 훈련하는 방법

개요

실시간 물체 감지는 짧은 지연 시간으로 이미지에서 물체의 범주와 위치를 정확하게 예측하는 것을 목표로 합니다. YOLO 시리즈는 성능과 효율성 사이의 균형으로 인해 이 연구의 선두에 서 있습니다. 그러나 NMS에 대한 의존도와 아키텍처의 비효율성이 최적의 성능을 저해해 왔습니다. YOLOv10은 NMS 없는 훈련을 위한 일관된 이중 할당과 전체적인 효율성-정확도 중심의 모델 설계 전략을 도입하여 이러한 문제를 해결합니다.

아키텍처

YOLOv10의 아키텍처는 이전 YOLO 모델의 강점을 기반으로 몇 가지 주요 혁신을 도입했습니다. 모델 아키텍처는 다음과 같은 구성 요소로 이루어져 있습니다:

  1. 백본: 특징 추출을 담당하는 YOLOv10의 백본은 향상된 버전의 CSPNet(교차 단계 부분 네트워크)을 사용하여 경사 흐름을 개선하고 계산 중복성을 줄입니다.
  2. : 넥은 다양한 스케일의 특징을 취합하여 헤드에 전달하도록 설계되었습니다. 여기에는 효과적인 멀티스케일 피처 융합을 위한 PAN(경로 집계 네트워크) 레이어가 포함되어 있습니다.
  3. 일대다 헤드: 훈련 중에 객체당 여러 예측을 생성하여 풍부한 감독 신호를 제공하고 학습 정확도를 향상시킵니다.
  4. 일대일 헤드: 추론 중에 개체당 하나의 최적 예측을 생성하여 NMS가 필요하지 않으므로 지연 시간을 줄이고 효율성을 개선합니다.

주요 기능

  1. NMS 없는 교육: 일관된 이중 할당을 활용하여 NMS의 필요성을 없애고 추론 지연 시간을 줄입니다.
  2. 전체론적 모델 설계: 경량 분류 헤드, 공간 채널 분리형 다운 샘플링, 순위 가이드 블록 설계 등 효율성과 정확도 측면에서 다양한 구성 요소를 종합적으로 최적화합니다.
  3. 향상된 모델 기능: 대규모 커널 컨볼루션과 부분적인 셀프 어텐션 모듈을 통합하여 큰 계산 비용 없이 성능을 개선합니다.

모델 변형

YOLOv10은 다양한 애플리케이션 요구 사항을 충족할 수 있도록 다양한 모델 스케일로 제공됩니다:

  • YOLOv10n: 리소스가 극도로 제한된 환경을 위한 나노 버전입니다.
  • YOLOv10s: 속도와 정확성의 균형을 맞춘 소형 버전.
  • YOLOv10m: 일반 용도의 중간 버전입니다.
  • YOLOv10b: 정확도를 높이기 위해 폭을 늘린 균형 잡힌 버전입니다.
  • YOLOv10l: 계산 리소스가 증가하지만 정확도가 더 높은 대형 버전입니다.
  • YOLOv10x: 정확도와 성능을 극대화하는 초대형 버전입니다.

성능

YOLOv10은 정확도와 효율성 측면에서 이전 YOLO 버전 및 기타 최신 모델보다 성능이 뛰어납니다. 예를 들어, YOLOv10s는 COCO 데이터 세트에서 비슷한 AP를 사용하는 RT-DETR 1.8배 빠르며, YOLOv10b는 동일한 성능의 YOLOv9-C보다 지연 시간이 46% 짧고 파라미터 수가 25% 더 적습니다.

성능

T4에서 TensorRT FP16으로 측정한 지연 시간 GPU.

모델 입력 크기 APval 플롭(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은 풍부한 감독과 효율적인 엔드투엔드 배포를 보장하기 위해 훈련 중에 일대다 및 일대일 전략을 결합한 이중 레이블 할당을 사용합니다. 일관된 매칭 메트릭은 두 전략 간의 감독을 조정하여 추론 중 예측의 품질을 향상시킵니다.

전체적인 효율성-정확성 중심의 모델 설계

효율성 향상

  1. 경량 분류 헤드: 깊이별로 분리 가능한 컨볼루션을 사용하여 분류 헤드의 계산 오버헤드를 줄입니다.
  2. 공간-채널 디커플링 다운 샘플링: 공간 감소와 채널 변조를 분리하여 정보 손실과 계산 비용을 최소화합니다.
  3. 랭크 가이드 블록 디자인: 내재적 스테이지 리던던시를 기반으로 블록 설계를 조정하여 최적의 파라미터 활용을 보장합니다.

정확도 향상

  1. 대형 커널 컨볼루션: 수용 필드를 확대하여 특징 추출 기능을 향상시킵니다.
  2. 부분적 자기 주의(PSA): 최소한의 오버헤드로 글로벌 표현 학습을 개선하기 위해 자기 주의 모듈을 통합합니다.

실험 및 결과

YOLOv10은 COCO와 같은 표준 벤치마크에서 광범위하게 테스트되어 우수한 성능과 효율성을 입증했습니다. 이 모델은 다양한 변종에 걸쳐 최첨단 결과를 달성하여 이전 버전 및 기타 최신 탐지기에 비해 지연 시간과 정확도가 크게 개선되었습니다.

비교

YOLOv10과 SOTA 물체 감지기 비교

다른 최첨단 탐지기와 비교:

  • YOLOv10s / x는 RT-DETR/ R101보다 1.8배 / 1.3배 빠르며 정확도는 비슷합니다.
  • YOLOv10b는 동일한 정확도에서 YOLOv9-C보다 파라미터 수가 25% 더 적고 지연 시간이 46% 더 짧습니다.
  • 1.8배 / 2.3배 적은 매개 변수로 0.3 AP / 0.5 AP로 YOLOv10l / x가 YOLOv8l / x보다 성능 향상

성능

다음은 다른 최신 모델과 YOLOv10 변형을 자세히 비교한 것입니다:

모델 매개변수
(M)
플롭
(G)
mAPval
50-95
지연 시간
(ms)
지연 시간 전달
(ms)
YOLOv6-3.0-N 4.7 11.4 37.0 2.69 1.76
골드-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
골드-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 에서 제공하는 모든 내보내기 형식이 지원되는 것은 아닙니다. 다음 표에는 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 브라우저 사용을 위한 자바스크립트 환경.
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 리포지토리를 참조하세요.

자주 묻는 질문

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 모델의 내보내기 옵션은 어디에서 찾을 수 있나요?

TorchScript, ONNX, OpenVINO, TensorRT 등 여러 내보내기 형식을 지원하지만, 현재 Ultralytics 에서 제공하는 모든 내보내기 형식은 새로운 작업으로 인해 YOLOv10에서 지원되지 않습니다. 지원되는 형식과 내보내기 지침에 대한 자세한 내용은 YOLOv10 내 보내기 섹션을 참조하세요.

YOLOv10 모델의 성능 벤치마크는 어떻게 되나요?

YOLOv10은 정확도와 효율성 모두에서 이전 YOLO 버전 및 기타 최신 모델보다 성능이 뛰어납니다. 예를 들어, YOLOv10s는 COCO 데이터 세트에서 비슷한 AP를 사용하는 RT-DETR 1.8배 더 빠릅니다. YOLOv10b는 동일한 성능의 YOLOv9-C보다 지연 시간이 46% 짧고 매개변수가 25% 더 적습니다. 자세한 벤치마크는 비교 섹션에서 확인할 수 있습니다.

10개월 전 생성됨 ✏️ 업데이트됨 8 일 전

댓글