라벨링 툴로 왜 CVAT을 선택했는지 정리했습니다 :)
글의 구조는 아래와 같습니다.
- CVAT이 뭐에요?
- 선택한 이유는 뭐에요?
- 아쉬운 점은 뭐에요?
.
글의 타깃 독자는 아래와 같습니다.
- Labeling 툴 도입을 고민하시는 분
- CVAT을 사용하시는 분
- CVAT 도입을 고민하시는 분
.
지난 포스팅에서는 Vision MLOps 프로젝트에 투입된 배경에 대해서 정리했어요
https://mightytedkim.tistory.com/205
오늘은 선택한 여러 오픈소스 중에서 CVAT을 선택한 이유에 대해 정리하려 합니다.
1. CVAT이 뭐에요?
Intel에서 5년동안 개발하다가, 2022년부터 OpenCV에서 관리하는 Web 기반 Labeling툴이에요.
2024년 현재 2.9.2까지 나왔고 아주 빠르게 버전이 올라가고 있어요
2. 선택한 이유는 뭐에요?
여러 이유가 있겠지만 제가 CVAT을 선택한 이유는 아래와 같아요
2-1. 수동 라벨링이 가능해요
- 기본적인 Classification. Object Detection, Segmentation을 지원할 뿐 아니라
Brush, Interactor, Tracker 등 Labeling을 편하게 할 수 있는 다양한 방법들을 지원해요
Interactor를 사용하면 자동으로 Segmentation을 진행해주기도해요.
2-2. 자동 라벨링이 가능해요
동영상이나 이미지를 model을 이용해 라벨링이 가능해요
자체 Inferencing을 사용하는게 아니라, 고성능 FaaS인 Nuclio를 사용해요
2-3. 개발 환경 세팅이 쉬워요
docker-compose up으로 개발 환경을 세팅할 수 있어요.
kubernetes가 없더라도 노트북에서 후딱 가능하다는게 장점이에요.
물론 k8s에는 helm으로 배포가 잘 됩니다.
2-4. Dataset 저장 호환성
Dataset Export 플러그인을 제공하는데, Datumaro를 사용해요.
없으면 만들어서 사용할 수 있다는 장점이 있어요
* coco, pascal, imagenet, yolo 등 다양하게 있어요
3. 아쉬운 점은 뭐에요?
1. UI가 안이뻐요.
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 (아예 중간에서 부터 시작)
물론 CVAT 자체적으로 import/export를 이용할 수도 있겠지만, API 연동을 한다면 머리가 아픕니다.
하지만 하나로 통일을 해야하고, CVAT을 사용한다면 CVAT형식을 사용하는게 장점이 될 수 있어요
마무리
CVAT에 대해서 빠르게 훑었다면 다음 글에서는 CVAT의 구조가 어떻게 되어있고,
Session 관리와 부하 분산을 어떻게 하는지 등의 코드 레벨 리뷰를 살짝 해볼게요.
그리고 시간이 된다면 폐쇄망에서 설치하는 방법에 대해 정리해보려 합니다
- https://developnote-blog.tistory.com/167
https://www.v7labs.com/blog/cvat-guide
https://hoya012.github.io/blog/Tutorials-of-Object-Detection-Using-Deep-Learning-labeling/
S
'AI > MLOps' 카테고리의 다른 글
데이터 잡부의 MLOps도전기 (4) - 모델 배포를 위해 FaaS를 실행해보자_Nuclio (3) | 2024.04.28 |
---|---|
데이터 잡부의 MLOps도전기 (3) - 모델 배포를 위해 FaaS를 도입해보자 #Nuclio (1) | 2024.03.31 |
데이터 잡부의 MLOps도전기 (1) #이미지 불량탐지 (6) | 2024.01.07 |
Bentoml) Yatai 1.0 에서 무엇이 바뀌었을까 (0) | 2022.10.10 |
Mlflow) python, airflow로 테스트해보기 (0) | 2022.06.26 |