2020년 4월 1일 수요일

무료 딥러닝 이미지 및 점군 데이터 라벨링 도구 소개 및 사용방법

이 글은 무료 이미지 및 점군 데이터 라벨링(labeling) 도구를 소개한다. 딥러닝에 필요한 데이터를 라벨링하는 작업은 노가다다.

개요
라벨링은 딥러닝 모델에 입력되는 데이터에 대한 출력이 무엇인지를 정의하는 것을 말한다. 예를 들어, 이미지에서 고양이를 분류한다면, 입력 이미지에서 출력 고양이 경계를 그리고 'cat'이라고 클래스 이름을 붙이는 것을 라벨링 작업이라 한다.

다음은 라벨링 작업이 무엇인지 잘 보여준다.
라벨링 도구 사용 사례

이 작업은 학습용 데이터를 준비하는 수많은 과정 중 하나이다. 다음 순서도는 다른 관련 단계들을 보여준다.
일반적으로 하나의 사진 이미지에 여러 객체를 라벨링하는 작업은 하나의 경계 박스 클릭에 1~2초 정도 걸린다. 한 장당 평균 2~4개의 경계박스를 선택해야 할 경우, 400장이라면, 대략 40분이 걸린다. 이 경우, 라벨링 속도는 10장/분이고, 6초당 1장을 라벨링하는 수준이다. 딥러닝을 위해서는 수천장의 데이터가 필요하므로, 3000장을 준비하려면 약 8시간 정도 시간이 필요하다.

이 경우에도 경계박스가 작은 경우이고, 한장에 많은 객체가 포함되어 있으면 그와 비례해서 많은 시간이 소요될 수 있다. 2차원 이미지에 비해 3차원 점군은 훨씬 더 많은 작업 시간이 필요하다.

라벨링 후에는 딥러닝 모델에 맞는 학습용 데이터 형식으로 변환되어야 한다. 이 부분은 다음 링크를 참고한다.
참고로 여기에서 소개되는 라벨링 도구는 주로 잘 사용하는 것만 공유한 것이다. 나머지 도구는 아래 링크를 참고하길 바란다.
이미지 데이터 라벨링
이미지 라벨링은 크게 각 클래스에 대한 경계박스, 폴리곤을 이용한 세그먼테이션 등으로 구분할 수 있다.

가장 편하게 사용할 수 있는 도구는 BBox Label Tool이다. 이 도구는 다음과 같이 라벨과 경계박스를 입력해 그 결과를 텍스트파일로 저장할 수 있다. 
경계 박스 라벨링(BBox Label Tool)

설치가 가장 간단한 도구로 다음 명령을 통해 쉽게 실행할 수 있다.
BBox_Label_Tool은 메뉴가 간단해 사용이 매우 쉽다. 자세한 사용 방법은 다음 링크를 참고한다.
LabelMe는 경계 박스 뿐 아니라, 폴리곤 등 세그먼테이션을 위한 라벨링까지 가능하다. 설치가 간단하고, 작업방식도 어렵지 않다. png, bmp 등을 지원한다.
폴리곤 이용한 세그먼테이션 라벨링(LabelMe)

Labelbox는 웹사이트에서 실행되고, 경계 박스, 폴리곤 등 라벨링이 가능하다. 다만, 이미지 저작권 체크 및 과금이 존재한다.
Labelbox

Scalabel는 경계박스, 폴리곤 라벨링이 가능하며, 반자동식 폴리곤 라벨링도 지원한다.

CVAT는 세그먼테이션, 경계 박스 등을 포함한 다양한 라벨링 방법을 지원한다. CVAT는 영상 및 이미지에 대한 VOC, COCO 등 다양한 포맷의 라벨링을 지원한다. REST API를 지원하여, 상호운용성이 좋다. 


기타 다음과 같은 라벨링 도구가 있다.
포인트 클라우드 데이터 라벨링
점군 입력 자료를 만들기 위해서는 3차원 점들을 그룹화할 수 있는 라벨링 도구를 이용해야 한다. 라벨링도구를 이용해 딥러닝 학습을 하면, 뭉쳐져 있는 점군에서 객체를 자동으로 인식할 수 있다. 물론, 알고리즘적으로도 가능하나, 점군 기반 딥러닝 기법(다음 링크 참고)은 이보다 더 정교하고 신뢰성있으며 성능 좋은 방법으로 진화되고 있다. 
여기서는 Semantic Segmentation Editor 를 간단히 소개한다. 다음과 같이 설치하고, 실행해 본다.
  • meteor npm install
  • meteor npm start
  • run http://localhost:3000

실행 후에는 private/samples 폴더 아래에 있는 이미지나 점군을 다음과 같이 라벨링할 수 있다.
Semantic Segmentation Editor

JSON VOC file format
점군 라벨링 도구는 다음 링크를 참고한다.
참고 - 점군 라벨링 준비 과정
라벨링을 위해 준비한 점군은 S건물 지하이며, 점군 LoD를 낮추어 180만 포인트 수준으로 처리했다. 처리에 사용된 소프트웨어는 Realworks와 Cloudcompare이다. 

파일 포맷은 PTS이며, 데이터 구조 XYZRGBI로 다음과 같다. 이제 이 점군을 앞서 소개한 라벨링 도구를 이용해 작업한다. 
-8.14260960 3.62140012 56.08124161 200 163 144 1694.000000 
-8.13253975 3.60634995 56.08150864 194 164 136 1678.000000 
-8.12275028 3.59173012 56.08126068 197 168 136 1614.000000 

실제 라벨링에는 매우 많은 노력이 들어간다. 이는 이미지 데이터 라벨링에 비할바가 아니다. 라벨링을 위해서는 객체 클래스에 대한 정확한 이해가 필요하며, 이후, 검수과정도 있어야 한다.

레퍼런스
기타 관련 내용은 아래 링크를 참고한다.

댓글 없음:

댓글 쓰기