Notebooks | inferência | AUTODISTILL | coletar
A Autodistill usa modelos de fundação grandes e mais lentos para treinar modelos pequenos e supervisionados mais rápidos. Usando autodistill , você pode passar de imagens não marcadas para inferência em um modelo personalizado em andamento sem intervenção humana no meio.
Dica
Você pode usar o Autodistill em seu próprio hardware ou usar a versão hospedada do Roboflow do Autodistill para rotular imagens na nuvem.
Atualmente, autodistill suporta tarefas de visão como detecção de objetos e segmentação de instância, mas no futuro pode ser expandido para apoiar modelos de linguagem (e outros).
| Tutorial | Documentos | Modelos suportados | Contribuir |
|---|
Aqui estão as previsões de exemplo de um modelo de destino que detectam garrafas de leite e engarrafamentos após serem treinados em um conjunto de dados marcado automaticamente usando o AutoDistill (consulte o vídeo do YouTube do Autodistill para uma explicação completa):
Para usar autodistill , você insere dados não marcados em um modelo básico que usa uma ontologia para rotular um conjunto de dados usado para treinar um modelo de destino que gera um modelo destilado ajustado para executar uma tarefa específica.
Autodistill define várias primitivas básicas:
autodistill deve corresponder para que sejam compatíveis entre si. Atualmente, a detecção de objetos e a segmentação de instância são suportadas através da tarefa detection . O suporte classification será adicionado em breve.CaptionOntology que solicita um modelo básico com legendas de texto e as mapeia para nomes de classe. Outras ontologias podem, por exemplo, usar um vetor de clipe ou imagens de exemplo em vez de uma legenda de texto.autodistill ; É um conjunto de pesos ajustados para sua tarefa que pode ser implantada para obter previsões. A rotulagem humana é uma das maiores barreiras à ampla adoção da visão computacional. Pode levar milhares de horas para criar um conjunto de dados adequado para treinar um modelo de produção. O processo de destilação para modelos supervisionados pelo treinamento não é novo, de fato, a rotulagem humana tradicional é apenas mais uma forma de destilação de um modelo básico extremamente capaz (o cérebro humano?).
Os modelos de fundação sabem muito sobre muito, mas, para a produção, precisamos de modelos que sabem muito sobre um pouco.
À medida que os modelos de fundação ficam cada vez melhores, eles serão cada vez mais capazes de aumentar ou substituir os seres humanos no processo de rotulagem. Precisamos de ferramentas para direção, utilização e comparação desses modelos. Além disso, esses modelos de fundação são grandes, caros e muitas vezes fechados atrás de APIs privadas. Para muitos casos de uso da produção, precisamos de modelos que possam ser executados baratos e em tempo real no limite.
Os modelos básicos da Autodistill já podem criar conjuntos de dados para muitos casos de uso comuns (e por meio de aviso criativo e poucos tiros, podemos expandir sua utilidade para muito mais), mas eles ainda não são perfeitos. Ainda há muito trabalho a fazer; Este é apenas o começo e adoraríamos sua ajuda testando e expandindo os recursos do sistema!
Autodistill é modular. Você precisará instalar o pacote autodistill (que define as interfaces para os conceitos acima), juntamente com o modelo básico e os plugins de modelo de destino (que implementam modelos específicos).
Ao empacotá -los separadamente como plugins, as incompatibilidades de dependência e licenciamento são minimizadas e novos modelos podem ser implementados e mantidos por qualquer pessoa.
Exemplo:
pip install autodistill autodistill-grounded-sam autodistill-yolov8Você também pode clonar o projeto do GitHub para o desenvolvimento local:
git clone https://github.com/roboflow/autodistill
cd autodistill
pip install -e .Os modelos de base e destino adicionais são enumerados abaixo.
Consulte o caderno de demonstração para uma rápida introdução ao autodistill . Este notebook passa pela construção de um modelo de detecção de contêineres de leite sem rotulagem.
Abaixo, nós condensamos as principais partes do notebook para uma rápida introdução ao autodistill .
Você também pode executar o Autodistill em um comando. Primeiro, instale autodistill :
pip install autodistillEntão, corra:
autodistill images --base= " grounding_dino " --target= " yolov8 " --ontology ' {"prompt": "label"} ' --output= " ./dataset " Este comando rotulará todas as imagens em um diretório chamado images com dino aterramento e usará as imagens rotuladas para treinar um modelo YOLOV8. Dino de aterramento rotulará todas as imagens com o "prompt" e salvará o rótulo como o "rótulo". Você pode especificar quantas instruções e etiquetas quiser. O conjunto de dados resultante será salvo em uma pasta chamada dataset .
Para este exemplo, mostraremos como destilar o GroundEdSam em um pequeno modelo Yolov8 usando Sam-Sam de Autodistill e Autodistill-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/" ) Para plotar as anotações de uma única imagem usando autodistill , você pode usar o código abaixo. Este código é útil para visualizar as anotações geradas pelo seu modelo básico (ou seja, fundamentado) e os resultados do seu modelo de destino (ou seja, 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 )) Nosso objetivo é a autodistill suportar o uso de todos os modelos de fundação como modelos básicos e a maioria dos modelos supervisionados da SOTA como modelos de destino. Nós nos concentramos nas tarefas de detecção e segmentação de objetos primeiro, mas planejamos iniciar o suporte de classificação em breve! No futuro, esperamos que autodistill também seja usada para modelos além da visão computacional.
| base / destino | Yolov8 | YOLO-NAS | Yolov5 | Detr | Yolov6 | Yolov7 | Mt-yolov6 |
|---|---|---|---|---|---|---|---|
| Sam 2 aterrado | ✅ | ✅ | ✅ | ✅ | ? | ||
| Detecta | ✅ | ✅ | ✅ | ✅ | ? | ||
| Fundamentado | ✅ | ✅ | ✅ | ✅ | ? | ||
| Groundingdino | ✅ | ✅ | ✅ | ✅ | ? | ||
| Coruja-vit | ✅ | ✅ | ✅ | ✅ | ? | ||
| Sam-clip | ✅ | ✅ | ✅ | ✅ | ? | ||
| Llava-1.5 | ✅ | ✅ | ✅ | ✅ | ? | ||
| Kosmos-2 | ✅ | ✅ | ✅ | ✅ | ? | ||
| OWLV2 | ✅ | ✅ | ✅ | ✅ | ? | ||
| Modelos do Universo Roboflow (modelos 50k+ pré-treinados) | ✅ | ✅ | ✅ | ✅ | ? | ||
| Codet | ✅ | ✅ | ✅ | ✅ | ? | ||
| Visão personalizada do Azure | ✅ | ✅ | ✅ | ✅ | ? | ||
| AWS Rekognition | ✅ | ✅ | ✅ | ✅ | ? | ||
| Visão do Google | ✅ | ✅ | ✅ | ✅ | ? |
| base / destino | Yolov8 | YOLO-NAS | Yolov5 | Yolov7 | Segformer |
|---|---|---|---|---|---|
| Fundamentado | ✅ | ? | ? | ||
| Sam-clip | ✅ | ? | ? | ||
| Seggpt | ✅ | ? | ? | ||
| Fastsam | ? | ? | ? |
| base / destino | Vit | Yolov8 | Yolov5 |
|---|---|---|---|
| GRAMPO | ✅ | ✅ | ? |
| Metaclip | ✅ | ✅ | ? |
| DINOV2 | ✅ | ✅ | ? |
| Blip | ✅ | ✅ | ? |
| Albef | ✅ | ✅ | ? |
| FastVit | ✅ | ✅ | ? |
| Altclip | ✅ | ✅ | ? |
| Evaclip | ✅ | ✅ | ? |
| Gêmeos | ✅ | ✅ | ? |
| Fuyu | ? | ? | ? |
| Aberto flamingo | ? | ? | ? |
| GPT-4 | |||
| Palm-2 |
Opcionalmente, você pode implantar alguns modelos de destino treinados usando o Autodistill no Roboflow. A implantação no Roboflow permite que você use uma variedade de SDKs concisos para usar seu modelo na borda, do roboflow.js para implantação da web aos dispositivos NVIDIA Jetson.
Os seguintes modelos de destino Autodistill são suportados pelo Roboflow para implantação:
| Nome do modelo | Suportado? |
|---|---|
| Detecção de objetos Yolov8 | ✅ |
| Segmentação da instância YOLOV8 | ✅ |
| Detecção de objetos YOLOV5 | ✅ |
| Segmentação da instância YOLOV5 | ✅ |
| Classificação Yolov8 |
Autodistill: treinar Yolov8 com zero anotações
Além de adicionar novos modelos, existem várias áreas que planejamos explorar com autodistill , incluindo:
Adoramos sua opinião! Consulte nosso guia contribuinte para começar. Obrigado a todos os nossos colaboradores!
O pacote autodistill está licenciado em um Apache 2.0. Cada plug -in de modelo base ou de destino pode usar sua própria licença correspondente à licença de seu modelo subjacente. Consulte a licença em cada repositório do plug -in para obter mais informações.
PytorchStreamReader failed reading zip archive: failed finding central directory ? Este erro é causado quando o pytorch não pode carregar os pesos do modelo para um modelo. Entre no diretório ~/.cache/autodistill e exclua a pasta associada ao modelo que você está tentando carregar. Em seguida, execute seu código novamente. Os pesos do modelo serão baixados do zero. Deixe o processo de instalação ininterrupto.
| Projeto | Descrição |
|---|---|
| supervisão | Utilitários de uso geral para uso em projetos de visão computacional, desde previsões filtrando e exibição até rastreamento de objetos para modelar a avaliação. |
| Autodistill (este projeto) | Rotule automaticamente imagens para uso no treinamento de modelos de visão computacional. |
| Inferência | Um servidor de inferência fácil de usar e pronto para uso para a visão computacional que suporta a implantação de muitas arquiteturas de modelos populares e modelos de ajuste fino. |
| Notebooks | Tutoriais para tarefas de visão computacional, desde o treinamento de modelos de ponta até o rastreamento de objetos até a contagem de objetos em uma zona. |
| Coletar | Coleção de dados inteligente e automatizada alimentada pelo clipe. |