# Workflow を構築

ワークフローはブロックで構成されており、モデル推論の実行、ロジックの実行、外部サービスとの連携など、特定のタスクを実行します。

利用可能なブロック一覧についてさらに詳しく知りたい場合は、こちらの [block documentation](https://inference.roboflow.com/workflows/blocks/).

### 概要

このガイドでは、物体検出モデルを実行し、予測結果をカウントし、モデル結果を可視化する4ブロックのワークフローを作成する方法を説明します。こちらが [最終ワークフローテンプレート](https://app.roboflow.com/workflows/embed/eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ3b3JrZmxvd0lkIjoiMmdqakJxMDV3Q01ac1hHM3hkeFAiLCJ3b3Jrc3BhY2VJZCI6ImtyT1RBYm5jRmhvUU1DZExPbGU0IiwidXNlcklkIjoiSW1GTElaU2tHYk55OXpiNFV1cWxNelBScHBRMiIsImlhdCI6MTczODE4ODk5MH0.f72WI5bdjtnwC8iqXF_XiUVarfOktIAH1egpsI0Oh4Q) です。

{% embed url="<https://app.roboflow.com/workflows/embed/eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ3b3JrZmxvd0lkIjoiMmdqakJxMDV3Q01ac1hHM3hkeFAiLCJ3b3Jrc3BhY2VJZCI6ImtyT1RBYm5jRmhvUU1DZExPbGU0IiwidXNlcklkIjoiSW1GTElaU2tHYk55OXpiNFV1cWxNelBScHBRMiIsImlhdCI6MTczODE4ODk5MH0.f72WI5bdjtnwC8iqXF_XiUVarfOktIAH1egpsI0Oh4Q>" fullWidth="false" %}

<figure><img src="/files/35eea4fcd1c513f9324d86f1c1a5f03975149405" alt="" width="563"><figcaption><p>Detect, Count, and Visualize Workflow</p></figcaption></figure>

### Block Connections

作成を始める前に、ブロック接続の仕組みを理解しておくことが重要です。

ある位置にブロックを追加するには、前のブロックを入力として使用する必要があります。たとえば、上に示したワークフローでは、 *Property Definition* ブロックは *Object Detection* ブロックの後に配置されます。これは、モデルブロックを入力として使用するためです。 *Bounding Box Visualization* ブロックは右側にあります。これは *Property Definition* ブロックの出力は使用しませんが、モデル出力を参照するためです。

<figure><img src="/files/748d251b11c4c481b195ce2c0fa23e98f3e332e5" alt=""><figcaption><p>Model Comparison Workflow</p></figcaption></figure>

上の例のワークフローでは、4つの異なる経路があります。各ブランチは実行時に並列で実行され、他のブランチのブロックを入力として利用しないためです。

### Builder Assist

Builder Assist は、ブロックの接続や挿入時にワークフローエディタがどの程度 सहायताするかを制御します。右上のナビバーにあるトグルでモードを切り替えられます。

モードは3つあります:

* **Auto** （デフォルト）: ブロックを接続または挿入すると、互換性のある入力フィールドと出力フィールドを自動的に配線します。ブロックを削除したり切断したりすると、ビルダーは下流の参照も修復します。
* **Quick**: 推奨される接続とブロックの候補を表示しますが、実際に適用されるのは明示的に承認した場合のみです。自分の代わりにビルダーに変更させず、ガイダンスだけ欲しい場合に便利です。
* **Manual**: 提案も自動配線もありません。すべての接続を自分で管理します。

選択したモードはローカルに保存されるため、セッションをまたいでも保持されます。

### ワークフローの作成

#### Object Detection Model

最初に、 *Object Detection Model* blockを追加します。COCOで学習されたYOLOv8nのような公開済みの事前学習モデルか、ワークスペース内のファインチューニング済みモデルを選べます。ここでは、人物と車両を検出するために事前学習済みの [COCO](https://universe.roboflow.com/microsoft/coco)の *yolov8n* モデルを使います。

<figure><img src="/files/174343d9d284c6b6eeb6d17e61d3b7a4ca7129ab" alt="" width="344"><figcaption></figcaption></figure>

object detectionブロックには、モデルが何を対象に推論するかを決める必須の画像パラメータがあります。ほかにもいくつかの任意パラメータがありますが、主要なものを以下で詳しく説明します。

* Class Filter: モデルが返すクラスの一覧。注意: モデルは常に学習済みのクラスのみを返します。これにより、不要なクラスを除外できます。
* Confidence: その信頼度未満のオブジェクトは返されません。
* IoU threshold: 閾値を高くすると、重なりの大きい予測がより多く返されます。0.9 は、90%以下の重なりを持つオブジェクトが返されることを意味し、0.1 は10%を超える重なりを持つオブジェクトが含まれないことを意味します。
* Max Detections: モデルが返すオブジェクトの最大数
* Class Agnostic NMS: 重なりフィルタリングで、同じクラスのみを比較・除外するか、すべてのクラスを対象にするか

#### Property Definition

property definitionブロックを使うと、画像サイズ、予測クラス、検出されたオブジェクト数など、データから関連情報を抽出できます。この例では、object detectionモデルで見つかったオブジェクト数をカウントします。

<figure><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXc507UbRnkEH6XMdrfmwVZbHcK6x6K5THwnt1RmEk8iXSojwvmiA_q6KwRXV9bJudYnW7NMTQKKb9GqGxm_P0VjbuOoGWcDsM5NoQckl9jV4YcjYQFIvYoCgvd_YnQTNJLlwdbZwA?key=yGJPQzp1abf4J7pT0mnBw8w4" alt="" width="375"><figcaption></figcaption></figure>

の *Data* property には、モデル予測を参照します。 *Operations*では、Count Items を選択します。この設定により、object detectionモデルによる予測数が返されます。

#### Bounding Box Visualization

モデル結果を可視化するために、bounding box visualizationブロックを追加します。 *image* パラメータでは、入力画像を選択します。予測にはモデル結果を選択します。任意の設定プロパティを使って、bounding boxの色やサイズを変更することもできます。

<figure><img src="/files/cc57ad62cb2fa829a7abf622f8a5ca5138e50473" alt="" width="342"><figcaption></figcaption></figure>

#### Label Visualization

bounding boxの描画に加えて、予測のクラス名も表示したい場合があります。これを行うには、bounding box visualizationの後に *Label Visualization* blockを追加します。同じ画像上にbounding boxとラベルの両方を描画するには、参照入力画像を *bounding\_box\_visualization* imageとして設定し、入力画像を参照しないようにします。これにより、ラベルがbounding boxの上に描画されます。

<figure><img src="/files/e7cb5c6eea7ab71ad5708a07e4494ef2cd307191" alt="" width="343"><figcaption></figcaption></figure>

任意の *Text* パラメータを変更すると、表示テキストをクラス名、信頼度、クラス名と信頼度のいずれかに変更できます。

### 変更の保存

Workflowエディタは、変更内容をドラフトとして自動保存します。編集時に手動で保存する必要はありません。

変更を公開するには、Workflowを公開します。Workflowをデプロイしている場合、公開版はWorkflowがデプロイされているすべてのデバイスで実行され始めます。

これでワークフローが完成したので、次はテストしてみましょう。


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.roboflow.com/roboflow/roboflow-jp/workflows/build-a-workflow.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
