> 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/ko/monitoring-and-analytics/active-learning.md).

# 능동 학습

## 소개

액티브 러닝은 배포된 모델에서 운영 데이터를 수집해 검토와 재학습을 위해 표시합니다. 모델이 프로덕션에서 추론을 수행하면, 액티브 러닝은 구성한 규칙(예: 낮은 신뢰도 예측 또는 특정 클래스)에 따라 이미지를 자동으로 샘플링하고 사람 검토를 위해 큐에 넣습니다.

{% hint style="info" %}
액티브 러닝에는 클라우드 배포가 필요합니다. 이 기능은 Annotation Review 기능이 있는 플랜에서 사용할 수 있습니다.
{% endhint %}

## 웹 앱

### 액티브 러닝 사용

1. 프로젝트를 열고 왼쪽 사이드바에서 "Active Learning"을 선택하세요.
2. 액티브 러닝을 켜세요.

프로젝트에는 액티브 러닝이 데이터를 수집할 수 있도록 학습된 모델과 활성 클라우드 배포가 있어야 합니다.

### 수집 규칙 구성

액티브 러닝에는 수집 한도와 조건이라는 두 가지 구성 범주가 있습니다.

#### 수집 한도

액티브 러닝이 수집하는 데이터의 양을 제어합니다:

* 샘플링 비율: 샘플링할 추론의 비율(예: 0.5%)
* 분당, 시간당, 일일 이미지 상한
* 압축 수준 및 최대 이미지 크기
* 배치 재생성 빈도(매일, 매주, 매월 또는 없음)
* 수집한 이미지와 함께 모델 예측을 저장할지 여부

이 설정을 편집하려면 수집 한도 섹션에서 "Edit"를 클릭하고 구성 모달에서 값을 업데이트하세요.

#### 조건

조건은 어떤 이미지를 수집할지 필터링합니다. 모델 유형에 따라 규칙을 정의할 수 있습니다:

* 신뢰도 임계값(예: 신뢰도가 60% 미만으로 떨어지는 이미지를 수집)
* 관심 있는 특정 클래스
* 감지 수 개수 요구사항

조건을 설정하려면 조건 섹션에서 "Edit"를 클릭하세요.

### 에이전트에서 액티브 러닝 관리

또한 다음에서 액티브 러닝을 관리할 수 있습니다 [Roboflow 에이전트](https://docs.roboflow.com/agents/roboflow-agent). 프로젝트 탭을 열고, "Settings"를 선택한 다음, 이 페이지와 동일한 토글, Collection Limits, 그리고 Conditions를 사용하세요. 이를 위해서는 Manage Workflows, Publish Workflows, Dataset Active Learning 권한이 필요합니다.

### 수집된 이미지 검토

액티브 러닝이 이미지를 수집하면, 액티브 러닝 페이지의 이미지 섹션에 표시됩니다. 이 페이지는 검토 가능한 이미지 수와 현재 검토 중인 이미지 수를 보여줍니다.

검토를 시작하려면:

1. "Review Images"를 클릭하여 검토 큐를 엽니다.
2. 상태(미시작, 진행 중)별로 배치를 탐색하고 생성 날짜, 이미지 수 또는 진행률로 정렬하세요.
3. 검토를 시작할 배치를 선택하세요.

### 검토자 할당

검토 작업을 팀 전체에 분배할 수 있습니다:

1. 검토 큐를 열고 배치를 선택하세요.
2. 검토자를 할당하려면 클릭하세요.
3. 팀원을 선택하고 할당할 이미지 수를 설정한 다음, 필요하면 검토 지침을 추가하세요.
4. 각 검토자가 받는 이미지를 무작위로 하려면 "Shuffle Images"를 켜세요.

이미지가 할당되면 검토자에게 알림이 전송됩니다. 언제든지 이미지를 다른 검토자에게 재할당할 수 있습니다.

### 액티브 러닝이 학습 루프에 적용되는 방식

일반적인 워크플로:

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`: 분당 수집할 수 있는 최대 이미지 수, 또는 `0` 는 무제한을 의미합니다
* `hourlyUsageLimit`: 시간당 수집할 수 있는 최대 이미지 수
* `dailyUsageLimit`: 하루에 수집할 수 있는 최대 이미지 수
* `labelingBatchesRecreationFrequency`: `"없음"`, `"매일"`, `"매주"` 또는 `"매월"`
* `usageQuotaName`: 비어 있지 않은 할당량 식별자

선택적 필드는 다음과 같습니다 `imageCompressionLevel`, `imageName`, `registrationTags`, 그리고 `persistPredictions`. 이미지를 크기 조정하려면 둘 다 제공하세요 `maxImageHeight` 및 `maxImageWidth`. 둘 중 하나만 제공하면 기존 이미지 크기 제한이 제거됩니다.

액티브 러닝은 두 가지 필터 유형을 지원합니다:

* `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`: 검토자 이메일 또는 `"미할당"`
* `status`: `"전체"`, `"미시작"` 또는 `"진행 중"`
* `sortBy`: `"생성 날짜"`, `"이미지"` 또는 `"진행률"`
* `sortDirection`: `"오름차순"` 또는 `"내림차순"`

응답에는 검토 큐 개수, 페이지가 매겨진 큐 항목, 배치, 주석 작업, 이미지 총계가 포함됩니다:

```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],   # [프로젝트, 버전]
    upload_destination="my-detector",         # 대상 프로젝트
    conditionals={
        "required_class_variance_count": 1,           # 최소 1개의 서로 다른 클래스
        "minimum_size_requirement": 100,              # 감지당 최소 픽셀 수
        "maximum_size_requirement": 4000000,
        "confidence_interval": [0, 60],               # 낮은 신뢰도 예측만
    },
)
```

#### 매개변수

* `raw_data_location` (str) - 입력 이미지 디렉터리.
* `raw_data_extension` (str) - 일치시킬 이미지 확장자(예: `.jpg`, `.png`).
* `inference_endpoint` (list, `[프로젝트, 버전]`) - 삼아 실행할 모델입니다.
* `upload_destination` (str) - 적격 이미지와 예측값을 업로드할 프로젝트 ID. 종종 모델과 같은 프로젝트입니다.
* `conditionals` (dict) - 이미지가 업로드되는지를 결정하는 규칙. 일반적인 키:
  * `confidence_interval` - `[최소, 최대]`; 이 범위에 들어오는 감지 결과를 가진 이미지만 전달됩니다.
  * `required_class_variance_count` - 필요한 최소 서로 다른 클래스 수.
  * `minimum_size_requirement` / `maximum_size_requirement` - 픽셀 단위의 감지 영역으로 필터링합니다.
  * `required_class_count` - 총 감지 수.
* `use_localhost` (bool, 기본값 `False`) - `True`인 경우 자체 호스팅된 [Roboflow Inference](/deployment/ko/self-hosted/self-hosted.md) 서버에 요청하고, 호스팅된 추론 대신 사용합니다.
* `local_server` (str) - 로컬 추론 서버의 기본 URL입니다. 기본값은 `http://localhost:9001/`.

### 사용 이유

일반적인 루프:

1. 작은 라벨링 세트로 v1 모델을 학습합니다.
2. 가리키세요 `active_learning()` 라벨이 없는 프로덕션 데이터 폴더를
3. 모델이 불확실해하는 이미지(낮은 신뢰도) 또는 희귀 클래스를 보는 이미지만 전달합니다.
4. Roboflow 웹 앱에서 이를 라벨링합니다.
5. 새 예제로 v2를 생성하고 재학습합니다.

조정 `conditionals` 이것이 "모두 업로드"를 실제 선별 정책으로 바꾸는 요소입니다.

### 더 큰 파이프라인

입력이 비디오 스트림이거나 모델이 워크플로 뒤에 있거나 배치 및 재시도를 원한다면, 이에 상응하는 것을 다음과 같이 구축하세요. [워크플로](https://docs.roboflow.com/workflows/manage/manage-workflows#python-sdk). `active_learning()` 정적 폴더에서 일회성 부트스트래핑 작업에 가장 적합합니다.

## MCP 서버

AI 에이전트를 [MCP 서버](https://docs.roboflow.com/agents/mcp-server) 다음 도구로 액티브 러닝을 설정할 수 있습니다:

<table data-search="false"><thead><tr><th width="290">도구</th><th>설명</th></tr></thead><tbody><tr><td><code>project_deployment_enable_active_learning</code></td><td>프로젝트 배포에 대해 액티브 러닝을 활성화합니다.</td></tr><tr><td><code>project_deployment_configure_active_learning</code></td><td>배포가 액티브 러닝 데이터를 수집하는 방식을 구성합니다.</td></tr><tr><td><code>project_deployment_disable_active_learning</code></td><td>액티브 러닝 수집을 일시 중지합니다.</td></tr><tr><td><code>project_deployment_list_review_queues</code></td><td>프로덕션 추론에서 입력된 검토 큐를 나열합니다.</td></tr></tbody></table>
