IT/AI\ML

Annotation과 Annotation의 툴 비교

개발자 두더지 2022. 5. 13. 22:32
728x90

Annotation이란?


 AI에서 이미지 인식등의 작업을 할 때, 이미지에 해석 정보를 추가하게 된다. 이러한 해석 정보를 추가해 지도 학습 데이터를 만드는 작업을 Annotation이라고 부른다. Annotaion은 XML, JSON등을 사용하여, 메타 데이터로 저장하는 경우가 많다.

 Annotation작업을 위한 툴이 굉장히 많으며, github 리포지터리 스타 수, 커밋 수, 최신 커밋 일자 등을 참고하여 몇 가지 추려보았다.

1) LabelImg

https://github.com/tzutalin/labelImg

2) Labelbox

https://github.com/Labelbox/Labelbox

3) VoTT

https://github.com/Microsoft/VoTT/

4) Annotorious

https://github.com/recogito/annotorious

5) VGG Image Annotator

https://gitlab.com/vgg/via/

6) Anno-Mage: A Semi Automatic Image Annotation Tool

https://github.com/virajmavani/semi-auto-image-annotation-tool

 

 

비교


주관적인 느낌의 비교이다.

 

1. labelImg

  • 어플 타입 : 커맨드 실행 혹은 Desktop 어플
  • LICENSE : MIT
  • 입력 포맷 : 로컬 파일
  • 출력 포맷 : PascalVOC 혹은 YOLO
  • 메모 : 아이콘이 있는 어플
  • UI : 사용하기 쉽다. 사각형으로 선택한 영역으로 나오는 보조선이 좋다. 
pyenv uninstall 3.6.5
env PYTHON_CONFIGURE_OPTS="--enable-framework" pyenv install 3.6.5
pip install virtualenv

 

2. Labelbox

  • 어플 타입 : Web 서비스
  • LICENSE : Apache-2.0
  • 입력 포맷 : 로컬 파일, 클라우드(URI의 리스트로 지정)
  • 출력 포맷 : 독자형식, 리포지토리에 있는 툴로 PacaslVOC, COCO 형식으로 변환가능.
  • UI : 익숙해질 때까지 시간이 거릴ㄹ 것 같다. 프론트엔드 UI가 세 종류 준비되어 있으며 그 중 하나가 Annotation용이다. 폴리곤으로 영역을 지정하는 형식.  

 

3. VoTT

  • 어플 타입 : Electron 어플
  • LICENSE : MIT
  • 입력 포맷 : 로컬 파일
  • 출력 포맷 : PascalVOC, YOLO, TFRecord를 포함한 몇 가지 형식

 

4. Annotorious

  • 어플 타입 : Web 어플
  • LICENSE : MIT
  • 입력 포맷 : HTML내에 <img> 태그를 지정
  • 출력 포맷 : 그대로 출력되지 않고 JavaScript API로 제공된다. onAnnotationCreated(annotation) 등의 출력 처리를 작성할 필요가 있음.
  • UI : 심플하고 편집 혹은 삭제가 편리하다.

 

5. via

  • 어플 타입 : Web
  • LICENSE : BSD 2-Caluse "Simplified" License
  • 입력 포맷 : 로컬 파일, URL, URI의 리스트 파일. 여러 개의 로컬 파일을 선택하면 읽어들이기까지의 시간이 걸린다.
  • 출력 포맷 : 독자 형식의 JSON
  • UI : 필요한 기능은 구비되어 있으나, 쓰기 어려운 느낌. 클래스 등록도 스스로 해야한다. 

 

6. semi-auto-image-annotation-tool

  • 어플 타입 : 커맨드로 실행
  • LICENSE : Apach-2.0
  • 입력 포맷 : 로컬 파일
  • 출력 포맷 : 독자 형식(path, x1, y1, x2, y2, category)
  • UI : 쓰기 어려운 느낌이다. 이미지 경계의 확인이 되지 않는다등과 같은 소소한 문제들이 존재한다.

 

 이번의 비교 결과, labelImage가 제일 쓰기 좋았다. 적당히 심플하고 필요한 기능이 구비되어 있어 효율 좋게 Annotation할 수 있었다. 그러나 클래스의 수가 많으면 VoTT가 조금 더 편리하게 사용할 수 있었다. 


참고자료

https://qiita.com/shu-yusa/items/d19ea57e3cf9c4dbdce2

https://qiita.com/PoodleMaster/items/39830656d69d34a39f34

728x90