> For the complete documentation index, see [llms.txt](https://docs.roboflow.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.roboflow.com/models/ko/supported-models/yolo-world.md).

# YOLO-World

YOLO-World는 학습 없이 임의의 텍스트 클래스 이름으로부터 객체를 탐지하는 개방형 어휘 객체 탐지 모델입니다. 저희는 다음을 통해 YOLO-World 추론을 지원합니다: [서버리스 클라우드 API](https://docs.roboflow.com/deployment/roboflow-cloud/serverless-api).

YOLO-World 실행에 대한 자세한 내용은 다음을 참조하세요. [추론 문서](https://docs.roboflow.com/deployment/self-hosted/self-hosted).

## YOLO-World API

다음을 사용하여 HTTP 엔드포인트를 통해 YOLO-World를 직접 실행하세요 `curl`, 또는 다음과 함께 [`inference-sdk`](https://docs.roboflow.com/reference/inference/inference-sdk) 래퍼.

{% tabs %}
{% tab title="HTTP (curl)" icon="webhook" %}
{% stepper %}
{% step %}

### API 키 받기

Roboflow 계정을 만들고 다음에서 키를 찾으세요 [Roboflow API 설정 페이지](https://app.roboflow.com/settings/api) 그리고 셸에서 사용할 수 있도록 설정하세요:

```bash
export ROBOFLOW_API_KEY="your-key-here"
```

{% endstep %}

{% step %}

### 모델 실행

다음을 호출하세요 `/yolo_world/infer` 엔드포인트를 다음으로 사용: `curl`:

```bash
curl --location 'https://serverless.roboflow.com/yolo_world/infer' \
  --header 'Content-Type: application/json' \
  --data '{
    "api_key": "'"$ROBOFLOW_API_KEY"'",
    "image": {"type": "url", "value": "https://media.roboflow.com/quickstart/traffic.jpg"},
    "text": ["car", "truck"],
    "yolo_world_version_id": "v2-s",
    "confidence": 0.05
  }'
```

{% endstep %}
{% endstepper %}
{% endtab %}

{% tab title="SDK (Python)" icon="python" %}
{% stepper %}
{% step %}

### API 키 받기

Roboflow 계정을 만들고 다음에서 키를 찾으세요 [Roboflow API 설정 페이지](https://app.roboflow.com/settings/api) 그리고 셸에서 사용할 수 있도록 설정하세요:

```bash
export ROBOFLOW_API_KEY="your-key-here"
```

{% endstep %}

{% step %}

### 종속성 설치

SDK를 설치하고 [supervision](https://supervision.roboflow.com/):

```bash
pip install -U inference-sdk supervision
```

{% endstep %}

{% step %}

### 모델 실행

사용자 지정 클래스 이름으로 YOLO-World를 실행한 다음, supervision으로 예측을 디코딩하고 시각화합니다.

```python
import os
import cv2
import supervision as sv
from inference_sdk import InferenceHTTPClient

image = sv.load_image_from_url("https://media.roboflow.com/quickstart/traffic.jpg")

client = InferenceHTTPClient(
    api_url="https://serverless.roboflow.com",
    api_key=os.environ["ROBOFLOW_API_KEY"],
)

results = client.infer_from_yolo_world(
    inference_input=image,
    class_names=["car", "truck"],
    model_version="v2-s",
    confidence=0.05,
)

detections = sv.Detections.from_inference(results[0])

labels = [
    f"{name} {conf:.2f}"
    for name, conf in zip(detections.data["class_name"], detections.confidence)
]
annotated = sv.BoxAnnotator().annotate(image.copy(), detections)
annotated = sv.LabelAnnotator().annotate(annotated, detections, labels=labels)
cv2.imwrite("annotated.png", annotated)
```

<figure><img src="/files/d709c21fea94910ccc7477dbd37f7d3439a20e5f" alt=""><figcaption></figcaption></figure>
{% endstep %}
{% endstepper %}
{% endtab %}
{% endtabs %}

그 `class_names` 인수는 클래스 이름의 임의의 목록을 허용합니다. 사용 가능한 `model_version` 값: `v2-s`, `v2-m`, `v2-l`, `v2-x`, `s`, `m`, `l`, `x`.

## YOLO-World 추론 속도

지연 시간 측정 기준: [Roboflow Inference](https://docs.roboflow.com/deployment/self-hosted/self-hosted) 1x NVIDIA L4에서, 배치 크기 1, 워밍업 후 평균.

<table data-search="false"><thead><tr><th>모델</th><th>지연 시간(ms)</th></tr></thead><tbody><tr><td><code>yolo-world</code></td><td>12.4</td></tr></tbody></table>

다음에서 측정됨: `v2-s` 두 개의 클래스를 가진 변형에서 측정되었습니다. 클래스 목록을 설정하면 텍스트 인코더가 한 번 실행되며, 프레임마다 반복되지 않으므로 이 수치에서는 제외되었습니다.

{% hint style="info" %}
설정하세요 `api_url` 배포 대상에 맞게:

* `https://serverless.roboflow.com` 서버리스 클라우드 API용.
* `http://localhost:9001` 로컬 [Inference](https://docs.roboflow.com/deployment/self-hosted/self-hosted) 서버.
* 귀하의 [전용 배포](https://docs.roboflow.com/deployment/roboflow-cloud/dedicated-deployments) 비공개 엔드포인트용 URL.
  {% endhint %}

## 자체 호스팅 Inference로 YOLO-World 실행

YOLO-World는 자체 하드웨어에서도 실행할 수 있으며, 다음을 사용해 프로세스 내부에 로드하거나 [`inference`](https://docs.roboflow.com/deployment/self-hosted/self-hosted) 패키지를 사용하거나 로컬 Inference 서버에서 제공할 수 있습니다. 충분한 성능의 하드웨어(예: V100 GPU)에서는 실시간으로 실행되므로 비디오에 실용적인 선택입니다.

{% tabs %}
{% tab title="Inference(네이티브)" icon="server" %}

```bash
pip install "inference[yolo-world]" supervision
```

```python
import cv2
import supervision as sv

from inference.models.yolo_world.yolo_world import YOLOWorld

image = cv2.imread("image.jpeg")

model = YOLOWorld(model_id="yolo_world/l")
classes = ["person", "backpack", "dog"]
results = model.infer("image.jpeg", text=classes, confidence=0.03)[0]

detections = sv.Detections.from_inference(results)
labels = [classes[class_id] for class_id in detections.class_id]

annotated = sv.BoxAnnotator().annotate(scene=image, detections=detections)
annotated = sv.LabelAnnotator().annotate(
    scene=annotated, detections=detections, labels=labels
)
sv.plot_image(annotated)
```

{% endtab %}

{% tab title="로컬 Inference 서버" icon="docker" %}

```bash
pip install inference inference-sdk
inference server start  # http://localhost:9001을 제공합니다
```

```python
import os
from inference_sdk import InferenceHTTPClient

client = InferenceHTTPClient(
    api_url="http://127.0.0.1:9001",
    api_key=os.environ["ROBOFLOW_API_KEY"],
)

results = client.infer_from_yolo_world(
    inference_input=["https://media.roboflow.com/dog.jpeg"],
    class_names=["person", "backpack", "dog"],
    model_version="l",
    confidence=0.1,
)[0]
```

{% endtab %}

{% tab title="비디오" icon="video" %}
YOLO-World 블록을 워크플로우에 추가하고 탐지할 클래스를 설정하세요. 그런 다음 다음을 사용하여 웹캠, 카메라 피드 또는 비디오 파일을 해당 워크플로우로 스트리밍하세요 [Inference SDK WebRTC 클라이언트](https://docs.roboflow.com/workflows/deploy/video-processing).
{% endtab %}
{% endtabs %}

네이티브 패키지에서 YOLO-World 체크포인트는 다음과 같이 식별됩니다 `yolo_world/<version>`, 여기서 `<version>` 다음 중 하나입니다 `s`, `m`, `l`, `x`, `v2-s`, `v2-m`, `v2-l`, `v2-x`. 또한 `v2-` 체크포인트는 더 최신이며 평가 지표에서 더 높은 점수를 받습니다.

{% hint style="info" %}
대부분의 제로샷 탐지기와 마찬가지로, YOLO-World는 일반적인 객체(자동차, 사람, 개)에 가장 강하고 세부적이고 좁은 범주의 객체에는 약합니다. 장면에 맞는 결과를 찾기 위해 프롬프트 표현을 실험해 보세요.
{% endhint %}
