autodistill/autodistill
Images to inference with no labeling (use foundation models to train supervised models).
autodistill – 레이블이 없는 이미지에서 소형 엣지 대응 모델로
무엇인가요 – autodistill는 대규모이고 느린 기초 모델(기본 모델)을 사용해 이미지를 자동으로 레이블링하고, 그 자동 레이블링된 데이터로 작고 빠른 감지기(예: YOLOv8)를 훈련시키는 파이썬 라이브러리입니다. 수동 레이블링 없이 엣지 기기에서 실행 가능한 모델을 생성할 수 있습니다.
핵심 개념 (README에 정의됨)
| 개념 | 역할 |
|---|---|
| 작업 | 원하는 예측 유형 (현재 detection / instance segmentation; classification는 곧 출시 예정) |
| 기본 모델 | 레이블을 생성할 수 있는 대규모 기초 모델 (예: Grounded‑SAM, Grounding‑DINO, OWL‑ViT, LLaVA‑1.5) |
| 온톨로지 | 기본 모델이 사용할 프롬프트와 출력을 사용자 클래스 이름으로 변환하는 방법을 정의하는 매핑 (예: "shipping container": "container") |
| 데이터셋 | 기본 모델이 자동으로 레이블링한 이미지로, 타겟 모델이 소비할 수 있는 형식으로 저장됨 |
| 타겟 모델 | 자동 레이블링된 데이터셋으로 미세 조정되는 작고 빠른 지도 학습 모델 (YOLOv8, YOLO‑NAS, YOLOv5, DETR 등) |
| 증류 모델 | 본격적으로 배포할 수 있는 최종 경량 모델 |
주요 기능 (README에서)
- 플러그인 인터페이스 – 기본 모델과 타겟 모델은 별도의 플러그인으로 분리되어, 지원되는 모든 기초 모델과 SOTA 감지기 간에 자유롭게 조합 가능
- 자동 레이블링 – 수동 레이블링 단계 없음; 기본 모델이 학습 데이터를 생성
- 빠른 지도 학습 – 단일 GPU에서 수분 내에 학습 가능한 경량 감지기 사용
- 모델 소유권 – 증류 모델은 원하는 곳에 호스팅할 수 있음
- 엣지 대응 배포 – 내보낸 모델은 CPU, 마이크로컨트롤러, 또는 어떤 엣지 런타임에서도 실행 가능
빠른 시작 예제 (README와 완전히 동일)
# 핵심 + 두 개의 플러그인 설치 (Grounded‑SAM을 기본, YOLOv8을 타겟)
pip install autodistill autodistill-grounded-sam autodistill-yolov8
# 한 줄로 레이블링 및 훈련 실행
autodistill images \
--base="grounding_dino" \
--target="yolov8" \
--ontology '{"prompt": "label"}' \
--output="./dataset"
이 명령어는 ./images 폴더의 모든 이미지를 읽어 Grounding‑DINO에 지정된 프롬프트에 따라 레이블링하고, YOLO 호환 데이터셋을 ./dataset에 저장한 후 YOLOv8 모델을 훈련시킵니다.
더 명시적인 파이썬 스크립트 (README에서):
from autodistill_grounded_sam import GroundedSAM
from autodistill.detection import CaptionOntology
from autodistill_yolov8 import YOLOv8
# 1️⃣ 기본 모델 + 온톨로지
base = GroundedSAM(ontology=CaptionOntology({"shipping container": "container"}))
base.label(input_folder="./images", output_folder="./dataset")
# 2️⃣ 타겟 모델 훈련
target = YOLOv8("yolov8n.pt")
target.train("./dataset/data.yaml", epochs=200)
# 3️⃣ 증류 모델로 추론
pred = target.predict("./dataset/valid/your-image.jpg", confidence=0.5)
print(pred)
README에서는 결과 모델을 Roboflow에 업로드하여 호스팅 추론을 수행하는 방법도 설명합니다.
사용 가능한 모델 플러그인 (README 기준 상태)
| 작업 | 기본 모델 (✓ = 준비 완료) | 타겟 모델 (✓ = 준비 완료) |
|---|---|---|
| 객체 탐지 | Grounded‑SAM 2, DETIC, Grounded‑SAM, Grounding‑DINO, OWL‑ViT, SAM‑CLIP, LLaVA‑1.5, Kosmos‑2, OWLv2, Roboflow‑Universe, CoDet, Azure Custom Vision, AWS Rekognition, Google Vision | YOLOv8, YOLO‑NAS, YOLOv5, DETR (기타 개발 중) |
| 인스턴스 세그멘테이션 | Grounded‑SAM, SAM‑CLIP, SegGPT, FastSAM (부분 지원) | YOLOv8 (기타 개발 중) |
| 분류 | (계획 중) | ViT, YOLOv8, YOLOv5 (계획 중) |
설치 참고사항
- 핵심 패키지 (
autodistill)는 추상적인 파이프라인만 정의합니다. 특정 기본/타겟 모델을 사용하려면 플러그인도 설치해야 합니다. - 플러그인은 별도의 PyPI 패키지로 출시됩니다 (예:
autodistill-grounded-sam,autodistill-yolov8). 이로 인해 무거운 종속성은 격리됩니다. - 개발용으로는 리포지토리를 클론하고
pip install -e .로 설치 가능.
언제 사용할까?
- 빠른 프로토타이핑: 레이블 없는 이미지 모음이 있지만, 빠르게 감지기를 필요로 할 때
- 엣지 배포: 제한된 하드웨어에서 실시간으로 작동하는 모델이 필요할 때
- 비용 민감한 파이프라인: 추론마다 대규모 모델 API 사용료를 지불하지 않아도 되며, 레이블링에는 대규모 모델을 한 번만 사용
알려진 제한 사항 (README에 기술됨)
- 현재는 시각 작업에 한정됨; 언어 중심 작업은 아직 지원되지 않음
- 증류 모델의 품질은 기본 모델의 레이블 정확도에 크게 의존함; 부정확한 기본 예측은 전파됨
- 일부 기본/타겟 조합은 여전히 "개발 중" (예: YOLO‑6, YOLO‑7, 많은 세그멘테이션 타겟)
- 대규모 기초 모델은 사적 API 뒤에 가려져 있거나, 레이블링에 상당한 GPU 리소스가 필요할 수 있음
더 배우기
- 튜토리얼: https://blog.roboflow.com/autodistill
- 문서: https://docs.autodistill.com
- 데모 노트북: https://colab.research.google.com/github/roboflow-ai/notebooks/.../how-to-auto-train-yolov8-model-with-autodistill.ipynb
- YouTube 워크스루: https://www.youtube.com/watch?v=gKTYMfwPo4M
위 정보는 프로젝트의 README에서 직접 인용되었으며, 추가 기능은 추측되지 않았습니다.
관련
- 프로젝트
- 프로젝트
- 프로젝트
- 프로젝트