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

## 코드 예제

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`.

## 추론 속도

다음을 사용하여 측정한 지연 시간: [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` Serverless Hosted 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는 자체 하드웨어에서도 실행되며, 다음을 사용해 프로세스 내부에서 로드하거나 [`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" %}
Workflow에 YOLO-World 블록을 추가하고 탐지할 클래스를 설정하세요. 그런 다음 다음을 사용해 웹캠, 카메라 피드 또는 비디오 파일을 해당 Workflow로 스트리밍하세요: [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 %}
