YOLO Vision 2026:

YOLOE: 실시간 객체 탐지 솔루션#

소개#

YOLOE Prompting Options

YOLOE (Real-Time Seeing Anything)오픈 어휘(open-vocabulary) 탐지 및 세그멘테이션을 위해 설계된 제로샷, 프롬프트 가능 YOLO 모델의 새로운 발전 형태입니다. 고정된 카테고리에 국한되었던 이전의 YOLO 모델과 달리, YOLOE는 텍스트, 이미지 또는 내부 어휘 프롬프트를 사용하여 모든 객체 클래스를 실시간으로 탐지할 수 있습니다. YOLOv10을 기반으로 구축되고 YOLO-World에서 영감을 받은 YOLOE는 속도와 정확도에 거의 영향을 주지 않으면서 최첨단 제로샷 성능을 달성합니다.



Watch: How to use Ultralytics YOLOE-26 (New) | Open Vocabulary & Real-Time Seeing Anything 🚀

기존 YOLO 모델과 비교하여 YOLOE는 효율성과 정확도가 크게 향상되었습니다. 훈련 리소스의 3분의 1만을 사용하고 1.4배 더 빠른 추론 속도를 달성하면서 LVIS에서 YOLO-Worldv2 대비 +3.5 AP 향상되었습니다. COCO로 파인튜닝된 YOLOE-v8-large는 거의 4배 적은 훈련 시간을 사용하여 YOLOv8-L을 0.1 mAP 뛰어넘습니다. 이는 YOLOE의 뛰어난 정확도, 효율성 및 다목적성의 균형을 보여줍니다. 아래 섹션에서는 YOLOE의 아키텍처, 벤치마크 비교, 그리고 Ultralytics 프레임워크와의 통합에 대해 살펴봅니다.

아키텍처 개요#

YOLOE Architecture

YOLOE는 표준 YOLO 구조를 유지합니다. 특징 추출을 위한 컨볼루션 백본(예: CSP-Darknet), 다중 스케일 융합을 위한 (예: PAN-FPN), 그리고 객체 여부, 클래스, 박스를 독립적으로 예측하는 앵커 프리(anchor-free), 디커플드(decoupled) 탐지 헤드(YOLOv8/YOLO11과 동일)로 구성됩니다. YOLOE는 오픈 어휘 탐지를 가능하게 하는 세 가지 새로운 모듈을 도입했습니다:

  • 재매개변수화 가능 영역-텍스트 정렬(RepRTA, Re-parameterizable Region-Text Alignment): 소형 보조 네트워크를 통해 텍스트 임베딩(예: CLIP 기반)을 정제하여 텍스트 프롬프트 탐지를 지원합니다. 추론 시 이 네트워크는 메인 모델로 병합되어 오버헤드가 발생하지 않습니다. 따라서 YOLOE는 런타임 페널티 없이 임의의 텍스트 레이블이 지정된 객체(예: 보이지 않는 "traffic light")를 탐지합니다.

  • 의미론적 활성화 시각 프롬프트 인코더(SAVPE): 경량 임베딩 브랜치를 통해 시각 프롬프트 기반 탐지를 가능하게 합니다. 참조 이미지가 주어지면 SAVPE는 의미론적 특징과 활성화 특징을 인코딩하여 모델이 시각적으로 유사한 객체를 탐지하도록 조건화합니다. 이는 로고나 특정 부품 탐지에 유용한 원샷(one-shot) 탐지 기능입니다.

  • 레이지 영역-프롬프트 대조(LRPC): 프롬프트 없는 모드에서 YOLOE는 대규모 어휘(LVIS 및 Objects365의 1200개 이상의 카테고리)로 훈련된 내부 임베딩을 사용하여 오픈셋 인식을 수행합니다. 외부 프롬프트나 인코더 없이도 YOLOE는 임베딩 유사도 조회를 통해 객체를 식별하며, 추론 시 방대한 레이블 공간을 효율적으로 처리합니다.

또한, YOLOE는 세그멘테이션 마스크 예측 브랜치(YOLACT 또는 YOLOv8-Seg와 유사)를 탐지 헤드에 확장하여 실시간 인스턴스 세그멘테이션 기능을 통합하며, 오버헤드는 최소화했습니다.

결정적으로, YOLOE의 오픈 월드 모듈은 일반적인 폐쇄형(closed-set) YOLO로 사용될 때 추론 비용을 발생시키지 않습니다. 훈련 후 YOLOE 파라미터는 표준 YOLO 헤드로 재매개변수화될 수 있어, 동일한 FLOP과 속도를 유지합니다(예: YOLO11과 정확히 일치).

사용 가능한 모델, 지원 작업 및 운영 모드#

이 섹션에서는 특정 사전 훈련된 가중치, 지원하는 작업, 그리고 지원되는 모드는 ✅로, 지원되지 않는 모드는 ❌로 표시된 인증/추론(Inference), 검증(Validation), 훈련(Training), 내보내기(Export)와 같은 다양한 작동 모드와의 호환성을 갖춘 사용 가능한 모델을 자세히 설명합니다.

텍스트/시각 프롬프트 모델#

프롬프트 프리 모델#

YOLOE-26 성능
모델크기
(픽셀)
프롬프트 유형mAPminival
50-95(e2e)
mAPminival
50-95
mAPrmAPcmAPf파라미터
(M)
FLOPs
(B)
YOLOE-26n-seg640텍스트/시각적23.7 / 20.924.7 / 21.920.5 / 17.624.1 / 22.326.1 / 22.44.86.0
YOLOE-26s-seg640텍스트/시각적29.9 / 27.130.8 / 28.623.9 / 25.129.6 / 27.833.0 / 29.913.121.7
YOLOE-26m-seg640텍스트/시각적35.4 / 31.335.4 / 33.931.1 / 33.434.7 / 34.036.9 / 33.827.970.1
YOLOE-26l-seg640텍스트/시각적36.8 / 33.737.8 / 36.335.1 / 37.637.6 / 36.238.5 / 36.132.388.3
YOLOE-26x-seg640텍스트/시각적39.5 / 36.240.6 / 38.537.4 / 35.340.9 / 38.841.0 / 38.869.9196.7

사용 예제#

YOLOE 모델은 Python 애플리케이션에 쉽게 통합할 수 있습니다. Ultralytics는 개발을 간소화하기 위해 사용자 친화적인 Python APICLI 명령어를 제공합니다.

훈련 사용법#

커스텀 데이터셋에 대한 파인튜닝#

탐지 및 인스턴스 세그멘테이션 작업 모두를 위해 커스텀 YOLO 데이터셋에서 사전 훈련된 YOLOE 모델을 파인튜닝할 수 있습니다.



Watch: How to Train YOLOE on Car Parts Segmentation Dataset | Open-Vocabulary Model, Prediction & Export 🚀
예시

인스턴스 세그멘테이션

YOLOE 사전 학습된 체크포인트의 파인튜닝은 대부분 표준 YOLO 학습 절차를 따릅니다. 주요 차이점은 model.train()trainer 파라미터로 YOLOEPESegTrainer을 명시적으로 전달하는 것입니다:

from ultralytics import YOLOE
from ultralytics.models.yolo.yoloe import YOLOEPESegTrainer

model = YOLOE("yoloe-26s-seg.pt")

# Fine-tune on your segmentation dataset
results = model.train(
    data="coco128-seg.yaml",  # Segmentation dataset
    epochs=80,
    patience=10,
    trainer=YOLOEPESegTrainer,  # <- Important: use segmentation trainer
)

객체 탐지

모든 사전 학습된 YOLOE 모델은 기본적으로 인스턴스 세그멘테이션을 수행합니다. 이 사전 학습된 체크포인트를 사용하여 감지 모델을 학습하려면 YAML 구성을 사용하여 처음부터 감지 모델을 초기화한 다음, 동일한 스케일의 사전 학습된 세그멘테이션 체크포인트를 로드합니다. 감지 모델을 학습 중이므로 YOLOEPESegTrainer 대신 YOLOEPETrainer을 사용한다는 점에 유의하세요:

from ultralytics import YOLOE
from ultralytics.models.yolo.yoloe import YOLOEPETrainer

# Initialize a detection model from a config
model = YOLOE("yoloe-26s.yaml")

# Load weights from a pretrained segmentation checkpoint (same scale)
model.load("yoloe-26s-seg.pt")

# Fine-tune on your detection dataset
results = model.train(
    data="coco128.yaml",  # Detection dataset
    epochs=80,
    patience=10,
    trainer=YOLOEPETrainer,  # <- Important: use detection trainer
)

Predict 사용법#

YOLOE는 텍스트 기반 및 시각적 프롬프트를 모두 지원합니다. 프롬프트 사용법은 간단합니다. 아래와 같이 predict 메서드를 통해 전달하기만 하면 됩니다:

예시

텍스트 프롬프트를 사용하면 텍스트 설명을 통해 탐지하려는 클래스를 지정할 수 있습니다. 다음 코드는 YOLOE를 사용하여 이미지에서 사람과 버스를 탐지하는 방법을 보여줍니다:

from ultralytics import YOLOE

# Initialize a YOLOE model
model = YOLOE("yoloe-26l-seg.pt")  # or yoloe-26s/m-seg.pt for different sizes

# Set text prompt to detect person and bus. You only need to do this once after you load the model.
model.set_classes(["person", "bus"])

# Run detection on the given image
results = model.predict("path/to/image.jpg")

# Show results
results[0].show()

Val 사용법#

데이터셋에 대한 모델 검증은 다음과 같이 간소화됩니다:

예시
from ultralytics import YOLOE

# Create a YOLOE model
model = YOLOE("yoloe-26l-seg.pt")  # or yoloe-26s/m-seg.pt for different sizes

# Conduct model validation on the COCO128-seg example dataset
metrics = model.val(data="coco128-seg.yaml")

내보내기(Export) 사용법#

내보내기 프로세스는 다른 YOLO 모델과 유사하며, 텍스트 및 시각적 프롬프트를 처리하는 유연성이 추가되었습니다:

내보낸 모델은 정적입니다

set_classes()(또는 시각적 프롬프트의 경우 refer_image)으로 구성된 클래스는 내보낸 가중치에 하드코딩됩니다. 일단 내보내면 모델은 더 이상 새로운 프롬프트를 수용할 수 없습니다. 로드된 내보내기에서 set_classes()를 호출하거나 predict()visual_prompts=...을 전달하면 실패합니다. 감지된 클래스를 변경하려면 새 프롬프트가 구성된 원래 .pt 체크포인트에서 다시 내보내야 합니다. 내보낸 파일은 표준 YOLO 감지기처럼 작동하며 YOLOE() 대신 YOLO()으로 로드할 수도 있습니다.

프롬프트 임베딩을 한 번 저장하고 ONNX, OpenVINO, TensorRT, CoreML, LiteRT, RKNN과 같은 정적 내보내기를 생성할 때 재사용할 수 있습니다. NPZ 프로필은 내보내기 전에 원래 PyTorch 모델에 의해 로드되며, 추가 런타임 입력이 아니며 내보낸 모델에는 NPZ 파일이 필요하지 않습니다.

프롬프트 임베딩 재사용
from ultralytics import YOLOE

model = YOLOE("yoloe-26n-seg.pt")
model.set_classes(["person", "bus"])
model.save_prompt_embeddings("person-bus.npz")

# The profile is bound to the source checkpoint and can be reused for later exports.
model = YOLOE("yoloe-26n-seg.pt")
model.load_prompt_embeddings("person-bus.npz")
model.export(format="onnx")

동일한 프롬프트 프로필을 사용하여 일치하는 YOLOE 아키텍처로 빌드된 디텍션 전용 모델을 구성할 수도 있습니다. 이렇게 하면 프롬프트된 클래스를 유지하면서 마스크 브랜치가 제거됩니다:

from ultralytics import YOLOE

model = YOLOE("yoloe-26n.yaml").load("yoloe-26n-seg.pt")
model.load_prompt_embeddings("person-bus.npz")
model.export(format="rknn", name="rk3588", quantize=16)
예시
from ultralytics import YOLOE

# Select yoloe-26s/m-seg.pt for different sizes
model = YOLOE("yoloe-26l-seg.pt")

# Configure the set_classes() before exporting the model
model.set_classes(["person", "bus"])

export_model = model.export(format="onnx")
model = YOLOE(export_model)

# Run detection on the given image
results = model.predict("path/to/image.jpg")

# Show results
results[0].show()

공식 모델 훈련#

데이터셋 준비#

참고

공식 YOLOE 모델을 학습하려면 학습 데이터에 대한 세그멘테이션 어노테이션이 필요합니다. 여기 SAM2.1 모델로 구동되는, 데이터셋을 세그멘테이션 어노테이션으로 변환하는 공식 팀에서 제공하는 스크립트가 있습니다. 또는 공식 팀이 제공하는 다음 표에서 제공되는 Processed Segment Annotations를 직접 다운로드할 수 있습니다.

  • 훈련 데이터
데이터셋유형샘플박스원시 탐지 어노테이션처리된 세그멘테이션 어노테이션
Objects365v1탐지609k9621kobjects365_train.jsonobjects365_train_segm.json
GQAGrounding621k3681kfinal_mixed_train_no_coco.jsonfinal_mixed_train_no_coco_segm.json
Flickr30k그라운딩(Grounding)149k641kfinal_flickr_separateGT_train.jsonfinal_flickr_separateGT_train_segm.json
  • 검증(Val) 데이터
데이터셋유형주석 파일
LVIS minival탐지minival.txt

처음부터 학습 시작하기#

참고

Visual Prompt 모델은 잘 훈련된 Text Prompt 모델을 기반으로 파인튜닝됩니다.

예시
from ultralytics import YOLOE
from ultralytics.models.yolo.yoloe import YOLOESegTrainerFromScratch

# Option 1: Use Python dictionary
data = {
    "train": {
        "yolo_data": ["Objects365.yaml"],
        "grounding_data": [
            {
                "img_path": "flickr/full_images/",
                "json_file": "flickr/annotations/final_flickr_separateGT_train_segm.json",
            },
            {
                "img_path": "mixed_grounding/gqa/images",
                "json_file": "mixed_grounding/annotations/final_mixed_train_no_coco_segm.json",
            },
        ],
    },
    "val": {"yolo_data": ["lvis.yaml"]},
}

# Option 2: Use YAML file (yoloe_data.yaml)
# train:
#   yolo_data:
#     - Objects365.yaml
#   grounding_data:
#     - img_path: flickr/full_images/
#       json_file: flickr/annotations/final_flickr_separateGT_train_segm.json
#     - img_path: mixed_grounding/gqa/images
#       json_file: mixed_grounding/annotations/final_mixed_train_no_coco_segm.json
# val:
#   yolo_data:
#     - lvis.yaml

model = YOLOE("yoloe-26l-seg.yaml")
model.train(
    data=data,  # or data="yoloe_data.yaml" if using YAML file
    batch=128,
    epochs=30,
    close_mosaic=2,
    optimizer="AdamW",
    lr0=2e-3,
    warmup_bias_lr=0.0,
    weight_decay=0.025,
    momentum=0.9,
    workers=4,
    trainer=YOLOESegTrainerFromScratch,
    device="0,1,2,3,4,5,6,7",
)

YOLOE 성능 비교#

YOLOE는 속도나 모델 크기를 손상시키지 않으면서 COCO 및 LVIS와 같은 표준 벤치마크에서 폐쇄형 YOLO 모델의 정확도와 일치하거나 이를 능가합니다. 아래 표는 해당되는 폐쇄형 모델들과 YOLOE-L(YOLO11 기반) 및 YOLOE26-L(YOLO26 기반)을 비교합니다:

모델COCO mAP50-95LVIS mAP50-95추론 속도 (T4)매개변수GFLOPs (640px)
YOLOv8-L (폐쇄형)52.9%-9.06 ms (110 FPS)43.7 M165.2 B
YOLO11-L (폐쇄형)53.5%-6.2 ms (161 FPS)26.2 M86.9 B
YOLOE-L (오픈 보카불러리)52.6%35.2%6.2 ms (161 FPS)26.2 M86.9 B
YOLOE26-L (오픈 보카불러리)-36.8%6.2 ms (161 FPS)32.3 M88.3 B

YOLOE-L은 YOLO11-L의 아키텍처를 공유하며 YOLOE26-L은 YOLO26-L의 아키텍처를 공유하므로, 추론 속도와 GFLOPs가 유사합니다.

YOLOE26-L은 T4 GPU에서 640×640 이미지를 **6.2ms(161 FPS)**로 처리하며 32.3M 파라미터88.3B FLOPs36.8% LVIS mAP를 달성합니다. 이는 동일한 추론 속도를 유지하면서 YOLOE-L의 35.2% LVIS mAP를 개선한 결과입니다. 핵심은 YOLOE의 오픈 보카불러리 모듈이 추론 비용을 발생시키지 않음으로써 "no free lunch trade-off" 설계를 입증했다는 점입니다.

제로샷(zero-shot) 작업에서 YOLOE26은 이전 오픈 보카불러리 탐지기들을 크게 능가합니다. LVIS에서 YOLOE26-S는 29.9% mAP를 달성하여 YOLO-World-S를 +11.4 AP로 앞섰고, YOLOE26-L은 36.8% mAP를 달성하여 YOLO-World-L을 +10.0 AP로 앞섰습니다. YOLOE26은 T4 GPU에서 161 FPS의 효율적인 추론 속도를 유지하여 실시간 오픈 보카불러리 애플리케이션에 이상적입니다.

참고

벤치마크 조건: YOLOE 결과는 Objects365, GoldG, LVIS로 사전 학습된 후 COCO에서 미세 조정되거나 평가된 모델에서 얻은 것입니다. YOLOv8 대비 YOLOE의 소폭의 mAP 우위는 광범위한 사전 학습에서 기인합니다. 이러한 오픈 보카불러리 학습 없이도 YOLOE는 비슷한 크기의 YOLO 모델과 일치하는 성능을 보여주며, 성능 저하 없이 SOTA 정확도와 오픈 월드 유연성을 제공함을 확인했습니다.

이전 모델과의 비교#

YOLOE는 이전 YOLO 모델 및 오픈 보카불러리 탐지기 대비 주목할 만한 발전을 이루었습니다:

  • YOLOE vs YOLOv5: YOLOv5는 좋은 속도-정확도 균형을 제공했지만 새로운 클래스에 대한 재훈련이 필요했고 앵커 기반 헤드를 사용했습니다. 대조적으로 YOLOE는 **앵커 프리(anchor-free)**이며 새로운 클래스를 동적으로 탐지합니다. YOLOv8의 개선 사항을 바탕으로 구축된 YOLOE는 더 높은 정확도(COCO에서 YOLOv5의 ~50% mAP 대비 52.6%)를 달성하며, YOLOv5와 달리 인스턴스 세그멘테이션을 통합합니다.

  • YOLOE vs YOLOv8: YOLOE는 YOLOv8의 재설계된 아키텍처를 확장하여 유사하거나 우수한 정확도(YOLOv8-L의 ~44M 파라미터에서 52.9% 대비 ~26M 파라미터에서 52.6% mAP)를 달성합니다. 더 강력한 사전 훈련 덕분에 훈련 시간이 크게 단축됩니다. 핵심 발전 사항은 YOLOv8의 폐쇄형 디자인과 달리 프롬프트를 통해 보이지 않는 객체(예: "bird scooter" 또는 "peace symbol")를 탐지하는 YOLOE의 오픈 월드 기능입니다.

  • YOLOE vs YOLO11: YOLO11은 향상된 효율성과 더 적은 파라미터(~22% 감소)로 YOLOv8을 개선합니다. YOLOE는 이러한 이점을 직접 이어받아 YOLO11의 추론 속도 및 파라미터 수(~26M 파라미터)와 일치하면서 오픈 어휘 탐지 및 세그멘테이션을 추가합니다. 폐쇄형 시나리오에서 YOLOE는 YOLO11과 동일하지만, 결정적으로 속도를 손상시키지 않으면서 보이지 않는 클래스를 탐지할 수 있는 적응성을 추가하여 YOLO11 + 오픈 월드 기능을 달성합니다.

  • YOLOE26 vs YOLOE (YOLO11 기반): YOLOE26은 YOLO26의 아키텍처를 기반으로 구축되어, 더 빠른 추론을 위해 NMS가 필요 없는 엔드투엔드(end-to-end) 디자인을 이어받았습니다. LVIS에서 YOLOE26-L은 36.8% mAP를 달성하여 YOLOE-L의 35.2% mAP보다 향상되었습니다. YOLOE26은 YOLOE의 3가지 크기(S/M/L)에 비해 5가지 모델 크기(N/S/M/L/X)를 모두 제공하여 다양한 배포 시나리오에 더 많은 유연성을 제공합니다.

  • YOLOE26 vs 이전 오픈 어휘 탐지기: 이전의 오픈 어휘 모델(GLIP, OWL-ViT, YOLO-World)은 비전-언어 트랜스포머(transformer)에 크게 의존하여 느린 추론을 초래했습니다. LVIS에서 YOLOE26-S는 29.9% mAP(YOLO-World-S 대비 +11.4 AP)를 달성하고 YOLOE26-L은 36.8% mAP(YOLO-World-L 대비 +10.0 AP)를 달성하며, T4 GPU에서 161 FPS로 실시간 추론을 유지합니다. 트랜스포머 기반 접근 방식(예: GLIP)과 비교하여 YOLOE26은 수배 빠른 추론을 제공하여 오픈셋 탐지에서 정확도-효율성 격차를 효과적으로 해소합니다.

요약하자면, YOLOE와 YOLOE26은 YOLO의 유명한 속도와 효율성을 유지하면서 정확도 면에서 전임자들을 능가하고, 세그멘테이션을 통합하며, 강력한 오픈 월드 탐지 기능을 도입했습니다. YOLOE26은 YOLO26의 NMS 프리 엔드투엔드 추론으로 아키텍처를 더욱 발전시켜 실시간 오픈 보카불러리 애플리케이션에 이상적입니다.

사용 사례 및 애플리케이션#

YOLOE의 오픈 보카불러리 탐지 및 세그멘테이션은 기존 고정 클래스 모델을 넘어 다양한 애플리케이션을 가능하게 합니다:

  • 오픈 월드 객체 탐지: 로봇이 프롬프트를 사용하여 이전에 보지 못한 객체를 인식하는 로보틱스나, 재훈련 없이 새로운 위협(예: 위험물)에 빠르게 적응하는 보안 시스템과 같은 동적 시나리오에 이상적입니다.

  • 퓨샷 및 원샷 탐지: 시각적 프롬프트(SAVPE)를 사용하여 YOLOE는 단일 레퍼런스 이미지에서 새로운 객체를 빠르게 학습합니다. 산업용 검사(부품 또는 결함 즉시 식별) 또는 최소한의 설정으로 시각적 검색을 가능하게 하는 **커스텀 감시(custom surveillance)**에 완벽합니다.

  • 대규모 어휘 및 롱테일 인식: 1000개 이상의 클래스 어휘를 갖춘 YOLOE는 생물다양성 모니터링(희귀종 탐지), 박물관 소장품, 소매 재고 또는 전자상거래와 같은 작업에서 탁월하며, 광범위한 클래스별 훈련 없이도 많은 클래스를 안정적으로 식별합니다.

  • 대화형 탐지 및 세그멘테이션: YOLOE는 자연어 입력(텍스트 또는 시각적 프롬프트)을 기반으로 검색 가능한 비디오/이미지 검색, 증강 현실(AR), 직관적인 이미지 편집과 같은 실시간 대화형 애플리케이션을 지원합니다. 사용자는 세그멘테이션 마스크를 사용하여 객체를 동적으로 분리, 식별 또는 정밀하게 편집할 수 있습니다.

  • 자동 데이터 라벨링 및 부트스트래핑: YOLOE는 초기 바운딩 박스 및 세그멘테이션 어노테이션을 제공하여 데이터셋 구축을 가속화하고 인간의 라벨링 노력을 크게 줄여줍니다. 특히 존재하는 객체를 자동 식별하여 특수 모델 구축을 지원하는 대규모 미디어 컬렉션 분석에 유용합니다.

  • 모든 객체에 대한 세그멘테이션: 프롬프트를 통해 세그멘테이션 기능을 임의의 객체로 확장합니다. 의료 영상, 현미경 검사 또는 위성 이미지 분석에 특히 유용하며, 특수한 사전 훈련된 모델 없이도 구조를 자동으로 식별하고 정확하게 분할합니다. SAM과 같은 모델과 달리 YOLOE는 객체를 동시에 인식하고 자동으로 분할하므로 콘텐츠 제작이나 장면 이해와 같은 작업에 도움이 됩니다.

이러한 모든 사용 사례에서 YOLOE의 핵심 장점은 다목적성으로, 동적 시나리오 전반에 걸쳐 탐지, 인식 및 세그멘테이션을 위한 통합 모델을 제공합니다. 그 효율성은 리소스가 제한된 장치에서 실시간 성능을 보장하며, 로보틱스, 자율 주행, 국방 등에 이상적입니다.

필요에 따라 YOLOE 모드를 선택하십시오:

  • 폐쇄형 모드(Closed-set mode): 고정 클래스 작업용 (최대 속도 및 정확도).
  • 프롬프트 모드(Prompted mode): 텍스트 또는 시각적 프롬프트를 통해 새로운 객체를 빠르게 추가.
  • 프롬프트 없는 오픈셋 모드(Prompt-free open-set mode): 많은 카테고리에 걸친 일반적인 탐지 (카탈로그 작성 및 발견에 이상적).

프롬프트 없는 탐색 후 타겟 프롬프트를 사용하는 것과 같이 모드를 조합하면 YOLOE의 잠재력을 최대한 활용할 수 있는 경우가 많습니다.

학습 및 추론#

YOLOE는 다른 YOLO 모델(YOLOv8, YOLO-World)과 유사하게 Ultralytics Python APICLI와 원활하게 통합됩니다. 빠른 시작 방법은 다음과 같습니다:

YOLOE를 이용한 학습 및 추론
from ultralytics import YOLO

# Load pretrained YOLOE model and train on custom data
model = YOLO("yoloe-26s-seg.pt")
model.train(data="path/to/data.yaml", epochs=50, imgsz=640)

# Run inference using text prompts ("person", "bus")
model.set_classes(["person", "bus"])
results = model.predict(source="test_images/street.jpg")
results[0].save()  # save annotated output

여기서 YOLOE는 기본적으로 표준 탐지기로 작동하지만 클래스(set_classes)를 지정하여 프롬프트 탐지로 쉽게 전환됩니다. 결과에는 바운딩 박스, 마스크 및 레이블이 포함됩니다.

기타 지원되는 작업#

  • 검증: model.val() 또는 yolo val을 사용하여 정확도를 쉽게 평가합니다.
  • 내보내기: 배포를 용이하게 하기 위해 YOLOE 모델(model.export())을 ONNX, TensorRT 등으로 내보냅니다.
  • 추적: YOLOE는 통합될 때 객체 추적(yolo track)을 지원하며, 이는 비디오에서 프롬프트된 클래스를 추적하는 데 유용합니다.
참고

YOLOE는 추론 결과(results[0].masks)에 세그멘테이션 마스크를 자동으로 포함하므로, 별도의 모델 없이 객체 추출이나 측정과 같은 픽셀 단위의 정밀한 작업을 단순화합니다.

시작하기#

다음 단계에 따라 Ultralytics로 YOLOE를 빠르게 설정하십시오:

  1. 설치: Ultralytics 패키지를 설치하거나 업데이트하십시오:

    pip install -U ultralytics
  2. YOLOE 가중치 다운로드: 사전 훈련된 YOLOE 모델(예: YOLOE-v8-S/L, YOLOE-11 변형)은 YOLOE GitHub 릴리스에서 다운로드할 수 있습니다. Ultralytics YOLO 클래스에 로드할 원하는 .pt 파일을 다운로드하기만 하면 됩니다.

  3. 하드웨어 요구 사항:

    • 추론: 권장 GPU(VRAM 4-8GB 이상인 NVIDIA). 소형 모델은 엣지 GPU(예: Jetson) 또는 더 낮은 해상도의 CPU에서 효율적으로 실행됩니다. 소형 워크스테이션에서 고성능 추론을 수행하려면 NVIDIA DGX Spark 가이드를 참조하세요.
    • 학습: 커스텀 데이터에서 YOLOE를 미세 조정하는 데는 일반적으로 하나의 GPU만 필요합니다. 저자들이 사용한 광범위한 오픈 보카불러리 사전 학습(LVIS/Objects365)은 상당한 연산 자원(8× RTX 4090 GPU)이 필요했습니다.
  4. 구성: YOLOE 구성은 표준 Ultralytics YAML 파일을 사용합니다. 기본 구성(예: yoloe-26s-seg.yaml)으로 대개 충분하지만 필요에 따라 백본, 클래스 또는 이미지 크기를 수정할 수 있습니다.

  5. YOLOE 실행:

    • 빠른 추론 (프롬프트 없음):

      yolo predict model=yoloe-26s-seg-pf.pt source="image.jpg"
    • 프롬프트 탐지 (텍스트 프롬프트 예시):

      from ultralytics import YOLO
      
      model = YOLO("yoloe-26s-seg.pt")
      model.set_classes(["bowl", "apple"])
      results = model.predict("kitchen.jpg")
      results[0].save()
  6. 통합 팁:

    • 클래스 이름: 기본 YOLOE 출력은 LVIS 카테고리를 사용합니다. 자신만의 레이블을 지정하려면 set_classes()을 사용하세요.
    • 속도: YOLOE는 프롬프트를 사용하지 않으면 오버헤드가 없습니다. 텍스트 프롬프트는 영향이 미미하며, 시각적 프롬프트는 약간의 영향이 있습니다.
    • NMS 동작: YOLOE는 예측 중에 자동으로 agnostic_nms=True을 사용하여 클래스 간의 겹치는 박스를 병합합니다. 이는 동일한 객체가 YOLOE의 대규모 어휘(1200개 이상의 LVIS 클래스) 내 여러 카테고리와 일치할 때 중복 탐지를 방지합니다. agnostic_nms=False을 명시적으로 전달하여 이를 무시할 수 있습니다.
    • 배치 추론: 직접 지원됩니다(model.predict([img1, img2])). 이미지별 프롬프트의 경우 이미지를 개별적으로 실행하세요.

Ultralytics 문서에서는 추가 리소스를 제공합니다. YOLOE를 사용하면 익숙한 YOLO 생태계 내에서 강력한 오픈 월드 기능을 쉽게 탐색할 수 있습니다.

프로 팁: YOLOE의 제로샷 정확도를 극대화하려면 처음부터 학습하는 대신 제공된 체크포인트부터 미세 조정하십시오. 탐지 정확도를 높이려면 일반적인 학습 라벨(LVIS 카테고리 참조)과 정렬된 프롬프트 단어를 사용하십시오.

인용 및 감사의 글#

YOLOE가 귀하의 연구나 프로젝트에 기여했다면 **칭화대학교(Tsinghua University)**의 Ao Wang, Lihao Liu, Hui Chen, Zijia Lin, Jungong Han, 및 Guiguang Ding의 원본 논문을 인용해 주십시오:

인용
@misc{wang2025yoloerealtimeseeing,
      title={YOLOE: Real-Time Seeing Anything},
      author={Ao Wang and Lihao Liu and Hui Chen and Zijia Lin and Jungong Han and Guiguang Ding},
      year={2025},
      eprint={2503.07465},
      archivePrefix={arXiv},
      primaryClass={cs.CV},
      url={https://arxiv.org/abs/2503.07465},
}

추가 읽을거리를 위해 원본 YOLOE 논문은 arXiv에서 볼 수 있습니다. 프로젝트의 소스 코드와 추가 리소스는 GitHub 저장소를 통해 액세스할 수 있습니다.

FAQ#

YOLOE는 YOLO-World와 어떻게 다릅니까?#

YOLOE와 YOLO-World 모두 오픈 어휘 탐지를 지원하지만, YOLOE는 몇 가지 장점을 제공합니다. YOLOE는 YOLO-Worldv2보다 3배 적은 훈련 리소스를 사용하고 1.4배 더 빠르게 실행되면서 LVIS에서 +3.5 AP 더 높은 정확도를 달성합니다. 또한 YOLOE는 세 가지 프롬프트 모드(텍스트, 시각적 및 내부 어휘)를 지원하는 반면, YOLO-World는 주로 텍스트 프롬프트에 중점을 둡니다. 또한 YOLOE에는 내장 인스턴스 세그멘테이션 기능이 포함되어 있어 추가 오버헤드 없이 탐지된 객체에 대한 픽셀 정밀 마스크를 제공합니다.

YOLOE를 일반 YOLO 모델로 사용할 수 있습니까?#

네, YOLOE는 성능 저하 없이 표준 YOLO 모델처럼 완벽하게 작동할 수 있습니다. 폐쇄형 모드(프롬프트 없이)에서 사용될 때, YOLOE의 오픈 보카불러리 모듈은 표준 탐지 헤드로 재파라미터화되어 동급 YOLO11 모델과 동일한 속도와 정확도를 제공합니다. 따라서 YOLOE는 매우 다재다능하며, 최대 속도를 위해 전통적인 탐지기로 사용하다가 필요할 때만 오픈 보카불러리 모드로 전환할 수 있습니다.

YOLOE에서 어떤 유형의 프롬프트를 사용할 수 있습니까?#

YOLOE는 세 가지 유형의 프롬프트를 지원합니다:

  1. 텍스트 프롬프트: 자연어를 사용하여 객체 클래스 지정 (예: "person", "traffic light", "bird scooter")
  2. 시각적 프롬프트: 탐지하려는 객체의 참조 이미지 제공
  3. 내부 보카불러리: 외부 프롬프트 없이 YOLOE의 내장 1200개 이상의 카테고리 보카불러리 사용

이러한 유연성을 통해 모델을 재학습하지 않고도 다양한 시나리오에 YOLOE를 적응시킬 수 있으며, 탐지 요구 사항이 자주 변경되는 동적 환경에서 특히 유용합니다.

YOLOE는 인스턴스 세그멘테이션을 어떻게 처리합니까?#

YOLOE는 마스크 예측 분기로 탐지 헤드를 확장하여 인스턴스 세그멘테이션을 아키텍처에 직접 통합합니다. 이 접근 방식은 YOLOv8-Seg와 유사하지만 프롬프트된 모든 객체 클래스에 대해 작동합니다. 세그멘테이션 마스크는 추론 결과에 자동으로 포함되며 results[0].masks을 통해 액세스할 수 있습니다. 이 통합된 접근 방식은 별도의 탐지 및 세그멘테이션 모델의 필요성을 없애고, 픽셀 정밀한 객체 경계가 필요한 애플리케이션의 워크플로를 간소화합니다.

YOLOE는 사용자 정의 프롬프트를 사용한 추론을 어떻게 처리합니까?#

YOLO-World와 유사하게 YOLOE는 효율성을 높이기 위해 오프라인 어휘를 활용하는 "프롬프트 후 탐지(prompt-then-detect)" 전략을 지원합니다. 캡션이나 특정 객체 카테고리와 같은 커스텀 프롬프트는 미리 인코딩되어 오프라인 어휘 임베딩으로 저장됩니다. 이 접근 방식은 재훈련을 요구하지 않고 탐지 과정을 간소화합니다. 모델 내에서 이러한 프롬프트를 동적으로 설정하여 특정 탐지 작업에 맞게 모델을 맞춤화할 수 있습니다:

from ultralytics import YOLO

# Initialize a YOLOE model
model = YOLO("yoloe-26s-seg.pt")

# Define custom classes
model.set_classes(["person", "bus"])

# Execute prediction on an image
results = model.predict("path/to/image.jpg")

# Show results
results[0].show()

댓글