'데이터 엔지니어'로 성장하기

정리하는 걸 좋아하고, 남이 읽으면 더 좋아함

AI/MLOps

데이터 잡부의 MLOps도전기 (2) - 라벨링 툴로 CVAT을 선택한 이유 #VISION

MightyTedKim 2024. 1. 21. 23:57
728x90
반응형
라벨링 툴로 왜 CVAT을 선택했는지 정리했습니다 :)


글의 구조는 아래와 같습니다.

  1. CVAT이 뭐에요?
  2. 선택한 이유는 뭐에요?
  3. 아쉬운 점은 뭐에요?

.
글의 타깃 독자는 아래와 같습니다.

  1. Labeling 툴 도입을 고민하시는 분
  2. CVAT을 사용하시는 분
  3. CVAT 도입을 고민하시는 분

.
지난 포스팅에서는 Vision MLOps 프로젝트에 투입된 배경에 대해서 정리했어요
https://mightytedkim.tistory.com/205

데이터 잡부의  도전기 #Vision#CVAT#Nuclio

23년 하반기는 힘들었지만 재미있었어요. 새로운 분야를 접했거든요 '데이터 잡부'의 도전에 대해 정리하려 합니다 :) 글의 구조는 아래와 같습니다. 원래 하던 업무 (pipeline) 제안받은 업무 (MLops)

mightytedkim.tistory.com

 
오늘은 선택한 여러 오픈소스 중에서 CVAT을 선택한 이유에 대해 정리하려 합니다.
 

1. CVAT이 뭐에요?

Intel에서 5년동안 개발하다가, 2022년부터 OpenCV에서 관리하는 Web 기반 Labeling툴이에요.

opencv 밑에서 빠르게 발전하고 있는 CVAT, 10.8k starts, 2.7k forks

2024년 현재 2.9.2까지 나왔고 아주 빠르게 버전이 올라가고 있어요
 

2. 선택한 이유는 뭐에요?

여러 이유가 있겠지만 제가 CVAT을 선택한 이유는 아래와 같아요
 

2-1. 수동 라벨링이 가능해요

- 기본적인 Classification. Object Detection, Segmentation을 지원할 뿐 아니라
Brush, Interactor, Tracker 등 Labeling을 편하게 할 수 있는 다양한 방법들을 지원해요

https://blog.roboflow.com/cvat/

Interactor를 사용하면 자동으로 Segmentation을 진행해주기도해요.

Interactor 사용하기 (with SAM)

2-2. 자동 라벨링이 가능해요

동영상이나 이미지를 model을 이용해 라벨링이 가능해요

https://developnote-blog.tistory.com/entry/Vision-엔지니어의-Yolo-도전기-CVAT을-통한-Auto-Labeling

자체 Inferencing을 사용하는게 아니라, 고성능 FaaS인 Nuclio를 사용해요
 

https://developnote-blog.tistory.com/198

 

2-3. 개발 환경 세팅이 쉬워요

docker-compose up으로 개발 환경을 세팅할 수 있어요.
kubernetes가 없더라도 노트북에서 후딱 가능하다는게 장점이에요.
물론 k8s에는 helm으로 배포가 잘 됩니다.

docker-compose up -d가 끝

 

2-4. Dataset 저장 호환성

Dataset Export 플러그인을 제공하는데, Datumaro를 사용해요.
없으면 만들어서 사용할 수 있다는 장점이 있어요
* coco, pascal, imagenet, yolo 등 다양하게 있어요

 
 
 

3. 아쉬운 점은 뭐에요?

 
1. UI가 안이뻐요.

fifyone과 같은 경쟁자와 비교하면 확실히 안이뻐요.
.

CVAT VS FIFYONE

 
2. 이미지 대량 호출시 성능 이슈
이미지 라벨링을 수천장 하게 되면 불러오는데 시간이 걸려요.
물론 브라우저 부하는 페이징이 되지만, 이 부분이 아쉽더라고요
 
3. 초반에는 어려운 구조
Project > Task > Job의 구조는 처음 사용하는 사람들을 당황하게 해요.
 
4. 자체 dataset format이 있음 (장점이자 단점)
만약 coco dataset을 사용하고, CVAT을 이용해 수동라벨링하고, Yolo로 학습을 한다면
좌표 변환을 3번해야해요.

  • COCO: x_min, y_min, width, height
  • CVAT: x_min, y_min, x_max, y_max (coco와 비슷하지만 size가 아닌 좌표)
  • YOLO: x_center y_center, width, height (아예 중간에서 부터 시작)
S

물론 CVAT 자체적으로 import/export를 이용할 수도 있겠지만, API 연동을 한다면 머리가 아픕니다.
하지만 하나로 통일을 해야하고, CVAT을 사용한다면 CVAT형식을 사용하는게 장점이 될 수 있어요
 
 

마무리

CVAT에 대해서 빠르게 훑었다면 다음 글에서는 CVAT의 구조가 어떻게 되어있고,
Session 관리와 부하 분산을 어떻게 하는지 등의 코드 레벨 리뷰를 살짝 해볼게요.
그리고 시간이 된다면 폐쇄망에서 설치하는 방법에 대해 정리해보려 합니다
 
 
 
https://developnote-blog.tistory.com/167

Kubernetes에 CVAT 설치하기 - Helm으로 CVAT 설치

Kubernetes에 CVAT 설치하기 Yolo 모델 학습에 도전하였던 포스팅에서 Auto Labeling Tool로 CVAT을 사용하였습니다. [Vision] 엔지니어의 Yolo 도전기(1) - CVAT을 통한 Auto Labeling 엔지니어의 Yolo 도전기 회사에서

developnote-blog.tistory.com

https://developnote-blog.tistory.com/entry/Vision-%EC%97%94%EC%A7%80%EB%8B%88%EC%96%B4%EC%9D%98-Yolo-%EB%8F%84%EC%A0%84%EA%B8%B0-CVAT%EC%9D%84-%ED%86%B5%ED%95%9C-Auto-Labeling

[Vision] 엔지니어의 Yolo 도전기(1) - CVAT을 통한 Auto Labeling

엔지니어의 Yolo 도전기 회사에서 Vision 관련 프로젝트를 진행할 수 있다는 소식이 전해졌습니다. AI로 강아지와 고양이를 비교하는 예시만 많이 들었지 Vision은 저에게는 미지의 세계였습니다. 팀

developnote-blog.tistory.com

https://www.v7labs.com/blog/cvat-guide

CVAT: Annotation Tool for Computer Vision [2023 Tutorial]

Learn about the Computer Vision Annotation Tool (CVAT), a software tool for annotating images for computer vision tasks. See how to install and use CVAT.

www.v7labs.com

https://hoya012.github.io/blog/Tutorials-of-Object-Detection-Using-Deep-Learning-labeling/

Tutorials of Object Detection using Deep Learning [8] Object Detection Labeling Guide

Deep Learning을 이용한 Object detection Tutorial - [8] Object Detection Labeling에 대한 설명과 Tool 사용법 등을 소개드립니다.

hoya012.github.io

https://velog.io/@periachronicle/2022.7.19-%EC%B0%A8%EB%9F%89%EB%B2%88%ED%98%B8%ED%8C%90-%EC%98%A4%EB%B8%8C%EC%A0%9D%ED%8A%B8-%EB%94%94%ED%85%8D%EC%85%98-%ED%94%84%EB%A1%9C%EC%A0%9D%ED%8A%B8-2%EC%9D%BC%EC%B0%A8

2022.7.19 차량,번호판 오브젝트 디텍션 프로젝트 2일차

현재 정규화된 coco형태의 bbox값을 yolo5모델학습을 위해 yolo형태로 바꿔주어야 한다.학습한내용실행결과0=car1=plate 학습한 내용 중 어려웠던 점 또는 해결못한 것들해결방법 작성학습 소감

velog.io

S

728x90
반응형