annotation import#
Description#
アノテーションをプロジェクトにインポートします。 アノテーシンzipまたはzipを展開したディレクトリをインポートできます。 作業中のタスクに対してはインポートできません。
Examples#
インポート対象のアノテーションのフォーマット#
インポート対象のアノテーションのフォーマットは、アノテーションzipまたはzipを展開したディレクトリと同じディレクトリ構成です。
ルートディレクトリ/
├── {task_id}/
│ ├── {input_data_id}.json
│ ├── {input_data_id}/
│ ├── {annotation_id}............ 塗りつぶしPNG画像
{input_data_id}.json のサンプルは以下の通りです。詳細は https://annofab.readme.io/docs/annotation-format を参照してください。
{
"details": [
{
"label": "car",
"data": {
"left_top": {
"x": 878,
"y": 566
},
"right_bottom": {
"x": 1065,
"y": 701
},
"_type": "BoundingBox"
},
"attributes": {}
},
{
"label": "road",
"data": {
"data_uri": "b803193f-827f-4755-8228-e2c67d0786d9",
"_type": "SegmentationV2"
},
"attributes": {}
},
{
"label": "weather",
"data": {
"_type": "Classification"
},
"attributes": {
"sunny": true
}
}
]
}
以下のように annotation_id が指定されている場合、annotation_id もインポートされます。
{
"details": [
{
"label": "car",
"annotation_id": "12345678-abcd-1234-abcd-1234abcd5678",
"data": {
"left_top": {
"x": 878,
"y": 566
},
"right_bottom": {
"x": 1065,
"y": 701
},
"_type": "BoundingBox"
},
"attributes": {}
},
...
]
}
editor_props#
editor_props が指定されている場合、 putAnnotation APIの editor_props としてインポートされます。
editor_props はアノテーションエディタ用のプロパティです。たとえば can_delete に false を指定すると、対応しているエディタ上ではアノテーションを削除できなくなります。
editor_props に指定できるキーは、 putAnnotation API の AnnotationPropsForEditor を参照してください。
{
"details": [
{
"label": "car",
"annotation_id": "12345678-abcd-1234-abcd-1234abcd5678",
"data": {
"left_top": {
"x": 878,
"y": 566
},
"right_bottom": {
"x": 1065,
"y": 701
},
"_type": "BoundingBox"
},
"attributes": {},
"editor_props": {
"can_delete": false,
"can_edit_data": false,
"can_edit_additional": false
}
},
...
]
}
基本的な使い方#
--annotation に、アノテーションzipまたはzipを展開したディレクトリのパスを指定してください。
$ annofabcli annotation import --project_id prj1 --annotation annotation.zip
インポート対象のタスクを指定する場合は、--task_id にインポート対象のタスクのtask_idを指定してください。
$ annofabcli annotation import --project_id prj1 --annotation annotation.zip \
--task_id file://task_id.txt
デフォルトでは、すでにアノテーションが存在する場合はスキップします。
既存のアノテーションを残してインポートする場合は、 --merge を指定してください。
インポート対象のアノテーションのannotation_idが、既存のアノテーションのannotation_idに一致すればアノテーションを上書きします。一致しなければアノテーションを追加します。
$ annofabcli annotation import --project_id prj1 --annotation annotation.zip \
--merge
既存のアノテーションを削除してからインポートする場合は、 --overwrite を指定してください。
$ annofabcli annotation import --project_id prj1 --annotation annotation.zip \
--overwrite
デフォルトでは、休憩中状態のタスクはアノテーションのインポートをスキップします。
休憩中状態のタスクにもインポートする場合は、 --include_break_task を指定してください。
デフォルトでは「担当者が自分自身でない AND 担当者が割れ当てられたことがある」タスクは、アノテーションのインポートをスキップします。
--change_operator_to_me を指定すると、担当者を一時的に自分自身に変更して、アノテーションをインポートすることができます。
$ annofabcli annotation import --project_id prj1 --annotation annotation.zip \
--change_operator_to_me
editor_props をまとめて指定する#
インポートする全アノテーションに同じ editor_props を付与する場合は、 --editor_props を指定してください。
--editor_props で指定できるキーは、 editor_props に指定できるキー を参照してください。
$ annofabcli annotation import --project_id prj1 --annotation annotation.zip \
--editor_props '{"can_delete": false, "can_edit_data": false}'
Usage Details#
アノテーションをインポートします。アノテーションのフォーマットは、Simpleアノテーションと同じフォルダ構成のzipファイルまたはディレクトリです。ただし、作業中状態のタスクはインポートできません。--include_complete_task を指定すれば、完了状態のタスクにもインポートできます。--include_break_task を指定すれば、休憩中状態のタスクにもインポートできます。--include_on_hold_task を指定すれば、保留中状態のタスクにもインポートできます。
usage: annofabcli annotation import [-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] -p PROJECT_ID --annotation
ANNOTATION [-t TASK_ID [TASK_ID ...]]
[--overwrite | --merge]
[--change_operator_to_me]
[--include_complete_task]
[--include_break_task]
[--include_on_hold_task] [--strict]
[--editor_props EDITOR_PROPS]
[--parallelism {2,3,4}]
Named Arguments#
- -p, --project_id
対象のプロジェクトのproject_idを指定します。
- --annotation
Simpleアノテーションと同じフォルダ構成のzipファイル or ディレクトリのパスを指定してください。
- -t, --task_id
対象のタスクのtask_idを指定します。
file://を先頭に付けると、task_idの一覧が記載されたファイルを指定できます。- --overwrite
アノテーションが存在する場合、
--overwriteを指定していれば、すでに存在するアノテーションを削除してインポートします。指定しなければ、アノテーションのインポートをスキップします。- --merge
アノテーションが存在する場合、
--mergeを指定していればアノテーションをannotation_id単位でマージしながらインポートします。annotation_idが一致すればアノテーションを上書き、一致しなければアノテーションを追加します。指定しなければ、アノテーションのインポートをスキップします。- --change_operator_to_me
タスクの担当者を自分自身に変更しないとアノテーションをインポートできない場合(担当者が自分自身でない AND 担当者が割れ当てられたことがあるタスク)は、タスクの担当者を自分自身に変更します。アノテーションをインポートが完了したら、担当者を元に戻します。未指定の場合は、そのようなタスクのアノテーションインポートはスキップされます。
- --include_complete_task
完了状態のタスクに対してもアノテーションをインポートします。未指定の場合は、完了状態のタスクはスキップされます。
- --include_break_task
休憩中状態のタスクに対してもアノテーションをインポートします。未指定の場合は、休憩中状態のタスクはスキップされます。
- --include_on_hold_task
保留中状態のタスクに対してもアノテーションをインポートします。ただし、アノテーションインポート後は保留中状態でなくなる可能性があります。未指定の場合は、保留中状態のタスクはスキップされます。
- --strict
アノテーションJSONに、存在しないラベル名や属性名など適切でない記載が場合、そのアノテーションJSONの登録をスキップします。デフォルトでは、適切でない箇所のみスキップして、できるだけアノテーションを登録するようにします。
- --editor_props
インポートする全アノテーションに付与するエディタ用プロパティをJSON形式で指定します。指定できるキーは
can_delete,can_edit_data,can_edit_additionalです。file://を先頭に付けると、JSON形式のファイルを指定できます。各アノテーションJSONのeditor_propsが指定されている場合は、その値が優先されます。(ex):{"can_delete": false, "can_edit_data": false, "can_edit_additional": false}- --parallelism
Possible choices: 2, 3, 4
並列度。指定しない場合は、逐次的に処理します。ただし
--annotationにZIPファイルを指定した場合は、--parallelismを指定できません。また、--parallelismを指定した場合は、--yesも指定してください。
global optional arguments#
- --yes
処理中に現れる問い合わせに対して、常に
yesと回答します。- --endpoint_url
Annofab WebAPIのエンドポイントを指定します。
Default:
'https://annofab.com'- --annofab_user_id
Annofabにログインする際のユーザーID
- --annofab_password
Annofabにログインする際のパスワード
- --annofab_pat
Annofabにログインする際のパーソナルアクセストークン
- --logdir
ログファイルを保存するディレクトリを指定します。
Default:
.log- --disable_log
ログを無効にします。
- --debug
HTTPリクエストの内容やレスポンスのステータスコードなど、デバッグ用のログが出力されます。
オーナロールを持つユーザで実行してください。