> 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/datasets/ko/annotate/annotate/team-collaboration.md).

# 라벨링 협업

## 정보

작은 팀이 수백 장의 이미지 라벨링을 하든, 큰 팀이 수백만 장을 작업하든, 데이터셋을 만드는 일은 단순히 박스를 그리는 것 이상입니다. 라벨링의 큰 부분은 실제 세계의 이미지를 학습된 모델의 저장된 지식으로 옮기는 과정에 있으며, 여기에는 이미지 수집, 저장, 정리, 선택, 할당, 라벨링, 검토가 포함됩니다.

Roboflow는 다음을 가능하게 하는 협업 기능을 제공합니다:

* 팀원 누구에게나 라벨링 작업을 할당하여 여러 팀원 간에 작업을 분담하기
* 업로드하면서 이미지를 배치로 정리하기
* 작업을 안내하고 일관성을 보장하는 데 도움이 되는 이미지 라벨링 지침 제공하기
* 진행 중인 라벨링 작업을 한눈에 보기
* 모든 라벨링 작업의 과거 타임라인 보기
* 변경 사항 되돌리기
* 이미지에 댓글을 추가하고 이미지 댓글 기록 보기
* 라벨링 문제가 있는 이미지를 변경을 위해 팀원에게 다시 보내기
* 데이터셋에 포함하기 전에 라벨을 승인하거나 거부하기

### 라벨링 작업 할당

라벨링 작업을 팀 전체에 분담하거나 라벨링 담당 특정 사람에게 할당할 수 있습니다. 개별 팀원에게 작업을 할당하면 같은 시간에 온라인 상태일 때 서로의 작업을 방해할 걱정을 하지 않아도 됩니다.

<figure><img src="/files/6dd05df1437248865c4554084f5e2d4e55c20d6e" alt=""><figcaption></figcaption></figure>

팀의 한 명 또는 여러 명에게 작업을 할당하도록 선택할 수 있으며, 아직 워크스페이스에 팀원을 포함하지 않았다면 다음도 할 수 있습니다 [초대하고](https://docs.roboflow.com/platform/workspaces/team-members/invite-a-team-member) 동시에 완료할 라벨링 작업을 할당할 수 있습니다.

### **제공** 라벨링 지침

Assign Images 탭에서 라벨러에게 지침을 제공할 수 있습니다. 배치를 라벨러에게 할당하기 전에 "Add Instructions"를 클릭하여 배치에 지침을 추가하세요. 지침을 설정한 뒤에는 "Assign Images"를 클릭하세요.

<figure><img src="/files/68b73ddf65af4a3ea56934832f37e2d98b614177" alt=""><figcaption></figcaption></figure>

지침을 할당하려면 "Edit"를 클릭하세요:

<figure><img src="/files/515eac9a5e804e198d4664b7f0f3f726e843b388" alt=""><figcaption></figcaption></figure>

라벨링 지침을 저장하려면 "Save Instructions"를 클릭하세요.

### 작업 알림

라벨링 작업이 할당되면, 팀원에게 할당된 작업이 있을 때 알림이 전송됩니다.

### 라벨링 작업 보드

라벨링 작업 보드는 개별적으로 할당된 작업이 라벨링 과정을 거치는 동안 현재 상태를 한눈에 볼 수 있게 해줍니다.

<figure><img src="/files/18e34e07b3f8031d840481e9305c9ff6cf382a05" alt=""><figcaption></figcaption></figure>

특정 라벨러의 통계를 보려면 `라벨러` 드롭다운에서 값을 지정하세요.

### 작업 세부정보

라벨링 작업 보드에서 개별 작업을 클릭하면 해당 작업과 진행 상황을 더 자세히 볼 수 있습니다. 아직 라벨링이 필요한 이미지를 빠르게 확인할 수 있으며 필요에 따라 작업을 다른 팀원에게 다시 할당할 수 있습니다.

<figure><img src="/files/fc18858320c1912967f8115de18a4c08e45748ed" alt=""><figcaption></figcaption></figure>

#### 개별 이미지 관리

작업 내의 Annotated 탭에서 체크박스, 드래그 선택 또는 헤더의 "Select all" 체크박스를 사용해 개별 이미지를 선택할 수 있습니다. 선택을 마치면:

* "Send N Images to Unannotated"를 클릭하여 선택한 이미지를 다시 Unannotated 탭으로 옮기고 재라벨링합니다.
* "Add N Images to Dataset"를 클릭하여 선택한 이미지만 데이터셋에 추가합니다. 선택되지 않은 주석 이미지들은 작업에 그대로 남습니다.

부분 선택을 데이터셋에 추가하면, 작업은 업데이트된 개수와 함께 현재 상태를 유지하므로 라벨러가 나머지 이미지 작업을 계속할 수 있습니다.

이 제어 기능은 주석 편집기에서도 사용할 수 있습니다. 할당된 작업에서 주석이 달린 이미지를 볼 때:

* 체크 표시 버튼을 사용하여 현재 이미지를 데이터셋에 추가하세요.
* 이미지 전환기 옆의 "Send to Unannotated" 버튼(화살표 아이콘)을 사용하여 현재 이미지를 재라벨링을 위해 다시 보내세요.

어느 작업을 하든, 편집기는 이후 자동으로 다음 이미지로 이동합니다.

### 검토 모드

라벨이 붙은 이미지를 개별적으로 승인하거나 거부하고, 필요할 때 다시 작업하도록 라벨러에게 보낼 수 있습니다. 그렇게 하려면 이미지 배치를 클릭하세요. 그런 다음 Approved, Rejected, To Do 탭 사이를 이동하여 작업 내 이미지의 상태를 확인하세요.

<figure><img src="/files/8fa41adc9f8b4ccca47fa689526a8ae04b6b413d" alt=""><figcaption></figcaption></figure>

사용 중인 요금제에 포함되어 있다면 Review Mode가 활성화되어 있으며, 워크스페이스의 모든 프로젝트에 적용됩니다. 끄려면 Settings로 가서 "Project Settings"를 열고 "Review Mode"를 끄세요. 그러면 Review 열이 제거되어 완료된 작업이 바로 데이터셋으로 이동합니다. 끄더라도 요금제에서 Review Mode가 삭제되는 것은 아니므로 언제든지 다시 켤 수 있습니다.

이를 변경하려면 Edit Workspace Settings 권한이 필요합니다. 끌 때 배치가 아직 검토 중이면 Roboflow가 확인을 요청한 뒤 해당 배치를 Annotating으로 되돌립니다.

### 에이전트에서 라벨링 작업 탐색

에서 프로젝트 탭을 열고 [Roboflow Agent](https://docs.roboflow.com/agents/roboflow-agent) "Dataset"을 선택하여 라벨링 단계별로 프로젝트 이미지를 탐색하세요. 각 단계별 칩("Unassigned", "Annotating", "Review", "Dataset")에는 이미지 수가 표시됩니다. 그리드를 아래로 좁히려면 칩을 하나 선택한 다음 배치 또는 작업 카드를 선택하세요.

이미지를 클릭하면 주석 편집기에서 열립니다. "Unassigned" 상태이거나, 작업이 annotation board를 떠났거나 더 이상 당신에게 할당되지 않은 경우에는 이미지가 읽기 전용으로 열립니다. 라벨을 편집하려면 Search Workspace Images 권한과 Update Annotation 권한이 필요합니다.

#### 작업을 단계별로 이동하기

Agent에서 작업을 열면 탭 바에 해당 작업이 위치한 단계("Unassigned", "Annotating", "Review", 또는 "Dataset")가 표시됩니다. 각 단계에 마우스를 올리면 그 단계에서 어떤 일이 일어나는지 읽을 수 있습니다. 만약 [검토 모드](#review-mode) 워크스페이스에서 꺼져 있으면 "Review" 단계가 회색으로 표시됩니다. 요금제에 포함되어 있지 않다면, 이 단계는 업그레이드 방법을 제공합니다.

단계 표시기 옆의 버튼은 작업을 앞이나 뒤로 이동시킵니다. 표시되는 버튼은 단계와 권한에 따라 다릅니다:

* "Move N to Annotating"은 할당되지 않은 이미지로 라벨링 작업을 만들고 이를 당신에게 할당합니다.
* "Submit for Review"는 주석 처리 중인 작업을 검토로 보냅니다.
* "Move Back to Annotating"은 검토 중인 작업의 모든 이미지를 추가 라벨링을 위해 다시 보냅니다.
* "Add N to Dataset"은 작업의 준비된 이미지를 데이터셋에 추가합니다. 일부만 추가하면 나머지는 작업에 그대로 남습니다.

각 버튼은 기록 전에 작업의 단계를 다시 확인합니다. 그 사이에 다른 사람이 작업을 이동시켰다면 아무것도 변경되지 않으며, Agent가 그 이유를 알려줍니다.

#### 이미지 승인 및 거부

열어둔 작업이 "Review" 단계에 있으면, 편집기에는 annotation board와 같은 승인 및 거부 제어가 표시됩니다. 현재 이미지에서 "Approve" 또는 "Reject"를 클릭하거나, A를 눌러 승인하고 R을 눌러 거부하고 U를 눌러 마지막 결정을 되돌릴 수 있습니다. 이를 위해서는 Review Image 권한이 필요합니다.

## HTTP API

jobs 엔드포인트를 사용하여 주석 작업에 대한 정보, 현재 상태, 또는 배치 중 하나의 이미지로 새 Annotation Job을 만들어 라벨링을 위해 이미지를 할당할 수 있습니다.

### 새 Annotation Job 만들기

{% hint style="warning" %}
**reviewer와 labeler 모두 워크스페이스의 사용자에 속한 이메일로 설정해야 합니다.**

워크스페이스에서 Role Based Access Control이 활성화되어 있지 않으면 앱 인터페이스에서 reviewer가 보이지 않으며, reviewer를 labeler와 동일한 사용자로 설정해야 합니다.
{% endhint %}

프로젝트의 /jobs 엔드포인트에 POST 요청을 보내 프로젝트에 새 Annotation Job을 만들 수 있습니다. 새 작업을 만들려면 POST 요청 본문에 JSON으로 인코딩된 데이터를 제공해야 합니다.

프로젝트에서 새 Annotation Job을 만들어, 배치 중 하나의 이미지 10장을 <lenny@roboflow.com>이 주석 처리하도록 할당하려면 다음과 같이 POST 요청을 보낼 수 있습니다:

```bash
curl --location --request POST 'https://api.roboflow.com/${WORKSPACE}/${PROJECT}/jobs?api_key=${ROBOFLOW_API_KEY}' \
--header 'Content-Type: application/json' \
--data-raw '{
    "name": "API로 생성된 작업",
    "batch": "<BATCH_ID>",
    "num_images": 10,
    "labelerEmail": "lenny@roboflow.com",
    "reviewerEmail": "lenny@roboflow.com"
}'
```

이 요청은 다음 데이터를 반환합니다:

```json
{
    "created": {
        "_seconds": 1669234345,
        "_nanoseconds": 61000000
    },
    "rejected": 0,
    "annotated": 0,
    "numImages": 2,
    "createdBy": "API",
    "owner": "holeSv3hwbzrOv37vH5b",
    "instructionsText": "지침이 제공되지 않음",
    "unannotated": 2,
    "reviewer": "thomas@roboflow.com",
    "labeler": "korryn@roboflow.com",
    "name": "API 작업 1",
    "project": "PBDhem3YRI1rKtQZSqRK",
    "approved": 0,
    "status": "assigned",
    "sourceBatch": "PBDhem3YRI1rKtQZSqRK/6VN0fFQIWU1E24bDjGsN",
    "id": "0IzntY4ms4ogwHwJNkIB"
}
```

### API에서 Annotation Job 데이터 가져오기

REST API에서 annotation job 데이터를 가져오려면 다음 엔드포인트로 요청하세요:

```bash
curl https://api.roboflow.com/${WORKSPACE}/${PROJECT}/jobs?api_key=${ROBOFLOW_API_KEY}
```

그러면 다음 형식으로 데이터가 반환됩니다:

```json
{
    "jobs": [
        {
            "owner": "holeSv3hwbzrOv37vH5b",
            "approved": 0,
            "createdBy": "g12lCVib0pgurZ6EqWLnApJJ4gr1",
            "sourceBatch": "PBDhem3YRI1rKtQZSqRK/6VN0fFQIWU1E24bDjGsN",
            "annotated": 3,
            "rejected": 0,
            "labeler": "thomas@roboflow.com",
            "numImages": 26,
            "status": "assigned",
            "instructionsText": "",
            "name": "11/22/22 오후 1:39에 업로드됨: 작업 9",
            "reviewer": "thomas@roboflow.com",
            "created": {
                "_seconds": 1669148088,
                "_nanoseconds": 297000000
            },
            "project": "PBDhem3YRI1rKtQZSqRK",
            "unannotated": 23,
            "id": "5LfYNJg10Z9Kvx5Tt5Uq"
        },

        {
            "approved": 0,
            "unannotated": 2,
            "instructionsText": "이미지의 모든 너구리를 다각형으로 표시해 주세요",
            "annotated": 12,
            "sourceBatch": "PBDhem3YRI1rKtQZSqRK/6VN0fFQIWU1E24bDjGsN",
            "project": "PBDhem3YRI1rKtQZSqRK",
            "rejected": 0,
            "owner": "holeSv3hwbzrOv37vH5b",
            "createdBy": "API",
            "status": "assigned",
            "created": {
                "_seconds": 1669148192,
                "_nanoseconds": 651000000
            },
            "labeler": "korryn@roboflow.com",
            "name": "테스트 작업",
            "numImages": 25,
            "reviewer": "thomas@roboflow.com",
            "id": "h2E42jt686yLyMIxxqOQ"
        }
    ]
}
```

특정 작업에 대한 정보를 가져오려면 작업 ID를 지정하세요:

```bash
curl https://api.roboflow.com/${WORKSPACE}/${PROJECT}/jobs/${JOB_ID}?api_key=${ROBOFLOW_API_KEY}
```

이 요청의 응답 형식은 다음과 같습니다:

```json
{
    "approved": 0,
    "unannotated": 2,
    "instructionsText": "이미지의 모든 너구리를 다각형으로 표시해 주세요",
    "annotated": 12,
    "sourceBatch": "PBDhem3YRI1rKtQZSqRK/6VN0fFQIWU1E24bDjGsN",
    "project": "PBDhem3YRI1rKtQZSqRK",
    "rejected": 0,
    "owner": "holeSv3hwbzrOv37vH5b",
    "createdBy": "API",
    "status": "assigned",
    "created": {
        "_seconds": 1669148192,
        "_nanoseconds": 651000000
    },
    "labeler": "korryn@roboflow.com",
    "name": "테스트 작업",
    "numImages": 25,
    "reviewer": "thomas@roboflow.com",
    "id": "<JOB_ID>"
}
```

## Python SDK

### 새 Annotation Job 만들기

annotation job을 만들려면 라벨러와 검토자에게 할당할 업로드 배치가 필요합니다:

```python
import roboflow

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

project = rf.workspace().project("PROJECT_ID")

job = project.create_annotation_job(
    name="테스트 Annotation Job",
    batch_id=UPLOAD_BATCH_ID,
    num_images=UPLOAD_BATCH_SIZE,
    labeler_email="test@example.com",
    reviewer_email="test@example.com",
)
```

## 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>annotation_jobs_list</code></td><td>프로젝트의 annotation job 목록을 표시합니다.</td></tr><tr><td><code>annotation_jobs_get</code></td><td>하나의 annotation job 세부정보를 가져옵니다.</td></tr><tr><td><code>annotation_jobs_create</code></td><td>작업을 만들고 이미지를 라벨러와 검토자에게 할당합니다.</td></tr><tr><td><code>annotation_jobs_update</code></td><td>작업의 레이블러, 리뷰어 또는 지침을 업데이트합니다.</td></tr><tr><td><code>annotation_jobs_images_reassign</code></td><td>선택한 이미지로 작업을 만들고 이전 할당을 지웁니다.</td></tr></tbody></table>
