アノテーションのインポート
アノテーションデータの取り込み方法について説明します。
インポート条件について
アノテーションをインポートするには、予めタスクとアノテーションクラスが作成されている必要があります。
アノテーションをインポートする
プロジェクトの左サイドメニューで[インポート]をクリックして、アノテーションのインポート画面を開きます。


アノテーション情報が記載されたファイル(入力形式参照)をアップロードします。インポート処理の進行状況は[インポート履歴]で確認できます。[更新]アイコンをクリックすることで最新の処理状況が確認できます。


入力形式
インポート可能なファイル形式は以下になります(プロジェクトによってサポート対象は異なります)。
- JSON
- CSV
- COCO
- YOLO
- Labelme
- PascalVOC
- TFRecord
- マスク - セマンティック
入力形式サンプル
JSON
[
{
"name": "cat.jpg", // タスクの名前と一致させる
"annotations": [
{
"type": "bbox", // polygon, keypoint, line, segmentation, cuboid
"value": "body", // アノテーションクラスの値と一致させる
"attributes": [
{
"key": "size", // 属性のキーと一致させる
"value": "medium"
}
],
"points": [
49.5,
84.38,
174.65,
216
]
}
]
},
{
"name": "dog.jpg",
"annotations": [
{
"type": "bbox",
"value": "body",
"attributes": [
{
"key": "size",
"value": "large"
}
],
"points": [
24.3,
129.03,
134.92,
168.91
]
},
{
"type": "bbox",
"value": "head",
"color": "#2e3df2",
"points": [
132.28,
11.8,
244.44,
142.03
]
}
]
}
]
CSV
Name
: タスクの名前と一致させる必要がありますValue
: アノテーションクラスの値と一致させる必要がありますAttributes
のkey
: 属性のキーと一致させる必要があります
"Name","Value","x1","y1","x2","y2","Attributes"
"cat.jpg","body","49.5","84.38","174.65","216","[{""key"":""size"",""value"":""medium""}]"
"dog.jpg","head","132.28","11.8","244.44","142.03",
"dog.jpg","body","24.3","129.03","134.92","168.91","[{""key"":""size"",""value"":""large""}]"
COCO
{
"images": [
{
"file_name": "cat.jpg", // タスクの名前と一致させる
"id": 1
},
{
"file_name": "dog.jpg",
"id": 2
}
],
"categories": [
{
"id": 1,
"supercategory": "body" // アノテーションクラスの値と一致させる
},
{
"id": 2,
"supercategory": "head"
}
],
"annotations": [
{
"segmentation": [
[
49.5,
84.38,
174.65,
216
]
],
"image_id": 1,
"category_id": 1,
"id": 1
},
{
"segmentation": [
[
24.3,
129.03,
134.92,
168.91
]
],
"image_id": 2,
"category_id": 1,
"id": 2
},
{
"segmentation": [
[
132.28,
11.8,
244.44,
142.03
]
],
"image_id": 2,
"category_id": 2,
"id": 3
}
]
}
YOLO
classes.txt
及び 各タスクに対応するファイル(cat.txt
やdog.txt
)をZIP化したものを入力とします。例えば、以下のような構造のファイルをZIP化してアップロードします。
.
├── classes.txt
├── cat.txt
└── dog.txt
classes.txt
の値: アノテーションクラスの値と一致させる必要があります- 各タスクに対応するファイル名: タスクの名前と一致させる必要があります
body
head
1 0.6472852 0.4445953 0.3854295 0.7527745
0 0.2735738 0.8610982 0.3801374 0.2305202
0 0.4981111 0.6675111 0.5562222 0.5849777
Labelme
{
"shapes": [
{
"label": "body", // アノテーションクラスの値と一致させる
"points": [
[
49.5,
84.38
],
[
174.65,
216
]
]
}
],
"imagePath": "cat.jpg", // タスクの名前と一致させる
}
{
"shapes": [
{
"label": "head",
"points": [
[
132.28,
11.8
],
[
244.44,
142.03
]
]
},
{
"label": "body",
"points": [
[
24.3,
129.03
],
[
134.92,
168.91
]
]
}
],
"imagePath": "dog.jpg"
}
PascalVOC
<annotation>
<filename>cat.jpg</filename> // タスクの名前と一致させる
<object>
<name>body</name> // アノテーションクラスの値と一致させる
<bndbox>
<xmin>49</xmin>
<ymin>84</ymin>
<xmax>174</xmax>
<ymax>216</ymax>
</bndbox>
</object>
</annotation>
<annotation>
<filename>dog.jpg</filename>
<segmented>0</segmented>
<object>
<name>head</name>
<bndbox>
<xmin>132</xmin>
<ymin>11</ymin>
<xmax>244</xmax>
<ymax>142</ymax>
</bndbox>
</object>
<object>
<name>body</name>
<bndbox>
<xmin>24</xmin>
<ymin>129</ymin>
<xmax>134</xmax>
<ymax>168</ymax>
</bndbox>
</object>
</annotation>
TFRecord
各タスクに対応するファイル(cat.tfrecord
やdog.tfrecord
)をZIP化したものを入力とします。例えば、以下のような構造のファイルをZIP化してアップロードします。
.
├── cat.tfrecord
└── dog.tfrecord
下記にTFRecordをデコードした中身をサンプルファイルとして表示しています。
features {
feature {
key: "image/filename"
value {
bytes_list {
value: "cat.jpg" // タスクの名前と一致させる
}
}
}
feature {
key: "image/height"
value {
int64_list {
value: 225
}
}
}
feature {
key: "image/object/bbox/xmax"
value {
float_list {
value: 0.2177777737379074
}
}
}
feature {
key: "image/object/bbox/xmin"
value {
float_list {
value: 0.7733333110809326
}
}
}
feature {
key: "image/object/bbox/ymax"
value {
float_list {
value: 0.3733333349227905
}
}
}
feature {
key: "image/object/bbox/ymin"
value {
float_list {
value: 0.9599999785423279
}
}
}
feature {
key: "image/object/class/text"
value {
bytes_list {
value: "body" // アノテーションクラスの値と一致させる
}
}
}
feature {
key: "image/width"
value {
int64_list {
value: 225
}
}
}
}
features {
feature {
key: "image/filename"
value {
bytes_list {
value: "dog.jpg"
}
}
}
feature {
key: "image/height"
value {
int64_list {
value: 173
}
}
}
feature {
key: "image/object/bbox/xmax"
value {
float_list {
value: 0.8399999737739563
value: 0.46364259719848633
}
}
}
feature {
key: "image/object/bbox/xmin"
value {
float_list {
value: 0.4545704424381256
value: 0.08350515365600586
}
}
}
feature {
key: "image/object/bbox/ymax"
value {
float_list {
value: 0.8209826350212097
value: 0.9763583540916443
}
}
}
feature {
key: "image/object/bbox/ymin"
value {
float_list {
value: 0.06820809096097946
value: 0.7458381652832031
}
}
}
feature {
key: "image/object/class/text"
value {
bytes_list {
value: "head"
value: "body"
}
}
}
feature {
key: "image/width"
value {
int64_list {
value: 291
}
}
}
}
マスク画像 - セマンティック
各タスクに対応するファイル(bird.png
など)をZIP化したものを入力とします。アップロードする際に下記の点に注意してください。
- マスク画像のファイル名は、登録されているタスクの名前(拡張子を除く)と一致させる必要があります。
- マスク画像がインデックスカラーの場合、マスク画像のインデックス番号(1, 2, 3, ..., n)が、登録されているアノテーションクラスの順番に対応します。
- マスク画像がダイレクトカラー(各ピクセルでRGB値を持つ)の場合、マスク画像のRGB値が、登録されているアノテーションクラスのカラーコードに対応します。


Updated 6 days ago