> 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/annotation-insights.md).

# 주석 인사이트

## 소개

{% hint style="info" %}
Annotation Insights는 하나의 **유료** 기능입니다.

현재 플랜과 각 플랜에 포함된 기능에 대한 최신 정보는 [요금 페이지](https://roboflow.com/pricing).
{% endhint %}

Annotation Insights는 작업 공간의 프로젝트에 대한 주석 작업 통계를 보여줍니다. 날짜, 라벨러, 프로젝트별로 인사이트를 볼 수 있습니다.

예를 들어, 다음을 확인할 수 있습니다:

1. 특정 기간 동안 누군가가 주석 처리한 이미지 수;
2. 검토 단계에서 발생한 거부 이벤트 수, 나중에 승인된 이미지도 포함하여;
3. 검토된 이미지의 1차 승인률(한 번도 거부되지 않고 승인된 비율);
4. 프로젝트에 대해 그려진 바운딩 박스 수;
5. 모델 보조를 사용했거나 null로 표시된 이미지 수;
6. 라벨링에 소요된 시간 등.

## 웹 앱

### Annotation Insights 보기

Roboflow 사이드바에서 "Settings" 아래의 "Manage Users"를 통해 Annotation Insights를 보려면:

<figure><img src="/files/42e78dfb260f99e8d3090ae1a28405e4f2e63a83" alt=""><figcaption></figcaption></figure>

그런 다음 "Annotation Insights"를 클릭하세요:

<figure><img src="/files/4750eeee6ed27576a0eb361ffccfe7fa54056aa0" alt=""><figcaption></figcaption></figure>

그러면 Annotation Insights 대시보드로 이동합니다:

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

대시보드에서 주어진 기간 동안 생성, 업데이트, 삭제된 주석 수에 대한 집계 정보를 볼 수 있습니다. 프로젝트별 세부 정보도 확인할 수 있습니다.

### 라벨러 통계

대시보드 표는 라벨러와 프로젝트별로 주석 활동을 세분화합니다.

| 열                                          | 설명                                                                                             |
| ------------------------------------------ | ---------------------------------------------------------------------------------------------- |
| "라벨링된 이미지"                                 | 라벨러가 주석 처리한 이미지로, 객체가 없는 것으로 표시된 이미지도 포함합니다. 이미지는 작업이 수행된 날짜마다 한 번씩 계산됩니다.                     |
| "고유 라벨링 이미지"                               | 라벨러가 날짜 범위 내에서 주석 처리한 서로 다른 이미지로, 작업한 날짜 수와 상관없이 한 번만 계산됩니다. 2023년 8월 1일 이전 날짜 범위에는 표시되지 않습니다. |
| "순 주석 수"                                   | 추가된 주석 수에서 삭제된 주석 수를 뺀 값입니다.                                                                   |
| "총 추가된 주석 수", "총 삭제된 주석 수", "총 업데이트된 주석 수" | 라벨러가 수행한 주석 변경 횟수입니다.                                                                          |
| "모델 보조 사용"                                 | 모델 보조 라벨링을 사용해 라벨러가 주석 처리한 이미지입니다.                                                             |
| "null로 표시됨"                                | 라벨러가 객체가 없는 것으로 표시한 이미지입니다.                                                                    |

워크스페이스에서 주석 검토가 활성화되면, 표에 검토 통계도 표시됩니다:

| 열     | 설명                                                                                   |
| ----- | ------------------------------------------------------------------------------------ |
| "승인됨" | 검토 중 승인된 이미지입니다.                                                                     |
| "거부됨" | 거부 이벤트의 총 수입니다. 나중에 수정되어 승인된 이미지도 포함하여 모든 거부가 집계됩니다.                                 |
| "승인률" | 1차 승인률로, 검토된 이미지 중 한 번도 거부되지 않고 승인된 비율입니다. 한 번 거부된 뒤 나중에 승인된 이미지는 1차 승인률에 포함되지 않습니다. |

{% hint style="info" %}
“거부됨”은 현재 거부 상태인 이미지가 아니라 거부 이벤트 수를 집계합니다. 한 번 거부된 뒤 수정되어 다시 승인된 이미지도 총합에 포함되므로, 이 수치는 작업이 검토를 위해 다시 반환된 모든 횟수를 반영합니다.
{% endhint %}

### 필터링 및 내보내기

다음 기준으로 결과를 필터링할 수 있습니다:

* 날짜 범위
* 프로젝트
* 라벨러(전체 팀 또는 선택한 구성원)

결과를 CSV로 내보낼 수도 있습니다.

## HTTP API

### Annotation Insights

Roboflow는 워크스페이스와 프로젝트에 연결된 주석에 대한 통계를 제공합니다. Roboflow 대시보드와 REST API를 통해 주석 인사이트를 볼 수 있습니다.

<mark style="color:파란색;">2023년 8월 1일에 주석 메트릭 추적 방식을 개선했습니다. Annotation Insights v2 엔드포인트는 2023년 8월 1일 이후의 주석 데이터를 제공합니다.</mark>

{% tabs %}
{% tab title="REST API" %}
워크스페이스의 주석 인사이트를 가져오려면 다음 엔드포인트에 GET 요청을 보내세요:

```url
https://api.roboflow.com/${WORKSPACE}/stats
```

이 엔드포인트는 다음 URL 매개변수를 허용합니다:

| 매개변수        | 설명                                                                                                                               | 필수    |
| ----------- | -------------------------------------------------------------------------------------------------------------------------------- | ----- |
| `api_key`   | <a href="https://docs.roboflow.com/reference/platform/rest-api/authenticate-with-the-rest-api" class="button primary">API 인증</a> | 예     |
| `startDate` | 시작 날짜 형식: `YYYY-MM-DD` 형식입니다. 데이터는 `2023-08-01` 이후.                                                                              | 예     |
| `endDate`   | 종료 날짜 형식: `YYYY-MM-DD` 형식입니다.                                                                                                    | 예     |
| `프로젝트`      | 결과를 필터링할 프로젝트 슬러그(데이터셋 URL)입니다.                                                                                                  | 선택 사항 |
| `userId`    | 결과를 필터링할 사용자 ID입니다.                                                                                                              | 선택 사항 |

예시 응답:

```json
{
    "data": [
        {
            "approved": 73,
            "boxesDrawn": 127,
            "imagesLabeled": 73,
            "uniqueImagesLabeled": 70,
            "projectId": "projectId123",
            "projectName": "My CV Project",
            "markedNull": 8,
            "modelAssisted": 1,
            "rejected": 2,
            "labelerId": "labelerId123",
            "workspaceId": "workspaceId123",
            "approvalRate": 97.26
        },
        {
            "approved": 0,
            "boxesDrawn": 10,
            "imagesLabeled": 5,
            "uniqueImagesLabeled": 5,
            "projectId": "projectId123",
            "projectName": "My CV Project",
            "markedNull": 0,
            "modelAssisted": 0,
            "rejected": 0,
            "labelerId": "labelerId456",
            "workspaceId": "workspaceId123",
            "approvalRate": null
        }
    ],
    "labelers": [
        {
            "displayName": "Lenny",
            "email": "lenny@roboflow.foo",
            "id": "labelerId123"
        },
        {
            "displayName": "Dana",
            "email": "dana@roboflow.foo",
            "id": "labelerId456"
        }
    ],
    "stats": {
        "numImagesLabeled": 78,
        "numBoxesDrawn": 137,
        "numImagesMarkedNull": 8,
        "totalImagesUsingModelAssist": 1,
        "approvalRate": 97.26
    }
}
```

{% endtab %}
{% endtabs %}

#### Annotation Insights 데이터 구조

이 엔드포인트는 다음 구조의 페이로드를 반환합니다:

* `data`: 프로젝트별로 그룹화된 라벨러별 지표입니다. 각 객체는 단일 프로젝트에서 한 라벨러의 활동을 나타냅니다.
  * `projectId` : 프로젝트 ID( `session.datasetId`).
  * `projectName` : 프로젝트 이름, 다음을 통해 확인됨 `getProjectsByIds`.
  * `projectType` : 프로젝트 유형(예: `"object-detection"`).
  * `labelerId` : 라벨러의 고유 ID입니다.
  * `workspaceId` : 이 세션이 속한 워크스페이스의 ID입니다.
  * `imagesLabeled` : 라벨러가 주석을 생성, 수정, 삭제했거나 null로 표시한 이미지 수입니다. 세션 단위로 계산되므로 여러 날에 걸쳐 작업한 이미지는 한 번 이상 계산될 수 있습니다.
  * `uniqueImagesLabeled` : 날짜 범위 전체에서 각 이미지를 한 번만 계산한 동일한 수치입니다.
  * `boxesDrawn` : 생성된 주석의 순 수입니다(다음과 같음 `boxesAdded - boxesRemoved`).
  * `markedNull` : 라벨러가 명시적으로 null로 표시한 이미지 수입니다.
  * `modelAssisted` : 모델 보조가 사용된 이미지 수입니다.
  * `approved` : 승인된 이미지 수입니다.
  * `rejected` : 이 라벨러/프로젝트 조합에 대한 거부 이벤트 수입니다. 나중에 이미지가 승인되더라도 각 거부는 개별적으로 계산됩니다.
  * `approvalRate` : 1차 승인률 - 한 번도 거부되지 않고 승인된 검토 이미지의 비율입니다. 반환값은 `null` 검토된 이미지가 없을 때입니다.
  * `netBoxesAdded` : 각 세션에서 생성된 새 박스 수의 총합입니다(아래 참고 참조)
  * `netBoxesUpdated` : 현재 다음과 동일함 `boxesUpdated` (일관성을 위해 포함됨).
  * `boxesAdded` : 생성된 주석의 총 수입니다.
  * `boxesRemoved` : 삭제된 주석의 총 수입니다.
  * `boxesUpdated` : 수정된 주석의 총 수입니다.
* `labelers` : 다음에 존재하는 각 라벨러 ID의 메타데이터 `data`.
  * 고유한 항목에서 파생됨 `labelerId`s.
  * `id` : 라벨러의 사용자 ID입니다.
  * `displayName` : 사용자 프로필의 이름입니다.
  * `email` : 이메일 주소입니다.
    * 시스템 라벨러의 경우(예: `autolabelservice`), 자리표시자 값을 반환합니다.
* `메타` : 추가 메타데이터입니다.
  * `notices` : 면책 고지 배열입니다.
    * 현재는 지표가 2023년 8월 1일 이후에만 제공됨을 알리는 항목 하나를 포함합니다.
* `stats` : 모든 세션에 걸친 워크스페이스 수준의 집계 총합입니다.
  * `numImagesLabeled` : 고유 라벨링 이미지의 총 수입니다.
  * `numBoxesDrawn` : 모든 세션에서 생성된 순 주석 수입니다.
  * `numImagesMarkedNull` : 한 번 이상 null로 표시된 이미지입니다.
  * `totalImagesUsingModelAssist` : 모델 보조를 사용해 라벨링된 이미지입니다.
  * `numBoxesAdded` : 생성된 주석의 총 수입니다.
  * `numBoxesRemoved` : 삭제된 주석의 총 수입니다.
  * `numBoxesUpdated` : 수정된 주석의 총 수입니다.
  * `netBoxesAdded`: `numBoxesAdded - numBoxesRemoved`.
  * `netBoxesUpdated`: `numBoxesUpdated` (명명 대칭을 위해 포함됨).
  * `approvalRate` : 모든 라벨러와 프로젝트에 대한 집계 1차 승인률 - 한 번도 거부되지 않고 승인된 검토 이미지의 비율입니다. 반환값은 `null` 검토된 이미지가 없을 때입니다.

{% hint style="info" %}
왜냐하면 `data[].imagesLabeled`  , 라벨러별 집계에서는 각 세션을 별도로 기록하므로, 동일한 이미지가 여러 날에 걸쳐 또는 여러 라벨러에 의해 라벨링된 경우 한 번 이상 계산될 수 있습니다. 다음을 사용하세요 `data[].uniqueImagesLabeled` 각 이미지를 라벨러당 한 번만 계산하려면 사용하세요. 전체 `stats.numImagesLabeled` 필드는 다음에서 파생됩니다 `combinedData` 및 날짜 범위 전체에서 각 고유 이미지를 한 번만 계산합니다. 이 차이는 UI가 어떤 지표를 사용하는지(세션별 vs. 고유 이미지)에 따라 API의 총 이미지 수가 UI에 표시되는 값과 정확히 일치하지 않는 이유를 설명하는 경우가 많습니다.
{% endhint %}

{% hint style="info" %}
`netBoxesAdded` : 각 세션에서 Roboflow는 세션 종료 시점에 존재하는 박스(박스가 추가되었다가 세션 종료 전에 삭제되면, 해당 박스는 계산에 포함되지 않음) 기준으로 추가된 박스를 계산합니다.  `netBoxesAdded` 이 통계는 박스 순 추가 수를 합산합니다(이후 삭제는 반영되지 않음). 따라서 “각 세션에서 생성된 새 박스 수의 총합”의 합과 같으며, 데이터셋의 최종 박스 수와는 다릅니다.
{% endhint %}

### Annotation Insights(레거시 엔드포인트)

{% hint style="danger" %}
이 엔드포인트는 곧 지원 중단될 예정입니다. 새 엔드포인트인 Annotation Stats v2로 업그레이드하세요.
{% endhint %}

Roboflow는 워크스페이스와 프로젝트에 연결된 주석에 대한 통계를 제공합니다. Roboflow 대시보드와 REST API를 통해 주석 인사이트를 볼 수 있습니다.

{% tabs %}
{% tab title="REST API" %}
워크스페이스의 주석 인사이트를 가져오려면 다음 엔드포인트에 GET 요청을 보내세요:

```url
https://api.roboflow.com/workspace-stats
```

이 엔드포인트는 다음 URL 매개변수를 허용합니다:

* `api_key` : 통계를 가져올 워크스페이스의 API 키입니다.
* `start` : 이 날짜부터 통계를 가져옵니다(밀리초 단위 숫자 허용).
* `end` : 이 날짜까지의 통계를 가져옵니다(밀리초 단위 숫자 허용).
* `includeTicks` : true인 경우 그래프용 틱을 포함합니다.
* `projectId` : 지정한 프로젝트에 대한 데이터만 가져옵니다.
* `rawData` : true인 경우 라벨링된 고유 이미지에 대한 원시(집계되지 않은) 데이터를 반환합니다.
* `limit` : 반환할 레코드 수입니다. `rawData` 이어야 합니다 `true`.
* `offset` : 반환될 레코드의 오프셋입니다. `rawData` 이어야 합니다 `true`.

이 엔드포인트는 다음 구조의 페이로드를 반환합니다:

```json
{
    "data": {
        "last_updated": "2023-01-01T20:07:21.057Z",
        "data": [
            {
                "projectId": "project123",
                "projectName": "My CV Project",
                "total_time_spent_annotating_minutes": 24.09,
                "total_images_labeled": 10,
                "total_boxes_created": 0,
                "seconds_per_image": 31,
                "num_images_marked_null": 0,
                "acceptance_rate": 0
            }
        ],
        "labelers": [
            {
                "id": "labelerId123",
                "displayName": "Lenny Raccoon",
                "email": "lenny@roboflow.foo"
            }
        ],
        // includeTicks=true인 경우
        "ticks": [
            {
                "start_ms": 1656929228959,
                "end_ms": 1660867628959,
                "values": {
                    "labelerId123": {
                        "total_time_spent_annotating_minutes": 133.38,
                        "total_images_labeled": 983,
                        "total_boxes_created": 1432,
                        "seconds_per_image": 0
                    }
                }
            }
        ]
    }
}
```

{% endtab %}
{% endtabs %}
