> 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/roboflow/roboflow-ko/deploy/supported-models/clip.md).

# CLIP

OpenAI의 [CLIP](https://github.com/openai/CLIP) 이미지 및 텍스트 임베딩을 생성하고, 이를 간의 zero-shot 유사도 비교를 수행하는 모델로, 우리의 [Serverless Hosted API](/roboflow/roboflow-ko/deploy/serverless-hosted-api-v2.md). 우리는 세 개의 엔드포인트를 제공합니다:

* [`/clip/embed_image`](#post-clip-embed_image), 이미지에 대한 임베딩 벡터를 반환합니다
* [`/clip/embed_text`](#post-clip-embed_text), 문자열 또는 문자열 목록에 대한 임베딩 벡터를 반환합니다
* [`/clip/compare`](#post-clip-compare), subject와 prompt 목록 간의 유사도 점수를 반환합니다

임베딩은 캐시하여 분류, 검색, 클러스터링, 시맨틱 검색 같은 작업에 재사용할 수 있습니다. 더 자세한 사용 방법은 다음을 참조하세요. [Inference 문서](https://inference.roboflow.com/).

## 코드 샘플

아래는 이미지와 텍스트 레이블 목록을 비교하는 코드 샘플입니다. HTTP 엔드포인트를 직접 호출하려면 `curl`, 또는 다음을 사용하세요: [`inference-sdk`](https://inference.roboflow.com/inference_helpers/inference_sdk/) 래퍼를 사용하세요.

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

### API Key를 받으세요

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

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

{% endstep %}

{% step %}

### 모델을 실행하세요

다음에 호출하세요. `/clip/compare` 엔드포인트를 `curl`:

```bash
curl --location 'https://serverless.roboflow.com/clip/compare' \
  --header 'Content-Type: application/json' \
  --data '{
    "api_key": "'"$ROBOFLOW_API_KEY"'",
    "subject": {"type": "url", "value": "https://media.roboflow.com/notebooks/examples/dog.jpeg"},
    "subject_type": "image",
    "prompt": ["a photo of a dog", "a photo of a cat", "a photo of a car"],
    "prompt_type": "text"
  }'
```

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

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

### API Key를 받으세요

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

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

{% endstep %}

{% step %}

### 종속성을 설치하세요

이 패키지는 다음 모델을 호출합니다:

```bash
pip install inference-sdk
```

{% endstep %}

{% step %}

### 모델을 실행하세요

비교를 실행합니다(이미지는 [여기](https://media.roboflow.com/notebooks/examples/dog.jpeg)):

```python
import os
import cv2
import numpy as np
import requests
from inference_sdk import InferenceHTTPClient

content = requests.get("https://media.roboflow.com/notebooks/examples/dog.jpeg").content
image = cv2.imdecode(np.frombuffer(content, np.uint8), cv2.IMREAD_COLOR)

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

result = client.clip_compare(
    subject=image,
    prompt=[
        "a photo of a dog",
        "a photo of a cat",
        "a photo of a car",
    ],
    subject_type="image",
    prompt_type="text",
)

# similarity는 prompt마다 하나씩 있는 코사인 유사도 점수 목록입니다
print(result["similarity"])
```

위 코드는 추론 결과를 터미널에 출력합니다:

```
[0.2726989686489105, 0.19865083694458008, 0.20997387170791626]
```

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

## 추론 속도

다음 기준으로 측정한 지연 시간 [Roboflow Inference](https://inference.roboflow.com/) 1x NVIDIA L4에서, 배치 크기 1로, 워밍업 이후 평균값입니다.

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

다음을 사용해 측정됨 `embed_image` 에서 `ViT-B-16` 체크포인트(이미지 임베딩 전용).

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

* `https://serverless.roboflow.com` Serverless Hosted API용입니다.
* `http://localhost:9001` 로컬 [Inference](https://inference.roboflow.com/) 서버용입니다.
* 귀하의 [Dedicated Deployment](/roboflow/roboflow-ko/deploy/dedicated-deployments.md) 비공개 엔드포인트용 URL입니다.
  {% endhint %}
