콘텐츠로 건너뛰기

YOLOE: 무엇이든 실시간으로 보기

소개

욜로 프롬프트 옵션

YOLOE(Real-Time Seeing Anything )는 개방형 어휘 감지 및 세분화를 위해 설계된 제로샷, 프롬프트 가능한 YOLO 모델의 새로운 발전된 모델입니다. 고정된 카테고리에만 국한된 이전의 YOLO 모델과 달리, YOLOE는 텍스트, 이미지 또는 내부 어휘 프롬프트를 사용하여 모든 개체 클래스를 실시간으로 감지할 수 있습니다. YOLOv10을 기반으로 하고 YOLO 영감을 받아 구축된 YOLOE는 속도와 정확도에 미치는 영향을 최소화하면서 최첨단 제로 샷 성능을 달성합니다.

Ultralytics 통합 상태 🚧

YOLOE용 Ultralytics 통합은 현재 작업 중입니다 🔨. 이 문서에 표시된 사용 예제는 통합이 완료되면 작동합니다 ✅. 업데이트를 다시 확인하거나 🔄 GitHub 리포지토리 🚀를 팔로우하여 최신 개발 사항을 확인하세요.

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

아키텍처 개요

YOLOE 아키텍처

YOLOE는 특징 추출을 위한 컨볼루션 백본 (예: CSP-Darknet), 다중 규모 융합을 위한 (예: PAN-FPN), 객체성, 클래스, 박스를 독립적으로 예측하는 앵커 없는 분리형 감지 헤드 (YOLO11)라는 표준 YOLO 구조를 그대로 유지합니다. YOLOE는 개방형 어휘 감지를 가능하게 하는 세 가지 새로운 모듈을 도입했습니다:

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

  • 시맨틱 활성화 시각적 프롬프트 인코더(SAVPE): 경량 임베딩 브랜치를 통해 시각적 프롬프트 감지를 지원합니다. SAVPE는 참조 이미지가 주어지면 시맨틱 및 활성화 기능을 인코딩하여 시각적으로 유사한 물체를 감지하도록 모델을 조정하며, 이는 로고나 특정 부품에 유용한 원샷 감지 기능입니다.

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

또한 YOLOE는 탐지 헤드를 마스크 예측 브랜치(YOLACT 또는 YOLOv8 유사)로 확장하여 실시간 인스턴스 분할을 통합하여 오버헤드를 최소화합니다.

결정적으로, YOLOE의 오픈 월드 모듈은 일반 폐쇄형 YOLO 사용할 때 추론 비용이 들지 않습니다. 학습 후, YOLOE 파라미터를 표준 YOLO 헤드로 재파라미터화하여 동일한 FLOP과 속도를 유지할 수 있습니다(예: 일치하는 YOLO11 정확히 일치).

YOLOE 성능 비교

YOLOE는 속도나 모델 크기에 영향을 주지 않으면서도 COCO와 같은 표준 벤치마크에서 폐쇄형 YOLO 모델의 정확도와 일치하거나 이를 능가합니다. 아래 표는 YOLO11( YOLO11 기반으로 구축)과 해당 YOLOv8 및 YOLO11 모델과 비교한 표입니다:

모델 COCO mAP50-95 추론 속도(T4) 매개변수 GFLOPs (640px)
YOLOv8 (폐쇄형 세트) 52.9% 9.06ms (110 FPS) 43.7 M 165.2 B
YOLO11 (폐쇄형 세트) 53.5% 6.2ms (130 FPS) 26.2 M 86.9 B
YOLOE-L (개방형 어휘) 52.6% 6.2ms (130 FPS) 26.2 M 86.9 B†

YOLO11 YOLOE-L은 아키텍처가 동일하므로( YOLO11 프롬프트 모듈이 비활성화됨) 추론 속도와 추정되는 GFLOP이 동일합니다.

YOLOE-L은 약 40% 적은 매개변수 (26M 대 43.7M)로 52.6%의 mAP를 달성하여 YOLOv8(52.9%)을 능가합니다. 640×640 이미지를 6.2ms(161 FPS) 에 처리하는 반면, YOLOv8 9.06ms(110 FPS)로 YOLO11 효율성이 더욱 돋보입니다. 결정적으로, YOLOE의 개방형 어휘 모듈은 추론 비용이 발생하지 않아 '공짜 점심 트레이드오프 '가 없는 설계를 보여줍니다.

제로 샷 및 전송 작업의 경우 YOLOE가 탁월합니다. LVIS에서 YOLOE-small은 3배 적은 훈련 리소스를 사용하여 YOLO +3.5 AP를 향상시켰습니다. LVIS에서 COCO로 미세 조정할 때도 YOLOE-L은 YOLOv8 4배 적은 훈련 시간이 필요해 효율성과 적응성을 강조했습니다. 또한 YOLOE는 CoreML 통해 T4 GPU 300+ FPS, iPhone 12에서 최대 64 FPS를 달성하여 엣지 및 모바일 배포에 이상적인 YOLO 특징적인 속도를 유지합니다.

참고

벤치마크 조건: YOLOE 결과는 Objects365, GoldG, LVIS에서 사전 학습한 후 COCO에서 미세 조정하거나 평가한 모델에서 얻은 결과입니다. YOLOE가 YOLOv8 비해 약간의 mAP 우위를 보이는 것은 광범위한 사전 학습에서 비롯됩니다. 이러한 개방형 어휘 훈련 없이도 YOLOE는 비슷한 크기의 YOLO 모델과 일치하여 성능 저하 없이 SOTA 정확도와 오픈 월드 유연성을 확인했습니다.

이전 모델과의 비교

YOLOE는 이전 YOLO 모델과 개방형 어휘 탐지기에 비해 주목할 만한 발전을 이루었습니다:

  • YOLOE 대 YOLOv5:
    YOLOv5 는 속도와 정확도의 균형이 좋았지만 새로운 클래스에 대한 재교육이 필요하고 앵커 기반 헤드를 사용했습니다. 반면 YOLOE는 앵커가 없고 새로운 클래스를 동적으로 감지합니다. YOLOv8 개선 사항을 기반으로 하는 YOLOE는 더 높은 정확도(52.6% 대 YOLOv5~50% mAP on COCO)를 달성하고 YOLOv5 달리 인스턴스 세분화를 통합합니다.

  • YOLOE 대 YOLOv8:
    YOLOE 확장 YOLOv8의 재설계된 아키텍처를 확장하여 유사하거나 더 뛰어난 정확도를 달성합니다(52.6% mAP, 최대 2600만 개의 매개변수52.9%, 최대 4400만 개의 매개변수). 강력한 사전 훈련으로 훈련 시간이 크게 단축됩니다. 핵심적인 발전은 YOLOv8 오픈 월드 기능으로, 폐쇄형 설계인 YOLOv8 달리 프롬프트를 통해 보이지 않는 물체(예:'새 스쿠터' 또는'평화 상징')를 감지할 수 있다는 점입니다.

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

  • 이전 개방형 어휘 탐지기와 YOLOE 비교:
    이전의 개방형 어휘 모델(GLIP, OWL-ViT, YOLO)은 시각 언어 변환기에 크게 의존했기 때문에 추론 속도가 느렸습니다. YOLOE는 훨씬 적은 학습 리소스로 1.4배 더 빠르게 실행하면서 제로 샷 정확도(예: +3.5 AP vs. YOLO)에서 이를 능가합니다. 트랜스포머 기반 접근 방식(예: GLIP)과 비교했을 때, YOLOE는 훨씬 빠른 추론을 제공하여 오픈 세트 탐지의 정확도와 효율성 격차를 효과적으로 해소합니다.

요약하자면, YOLOE는 YOLO 유명한 속도와 효율성을 유지하고, 정확도 면에서 이전 제품을 능가하며, 세분화를 통합하고, 강력한 오픈 월드 감지 기능을 도입하여 독보적으로 다재다능하고 실용적입니다.

사용 사례 및 애플리케이션

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

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

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

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

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

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

  • 모든 물체를 위한 세분화:
    의료 영상, 현미경 또는 위성 이미지 분석에 특히 유용한 프롬프트를 통해 임의의 물체로 세분화 기능을 확장하여 사전 학습된 특수 모델 없이 구조를 자동으로 식별하고 정밀하게 세분화합니다. 다음과 같은 모델과 달리 SAM과 같은 모델과 달리 YOLOE는 물체를 자동으로 인식하고 세그먼트화하여 콘텐츠 제작이나 장면 이해와 같은 작업을 지원합니다.

이러한 모든 사용 사례에 걸쳐 YOLOE의 핵심 장점은 다목적성으로, 동적 시나리오 전반에 걸쳐 탐지, 인식 및 세분화를 위한 통합 모델을 제공합니다. 리소스가 제한된 디바이스에서 실시간 성능을 보장하는 효율성은 로봇 공학, 자율 주행, 방위 산업 등에 이상적입니다.

필요에 따라 YOLOE의 모드를 선택하세요:

  • 폐쇄 설정 모드: 고정 클래스 작업(최대 속도 및 정확도)에 적합합니다.
  • 프롬프트 모드: 텍스트 또는 시각적 프롬프트를 통해 새 개체를 빠르게 추가할 수 있습니다.
  • 프롬프트 없는 오픈 설정 모드: 여러 카테고리에 걸친 일반 검색(카탈로그 및 검색에 이상적).

종종 프롬프트 없는 검색과 타겟팅된 프롬프트 등의 모드를 결합하면 YOLOE의 잠재력을 최대한 활용할 수 있습니다.

교육 및 추론

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

Ultralytics 통합 상태 🚧

YOLOE용 Ultralytics 통합은 현재 개발 중입니다 🔨. 아래 예시는 통합이 완료되면 API가 어떻게 작동하는지 보여줍니다 ✅.

YOLOE를 사용한 교육 및 추론

from ultralytics import YOLO

# Load pre-trained YOLOE model and train on custom data
model = YOLO("yoloe-s.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-s.pt data=path/to/data.yaml epochs=50 imgsz=640

# Inference with text prompts
yolo predict model=yoloe-s.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-v8-S/L, YOLOE-11 변형)은 YOLOE GitHub 릴리스에서 사용할 수 있습니다. 원하는 모델을 다운로드하기만 하면 됩니다. .pt 파일을 Ultralytics YOLO 클래스에 로드합니다.

  3. 하드웨어 요구 사항:

    • 추론: 권장 GPU NVIDIA 4~8GB 이상의 VRAM을 갖춘NVIDIA ). 소형 모델은 저해상도의 에지 GPU(예: Jetson) 또는 CPU에서 효율적으로 실행됩니다.
    • 트레이닝: 사용자 지정 데이터에 대한 YOLOE 미세 조정에는 일반적으로 하나의 GPU 필요합니다. 저자들이 사용하는 광범위한 오픈 어휘 사전 훈련(LVIS/Objects365)에는 상당한 컴퓨팅(8× RTX 4090 GPU)이 필요했습니다.
  4. 구성: YOLOE 구성은 표준 Ultralytics YAML 파일을 사용합니다. 기본 구성(예:, yoloe-s.yaml)로 충분하지만 필요에 따라 백본, 클래스 또는 이미지 크기를 수정할 수 있습니다.

  5. YOLOE를 실행합니다:

    • 빠른 추론 (프롬프트 없음):
      yolo predict model=yoloe-s.pt source="image.jpg"
      
    • 프롬프트 감지 (텍스트 프롬프트 예시):

      yolo predict model=yoloe-s.pt source="kitchen.jpg" classes="bowl,apple"
      

      Python:

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

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

더 자세한 내용은 Ultralytics 설명서를 참조하세요. YOLOE를 사용하면 익숙한 YOLO 에코시스템 내에서 강력한 오픈 월드 기능을 쉽게 탐색할 수 있습니다.

프로 팁: 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},
}

더 자세한 내용을 보시려면 arXiv에서 YOLOE 논문 원본을 확인하실 수 있습니다. 프로젝트의 소스 코드와 추가 리소스는 GitHub 리포지토리를 통해 액세스할 수 있습니다.

자주 묻는 질문

욜로와 YOLO 어떻게 다른가요?

YOLOE와 YOLO 모두 개방형 어휘 감지가 가능하지만, YOLOE는 몇 가지 장점을 제공합니다. YOLOE는 LVIS에서 +3.5 AP 더 높은 정확도를 달성하면서도 YOLO 3배 적은 학습 리소스를 사용하고 1.4배 더 빠르게 실행됩니다. 또한 YOLOE는 텍스트, 시각, 내부 어휘의 세 가지 프롬프트 모드를 지원하는 반면, YOLO 주로 텍스트 프롬프트에 중점을 둡니다. 또한, YOLOE에는 인스턴스 분할 기능이 내장되어 있어 추가적인 오버헤드 없이 감지된 객체에 대해 픽셀 단위의 정밀한 마스크를 제공합니다.

YOLOE를 일반 YOLO 모델로 사용할 수 있나요?

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

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

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

  1. 텍스트 프롬프트: 자연어를 사용하여 개체 클래스 지정(예: "사람", "신호등", "새 스쿠터")
  2. 시각적 프롬프트: 감지하려는 객체의 참조 이미지 제공
  3. 내부 어휘: 외부 프롬프트 없이 1200개 이상의 카테고리로 구성된 YOLOE의 내장 어휘를 사용하세요.

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

YOLOE는 인스턴스 세분화를 어떻게 처리하나요?

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

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

YOLO 마찬가지로, 욜로는 오프라인 어휘를 활용하여 효율성을 높이는 '프롬프트 후 감지' 전략을 지원합니다. 캡션이나 특정 개체 카테고리와 같은 사용자 지정 프롬프트는 미리 인코딩되어 오프라인 어휘 임베딩으로 저장됩니다. 이 접근 방식은 재교육 없이도 감지 프로세스를 간소화합니다. 모델 내에서 이러한 프롬프트를 동적으로 설정하여 특정 탐지 작업에 맞게 조정할 수 있습니다:

from ultralytics import YOLO

# Initialize a YOLOE model
model = YOLO("yoloe-s.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()
📅 6일 전 생성됨 ✏️ 4 일 전 업데이트 됨

댓글