til
COCO dataset 소수점 자리수
주먹불끈
2022. 12. 3. 21:09
개요
COCO JSON에서 Object detection annotation에서 사용하는 필드의 소수점을 알아본다.
TL;DR
- segmentation의 좌표정보는 최대 소수점 2자리로 한다
- area 정보는 최대 소수점 16자리로 한다.
준비
Annotation dataset 준비
- 다운로드 페이지: https://cocodataset.org/#download
- 다운로드 링크: http://images.cocodataset.org/annotations/annotations_trainval2017.zip
- 다운로드 후 instance_val2017.json 을 이용하여 알아봄
찾으려는 정보
링크: https://haobin-tan.netlify.app/ai/computer-vision/object-detection/coco-dataset-format/
결론: 여기에선 segmentation 정보와 area 정보만 있으면 될 것 같다.
annotations 를 추출해보자
segmentations 는 소수점 2자리
$ cat instances_val2017.json | jq '.annotations[1]'
{
"segmentation": [
[
289.74,
443.39,
384.68,
480,
중략...,
291.88,
443.74
]
],
"area": 27718.476299999995,
"iscrowd": 0,
"image_id": 61471,
"bbox": [
272.1,
200.23,
151.97,
279.77
],
"category_id": 18,
"id": 1773
}
area 필드의 최대 소수점 자리를 확인해보자
area는 최대 소수점 16자리
$ cat instances_val2017.json | \
jq '.annotations' | \
grep -m 10000 area | \
awk '{split($0,a,"."); print a[2]}' | \
awk -F, '{l=length($1)};l>max{max=l;val=$1}END{print val, max}'
1240499999999645 16
스크립트 간단 설명
$ cat instances_val2017.json | \ # 출력
jq '.annotations' | \ # jq로 annotation 필드를 추출
grep -m 10000 area | \ # 그 중에서 area 필드만 추출
awk '{split($0,a,"."); print a[2]}' | \ # 소수점 이하만 추출
awk -F, '{l=length($1)};l>max{max=l;val=$1}END{print val, max}' # 최대 문자열 찾기
1240499999999645 16
반응형