> 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/workflows/build-a-workflow.md).

# Workflow を構築

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

利用可能な block の一覧について詳しくは、 [block documentation](https://inference.roboflow.com/workflows/blocks/).

### 概要

このガイドでは、オブジェクト検出モデルを実行し、予測数を数え、モデル結果を可視化する4つの block からなる workflow の作成方法を説明します。こちらが [完成版の workflow テンプレート](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>検出、カウント、可視化 Workflow</p></figcaption></figure>

### Block 接続

構築を始める前に、block の接続がどのように機能するかを理解しておくことが重要です。

ある位置に block を追加するには、前の block を入力として使用する必要があります。たとえば、上に示した workflow では、 *Property Definition* block は、次の *Object Detection* block の後に配置されます。これは、model block を入力として使用するためです。The *Bounding Box Visualization* block は右側に配置されます。これは、その *Property Definition* block の出力は使用しませんが、model の出力は参照するためです。

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

上の例の workflow では、ランタイム時に各ブランチが並列に実行され、他のブランチの block を入力として参照しないため、4つの異なる経路があります。

### Builder Assist

Builder Assist は、block を接続したり挿入したりするときに workflow editor がどの程度サポートするかを制御します。右上の navbar にあるトグルでモードを切り替えられます。

モードは3つあります:

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

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

### Blocks の配置

workflow editor が block の配置を行うこともできます。自動レイアウトボタン（editor toolbar の sitemap アイコン）をクリックすると、現在の block を整列し、表示範囲に収められます。

ボタン横の chevron をクリックすると、2つのオプションを含むメニューが開きます:

* 「Arrange now」: レイアウトを1回実行します。ボタンをクリックした場合と同じです。
* 「Arrange automatically」: 有効にすると、block を追加したり接続を変更したりするたびに editor が block を再配置します。block をドラッグするとこのモードは一時停止し、手動で配置したレイアウトが保持されます。

選択は workflow ごとにローカル保存されます。

### Workflow の作成

#### Object Detection Model

まず、 *Object Detection Model* block を追加します。選択できるのは、 [COCO](https://universe.roboflow.com/microsoft/coco)で学習された YOLOv8n のような公開済みの事前学習モデル、または workspace 内の fine-tuned モデルです。ここでは事前学習済みの *yolov8n* model を使って人物と車両を検出します。

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

object detection block には、モデルが何を推論するかを決める必須の image パラメータがあります。いくつかのオプションパラメータもあり、主なものを以下で詳しく説明します:

* Class Filter: モデルが返す class の一覧。注: モデルは常に学習済みの class のみを返します。これにより、不要な class を除外できます。
* Confidence: その confidence を下回る object は返されません。
* IoU threshold: threshold が高いほど、重なりの大きい prediction がより多く返されます。0.9 は重なりが90%以下の object が返されることを意味し、0.1 は重なりが10%を超える object は含まれないことを意味します。
* Max Detections: モデルが返す object の最大数
* Class Agnostic NMS: 重なりフィルタリングで、同じ class の object のみを比較・除外するか、すべての class を対象にするか

#### Property Definition

property definition block を使うと、画像サイズ、予測された class、検出された object の数など、データから関連情報を抽出できます。この例では、object detection model が見つけた object の数を数えます。

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

の *Data* プロパティでは、model の prediction を参照します。For the *Operations*には、Count Items を選択します。この設定により、object detection model による prediction 数が返されます。

#### Bounding Box Visualization

model 結果を可視化するために、bounding box visualization block を追加します。For the *image* パラメータでは input image を選択します。predictions では model results を選択します。オプションの configuration properties を使って、bounding box の色やサイズを変更することもできます。

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

#### Label Visualization

bounding box を描画するだけでなく、prediction の class 名も表示したいはずです。そのために、 *Label Visualization* block を bounding box visualization の後に追加します。同じ画像に bounding box とラベルの両方を描画するには、参照元の input image を *bounding\_box\_visualization* image に設定し、input image を参照しないようにします。これにより、ラベルが bounding box の上に描画されます。

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

オプションの *Text* パラメータを変更して、表示テキストを class 名、confidence、class 名と confidence のいずれかに切り替えられます。

### 変更の保存

「Save」をクリックして、変更を下書きとして保存します。Workflow editor は編集中に自動保存しません。

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

これで workflow が完成したので、テストする時間です。
