모델이 찾아낸 사물을 화면에 그리고 데이터셋을 정리하는 일, 한 번에 처리합니다
이미지나 영상에서 사물을 찾아내는 모델은 있지만, 그 결과를 눈으로 확인하거나 데이터로 가공하는 코드는 매번 새로 짜야 하는 일이 반복됩니다. supervision은 모델이 찾아낸 사물의 위치와 종류를 받아서 화면에 표시하고, 데이터셋을 나누거나 형식을 바꾸는 작업을 처리하는 도구입니다. 모델 학습 자체는 다른 라이브러리에 맡기고, 그 뒤의 처리 과정만 이 도구로 깔끔하게 정리할 수 있습니다.
모델과 독립적인 설계
이 도구는 특정 모델에 묶이지 않도록 만들어졌습니다. 분류, 탐지, 분할 모델 중 어떤 것을 쓰든 결과를 supervision의 데이터 구조로 변환해서 사용할 수 있습니다. Ultralytics, Transformers, MMDetection 같은 인기 있는 라이브러리와의 연결고리도 이미 준비되어 있어, 기존 코드에 쉽게 끼워 넣을 수 있습니다. 일부 라이브러리는 supervision의 데이터 형식을 그대로 반환하기도 해서, 변환 과정이 더 간단해집니다.
시각화와 데이터셋 관리
탐지 결과를 화면에 그리는 작업은 annotator라는 모듈로 처리합니다. 박스, 라벨, 점 등 다양한 시각화 요소를 조합해서 원하는 대로 표시할 수 있습니다. 데이터셋 관리도 지원합니다. COCO, YOLO, Pascal VOC 형식의 데이터를 불러오고, 학습용과 테스트용으로 나누거나 여러 데이터를 합치는 기능을 제공합니다. 또한 한 형식의 데이터를 다른 형식으로 변환하는 기능도 있어, 프로젝트 간 데이터 이동을 쉽게 해줍니다.
설치와 시작
Python 3.10 이상의 환경에서 pip install supervision 명령으로 설치합니다. 추가적인 모델 라이브러리가 필요할 경우 해당 패키지도 함께 설치해야 합니다. 예를 들어 rfdetr 모델을 쓰려면 pip install pillow rfdetr을 실행합니다. 설치 후 import supervision as sv 한 줄로 시작할 수 있으며, 모델 예측 결과를 supervision.Detections 객체로 변환하는 과정이 매우 간단합니다.
이 도구를 고를 때
이미지나 영상에서 사물을 찾는 모델을 이미 가지고 있고, 그 결과를 앱에 표시하거나 데이터로 가공해야 하는 상황에 적합합니다. 모델 학습부터 추론까지 모든 것을 하나의 프레임워크로 해결하려는 것보다는, 모델 추론 결과 후처리와 데이터 전처리에 집중하고 싶은 개발자에게 잘 맞습니다. 다만, 모델 자체의 성능이나 학습 과정에 대한 책임은 supervision이 지지 않으므로, 모델 선택과 튜닝은 별도로 진행해야 합니다.