[OpenSource] Supervisely 결과 파일 COCO data format으로 변경

SeoK106·2021년 5월 21일
0
post-thumbnail

이미지 분석을 위해 물체를 인식하는 여러가지 방법이 있는데, supervisely를 사용하면 이미지 위에 keypoint를 쉽게 그릴 수 있다.
그러나 supervisely는 COCO dataset으로 output을 주지 않는다는 단점이 있다. 그래서 supervisely output을 COCO dataset format으로 변경하는 Code를 만들었다.

코드 실행에 사용된 환경

  • Python 3.7
  • Anaconda prompt

COCO dataset에 대해 알고 싶다면 아래 webpage를 참조하면 된다.

HowToUse

Supervisely의 workspace에 project를 만든 후 아래의 순서대로 따라가면 된다.

1. 클래스 만들기

class_setting

project의 classes tab에 가서 class를 생성한다.

  • class의 title은 person으로 한다.
  • class의 shape은 keypoints로 한다.
  • keypoints templete을 그린다.
    • node 이름 : {"Head","neck","right shoulder", ...}
    • edge 이름 : {"1,2","2,3",...} --> edge가 연결된 node쌍 : "from,to"
          cf.위의 예시 이미지에서는 1(Head)부터 node를 시작했지만 0부터 시작해도 상관없다. 사용자 마음대로 설정할 수 있는 부분이다.

2. 이미지에 person class를 사용해 keypont를 그리기

skeleton_drawing

왼쪽 메뉴바의 가장 마지막 메뉴가 Add keypoints이다. 선택한 후 이미지의 사람의 모습과 맞도록 조정해준다.
   cf. node와 edge는 생략 가능하다.

3. Supervisely에서 결과파일 다운받기

4. Supervisely to COCO 코드 실행하기

 #Anconda prompt
 
 > python supervisely2coco.py meta_file_path annotation_dir_path dir_path_to_save
 
 * meta_file_path: ~/meta.json
 * annotation_dir_path: ~/ann
 * dir_path_to_save: ~/, default = ./result.json

cf. 코드에서 주석처리된 부분은 사용자에 맞게 수정한 후 실행해야 한다.

Output

result.json
result

cf. 왼쪽은 'sample_1_person.png'이고, 오른쪽은 'smaple_2_person.png'이다.

input_images

profile
Engineer developing with Data

1개의 댓글

comment-user-thumbnail
2023년 4월 7일

올리신 포스트가 도움이 되었습니다:) 마지막 png 그림은 output으로 나온 json 파일로 만든 것인가요? 마지막 png그림을 어떻게 만들어내는지 모르겠습니다 ㅠㅠ

답글 달기