cuadernos | Inferencia | Autodistill | recolectar
Autodistill utiliza modelos de base grandes y lentos para entrenar modelos supervisados pequeños y más rápidos. Usando autodistill , puede pasar de imágenes no etiquetadas hasta inferencia en un modelo personalizado que se ejecuta en el borde sin intervención humana en el medio.
Consejo
Puede usar Autodistill en su propio hardware o usar la versión alojada de Autodistill RoboFlow para etiquetar imágenes en la nube.
Actualmente, autodistill admite tareas de visión como la detección de objetos y la segmentación de instancias, pero en el futuro se puede ampliar para admitir modelos de lenguaje (y otros).
| Tutorial | Documento | Modelos compatibles | Contribuir |
|---|
Aquí hay predicciones de ejemplo de un modelo objetivo que detecta botellas de leche y bottlecaps después de ser entrenado en un conjunto de datos marcado automático utilizando Autodistill (consulte el video de YouTube Autodistill para obtener un tutorial completo):
Para usar autodistill , ingresa datos sin etiquetar en un modelo base que utiliza una ontología para etiquetar un conjunto de datos que se utiliza para entrenar un modelo de destino que genera un modelo destilado ajustado para realizar una tarea específica.
Autodistill define varias primitivas básicas:
autodistill debe coincidir para que sean compatibles entre sí. La detección de objetos y la segmentación de instancias se admiten actualmente a través de la tarea detection . El soporte classification se agregará pronto.CaptionOntology que provoca un modelo base con subtítulos de texto y los asigna a los nombres de clases. Otras ontologías pueden, por ejemplo, usar un vector de clip o imágenes de ejemplo en lugar de una leyenda de texto.autodistill ; Es un conjunto de pesos ajustados para su tarea que se puede implementar para obtener predicciones. El etiquetado humano es una de las mayores barreras para la amplia adopción de la visión por computadora. Puede tomar miles de horas elaborar un conjunto de datos adecuado para capacitar un modelo de producción. El proceso de destilación para los modelos supervisados de entrenamiento no es nuevo, de hecho, el etiquetado humano tradicional es solo otra forma de destilación de un modelo base extremadamente capaz (¿el cerebro humano?).
Los modelos de base saben mucho sobre mucho, pero para la producción necesitamos modelos que sepan mucho sobre un poco.
A medida que los modelos de base mejoren cada vez más, podrán aumentar o reemplazar a los humanos en el proceso de etiquetado. Necesitamos herramientas para dirigir, utilizar y comparar estos modelos. Además, estos modelos de base son grandes, caros y a menudo están cerrados detrás de las API privadas. Para muchos casos de uso de producción, necesitamos modelos que puedan funcionar de manera económica y en tiempo real en el borde.
Los modelos base de Autodistill ya pueden crear conjuntos de datos para muchos casos de uso comunes (y a través de la solicitud creativa y el disparo de pocas veces podemos expandir su utilidad a muchos más), pero aún no son perfectos. Todavía hay mucho trabajo por hacer; ¡Este es solo el comienzo y nos encantaría que su ayuda para probar y expandir las capacidades del sistema!
Autodistill es modular. Deberá instalar el paquete autodistill (que define las interfaces para los conceptos anteriores) junto con los complementos del modelo base y el modelo de destino (que implementan modelos específicos).
Al empaquetarlos por separado, ya que las incompatibilidades de dependencia y licencia se minimizan y cualquier persona puede implementar y mantener nuevos modelos.
Ejemplo:
pip install autodistill autodistill-grounded-sam autodistill-yolov8También puede clonar el proyecto de GitHub para el desarrollo local:
git clone https://github.com/roboflow/autodistill
cd autodistill
pip install -e .Los modelos de base y objetivo adicionales se enumeran a continuación.
Vea el cuaderno de demostración para una introducción rápida a autodistill . Este cuaderno camina a través de la construcción de un modelo de detección de contenedores de leche sin etiquetado.
A continuación, tenemos partes clave condensadas del cuaderno para una introducción rápida a autodistill .
También puede ejecutar Autodistill en un comando. Primero, instale autodistill :
pip install autodistillEntonces, corre:
autodistill images --base= " grounding_dino " --target= " yolov8 " --ontology ' {"prompt": "label"} ' --output= " ./dataset " Este comando etiquetará todas las imágenes en un directorio llamado images con dino de conexión a tierra y usará las imágenes etiquetadas para entrenar un modelo Yolov8. Grounding Dino etiquetará todas las imágenes con el "indicador" y guardará la etiqueta como la "etiqueta". Puede especificar tantas indicaciones y etiquetas como desee. El conjunto de datos resultante se guardará en una carpeta llamada dataset .
Para este ejemplo, mostraremos cómo destilar el SAM en un pequeño modelo YOLOV8 utilizando autodistill-Sam y 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 trazar las anotaciones para una sola imagen usando autodistill , puede usar el código a continuación. Este código es útil para visualizar las anotaciones generadas por su modelo base (es decir, SOLDEDSAM) y los resultados de su modelo objetivo (es decir, 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 )) Nuestro objetivo es que autodistill admita el uso de todos los modelos de base como modelos base y la mayoría de los modelos supervisados de SOTA como modelos objetivo. Nos centramos en las tareas de detección y segmentación de objetos primero, ¡pero planeamos lanzar el soporte de clasificación pronto! En el futuro, esperamos que autodistill también se use para modelos más allá de la visión por computadora.
| base / objetivo | Yolov8 | Yolo-Nas | Yolov5 | Detr | Yolov6 | Yolov7 | Mt-yolov6 |
|---|---|---|---|---|---|---|---|
| Sam 2 a tierra | ✅ | ✅ | ✅ | ✅ | ? | ||
| Detención | ✅ | ✅ | ✅ | ✅ | ? | ||
| Cañón | ✅ | ✅ | ✅ | ✅ | ? | ||
| Grotingdino | ✅ | ✅ | ✅ | ✅ | ? | ||
| Búho | ✅ | ✅ | ✅ | ✅ | ? | ||
| Clip sam | ✅ | ✅ | ✅ | ✅ | ? | ||
| Llava-1.5 | ✅ | ✅ | ✅ | ✅ | ? | ||
| Kosmos-2 | ✅ | ✅ | ✅ | ✅ | ? | ||
| Búho | ✅ | ✅ | ✅ | ✅ | ? | ||
| Modelos de universo RoboFlow (modelos de 50k+ pretrados) | ✅ | ✅ | ✅ | ✅ | ? | ||
| Codetro | ✅ | ✅ | ✅ | ✅ | ? | ||
| Visión personalizada de Azure | ✅ | ✅ | ✅ | ✅ | ? | ||
| AWS Rekognition | ✅ | ✅ | ✅ | ✅ | ? | ||
| Visión de Google | ✅ | ✅ | ✅ | ✅ | ? |
| base / objetivo | Yolov8 | Yolo-Nas | Yolov5 | Yolov7 | Segformer |
|---|---|---|---|---|---|
| Cañón | ✅ | ? | ? | ||
| Clip sam | ✅ | ? | ? | ||
| Segtarse | ✅ | ? | ? | ||
| Fastsam | ? | ? | ? |
| base / objetivo | Vit | Yolov8 | Yolov5 |
|---|---|---|---|
| ACORTAR | ✅ | ✅ | ? |
| Metaclip | ✅ | ✅ | ? |
| Dinov2 | ✅ | ✅ | ? |
| PUNTO LUMINOSO EN UN RADAR | ✅ | ✅ | ? |
| Aunque | ✅ | ✅ | ? |
| Rápido | ✅ | ✅ | ? |
| Altclip | ✅ | ✅ | ? |
| Evacuar | ✅ | ✅ | ? |
| Géminis | ✅ | ✅ | ? |
| Fuyu | ? | ? | ? |
| Flamenco abierto | ? | ? | ? |
| GPT-4 | |||
| Palma-2 |
Opcionalmente, puede implementar algunos modelos de destino capacitados con Autodistill en RoboFlow. La implementación en RoboFlow le permite usar una gama de SDK concisos para usar su modelo en el borde, desde roboflow.js para la implementación web en dispositivos Nvidia Jetson.
Los siguientes modelos de destino de autodistill son compatibles con RoboFlow para la implementación:
| nombre del modelo | Compatible? |
|---|---|
| Detección de objetos yolov8 | ✅ |
| Segmentación de instancia de Yolov8 | ✅ |
| Detección de objetos yolov5 | ✅ |
| Segmentación de instancias de Yolov5 | ✅ |
| Clasificación Yolov8 |
Autodistill: Train Yolov8 con anotaciones cero
Además de agregar nuevos modelos, hay varias áreas que planeamos explorar con autodistill que incluyen:
¡Nos encanta tu aporte! Consulte nuestra guía de contribución para comenzar. ¡Gracias a todos nuestros contribuyentes!
El paquete autodistill tiene licencia bajo un Apache 2.0. Cada complemento base o modelo de objetivo puede usar su propia licencia correspondiente a la licencia de su modelo subyacente. Consulte la licencia en cada repositorio de complemento para obtener más información.
PytorchStreamReader failed reading zip archive: failed finding central directory Error? Este error es causado cuando Pytorch no puede cargar los pesos del modelo para un modelo. Vaya al directorio ~/.cache/autodistill y elimine la carpeta asociada con el modelo que está intentando cargar. Luego, ejecute su código nuevamente. Los pesos del modelo se descargarán desde cero. Deje el proceso de instalación ininterrumpido.
| Proyecto | Descripción |
|---|---|
| supervisión | Utilidades de propósito general para su uso en proyectos de visión por computadora, desde el filtrado de predicciones y la visualización hasta el seguimiento de objetos y la evaluación del modelo. |
| Autodistill (este proyecto) | Etiqueta automáticamente imágenes para usar en entrenamiento de modelos de visión por computadora. |
| Inferencia | Un servidor de inferencia listo para usar fácil de usar para la visión por computadora que admite la implementación de muchas arquitecturas de modelos populares y modelos ajustados. |
| Cuadernos | Tutoriales para tareas de visión por computadora, desde capacitación de modelos de última generación hasta objetos de seguimiento hasta objetos de contar en una zona. |
| Recolectar | Recopilación de datos automatizada e inteligente alimentada por clip. |