노트북 | 추론 | autodistill | 모으다
AutoDistill은 크고 느린 기초 모델을 사용하여 작고 빠른 감독 모델을 훈련시킵니다. autodistill 사용하면 표지되지 않은 이미지에서 인간의 개입없이 가장자리에서 실행되는 사용자 정의 모델에서 추론으로 이동할 수 있습니다.
팁
자체 하드웨어에서 자동 도구를 사용하거나 Roboflow 호스팅 된 AutoDistill 버전을 사용하여 클라우드에 이미지를 레이블을 지정할 수 있습니다.
현재 autodistill 객체 감지 및 인스턴스 세분화와 같은 비전 작업을 지원하지만 향후 언어 (및 기타) 모델을 지원하도록 확장 될 수 있습니다.
| 지도 시간 | 문서 | 지원되는 모델 | 기여하다 |
|---|
다음은 AutoDistill을 사용하여 자동 표시 데이터 세트에서 교육을받은 후 우유 병 및 병목을 감지하는 대상 모델의 예측 예입니다 (전체 연습은 AutoDistill YouTube 비디오 참조).
autodistill 사용하려면 비 표지 된 데이터를 기본 모델에 입력하여 온톨로지를 사용하여 특정 작업을 수행하기 위해 증류 된 모델을 미세 조정하는 대상 모델을 교육하는 데 사용되는 데이터 세트에 레이블을 지정합니다.
Autodistill은 몇 가지 기본 원시를 정의합니다.
autodistill 파이프 라인의 각 구성 요소 (기본 모델, 온톨로지 및 대상 모델)에 대한 작업은 서로 호환되도록 일치해야합니다. 객체 감지 및 인스턴스 분할은 현재 detection 작업을 통해 지원됩니다. classification 지원이 곧 추가 될 예정입니다.CaptionOntology 입니다. 예를 들어, 다른 온톨로지는 텍스트 캡션 대신 클립 벡터 또는 예제 이미지를 사용할 수 있습니다.autodistill 공정의 최종 출력입니다. 예측을 얻기 위해 배포 할 수있는 작업을 위해 미세 조정 된 가중치 세트입니다. 인간 라벨링은 컴퓨터 비전을 광범위하게 채택하는 데 가장 큰 장벽 중 하나입니다. 생산 모델 교육에 적합한 데이터 세트를 제작하는 데 수천 시간이 걸릴 수 있습니다. 감독 모델 훈련을위한 증류 과정은 새로운 것이 아닙니다. 실제로 전통적인 인간 라벨링은 매우 유능한 기본 모델 (인간 뇌?)의 또 다른 형태의 증류입니다.
기초 모델은 많은 것을 많이 알고 있지만 생산에는 약간의 많은 것을 알고있는 모델이 필요합니다.
기초 모델이 점점 좋아지면서 라벨링 과정에서 인간을 증가 시키거나 대체 할 수 있습니다. 이 모델을 조향, 사용 및 비교하기위한 도구가 필요합니다. 또한,이 기초 모델은 크고 비싸며 종종 개인 API 뒤에 게이트됩니다. 많은 생산 유용 사례의 경우, 우리는 저렴하고 실시간에서 실행할 수있는 모델이 필요합니다.
AutoDistill의 기본 모델은 이미 많은 일반적인 사용 사례에 대한 데이터 세트를 만들 수 있습니다 (창의적 프롬프트 및 소수의 샷을 통해 유틸리티를 더 많은 것으로 확장 할 수 있음). 아직해야 할 일이 여전히 많습니다. 이것은 시작일 뿐이며 우리는 당신의 도움을 테스트하고 시스템의 기능을 확장하는 것을 좋아합니다!
자동 장비는 모듈 식입니다. 기본 모델 및 대상 모델 플러그인 (특정 모델을 구현)과 함께 autodistill 패키지 (위의 개념의 인터페이스를 정의하는)를 설치해야합니다.
플러그인으로 별도로 포장하면 종속성 및 라이센스 비 호환성이 최소화되고 누구나 새로운 모델을 구현하고 유지 관리 할 수 있습니다.
예:
pip install autodistill autodistill-grounded-sam autodistill-yolov8지역 개발을 위해 Github에서 프로젝트를 복제 할 수도 있습니다.
git clone https://github.com/roboflow/autodistill
cd autodistill
pip install -e .추가베이스 및 대상 모델이 아래에 열거되어 있습니다.
autodistill 에 대한 빠른 소개는 데모 노트북을 참조하십시오. 이 노트북은 라벨이없는 우유 컨테이너 탐지 모델 구축을 통과합니다.
아래에서는 autodistill 에 대한 빠른 소개를 위해 노트북의 주요 부분을 응축했습니다.
하나의 명령으로 AutoDistill을 실행할 수도 있습니다. 먼저 autodistill 설치하십시오.
pip install autodistill그런 다음 달리기 :
autodistill images --base= " grounding_dino " --target= " yolov8 " --ontology ' {"prompt": "label"} ' --output= " ./dataset " 이 명령은 접지 디노가있는 images 라는 디렉토리의 모든 이미지에 레이블을 지정하고 레이블이 붙은 이미지를 사용하여 YOLOV8 모델을 훈련시킵니다. DINO를 접지하면 모든 이미지가 "프롬프트"와 레이블을 지정하고 레이블을 "레이블"으로 저장합니다. 원하는만큼의 프롬프트와 레이블을 지정할 수 있습니다. 결과 데이터 세트는 dataset 라는 폴더에 저장됩니다.
이 예에서는 Autodistill-brageed-Sam 및 Autodistill-Nolov8을 사용하여 Groundedsam을 작은 Yolov8 모델로 증류하는 방법을 보여줍니다.
pip install autodistill autodistill-grounded-sam autodistill-yolov8
from autodistill_grounded_sam import GroundedSAM
from autodistill . detection import CaptionOntology
from autodistill_yolov8 import YOLOv8
# define an ontology to map class names to our GroundingDINO prompt
# the ontology dictionary has the format {caption: class}
# where caption is the prompt sent to the base model, and class is the label that will
# be saved for that caption in the generated annotations
base_model = GroundedSAM ( ontology = CaptionOntology ({ "shipping container" : "container" }))
# label all images in a folder called `context_images`
base_model . label (
input_folder = "./images" ,
output_folder = "./dataset"
)
target_model = YOLOv8 ( "yolov8n.pt" )
target_model . train ( "./dataset/data.yaml" , epochs = 200 )
# run inference on the new model
pred = target_model . predict ( "./dataset/valid/your-image.jpg" , confidence = 0.5 )
print ( pred )
# optional: upload your model to Roboflow for deployment
from roboflow import Roboflow
rf = Roboflow ( api_key = "API_KEY" )
project = rf . workspace (). project ( "PROJECT_ID" )
project . version ( DATASET_VERSION ). deploy ( model_type = "yolov8" , model_path = f"./runs/detect/train/" ) autodistill 사용하여 단일 이미지에 대한 주석을 표시하려면 아래 코드를 사용할 수 있습니다. 이 코드는 기본 모델 (IE GroundEdsam)에서 생성 된 주석과 대상 모델 (예 : YOLOV8)의 결과를 시각화하는 데 도움이됩니다.
import supervision as sv
import cv2
img_path = "./images/your-image.jpeg"
image = cv2 . imread ( img_path )
detections = base_model . predict ( img_path )
# annotate image with detections
box_annotator = sv . BoxAnnotator ()
label_annotator = sv . LabelAnnotator ()
labels = [
f" { base_model . ontology . classes ()[ class_id ] } { confidence :0.2f } "
for _ , _ , confidence , class_id , _ , _ in detections
]
annotated_frame = box_annotator . annotate (
scene = image . copy (), detections = detections
)
annotated_frame = label_annotator . annotate (
scene = annotated_frame , detections = detections , labels = labels
)
sv . plot_image ( annotated_frame , ( 16 , 16 )) 우리의 목표는 autodistill 모든 기초 모델을 기본 모델로 사용하고 대부분의 SOTA 감독 모델을 대상 모델로 지원하는 것입니다. 우리는 먼저 객체 감지 및 세분화 작업에 중점을 두었지만 곧 분류 지원을 시작할 계획입니다! 앞으로 autodistill 컴퓨터 비전을 넘어서 모델에도 사용되기를 바랍니다.
| 기본 / 대상 | yolov8 | Yolo-Nas | yolov5 | 비밀 | yolov6 | yolov7 | MT-YOLOV6 |
|---|---|---|---|---|---|---|---|
| 샘 2 | ✅ | ✅ | ✅ | ✅ | ? | ||
| 사정 | ✅ | ✅ | ✅ | ✅ | ? | ||
| Groundedsam | ✅ | ✅ | ✅ | ✅ | ? | ||
| 그라운드 디노 | ✅ | ✅ | ✅ | ✅ | ? | ||
| 올빼미-비트 | ✅ | ✅ | ✅ | ✅ | ? | ||
| 샘 클립 | ✅ | ✅ | ✅ | ✅ | ? | ||
| llava-1.5 | ✅ | ✅ | ✅ | ✅ | ? | ||
| 코스 모스 -2 | ✅ | ✅ | ✅ | ✅ | ? | ||
| OWLV2 | ✅ | ✅ | ✅ | ✅ | ? | ||
| Roboflow Universe 모델 (50k+ 사전 훈련 된 모델) | ✅ | ✅ | ✅ | ✅ | ? | ||
| 코트 | ✅ | ✅ | ✅ | ✅ | ? | ||
| Azure Custom Vision | ✅ | ✅ | ✅ | ✅ | ? | ||
| AWS Rekognition | ✅ | ✅ | ✅ | ✅ | ? | ||
| Google 비전 | ✅ | ✅ | ✅ | ✅ | ? |
| 기본 / 대상 | yolov8 | Yolo-Nas | yolov5 | yolov7 | Segformer |
|---|---|---|---|---|---|
| Groundedsam | ✅ | ? | ? | ||
| 샘 클립 | ✅ | ? | ? | ||
| seggpt | ✅ | ? | ? | ||
| 금식 | ? | ? | ? |
| 기본 / 대상 | vit | yolov8 | yolov5 |
|---|---|---|---|
| 클립 | ✅ | ✅ | ? |
| 메타 클립 | ✅ | ✅ | ? |
| DINOV2 | ✅ | ✅ | ? |
| 블립 | ✅ | ✅ | ? |
| 알 수없는 | ✅ | ✅ | ? |
| Fastvit | ✅ | ✅ | ? |
| altclip | ✅ | ✅ | ? |
| 대피 | ✅ | ✅ | ? |
| 쌍둥이 자리 | ✅ | ✅ | ? |
| 후유 | ? | ? | ? |
| Flamingo를 열었습니다 | ? | ? | ? |
| GPT-4 | |||
| 손바닥 -2 |
Roboflow에서 AutoDistill을 사용하여 훈련 된 일부 대상 모델을 선택적으로 배포 할 수 있습니다. Roboflow에 배포하면 웹 배포를 위해 Roboflow.js에서 Nvidia Jetson 장치에 이르기까지 Edge의 모델을 사용하기 위해 다양한 간결한 SDK를 사용할 수 있습니다.
다음 AutoDistill 대상 모델은 배포를 위해 Roboflow에서 지원합니다.
| 모델 이름 | 지원? |
|---|---|
| YOLOV8 객체 감지 | ✅ |
| YOLOV8 인스턴스 분할 | ✅ |
| Yolov5 객체 감지 | ✅ |
| YOLOV5 인스턴스 분할 | ✅ |
| YOLOV8 분류 |
Autodistill : 주석이없는 Yolov8을 기차하십시오
새로운 모델을 추가하는 것 외에도 autodistill 과 함께 탐색 할 몇 가지 영역이 있습니다.
우리는 당신의 의견을 사랑합니다! 시작하려면 기고 가이드를 참조하십시오. 우리의 모든 기고자들에게 감사합니다!
autodistill 패키지는 Apache 2.0에 따라 라이센스가 부여됩니다. 각 기본 또는 대상 모델 플러그인은 기본 모델의 라이센스에 해당하는 자체 라이센스를 사용할 수 있습니다. 자세한 내용은 각 플러그인 repo의 라이센스를 참조하십시오.
PytorchStreamReader failed reading zip archive: failed finding central directory ? 이 오류는 Pytorch가 모델의 모델 가중치를로드 할 수없는 경우에 발생합니다. ~/.cache/autodistill 디렉토리로 이동하여로드하려는 모델과 관련된 폴더를 삭제하십시오. 그런 다음 코드를 다시 실행하십시오. 모델 가중치는 처음부터 다운로드됩니다. 설치 프로세스를 중단없이 두십시오.
| 프로젝트 | 설명 |
|---|---|
| 감독 | 컴퓨터 비전 프로젝트에 사용하기위한 범용 유틸리티, 예측 필터링 및 디스플레이에서 객체 추적, 모델 평가에 이르기까지. |
| AutoDistill (이 프로젝트) | 컴퓨터 비전 모델을 훈련시키는 이미지를 자동으로 레이블을 지정합니다. |
| 추론 | 많은 인기있는 모델 아키텍처 및 미세 조정 모델의 배포를 지원하는 컴퓨터 비전을위한 사용하기 쉬운 프로덕션 준비가 가능한 추론 서버. |
| 노트북 | 최첨단 모델 교육부터 객체 추적, 객체 계산에 이르기까지 컴퓨터 비전 작업에 대한 튜토리얼. |
| 모으다 | 클립으로 구동되는 자동 지능형 데이터 수집. |