[Roboflow] Autodistill

FSA·2024년 10월 12일

autodistill

목록 보기
1/2

1.3. Autodistill 소개

  • Autodistill은 크고 느린 파운데이션 모델을 사용하여, 작고 빠른 지도 학습 모델을 훈련
  • Autodistill을 사용하면 인간의 개입 없이 라벨이 없는 이미지에서 엣지(Edge)에서 실행되는 맞춤형 모델의 추론까지 진행할 수 있음
  • Autodistill을 자체 하드웨어에서 사용하거나, Roboflow에서 호스팅하는 Autodistill 버전을 사용해 클라우드에서 이미지를 라벨링할 수 있습니다.

1.3.1. 예시

  • Autodistill을 사용하여 자동 라벨링된 데이터셋으로 훈련된 Target Model이 우유병과 병뚜껑을 감지하는 예측 결과
  • (전체 과정을 설명하는 Autodistill YouTube 영상을 참고).

🚀 주요 기능

  • 🔌 플러그 가능 인터페이스: 모델을 연결하여 사용 가능
  • 🤖 자동으로 데이터셋 라벨링
  • 🐰 빠른 지도 학습 모델 훈련
  • 🔒 모델 소유: 사용자는 모델을 완전히 소유 가능
  • 🚀 클라우드나 엣지에 증류된 모델 배포 가능

📚 기본 개념

  • Autodistill을 사용하려면, 라벨이 없는 데이터를 Base Model에 입력하면, 이 Base Model이 Ontology를 사용하여 Dataset을 라벨링

  • 이 Dataset을 사용해 Target Model을 훈련시키며, 그 결과로 Distilled Model이 생성되어 특정 작업을 수행할 수 있게 됩니다.

  • Autodistill은 몇 가지 기본적인 개념을 정의합니다:

  • Task (작업):

    • Target Model이 예측할 내용을 정의합니다.
    • Base Model, Ontology, Target Model의 Task는 호환성을 위해 동일해야 합니다.
    • 객체 탐지(Object Detection) 및 인스턴스 세분화(Instance Segmentation) 작업이 지원되며, 분류(Classification)는 곧 추가될 예정
  • Base Model (베이스 모델):

    • 여러 작업을 수행할 수 있는 큰 파운데이션 모델
    • 예시로는 GroundedSAM과 곧 출시될 GPT-4의 멀티모달 변형 모델
    • 이 모델은 라벨이 없는 입력 데이터와 Ontology를 사용하여 Dataset을 생성
  • Ontology (온톨로지):

    • Base Model이 프롬프트를 받는 방법, Dataset의 내용, 그리고 Target Model이 예측할 내용을 정의
    • 예시: CaptionOntology는 텍스트 캡션을 사용해 Base Model에 프롬프트를 보내고, 이를 클래스 이름으로 매핑
  • Dataset (데이터셋):

    • 자동으로 라벨링된 데이터의 집합으로, Target Model을 훈련하는 데 사용
    • Base Model이 생성한 결과물
  • Target Model (타겟 모델):

    • 지도 학습 모델로, Dataset을 받아들여 특정 작업을 매우 잘 수행하도록 미세 조정된 Distilled Model을 생성
    • Target Model은 일반적으로 작고 빠르며, 특정 작업에 특화되어 있습니다.
    • 예로는 YOLOv8과 DETR이 있습니다.
  • Distilled Model (증류된 모델):

    • Autodistill 과정의 최종 결과물로, 특정 작업에 맞게 미세 조정된 가중치가 포함된 모델


Ontology?

요약

  • Ontology는 Base Model이 데이터를 어떻게 처리할지 지시하고, 라벨링 과정을 자동화하는 데 핵심적인 역할을 하는 규칙 체계

Ontology의 역할

  1. Base Model과의 상호작용:
  • Ontology는 Base Model이 라벨이 없는 데이터를 이해할 수 있도록 프롬프트(명령)를 제공해.
  • 예를 들어, 라벨이 없는 이미지를 Base Model에 입력할 때, Ontology는 Base Model에게 "이 이미지에서 어떤 클래스(객체)를 찾을지"를 구체적으로 정의해줘.
  • 이를 통해 Base Model은 그에 맞는 라벨을 생성할 수 있게 되지.
  1. 데이터셋의 정의:
  • Ontology는 생성된 라벨과 데이터를 연결해줌으로써, Dataset을 구성하는데 핵심적인 역할을 해.
  • 단순히 객체 이름만 제공하는 것이 아니라, 이 객체가 어떤 특성을 가지고 있는지, 어떤 기준으로 구분될지를 정의할 수 있어.
  • 예를 들어, "차량"이라는 객체가 있다고 할 때, 이 차량이 세단인지, SUV인지, 혹은 트럭인지를 구분하는 추가적인 정보도 Ontology에 의해 제공될 수 있어.
  1. Ontology의 다양한 형태:
  • Ontology는 여러 형태로 존재할 수 있어.
  • 가장 기본적인 형태는 CaptionOntology로, 텍스트 캡션을 사용해 Base Model에게 특정 객체를 설명해주는 방식이야.
  • 예를 들어, "이 이미지에서 우유병을 찾아라"라는 텍스트 캡션을 사용해, Base Model이 우유병을 탐지할 수 있도록 프롬프트를 제공하는 거지.
  • 또 다른 형태로는 CLIP 벡터예시 이미지를 사용하는 Ontology도 있어.
  • 여기서는 텍스트 대신, Base Model에게 제공할 예시 이미지나 벡터를 사용해 라벨링 작업을 돕는 거야.
  • 예를 들어, 비슷한 객체의 이미지를 제공해서 "이 객체와 유사한 객체를 찾아라"라고 지시하는 방식이지.

Ontology의 예시

  1. CaptionOntology:
  • "자동차"라는 객체를 찾고 싶다면, 텍스트로 "자동차를 찾아라"라고 프롬프트를 제공하고, 이를 "car"라는 클래스 이름에 매핑시켜줘.
  • 이렇게 하면 Base Model은 이미지를 분석하고, 이미지 내에서 "자동차"로 보이는 부분을 찾아내서 그에 해당하는 라벨을 자동으로 생성해줄 거야.
  1. CLIP 기반 Ontology:
  • CLIP 모델은 텍스트와 이미지의 관계를 이해할 수 있는 모델이야.
  • 따라서 텍스트 캡션 대신 이미지를 예시로 제공해서 "이 이미지와 비슷한 것을 찾아라"라고 Base Model에 지시할 수 있어.
  • 이 방법은 비슷한 객체나 특성을 가진 이미지를 자동으로 분류하는 데 매우 유용
  1. 라벨 재매핑:
    • 예를 들어, Base Model이 "고양이"와 "개"라는 두 가지 클래스를 예측하도록 설정되어 있지만,
    • 내가 실제로 원하는 것은 "애완동물"이라는 하나의 클래스라면, Ontology에서 이 두 클래스를 "애완동물"로 재매핑할 수 있어.
    • 이렇게 하면 라벨의 구조를 내가 원하는 방식으로 조정할 수 있지.

💿 설치

  • Autodistill은 모듈식입니다. Autodistill 패키지를 설치하고 Base Model 및 Target Model 플러그인을 설치해야 합니다. 예를 들어:
pip install autodistill autodistill-grounded-sam autodistill-yolov8

🎬 동영상 가이드

  • Autodistill: 주석 없이 YOLOv8 훈련하기
    2023년 6월 8일에 게시된 이 영상에서는 YOLOv8 모델을 주석 없이 훈련하는 방법을 보여줍니다.

💡 커뮤니티 리소스


profile
모든 의사 결정 과정을 지나칠 정도로 모두 기록하고, 나중에 스스로 피드백 하는 것

0개의 댓글