annotation_zip count_annotation_by_label#

Description#

ラベルごとにアノテーション数を出力します。

アノテーション数は、ダウンロードしたアノテーションZIPから算出します。

Examples#

基本的な使い方#

$ annofabcli annotation_zip count_annotation_by_label --project_id prj1 --output out.json --format pretty_json
out.json#
[
{
    "annotation_count": 70,
    "annotation_count_by_label": {
        "car": 60,
        "bike": 10
    },
    "project_id": "project1",
    "task_id": "task1",
    "task_phase": "acceptance",
    "task_phase_stage": 1,
    "task_status": "complete",
    "input_data_count": 10
}
]

デフォルトではタスク単位でアノテーション数を集計します。入力データ単位に集計する場合は、 --group_by input_data_id を指定してください。

集計単位#

--group_by には以下の値を指定できます。

  • task_id: タスク単位の詳細を出力します(デフォルト)。

  • input_data_id: 入力データ単位の詳細を出力します。

  • project_id: プロジェクト全体を1行に集計します。

  • task_phase: タスクフェーズごとに集計します。

  • task_phase_stage: タスクフェーズの段階ごとに集計します。

  • task_status: タスクステータスごとに集計します。

  • task_metadata.<key>: 指定したタスクメタデータの値ごとに集計します。

task_phase 、 task_phase_stage 、 task_status 、 task_metadata.<key> は複数指定できます。 サマリーには、各グループに含まれるタスク数を表す task_count と入力データ数を表す input_data_count が出力されます。

task_id 、 input_data_id 、 project_id は単独で指定してください。これらを他の値と同時に指定すると、コマンドラインエラーになります。

タスクメタデータで集計するには --project_id が必要です。指定したキーが存在しないタスクは、メタデータ値が空のグループに集計されます。

--annotation にアノテーションzipまたはzipを展開したディレクトリを指定できます。

タスクメタデータを出力する#

--with_task_metadata を指定すると、タスクのメタデータをすべて出力します。

CSVでは task_id の直後に、対象タスクのいずれかに存在するキーを task_metadata.<key> 形式の列として出力します。キーがタスクに存在しない場合、そのセルは空になります。

JSONでは、タスクのメタデータ全体を task_metadata オブジェクトに出力します。

$ annofabcli annotation_zip count_annotation_by_label --project_id prj1 --annotation annotation.zip --output out.csv

CSV出力#

$ annofabcli annotation_zip count_annotation_by_label --project_id prj1 --group_by task_id --output out_by_task_label.csv

デフォルトの --group_by task_id では、1行が1タスクを表します。ラベルの英語名が列名になり、アノテーション仕様に定義されているラベルは、対象アノテーションがなくても列として出力されます。

out_by_task.csv#

project_id

task_id

task_phase

task_phase_stage

task_status

input_data_count

annotation_count

car

bike

prj1

task1

acceptance

1

complete

10

70

60

10

annotation_count は、出力されるラベル列の合計です。上記の例では、 60 + 10 = 70 です。

--label_name を指定すると、指定したラベルだけを出力します。 annotation_count は指定ラベル列の合計です。

$ annofabcli annotation_zip count_annotation_by_label --project_id prj1 \
  --label_name car bike --output out_by_task_label.csv

--group_by input_data_id を指定すると、1行が1入力データを表します。 input_data_id 、 input_data_name 、 frame_no 、 updated_datetime 列が追加され、 input_data_count 列は出力されません。

out_by_input_data.csv#

project_id

task_id

task_phase

task_phase_stage

task_status

input_data_id

input_data_name

frame_no

updated_datetime

annotation_count

car

bike

prj1

task1

acceptance

1

complete

input1

image1.jpg

1

2024-01-01T00:00:00.000+09:00

7

6

1

各列の意味は以下のとおりです。

  • project_id: プロジェクトID

  • task_id: タスクID

  • task_phase: タスクフェーズ

  • task_phase_stage: タスクフェーズの段階

  • task_status: タスクステータス

  • input_data_count: タスクに含まれる入力データ数( --group_by task_id の場合のみ)

  • input_data_id: 入力データID( --group_by input_data_id の場合のみ)

  • input_data_name: 入力データ名( --group_by input_data_id の場合のみ)

  • frame_no: タスク内における入力データの順番(1始まり)( --group_by input_data_id の場合のみ)

  • updated_datetime: アノテーションJSONの更新日時( --group_by input_data_id の場合のみ)

  • annotation_count: 出力されるラベル列のアノテーション数の合計

  • <label_name>: ラベルの英語名ごとのアノテーション数

入力データあたりのアノテーション数を出力する#

--group_by task_id かつ --format csv のとき、 --with_per_input_data を指定すると、入力データあたりのアノテーション数を追加で出力します。 動画プロジェクトでは、フレームあたりの平均アノテーション数として利用できます。

$ annofabcli annotation_zip count_annotation_by_label --project_id prj1 \
  --group_by task_id --with_per_input_data --output out_by_task_label.csv

追加される列名は per_input_data.<label_name> 形式です。 ラベル列の合計に対する入力データあたりの値は per_input_data.annotation_count 列に出力されます。

タスクのフェーズとステータスごとに集計する#

$ annofabcli annotation_zip count_annotation_by_label --project_id prj1 \
  --group_by task_phase task_status --output out_by_status.csv
out_by_status.csv#

task_phase

task_status

task_count

input_data_count

annotation_count

car

bike

annotation

complete

100

1000

1200

1000

200

inspection

complete

80

800

800

650

150

JSON形式では、集計キーと件数を以下のように出力します。

out_by_status.json#
[
    {
        "task_phase": "annotation",
        "task_status": "complete",
        "task_count": 100,
        "input_data_count": 1000,
        "annotation_count": 1200,
        "annotation_count_by_label": {
            "car": 1000,
            "bike": 200
        }
    }
]

タスクメタデータの値ごとに集計する#

$ annofabcli annotation_zip count_annotation_by_label --project_id prj1 \
  --group_by task_metadata.customer task_status --output out_by_customer.csv

Command line options#

ラベルごとにアノテーション数を出力します。

usage: annofabcli annotation_zip count_annotation_by_label [-h] [--yes]
                                                           [--endpoint_url ENDPOINT_URL]
                                                           [--annofab_user_id ANNOFAB_USER_ID]
                                                           [--annofab_password ANNOFAB_PASSWORD]
                                                           [--annofab_pat ANNOFAB_PAT]
                                                           [--logdir LOGDIR]
                                                           [--disable_log]
                                                           [--debug]
                                                           [--annotation ANNOTATION]
                                                           -p PROJECT_ID
                                                           [--group_by GROUP_BY [GROUP_BY ...]]
                                                           [-f {csv,json,pretty_json}]
                                                           [-o OUTPUT]
                                                           [-tq TASK_QUERY]
                                                           [-t TASK_ID [TASK_ID ...]]
                                                           [--latest]
                                                           [--temp_dir TEMP_DIR]
                                                           [--with_task_metadata]
                                                           [--with_per_input_data]
                                                           [--use_japanese_name]
                                                           [--label_name LABEL_NAME [LABEL_NAME ...]]

Named Arguments#

--annotation

アノテーションzip、またはzipを展開したディレクトリを指定します。指定しない場合はAnnofabからダウンロードします。

-p, --project_id

対象のプロジェクトのproject_idを指定します。

--group_by

アノテーションの個数を集約する項目を指定します。指定できる値は task_id, input_data_id, project_id, task_phase, task_phase_stage, task_status, task_metadata.<key> です。サマリー項目は複数指定できます。

Default: ['task_id']

-f, --format

Possible choices: csv, json, pretty_json

出力フォーマットを指定します。

Default: 'csv'

-o, --output

出力先のファイルパスを指定します。未指定の場合は、標準出力に出力されます。

-tq, --task_query

集計対象タスクを絞り込むためのクエリ条件をJSON形式で指定します。使用できるキーは task_id, status, phase, phase_stage です。 file:// を先頭に付けると、JSON形式のファイルを指定できます。

-t, --task_id

対象のタスクのtask_idを指定します。 file:// を先頭に付けると、task_idの一覧が記載されたファイルを指定できます。ファイルを読み込む場合は、ファイル指定を1個だけ渡してください。直接指定するIDや別のファイル指定とは併用できません。

--latest

--annotation を指定しないとき、最新のアノテーションzipを参照します。このオプションを指定すると、アノテーションzipを更新するのに数分待ちます。

Default: False

--temp_dir

指定したディレクトリに、アノテーションZIPなどの一時ファイルをダウンロードします。

--with_task_metadata

タスクメタデータを出力します。CSVでは task_metadata.<key> 列、JSONでは task_metadata キーに出力します。

Default: False

--with_per_input_data

タスク単位CSVに入力データあたりのアノテーション数を追加で出力します。動画プロジェクトではフレームあたりの平均として利用できます。

Default: False

--use_japanese_name

ラベル名、属性名、選択肢名をアノテーション仕様に登録されている日本語名で出力します。日本語名がない場合は英語名を出力します。

Default: False

--label_name

集計対象とするラベルの英語名を指定します。指定したラベルに属するアノテーションのみが集計対象になります。 file:// を先頭に付けると、ラベル名が記載されたファイルを指定できます。 ファイルを読み込む場合は、ファイル指定を1個だけ渡してください。直接指定する値や別のファイル指定とは併用できません。

common options (after the subcommand)#

--yes

処理中に現れる問い合わせに対して、常に yes と回答します。

Default: False

--endpoint_url

Annofab WebAPIのエンドポイントを指定します。

--annofab_user_id

Annofabにログインする際のユーザーID

--annofab_password

Annofabにログインする際のパスワード

--annofab_pat

Annofabにログインする際のパーソナルアクセストークン

--logdir

ログファイルを保存するディレクトリを指定します。

Default: .log

--disable_log

ログを無効にします。

Default: False

--debug

HTTPリクエストの内容やレスポンスのステータスコードなど、デバッグ用のログが出力されます。

Default: False

オーナロールまたはアノテーションユーザロールを持つユーザで実行してください。