Sloth (머신러닝)
본 서비스가 제공하는 내용 및 자료가 사실임을 보증하지 않습니다. 시스템은 언제나 실수를 할 수 있습니다. 중요한 의사결정 및 법리적 해석, 금전적 의사결정에 사용하지 마십시오.
Sloth는 컴퓨터 비전 연구를 위해 이미지와 비디오 데이터에 라벨을 지정하는 오픈소스 도구이다. Python으로 작성되었으며, 단순한 라벨링 도구를 넘어 사용자의 요구에 맞춰 구성할 수 있는 프레임워크 구조를 갖추고 있다. 사각형, 점, 다각형 등 표준 형태의 라벨을 지원하며, 데이터는 주로 JSON 형식으로 관리된다. 2011년 cvhciKIT 그룹에 의해 처음 공개되었다.
개요
Sloth는 컴퓨터 비전 연구에서 이미지와 비디오 데이터에 라벨을 붙이기 위한 도구이다. Python 언어로 개발되었으며, 2011년 6월 10일 GitHub에 처음 공개되었다. cvhciKIT 그룹이 개발을 주도하였으며, 사용자가 자신의 요구사항에 맞게 라벨링 도구를 구성할 수 있는 프레임워크와 표준 구성 요소 세트를 제공하는 것을 목적으로 한다.
주요 기능 및 라벨 구조
Sloth에서 각 라벨은 키-값(key-value) 쌍의 집합으로 구성된다. 모든 라벨에는 class 키가 반드시 포함되어야 하며, 이 값에 따라 해당 라벨의 시각화 방식이 결정된다.
지원 형태 및 데이터 구조
Sloth는 다음과 같은 표준 도형 라벨을 지원한다.
- 사각형(rect): 객체의 영역을 지정할 때 사용한다. 데이터는
{"class": "rect", "x": 10, "y": 30, "width": 40, "height": 50}와 같이 좌표 와 너비, 높이 정보를 포함한다. - 점(point): 특정 지점을 표시할 때 사용한다.
- 다각형(polygon): 복잡한 형태의 객체 경계를 지정할 때 사용한다.
사용자는 클래스 값에 따른 시각화 방식을 직접 매핑하거나 새로운 시각화 항목을 추가할 수 있는 사용자 정의 기능을 활용할 수 있다.
아키텍처
Sloth는 확장성을 위해 컨테이너(Container)와 인서터(Inserter) 개념을 사용한다.
컨테이너 (Containers)
라벨 데이터의 로딩과 저장을 처리한다. AnnotationContainer 기본 클래스는 다음과 같은 주요 함수를 제공한다.
load: 파일에서 어노테이션을 불러온다.save: 어노테이션을 파일로 저장한다.loadImage/loadFrame: 이미지나 비디오 프레임을 불러온다.
인서터 (Inserters)
새로운 라벨을 추가하는 동작을 제어한다. 예를 들어 사각형을 그릴 때는 RectItemInserter를 사용하며, 이는 설정 파일을 통해 지정할 수 있다.
설정 및 사용
Sloth의 설정 파일은 Python 모듈 형태로 작성된다. LABELS 변수 내에 딕셔너리 형태로 라벨 유형, 시각화 아이템, 인서터, 단축키 등을 정의한다.
| 설정 항목 | 설명 |
|---|---|
text | GUI에 표시될 라벨 유형의 이름 |
item | 시각화에 사용될 클래스 |
inserter | 새로운 라벨을 삽입할 때 사용할 클래스 |
hotkey | 해당 라벨 유형을 선택하기 위한 단축키 |
설치는 Python 패키지 관리자인 pip를 통해 pip install sloth 명령으로 수행할 수 있다. 실행 시에는 명령줄에서 sloth 뒤에 라벨 파일을 파라미터로 전달하거나, Python 스크립트 내에서 라이브러리로 호출하여 사용한다.
역사 및 현황
2011년 개발이 시작된 이후 2013년 11월에 v1.0 버전이 릴리스되었다. 2020년 1월까지 유지보수가 이루어졌으며, 총 8명의 기여자가 개발에 참여하였다. 현재는 활발한 업데이트가 이루어지지 않는 상태이나, 초기 오픈소스 라벨링 도구로서 이후 등장한 다양한 도구들에 영향을 주었다. 최근의 LLM 파인튜닝 도구인 Unsloth와는 명칭이 유사하나 서로 관련이 없는 별개의 프로젝트이다.