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
[
{
"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タスクを表します。ラベルの英語名が列名になり、アノテーション仕様に定義されているラベルは、対象アノテーションがなくても列として出力されます。
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 列は出力されません。
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: プロジェクトIDtask_id: タスクIDtask_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
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形式では、集計キーと件数を以下のように出力します。
[
{
"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
オーナロールまたはアノテーションユーザロールを持つユーザで実行してください。