> 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/deployment/ja/to/active-learning.md).

# アクティブラーニング

## 概要

アクティブ ラーニングは、デプロイ済みモデルから本番データを収集し、レビューと再学習のために表示します。モデルが本番環境で推論を実行すると、アクティブ ラーニングは、設定したルール（低信頼度の予測や特定のクラスなど）に基づいて画像を自動的にサンプリングし、人によるレビューのためにキューに入れます。

{% hint style="info" %}
アクティブ ラーニングにはクラウド デプロイが必要です。これはアノテーション レビュー機能を含むプランで利用できます。
{% endhint %}

## Web アプリ

### アクティブ ラーニングを有効にする

1. プロジェクトを開き、左側のサイドバーで「アクティブ ラーニング」を選択します。
2. アクティブ ラーニングをオンに切り替えます。

アクティブ ラーニングがデータを収集するには、プロジェクトに学習済みモデルとアクティブなクラウド デプロイが必要です。

### 収集ルールを設定する

アクティブ ラーニングには、収集制限と条件という 2 種類の設定があります。

#### 収集制限

アクティブ ラーニングがどれだけのデータを収集するかを制御します：

* サンプリング率：サンプリングする推論の割合（例：0.5%）
* 1 分あたり、1 時間あたり、1 日あたりの画像上限
* 圧縮レベルと最大画像寸法
* バッチ再生成頻度（毎日、毎週、毎月、またはなし）
* 収集した画像と一緒にモデル予測を保持するかどうか

これらの設定を編集するには、「収集制限」セクションで「編集」をクリックし、設定モーダルで値を更新します。

#### 条件

条件は、どの画像を収集するかをフィルタリングします。モデルの種類に基づいてルールを定義できます：

* 信頼度しきい値（例：信頼度が 60% を下回る画像を収集）
* 特定の対象クラス
* 検出数の要件

条件を設定するには、「条件」セクションで「編集」をクリックします。

### エージェントからアクティブ ラーニングを管理する

アクティブ ラーニングは次の場所でも管理できます [Roboflow Agent](https://docs.roboflow.com/agents/agents/roboflow-agent)。プロジェクト タブを開き、「設定」を選択して、このページと同じ切り替え、収集制限、条件を使用します。これには、ワークフローの管理、ワークフローの公開、およびデータセットのアクティブ ラーニング権限が必要です。

### 収集した画像をレビューする

アクティブ ラーニングが画像を収集すると、それらはアクティブ ラーニング ページの画像セクションに表示されます。ページには、レビュー準備完了の画像数と、現在レビュー中の画像数が表示されます。

レビューを開始するには：

1. 「画像をレビュー」をクリックしてレビュー キューを開きます。
2. ステータス（未開始、進行中）ごとにバッチを閲覧し、作成日、画像数、または進行状況で並べ替えます。
3. レビューを開始するバッチを選択します。

### レビュアーを割り当てる

レビュー作業をチーム全体に分散できます：

1. レビュー キューを開き、バッチを選択します。
2. クリックしてレビュアーを割り当てます。
3. チーム メンバーを選び、割り当てる画像数を設定し、必要に応じてレビュー指示を追加します。
4. 「画像をシャッフル」を切り替えると、各レビュアーが受け取る画像をランダム化できます。

画像が割り当てられると、レビュアーに通知されます。画像はいつでも別のレビュアーに再割り当てできます。

### アクティブ ラーニングがトレーニング ループにどう組み込まれるか

一般的なワークフロー：

1. モデルを学習してデプロイします。
2. ユースケースに合わせて調整した条件でアクティブ ラーニングを有効にします。
3. 条件に一致する本番データが収集され、キューに入ります。
4. レビュアーが収集した画像にラベルを付けます。
5. レビュー済み画像をデータセットに追加して再学習し、モデルを改善します。

これにより、モデルが最も苦手とするケースで改善されるフィードバック ループが作られます。

## HTTP API

HTTP API を使用して、アクティブ ラーニングの有効化/無効化、収集ルールの更新、レビュー キュー内の画像一覧取得を行えます。各エンドポイントは `https://api.roboflow.com` を使用し、 `api_key` クエリ パラメータ、リクエスト ボディ、または Bearer 認証ヘッダーに API キーを必要とします。

### アクティブ ラーニング設定を取得

<mark style="color:緑;">`GET`</mark> `/:workspace/:project/deploy/active-learning`

必要なスコープ: `project:read`

```bash
curl "https://api.roboflow.com/my-workspace/my-project/deploy/active-learning?api_key=$ROBOFLOW_API_KEY"
```

レスポンスには、プロジェクト、デプロイ ワークフロー、選択されたモデル、デプロイ可能性、アクティブ ラーニング設定が含まれます：

```json
{
  "project": { "url": "my-project", "name": "My Project" },
  "workflow": { "url": "my-project-base-workflow" },
  "model": {
    "id": "rfdetr-medium",
    "kind": "pretrained",
    "displayName": "RF-DETR Medium",
    "modelId": "rfdetr-medium"
  },
  "deployability": {
    "status": "deployable",
    "modelWasConfigured": false,
    "selectedModelId": null,
    "selectionReason": null
  },
  "activeLearning": {
    "enabled": false,
    "collectionLimits": {
      "dataPercentage": 100,
      "minutelyUsageLimit": 10,
      "hourlyUsageLimit": 100,
      "dailyUsageLimit": 1000,
      "labelingBatchesRecreationFrequency": "daily",
      "usageQuotaName": "upload_quota_active_learning",
      "imageCompressionLevel": 95,
      "maxImageHeight": 1080,
      "maxImageWidth": 1920,
      "persistPredictions": true
    },
    "filters": []
  }
}
```

### アクティブ ラーニングを有効にする

<mark style="color:緑;">`POST`</mark> `/:workspace/:project/deploy/active-learning/enable`

必要なスコープ: `project:update`

```bash
curl -X POST "https://api.roboflow.com/my-workspace/my-project/deploy/active-learning/enable" \
  -H "Content-Type: application/json" \\
  -d '{ "api_key": "'$ROBOFLOW_API_KEY'" }'
```

モデルが設定されていない場合、サービスは選択を試みます。 `400` というレスポンスは、ワークフローがデプロイ可能でないことを意味します。レスポンスの形状は [アクティブ ラーニング設定を取得](#get-active-learning-configuration)と同じで、 `activeLearning.enabled` を `true`.

### アクティブ ラーニングを無効にする

<mark style="color:緑;">`POST`</mark> `/:workspace/:project/deploy/active-learning/disable`

必要なスコープ: `project:update`

```bash
curl -X POST "https://api.roboflow.com/my-workspace/my-project/deploy/active-learning/disable" \
  -H "Content-Type: application/json" \\
  -d '{ "api_key": "'$ROBOFLOW_API_KEY'" }'
```

レスポンスの形状は [アクティブ ラーニング設定を取得](#get-active-learning-configuration)と同じで、 `activeLearning.enabled` を `false`.

### アクティブ ラーニング設定を更新

<mark style="color:緑;">`POST`</mark> `/:workspace/:project/deploy/active-learning/configuration`

必要なスコープ: `project:update`

新しいプロジェクトで設定する前に、アクティブ ラーニングを有効にしてください。リクエストには `collectionLimits`を含める必要があります。 `filters` 配列は任意です。省略した場合、既存のフィルターは変更されません。

```bash
curl -X POST "https://api.roboflow.com/my-workspace/my-project/deploy/active-learning/configuration" \
  -H "Content-Type: application/json" \\
  -d '{
    "api_key": "'$ROBOFLOW_API_KEY'",
    "collectionLimits": {
      "dataPercentage": 50,
      "minutelyUsageLimit": 10,
      "hourlyUsageLimit": 100,
      "dailyUsageLimit": 1000,
      "labelingBatchesRecreationFrequency": "daily",
      "usageQuotaName": "default",
      "imageCompressionLevel": 85,
      "imageName": "camera-1",
      "maxImageHeight": 1080,
      "maxImageWidth": 1920,
      "registrationTags": ["production"],
      "persistPredictions": true
    },
    "filters": [
      {
        "type": "classConfidence",
        "classFilterMode": "any",
        "classes": ["cat"],
        "confidenceLowerBound": 0.2,
        "confidenceUpperBound": 0.8
      }
    ]
  }'
```

必須の収集制限フィールドは次のとおりです：

* `dataPercentage`：収集する推論の割合。範囲は `0` を `100`
* `minutelyUsageLimit`：1 分あたりに収集できる画像の最大数、または `0` で無制限
* `hourlyUsageLimit`：1 時間あたりに収集できる画像の最大数
* `dailyUsageLimit`：1 日あたりに収集できる画像の最大数
* `labelingBatchesRecreationFrequency`: `"never"`, `"daily"`, `"weekly"`、または `"monthly"`
* `usageQuotaName`：空でないクォータ識別子

任意のフィールドは `imageCompressionLevel`, `imageName`, `registrationTags`、および `persistPredictions`です。画像サイズを変更するには、両方の `maxImageHeight` および `maxImageWidth`を指定してください。片方だけを指定すると、既存の画像サイズ制限は削除されます。

アクティブ ラーニングは 2 種類のフィルターをサポートします：

* `classConfidence`：信頼度範囲内の選択クラスの予測を収集します。 `classFilterMode` は次のいずれかにできます `"any"`, `"in"`、または `"out"`.
* `detectionSize`：バウンディング ボックスのサイズが次の範囲にある予測を収集します `sizeLowerPercentage` および `sizeUpperPercentage` から画像サイズの間。このフィルターはオブジェクト検出とインスタンス セグメンテーションのプロジェクトのみをサポートします。他のプロジェクト タイプでは `400`.

レスポンスの形状は [アクティブ ラーニング設定を取得](#get-active-learning-configuration)を返します。 `400` レスポンスには、無効な収集制限またはフィルターの検証詳細が含まれます。

### アクティブ ラーニング画像一覧を取得

<mark style="color:緑;">`GET`</mark> `/:workspace/:project/deploy/active-learning/images`

必要なスコープ: `project:read`

```bash
curl "https://api.roboflow.com/my-workspace/my-project/deploy/active-learning/images?api_key=$ROBOFLOW_API_KEY&page=1&pageSize=20"
```

このエンドポイントは次の任意のクエリ パラメータを受け付けます：

* `page`：ページ番号。開始は `1`
* `pageSize`：ページあたりの項目数。最大 `50`
* `search`：キュー名、タイプ、ID、レビュアー、ラベラーと照合されるテキスト
* `reviewer`：レビュアーのメールアドレスまたは `"unassigned"`
* `状態`: `"all"`, `"not_started"`、または `"in_progress"`
* `sortBy`: `"created"`, `"images"`、または `"progress"`
* `sortDirection`: `"asc"` または `"desc"`

レスポンスには、レビュー キューの件数、ページネーションされたキュー項目、バッチ、アノテーション ジョブ、画像合計が含まれます：

```json
{
  "activeLearningImages": {
    "totalImagesReadyForReview": 0,
    "totalImagesBeingReviewed": 0,
    "batches": [],
    "annotationJobs": [],
    "latestBatch": null,
    "latestAnnotationJob": null,
    "sampleImages": [],
    "reviewQueueCounts": {
      "all": 0,
      "notStarted": 0,
      "inProgress": 0
    },
    "reviewQueuePage": {
      "page": 1,
      "pageSize": 20,
      "totalItems": 0,
      "totalPages": 1,
      "items": [],
      "search": "",
      "status": "all",
      "sortBy": "created",
      "sortDirection": "desc",
      "reviewer": ""
    }
  }
}
```

## Python SDK

`Workspace.active_learning()` ディレクトリ内の各画像で推論を実行し、条件に応じて画像（およびその予測）を送信先プロジェクトにアップロードします。これは SDK に組み込まれたアクティブ ラーニング ループです。既存のモデルに価値のあるラベル付け対象を選別させることで、未加工映像からラベル付けキューを立ち上げます。

同じパターンは、次のように構築するのが最適です [ワークフロー](https://docs.roboflow.com/workflows/manage/manage-workflows#python-sdk) 本番用途向けですが、 `active_learning()` は、「画像フォルダーがある」状態から「ラベル付きデータがプロジェクトに入る」状態へ最短で到達する方法です。

### 基本的な使い方

```python
import roboflow

rf = roboflow.Roboflow(api_key="YOUR_API_KEY")
ws = rf.workspace()

ws.active_learning(
    raw_data_location="./frames",
    raw_data_extension=".jpg",
    inference_endpoint=["my-detector", 3],   # [project, version]
    upload_destination="my-detector",         # destination project
    conditionals={
        "required_class_variance_count": 1,           # 少なくとも 1 つの異なるクラス
        "minimum_size_requirement": 100,              # 1 検出あたりの最小ピクセル数
        "maximum_size_requirement": 4000000,
        "confidence_interval": [0, 60],               # 低信頼度予測のみ
    },
)
```

#### パラメータ

* `raw_data_location` (str) - 入力画像のディレクトリ。
* `raw_data_extension` (str) - 一致させる画像拡張子（例： `.jpg`, `.png`).
* `inference_endpoint` (list, `[project, version]`) - 選別ステップとして実行するモデル。
* `upload_destination` (str) - 適格な画像と予測をアップロードするプロジェクト ID。多くの場合、モデルと同じプロジェクトです。
* `conditionals` (dict) - 画像がアップロードされるかどうかを決定するルール。一般的なキー：
  * `confidence_interval` - `[min, max]`；この範囲に入る検出結果を持つ画像のみが転送されます。
  * `required_class_variance_count` - 必要な最小の異なるクラス数。
  * `minimum_size_requirement` / `maximum_size_requirement` - 検出領域のピクセル数でフィルタリングします。
  * `required_class_count` - 総検出数。
* `use_localhost` (bool, default `False`) - `True`のとき、ホスト型推論ではなく自己ホスト型の [Roboflow Inference](/deployment/ja/serufuhosuto/self-hosted.md) サーバーに接続します。
* `local_server` (str) - ローカル推論サーバーのベース URL。デフォルトは `http://localhost:9001/`.

### なぜ使うのか

一般的なループ：

1. 小さなラベル付きセットで v1 モデルを学習します。
2. を指定する `active_learning()` 未ラベルの本番データのフォルダーに対して。
3. モデルが不確かな画像（低信頼度）や希少クラスを検出した画像だけを転送します。
4. Roboflow の Web アプリでそれらにラベルを付けます。
5. 新しい例で v2 を生成し、再学習します。

チューニング `conditionals` これが、「すべてをアップロードする」だけの仕組みを実際の選別ポリシーに変えるものです。

### より大規模なパイプライン

入力がビデオ ストリームで、モデルがワークフローの背後にあり、バッチ処理や再試行を使いたい場合は、次のような同等のものを構築してください [ワークフロー](https://docs.roboflow.com/workflows/manage/manage-workflows#python-sdk). `active_learning()` は、静的なフォルダーからの一度きりの初期データ作成に最適です。
