> 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/get-started/ja/gaido/run-a-model-locally.md).

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

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

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

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

### 推論サーバーを起動する

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

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

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

{% step %}

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

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

```bash
pip install supervision
```

{% endstep %}

{% step %}

### モデルを実行する

画像をローカルサーバーに送信し、既製の [RF-DETR](https://docs.roboflow.com/models/supported-models/rf-detr) モデルを実行します。このような既製モデルでは 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 start` は [Inference Server](https://docs.roboflow.com/deployment/self-hosted/inference-server) を Docker コンテナ内で起動し、ハードウェアに適したバージョン（CPU、NVIDIA GPU、または Jetson）を選択します。 [Docker](https://docs.docker.com/get-docker/) がインストールされ、起動している必要があります。

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

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

{% step %}

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

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

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

{% endstep %}

{% step %}

### モデルを実行する

クライアントをローカルサーバーに向けて、既製の [RF-DETR](https://docs.roboflow.com/models/supported-models/rf-detr) モデルを実行します。このような既製モデルでは 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/ee26f72ab8c844e54088ba8ca132ace7b570fd5c" alt="RF-DETR car and truck bounding boxes on a road scene"><figcaption><p>ローカル推論サーバーからの RF-DETR の検出結果</p></figcaption></figure>

## 動画を処理する

動画でモデルを実行するには、サーバーと WebRTC セッションを開き、動画の再生中に処理済みフレームと予測結果を受け取ります。お使いのコンピュータが追いつかない場合、リアルタイムを維持するためにサーバーはフレームをスキップします。同じ SDK で 1 つのモデルをストリーミングすることも、 [Workflow](https://docs.roboflow.com/workflows).

{% 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 エディタ](https://docs.roboflow.com/workflows/build/create-a-workflow)で視覚的に構築し、同じ WebRTC クライアントで実行できます。参照 [Workflows による動画処理](https://docs.roboflow.com/workflows/deploy/video-processing).

## その他のオプション

* ハードウェアを運用せずにマネージドエンドポイントを使いたいですか？ [Dedicated Deployment](https://docs.roboflow.com/deployment/roboflow-cloud/dedicated-deployments) または [Serverless Hosted API](https://docs.roboflow.com/deployment/roboflow-cloud/serverless-api).
* オンプレミス、エアギャップ環境、または Kubernetes へのデプロイが必要ですか？ 参照 [Enterprise Deployment](https://docs.roboflow.com/deployment/self-hosted/enterprise).
* すべての विकल्पを比較する [モデルまたはワークフローをデプロイする](https://docs.roboflow.com/deployment).
