> 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-jp/guides/run-a-model-locally.md).

# ローカルでモデルを実行

[Roboflow Inference](https://inference.roboflow.com/) は、Roboflowのホスト済みモデルを支える無料のオープンソースエンジンです。同じモデルを自分のコンピューターで実行できます。DockerコンテナでInference Serverを起動し、その後HTTPまたはPythonで画像を送信します [Inference SDK](https://inference.roboflow.com/inference_helpers/inference_sdk/)。自分で実行すれば、画像は自分のマシンに保持され、セットアップを完全に制御できます。

## 自分のマシンでモデルを実行する

{% tabs %}
{% tab title="HTTP（Python）" icon="webhook" %}
{% stepper %}
{% step %}

### Inference Serverを起動する

`inference server start` は、 [Inference Server](https://inference.roboflow.com/quickstart/docker/) をDockerコンテナ内で起動し、ハードウェアに適したバージョン（CPU、NVIDIA GPU、またはJetson）を選択します。 [Docker](https://docs.docker.com/get-docker/) がインストールされ、実行されている必要があります。

```bash
pip install inference-cli && inference server start
```

サーバーは `http://localhost:9001`で待ち受けます。デバイス固有のセットアップとトラブルシューティングについては、 [Inference install guide](https://inference.roboflow.com/install/).
{% endstep %}

{% step %}

### 依存関係をインストールする

`supervision` で結果を描画し、 `cv2` と `numpy`:

```bash
pip install supervision
```

{% endstep %}

{% step %}

### モデルを実行する

画像をローカルサーバーに送信し、すぐ使える [RF-DETR](/roboflow/roboflow-jp/depuroi/supported-models/rf-detr.md) モデルを実行します。このようなすぐ使えるモデルにはAPIキーは不要です：

```python
import base64
import cv2
import numpy as np
import requests
import supervision as sv

content = requests.get("https://media.roboflow.com/quickstart/cars.jpg").content
image = cv2.imdecode(np.frombuffer(content, np.uint8), cv2.IMREAD_COLOR)
image_b64 = base64.b64encode(content).decode("utf-8")

result = requests.post(
    "http://localhost:9001/coco/38",  # coco/38 == rfdetr-nano
    data=image_b64,  # 本文に生のbase64
    headers={"Content-Type": "application/x-www-form-urlencoded"},
).json()
detections = sv.Detections.from_inference(result)
print(f"{len(detections)}個のオブジェクトを検出しました")

annotated = sv.BoxAnnotator().annotate(image.copy(), detections)
annotated = sv.LabelAnnotator().annotate(annotated, detections)
cv2.imwrite("output.jpg", annotated)
```

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

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

### Inference Serverを起動する

`inference server start` は、 [Inference Server](https://inference.roboflow.com/quickstart/docker/) をDockerコンテナ内で起動し、ハードウェアに適したバージョン（CPU、NVIDIA GPU、またはJetson）を選択します。 [Docker](https://docs.docker.com/get-docker/) がインストールされ、実行されている必要があります。

```bash
pip install inference-cli && inference server start
```

サーバーは `http://localhost:9001`で待ち受けます。デバイス固有のセットアップとトラブルシューティングについては、 [Inference install guide](https://inference.roboflow.com/install/).
{% endstep %}

{% step %}

### SDKをインストールする

`supervision` で結果を描画し、 `cv2` と `numpy`:

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

{% endstep %}

{% step %}

### モデルを実行する

クライアントをローカルサーバーに向けて、すぐ使える [RF-DETR](/roboflow/roboflow-jp/depuroi/supported-models/rf-detr.md) モデルを実行します。このようなすぐ使えるモデルにはAPIキーは不要です：

```python
import cv2
import numpy as np
import requests
import supervision as sv
from inference_sdk import InferenceHTTPClient

content = requests.get("https://media.roboflow.com/quickstart/cars.jpg").content
image = cv2.imdecode(np.frombuffer(content, np.uint8), cv2.IMREAD_COLOR)

client = InferenceHTTPClient(api_url="http://localhost:9001")
result = client.infer(image, model_id="rfdetr-nano")

detections = sv.Detections.from_inference(result)
print(f"{len(detections)}個のオブジェクトを検出しました")

annotated = sv.BoxAnnotator().annotate(image.copy(), detections)
annotated = sv.LabelAnnotator().annotate(annotated, detections)
cv2.imwrite("output.jpg", annotated)
```

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

最初のリクエストでモデルがダウンロードされるため、数秒かかることがあります。その後のリクエストは高速です。

<figure><img src="/files/87d5f7a792dfb01b34a370b864b3d0320d227b99" alt="RF-DETR car and truck bounding boxes on a road scene"><figcaption><p>ローカルInference ServerによるRF-DETRの検出結果</p></figcaption></figure>

## 動画を処理する

動画でモデルを実行するには、動画をサーバーに送信し、再生しながら、ボックスがすでに描画された各フレームを受け取ります。コンピューターの処理が追いつかない場合、サーバーはリアルタイムを維持するためにフレームをスキップします。これはPython SDKと [Workflow](/roboflow/roboflow-jp/workflows/what-is-workflows.md)：モデルを実行し、結果を描画してくれる保存済みの設定です。

{% hint style="info" %}
また、上の画像例と同じようにフレームを1枚ずつ送信することで、HTTP経由で動画上でモデルを実行することもできます（ストリーミング用アドオンは不要です）。これは遅くなります。各フレームを送信し、処理し、描画してから次のフレームを開始する必要があるため、その間にかなり待ち時間があります。SDKは動画全体をストリーミングし、複数フレームを同時に処理するので、はるかに追随しやすくなります。
{% endhint %}

{% stepper %}
{% step %}

### SDKをインストールする

動画のストリーミングには `webrtc` アドオンが必要です：

```bash
pip install "inference-sdk[webrtc]"
```

{% endstep %}

{% step %}

### 動画でモデルを実行する

```python
import cv2
from inference_sdk import InferenceHTTPClient
from inference_sdk.webrtc import VideoFileSource
import supervision as sv

client = InferenceHTTPClient.init(api_url="http://localhost:9001")

# 動画をダウンロードしてキャッシュ
source = VideoFileSource("https://media.roboflow.com/quickstart/cars.mp4")
# 最適化された動画ストリーミングのためにwebrtcを使用
session = client.webrtc.stream(
    source=source,
    model_id="rfdetr-nano"
)

# on_frameはメインスレッドで実行されるため、cv2.imshowを安全に使えます
@session.on_frame
def show(frame, data):
    det = sv.Detections.from_inference(data)
    img = sv.BoxAnnotator().annotate(frame, det)
    img = sv.LabelAnnotator().annotate(img, det)
    cv2.imshow("RF-DETR", img)
    if cv2.waitKey(1) == ord("q"):
        session.close()

session.run()
cv2.destroyAllWindows()
```

{% endstep %}
{% endstepper %}

{% embed url="<https://media.roboflow.com/quickstart/cars-rfdetr-out.mp4>" %}

より豊かなパイプライン（追跡、フィルタリング、ゾーン、通知）を視覚的に [Workflows editor](/roboflow/roboflow-jp/workflows/create-a-workflow.md)で構築し、同じ方法で実行できます。エッジおよび動画ストリームのデプロイについては、 [Deploy a Workflow](/roboflow/roboflow-jp/workflows/deploy-a-workflow.md).

## その他のオプション

* ハードウェアを実行せずに管理されたエンドポイントをお望みですか？ [Dedicated Deployment](/roboflow/roboflow-jp/depuroi/dedicated-deployments.md) または [Serverless Hosted API](/roboflow/roboflow-jp/depuroi/serverless-hosted-api-v2.md).
* オンプレミス、エアギャップ、またはKubernetesへのデプロイが必要ですか？ [Enterprise Deployment](/roboflow/roboflow-jp/depuroi/enterprise-deployment.md).
* すべてのオプションを [Deploy a Model or Workflow](/roboflow/roboflow-jp/depuroi/deployment-overview.md).
