CoDet is an open vocabulary zero-shot object detection model.
In this guide, we show how to train a computer vision model without labelling using these two models.
Autodistill allows you to use state-of-the-art foundation models that know a lot about a variety of objects to label data for your project. You can then train a new model with your labeled data. This whole process uses around a dozen lines of code.
To learn more about how autodistill works, read our overview guide or watch our YouTube tutorial.
In this guide, we will show you how to use
to train a
model.
To use
Autodistill allows you to use state-of-the-art foundation models that know a lot about a variety of objects to label data for your project. You can then train a new model with your labeled data. This whole process uses around a dozen lines of code.
To learn more about how autodistill works, read our overview guide or watch our YouTube tutorial.
In this guide, we will show you how to label data with
.
To label data with
First, install the following packages:
pip install autodistill autodistill-codet
Before you can label a dataset, you need a dataset with which to work.
Roboflow has a few resources that can help you create a dataset for your project:
You can use any folder of images you have on your local machine with Autodistill, too.
Autodistill has two model types:
To label your dataset with a Base Model, you need to provide prompt(s) that are relevant to the classes you want to label.
Replace "example" below with the prompt you want to use. Replace "class" with the name of the class you want the prompt results to be saved as in your dataset. Also, replace the IMAGE_NAME with an image from your dataset.
The code cell below loads the base model with your prompt on the provided image, then visualizes the results.
You may need to experiment with a few prompts.
from autodistill_codet import CoDet
from autodistill.detection import CaptionOntology
from autodistill.utils import plot
import cv2
# define an ontology to map class names to our CoDet 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
# then, load the model
base_model = CoDet(
ontology=CaptionOntology(
{
"person": "person"
}
)
)
# run inference on an image and display the results
# class_names is a list of all classes supported by the model
# class_names can be used to turn the class_id values from the model into human-readable class names
# class names is defined in self.class_names
predictions = base_model.predict("./context_images/1.jpeg")
image = cv2.imread("./context_images/1.jpeg")
plot(
image=image,
detections=predictions,
classes=base_model.class_names
)
# run inference on a folder of images and save the results
base_model.label("./context_images", extension=".jpeg")
To start labeling your images with
, run the following lines of code:
base_model.label(input_folder="./images", output_folder="./dataset")
To train a
model using your newly-labeled dataset, run the following code:
After running this cell, you will have model weights that you can use to run inference on your new model.
You can deploy your trained model to Roboflow. By deploying your model to Roboflow, you can run inference on our infinitely-scalable API. As your inference demands grow, our you will continue to see high levels of performance thanks to autoscaling infrastructure that is always on.
Roboflow offers:
Fully managed, infinitely-scalable APIs for deployed models
SDKs for common deployment targets (NVIDIA Jetson, Luxonis OAK, Docker, and more)
SOC II Type 1 Compliant
Trusted by 250,000+ developers
To deploy your model to Roboflow, run the following code:
Through Roboflow, you can deploy your model to a range of targets. Below, we have listed devices to which you can deploy your model using Roboflow SDKs.
Base models are models you can use to automatically label data. Below are more base models you can use with Autodistill to label data.
Target models are models you can train with custom data. Below are more target models you can use with Autodistill.