# Workflow を構築

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

利用可能なブロックの一覧を詳しく見るには、当社の [ブロックドキュメント](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="https://3740591140-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-M6S9nPJhEX9FYH6clfW%2Fuploads%2Fgit-blob-3320b2627ac743a17afb97f63c70993b4cbe3b51%2FCleanShot%202025-01-29%20at%2015.25.03%402x.png?alt=media" alt="" width="563"><figcaption><p>検出・カウント・視覚化ワークフロー</p></figcaption></figure>

### ブロック接続

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

ある場所にブロックを追加するには、そのブロックが前のブロックを入力として使用している必要があります。たとえば、上のワークフローでは、 *プロパティ定義* ブロックは *オブジェクト検出* ブロックの後に配置されています。これはプロパティ定義ブロックがモデルブロックを入力として使用しているためです。 *バウンディングボックス視覚化* ブロックは右側にあり、これは *プロパティ定義* ブロックの出力を使用していないためですが、モデル出力を参照しています。

<figure><img src="https://3740591140-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-M6S9nPJhEX9FYH6clfW%2Fuploads%2Fgit-blob-79fa8c10219b4a7e8e0696acceae5e297f05f70f%2FCleanShot%202025-01-29%20at%2016.31.28%402x.png?alt=media" alt=""><figcaption><p>モデル比較ワークフロー</p></figcaption></figure>

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

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

#### 物体検出モデル

まず、 *物体検出モデル* ブロックを追加します。公開された事前学習モデル（例：YOLOv8n が [COCO](https://universe.roboflow.com/microsoft/coco)で学習されたもの）や、ワークスペース内のファインチューンしたモデルを選択できます。ここでは事前学習済みの *yolov8n* モデルを使用して人と車両を検出します。

<figure><img src="https://3740591140-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-M6S9nPJhEX9FYH6clfW%2Fuploads%2Fgit-blob-bc18512f57a057976473b7d03cc7ee3a884e67e3%2FCleanShot%202025-01-29%20at%2015.30.31%402x.png?alt=media" alt="" width="344"><figcaption></figcaption></figure>

物体検出ブロックには、モデルが推論する対象を決定する必須の image パラメータがあります。いくつかのオプションパラメータがあり、主要なものは以下で詳しく説明します：

* クラスフィルター: モデルが返すクラスのリスト。注：モデルは常に学習されているクラスのみを返すため、不要なクラスを除外するためにフィルタリングできます。
* 信頼度（Confidence）: その信頼度未満のオブジェクトは返されません。
* IoU閾値: 閾値が高いほど重なりの多い予測を返します。0.9 は90%以下の重なりのオブジェクトを返すことを意味し、0.1 は10%より多く重なっているオブジェクトを含めないことを意味します。
* 最大検出数（Max Detections）: モデルが返すオブジェクトの最大数
* クラス非依存NMS（Class Agnostic NMS）: 重なりフィルタリングが同じクラス同士のみを比較して除外するか、すべてのクラスを比較して除外するか

#### プロパティ定義

プロパティ定義ブロックでは、画像サイズ、予測されたクラス、検出されたオブジェクト数など、データから関連情報を抽出できます。この例では、物体検出モデルが見つけたオブジェクトの数をカウントします。

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

の *データ* プロパティには、モデル予測を参照します。の *操作*では、Count Items を選択します。この設定により物体検出モデルが行った予測の数が返されます。

#### バウンディングボックス視覚化

バウンディングボックス視覚化ブロックを追加してモデル結果を視覚化します。の *image* パラメータには入力画像を選択します。予測にはモデル結果を選択します。オプションの設定プロパティを使用して、バウンディングボックスの色やサイズを変更することもできます。

<figure><img src="https://3740591140-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-M6S9nPJhEX9FYH6clfW%2Fuploads%2Fgit-blob-c02309fdf720d80b86c1de59ed126c7b7d9a2f9d%2FCleanShot%202025-01-29%20at%2015.31.50%402x.png?alt=media" alt="" width="342"><figcaption></figcaption></figure>

#### ラベル視覚化

バウンディングボックスを描画することに加えて、予測のクラス名も表示したいでしょう。そのために、バウンディングボックス視覚化の後に *ラベル視覚化* ブロックを追加します。同じ画像にバウンディングボックスとラベルの両方を描画するには、参照入力画像を入力画像ではなく *bounding\_box\_visualization* image に設定する必要があります。これによりラベルがバウンディングボックスの上に描画されます。

<figure><img src="https://3740591140-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-M6S9nPJhEX9FYH6clfW%2Fuploads%2Fgit-blob-cdcb7551292e790e706a1451b75bd3dcca6b28eb%2FCleanShot%202025-01-29%20at%2016.17.06%402x.png?alt=media" alt="" width="343"><figcaption></figcaption></figure>

オプションの *テキスト* パラメータを変更して、表示テキストをクラス名、信頼度、またはクラス名と信頼度の組み合わせに変更できます。

### 変更を保存

ワークフローの作成が完了したら「Save Workflow」をクリックしてください。ワークフローをデプロイしている場合、保存したワークフローはそのワークフローがデプロイされているすべてのデバイスで実行され始めます。

ワークフローが完成したので、次はテストする時です。
