콘텐츠로 건너뛰기

YOLOE: Real-Time Seeing Anything

소개

YOLOE 프롬프트 옵션

YOLOE (Real-Time Seeing Anything)개방형 어휘 detect 및 segmentation을 위해 설계된 제로샷(zero-shot) 프롬프트 가능한 YOLO 모델의 새로운 발전입니다. 고정된 범주로 제한된 이전 YOLO 모델과 달리 YOLOE는 텍스트, 이미지 또는 내부 어휘 프롬프트를 사용하여 모든 객체 클래스의 실시간 detect을 가능하게 합니다. YOLOv10을 기반으로 하고 YOLO-World에서 영감을 받은 YOLOE는 속도와 정확도에 미치는 영향을 최소화하면서 최첨단 제로샷 성능을 달성합니다.



참고: Ultralytics python 패키지로 YOLOE를 사용하는 방법: 개방형 어휘 및 실시간으로 모든 것을 보기 🚀

이전 YOLO 모델과 비교하여 YOLOE는 효율성과 정확도를 크게 향상시킵니다. LVIS에서 YOLO-Worldv2보다 +3.5 AP 향상되며, 훈련 리소스의 3분의 1만 사용하고 1.4배 더 빠른 추론 속도를 달성합니다. COCO에서 미세 조정된 YOLOE-v8-large는 거의 4배 적은 훈련 시간을 사용하여 YOLOv8-L을 0.1 mAP 초과합니다. 이는 YOLOE의 정확도, 효율성 및 다용성 간의 탁월한 균형을 보여줍니다. 아래 섹션에서는 YOLOE의 아키텍처, 벤치마크 비교 및 Ultralytics 프레임워크와의 통합을 살펴봅니다.

아키텍처 개요

YOLOE 아키텍처

YOLOE는 표준 YOLO 구조(특징 추출을 위한 컨볼루션 백본(예: CSP-Darknet), 다중 스케일 융합을 위한 (예: PAN-FPN) 및 객체성, 클래스 및 상자를 독립적으로 예측하는 앵커 프리, 분리된 감지 헤드(YOLOv8/YOLO11에서와 같이))를 유지합니다. YOLOE는 개방형 어휘 감지를 가능하게 하는 세 가지 새로운 모듈을 도입했습니다.

  • 재매개변수화 가능한 영역-텍스트 정렬(RepRTA): 작은 보조 네트워크를 통해 텍스트 임베딩(예: CLIP에서)을 개선하여 텍스트 프롬프트 감지를 지원합니다. 추론 시 이 네트워크는 기본 모델로 통합되어 오버헤드가 발생하지 않습니다. 따라서 YOLOE는 런타임 페널티 없이 임의의 텍스트 레이블 객체(예: 보이지 않는 "신호등")를 감지합니다.

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

  • Lazy Region-Prompt Contrast (LRPC): 프롬프트-프리 모드에서 YOLOE는 대규모 어휘(LVIS 및 Objects365의 1200개 이상의 범주)에 대해 학습된 내부 임베딩을 사용하여 개방형 집합 인식을 수행합니다. 외부 프롬프트나 인코더 없이 YOLOE는 임베딩 유사성 조회를 통해 객체를 식별하여 추론 시 대규모 레이블 공간을 효율적으로 처리합니다.

또한 YOLOE는 마스크 예측 분기(YOLACT 또는 YOLOv8-Seg와 유사)로 detection 헤드를 확장하여 최소한의 오버헤드를 추가함으로써 실시간 인스턴스 분할을 통합합니다.

결정적으로, YOLOE의 개방형 세계 모듈은 일반 폐쇄형 YOLO로 사용될 때 추론 비용이 발생하지 않습니다. 훈련 후 YOLOE 파라미터는 표준 YOLO 헤드로 재파라미터화될 수 있으며, 동일한 FLOP 및 속도를 유지합니다(예: YOLO11과 정확히 일치).

사용 가능한 모델, 지원되는 작업 및 작동 모드

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

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

모델 유형사전 훈련된 가중치지원되는 작업추론검증훈련내보내기
YOLOE-11Syoloe-11s-seg.pt인스턴스 분할
YOLOE-11Myoloe-11m-seg.pt인스턴스 분할
YOLOE-11Lyoloe-11l-seg.pt인스턴스 분할
YOLOE-v8Syoloe-v8s-seg.pt인스턴스 분할
YOLOE-v8Myoloe-v8m-seg.pt인스턴스 분할
YOLOE-v8Lyoloe-v8l-seg.pt인스턴스 분할
YOLOE-26Nyoloe-26n-seg.pt인스턴스 분할
YOLOE-26Syoloe-26s-seg.pt인스턴스 분할
YOLOE-26Myoloe-26m-seg.pt인스턴스 분할
YOLOE-26Lyoloe-26l-seg.pt인스턴스 분할
YOLOE-26Xyoloe-26x-seg.pt인스턴스 분할

프롬프트 없음 모델

모델 유형사전 훈련된 가중치지원되는 작업추론검증훈련내보내기
YOLOE-11S-PFyoloe-11s-seg-pf.pt인스턴스 분할
YOLOE-11M-PFyoloe-11m-seg-pf.pt인스턴스 분할
YOLOE-11L-PFyoloe-11l-seg-pf.pt인스턴스 분할
YOLOE-v8S-PFyoloe-v8s-seg-pf.pt인스턴스 분할
YOLOE-v8M-PFyoloe-v8m-seg-pf.pt인스턴스 분할
YOLOE-v8L-PFyoloe-v8l-seg-pf.pt인스턴스 분할
YOLOE-26N-PFyoloe-26n-seg-pf.pt인스턴스 분할
YOLOE-26S-PFyoloe-26s-seg-pf.pt인스턴스 분할
YOLOE-26M-PFyoloe-26m-seg-pf.pt인스턴스 분할
YOLOE-26L-PFyoloe-26l-seg-pf.pt인스턴스 분할
YOLOE-26X-PFyoloe-26x-seg-pf.pt인스턴스 분할

YOLOE-26 성능

YOLOE-26 모델의 상세한 성능 벤치마크는 YOLO26 문서에서 확인하십시오.

사용 예시

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

학습 사용법

맞춤형 데이터 세트에 대한 미세 조정

detection 및 instance segmentation 작업 모두를 위해 사용자 정의 YOLO 데이터 세트에서 사전 학습된 YOLOE 모델을 fine-tuning할 수 있습니다.



참고: 자동차 부품 세분화 데이터셋에서 YOLOE를 훈련하는 방법 | 오픈 어휘 모델, 예측 및 내보내기 🚀

예시

Instance segmentation

YOLOE 사전 학습된 체크포인트를 fine-tuning하는 것은 대부분 다음을 따릅니다. 표준 YOLO 학습 절차. 주요 차이점은 명시적으로 다음을 전달하는 것입니다. YOLOEPESegTrainertrainer parameter를 model.train():

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 모델 은 기본적으로 instance segmentation을 수행합니다. 이러한 사전 학습된 체크포인트를 사용하여 detection 모델을 학습하려면 YAML 구성을 사용하여 처음부터 detection 모델을 초기화한 다음 동일한 스케일의 사전 학습된 segmentation 체크포인트를 로드합니다. 여기서는 다음을 사용합니다. YOLOEPETrainer 대신 YOLOEPESegTrainer detection 모델을 학습하기 때문입니다.

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
)

Linear probing은 모델의 나머지 부분을 고정하면서 분류 분기만 fine-tuning합니다. 이 접근 방식은 제한된 데이터로 작업할 때 유용합니다. 이전에 학습된 기능을 활용하면서 분류 헤드만 조정하여 과적합을 방지하기 때문입니다.

Instance segmentation

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

# Load a pretrained segmentation model
model = YOLOE("yoloe-26s-seg.pt")

# Identify the head layer index
head_index = len(model.model.model) - 1

# Freeze all backbone and neck layers (i.e., everything before the head)
freeze = [str(i) for i in range(0, head_index)]

# Freeze parts of the segmentation head, keeping only the classification branch trainable
for name, child in model.model.model[-1].named_children():
    if "cv3" not in name:
        freeze.append(f"{head_index}.{name}")

# Freeze detection branch components
freeze.extend(
    [
        f"{head_index}.cv3.0.0",
        f"{head_index}.cv3.0.1",
        f"{head_index}.cv3.1.0",
        f"{head_index}.cv3.1.1",
        f"{head_index}.cv3.2.0",
        f"{head_index}.cv3.2.1",
    ]
)

# Train only the classification branch
results = model.train(
    data="coco128-seg.yaml",  # Segmentation dataset
    epochs=80,
    patience=10,
    trainer=YOLOEPESegTrainer,  # <- Important: use segmentation trainer
    freeze=freeze,
)

객체 감지는

객체 감지 작업의 경우, 학습 과정은 위의 인스턴스 분할 예제와 거의 동일하지만 다음을 사용합니다. YOLOEPETrainer 대신 YOLOEPESegTrainerYAML을 사용하여 객체 감지 모델을 초기화한 다음, 사전 학습된 인스턴스 분할 체크포인트에서 가중치를 로드합니다.

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")

# Identify the head layer index
head_index = len(model.model.model) - 1

# Freeze all backbone and neck layers (i.e., everything before the head)
freeze = [str(i) for i in range(0, head_index)]

# Freeze parts of the segmentation head, keeping only the classification branch trainable
for name, child in model.model.model[-1].named_children():
    if "cv3" not in name:
        freeze.append(f"{head_index}.{name}")

# Freeze detection branch components
freeze.extend(
    [
        f"{head_index}.cv3.0.0",
        f"{head_index}.cv3.0.1",
        f"{head_index}.cv3.1.0",
        f"{head_index}.cv3.1.1",
        f"{head_index}.cv3.2.0",
        f"{head_index}.cv3.2.1",
    ]
)

# Train only the classification branch
results = model.train(
    data="coco128.yaml",  # Detection dataset
    epochs=80,
    patience=10,
    trainer=YOLOEPETrainer,  # <- Important: use detection trainer
    freeze=freeze,
)

예측 사용법

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

예시

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

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.
names = ["person", "bus"]
model.set_classes(names, model.get_text_pe(names))

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

# Show results
results[0].show()

시각적 프롬프트를 통해 텍스트로 설명하는 대신 대상 클래스의 시각적 예제를 보여줌으로써 모델을 안내할 수 있습니다.

에 지정되어 있습니다. visual_prompts 인수는 두 개의 키가 있는 사전을 사용합니다. bboxescls. 다음의 각 경계 상자 bboxes 모델이 detect하기를 원하는 객체의 예시를 밀접하게 둘러싸야 하며, 해당 항목은 ~에 있습니다. cls 해당 상자에 대한 클래스 레이블을 지정합니다. 이 쌍은 모델에게 "이것이 X 클래스의 모습입니다. 이제 이와 유사한 것을 더 찾으세요."라고 알려줍니다.

클래스 ID (cls) 위치: visual_prompts 프롬프트 내에서 각 경계 상자를 특정 범주와 연결하는 데 사용됩니다. 고정된 레이블이 아니라 각 예에 할당하는 임시 식별자입니다. 유일한 요구 사항은 클래스 ID가 0부터 시작하여 순차적이어야 한다는 것입니다. 이는 모델이 각 상자를 해당 클래스와 올바르게 연결하는 데 도움이 됩니다.

추론을 실행하려는 동일한 이미지 내에서 직접 시각적 프롬프트를 제공할 수 있습니다. 예를 들어 다음과 같습니다.

import numpy as np

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

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

# Define visual prompts using bounding boxes and their corresponding class IDs.
# Each box highlights an example of the object you want the model to detect.
visual_prompts = dict(
    bboxes=np.array(
        [
            [221.52, 405.8, 344.98, 857.54],  # Box enclosing person
            [120, 425, 160, 445],  # Box enclosing glasses
        ],
    ),
    cls=np.array(
        [
            0,  # ID to be assigned for person
            1,  # ID to be assigned for glasses
        ]
    ),
)

# Run inference on an image, using the provided visual prompts as guidance
results = model.predict(
    "ultralytics/assets/bus.jpg",
    visual_prompts=visual_prompts,
    predictor=YOLOEVPSegPredictor,
)

# Show results
results[0].show()

또는 다음을 사용하여 별도의 참조 이미지에서 예제를 제공할 수 있습니다. refer_image 인수. 이 경우, bboxescls 에서 visual_prompts 예측하려는 대상 이미지가 아닌, 참조 이미지 내 객체를 설명해야 합니다.

참고

만약 source 비디오 또는 스트림인 경우 모델은 첫 번째 프레임을 자동으로 refer_image즉, visual_prompts 해당 초기 프레임에 적용되어 모델이 비디오의 나머지 부분에서 무엇을 찾아야 하는지 이해하도록 돕습니다. 또는 특정 프레임을 명시적으로 전달할 수 있습니다. refer_image 모델이 참조로 사용하는 시각적 예제를 제어합니다.

import numpy as np

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

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

# Define visual prompts based on a separate reference image
visual_prompts = dict(
    bboxes=np.array([[221.52, 405.8, 344.98, 857.54]]),  # Box enclosing person
    cls=np.array([0]),  # ID to be assigned for person
)

# Run prediction on a different image, using reference image to guide what to look for
results = model.predict(
    "ultralytics/assets/zidane.jpg",  # Target image for detection
    refer_image="ultralytics/assets/bus.jpg",  # Reference image used to get visual prompts
    visual_prompts=visual_prompts,
    predictor=YOLOEVPSegPredictor,
)

# Show results
results[0].show()

사용: refer_image 또한 클래스를 영구적으로 설정하므로, 동일한 시각적 프롬프트를 다시 제공할 필요 없이 예측을 실행할 수 있으며, 모델을 내보낸 후에도 동일한 클래스를 여전히 detect할 수 있는 기능을 유지하면서 모델을 내보낼 수 있습니다.

# After making prediction with `refer_image`, you can run predictions without passing visual_prompts again and still get the same classes back
results = model("ultralytics/assets/bus.jpg")

# Or export it to a different format while retaining the classes
model.export(format="onnx")

여러 대상 이미지를 전달하여 예측을 실행할 수도 있습니다.

import numpy as np

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

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

# Define visual prompts using bounding boxes and their corresponding class IDs.
# Each box highlights an example of the object you want the model to detect.
visual_prompts = dict(
    bboxes=[
        np.array(
            [
                [221.52, 405.8, 344.98, 857.54],  # Box enclosing person
                [120, 425, 160, 445],  # Box enclosing glasses
            ],
        ),
        np.array([[150, 200, 1150, 700]]),
    ],
    cls=[
        np.array(
            [
                0,  # ID to be assigned for person
                1,  # ID to be assigned for glasses
            ]
        ),
        np.array([0]),
    ],
)

# Run inference on multiple image, using the provided visual prompts as guidance
results = model.predict(
    ["ultralytics/assets/bus.jpg", "ultralytics/assets/zidane.jpg"],
    visual_prompts=visual_prompts,
    predictor=YOLOEVPSegPredictor,
)

# Show results
results[0].show()

YOLOE에는 내장된 어휘를 포함하는 프롬프트 없는 변형 모델도 있습니다. 이 모델들은 어떠한 프롬프트도 필요로 하지 않으며 기존 YOLO 모델처럼 작동합니다. 사용자가 제공하는 레이블이나 시각적 예시에 의존하는 대신, Recognize Anything Model Plus (RAM++)에서 사용되는 태그 세트를 기반으로 미리 정의된 4,585개 클래스 목록에서 객체를 detect합니다.

from ultralytics import YOLOE

# Initialize a YOLOE model
model = YOLOE("yoloe-26l-seg-pf.pt")

# Run prediction. No prompts required.
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")

기본적으로 제공된 데이터셋을 사용하여 각 카테고리에 대한 시각적 임베딩을 추출합니다.

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", load_vp=True)

또는 다른 데이터 세트를 참조 데이터 세트로 사용하여 각 범주에 대한 시각적 임베딩을 추출할 수 있습니다. 참고로 이 참조 데이터 세트는 제공된 데이터 세트와 정확히 동일한 범주를 가져야 합니다.

from ultralytics import YOLOE

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

# Conduct model validation on the COCO128-seg example dataset
metrics = model.val(data="coco128-seg.yaml", load_vp=True, refer_data="coco.yaml")
from ultralytics import YOLOE

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

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

내보내기 사용법

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

예시

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
names = ["person", "bus"]
model.set_classes(names, model.get_text_pe(names))

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 모델을 훈련하려면 훈련 데이터에 대한 segment 주석이 필요합니다. 다음은 공식 팀에서 제공하는 스크립트 데이터셋을 segment 주석으로 변환하는 것으로, 다음을 기반으로 합니다. SAM2.1 모델또는 제공된 파일을 직접 다운로드할 수도 있습니다. Processed Segment Annotations 공식 팀에서 제공한 다음 표에 있습니다.

  • 학습 데이터
데이터세트유형샘플상자Raw Detection Annotations처리된 세그먼트 주석
Objects365v1객체 탐지609k9621kobjects365_train.jsonobjects365_train_segm.json
GQAGrounding621k3681kfinal_mixed_train_no_coco.jsonfinal_mixed_train_no_coco_segm.json
Flickr30kGrounding149k641kfinal_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

data = dict(
    train=dict(
        yolo_data=["Objects365.yaml"],
        grounding_data=[
            dict(
                img_path="flickr/full_images/",
                json_file="flickr/annotations/final_flickr_separateGT_train_segm.json",
            ),
            dict(
                img_path="mixed_grounding/gqa/images",
                json_file="mixed_grounding/annotations/final_mixed_train_no_coco_segm.json",
            ),
        ],
    ),
    val=dict(yolo_data=["lvis.yaml"]),
)

model = YOLOE("yoloe-26l-seg.yaml")
model.train(
    data=data,
    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",
)

이후에만 SAVPE 모듈은 학습 중에 업데이트해야 합니다. 학습이 잘 된 텍스트 프롬프트 모델을 탐지 모델로 변환하고 더 적은 학습 비용으로 탐지 파이프라인을 채택합니다. 이 단계는 선택 사항이며 분할부터 직접 시작할 수도 있습니다.

from ultralytics import YOLOE
from ultralytics.utils.patches import torch_load

det_model = YOLOE("yoloe-26l.yaml")
state = torch_load("yoloe-26l-seg.pt")
det_model.load(state["model"])
det_model.save("yoloe-26l-seg-det.pt")

학습 시작:

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

data = dict(
    train=dict(
        yolo_data=["Objects365.yaml"],
        grounding_data=[
            dict(
                img_path="flickr/full_images/",
                json_file="flickr/annotations/final_flickr_separateGT_train_segm.json",
            ),
            dict(
                img_path="mixed_grounding/gqa/images",
                json_file="mixed_grounding/annotations/final_mixed_train_no_coco_segm.json",
            ),
        ],
    ),
    val=dict(yolo_data=["lvis.yaml"]),
)

model = YOLOE("yoloe-26l-seg.pt")
# replace to yoloe-26l-seg-det.pt if converted to detection model
# model = YOLOE("yoloe-26l-seg-det.pt")

# freeze every layer except of the savpe module.
head_index = len(model.model.model) - 1
freeze = list(range(0, head_index))
for name, child in model.model.model[-1].named_children():
    if "savpe" not in name:
        freeze.append(f"{head_index}.{name}")

model.train(
    data=data,
    batch=128,
    epochs=2,
    close_mosaic=2,
    optimizer="AdamW",
    lr0=16e-3,
    warmup_bias_lr=0.0,
    weight_decay=0.025,
    momentum=0.9,
    workers=4,
    trainer=YOLOESegVPTrainer,  # use YOLOEVPTrainer if converted to detection model
    device="0,1,2,3,4,5,6,7",
    freeze=freeze,
)

훈련 후 분할 모델로 다시 변환합니다. 훈련 전에 분할 모델을 감지 모델로 변환한 경우에만 필요합니다.

from copy import deepcopy

from ultralytics import YOLOE

model = YOLOE("yoloe-26l-seg.yaml")
model.load("yoloe-26l-seg.pt")

vp_model = YOLOE("yoloe-11l-vp.pt")
model.model.model[-1].savpe = deepcopy(vp_model.model.model[-1].savpe)
model.eval()
model.save("yoloe-26l-seg.pt")

시각적 프롬프트 학습과 유사하게 프롬프트가 없는 모델의 경우 특수화된 프롬프트 임베딩만 학습 중에 업데이트해야 합니다. 학습이 잘 된 텍스트 프롬프트 모델을 감지 모델로 변환하고 더 적은 학습 비용으로 감지 파이프라인을 채택합니다. 이 단계는 선택 사항이며 분할부터 직접 시작할 수도 있습니다.

from ultralytics import YOLOE
from ultralytics.utils.patches import torch_load

det_model = YOLOE("yoloe-26l.yaml")
state = torch_load("yoloe-26l-seg.pt")
det_model.load(state["model"])
det_model.save("yoloe-26l-seg-det.pt")
학습 시작:
from ultralytics import YOLOE

data = dict(
    train=dict(
        yolo_data=["Objects365.yaml"],
        grounding_data=[
            dict(
                img_path="flickr/full_images/",
                json_file="flickr/annotations/final_flickr_separateGT_train_segm.json",
            ),
            dict(
                img_path="mixed_grounding/gqa/images",
                json_file="mixed_grounding/annotations/final_mixed_train_no_coco_segm.json",
            ),
        ],
    ),
    val=dict(yolo_data=["lvis.yaml"]),
)

model = YOLOE("yoloe-26l-seg.pt")
# replace to yoloe-26l-seg-det.pt if converted to detection model
# model = YOLOE("yoloe-26l-seg-det.pt")

# freeze layers.
head_index = len(model.model.model) - 1
freeze = [str(f) for f in range(0, head_index)]
for name, child in model.model.model[-1].named_children():
    if "cv3" not in name:
        freeze.append(f"{head_index}.{name}")

freeze.extend(
    [
        f"{head_index}.cv3.0.0",
        f"{head_index}.cv3.0.1",
        f"{head_index}.cv3.1.0",
        f"{head_index}.cv3.1.1",
        f"{head_index}.cv3.2.0",
        f"{head_index}.cv3.2.1",
    ]
)

model.train(
    data=data,
    batch=128,
    epochs=1,
    close_mosaic=1,
    optimizer="AdamW",
    lr0=2e-3,
    warmup_bias_lr=0.0,
    weight_decay=0.025,
    momentum=0.9,
    workers=4,
    trainer=YOLOEPEFreeTrainer,
    device="0,1,2,3,4,5,6,7",
    freeze=freeze,
    single_cls=True,  # this is needed
)

훈련 후 분할 모델로 다시 변환합니다. 훈련 전에 분할 모델을 감지 모델로 변환한 경우에만 필요합니다.

from copy import deepcopy

from ultralytics import YOLOE

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

pf_model = YOLOE("yoloe-26l-seg-pf.pt")
names = ["object"]
tpe = model.get_text_pe(names)
model.set_classes(names, tpe)
model.model.model[-1].fuse(model.model.pe)

model.model.model[-1].cv3[0][2] = deepcopy(pf_model.model.model[-1].cv3[0][2]).requires_grad_(True)
model.model.model[-1].cv3[1][2] = deepcopy(pf_model.model.model[-1].cv3[1][2]).requires_grad_(True)
model.model.model[-1].cv3[2][2] = deepcopy(pf_model.model.model[-1].cv3[2][2]).requires_grad_(True)
del model.model.pe
model.save("yoloe-26l-seg-pf.pt")

YOLOE 성능 비교

YOLOE는 COCO LVIS와 같은 표준 벤치마크에서 폐쇄형 YOLO 정확도를 따라잡거나 능가하면서도 속도나 모델 크기를 희생하지 않습니다. 아래 표는 YOLOE-L( YOLO11 기반)과 YOLOE26-L( YOLO26 기반)을 해당 폐쇄형 모델과 비교한 것입니다:

모델COCO mAP50-95LVISmAP50-95추론 속도 (T4)파라미터GFLOP (640px)
YOLOv8-L (폐쇄형)52.9%-9.06 ms (110 FPS)43.7 M165.2 B
YOLO11-L (폐쇄형)53.5%-6.2 밀리초 (161 FPS)26.2 M86.9 B
YOLOE-L (개방형 어휘)52.6%35.2%6.2 밀리초 (161 FPS)26.2 M86.9 B
YOLOE26-L (개방형 어휘)-36.8%6.2 밀리초 (161 FPS)32.3 M88.3B†

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

YOLOEGPU6-L은 3230만 개의 매개변수와 883억 FLOPs로 640×640 해상도 이미지를 6.2ms(161 FPS) 에 처리하며 36.8% LVIS mAP 달성합니다. 이는 동일한 추론 속도를 유지하면서 YOLOE-L의 35.2% LVIS mAP 개선한 결과입니다. 중요한 점은 YOLOE의 오픈 어휘 모듈이 추론 비용을 발생시키지 않아 "무상 점심은 없다"는 원칙을 구현한 설계임을 입증한다는 것입니다.

제로샷 작업에서 YOLOE26은 기존 오픈 어휘 검출기를 크게 능가합니다: LVIS에서 YOLOE26-S는 29.9% mAP 달성하여 YOLO +11.4 AP 높은 YOLO 보였으며, YOLOE26-L은 36.8% mAP YOLO +10.0 AP 높은 성능을 보였습니다. YOLOE26은 GPU 161 FPS의 효율적인 추론을 유지하여 실시간 오픈 어휘 애플리케이션에 이상적입니다.

참고

벤치마크 조건: YOLOE 결과는 Objects365, GoldG, LVIS에서 사전 훈련된 후 COCO에서 미세 조정되거나 평가된 모델에서 나온 것입니다. YOLOv8에 대한 YOLOE의 약간의 mAP 이점은 광범위한 사전 훈련에서 비롯됩니다. 이러한 개방형 어휘 훈련이 없으면 YOLOE는 유사한 크기의 YOLO 모델과 일치하며, 성능 저하 없이 SOTA 정확도와 개방형 세계(open-world) 유연성을 확인시켜 줍니다.

이전 모델과의 비교

YOLOE는 이전 YOLO 모델 및 개방형 어휘 감지기에 비해 주목할 만한 발전을 도입했습니다.

  • YOLOE 대 YOLOv5:YOLOv5는 우수한 속도-정확도 균형을 제공했지만, 새로운 클래스에 대한 재훈련이 필요했고 앵커 기반 헤드를 사용했습니다. 대조적으로, YOLOE는 앵커 프리이며 새로운 클래스를 동적으로 detect합니다. YOLOv8의 개선 사항을 기반으로 하는 YOLOE는 더 높은 정확도(COCO에서 YOLOv5의 약 50% mAP 대비 52.6%)를 달성하고, YOLOv5와 달리 인스턴스 segment를 통합합니다.

  • YOLOE 대 YOLOv8: YOLOE는 YOLOv8의 재설계된 아키텍처를 확장하여 유사하거나 우수한 정확도(약 2,600만 개의 파라미터로 52.6% mAP 대 YOLOv8-L의 약 4,400만 개의 파라미터로 52.9%)를 달성합니다. 더 강력한 사전 훈련 덕분에 훈련 시간을 크게 단축합니다. 핵심적인 발전은 YOLOE의 개방형 세계(open-world) 기능으로, YOLOv8의 폐쇄형 설계와 달리 프롬프트를 통해 보이지 않는 객체(예: "bird scooter" 또는 "peace symbol")를 detect합니다.

  • YOLOE 대 YOLO11:YOLO11은 향상된 효율성과 더 적은 파라미터(약 22% 감소)로 YOLOv8을 개선합니다. YOLOE는 이러한 이점을 직접 계승하여 YOLO11의 추론 속도와 파라미터 수(약 2,600만 개 파라미터)와 일치하며, 동시에 개방형 어휘 detect 및 segment 기능을 추가합니다. 폐쇄형 시나리오에서 YOLOE는 YOLO11과 동일하지만, 결정적으로 보이지 않는 클래스를 detect하는 적응성을 추가하여 속도 저하 없이 YOLO11 + 개방형 세계(open-world) 기능을 달성합니다.

  • YOLOE26 vs YOLOE (YOLO11): YOLOE26은 YOLO26의 아키텍처를 기반으로 구축되어, 더 빠른 추론을 위한 NMS 엔드투엔드 설계를 계승합니다. LVIS 데이터셋에서 YOLOE26-L은 36.8% mAP 달성하여 YOLOE-L의 35.2% mAP 상회합니다. YOLOE26은 YOLOE의 세 가지 모델 규모(S/M/L)와 달리 다섯 가지 규모(N/S/M/L/X)를 모두 제공하여 다양한 배포 시나리오에 대한 유연성을 높입니다.

  • YOLOE26 vs 기존 오픈 어휘 탐지기: 기존 오픈 어휘 모델(GLIP, OWL-ViT, YOLO) 비전-언어 트랜스포머에 크게 의존하여 추론 속도가 느렸습니다. LVIS에서 YOLOE26-S는 29.9% mAP ( YOLO 대비+11.4 AP )를 달성하고, YOLOE26-L은 36.8% mAP ( YOLO 대비+10.0 AP )를 달성하면서 GPU 161 FPS의 실시간 추론을 유지합니다. 트랜스포머 기반 접근법(예: GLIP)과 비교하여 YOLOE26은 훨씬 더 빠른 추론을 제공하여 오픈 세트 탐지에서 정확도와 효율성 간의 격차를 효과적으로 해소합니다.

요약하자면, YOLOE와 YOLOE26은 YOLO 유명한 속도와 효율성을 유지하면서 정확도 면에서 선행 모델을 능가하고, 분할 기능을 통합하며, 강력한 오픈 월드 감지 기능을 도입합니다. YOLOE26은 YOLO26의 NMS 종단 간 추론을 통해 아키텍처를 한 단계 발전시켜 실시간 오픈 어휘 애플리케이션에 이상적입니다.

사용 사례 및 응용 분야

YOLOE의 개방형 어휘 감지 및 분할 기능은 기존의 고정 클래스 모델을 넘어 다양한 애플리케이션을 가능하게 합니다.

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

  • 몇 샷 및 원샷 감지: 산업용 검사 (부품이나 결함을 즉시 식별) 또는 맞춤형 감시에 적합한 시각적 프롬프트(SAVPE)를 사용하여 YOLOE는 단일 참조 이미지에서 새로운 물체를 빠르게 학습하여 최소한의 설정으로 시각적 검색을 가능하게 합니다.

  • 대규모 어휘 및 롱테일 인식: 1000개 이상의 클래스로 구성된 어휘를 갖춘 YOLOE는 생물 다양성 모니터링 (희귀종 탐지), 박물관 컬렉션, 소매 재고 또는 전자상거래와 같은 작업에 탁월하여 클래스별 대규모 교육 없이도 많은 클래스를 안정적으로 식별할 수 있습니다.

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

  • 자동화된 데이터 라벨링 및 부트스트랩: YOLOE는 초기 바운딩 박스 및 세분화 주석을 제공함으로써 신속한 데이터 세트 생성을 용이하게 하여 사람의 라벨링 작업을 크게 줄여줍니다. 특히 대규모 미디어 컬렉션의 분석에 유용하며, 존재하는 개체를 자동으로 식별하여 전문화된 모델을 더 빠르게 구축할 수 있도록 지원합니다.

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

이러한 모든 사용 사례에서 YOLOE의 핵심 장점은 다재다능함으로, 동적 시나리오에서 감지, 인식 및 분할을 위한 통합 모델을 제공합니다. 효율성은 리소스가 제한된 장치에서 실시간 성능을 보장하므로 로봇 공학, 자율 주행, 국방 등에 이상적입니다.

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

  • 폐쇄형 세트 모드: 고정 클래스 작업용(최대 속도 및 정확도).
  • 프롬프트 모드: 텍스트 또는 시각적 프롬프트를 통해 새로운 객체를 빠르게 추가합니다.
  • 프롬프트 없는 개방형 세트 모드: 여러 범주에 걸친 일반적인 감지 (카탈로그 작성 및 검색에 이상적).

종종 프롬프트 없는 검색 후 타겟 프롬프트를 사용하는 것과 같이 모드를 결합하면 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). 결과에는 경계 상자, 마스크 및 레이블이 포함됩니다.

# Training YOLOE on custom dataset
yolo train model=yoloe-26s-seg.pt data=path/to/data.yaml epochs=50 imgsz=640

# Inference with text prompts
yolo predict model=yoloe-26s-seg.pt source="test_images/street.jpg" classes="person,bus"

CLI 프롬프트(classes) 가이드는 Python의 가이드와 유사하게 YOLOE를 안내합니다. set_classes현재 시각적 프롬프트(이미지 기반 쿼리)는 python API가 필요합니다.

기타 지원 작업

  • 유효성 검사: 정확도를 쉽게 평가 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 릴리스에서 사용할 수 있습니다. 원하는 모델을 다운로드하기만 하면 됩니다. .pt Ultralytics YOLO 클래스로 로드할 파일입니다.

  3. 하드웨어 요구 사항:

    • 추론: 권장 GPU (NVIDIA, VRAM ≥4-8GB). 작은 모델은 엣지 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")
      names = ["bowl", "apple"]
      model.set_classes(names, model.get_text_pe(names))
      results = model.predict("kitchen.jpg")
      results[0].save()
      
  6. 통합 팁:

    • 클래스 이름: 기본 YOLOE 출력은 LVIS 카테고리를 사용합니다. 다음을 사용하세요. set_classes() 자신의 레이블을 지정합니다.
    • 속도: YOLOE는 프롬프트를 사용하지 않는 한 오버헤드가 없습니다. 텍스트 프롬프트는 영향이 미미하고 시각적 프롬프트는 약간 더 큽니다.
    • 배치 추론: 직접 지원됩니다(model.predict([img1, img2])). 이미지별 프롬프트의 경우 이미지를 개별적으로 실행합니다.

Ultralytics 문서에서 더 많은 리소스를 제공합니다. YOLOE를 사용하면 친숙한 YOLO 생태계 내에서 강력한 개방형 세계 기능을 쉽게 탐색할 수 있습니다.

Pro Tip: YOLOE의 제로샷 정확도를 최대화하려면 처음부터 훈련하는 대신 제공된 체크포인트에서 미세 조정하십시오. 감지 정확도를 높이기 위해 일반적인 훈련 레이블(LVIS 범주 참조)에 맞춰 프롬프트 단어를 사용하십시오.

인용 및 감사의 말씀

YOLOE가 귀하의 연구 또는 프로젝트에 기여한 경우, 칭화대학교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 모두 개방형 어휘 detect를 가능하게 하지만, YOLOE는 몇 가지 장점을 제공합니다. YOLOE는 LVIS에서 YOLO-Worldv2보다 3배 적은 훈련 리소스를 사용하고 1.4배 더 빠르게 실행되면서 +3.5 AP 더 높은 정확도를 달성합니다. YOLOE는 또한 세 가지 프롬프트 모드(텍스트, 시각, 내부 어휘)를 지원하는 반면, YOLO-World는 주로 텍스트 프롬프트에 중점을 둡니다. 또한 YOLOE는 내장된 인스턴스 segment 기능을 포함하여 추가 오버헤드 없이 detect된 객체에 대한 픽셀 단위의 정확한 마스크를 제공합니다.

YOLOE를 일반적인 YOLO 모델처럼 사용할 수 있나요?

예, YOLOE는 성능 저하 없이 표준 YOLO 모델과 똑같이 작동할 수 있습니다. 폐쇄형 세트 모드(프롬프트 없음)에서 사용하면 YOLOE의 개방형 어휘 모듈이 표준 감지 헤드로 다시 매개변수화되어 동등한 YOLO11 모델과 동일한 속도와 정확도를 제공합니다. 따라서 YOLOE는 매우 다재다능합니다. 최대 속도를 위해 기존 감지기로 사용할 수 있으며 필요한 경우에만 개방형 어휘 모드로 전환할 수 있습니다.

YOLOE와 함께 어떤 유형의 프롬프트를 사용할 수 있나요?

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

  1. 텍스트 프롬프트: 자연어(예: "사람", "신호등", "전동 킥보드")를 사용하여 객체 클래스를 지정합니다.
  2. 시각적 프롬프트: detect하려는 객체의 참조 이미지를 제공합니다.
  3. 내부 어휘: 외부 프롬프트 없이 YOLOE의 1200개 이상의 카테고리 내장 어휘를 사용합니다.

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

YOLOE는 인스턴스 분할을 어떻게 처리하나요?

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

YOLOE는 사용자 정의 프롬프트로 추론을 어떻게 처리하나요?

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

from ultralytics import YOLO

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

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

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

# Show results
results[0].show()


5; 10 전에 생성됨 ✏️ 5 전에 업데이트됨
glenn-jocherRizwanMunawarY-T-GLaughing-qraimbekovmfcakyononuralpszrpderrengeronuralpszrShuaiLYUpicsalexwillie.maddox@gmail.comJShengPleonnil

댓글