1-1. 에이모 JSON 양식
에이모 JSON 구조와 Annotation 필드 구조를 알아보세요.
GT field
{
"annotations": [], // 각 Annotation type 별 Annotation 필드 참조
"attributes": {},
"metadata": {
"height": 1080,
"width": 1920
},
"label": "Classification",
"file_id": "620aea6c1e3c3ccd9cfd8bc9",
"frame_number": 1,
"scene_id": "620aea6c1e3c3ccd9cfd8bc8",
"filename": "image (28).jpeg",
"parent_path": "/batch_5/20220624/daytime",
"last_modifier_id": "5fc7323e8511afbb60e8554b",
"last_workers": {
"라벨링": "5fc7323e8511afbb60e8554b",
"검수": null,
"최종 검수": null
},
"tags": [
"car"
],
"parent_tags": [
"1차작업"
]
}
GT Field Definition
Name | Type | Description | Example |
---|---|---|---|
annotations | list[object] | 어노테이션 정보 | Annotation 필드 참조 |
attributes | object | 작업유형 Classification의 속성 설정 시 classification의 attribute와 동일 Classification이 없으면 {} | { "속성명": "속성값", "속성명": "속성값" } 미설정시 ⇒ {} |
metadata | object | 리소스 유형별 파일 메타데이터 Image : 이미지 크기 PointCloud, Text : {} 빈값 Video : fps (프레임) | # 이미지일 경우{`"height": 1080,"width": 1920` }# 비디오일 경우{ “fps” : 30} |
label | string | 작업 유형 Classification일 경우에만 존재 *작업유형에 Classification이 없으면 field가 존재하지 않음 | “Classification” |
file_id | object | 파일의 아이디 | 620aea6c1e3c3ccd9cfd8bc9 |
scene_id | string | 씬파일의 아이디 * 리소스 유형 Sequence Image, Point Cloud가 아닐경우 field가 존재하지 않음 | 620aea6c1e3c3ccd9cfd8bc8 |
filename | string | 파일명 * 리소스 유형 Sequence Image, Point Cloud의 경우 씬파일 내 프레임에 해당 | image (28).jpeg |
parent_path | string | 파일의 부모 경로 | /batch_5/20220624/daytime |
last_modifier_id | string | 최종 수정자 id | 5fc7323e8511afbb60e8554b |
last_workers | object | 각 단계 별 마지막 작업자 | { "라벨링": "5fc7323e8511afbb60e8554b", "검수": null, "최종 검수": null } |
tags | list[object] | 파일의 태그값 *태그 포함여부 체크하지 않으면 field가 존재하지 않음 | tag 적용 돼있을 시 ⇒ [”car”] tag 미적용 시 ⇒ 필드 없음 |
parent_tags | list[object] | 폴더의 태그값 *태그 포함여부 체크하지 않으면 field가 존재하지 않음 | tag 적용 돼있을 시 ⇒ [”1차작업”] tag 미적용 시 ⇒ 필드 없음 |
Classification
- Classification은 모든 리소스 유형(Single Image(vector), Video 등)에서 사용 가능합니다.
- Classification 정보는 "Annotation" 필드가 아닌 GT 필드에 저장됩니다.
{
"annotations": [],
"attributes": {
"occlusion": "30%미만"
},
"label": "car",
"file_id": "620aea6c1e3c3ccd9cfd8bc9",
"filename": "image (28).jpeg",
"parent_path": "/batch_5/20220624/daytime",
"last_modifier_id": "5fc7323e8511afbb60e8554b",
"metadata": {
"height": 1080,
"width": 1920
},
"last_workers": {
"라벨링": "5fc7323e8511afbb60e8554b",
"검수": null,
"최종 검수": null
}
}
Field Definition
Name | Type | Description | Example |
---|---|---|---|
attributes | object | 작업유형 Classification의 속성 | { "속성명": "속성값", "속성명": "속성값" } |
label | string | 작업 유형 Classification의 클래스 | "car" |
Annotation Field - 공통 필드
{
"annotations": [
{
"id": "1-48f557c0-3fff-4227-bd18-8574ff7f8ad0",
"type": "bbox",
"attributes": {
"is_parked": "y",
"occlusion": "30%"
},
"track_id": "1",
"points": [], // 각 Annotation type 별 정의 참조
"label": "car"
}
]
}
Annotation Field Definition
Name | Type | Description | Example |
---|---|---|---|
id | string | instance의 아이디 | "1-48f557c0-3fff-4227-bd18-8574ff7f8ad0" |
type | string | annotation 유형 | "bbox" |
attributes | object | instance의 속성 (속성명, 속성값) | { "속성명": "속성값", "속성명": "속성값" } 미설정 시 ⇒ {} |
track_id | string | 씬 내에서 프레임 별 동일 인스턴스에 부여되는 인스턴스 번호 *리소스 유형 Sequence Image가 아닐경우 field가 존재하지 않음 | "1" |
points | 인스턴스의 표현 정보 각 annotation type 별 정의 참조 ex. bounding box, poligon: "points" ex. Rodated B-box: "rect" & "degree" ex. keypoint: "keypoints" | ||
label | string | instance의 클래스 | "car" |
Single & Sequence Image (Vector)
Bounding Box
{
"annotations": [
{
"id": "1-48f557c0-3fff-4227-bd18-8574ff7f8ad0",
"type": "bbox",
"attributes": {
"is_parked": "y",
"occlusion": "30%"
},
"track_id": "1",
"points": [
[
297,
307
],
[
1169,
307
],
[
1169,
530
],
[
297,
530
]
],
"label": "car"
}
]
}
Annotation Field Definition
Name | Type | Description | Example | 필수 조 |
---|---|---|---|---|
points | List of point | B-Box 좌표 (좌상단, 우상단, 우하단, 좌하단) * 이미지 좌상단이 (0,0)인 좌표계 | [[297, 307], [1169, 307], [1169, 530], [297, 530]] | 점이 4개여야 함 |
Rotated B-box
{
"annotations": [
{
"id": "48f557c0-3fff-4227-bd18-8574ff7f8ad0",
"type": "obbox_v2",
"attributes": {},
"track_id": "1",
"rect": [
1461,
570,
9,
21
],
"degree": 228.5,
"label": "vehicle"
}
]
}
Annotation Field Definition
Name | Type | Description | Example | 필수조건 |
---|---|---|---|---|
rect | List of Int | x, y = 라벨링 시작점 w = obbox_v2의 width h = obbox_v2의 height | [x, y, w, h] | 점이 4개여야 함 |
degree | float | 각도값 (-89.5 ≤ degree ≤ 270) * degree (radian 아님) | 228.5 |
Keypoint
{
"annotations": [
{
"id": "3-57db6fbe-cbc0-4a4a-a07b-0ef42f328977",
"type": "keypoint",
"attributes": {
"confidence": "1",
"size": "large"
},
"track_id": "1",
"keypoints": {
"PointLabel#1": [
0,
1
],
"PointLabel#2": [
10,
231
],
"PointLabel#3": [
213,
322
]
},
"invisible_keys": [
"PointLabel#2"
],
"label": "damaged"
}
]
}
Annotation Field Definition
Name | Type | Description | Example |
---|---|---|---|
keypoints | list of point | key: 포인트명(설정값), value: 좌표(x,y) 설정된 포인트명 : 해당 포인트의 좌표 (x,y) | { "PointLabel#1": [0,1], "PointLabel#2": [10,231] } |
invisible_keys | list of string | invisible 체크된 키포인트 이름 목록 | ["PointLabel#1", "PointLabel#2"] |
Segmentation
{
"annotations": [
{
"id": "1-9da0e293-d2db-47e5-8e57-0e43bc8b4ae9",
"type": "poly_seg",
"track_id": "1",
"points": [
[
747,
937
],
[
761,
867
],
[
783,
780
],
[
787,
719
],
[
793,
652
],
[
795,
587
],
[
780,
575
],
[
759,
557
],
[
783,
588
],
[
787,
629
],
[
773,
768
],
[
755,
861
],
[
744,
923
]
],
"label": "damaged",
"attributes": {
"confidence": "1",
"size": "large"
}
}
]
}
Annotation Field Definition
Name | Type | Description | Example | 필수조건 |
---|---|---|---|---|
points | list of point | segmentation 내 모든 점의 list (순서대로) | [[747,937],[761,867],[783,780],[787,719]] | 최소 점 3개 이상 |
Polygon
{
"annotations": [
{
"id": "1-20271808-9daa-4133-b338-024258d97a1a",
"type": "polygon",
"track_id": "1",
"points": [
[
747,
937
],
[
761,
867
],
[
783,
780
],
[
787,
719
],
[
793,
652
],
[
795,
587
],
[
780,
575
],
[
759,
557
],
[
783,
588
],
[
787,
629
],
[
773,
768
],
[
755,
861
],
[
744,
923
]
],
"label": "damaged",
"attributes": {
"confidence": "1",
"size": "large"
}
}
]
}
Annotation Field Definition
Name | Type | Description | Example | 필수조건 |
---|---|---|---|---|
points | list of point | polygon내 모든 점의 list (순서대로) | [[x1, y1], [x2,y2], [x3,y3]] | 최소 점 3개 이상 |
Polyline
{
"annotations": [
{
"id": "1-49c4f45d-f90e-4e15-aada-572ed3a4142e",
"type": "polyline",
"track_id": "1",
"points": [
[
747,
937
],
[
761,
867
],
[
783,
780
]
],
"label": "yellow_line",
"attributes": {
"confidence": "1"
}
}
]
}
Annotation Field Definition
Name | Type | Description | Example | 필수조건 |
---|---|---|---|---|
points | list of point | polyline내 모든 점의 list (순서대로) | [[747,937],[761,867],[783,780]] | 최소 점 2개 이상 |
3D Cuboid
{
"annotations": [
{
"id": "1-8831725a-868c-4e48-a7f7-dea7c4c7be35",
"type": "cuboid_2d",
"track_id": "1",
"points": [
[
0,
0
],
[
100,
0
],
[
100,
100
],
[
0,
100
],
[
200,
200
],
[
300,
200
],
[
300,
300
],
[
200,
300
]
],
"label": "damaged",
"attributes": {
"confidence": "1",
"size": "large"
}
}
]
}
Annotation Field Definition
Name | Type | Description | Example | 필수조건 |
---|---|---|---|---|
points | list of point | 육면체 포인트 8개 전면 bbox ⇒ 후면 bbox 순서 | [[0,0], [100,0], [100,100], [0,100], [200,200], [300,200],[300,300],[200,300]] | 점이 8개여야 함 |
Flat Cuboid
{
"annotations": [
{
"id": "6-d971dc14-c030-418f-b1e3-260c45313160",
"type": "cuboid_plain",
"attributes": {},
"track_id": "1",
"points": [
[
1150,
365
],
[
1564,
365
],
[
1564,
591
],
[
1150,
591
]
],
"label": "차량"
}
]
}
Annotation Field Definition
Name | Type | Description | Example | 필수조건 |
---|---|---|---|---|
points | list of point | 점이 4개때 Bbox 점이 6개일때 Bbox 점 4개 + 마우스 누르는 순서로 5번째 위치, 6번째 위치 점 2개 | [[1150, 365], [1564, 365], [1564, 591], [1150, 591]] | 점이 4개 또는 6개여야 함 |
Classification
{
"attributes": {
"occlusion": "30%",
},
"label": "car"
}
Annotation Field Definition
Name | Type | Description | Example |
---|---|---|---|
attributes | object | 세부 속성 정보 | { "subclass": "samba", "is_crowded": "y" } |
label | string | class 정보 | "car" |
Single Image (Pixel)
Segmentation
{
"annotations": [
{
"id": "1-5ca0fc23-027c-4a50-a8d3-0107529bcb91",
"type": "segmentation_mask",
"mask": "23F456T232F234T", //RLE
"bound": [[100, 200], [400, 300]],
"attributes": {
"occlusion": "30%",
},
"label": "car"
}
]
}
Annotation Field Definition
Name | Type | Description | Example | 필수조건 |
---|---|---|---|---|
mask | string | Binary Mask (커스텀 RLE encoding) | 23F456T232F234T | |
bound | list[point] | mask의 boundary 정보 ([좌상단좌표, 우하단 좌표]) | [[100, 100], [300, 500]] | 점이 2개여야 함 |
Point Cloud (LiDAR, RADAR)
3D Cuboid
{
"annotations": [
{
"id": "efed27a1-ac3e-4541-af0c-7abf8be7ae78",
"type": "cuboid",
"attributes": {
"direction": "forward",
"is_walking": "y"
},
"track_id": "1",
"geometry": [
4.760000000000003,
1.92,
1.96
],
"position": [
13.075738648931754,
4.250296285924759,
-0.8600000000000001
],
"rotation": [
0,
0,
3.6739180754480634
],
"pointCount": 6126,
"label": "pedestrian"
}
]
}
Annotation Field Definition
Name | Type | Description | Example |
---|---|---|---|
geometry | list of float | length, width, height | [5.220000000000002, 2.14, 1.7400000000000002] |
position | list of float | x, y, z 중점 | [-18.407794112900135, -2.656089968153442, 0.6299999999999999] |
rotation | list of float | - PI/2 ≤ yaw < PI + PI/2 *단위: radian *회전 범위 degree: 0~269.5도, 0~-90도[x로테이션, y로테이션, z로테이션 (yaw)] 각 로테이션 값은 rad으로 표시 로테이션 범위 : - PI/2 ≤ yaw < PI + PI/2 | [0, 0, 3.6739180754480634] |
pointCout | int | 한 instance 내에 들어있는 포인트 개 | 6126 |
Segmentation
{
"annotations": [
{
"id": "efed27a1-ac3e-4541-af0c-7abf8be7ae78",
"type": "lasso",
"attributes": {
"direction": "forward",
"is_walking": "y"
},
"track_id": "1",
"indices": "111534-3-57-132-3-57-132-3-57-36-96-3",
"label": "pedestrian"
}
]
}
Annotation Field Definition
Name | Type | Description | Example |
---|---|---|---|
indices | string | 포인트클라우드 점의 Index 배열을 문자열로 인코딩한 것 | “34122-192-150-42-150-42-150-42-150-42-150-42-150-42-150-42-150-42-150-42” |
Video
FrameRange
{
"annotations": [
{
"id": "1-82338d78-46b3-4901-971c-a6faff5d10d1",
"type": "frameRange",
"startFrame": 3028,
"endFrame": 3159,
"startTime": 101.03437770103437,
"endTime": 105.23858190523858,
"label": "dance",
"attributes": {
"subclass": "samba"
}
}
]
}
Annotation Field Definition
Name | Type | Description | Example | 필수조건 |
---|---|---|---|---|
startFrame | integer | 구간 시작 프레임 번호 | 3028 | |
endFrame | integer | 구간 끝 프레임 번호 | 3159 | endFrame은 startFrame보다 작을 수 없음 |
startTime | float | 구간 시작 시간 | 101.03437770103437 | |
endFrame | float | 구간 끝 시간 | 105.23858190523858 | endTime은 startTime보다 빠를 수 없음 |
Text
Entity
{
"annotations": [
{
"id": "1-36e5c504-edd8-4028-9ed1-70497152447e",
"type": "entity",
"label": "회사명",
"text": "에이모",
"start": 10,
"end": 20,
"attributes": {
"hand_writed": "y"
}
}
]
}
Annotation Field Definition
Name | Type | Description | Example | 필수조건 |
---|---|---|---|---|
text | string | 선택한 문자열 | "에이모" | |
start | int | 선택한 문자열의 시작 index값 | 10 | |
end | int | 선택한 문자열의 끝 index값 | 15 | end는 start보다 작거나 같을 수 없음 |
다른 질문이 있으신가요? [email protected]으로 문의주세요.
Updated about 2 months ago