Notizbücher | Inferenz | Autodistill | sammeln
Autodistill verwendet große, langsamere Fundamentmodelle, um kleine, schnellere überwachte Modelle zu trainieren. Mit autodistill können Sie von unbezeichneten Bildern zu einem benutzerdefinierten Modell, das am Rande ausgeführt wird, ohne menschliche Intervention dazwischen wechseln.
Tipp
Sie können Autodistill auf Ihrer eigenen Hardware oder die von Roboflow gehostete Version von Autodistill verwenden, um Bilder in der Cloud zu kennzeichnen.
Derzeit unterstützt autodistill Visionsaufgaben wie Objekterkennung und Instanzsegmentierung, kann jedoch in Zukunft erweitert werden, um Sprach- (und andere) Modelle zu unterstützen.
| Tutorial | Dokumente | Unterstützte Modelle | Beitragen |
|---|
Hier sind Vorhersagen eines Zielmodells, das Milchflaschen und Engpässe erfasst, nachdem sie mit automatisch markiertem Datensatz mit Autodistill trainiert wurden (siehe das Autodistill-YouTube-Video für eine vollständige Vorgehensweise):
Um autodistill zu verwenden, geben Sie unbezeichnete Daten in ein Basismodell ein, das eine Ontologie zum Kennzeichnen eines Datensatzes verwendet, mit dem ein Zielmodell trainiert wird, das ein destilliertes Modell ausgibt, das fein abgestimmt ist, um eine bestimmte Aufgabe auszuführen.
Autodistill definiert mehrere grundlegende Primitive:
autodistill -Pipeline muss damit übereinstimmen, dass sie miteinander kompatibel sind. Die Segmentierung der Objekterkennung und -instanz werden derzeit durch die detection unterstützt. Die Unterstützung classification wird bald hinzugefügt.CaptionOntology , die ein Basismodell mit Textunterschriften auffordert und sie auf Klassennamen ordnet. Andere Ontologien können beispielsweise einen Clip -Vektor- oder Beispielbilder anstelle einer Textunterschrift verwenden.autodistill Prozesses; Es handelt sich um eine Reihe von Gewichten, die für Ihre Aufgabe eingestellt sind, die bereitgestellt werden kann, um Vorhersagen zu erhalten. Die Kennzeichnung der Menschen ist eine der größten Hindernisse für die umfassende Einführung von Computer Vision. Es kann Tausende von Stunden dauern, bis ein Datensatz für das Training eines Produktionsmodells geeignet ist. Der Prozess der Destillation für Schulungsmodelle ist nicht neu. Tatsächlich ist die traditionelle menschliche Kennzeichnung nur eine andere Form der Destillation aus einem extrem fähigen Basismodell (dem menschlichen Gehirn?).
Foundation -Modelle wissen viel über viel über die Produktion, aber für die Produktion brauchen wir Modelle, die viel über ein wenig wissen.
Wenn die Foundation -Modelle immer besser werden, werden sie zunehmend in der Lage sein, Menschen im Kennzeichnungsprozess zu erweitern oder zu ersetzen. Wir brauchen Tools zum Lenken, Nutzen und Vergleich dieser Modelle. Darüber hinaus sind diese Grundmodelle groß, teuer und oft hinter privaten APIs geschleppt. Für viele Produktionsanwendungen benötigen wir Modelle, die billig und in Echtzeit am Rande laufen können.
Die Basismodelle von Autodistill können bereits Datensätze für viele häufige Anwendungsfälle erstellen (und durch kreative Aufforderung und wenige Schüsse können wir ihr Dienstprogramm auf viele weitere erweitern), aber sie sind noch nicht perfekt. Es gibt noch viel zu tun; Dies ist nur der Anfang und wir würden Ihre Hilfe lieben, um die Fähigkeiten des Systems zu testen und zu erweitern!
Autodistill ist modular. Sie müssen das autodistill -Paket (das die Schnittstellen für die oben genannten Konzepte definiert) zusammen mit Basismodell- und Zielmodell -Plugins (die bestimmte Modelle implementieren) installieren.
Durch die separate Verpackung als Plugins werden Abhängigkeiten und Lizenzierungsinkompatibilitäten minimiert und neue Modelle können von jedem implementiert und verwaltet werden.
Beispiel:
pip install autodistill autodistill-grounded-sam autodistill-yolov8Sie können das Projekt auch aus GitHub für die lokale Entwicklung klonen:
git clone https://github.com/roboflow/autodistill
cd autodistill
pip install -e .Zusätzliche Basis- und Zielmodelle sind unten aufgezählt.
Eine kurze Einführung in autodistill finden Sie im Demo -Notizbuch. Dieses Notizbuch führt durch den Bau eines Milchbehälter -Erkennungsmodells ohne Etikettierung.
Im Folgenden haben wir die wichtigsten Teile des Notizbuchs für eine kurze Einführung in autodistill kondensiert.
Sie können auch Autodistill in einem Befehl ausführen. Installieren Sie zunächst autodistill :
pip install autodistillDann rennen Sie:
autodistill images --base= " grounding_dino " --target= " yolov8 " --ontology ' {"prompt": "label"} ' --output= " ./dataset " In diesem Befehl werden alle Bilder in einem Verzeichnis namens images With Bodening Dino gekennzeichnet und verwenden die beschrifteten Bilder, um ein Yolov8 -Modell zu trainieren. Grounding Dino kennzeichnet alle Bilder mit der "Eingabeaufforderung" und speichert das Etikett als "Etikett". Sie können so viele Eingabeaufforderungen und Beschriftungen angeben, wie Sie möchten. Der resultierende Datensatz wird in einem Ordner namens dataset gespeichert.
In diesem Beispiel zeigen wir, wie man Grounded-Sam in ein kleines Yolov8-Modell unter Verwendung von autodistill-gegründetem SAM und autodistill-yolov8 in Destillation destilliert.
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/" ) Um die Anmerkungen für ein einzelnes Bild mit autodistill zu zeichnen, können Sie den folgenden Code verwenden. Dieser Code ist hilfreich, um die von Ihrem Basismodell (dh GroundedSAM) generierten Anmerkungen und die Ergebnisse Ihres Zielmodells (dh yolov8) zu visualisieren.
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 )) Unser Ziel ist es, dass autodistill die Verwendung aller Grundmodelle als Basismodelle und die meisten SOTA -überwachten Modelle als Zielmodelle unterstützt. Wir haben uns zunächst auf die Erkennung von Objekte und Segmentierungsaufgaben konzentriert, planen jedoch, die Klassifizierungsunterstützung bald zu starten! In Zukunft hoffen wir, dass autodistill auch für Modelle verwendet wird, die über Computer Vision hinausgehen.
| Basis / Ziel | Yolov8 | Yolo-nas | Yolov5 | Detr | Yolov6 | Yolov7 | Mt-Yolov6 |
|---|---|---|---|---|---|---|---|
| Geerdeter Sam 2 | ✅ | ✅ | ✅ | ✅ | ? | ||
| Datisch | ✅ | ✅ | ✅ | ✅ | ? | ||
| Geerdetes | ✅ | ✅ | ✅ | ✅ | ? | ||
| Grounddino | ✅ | ✅ | ✅ | ✅ | ? | ||
| Owl-vit | ✅ | ✅ | ✅ | ✅ | ? | ||
| Sam-Clip | ✅ | ✅ | ✅ | ✅ | ? | ||
| Llava-1.5 | ✅ | ✅ | ✅ | ✅ | ? | ||
| Kosmos-2 | ✅ | ✅ | ✅ | ✅ | ? | ||
| OWLV2 | ✅ | ✅ | ✅ | ✅ | ? | ||
| Modelle des Roboflow-Universums (50k+ vorgebildete Modelle) | ✅ | ✅ | ✅ | ✅ | ? | ||
| Codet | ✅ | ✅ | ✅ | ✅ | ? | ||
| Azure Custom Vision | ✅ | ✅ | ✅ | ✅ | ? | ||
| AWS Rekognition | ✅ | ✅ | ✅ | ✅ | ? | ||
| Google Vision | ✅ | ✅ | ✅ | ✅ | ? |
| Basis / Ziel | Yolov8 | Yolo-nas | Yolov5 | Yolov7 | Segformer |
|---|---|---|---|---|---|
| Geerdetes | ✅ | ? | ? | ||
| Sam-Clip | ✅ | ? | ? | ||
| Seggpt | ✅ | ? | ? | ||
| Fastsam | ? | ? | ? |
| Basis / Ziel | Vit | Yolov8 | Yolov5 |
|---|---|---|---|
| Clip | ✅ | ✅ | ? |
| Metaklip | ✅ | ✅ | ? |
| Dinov2 | ✅ | ✅ | ? |
| Blip | ✅ | ✅ | ? |
| ONBEF | ✅ | ✅ | ? |
| Fastvit | ✅ | ✅ | ? |
| Altclip | ✅ | ✅ | ? |
| Evaklip | ✅ | ✅ | ? |
| Zwillinge | ✅ | ✅ | ? |
| Fuyu | ? | ? | ? |
| Öffnen Sie Flamingo | ? | ? | ? |
| GPT-4 | |||
| Palm-2 |
Sie können optional einige Zielmodelle bereitstellen, die mit Autodistill auf Roboflow geschult sind. Durch die Bereitstellung von Roboflow können Sie eine Reihe präziser SDKs verwenden, um Ihr Modell am Rande von Roboflow.js für die Webbereitstellung bis hin zu NVIDIA Jetson -Geräten zu verwenden.
Die folgenden Autodistill -Zielmodelle werden von Roboflow zur Bereitstellung unterstützt:
| Modellname | Unterstützt? |
|---|---|
| Yolov8 -Objekterkennung | ✅ |
| Yolov8 -Instanzsegmentierung | ✅ |
| Yolov5 -Objekterkennung | ✅ |
| Yolov5 -Instanzsegmentierung | ✅ |
| Yolov8 -Klassifizierung |
Autodistill: Train Yolov8 mit null Anmerkungen
Neben neuen Modellen planen wir mehrere Bereiche, die wir mit autodistill erkunden möchten, einschließlich:
Wir lieben Ihre Eingabe! Bitte beachten Sie unseren beitragenden Leitfaden, um loszulegen. Vielen Dank an alle unsere Mitwirkenden!
Das autodistill -Paket ist unter einem Apache 2.0 lizenziert. Jedes Basis- oder Zielmodell -Plugin kann eine eigene Lizenz verwenden, die der Lizenz seines zugrunde liegenden Modells entspricht. Weitere Informationen finden Sie in der Lizenz in jedem Plugin -Repo.
PytorchStreamReader failed reading zip archive: failed finding central directory . Dieser Fehler wird verursacht, wenn Pytorch die Modellgewichte für ein Modell nicht laden kann. Gehen Sie in das Verzeichnis ~/.cache/autodistill und löschen Sie den Ordner, das dem Modell zugeordnet ist, das Sie laden möchten. Führen Sie dann Ihren Code noch einmal aus. Die Modellgewichte werden von Grund auf neu heruntergeladen. Lassen Sie den Installationsprozess ununterbrochen.
| Projekt | Beschreibung |
|---|---|
| Aufsicht | Allgemeine Dienstprogramme für die Verwendung in Computer Vision-Projekten, von der Filterung und Anzeige bis hin zur Objektverfolgung bis hin zur Modellbewertung. |
| Autodistill (dieses Projekt) | Beschriften Sie Bilder automatisch für die Verwendung in den Trainingscomputer -Vision -Modellen. |
| Schlussfolgerung | Ein benutzerfreundlicher, produktionsbereiteter Inferenzserver für Computer Vision unterstützt die Bereitstellung vieler beliebter Modellarchitekturen und fein abgestimmte Modelle. |
| Notizbücher | Tutorials für Computer-Vision-Aufgaben, vom Training auf dem neuesten Stand der Technik bis zum Verfolgen von Objekten bis hin zum Zählen von Objekten in einer Zone. |
| Sammeln | Automatisierte, intelligente Datenerfassung, die mit Clip betrieben wird. |