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 리소스가 필요할 수 있음

더 배우기


위 정보는 프로젝트의 README에서 직접 인용되었으며, 추가 기능은 추측되지 않았습니다.

관련

  • 프로젝트
  • 프로젝트
  • 프로젝트
  • 프로젝트