> 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/florence-2.md).

# Florence 2

우리는 지원합니다 [Microsoft의 Florence 2](https://huggingface.co/microsoft/Florence-2-base), 멀티모달 비전-언어 모델인 이를 우리의 [서버리스 클라우드 API](https://docs.roboflow.com/deployment/roboflow-cloud/serverless-api). Florence 2는 캡셔닝, 객체 탐지, 분할 및 OCR을 작업 프롬프트(예: `<CAPTION>`, `<OD>`, `<OCR>`, `<REFERRING_EXPRESSION_SEGMENTATION>`).

## Florence 2 사전학습 별칭

별칭을 다음으로 사용하세요: `model_id` 요청에서 사용하면 런타임이 이를 해당 사전학습 가중치로 해석합니다.

<table data-search="false"><thead><tr><th>별칭</th></tr></thead><tbody><tr><td><code>florence-2-base</code></td></tr><tr><td><code>florence-2-large</code></td></tr></tbody></table>

## Florence 2 정확도

공식 모델 카드의 주요 제로샷 지표([base](https://huggingface.co/microsoft/Florence-2-base), [large](https://huggingface.co/microsoft/Florence-2-large)):

<table data-header-hidden data-search="false"><thead><tr><th></th><th></th><th></th></tr></thead><tbody><tr><td>벤치마크</td><td><code>florence-2-base</code></td><td><code>florence-2-large</code></td></tr><tr><td>COCO 캡션(CIDEr)</td><td>133.0</td><td>135.6</td></tr><tr><td>COCO 탐지(mAP)</td><td>34.7</td><td>37.5</td></tr><tr><td>RefCOCO(정확도)</td><td>53.9</td><td>56.3</td></tr></tbody></table>

## Florence 2 추론 속도

다음을 사용하여 측정한 지연 시간 [Roboflow Inference](https://docs.roboflow.com/deployment/self-hosted/self-hosted) 1x NVIDIA L4에서, 배치 크기 1로, 다음에서 그리디 디코딩을 사용해 정확히 128 토큰을 생성할 때 `<CAPTION>` 프롬프트. 지연 시간은 출력 길이에 비례하므로, 다른 길이를 추정하려면 tokens/sec를 사용하세요.

<table data-search="false"><thead><tr><th>별칭</th><th>지연 시간, 128개 토큰(ms)</th><th>토큰/초</th></tr></thead><tbody><tr><td><code>florence-2-base</code></td><td>652</td><td>198</td></tr><tr><td><code>florence-2-large</code></td><td>1120</td><td>115</td></tr></tbody></table>

## Florence 2 API

Florence 2는 공유된 `/infer/lmm` 엔드포인트를 통해 실행됩니다. HTTP 엔드포인트를 다음으로 직접 호출하세요: `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 %}

### 모델 실행

다음을 호출하세요: `/infer/lmm` 엔드포인트를 작업 프롬프트와 함께 사용하여 `curl`:

```bash
curl --location 'https://serverless.roboflow.com/infer/lmm' \
  --header 'Content-Type: application/json' \
  --header "Authorization: Bearer $ROBOFLOW_API_KEY" \
  --data '{
    "image": {"type": "url", "value": "https://media.roboflow.com/quickstart/dog.jpeg"},
    "model_id": "florence-2-base",
    "prompt": "<CAPTION>"
  }'
```

{% 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 %}

### 의존성을 설치하세요

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

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

{% endstep %}

{% step %}

### 모델 실행

작업 프롬프트로 LMM 추론 엔드포인트를 호출합니다:

```python
import os
import supervision as sv
from inference_sdk import InferenceHTTPClient, InferenceConfiguration

image = sv.load_image_from_url("https://media.roboflow.com/quickstart/dog.jpeg")

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

result = client.infer_lmm(
    inference_input=image,
    model_id="florence-2-base",
    prompt="<CAPTION>",
)

print(result["response"])  # {'<CAPTION>': '한 남자가 등에 개를 업고 있다.'}
```

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

{% 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 %}

다음으로 바꾸세요 `<CAPTION>` 지원되는 모든 작업 프롬프트로(예: `<DETAILED_CAPTION>`, `<OD>`, `<OCR>`, `<OPEN_VOCABULARY_DETECTION>`, `<REFERRING_EXPRESSION_SEGMENTATION>`)를 사용하여 캡셔닝, 탐지, OCR 및 분할 작업 간에 전환하세요.

자가 호스팅 배포 및 작업 프롬프트 전체 목록은 다음을 참조하세요: [추론 문서](https://docs.roboflow.com/deployment/self-hosted/self-hosted).

## Florence 2 작업 프롬프트

Florence 2는 프롬프트 토큰으로 작업을 전환합니다. 다음 중 하나를 다음으로 전달하세요: `프롬프트`:

| 작업        | 프롬프트                                                         |
| --------- | ------------------------------------------------------------ |
| 객체 탐지     | `<OD>`                                                       |
| 밀집 영역 캡셔닝 | `<DENSE_REGION_CAPTION>`                                     |
| 이미지 캡셔닝   | `<CAPTION>`, `<DETAILED_CAPTION>`, `<MORE_DETAILED_CAPTION>` |
| 영역 제안     | `<REGION_PROPOSAL>`                                          |
| 구문 그라운딩   | `<CAPTION_TO_PHRASE_GROUNDING>`                              |
| 지시 표현 분할  | `<REFERRING_EXPRESSION_SEGMENTATION>`                        |
| 영역을 분할로   | `<REGION_TO_SEGMENTATION>`                                   |
| 개방형 어휘 탐지 | `<OPEN_VOCABULARY_DETECTION>`                                |
| 영역을 설명으로  | `<REGION_TO_DESCRIPTION>`                                    |
| OCR       | `<OCR>`                                                      |
| 영역 포함 OCR | `<OCR_WITH_REGION>`                                          |

## 자가 호스팅 Inference로 Florence 2 실행

Florence 2는 다음을 사용하여 직접 로드할 수도 있습니다: [`inference`](https://docs.roboflow.com/deployment/self-hosted/self-hosted) 패키지

{% stepper %}
{% step %}

### 패키지를 설치하세요

```bash
pip install "inference[transformers]"
```

사용 `inference-gpu[transformers]` GPU 머신에서.
{% endstep %}

{% step %}

### 모델 실행

```python
from inference import get_model

model = get_model("florence-2-base", api_key="YOUR_API_KEY")

result = model.infer(
    "https://media.roboflow.com/inference/seawithdock.jpeg",
    prompt="<CAPTION>",
)

print(result[0].response)
```

다음으로 바꾸세요 `<CAPTION>` 위의 표에 있는 모든 작업 프롬프트에 대해.
{% endstep %}
{% endstepper %}

### Workflows의 실행 모드

다음에서 사용할 때 [Workflow](https://docs.roboflow.com/workflows), Florence 2는 두 가지 모드 중 하나로 실행됩니다:

* **로컬 실행**: 모델이 사용자의 Inference 서버에서 실행됩니다(GPU 권장).
* **원격 실행**: 모델은 원격 Inference 서버에서 HTTP를 통해 호출됩니다.
