Tech/Computer Vision

[COCO Fifty One] Object detection을 위한 데이터 시각화 (1) : annotation 파일과 image 함께 보기

은가 2022. 4. 26. 09:58

물체 인식을 위해서는

bounding box를 이용한 라벨링, segmentation을 이용한 라벨링 등

사진 속 물체의 위치가 이미 특정 되어 있는 사진-라벨 데이터 셋이 필요하다.

 

 

이때, 라벨 정보는 annotation file 이라는 형태로 저장 되어 있다.

annotation file은 데이터셋에 포함된 모든 이미지의 크기, bounding box의 위치, 카테고리 id 등 metadata 정보를 포함한다.

 

 

예를 들어,

도시의 도로를 배경으로 자동차, 사람, 나무, 가로등을 라벨링한 데이터셋이 있다고 하면

annotation 파일은 각 사진별로 자동차, 사람, 나무, 가로등이 정확히 어느 위치에 존재하는지를 좌표와 id를 이용하여 나타낸다.

 

 

아래는 라벨링된 데이터의 예시이다.

이미지 출처 : COCO dataset 공식 사이트

 

 

 

원래는 위의 그림 처럼 이미지와 라벨을 visualize 하기 위해

OpenCV의 rectangle 함수를 이용하여 직접 한장 한장 띄워 보는 방법을 사용하고 있었는데,

 

 

이때 COCO dataset에서 제공하는 Fifty One이라는 visualization 툴을 사용하면

매우 빠른 속도로, 한꺼번에 모든 이미지를, label에 따라, 만지작만지작 해서 볼 수 있다(개꿀템도 이런 개꿀템이 없음).

 

 

Using Fifty One

아래 코드는 Fifty One을 사용해서 image와 lable을 곧바로 띄워주는 코드이다.

import fiftyone as fo

# TODO : Write down your paths with proper names
name_augmentation1 = "blade_rotate"
data_path = "../Media/" + name_augmentation1 + "/images"
labels_path = "../Media/" + name_augmentation1 + "/annotations/coco_annotations.json"

dataset1 = fo.Dataset.from_dir(
    dataset_type=fo.types.COCODetectionDataset,
    data_path=data_path,
    labels_path=labels_path,
    name=name_augmentation1,
)

print(dataset1)
session = fo.launch_app(dataset1, port=5151)
session.wait()

 

 

Directory paths / naming

나의 경우, Albumentation을 이용하여 data를 augmentation 하는 과정에서 visualization의 필요가 생겼다.

그래서 위의 데이터 폴더의 이름이 augmentation type (ex. _rotate, _resize, _filp) 등으로 정의되어 있다.

 

 

그리고 하위 디렉토리에는 항상 `images`라는 디렉토리와 `annotations`라는 디렉토리를 달고 다녔고,

annotation 파일은 COCO 형식을 따라 항상 json 확장자로 저장했다.

 

 

글로 설명하는것보다는 아래의 파일 구조를 보여주는 것이 좋을 듯 하다.

아래 파일 구조를 참고하여 위 코드의 `#TODO`에서, 자신에게 맞는 path를 설정하면 된다.

├── Media
│   ├── blade_resize
│   ├── blade_rotate
│   │   ├── annotations
│   │   │   ├── coco_annotations.json
│   │   ├── images
│   │   │   ├── {img_xxx}.jpg
│   │   │   ├── {img_yyy}.jpg
│   │   │   ├── {img_zzz}.jpg

 

 

 

 

 

자세한 내용은 해당 사이트를 꼭 방문해 보시길!

 

COCO dataset 공식 사이트 : https://cocodataset.org/#download

Fifty One 공식 사이트 : https://voxel51.com/docs/fiftyone/index.html